diff --git a/packages/core/src/config/index.ts b/packages/core/src/config/index.ts index 7eb46e8dd..3d4fc60ce 100644 --- a/packages/core/src/config/index.ts +++ b/packages/core/src/config/index.ts @@ -10,7 +10,7 @@ import { resolveAsyncPlugins, resolveConfigHook, resolveConfigResolvedHook, - resolveFarmPlugins + resolvePlugins } from '../plugin/index.js'; import { bindingPath, @@ -158,7 +158,7 @@ export async function resolveConfig( config: rawConfig }; - const { jsPlugins, rustPlugins } = await resolveFarmPlugins(userConfig); + const { jsPlugins, rustPlugins } = await resolvePlugins(userConfig); const rawJsPlugins = (await resolveAsyncPlugins(jsPlugins || [])).filter( Boolean diff --git a/packages/core/src/plugin/index.ts b/packages/core/src/plugin/index.ts index 6595bba17..db730de00 100644 --- a/packages/core/src/plugin/index.ts +++ b/packages/core/src/plugin/index.ts @@ -9,8 +9,27 @@ import merge from '../utils/merge.js'; export * from './js/index.js'; export * from './rust/index.js'; -export async function resolveFarmPlugins(config: UserConfig) { - const plugins = config.plugins ?? []; +export async function resolveAsyncPlugins(arr: T[]): Promise { + return arr.reduce>(async (acc, current) => { + const flattenedAcc = await acc; + + if (current instanceof Promise) { + const resolvedElement = await current; + return flattenedAcc.concat(resolvedElement); + } else if (Array.isArray(current)) { + const flattenedArray = await resolveAsyncPlugins(current); + return flattenedAcc.concat(flattenedArray); + } else { + return flattenedAcc.concat(current); + } + }, Promise.resolve([])); +} + +export async function resolvePlugins(config: UserConfig) { + let plugins = config.plugins ?? []; + + // First, resolve any promises and flatten the array + plugins = await resolveAsyncPlugins(plugins); if (!plugins.length) { return { @@ -20,7 +39,6 @@ export async function resolveFarmPlugins(config: UserConfig) { } const rustPlugins = []; - const jsPlugins: JsPlugin[] = []; for (const plugin of plugins) { @@ -56,23 +74,6 @@ export async function resolveFarmPlugins(config: UserConfig) { }; } -// resolve promise plugins -export async function resolveAsyncPlugins(arr: T[]): Promise { - return arr.reduce>(async (acc, current) => { - const flattenedAcc = await acc; - - if (current instanceof Promise) { - const resolvedElement = await current; - return flattenedAcc.concat(resolvedElement); - } else if (Array.isArray(current)) { - const flattenedArray = await resolveAsyncPlugins(current); - return flattenedAcc.concat(flattenedArray); - } else { - return flattenedAcc.concat(current); - } - }, Promise.resolve([])); -} - export async function resolveConfigHook( config: UserConfig, plugins: JsPlugin[]