1import assert from 'assert';
2
3import { ConfigPlugin, StaticPlugin } from '../Plugin.types';
4import { withStaticPlugin } from './withStaticPlugin';
5
6/**
7 * Resolves a list of plugins.
8 *
9 * @param config exported config
10 * @param plugins list of config config plugins to apply to the exported config
11 */
12export const withPlugins: ConfigPlugin<(StaticPlugin | ConfigPlugin | string)[]> = (
13  config,
14  plugins
15) => {
16  assert(
17    Array.isArray(plugins),
18    'withPlugins expected a valid array of plugins or plugin module paths'
19  );
20  return plugins.reduce((prev, plugin) => withStaticPlugin(prev, { plugin }), config);
21};
22