Feat(modules-sdk): Run hooks on application start (#6111)

**What**
- run `onApplicationStart` hook when starting modules
This commit is contained in:
Philip Korsholm authored and GitHub committed 2024-01-17 10:46:44 +00:00
1 parent 571b64cd16
commit 2b9f98895e
3 files changed
+25

No files matched your search

+5
View File
@@ -0,0 +1,5 @@
---
"@medusajs/modules-sdk": patch
---
feat(modules-sdk): run hooks on application start
+4
View File
@@ -308,6 +308,7 @@ export async function MedusaApp(
})) }))
} }
try {
return { return {
modules: allModules, modules: allModules,
link: remoteLink, link: remoteLink,
@@ -316,4 +317,7 @@ export async function MedusaApp(
notFound, notFound,
runMigrations, runMigrations,
} }
} finally {
await MedusaModule.onApplicationStart()
}
} }
+16
View File
@@ -1,5 +1,6 @@
import { import {
ExternalModuleDeclaration, ExternalModuleDeclaration,
IModuleService,
InternalModuleDeclaration, InternalModuleDeclaration,
LinkModuleDefinition, LinkModuleDefinition,
LoadedModule, LoadedModule,
@@ -86,6 +87,21 @@ export class MedusaModule {
}) })
} }
public static onApplicationStart(): void {
for (const instances of MedusaModule.instances_.values()) {
for (const instance of Object.values(instances) as IModuleService[]) {
if (instance?.__hooks) {
instance.__hooks?.onApplicationStart
?.bind(instance)()
.catch(() => {
// The module should handle this and log it
return void 0
})
}
}
}
}
public static clearInstances(): void { public static clearInstances(): void {
MedusaModule.instances_.clear() MedusaModule.instances_.clear()
MedusaModule.modules_.clear() MedusaModule.modules_.clear()