chore: cleanup/improve bootstrap (#14023)

* chore: cleanup/improve bootstrap

* chore: cleanup/improve bootstrap

* Create few-guests-visit.md
This commit is contained in:
Adrien de Peretti
2025-11-10 14:35:20 +01:00
committed by GitHub
parent 213c344804
commit 7e3eb6e413
6 changed files with 59 additions and 45 deletions

View File

@@ -1,4 +1,5 @@
import { Logger, MedusaContainer, ModuleResolution } from "@medusajs/types"
import { promiseAll } from "@medusajs/utils"
import { asValue } from "@medusajs/deps/awilix"
import { EOL } from "os"
import { MODULE_SCOPE } from "../types"
@@ -17,23 +18,22 @@ export const moduleLoader = async ({
migrationOnly?: boolean
loaderOnly?: boolean
}): Promise<void> => {
for (const resolution of Object.values(moduleResolutions ?? {})) {
const registrationResult = await loadModule(
container,
resolution,
logger!,
migrationOnly,
loaderOnly
const resolutions = Object.values(moduleResolutions ?? {})
const results = await promiseAll(
resolutions.map((resolution) =>
loadModule(container, resolution, logger!, migrationOnly, loaderOnly)
)
)
results.forEach((registrationResult, idx) => {
if (registrationResult?.error) {
const { error } = registrationResult
logger?.error(
`Could not resolve module: ${resolution.definition.label}. Error: ${error.message}${EOL}`
`Could not resolve module: ${resolutions[idx].definition.label}. Error: ${error.message}${EOL}`
)
throw error
}
}
})
}
async function loadModule(

View File

@@ -515,25 +515,29 @@ class MedusaModule {
return [{}]
}
for (const {
hashKey,
modDeclaration,
moduleResolutions,
container,
finishLoading,
} of loadedModules) {
const service = await MedusaModule.resolveLoadedModule({
const resolvedServices = await promiseAll(
loadedModules.map(async ({
hashKey,
modDeclaration,
moduleResolutions,
container,
})
finishLoading,
}) => {
const service = await MedusaModule.resolveLoadedModule({
hashKey,
modDeclaration,
moduleResolutions,
container,
})
MedusaModule.instances_.set(hashKey, service)
finishLoading(service)
MedusaModule.loading_.delete(hashKey)
services.push(service)
}
MedusaModule.instances_.set(hashKey, service)
finishLoading(service)
MedusaModule.loading_.delete(hashKey)
return service
})
)
services.push(...resolvedServices)
return services
}