1082815dcSEvan Baconimport assert from 'assert';
2082815dcSEvan Bacon
3082815dcSEvan Baconimport { withStaticPlugin } from './withStaticPlugin';
4*8a424bebSJames Ideimport { ConfigPlugin, StaticPlugin } from '../Plugin.types';
5082815dcSEvan Bacon
6082815dcSEvan Bacon/**
7082815dcSEvan Bacon * Resolves a list of plugins.
8082815dcSEvan Bacon *
9082815dcSEvan Bacon * @param config exported config
10082815dcSEvan Bacon * @param plugins list of config config plugins to apply to the exported config
11082815dcSEvan Bacon */
12082815dcSEvan Baconexport const withPlugins: ConfigPlugin<(StaticPlugin | ConfigPlugin | string)[]> = (
13082815dcSEvan Bacon  config,
14082815dcSEvan Bacon  plugins
15082815dcSEvan Bacon) => {
16082815dcSEvan Bacon  assert(
17082815dcSEvan Bacon    Array.isArray(plugins),
18082815dcSEvan Bacon    'withPlugins expected a valid array of plugins or plugin module paths'
19082815dcSEvan Bacon  );
20082815dcSEvan Bacon  return plugins.reduce((prev, plugin) => withStaticPlugin(prev, { plugin }), config);
21082815dcSEvan Bacon};
22