chore: use loaded module reference (#5763)
This commit is contained in:
1 parent
bc79edfa67
commit
d85fee42ee
25 files changed
+291
-191
No files matched your search
@@ -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
|
||||||
@@ -16,7 +16,7 @@ import {
|
|||||||
} from "../../../../factories"
|
} from "../../../../factories"
|
||||||
import { createDefaultRuleTypes } from "../../../helpers/create-default-rule-types"
|
import { createDefaultRuleTypes } from "../../../helpers/create-default-rule-types"
|
||||||
|
|
||||||
jest.setTimeout(5000000)
|
jest.setTimeout(50000)
|
||||||
|
|
||||||
const adminHeaders = {
|
const adminHeaders = {
|
||||||
headers: {
|
headers: {
|
||||||
|
|||||||
@@ -1,22 +1,11 @@
|
|||||||
import { moduleDefinition } from "./module-definition"
|
import {
|
||||||
import { Modules } from "@medusajs/modules-sdk"
|
moduleDefinition,
|
||||||
import * as Models from "@models"
|
revertMigration,
|
||||||
import { ModulesSdkUtils } from "@medusajs/utils"
|
runMigrations,
|
||||||
|
} from "./module-definition"
|
||||||
|
|
||||||
export default moduleDefinition
|
export default moduleDefinition
|
||||||
|
export { revertMigration, runMigrations }
|
||||||
const migrationScriptOptions = {
|
|
||||||
moduleName: Modules.AUTHENTICATION,
|
|
||||||
models: Models,
|
|
||||||
pathToMigrations: __dirname + "/migrations",
|
|
||||||
}
|
|
||||||
|
|
||||||
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
|
|
||||||
migrationScriptOptions
|
|
||||||
)
|
|
||||||
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
|
|
||||||
migrationScriptOptions
|
|
||||||
)
|
|
||||||
|
|
||||||
export * from "./initialize"
|
export * from "./initialize"
|
||||||
export * from "./loaders"
|
export * from "./loaders"
|
||||||
@@ -1,13 +1,31 @@
|
|||||||
|
import { Modules } from "@medusajs/modules-sdk"
|
||||||
import { ModuleExports } from "@medusajs/types"
|
import { ModuleExports } from "@medusajs/types"
|
||||||
|
import { ModulesSdkUtils } from "@medusajs/utils"
|
||||||
|
import * as Models from "@models"
|
||||||
import { AuthenticationModuleService } from "@services"
|
import { AuthenticationModuleService } from "@services"
|
||||||
import loadConnection from "./loaders/connection"
|
import loadConnection from "./loaders/connection"
|
||||||
import loadContainer from "./loaders/container"
|
import loadContainer from "./loaders/container"
|
||||||
import loadProviders from "./loaders/providers"
|
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 service = AuthenticationModuleService
|
||||||
const loaders = [loadContainer, loadConnection, loadProviders] as any
|
const loaders = [loadContainer, loadConnection, loadProviders] as any
|
||||||
|
|
||||||
export const moduleDefinition: ModuleExports = {
|
export const moduleDefinition: ModuleExports = {
|
||||||
service,
|
service,
|
||||||
loaders,
|
loaders,
|
||||||
|
runMigrations,
|
||||||
|
revertMigration,
|
||||||
}
|
}
|
||||||
@@ -1,23 +1,10 @@
|
|||||||
import { Modules } from "@medusajs/modules-sdk"
|
import {
|
||||||
import { ModulesSdkUtils } from "@medusajs/utils"
|
moduleDefinition,
|
||||||
import * as Models from "@models"
|
revertMigration,
|
||||||
import { moduleDefinition } from "./module-definition"
|
runMigrations,
|
||||||
|
} from "./module-definition"
|
||||||
|
|
||||||
export default moduleDefinition
|
export default moduleDefinition
|
||||||
|
export { revertMigration, runMigrations }
|
||||||
const migrationScriptOptions = {
|
|
||||||
moduleName: Modules.CART,
|
|
||||||
models: Models,
|
|
||||||
pathToMigrations: __dirname + "/migrations",
|
|
||||||
}
|
|
||||||
|
|
||||||
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
|
|
||||||
migrationScriptOptions
|
|
||||||
)
|
|
||||||
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
|
|
||||||
migrationScriptOptions
|
|
||||||
)
|
|
||||||
|
|
||||||
export * from "./initialize"
|
export * from "./initialize"
|
||||||
export * from "./loaders"
|
|
||||||
|
|
||||||
@@ -1,12 +1,30 @@
|
|||||||
|
import { Modules } from "@medusajs/modules-sdk"
|
||||||
import { ModuleExports } from "@medusajs/types"
|
import { ModuleExports } from "@medusajs/types"
|
||||||
|
import { ModulesSdkUtils } from "@medusajs/utils"
|
||||||
|
import * as Models from "@models"
|
||||||
import loadConnection from "./loaders/connection"
|
import loadConnection from "./loaders/connection"
|
||||||
import loadContainer from "./loaders/container"
|
import loadContainer from "./loaders/container"
|
||||||
import { CartModuleService } from "./services"
|
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 service = CartModuleService
|
||||||
const loaders = [loadContainer, loadConnection] as any
|
const loaders = [loadContainer, loadConnection] as any
|
||||||
|
|
||||||
export const moduleDefinition: ModuleExports = {
|
export const moduleDefinition: ModuleExports = {
|
||||||
service,
|
service,
|
||||||
loaders,
|
loaders,
|
||||||
|
runMigrations,
|
||||||
|
revertMigration,
|
||||||
}
|
}
|
||||||
@@ -1,24 +1,10 @@
|
|||||||
import { Modules } from "@medusajs/modules-sdk"
|
import {
|
||||||
import { ModulesSdkUtils } from "@medusajs/utils"
|
moduleDefinition,
|
||||||
import * as Models from "@models"
|
revertMigration,
|
||||||
|
runMigrations,
|
||||||
import { moduleDefinition } from "./module-definition"
|
} from "./module-definition"
|
||||||
|
|
||||||
export default moduleDefinition
|
export default moduleDefinition
|
||||||
|
export { revertMigration, runMigrations }
|
||||||
const migrationScriptOptions = {
|
|
||||||
moduleName: Modules.CUSTOMER,
|
|
||||||
models: Models,
|
|
||||||
pathToMigrations: __dirname + "/migrations",
|
|
||||||
}
|
|
||||||
|
|
||||||
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
|
|
||||||
migrationScriptOptions
|
|
||||||
)
|
|
||||||
|
|
||||||
export const runMigration = ModulesSdkUtils.buildMigrationScript(
|
|
||||||
migrationScriptOptions
|
|
||||||
)
|
|
||||||
|
|
||||||
export * from "./initialize"
|
export * from "./initialize"
|
||||||
export * from "./loaders"
|
|
||||||
@@ -1,12 +1,31 @@
|
|||||||
|
import { Modules } from "@medusajs/modules-sdk"
|
||||||
import { ModuleExports } from "@medusajs/types"
|
import { ModuleExports } from "@medusajs/types"
|
||||||
|
import { ModulesSdkUtils } from "@medusajs/utils"
|
||||||
|
import * as Models from "@models"
|
||||||
import { CustomerModuleService } from "@services"
|
import { CustomerModuleService } from "@services"
|
||||||
import loadConnection from "./loaders/connection"
|
import loadConnection from "./loaders/connection"
|
||||||
import loadContainer from "./loaders/container"
|
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 service = CustomerModuleService
|
||||||
const loaders = [loadContainer, loadConnection] as any
|
const loaders = [loadContainer, loadConnection] as any
|
||||||
|
|
||||||
export const moduleDefinition: ModuleExports = {
|
export const moduleDefinition: ModuleExports = {
|
||||||
service,
|
service,
|
||||||
loaders,
|
loaders,
|
||||||
|
runMigrations,
|
||||||
|
revertMigration,
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,6 @@
|
|||||||
import { revertMigration, runMigrations } from "./migrations/run-migration"
|
|
||||||
import { moduleDefinition } from "./module-definition"
|
import { moduleDefinition } from "./module-definition"
|
||||||
|
|
||||||
export default moduleDefinition
|
export default moduleDefinition
|
||||||
|
|
||||||
export * from "./initialize"
|
export * from "./initialize"
|
||||||
export { revertMigration, runMigrations } from "./migrations/run-migration"
|
export { revertMigration, runMigrations } from "./migrations/run-migration"
|
||||||
export * from "./types"
|
|
||||||
@@ -51,7 +51,7 @@ async function loadLegacyModulesEntities(configModules, container) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
let modulePath = isString(moduleConfig)
|
const modulePath = isString(moduleConfig)
|
||||||
? moduleConfig
|
? moduleConfig
|
||||||
: (moduleConfig as InternalModuleDeclaration).resolve ??
|
: (moduleConfig as InternalModuleDeclaration).resolve ??
|
||||||
(definition.defaultPackage as string)
|
(definition.defaultPackage as string)
|
||||||
@@ -69,7 +69,7 @@ async function loadLegacyModulesEntities(configModules, container) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
const module = await import(modulePath)
|
const module = await import(modulePath as string)
|
||||||
|
|
||||||
if (module.default?.models) {
|
if (module.default?.models) {
|
||||||
module.default.models.map((model) =>
|
module.default.models.map((model) =>
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import {
|
|||||||
import { upperCaseFirst } from "@medusajs/utils"
|
import { upperCaseFirst } from "@medusajs/utils"
|
||||||
|
|
||||||
export enum Modules {
|
export enum Modules {
|
||||||
|
LINK = "linkModules",
|
||||||
EVENT_BUS = "eventBus",
|
EVENT_BUS = "eventBus",
|
||||||
STOCK_LOCATION = "stockLocationService",
|
STOCK_LOCATION = "stockLocationService",
|
||||||
INVENTORY = "inventoryService",
|
INVENTORY = "inventoryService",
|
||||||
@@ -35,6 +36,7 @@ export enum ModuleRegistrationName {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const MODULE_PACKAGE_NAMES = {
|
export const MODULE_PACKAGE_NAMES = {
|
||||||
|
[Modules.LINK]: "@medusajs/link-modules",
|
||||||
[Modules.PRODUCT]: "@medusajs/product",
|
[Modules.PRODUCT]: "@medusajs/product",
|
||||||
[Modules.EVENT_BUS]: "@medusajs/event-bus-local",
|
[Modules.EVENT_BUS]: "@medusajs/event-bus-local",
|
||||||
[Modules.STOCK_LOCATION]: "@medusajs/stock-location",
|
[Modules.STOCK_LOCATION]: "@medusajs/stock-location",
|
||||||
|
|||||||
@@ -121,11 +121,13 @@ export async function loadInternalModule(
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function loadModuleMigrations(
|
export async function loadModuleMigrations(
|
||||||
resolution: ModuleResolution
|
resolution: ModuleResolution,
|
||||||
|
moduleExports?: ModuleExports
|
||||||
): Promise<[Function | undefined, Function | undefined]> {
|
): Promise<[Function | undefined, Function | undefined]> {
|
||||||
let loadedModule: ModuleExports
|
let loadedModule: ModuleExports
|
||||||
try {
|
try {
|
||||||
loadedModule = await import(resolution.resolutionPath as string)
|
loadedModule =
|
||||||
|
moduleExports ?? (await import(resolution.resolutionPath as string))
|
||||||
|
|
||||||
return [loadedModule.runMigrations, loadedModule.revertMigration]
|
return [loadedModule.runMigrations, loadedModule.revertMigration]
|
||||||
} catch {
|
} catch {
|
||||||
|
|||||||
@@ -1,12 +1,15 @@
|
|||||||
|
import { mergeTypeDefs } from "@graphql-tools/merge"
|
||||||
|
import { makeExecutableSchema } from "@graphql-tools/schema"
|
||||||
|
import { RemoteFetchDataCallback } from "@medusajs/orchestration"
|
||||||
import {
|
import {
|
||||||
ExternalModuleDeclaration,
|
ExternalModuleDeclaration,
|
||||||
InternalModuleDeclaration,
|
InternalModuleDeclaration,
|
||||||
LoadedModule,
|
LoadedModule,
|
||||||
LoaderOptions,
|
|
||||||
MedusaContainer,
|
MedusaContainer,
|
||||||
MODULE_RESOURCE_TYPE,
|
MODULE_RESOURCE_TYPE,
|
||||||
MODULE_SCOPE,
|
MODULE_SCOPE,
|
||||||
ModuleDefinition,
|
ModuleDefinition,
|
||||||
|
ModuleExports,
|
||||||
ModuleJoinerConfig,
|
ModuleJoinerConfig,
|
||||||
ModuleServiceInitializeOptions,
|
ModuleServiceInitializeOptions,
|
||||||
RemoteJoinerQuery,
|
RemoteJoinerQuery,
|
||||||
@@ -15,23 +18,21 @@ import {
|
|||||||
ContainerRegistrationKeys,
|
ContainerRegistrationKeys,
|
||||||
createMedusaContainer,
|
createMedusaContainer,
|
||||||
isObject,
|
isObject,
|
||||||
|
isString,
|
||||||
ModulesSdkUtils,
|
ModulesSdkUtils,
|
||||||
} from "@medusajs/utils"
|
} from "@medusajs/utils"
|
||||||
|
import { asValue } from "awilix"
|
||||||
import {
|
import {
|
||||||
MODULE_PACKAGE_NAMES,
|
MODULE_PACKAGE_NAMES,
|
||||||
ModuleRegistrationName,
|
ModuleRegistrationName,
|
||||||
Modules,
|
Modules,
|
||||||
} from "./definitions"
|
} from "./definitions"
|
||||||
import { MedusaModule } from "./medusa-module"
|
import { MedusaModule } from "./medusa-module"
|
||||||
import { RemoteFetchDataCallback } from "@medusajs/orchestration"
|
|
||||||
import { RemoteLink } from "./remote-link"
|
import { RemoteLink } from "./remote-link"
|
||||||
import { RemoteQuery } from "./remote-query"
|
import { RemoteQuery } from "./remote-query"
|
||||||
import { cleanGraphQLSchema } from "./utils"
|
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 = (
|
export type RunMigrationFn = (
|
||||||
options?: ModuleServiceInitializeOptions,
|
options?: ModuleServiceInitializeOptions,
|
||||||
@@ -71,6 +72,7 @@ async function loadModules(modulesConfig, sharedContainer) {
|
|||||||
Object.keys(modulesConfig).map(async (moduleName) => {
|
Object.keys(modulesConfig).map(async (moduleName) => {
|
||||||
const mod = modulesConfig[moduleName]
|
const mod = modulesConfig[moduleName]
|
||||||
let path: string
|
let path: string
|
||||||
|
let moduleExports: ModuleExports | undefined = undefined
|
||||||
let declaration: any = {}
|
let declaration: any = {}
|
||||||
let definition: ModuleDefinition | undefined = undefined
|
let definition: ModuleDefinition | undefined = undefined
|
||||||
|
|
||||||
@@ -78,6 +80,9 @@ async function loadModules(modulesConfig, sharedContainer) {
|
|||||||
const mod_ = mod as unknown as InternalModuleDeclaration
|
const mod_ = mod as unknown as InternalModuleDeclaration
|
||||||
path = mod_.resolve ?? MODULE_PACKAGE_NAMES[moduleName]
|
path = mod_.resolve ?? MODULE_PACKAGE_NAMES[moduleName]
|
||||||
definition = mod_.definition
|
definition = mod_.definition
|
||||||
|
moduleExports = !isString(mod_.resolve)
|
||||||
|
? (mod_.resolve as ModuleExports)
|
||||||
|
: undefined
|
||||||
declaration = { ...mod }
|
declaration = { ...mod }
|
||||||
delete declaration.definition
|
delete declaration.definition
|
||||||
} else {
|
} else {
|
||||||
@@ -98,6 +103,7 @@ async function loadModules(modulesConfig, sharedContainer) {
|
|||||||
declaration,
|
declaration,
|
||||||
sharedContainer,
|
sharedContainer,
|
||||||
moduleDefinition: definition,
|
moduleDefinition: definition,
|
||||||
|
moduleExports,
|
||||||
})) as LoadedModule
|
})) as LoadedModule
|
||||||
|
|
||||||
const service = loaded[moduleName]
|
const service = loaded[moduleName]
|
||||||
@@ -119,9 +125,16 @@ async function loadModules(modulesConfig, sharedContainer) {
|
|||||||
return allModules
|
return allModules
|
||||||
}
|
}
|
||||||
|
|
||||||
async function initializeLinks(config, linkModules, injectedDependencies) {
|
async function initializeLinks({
|
||||||
|
config,
|
||||||
|
linkModules,
|
||||||
|
injectedDependencies,
|
||||||
|
moduleExports,
|
||||||
|
}) {
|
||||||
try {
|
try {
|
||||||
const { initialize, runMigrations } = await import(LinkModulePackage)
|
const { initialize, runMigrations } =
|
||||||
|
moduleExports ?? (await import(LinkModulePackage))
|
||||||
|
|
||||||
const linkResolution = await initialize(
|
const linkResolution = await initialize(
|
||||||
config,
|
config,
|
||||||
linkModules,
|
linkModules,
|
||||||
@@ -140,6 +153,10 @@ async function initializeLinks(config, linkModules, injectedDependencies) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isMedusaModule(mod) {
|
||||||
|
return typeof mod?.initialize === "function"
|
||||||
|
}
|
||||||
|
|
||||||
function cleanAndMergeSchema(loadedSchema) {
|
function cleanAndMergeSchema(loadedSchema) {
|
||||||
const { schema: cleanedSchema, notFound } = cleanGraphQLSchema(loadedSchema)
|
const { schema: cleanedSchema, notFound } = cleanGraphQLSchema(loadedSchema)
|
||||||
const mergedSchema = mergeTypeDefs(cleanedSchema)
|
const mergedSchema = mergeTypeDefs(cleanedSchema)
|
||||||
@@ -174,32 +191,28 @@ export type MedusaAppOutput = {
|
|||||||
runMigrations: RunMigrationFn
|
runMigrations: RunMigrationFn
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function MedusaApp(
|
export async function MedusaApp({
|
||||||
{
|
sharedContainer,
|
||||||
sharedContainer,
|
sharedResourcesConfig,
|
||||||
sharedResourcesConfig,
|
servicesConfig,
|
||||||
servicesConfig,
|
modulesConfigPath,
|
||||||
modulesConfigPath,
|
modulesConfigFileName,
|
||||||
modulesConfigFileName,
|
modulesConfig,
|
||||||
modulesConfig,
|
linkModules,
|
||||||
linkModules,
|
remoteFetchData,
|
||||||
remoteFetchData,
|
injectedDependencies,
|
||||||
injectedDependencies,
|
}: {
|
||||||
}: {
|
sharedContainer?: MedusaContainer
|
||||||
sharedContainer?: MedusaContainer
|
sharedResourcesConfig?: SharedResources
|
||||||
sharedResourcesConfig?: SharedResources
|
loadedModules?: LoadedModule[]
|
||||||
loadedModules?: LoadedModule[]
|
servicesConfig?: ModuleJoinerConfig[]
|
||||||
servicesConfig?: ModuleJoinerConfig[]
|
modulesConfigPath?: string
|
||||||
modulesConfigPath?: string
|
modulesConfigFileName?: string
|
||||||
modulesConfigFileName?: string
|
modulesConfig?: MedusaModuleConfig
|
||||||
modulesConfig?: MedusaModuleConfig
|
linkModules?: ModuleJoinerConfig | ModuleJoinerConfig[]
|
||||||
linkModules?: ModuleJoinerConfig | ModuleJoinerConfig[]
|
remoteFetchData?: RemoteFetchDataCallback
|
||||||
remoteFetchData?: RemoteFetchDataCallback
|
injectedDependencies?: any
|
||||||
injectedDependencies?: any
|
} = {}): Promise<{
|
||||||
} = {
|
|
||||||
injectedDependencies: {},
|
|
||||||
}
|
|
||||||
): Promise<{
|
|
||||||
modules: Record<string, LoadedModule | LoadedModule[]>
|
modules: Record<string, LoadedModule | LoadedModule[]>
|
||||||
link: RemoteLink | undefined
|
link: RemoteLink | undefined
|
||||||
query: (
|
query: (
|
||||||
@@ -210,6 +223,8 @@ export async function MedusaApp(
|
|||||||
notFound?: Record<string, Record<string, string>>
|
notFound?: Record<string, Record<string, string>>
|
||||||
runMigrations: RunMigrationFn
|
runMigrations: RunMigrationFn
|
||||||
}> {
|
}> {
|
||||||
|
injectedDependencies ??= {}
|
||||||
|
|
||||||
const sharedContainer_ = createMedusaContainer({}, sharedContainer)
|
const sharedContainer_ = createMedusaContainer({}, sharedContainer)
|
||||||
|
|
||||||
const modules: MedusaModuleConfig =
|
const modules: MedusaModuleConfig =
|
||||||
@@ -241,8 +256,10 @@ export async function MedusaApp(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// remove the link module from the modules
|
// remove the link module from the modules
|
||||||
const linkModule = modules[LinkModulePackage]
|
const linkModule = modules[LinkModulePackage] ?? modules[Modules.LINK]
|
||||||
delete modules[LinkModulePackage]
|
delete modules[LinkModulePackage]
|
||||||
|
delete modules[Modules.LINK]
|
||||||
|
|
||||||
let linkModuleOptions = {}
|
let linkModuleOptions = {}
|
||||||
|
|
||||||
if (isObject(linkModule)) {
|
if (isObject(linkModule)) {
|
||||||
@@ -267,11 +284,12 @@ export async function MedusaApp(
|
|||||||
remoteLink,
|
remoteLink,
|
||||||
linkResolution,
|
linkResolution,
|
||||||
runMigrations: linkModuleMigration,
|
runMigrations: linkModuleMigration,
|
||||||
} = await initializeLinks(
|
} = await initializeLinks({
|
||||||
linkModuleOptions,
|
config: linkModuleOptions,
|
||||||
linkModules,
|
linkModules,
|
||||||
injectedDependencies
|
injectedDependencies,
|
||||||
)
|
moduleExports: isMedusaModule(linkModule) ? linkModule : undefined,
|
||||||
|
})
|
||||||
|
|
||||||
const loadedSchema = getLoadedSchema()
|
const loadedSchema = getLoadedSchema()
|
||||||
const { schema, notFound } = cleanAndMergeSchema(loadedSchema)
|
const { schema, notFound } = cleanAndMergeSchema(loadedSchema)
|
||||||
@@ -294,16 +312,29 @@ export async function MedusaApp(
|
|||||||
for (const moduleName of Object.keys(allModules)) {
|
for (const moduleName of Object.keys(allModules)) {
|
||||||
const moduleResolution = MedusaModule.getModuleResolutions(moduleName)
|
const moduleResolution = MedusaModule.getModuleResolutions(moduleName)
|
||||||
|
|
||||||
|
if (!moduleResolution.options?.database) {
|
||||||
|
moduleResolution.options ??= {}
|
||||||
|
moduleResolution.options.database = {
|
||||||
|
...(sharedResourcesConfig?.database ?? {}),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
await MedusaModule.migrateUp(
|
await MedusaModule.migrateUp(
|
||||||
moduleResolution.definition.key,
|
moduleResolution.definition.key,
|
||||||
moduleResolution.resolutionPath as string,
|
moduleResolution.resolutionPath as string,
|
||||||
moduleResolution.options
|
moduleResolution.options,
|
||||||
|
moduleResolution.moduleExports
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const linkModuleOpt = { ...linkModuleOptions }
|
||||||
|
linkModuleOpt.database ??= {
|
||||||
|
...(sharedResourcesConfig?.database ?? {}),
|
||||||
|
}
|
||||||
|
|
||||||
linkModuleMigration &&
|
linkModuleMigration &&
|
||||||
(await linkModuleMigration({
|
(await linkModuleMigration({
|
||||||
options: linkModuleOptions,
|
options: linkModuleOpt,
|
||||||
injectedDependencies,
|
injectedDependencies,
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -438,7 +438,8 @@ export class MedusaModule {
|
|||||||
public static async migrateUp(
|
public static async migrateUp(
|
||||||
moduleKey: string,
|
moduleKey: string,
|
||||||
modulePath: string,
|
modulePath: string,
|
||||||
options?: Record<string, any>
|
options?: Record<string, any>,
|
||||||
|
moduleExports?: ModuleExports
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
const moduleResolutions = registerMedusaModule(moduleKey, {
|
const moduleResolutions = registerMedusaModule(moduleKey, {
|
||||||
scope: MODULE_SCOPE.INTERNAL,
|
scope: MODULE_SCOPE.INTERNAL,
|
||||||
@@ -448,7 +449,10 @@ export class MedusaModule {
|
|||||||
})
|
})
|
||||||
|
|
||||||
for (const mod in moduleResolutions) {
|
for (const mod in moduleResolutions) {
|
||||||
const [migrateUp] = await loadModuleMigrations(moduleResolutions[mod])
|
const [migrateUp] = await loadModuleMigrations(
|
||||||
|
moduleResolutions[mod],
|
||||||
|
moduleExports
|
||||||
|
)
|
||||||
|
|
||||||
if (typeof migrateUp === "function") {
|
if (typeof migrateUp === "function") {
|
||||||
await migrateUp({
|
await migrateUp({
|
||||||
@@ -462,7 +466,8 @@ export class MedusaModule {
|
|||||||
public static async migrateDown(
|
public static async migrateDown(
|
||||||
moduleKey: string,
|
moduleKey: string,
|
||||||
modulePath: string,
|
modulePath: string,
|
||||||
options?: Record<string, any>
|
options?: Record<string, any>,
|
||||||
|
moduleExports?: ModuleExports
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
const moduleResolutions = registerMedusaModule(moduleKey, {
|
const moduleResolutions = registerMedusaModule(moduleKey, {
|
||||||
scope: MODULE_SCOPE.INTERNAL,
|
scope: MODULE_SCOPE.INTERNAL,
|
||||||
@@ -472,7 +477,10 @@ export class MedusaModule {
|
|||||||
})
|
})
|
||||||
|
|
||||||
for (const mod in moduleResolutions) {
|
for (const mod in moduleResolutions) {
|
||||||
const [, migrateDown] = await loadModuleMigrations(moduleResolutions[mod])
|
const [, migrateDown] = await loadModuleMigrations(
|
||||||
|
moduleResolutions[mod],
|
||||||
|
moduleExports
|
||||||
|
)
|
||||||
|
|
||||||
if (typeof migrateDown === "function") {
|
if (typeof migrateDown === "function") {
|
||||||
await migrateDown({
|
await migrateDown({
|
||||||
|
|||||||
@@ -1,23 +1,10 @@
|
|||||||
import { moduleDefinition } from "./module-definition"
|
import {
|
||||||
import { Modules } from "@medusajs/modules-sdk"
|
moduleDefinition,
|
||||||
import { ModulesSdkUtils } from "@medusajs/utils"
|
revertMigration,
|
||||||
|
runMigrations,
|
||||||
import * as PaymentModels from "@models"
|
} from "./module-definition"
|
||||||
|
|
||||||
export default moduleDefinition
|
export default moduleDefinition
|
||||||
|
export { revertMigration, runMigrations }
|
||||||
const migrationScriptOptions = {
|
|
||||||
moduleName: Modules.PAYMENT,
|
|
||||||
models: PaymentModels,
|
|
||||||
pathToMigrations: __dirname + "/migrations",
|
|
||||||
}
|
|
||||||
|
|
||||||
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
|
|
||||||
migrationScriptOptions
|
|
||||||
)
|
|
||||||
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
|
|
||||||
migrationScriptOptions
|
|
||||||
)
|
|
||||||
|
|
||||||
export * from "./initialize"
|
export * from "./initialize"
|
||||||
export * from "./loaders"
|
|
||||||
@@ -5,10 +5,30 @@ import { PaymentModuleService } from "@services"
|
|||||||
import loadConnection from "./loaders/connection"
|
import loadConnection from "./loaders/connection"
|
||||||
import loadContainer from "./loaders/container"
|
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 service = PaymentModuleService
|
||||||
const loaders = [loadContainer, loadConnection] as any
|
const loaders = [loadContainer, loadConnection] as any
|
||||||
|
|
||||||
export const moduleDefinition: ModuleExports = {
|
export const moduleDefinition: ModuleExports = {
|
||||||
service,
|
service,
|
||||||
loaders,
|
loaders,
|
||||||
|
runMigrations,
|
||||||
|
revertMigration,
|
||||||
}
|
}
|
||||||
@@ -1,25 +1,14 @@
|
|||||||
import { moduleDefinition } from "./module-definition"
|
import {
|
||||||
import { Modules } from "@medusajs/modules-sdk"
|
moduleDefinition,
|
||||||
import * as Models from "@models"
|
revertMigration,
|
||||||
import { ModulesSdkUtils } from "@medusajs/utils"
|
runMigrations,
|
||||||
|
} from "./module-definition"
|
||||||
|
|
||||||
export default moduleDefinition
|
export default moduleDefinition
|
||||||
|
export { revertMigration, runMigrations }
|
||||||
const migrationScriptOptions = {
|
|
||||||
moduleName: Modules.PRICING,
|
|
||||||
models: Models,
|
|
||||||
pathToMigrations: __dirname + "/migrations",
|
|
||||||
}
|
|
||||||
|
|
||||||
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
|
|
||||||
migrationScriptOptions
|
|
||||||
)
|
|
||||||
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
|
|
||||||
migrationScriptOptions
|
|
||||||
)
|
|
||||||
|
|
||||||
export * from "./initialize"
|
export * from "./initialize"
|
||||||
export * from "./types"
|
// TODO: remove export from models and services
|
||||||
export * from "./loaders"
|
|
||||||
export * from "./models"
|
export * from "./models"
|
||||||
export * from "./services"
|
export * from "./services"
|
||||||
|
export * from "./types"
|
||||||
@@ -1,12 +1,30 @@
|
|||||||
|
import { Modules } from "@medusajs/modules-sdk"
|
||||||
import { ModuleExports } from "@medusajs/types"
|
import { ModuleExports } from "@medusajs/types"
|
||||||
|
import { ModulesSdkUtils } from "@medusajs/utils"
|
||||||
|
import * as Models from "@models"
|
||||||
import { PricingModuleService } from "@services"
|
import { PricingModuleService } from "@services"
|
||||||
import loadConnection from "./loaders/connection"
|
import loadConnection from "./loaders/connection"
|
||||||
import loadContainer from "./loaders/container"
|
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 service = PricingModuleService
|
||||||
const loaders = [loadContainer, loadConnection] as any
|
const loaders = [loadContainer, loadConnection] as any
|
||||||
|
|
||||||
export const moduleDefinition: ModuleExports = {
|
export const moduleDefinition: ModuleExports = {
|
||||||
service,
|
service,
|
||||||
loaders,
|
loaders,
|
||||||
|
runMigrations,
|
||||||
|
revertMigration,
|
||||||
}
|
}
|
||||||
@@ -1,25 +1,14 @@
|
|||||||
import { moduleDefinition } from "./module-definition"
|
import {
|
||||||
import { ModulesSdkUtils } from "@medusajs/utils"
|
moduleDefinition,
|
||||||
import { Modules } from "@medusajs/modules-sdk"
|
revertMigration,
|
||||||
import * as ProductModels from "@models"
|
runMigrations,
|
||||||
|
} from "./module-definition"
|
||||||
|
|
||||||
export default moduleDefinition
|
export default moduleDefinition
|
||||||
|
export { revertMigration, runMigrations }
|
||||||
const migrationScriptOptions = {
|
|
||||||
moduleName: Modules.PRODUCT,
|
|
||||||
models: ProductModels,
|
|
||||||
pathToMigrations: __dirname + "/migrations",
|
|
||||||
}
|
|
||||||
|
|
||||||
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
|
|
||||||
migrationScriptOptions
|
|
||||||
)
|
|
||||||
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
|
|
||||||
migrationScriptOptions
|
|
||||||
)
|
|
||||||
|
|
||||||
export * from "./initialize"
|
export * from "./initialize"
|
||||||
export * from "./types"
|
// TODO: remove export from models and services
|
||||||
export * from "./loaders"
|
|
||||||
export * from "./models"
|
export * from "./models"
|
||||||
export * from "./services"
|
export * from "./services"
|
||||||
|
export * from "./types"
|
||||||
@@ -3,10 +3,29 @@ import { ProductModuleService } from "@services"
|
|||||||
import loadConnection from "./loaders/connection"
|
import loadConnection from "./loaders/connection"
|
||||||
import loadContainer from "./loaders/container"
|
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 service = ProductModuleService
|
||||||
const loaders = [loadContainer, loadConnection] as any
|
const loaders = [loadContainer, loadConnection] as any
|
||||||
|
|
||||||
export const moduleDefinition: ModuleExports = {
|
export const moduleDefinition: ModuleExports = {
|
||||||
service,
|
service,
|
||||||
loaders,
|
loaders,
|
||||||
|
runMigrations,
|
||||||
|
revertMigration,
|
||||||
}
|
}
|
||||||
@@ -1,22 +1,10 @@
|
|||||||
import { moduleDefinition } from "./module-definition"
|
import {
|
||||||
import { Modules } from "@medusajs/modules-sdk"
|
moduleDefinition,
|
||||||
import * as Models from "@models"
|
revertMigration,
|
||||||
import { ModulesSdkUtils } from "@medusajs/utils"
|
runMigrations,
|
||||||
|
} from "./module-definition"
|
||||||
|
|
||||||
export default moduleDefinition
|
export default moduleDefinition
|
||||||
|
export { revertMigration, runMigrations }
|
||||||
const migrationScriptOptions = {
|
|
||||||
moduleName: Modules.PROMOTION,
|
|
||||||
models: Models,
|
|
||||||
pathToMigrations: __dirname + "/migrations",
|
|
||||||
}
|
|
||||||
|
|
||||||
export const runMigrations = ModulesSdkUtils.buildMigrationScript(
|
|
||||||
migrationScriptOptions
|
|
||||||
)
|
|
||||||
export const revertMigration = ModulesSdkUtils.buildRevertMigrationScript(
|
|
||||||
migrationScriptOptions
|
|
||||||
)
|
|
||||||
|
|
||||||
export * from "./initialize"
|
export * from "./initialize"
|
||||||
export * from "./loaders"
|
|
||||||
@@ -1,12 +1,30 @@
|
|||||||
|
import { Modules } from "@medusajs/modules-sdk"
|
||||||
import { ModuleExports } from "@medusajs/types"
|
import { ModuleExports } from "@medusajs/types"
|
||||||
|
import { ModulesSdkUtils } from "@medusajs/utils"
|
||||||
|
import * as Models from "@models"
|
||||||
import { PromotionModuleService } from "@services"
|
import { PromotionModuleService } from "@services"
|
||||||
import loadConnection from "./loaders/connection"
|
import loadConnection from "./loaders/connection"
|
||||||
import loadContainer from "./loaders/container"
|
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 service = PromotionModuleService
|
||||||
const loaders = [loadContainer, loadConnection] as any
|
const loaders = [loadContainer, loadConnection] as any
|
||||||
|
|
||||||
export const moduleDefinition: ModuleExports = {
|
export const moduleDefinition: ModuleExports = {
|
||||||
service,
|
service,
|
||||||
loaders,
|
loaders,
|
||||||
|
runMigrations,
|
||||||
|
revertMigration,
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,6 @@
|
|||||||
import { revertMigration, runMigrations } from "./migrations/run-migration"
|
|
||||||
import { moduleDefinition } from "./module-definition"
|
import { moduleDefinition } from "./module-definition"
|
||||||
|
|
||||||
export default moduleDefinition
|
export default moduleDefinition
|
||||||
|
|
||||||
export * from "./initialize"
|
export * from "./initialize"
|
||||||
export { revertMigration, runMigrations } from "./migrations/run-migration"
|
export { revertMigration, runMigrations } from "./migrations/run-migration"
|
||||||
export * from "./types"
|
export * from "./types"
|
||||||
@@ -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 { ModuleExports } from "@medusajs/types"
|
||||||
|
import loadConnection from "./loaders/connection"
|
||||||
import migrations from "./migrations"
|
import migrations from "./migrations"
|
||||||
import { revertMigration, runMigrations } from "./migrations/run-migration"
|
import { revertMigration, runMigrations } from "./migrations/run-migration"
|
||||||
|
import * as StockLocationModels from "./models"
|
||||||
|
import StockLocationService from "./services/stock-location"
|
||||||
|
|
||||||
const service = StockLocationService
|
const service = StockLocationService
|
||||||
const loaders = [loadConnection]
|
const loaders = [loadConnection]
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ export type InternalModuleDeclaration = {
|
|||||||
resources: MODULE_RESOURCE_TYPE
|
resources: MODULE_RESOURCE_TYPE
|
||||||
dependencies?: string[]
|
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.
|
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<string, unknown>
|
options?: Record<string, unknown>
|
||||||
/**
|
/**
|
||||||
* If multiple modules are registered with the same key, the alias can be used to differentiate them
|
* 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 = {
|
export type ModuleExports = {
|
||||||
service: Constructor<any>
|
service: Constructor<any>
|
||||||
loaders?: ModuleLoaderFunction[]
|
loaders?: ModuleLoaderFunction[]
|
||||||
|
/**
|
||||||
|
* @deprecated property will be removed in future versions
|
||||||
|
*/
|
||||||
migrations?: any[]
|
migrations?: any[]
|
||||||
|
/**
|
||||||
|
* @deprecated property will be removed in future versions
|
||||||
|
*/
|
||||||
models?: Constructor<any>[]
|
models?: Constructor<any>[]
|
||||||
runMigrations?(
|
runMigrations?(
|
||||||
options: LoaderOptions,
|
options: LoaderOptions<any>,
|
||||||
moduleDeclaration?: InternalModuleDeclaration
|
moduleDeclaration?: InternalModuleDeclaration
|
||||||
): Promise<void>
|
): Promise<void>
|
||||||
revertMigration?(
|
revertMigration?(
|
||||||
options: LoaderOptions,
|
options: LoaderOptions<any>,
|
||||||
moduleDeclaration?: InternalModuleDeclaration
|
moduleDeclaration?: InternalModuleDeclaration
|
||||||
): Promise<void>
|
): Promise<void>
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in new issue
Block a user