chore(medusa, modules-sdk, types): Refactor modules loading from medusa (#5018)

This commit is contained in:
Adrien de Peretti
2023-09-13 14:26:54 +02:00
committed by GitHub
parent 5362bfc348
commit 4fa675ec25
9 changed files with 159 additions and 57 deletions
@@ -16,6 +16,7 @@ describe("module definitions loader", () => {
registrationName: "testService",
defaultPackage: "@medusajs/test-service",
label: "TestService",
isLegacy: true,
isRequired: false,
canOverride: true,
defaultModuleDeclaration: {
@@ -11,18 +11,29 @@ import { isObject } from "@medusajs/utils"
import resolveCwd from "resolve-cwd"
import { MODULE_DEFINITIONS, ModulesDefinition } from "../definitions"
/**
*
* @param modules
* @param isolatedModules Will be removed once the isolated flag is being removed
*/
export const registerModules = (
modules?: Record<
string,
| false
| string
| Partial<InternalModuleDeclaration | ExternalModuleDeclaration>
>
>,
{ loadLegacyOnly } = { loadLegacyOnly: false }
): Record<string, ModuleResolution> => {
const moduleResolutions = {} as Record<string, ModuleResolution>
const projectModules = modules ?? {}
for (const definition of MODULE_DEFINITIONS) {
// Skip non legacy modules
if (loadLegacyOnly && !definition.isLegacy) {
continue
}
const customConfig = projectModules[definition.key]
const canSkip =
@@ -62,6 +73,12 @@ export const registerMedusaModule = (
throw new Error(`Module: ${moduleKey} is not defined.`)
}
if (modDefinition.isLegacy) {
throw new Error(
`Module: ${moduleKey} is a legacy module. Please use registerModules instead.`
)
}
if (
isObject(moduleDeclaration) &&
moduleDeclaration?.scope === MODULE_SCOPE.EXTERNAL