diff --git a/.changeset/fuzzy-tips-clap.md b/.changeset/fuzzy-tips-clap.md new file mode 100644 index 0000000000..5dd00f4c08 --- /dev/null +++ b/.changeset/fuzzy-tips-clap.md @@ -0,0 +1,10 @@ +--- +"@medusajs/modules-sdk": patch +"@medusajs/types": patch +"@medusajs/pricing": patch +"@medusajs/product": patch +"@medusajs/inventory": patch +"@medusajs/stock-location": patch +--- + +Medusa App loading modules reference diff --git a/integration-tests/plugins/__tests__/product/admin/index.ts b/integration-tests/plugins/__tests__/product/admin/index.ts index 8d514214e7..3449f83f8a 100644 --- a/integration-tests/plugins/__tests__/product/admin/index.ts +++ b/integration-tests/plugins/__tests__/product/admin/index.ts @@ -16,7 +16,7 @@ import { } from "../../../../factories" import { createDefaultRuleTypes } from "../../../helpers/create-default-rule-types" -jest.setTimeout(5000000) +jest.setTimeout(50000) const adminHeaders = { headers: { diff --git a/packages/authentication/src/index.ts b/packages/authentication/src/index.ts index 46e1b29938..98c26a5e9e 100644 --- a/packages/authentication/src/index.ts +++ b/packages/authentication/src/index.ts @@ -1,22 +1,11 @@ -import { moduleDefinition } from "./module-definition" -import { Modules } from "@medusajs/modules-sdk" -import * as Models from "@models" -import { ModulesSdkUtils } from "@medusajs/utils" +import { + moduleDefinition, + revertMigration, + runMigrations, +} from "./module-definition" export default moduleDefinition - -const migrationScriptOptions = { - moduleName: Modules.AUTHENTICATION, - models: Models, - pathToMigrations: __dirname + "/migrations", -} - -export const runMigrations = ModulesSdkUtils.buildMigrationScript( - migrationScriptOptions -) -export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript( - migrationScriptOptions -) +export { revertMigration, runMigrations } export * from "./initialize" export * from "./loaders" diff --git a/packages/authentication/src/module-definition.ts b/packages/authentication/src/module-definition.ts index 89b9e240a6..215e19c13a 100644 --- a/packages/authentication/src/module-definition.ts +++ b/packages/authentication/src/module-definition.ts @@ -1,13 +1,31 @@ +import { Modules } from "@medusajs/modules-sdk" import { ModuleExports } from "@medusajs/types" +import { ModulesSdkUtils } from "@medusajs/utils" +import * as Models from "@models" import { AuthenticationModuleService } from "@services" import loadConnection from "./loaders/connection" import loadContainer from "./loaders/container" import loadProviders from "./loaders/providers" +const migrationScriptOptions = { + moduleName: Modules.AUTHENTICATION, + models: Models, + pathToMigrations: __dirname + "/migrations", +} + +export const runMigrations = ModulesSdkUtils.buildMigrationScript( + migrationScriptOptions +) +export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript( + migrationScriptOptions +) + const service = AuthenticationModuleService const loaders = [loadContainer, loadConnection, loadProviders] as any export const moduleDefinition: ModuleExports = { service, loaders, + runMigrations, + revertMigration, } diff --git a/packages/cart/src/index.ts b/packages/cart/src/index.ts index 13081ed684..d449f73544 100644 --- a/packages/cart/src/index.ts +++ b/packages/cart/src/index.ts @@ -1,23 +1,10 @@ -import { Modules } from "@medusajs/modules-sdk" -import { ModulesSdkUtils } from "@medusajs/utils" -import * as Models from "@models" -import { moduleDefinition } from "./module-definition" +import { + moduleDefinition, + revertMigration, + runMigrations, +} from "./module-definition" export default moduleDefinition - -const migrationScriptOptions = { - moduleName: Modules.CART, - models: Models, - pathToMigrations: __dirname + "/migrations", -} - -export const runMigrations = ModulesSdkUtils.buildMigrationScript( - migrationScriptOptions -) -export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript( - migrationScriptOptions -) +export { revertMigration, runMigrations } export * from "./initialize" -export * from "./loaders" - diff --git a/packages/cart/src/module-definition.ts b/packages/cart/src/module-definition.ts index 133814940b..1db51b9c5c 100644 --- a/packages/cart/src/module-definition.ts +++ b/packages/cart/src/module-definition.ts @@ -1,12 +1,30 @@ +import { Modules } from "@medusajs/modules-sdk" import { ModuleExports } from "@medusajs/types" +import { ModulesSdkUtils } from "@medusajs/utils" +import * as Models from "@models" import loadConnection from "./loaders/connection" import loadContainer from "./loaders/container" import { CartModuleService } from "./services" +const migrationScriptOptions = { + moduleName: Modules.CART, + models: Models, + pathToMigrations: __dirname + "/migrations", +} + +export const runMigrations = ModulesSdkUtils.buildMigrationScript( + migrationScriptOptions +) +export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript( + migrationScriptOptions +) + const service = CartModuleService const loaders = [loadContainer, loadConnection] as any export const moduleDefinition: ModuleExports = { service, loaders, + runMigrations, + revertMigration, } diff --git a/packages/customer/src/index.ts b/packages/customer/src/index.ts index c84e04625b..d449f73544 100644 --- a/packages/customer/src/index.ts +++ b/packages/customer/src/index.ts @@ -1,24 +1,10 @@ -import { Modules } from "@medusajs/modules-sdk" -import { ModulesSdkUtils } from "@medusajs/utils" -import * as Models from "@models" - -import { moduleDefinition } from "./module-definition" +import { + moduleDefinition, + revertMigration, + runMigrations, +} from "./module-definition" export default moduleDefinition - -const migrationScriptOptions = { - moduleName: Modules.CUSTOMER, - models: Models, - pathToMigrations: __dirname + "/migrations", -} - -export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript( - migrationScriptOptions -) - -export const runMigration = ModulesSdkUtils.buildMigrationScript( - migrationScriptOptions -) +export { revertMigration, runMigrations } export * from "./initialize" -export * from "./loaders" diff --git a/packages/customer/src/module-definition.ts b/packages/customer/src/module-definition.ts index d3e28a4c78..81e86620be 100644 --- a/packages/customer/src/module-definition.ts +++ b/packages/customer/src/module-definition.ts @@ -1,12 +1,31 @@ +import { Modules } from "@medusajs/modules-sdk" import { ModuleExports } from "@medusajs/types" +import { ModulesSdkUtils } from "@medusajs/utils" +import * as Models from "@models" import { CustomerModuleService } from "@services" import loadConnection from "./loaders/connection" import loadContainer from "./loaders/container" +const migrationScriptOptions = { + moduleName: Modules.CUSTOMER, + models: Models, + pathToMigrations: __dirname + "/migrations", +} + +export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript( + migrationScriptOptions +) + +export const runMigrations = ModulesSdkUtils.buildMigrationScript( + migrationScriptOptions +) + const service = CustomerModuleService const loaders = [loadContainer, loadConnection] as any export const moduleDefinition: ModuleExports = { service, loaders, + runMigrations, + revertMigration, } diff --git a/packages/inventory/src/index.ts b/packages/inventory/src/index.ts index d3159f3c9a..1cb6f68e0b 100644 --- a/packages/inventory/src/index.ts +++ b/packages/inventory/src/index.ts @@ -1,8 +1,6 @@ -import { revertMigration, runMigrations } from "./migrations/run-migration" import { moduleDefinition } from "./module-definition" export default moduleDefinition export * from "./initialize" export { revertMigration, runMigrations } from "./migrations/run-migration" -export * from "./types" diff --git a/packages/medusa/src/loaders/index.ts b/packages/medusa/src/loaders/index.ts index 308879a10a..7eef903059 100644 --- a/packages/medusa/src/loaders/index.ts +++ b/packages/medusa/src/loaders/index.ts @@ -51,7 +51,7 @@ async function loadLegacyModulesEntities(configModules, container) { continue } - let modulePath = isString(moduleConfig) + const modulePath = isString(moduleConfig) ? moduleConfig : (moduleConfig as InternalModuleDeclaration).resolve ?? (definition.defaultPackage as string) @@ -69,7 +69,7 @@ async function loadLegacyModulesEntities(configModules, container) { continue } - const module = await import(modulePath) + const module = await import(modulePath as string) if (module.default?.models) { module.default.models.map((model) => diff --git a/packages/modules-sdk/src/definitions.ts b/packages/modules-sdk/src/definitions.ts index 503ad6163f..59e4c71fed 100644 --- a/packages/modules-sdk/src/definitions.ts +++ b/packages/modules-sdk/src/definitions.ts @@ -7,6 +7,7 @@ import { import { upperCaseFirst } from "@medusajs/utils" export enum Modules { + LINK = "linkModules", EVENT_BUS = "eventBus", STOCK_LOCATION = "stockLocationService", INVENTORY = "inventoryService", @@ -35,6 +36,7 @@ export enum ModuleRegistrationName { } export const MODULE_PACKAGE_NAMES = { + [Modules.LINK]: "@medusajs/link-modules", [Modules.PRODUCT]: "@medusajs/product", [Modules.EVENT_BUS]: "@medusajs/event-bus-local", [Modules.STOCK_LOCATION]: "@medusajs/stock-location", diff --git a/packages/modules-sdk/src/loaders/utils/load-internal.ts b/packages/modules-sdk/src/loaders/utils/load-internal.ts index 57f695cd78..08a2074743 100644 --- a/packages/modules-sdk/src/loaders/utils/load-internal.ts +++ b/packages/modules-sdk/src/loaders/utils/load-internal.ts @@ -121,11 +121,13 @@ export async function loadInternalModule( } export async function loadModuleMigrations( - resolution: ModuleResolution + resolution: ModuleResolution, + moduleExports?: ModuleExports ): Promise<[Function | undefined, Function | undefined]> { let loadedModule: ModuleExports try { - loadedModule = await import(resolution.resolutionPath as string) + loadedModule = + moduleExports ?? (await import(resolution.resolutionPath as string)) return [loadedModule.runMigrations, loadedModule.revertMigration] } catch { diff --git a/packages/modules-sdk/src/medusa-app.ts b/packages/modules-sdk/src/medusa-app.ts index 062a38a5ed..4359cd5b53 100644 --- a/packages/modules-sdk/src/medusa-app.ts +++ b/packages/modules-sdk/src/medusa-app.ts @@ -1,12 +1,15 @@ +import { mergeTypeDefs } from "@graphql-tools/merge" +import { makeExecutableSchema } from "@graphql-tools/schema" +import { RemoteFetchDataCallback } from "@medusajs/orchestration" import { ExternalModuleDeclaration, InternalModuleDeclaration, LoadedModule, - LoaderOptions, MedusaContainer, MODULE_RESOURCE_TYPE, MODULE_SCOPE, ModuleDefinition, + ModuleExports, ModuleJoinerConfig, ModuleServiceInitializeOptions, RemoteJoinerQuery, @@ -15,23 +18,21 @@ import { ContainerRegistrationKeys, createMedusaContainer, isObject, + isString, ModulesSdkUtils, } from "@medusajs/utils" +import { asValue } from "awilix" import { MODULE_PACKAGE_NAMES, ModuleRegistrationName, Modules, } from "./definitions" import { MedusaModule } from "./medusa-module" -import { RemoteFetchDataCallback } from "@medusajs/orchestration" import { RemoteLink } from "./remote-link" import { RemoteQuery } from "./remote-query" import { cleanGraphQLSchema } from "./utils" -import { asValue } from "awilix" -import { makeExecutableSchema } from "@graphql-tools/schema" -import { mergeTypeDefs } from "@graphql-tools/merge" -const LinkModulePackage = "@medusajs/link-modules" +const LinkModulePackage = MODULE_PACKAGE_NAMES[Modules.LINK] export type RunMigrationFn = ( options?: ModuleServiceInitializeOptions, @@ -71,6 +72,7 @@ async function loadModules(modulesConfig, sharedContainer) { Object.keys(modulesConfig).map(async (moduleName) => { const mod = modulesConfig[moduleName] let path: string + let moduleExports: ModuleExports | undefined = undefined let declaration: any = {} let definition: ModuleDefinition | undefined = undefined @@ -78,6 +80,9 @@ async function loadModules(modulesConfig, sharedContainer) { const mod_ = mod as unknown as InternalModuleDeclaration path = mod_.resolve ?? MODULE_PACKAGE_NAMES[moduleName] definition = mod_.definition + moduleExports = !isString(mod_.resolve) + ? (mod_.resolve as ModuleExports) + : undefined declaration = { ...mod } delete declaration.definition } else { @@ -98,6 +103,7 @@ async function loadModules(modulesConfig, sharedContainer) { declaration, sharedContainer, moduleDefinition: definition, + moduleExports, })) as LoadedModule const service = loaded[moduleName] @@ -119,9 +125,16 @@ async function loadModules(modulesConfig, sharedContainer) { return allModules } -async function initializeLinks(config, linkModules, injectedDependencies) { +async function initializeLinks({ + config, + linkModules, + injectedDependencies, + moduleExports, +}) { try { - const { initialize, runMigrations } = await import(LinkModulePackage) + const { initialize, runMigrations } = + moduleExports ?? (await import(LinkModulePackage)) + const linkResolution = await initialize( config, linkModules, @@ -140,6 +153,10 @@ async function initializeLinks(config, linkModules, injectedDependencies) { } } +function isMedusaModule(mod) { + return typeof mod?.initialize === "function" +} + function cleanAndMergeSchema(loadedSchema) { const { schema: cleanedSchema, notFound } = cleanGraphQLSchema(loadedSchema) const mergedSchema = mergeTypeDefs(cleanedSchema) @@ -174,32 +191,28 @@ export type MedusaAppOutput = { runMigrations: RunMigrationFn } -export async function MedusaApp( - { - sharedContainer, - sharedResourcesConfig, - servicesConfig, - modulesConfigPath, - modulesConfigFileName, - modulesConfig, - linkModules, - remoteFetchData, - injectedDependencies, - }: { - sharedContainer?: MedusaContainer - sharedResourcesConfig?: SharedResources - loadedModules?: LoadedModule[] - servicesConfig?: ModuleJoinerConfig[] - modulesConfigPath?: string - modulesConfigFileName?: string - modulesConfig?: MedusaModuleConfig - linkModules?: ModuleJoinerConfig | ModuleJoinerConfig[] - remoteFetchData?: RemoteFetchDataCallback - injectedDependencies?: any - } = { - injectedDependencies: {}, - } -): Promise<{ +export async function MedusaApp({ + sharedContainer, + sharedResourcesConfig, + servicesConfig, + modulesConfigPath, + modulesConfigFileName, + modulesConfig, + linkModules, + remoteFetchData, + injectedDependencies, +}: { + sharedContainer?: MedusaContainer + sharedResourcesConfig?: SharedResources + loadedModules?: LoadedModule[] + servicesConfig?: ModuleJoinerConfig[] + modulesConfigPath?: string + modulesConfigFileName?: string + modulesConfig?: MedusaModuleConfig + linkModules?: ModuleJoinerConfig | ModuleJoinerConfig[] + remoteFetchData?: RemoteFetchDataCallback + injectedDependencies?: any +} = {}): Promise<{ modules: Record link: RemoteLink | undefined query: ( @@ -210,6 +223,8 @@ export async function MedusaApp( notFound?: Record> runMigrations: RunMigrationFn }> { + injectedDependencies ??= {} + const sharedContainer_ = createMedusaContainer({}, sharedContainer) const modules: MedusaModuleConfig = @@ -241,8 +256,10 @@ export async function MedusaApp( } // remove the link module from the modules - const linkModule = modules[LinkModulePackage] + const linkModule = modules[LinkModulePackage] ?? modules[Modules.LINK] delete modules[LinkModulePackage] + delete modules[Modules.LINK] + let linkModuleOptions = {} if (isObject(linkModule)) { @@ -267,11 +284,12 @@ export async function MedusaApp( remoteLink, linkResolution, runMigrations: linkModuleMigration, - } = await initializeLinks( - linkModuleOptions, + } = await initializeLinks({ + config: linkModuleOptions, linkModules, - injectedDependencies - ) + injectedDependencies, + moduleExports: isMedusaModule(linkModule) ? linkModule : undefined, + }) const loadedSchema = getLoadedSchema() const { schema, notFound } = cleanAndMergeSchema(loadedSchema) @@ -294,16 +312,29 @@ export async function MedusaApp( for (const moduleName of Object.keys(allModules)) { const moduleResolution = MedusaModule.getModuleResolutions(moduleName) + if (!moduleResolution.options?.database) { + moduleResolution.options ??= {} + moduleResolution.options.database = { + ...(sharedResourcesConfig?.database ?? {}), + } + } + await MedusaModule.migrateUp( moduleResolution.definition.key, moduleResolution.resolutionPath as string, - moduleResolution.options + moduleResolution.options, + moduleResolution.moduleExports ) } + const linkModuleOpt = { ...linkModuleOptions } + linkModuleOpt.database ??= { + ...(sharedResourcesConfig?.database ?? {}), + } + linkModuleMigration && (await linkModuleMigration({ - options: linkModuleOptions, + options: linkModuleOpt, injectedDependencies, })) } diff --git a/packages/modules-sdk/src/medusa-module.ts b/packages/modules-sdk/src/medusa-module.ts index 6144d93ff8..fe1eb240bd 100644 --- a/packages/modules-sdk/src/medusa-module.ts +++ b/packages/modules-sdk/src/medusa-module.ts @@ -438,7 +438,8 @@ export class MedusaModule { public static async migrateUp( moduleKey: string, modulePath: string, - options?: Record + options?: Record, + moduleExports?: ModuleExports ): Promise { const moduleResolutions = registerMedusaModule(moduleKey, { scope: MODULE_SCOPE.INTERNAL, @@ -448,7 +449,10 @@ export class MedusaModule { }) for (const mod in moduleResolutions) { - const [migrateUp] = await loadModuleMigrations(moduleResolutions[mod]) + const [migrateUp] = await loadModuleMigrations( + moduleResolutions[mod], + moduleExports + ) if (typeof migrateUp === "function") { await migrateUp({ @@ -462,7 +466,8 @@ export class MedusaModule { public static async migrateDown( moduleKey: string, modulePath: string, - options?: Record + options?: Record, + moduleExports?: ModuleExports ): Promise { const moduleResolutions = registerMedusaModule(moduleKey, { scope: MODULE_SCOPE.INTERNAL, @@ -472,7 +477,10 @@ export class MedusaModule { }) for (const mod in moduleResolutions) { - const [, migrateDown] = await loadModuleMigrations(moduleResolutions[mod]) + const [, migrateDown] = await loadModuleMigrations( + moduleResolutions[mod], + moduleExports + ) if (typeof migrateDown === "function") { await migrateDown({ diff --git a/packages/payment/src/index.ts b/packages/payment/src/index.ts index 5ec1f1b289..d449f73544 100644 --- a/packages/payment/src/index.ts +++ b/packages/payment/src/index.ts @@ -1,23 +1,10 @@ -import { moduleDefinition } from "./module-definition" -import { Modules } from "@medusajs/modules-sdk" -import { ModulesSdkUtils } from "@medusajs/utils" - -import * as PaymentModels from "@models" +import { + moduleDefinition, + revertMigration, + runMigrations, +} from "./module-definition" export default moduleDefinition - -const migrationScriptOptions = { - moduleName: Modules.PAYMENT, - models: PaymentModels, - pathToMigrations: __dirname + "/migrations", -} - -export const runMigrations = ModulesSdkUtils.buildMigrationScript( - migrationScriptOptions -) -export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript( - migrationScriptOptions -) +export { revertMigration, runMigrations } export * from "./initialize" -export * from "./loaders" diff --git a/packages/payment/src/module-definition.ts b/packages/payment/src/module-definition.ts index 543a6ef254..3b7c8e329a 100644 --- a/packages/payment/src/module-definition.ts +++ b/packages/payment/src/module-definition.ts @@ -5,10 +5,30 @@ import { PaymentModuleService } from "@services" import loadConnection from "./loaders/connection" import loadContainer from "./loaders/container" +import { Modules } from "@medusajs/modules-sdk" +import { ModulesSdkUtils } from "@medusajs/utils" + +import * as PaymentModels from "@models" + +const migrationScriptOptions = { + moduleName: Modules.PAYMENT, + models: PaymentModels, + pathToMigrations: __dirname + "/migrations", +} + +export const runMigrations = ModulesSdkUtils.buildMigrationScript( + migrationScriptOptions +) +export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript( + migrationScriptOptions +) + const service = PaymentModuleService const loaders = [loadContainer, loadConnection] as any export const moduleDefinition: ModuleExports = { service, loaders, + runMigrations, + revertMigration, } diff --git a/packages/pricing/src/index.ts b/packages/pricing/src/index.ts index f4609139aa..515ee01a91 100644 --- a/packages/pricing/src/index.ts +++ b/packages/pricing/src/index.ts @@ -1,25 +1,14 @@ -import { moduleDefinition } from "./module-definition" -import { Modules } from "@medusajs/modules-sdk" -import * as Models from "@models" -import { ModulesSdkUtils } from "@medusajs/utils" +import { + moduleDefinition, + revertMigration, + runMigrations, +} from "./module-definition" export default moduleDefinition - -const migrationScriptOptions = { - moduleName: Modules.PRICING, - models: Models, - pathToMigrations: __dirname + "/migrations", -} - -export const runMigrations = ModulesSdkUtils.buildMigrationScript( - migrationScriptOptions -) -export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript( - migrationScriptOptions -) +export { revertMigration, runMigrations } export * from "./initialize" -export * from "./types" -export * from "./loaders" +// TODO: remove export from models and services export * from "./models" export * from "./services" +export * from "./types" diff --git a/packages/pricing/src/module-definition.ts b/packages/pricing/src/module-definition.ts index 721047739a..b2cbdca762 100644 --- a/packages/pricing/src/module-definition.ts +++ b/packages/pricing/src/module-definition.ts @@ -1,12 +1,30 @@ +import { Modules } from "@medusajs/modules-sdk" import { ModuleExports } from "@medusajs/types" +import { ModulesSdkUtils } from "@medusajs/utils" +import * as Models from "@models" import { PricingModuleService } from "@services" import loadConnection from "./loaders/connection" import loadContainer from "./loaders/container" +const migrationScriptOptions = { + moduleName: Modules.PRICING, + models: Models, + pathToMigrations: __dirname + "/migrations", +} + +export const runMigrations = ModulesSdkUtils.buildMigrationScript( + migrationScriptOptions +) +export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript( + migrationScriptOptions +) + const service = PricingModuleService const loaders = [loadContainer, loadConnection] as any export const moduleDefinition: ModuleExports = { service, loaders, + runMigrations, + revertMigration, } diff --git a/packages/product/src/index.ts b/packages/product/src/index.ts index e8df9fb52e..515ee01a91 100644 --- a/packages/product/src/index.ts +++ b/packages/product/src/index.ts @@ -1,25 +1,14 @@ -import { moduleDefinition } from "./module-definition" -import { ModulesSdkUtils } from "@medusajs/utils" -import { Modules } from "@medusajs/modules-sdk" -import * as ProductModels from "@models" +import { + moduleDefinition, + revertMigration, + runMigrations, +} from "./module-definition" export default moduleDefinition - -const migrationScriptOptions = { - moduleName: Modules.PRODUCT, - models: ProductModels, - pathToMigrations: __dirname + "/migrations", -} - -export const runMigrations = ModulesSdkUtils.buildMigrationScript( - migrationScriptOptions -) -export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript( - migrationScriptOptions -) +export { revertMigration, runMigrations } export * from "./initialize" -export * from "./types" -export * from "./loaders" +// TODO: remove export from models and services export * from "./models" export * from "./services" +export * from "./types" diff --git a/packages/product/src/module-definition.ts b/packages/product/src/module-definition.ts index d47414c790..177c5c0cb9 100644 --- a/packages/product/src/module-definition.ts +++ b/packages/product/src/module-definition.ts @@ -3,10 +3,29 @@ import { ProductModuleService } from "@services" import loadConnection from "./loaders/connection" import loadContainer from "./loaders/container" +import { Modules } from "@medusajs/modules-sdk" +import { ModulesSdkUtils } from "@medusajs/utils" +import * as ProductModels from "@models" + +const migrationScriptOptions = { + moduleName: Modules.PRODUCT, + models: ProductModels, + pathToMigrations: __dirname + "/migrations", +} + +export const runMigrations = ModulesSdkUtils.buildMigrationScript( + migrationScriptOptions +) +export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript( + migrationScriptOptions +) + const service = ProductModuleService const loaders = [loadContainer, loadConnection] as any export const moduleDefinition: ModuleExports = { service, loaders, + runMigrations, + revertMigration, } diff --git a/packages/promotion/src/index.ts b/packages/promotion/src/index.ts index 220ccf1f5c..d449f73544 100644 --- a/packages/promotion/src/index.ts +++ b/packages/promotion/src/index.ts @@ -1,22 +1,10 @@ -import { moduleDefinition } from "./module-definition" -import { Modules } from "@medusajs/modules-sdk" -import * as Models from "@models" -import { ModulesSdkUtils } from "@medusajs/utils" +import { + moduleDefinition, + revertMigration, + runMigrations, +} from "./module-definition" export default moduleDefinition - -const migrationScriptOptions = { - moduleName: Modules.PROMOTION, - models: Models, - pathToMigrations: __dirname + "/migrations", -} - -export const runMigrations = ModulesSdkUtils.buildMigrationScript( - migrationScriptOptions -) -export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript( - migrationScriptOptions -) +export { revertMigration, runMigrations } export * from "./initialize" -export * from "./loaders" diff --git a/packages/promotion/src/module-definition.ts b/packages/promotion/src/module-definition.ts index db87261647..d2e899cef8 100644 --- a/packages/promotion/src/module-definition.ts +++ b/packages/promotion/src/module-definition.ts @@ -1,12 +1,30 @@ +import { Modules } from "@medusajs/modules-sdk" import { ModuleExports } from "@medusajs/types" +import { ModulesSdkUtils } from "@medusajs/utils" +import * as Models from "@models" import { PromotionModuleService } from "@services" import loadConnection from "./loaders/connection" import loadContainer from "./loaders/container" +const migrationScriptOptions = { + moduleName: Modules.PROMOTION, + models: Models, + pathToMigrations: __dirname + "/migrations", +} + +export const runMigrations = ModulesSdkUtils.buildMigrationScript( + migrationScriptOptions +) +export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript( + migrationScriptOptions +) + const service = PromotionModuleService const loaders = [loadContainer, loadConnection] as any export const moduleDefinition: ModuleExports = { service, loaders, + runMigrations, + revertMigration, } diff --git a/packages/stock-location/src/index.ts b/packages/stock-location/src/index.ts index d3159f3c9a..6ec4fe4834 100644 --- a/packages/stock-location/src/index.ts +++ b/packages/stock-location/src/index.ts @@ -1,8 +1,6 @@ -import { revertMigration, runMigrations } from "./migrations/run-migration" import { moduleDefinition } from "./module-definition" export default moduleDefinition - export * from "./initialize" export { revertMigration, runMigrations } from "./migrations/run-migration" export * from "./types" diff --git a/packages/stock-location/src/module-definition.ts b/packages/stock-location/src/module-definition.ts index 6fdf83e2ed..44ed23a71c 100644 --- a/packages/stock-location/src/module-definition.ts +++ b/packages/stock-location/src/module-definition.ts @@ -1,9 +1,9 @@ -import StockLocationService from "./services/stock-location" -import loadConnection from "./loaders/connection" -import * as StockLocationModels from "./models" import { ModuleExports } from "@medusajs/types" +import loadConnection from "./loaders/connection" import migrations from "./migrations" import { revertMigration, runMigrations } from "./migrations/run-migration" +import * as StockLocationModels from "./models" +import StockLocationService from "./services/stock-location" const service = StockLocationService const loaders = [loadConnection] diff --git a/packages/types/src/modules-sdk/index.ts b/packages/types/src/modules-sdk/index.ts index 1d52937aaa..5a7188cc23 100644 --- a/packages/types/src/modules-sdk/index.ts +++ b/packages/types/src/modules-sdk/index.ts @@ -36,7 +36,7 @@ export type InternalModuleDeclaration = { resources: MODULE_RESOURCE_TYPE dependencies?: string[] definition?: ModuleDefinition // That represent the definition of the module, such as the one we have for the medusa supported modules. This property is used for custom made modules. - resolve?: string + resolve?: string | ModuleExports options?: Record /** * If multiple modules are registered with the same key, the alias can be used to differentiate them @@ -227,14 +227,20 @@ export declare type ModuleJoinerRelationship = JoinerRelationship & { export type ModuleExports = { service: Constructor loaders?: ModuleLoaderFunction[] + /** + * @deprecated property will be removed in future versions + */ migrations?: any[] + /** + * @deprecated property will be removed in future versions + */ models?: Constructor[] runMigrations?( - options: LoaderOptions, + options: LoaderOptions, moduleDeclaration?: InternalModuleDeclaration ): Promise revertMigration?( - options: LoaderOptions, + options: LoaderOptions, moduleDeclaration?: InternalModuleDeclaration ): Promise }