1*082815dcSEvan Baconimport { ConfigPlugin, withPlugins } from '@expo/config-plugins'; 2*082815dcSEvan Bacon 3*082815dcSEvan Baconimport { serializeAfterStaticPlugins } from '../Serialize'; 4*082815dcSEvan Bacon 5*082815dcSEvan Bacon/** 6*082815dcSEvan Bacon * Resolves static plugins array as config plugin functions. 7*082815dcSEvan Bacon * 8*082815dcSEvan Bacon * @param config 9*082815dcSEvan Bacon * @param projectRoot 10*082815dcSEvan Bacon */ 11*082815dcSEvan Baconexport const withConfigPlugins: ConfigPlugin<boolean> = (config, skipPlugins) => { 12*082815dcSEvan Bacon // @ts-ignore: plugins not on config type yet -- TODO 13*082815dcSEvan Bacon if (!Array.isArray(config.plugins) || !config.plugins?.length) { 14*082815dcSEvan Bacon return config; 15*082815dcSEvan Bacon } 16*082815dcSEvan Bacon if (!skipPlugins) { 17*082815dcSEvan Bacon // Resolve and evaluate plugins 18*082815dcSEvan Bacon // @ts-ignore: TODO: add plugins to the config schema 19*082815dcSEvan Bacon config = withPlugins(config, config.plugins); 20*082815dcSEvan Bacon } else { 21*082815dcSEvan Bacon // Delete the plugins array in case someone added functions or other values which cannot be automatically serialized. 22*082815dcSEvan Bacon delete config.plugins; 23*082815dcSEvan Bacon } 24*082815dcSEvan Bacon // plugins aren't serialized by default, serialize the plugins after resolving them. 25*082815dcSEvan Bacon return serializeAfterStaticPlugins(config); 26*082815dcSEvan Bacon}; 27