Skip to content

Commit

Permalink
chore: added check for package registration
Browse files Browse the repository at this point in the history
  • Loading branch information
riqwan committed Nov 10, 2023
1 parent c8cf88f commit ffedb99
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 6 deletions.
39 changes: 33 additions & 6 deletions packages/medusa/src/loaders/medusa-app.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,22 @@
import {
MODULE_PACKAGE_NAMES,
MedusaApp,
MedusaAppOutput,
MedusaModule,
Modules,
ModulesDefinition,
} from "@medusajs/modules-sdk"
import {
CommonTypes,
InternalModuleDeclaration,
MedusaContainer,
ModuleDefinition,
} from "@medusajs/types"
import {
MedusaApp,
MedusaAppOutput,
ModulesDefinition,
} from "@medusajs/modules-sdk"

import { ContainerRegistrationKeys, isObject } from "@medusajs/utils"
import { asValue } from "awilix"
import { joinerConfig } from "../joiner-config"
import { remoteQueryFetchData } from ".."
import { joinerConfig } from "../joiner-config"

export function mergeDefaultModules(
modulesConfig: CommonTypes.ConfigModule["modules"]
Expand Down Expand Up @@ -94,6 +97,30 @@ export const loadMedusaApp = async (
injectedDependencies,
})

const requiredPackages = [
MODULE_PACKAGE_NAMES[Modules.PRODUCT],
MODULE_PACKAGE_NAMES[Modules.PRICING],
]

const missingPackages: string[] = []

for (const requiredPackage of requiredPackages) {
const isPackageRegistered =
MedusaModule.isPackageRegistered(requiredPackage)

if (!isPackageRegistered) {
missingPackages.push(requiredPackage)
}
}

if (missingPackages.length) {
throw new Error(
`FeatureFlag medusa_v2 (MEDUSA_FF_MEDUSA_V2) requires the following packages: (${missingPackages.join(
", "
)})`
)
}

if (!config.registerInContainer) {
return medusaApp
}
Expand Down
15 changes: 15 additions & 0 deletions packages/modules-sdk/src/medusa-module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,21 @@ export class MedusaModule {
return [...MedusaModule.moduleResolutions_.values()]
}

public static isPackageRegistered(packageName: string): boolean {
return !![...MedusaModule.moduleResolutions_.values()].find(
(moduleResolution) => {
if (
moduleResolution?.moduleDeclaration &&
"resolve" in moduleResolution.moduleDeclaration
) {
return moduleResolution.moduleDeclaration.resolve === packageName
}

return false
}
)
}

public static setModuleResolution(
moduleKey: string,
resolution: ModuleResolution
Expand Down

0 comments on commit ffedb99

Please sign in to comment.