chore: use loaded module reference (#5763)

This commit is contained in:
Carlos R. L. Rodrigues
2024-01-23 08:31:02 -03:00
committed by GitHub
parent bc79edfa67
commit d85fee42ee
25 changed files with 291 additions and 191 deletions
+10
View File
@@ -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"
import { createDefaultRuleTypes } from "../../../helpers/create-default-rule-types"
jest.setTimeout(5000000)
jest.setTimeout(50000)
const adminHeaders = {
headers: {
+6 -17
View File
@@ -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"
@@ -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,
}
+6 -19
View File
@@ -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"
+18
View File
@@ -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,
}
+6 -20
View File
@@ -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"
@@ -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,
}
-2
View File
@@ -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"
+2 -2
View File
@@ -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) =>
+2
View File
@@ -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",
@@ -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 {
+72 -41
View File
@@ -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<string, LoadedModule | LoadedModule[]>
link: RemoteLink | undefined
query: (
@@ -210,6 +223,8 @@ export async function MedusaApp(
notFound?: Record<string, Record<string, string>>
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,
}))
}
+12 -4
View File
@@ -438,7 +438,8 @@ export class MedusaModule {
public static async migrateUp(
moduleKey: string,
modulePath: string,
options?: Record<string, any>
options?: Record<string, any>,
moduleExports?: ModuleExports
): Promise<void> {
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<string, any>
options?: Record<string, any>,
moduleExports?: ModuleExports
): Promise<void> {
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({
+6 -19
View File
@@ -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"
+20
View File
@@ -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,
}
+8 -19
View File
@@ -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"
+18
View File
@@ -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,
}
+8 -19
View File
@@ -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"
+19
View File
@@ -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,
}
+6 -18
View File
@@ -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"
@@ -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,
}
-2
View File
@@ -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"
@@ -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]
+9 -3
View File
@@ -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<string, unknown>
/**
* 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<any>
loaders?: ModuleLoaderFunction[]
/**
* @deprecated property will be removed in future versions
*/
migrations?: any[]
/**
* @deprecated property will be removed in future versions
*/
models?: Constructor<any>[]
runMigrations?(
options: LoaderOptions,
options: LoaderOptions<any>,
moduleDeclaration?: InternalModuleDeclaration
): Promise<void>
revertMigration?(
options: LoaderOptions,
options: LoaderOptions<any>,
moduleDeclaration?: InternalModuleDeclaration
): Promise<void>
}