diff --git a/packages/framework/framework/src/jobs/job-loader.ts b/packages/framework/framework/src/jobs/job-loader.ts index 531c0bc59b..82127a13a1 100644 --- a/packages/framework/framework/src/jobs/job-loader.ts +++ b/packages/framework/framework/src/jobs/job-loader.ts @@ -129,6 +129,7 @@ export class JobLoader { try { await access(sourcePath) } catch { + logger.info(`No job to load from ${sourcePath}. skipped.`) return } diff --git a/packages/framework/framework/src/links/link-loader.ts b/packages/framework/framework/src/links/link-loader.ts index 9ffa08633e..0de771cf6e 100644 --- a/packages/framework/framework/src/links/link-loader.ts +++ b/packages/framework/framework/src/links/link-loader.ts @@ -39,6 +39,7 @@ export class LinkLoader { try { await access(sourcePath) } catch { + logger.info(`No link to load from ${sourcePath}. skipped.`) return } diff --git a/packages/framework/framework/src/subscribers/subscriber-loader.ts b/packages/framework/framework/src/subscribers/subscriber-loader.ts index 322b0e8ba4..e88f1c6f9e 100644 --- a/packages/framework/framework/src/subscribers/subscriber-loader.ts +++ b/packages/framework/framework/src/subscribers/subscriber-loader.ts @@ -26,7 +26,7 @@ export class SubscriberLoader { * The base directory from which to scan for the subscribers * @private */ - #sourceDir: string + #sourceDir: string | string[] /** * The list of file names to exclude from the subscriber scan @@ -46,7 +46,10 @@ export class SubscriberLoader { */ #subscriberDescriptors: Map> = new Map() - constructor(sourceDir: string, options: Record = {}) { + constructor( + sourceDir: string | string[], + options: Record = {} + ) { this.#sourceDir = sourceDir this.#pluginOptions = options } @@ -213,20 +216,21 @@ export class SubscriberLoader { } async load() { - let hasSubscriberDir = false + const normalizeSourcePaths = Array.isArray(this.#sourceDir) + ? this.#sourceDir + : [this.#sourceDir] + const promises = normalizeSourcePaths.map(async (sourcePath) => { + try { + await access(sourcePath) + } catch { + logger.info(`No subscribers to load from ${sourcePath}. skipped.`) + return + } - try { - await access(this.#sourceDir) - hasSubscriberDir = true - } catch (err) { - logger.debug(`No subscriber directory found in ${this.#sourceDir}`) - } + return await this.createMap(sourcePath) + }) - if (!hasSubscriberDir) { - return - } - - await this.createMap(this.#sourceDir) + await promiseAll(promises) for (const [ fileName, diff --git a/packages/framework/framework/src/workflows/workflow-loader.ts b/packages/framework/framework/src/workflows/workflow-loader.ts index cafb971175..c4f3c8177e 100644 --- a/packages/framework/framework/src/workflows/workflow-loader.ts +++ b/packages/framework/framework/src/workflows/workflow-loader.ts @@ -39,6 +39,7 @@ export class WorkflowLoader { try { await access(sourcePath) } catch { + logger.info(`No workflow to load from ${sourcePath}. skipped.`) return } diff --git a/packages/medusa/src/loaders/index.ts b/packages/medusa/src/loaders/index.ts index 2ac0a2cb38..00bd380191 100644 --- a/packages/medusa/src/loaders/index.ts +++ b/packages/medusa/src/loaders/index.ts @@ -40,23 +40,15 @@ const shouldLoadBackgroundProcessors = (configModule) => { } async function subscribersLoader(plugins: PluginDetails[]) { - /** - * Load subscribers from the medusa/medusa package - */ - await new SubscriberLoader(join(__dirname, "../subscribers")).load() + const pluginSubscribersSourcePaths = [ + /** + * Load subscribers from the medusa/medusa package. Remove once the medusa core is converted to a plugin + */ + join(__dirname, "../subscribers"), + ].concat(plugins.map((plugin) => join(plugin.resolve, "subscribers"))) - // TODO: make it the same as the other loaders, taking an array of paths to load from - /** - * Load subscribers from all the plugins. - */ - await Promise.all( - plugins.map(async (pluginDetails) => { - await new SubscriberLoader( - join(pluginDetails.resolve, "subscribers"), - pluginDetails.options - ).load() - }) - ) + const subscriberLoader = new SubscriberLoader(pluginSubscribersSourcePaths) + await subscriberLoader.load() } async function jobsLoader(plugins: PluginDetails[]) {