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

**What**
- run `onApplicationStart` hook when starting modules
This commit is contained in:
Philip Korsholm
2024-01-17 11:46:44 +01:00
committed by GitHub
parent 571b64cd16
commit 2b9f98895e
3 changed files with 32 additions and 7 deletions

View File

@@ -0,0 +1,5 @@
---
"@medusajs/modules-sdk": patch
---
feat(modules-sdk): run hooks on application start

View File

@@ -308,12 +308,16 @@ export async function MedusaApp(
}))
}
return {
modules: allModules,
link: remoteLink,
query,
entitiesMap: schema.getTypeMap(),
notFound,
runMigrations,
try {
return {
modules: allModules,
link: remoteLink,
query,
entitiesMap: schema.getTypeMap(),
notFound,
runMigrations,
}
} finally {
await MedusaModule.onApplicationStart()
}
}

View File

@@ -1,5 +1,6 @@
import {
ExternalModuleDeclaration,
IModuleService,
InternalModuleDeclaration,
LinkModuleDefinition,
LoadedModule,
@@ -85,6 +86,21 @@ export class MedusaModule {
return MedusaModule.getModuleInstance(key)
})
}
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 {
MedusaModule.instances_.clear()