Skip to content

Commit 7e3eb6e

Browse files
authored
chore: cleanup/improve bootstrap (#14023)
* chore: cleanup/improve bootstrap * chore: cleanup/improve bootstrap * Create few-guests-visit.md
1 parent 213c344 commit 7e3eb6e

File tree

6 files changed

+58
-44
lines changed

6 files changed

+58
-44
lines changed

.changeset/few-guests-visit.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"@medusajs/medusa": patch
3+
"@medusajs/framework": patch
4+
"@medusajs/modules-sdk": patch
5+
---
6+
7+
chore: cleanup/improve bootstrap

packages/core/framework/src/http/router.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ContainerRegistrationKeys, parseCorsOrigins } from "@medusajs/utils"
1+
import { ContainerRegistrationKeys, parseCorsOrigins, promiseAll } from "@medusajs/utils"
22
import cors, { CorsOptions } from "cors"
33
import type { ErrorRequestHandler, Express, RequestHandler } from "express"
44
import type {
@@ -85,10 +85,12 @@ export class ApiLoader {
8585
const routesLoader = new RoutesLoader()
8686
const middlewareLoader = new MiddlewareFileLoader()
8787

88-
for (let dir of this.#sourceDirs) {
89-
await routesLoader.scanDir(dir)
90-
await middlewareLoader.scanDir(dir)
91-
}
88+
await promiseAll(
89+
this.#sourceDirs.flatMap(dir => [
90+
routesLoader.scanDir(dir),
91+
middlewareLoader.scanDir(dir)
92+
])
93+
)
9294

9395
return {
9496
routes: routesLoader.getRoutes(),

packages/core/modules-sdk/src/loaders/module-loader.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { Logger, MedusaContainer, ModuleResolution } from "@medusajs/types"
2+
import { promiseAll } from "@medusajs/utils"
23
import { asValue } from "@medusajs/deps/awilix"
34
import { EOL } from "os"
45
import { MODULE_SCOPE } from "../types"
@@ -17,23 +18,22 @@ export const moduleLoader = async ({
1718
migrationOnly?: boolean
1819
loaderOnly?: boolean
1920
}): Promise<void> => {
20-
for (const resolution of Object.values(moduleResolutions ?? {})) {
21-
const registrationResult = await loadModule(
22-
container,
23-
resolution,
24-
logger!,
25-
migrationOnly,
26-
loaderOnly
21+
const resolutions = Object.values(moduleResolutions ?? {})
22+
const results = await promiseAll(
23+
resolutions.map((resolution) =>
24+
loadModule(container, resolution, logger!, migrationOnly, loaderOnly)
2725
)
26+
)
2827

28+
results.forEach((registrationResult, idx) => {
2929
if (registrationResult?.error) {
3030
const { error } = registrationResult
3131
logger?.error(
32-
`Could not resolve module: ${resolution.definition.label}. Error: ${error.message}${EOL}`
32+
`Could not resolve module: ${resolutions[idx].definition.label}. Error: ${error.message}${EOL}`
3333
)
3434
throw error
3535
}
36-
}
36+
})
3737
}
3838

3939
async function loadModule(

packages/core/modules-sdk/src/medusa-module.ts

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -515,25 +515,29 @@ class MedusaModule {
515515
return [{}]
516516
}
517517

518-
for (const {
519-
hashKey,
520-
modDeclaration,
521-
moduleResolutions,
522-
container,
523-
finishLoading,
524-
} of loadedModules) {
525-
const service = await MedusaModule.resolveLoadedModule({
518+
const resolvedServices = await promiseAll(
519+
loadedModules.map(async ({
526520
hashKey,
527521
modDeclaration,
528522
moduleResolutions,
529523
container,
524+
finishLoading,
525+
}) => {
526+
const service = await MedusaModule.resolveLoadedModule({
527+
hashKey,
528+
modDeclaration,
529+
moduleResolutions,
530+
container,
531+
})
532+
533+
MedusaModule.instances_.set(hashKey, service)
534+
finishLoading(service)
535+
MedusaModule.loading_.delete(hashKey)
536+
return service
530537
})
538+
)
531539

532-
MedusaModule.instances_.set(hashKey, service)
533-
finishLoading(service)
534-
MedusaModule.loading_.delete(hashKey)
535-
services.push(service)
536-
}
540+
services.push(...resolvedServices)
537541

538542
return services
539543
}

packages/medusa/src/commands/start.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,8 @@ async function start(args: {
200200
skipDbConnection: true,
201201
})
202202
const logger = container.resolve(ContainerRegistrationKeys.LOGGER)
203+
const serverActivity = logger.activity(`Creating server`)
204+
203205
await registerInstrumentation(directory)
204206

205207
const app = express()
@@ -259,8 +261,6 @@ async function start(args: {
259261
}
260262
}
261263

262-
const serverActivity = logger.activity(`Creating server`)
263-
264264
// Register a health check endpoint. Ideally this also checks the readiness of the service, rather than just returning a static response.
265265
app.get("/health", (_, res) => {
266266
res.status(200).send("OK")

packages/medusa/src/loaders/index.ts

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,10 @@ async function loadEntrypoints(
9292
)
9393

9494
if (shouldLoadBackgroundProcessors(configModule)) {
95-
await subscribersLoader(plugins, container)
96-
await jobsLoader(plugins, container)
95+
await promiseAll([
96+
subscribersLoader(plugins, container),
97+
jobsLoader(plugins, container),
98+
])
9799
}
98100

99101
if (isWorkerMode(configModule)) {
@@ -119,17 +121,18 @@ async function loadEntrypoints(
119121
next()
120122
})
121123

122-
const { shutdown } = await expressLoader({
123-
app: expressApp,
124-
container,
125-
})
126-
127-
await adminLoader({ app: expressApp, configModule, rootDirectory, plugins })
128-
await apiLoader({
129-
container,
130-
plugins,
131-
app: expressApp,
132-
})
124+
const [{ shutdown }] = await promiseAll([
125+
expressLoader({
126+
app: expressApp,
127+
container,
128+
}),
129+
adminLoader({ app: expressApp, configModule, rootDirectory, plugins }),
130+
apiLoader({
131+
container,
132+
plugins,
133+
app: expressApp,
134+
}),
135+
])
133136

134137
return shutdown
135138
}
@@ -140,10 +143,8 @@ export async function initializeContainer(
140143
skipDbConnection?: boolean
141144
}
142145
): Promise<MedusaContainer> {
143-
// custom flags from medusa project
144146
await featureFlagsLoader(rootDirectory)
145147
const configDir = await configLoader(rootDirectory, "medusa-config")
146-
// core flags
147148
await featureFlagsLoader(join(__dirname, ".."))
148149

149150
const customLogger = configDir.logger ?? defaultLogger

0 commit comments

Comments
 (0)