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