diff --git a/.changeset/small-swans-hunt.md b/.changeset/small-swans-hunt.md new file mode 100644 index 0000000000..99284c6dc3 --- /dev/null +++ b/.changeset/small-swans-hunt.md @@ -0,0 +1,11 @@ +--- +"@medusajs/event-bus-local": patch +"@medusajs/event-bus-redis": patch +"@medusajs/cache-inmemory": patch +"@medusajs/stock-location": patch +"@medusajs/cache-redis": patch +"@medusajs/modules-sdk": patch +"@medusajs/inventory": patch +--- + +Export initialize method for all modules diff --git a/packages/cache-inmemory/src/index.ts b/packages/cache-inmemory/src/index.ts index 90f7328a70..92addee2d4 100644 --- a/packages/cache-inmemory/src/index.ts +++ b/packages/cache-inmemory/src/index.ts @@ -1,5 +1,4 @@ import { ModuleExports } from "@medusajs/modules-sdk" - import InMemoryCacheService from "./services/inmemory-cache" const service = InMemoryCacheService @@ -9,3 +8,5 @@ const moduleDefinition: ModuleExports = { } export default moduleDefinition +export * from "./initialize" +export * from "./types" diff --git a/packages/cache-inmemory/src/initialize/index.ts b/packages/cache-inmemory/src/initialize/index.ts new file mode 100644 index 0000000000..3e518213b1 --- /dev/null +++ b/packages/cache-inmemory/src/initialize/index.ts @@ -0,0 +1,22 @@ +import { + ExternalModuleDeclaration, + InternalModuleDeclaration, + MedusaModule, + Modules, +} from "@medusajs/modules-sdk" +import { ICacheService } from "@medusajs/types" +import { InMemoryCacheModuleOptions } from "../types" + +export const initialize = async ( + options?: InMemoryCacheModuleOptions | ExternalModuleDeclaration +): Promise => { + const serviceKey = Modules.CACHE + const loaded = await MedusaModule.bootstrap( + serviceKey, + "@medusajs/cache-inmemory", + options as InternalModuleDeclaration | ExternalModuleDeclaration, + undefined + ) + + return loaded[serviceKey] as ICacheService +} diff --git a/packages/cache-redis/src/index.ts b/packages/cache-redis/src/index.ts index 1c5dbca28d..1d4810f819 100644 --- a/packages/cache-redis/src/index.ts +++ b/packages/cache-redis/src/index.ts @@ -1,5 +1,4 @@ import { ModuleExports } from "@medusajs/modules-sdk" - import Loader from "./loaders" import { RedisCacheService } from "./services" @@ -12,3 +11,5 @@ const moduleDefinition: ModuleExports = { } export default moduleDefinition +export * from "./initialize" +export * from "./types" diff --git a/packages/cache-redis/src/initialize/index.ts b/packages/cache-redis/src/initialize/index.ts new file mode 100644 index 0000000000..c13842cb1b --- /dev/null +++ b/packages/cache-redis/src/initialize/index.ts @@ -0,0 +1,22 @@ +import { + ExternalModuleDeclaration, + InternalModuleDeclaration, + MedusaModule, + Modules, +} from "@medusajs/modules-sdk" +import { ICacheService } from "@medusajs/types" +import { RedisCacheModuleOptions } from "../types" + +export const initialize = async ( + options?: RedisCacheModuleOptions | ExternalModuleDeclaration +): Promise => { + const serviceKey = Modules.CACHE + const loaded = await MedusaModule.bootstrap( + serviceKey, + "@medusajs/cache-redis", + options as InternalModuleDeclaration | ExternalModuleDeclaration, + undefined + ) + + return loaded[serviceKey] as ICacheService +} diff --git a/packages/event-bus-local/src/index.ts b/packages/event-bus-local/src/index.ts index 394dee7a76..104d35160d 100644 --- a/packages/event-bus-local/src/index.ts +++ b/packages/event-bus-local/src/index.ts @@ -11,3 +11,4 @@ const moduleDefinition: ModuleExports = { } export default moduleDefinition +export * from "./initialize" diff --git a/packages/event-bus-local/src/initialize/index.ts b/packages/event-bus-local/src/initialize/index.ts new file mode 100644 index 0000000000..660e348691 --- /dev/null +++ b/packages/event-bus-local/src/initialize/index.ts @@ -0,0 +1,12 @@ +import { MedusaModule, Modules } from "@medusajs/modules-sdk" +import { IEventBusService } from "@medusajs/types" + +export const initialize = async (): Promise => { + const serviceKey = Modules.EVENT_BUS + const loaded = await MedusaModule.bootstrap( + serviceKey, + "@medusajs/event-bus-local" + ) + + return loaded[serviceKey] as IEventBusService +} diff --git a/packages/event-bus-redis/src/index.ts b/packages/event-bus-redis/src/index.ts index 54388999b0..5712da5fed 100644 --- a/packages/event-bus-redis/src/index.ts +++ b/packages/event-bus-redis/src/index.ts @@ -11,3 +11,5 @@ const moduleDefinition: ModuleExports = { } export default moduleDefinition +export * from "./initialize" +export * from "./types" diff --git a/packages/event-bus-redis/src/initialize/index.ts b/packages/event-bus-redis/src/initialize/index.ts new file mode 100644 index 0000000000..151a688b7e --- /dev/null +++ b/packages/event-bus-redis/src/initialize/index.ts @@ -0,0 +1,22 @@ +import { + ExternalModuleDeclaration, + InternalModuleDeclaration, + MedusaModule, + Modules, +} from "@medusajs/modules-sdk" +import { IEventBusService } from "@medusajs/types" +import { EventBusRedisModuleOptions } from "../types" + +export const initialize = async ( + options?: EventBusRedisModuleOptions | ExternalModuleDeclaration +): Promise => { + const serviceKey = Modules.EVENT_BUS + const loaded = await MedusaModule.bootstrap( + serviceKey, + "@medusajs/event-bus-redis", + options as InternalModuleDeclaration | ExternalModuleDeclaration, + undefined + ) + + return loaded[serviceKey] as IEventBusService +} diff --git a/packages/event-bus-redis/src/services/event-bus-redis.ts b/packages/event-bus-redis/src/services/event-bus-redis.ts index 4212a8e206..ba318988d0 100644 --- a/packages/event-bus-redis/src/services/event-bus-redis.ts +++ b/packages/event-bus-redis/src/services/event-bus-redis.ts @@ -1,5 +1,5 @@ import { InternalModuleDeclaration, Logger } from "@medusajs/modules-sdk" -import { ConfigModule, EmitData } from "@medusajs/types" +import { EmitData } from "@medusajs/types" import { AbstractEventBusModuleService } from "@medusajs/utils" import { BulkJobOptions, JobsOptions, Queue, Worker } from "bullmq" import { Redis } from "ioredis" @@ -7,7 +7,6 @@ import { BullJob, EmitOptions, EventBusRedisModuleOptions } from "../types" type InjectedDependencies = { logger: Logger - configModule: ConfigModule eventBusRedisConnection: Redis } @@ -17,7 +16,6 @@ type InjectedDependencies = { */ // eslint-disable-next-line max-len export default class RedisEventBusService extends AbstractEventBusModuleService { - protected readonly config_: ConfigModule protected readonly logger_: Logger protected readonly moduleOptions_: EventBusRedisModuleOptions // eslint-disable-next-line max-len @@ -26,7 +24,7 @@ export default class RedisEventBusService extends AbstractEventBusModuleService protected queue_: Queue constructor( - { configModule, logger, eventBusRedisConnection }: InjectedDependencies, + { logger, eventBusRedisConnection }: InjectedDependencies, moduleOptions: EventBusRedisModuleOptions = {}, moduleDeclaration: InternalModuleDeclaration ) { @@ -35,7 +33,6 @@ export default class RedisEventBusService extends AbstractEventBusModuleService super(...arguments) this.moduleOptions_ = moduleOptions - this.config_ = configModule this.logger_ = logger this.queue_ = new Queue(moduleOptions.queueName ?? `events-queue`, { diff --git a/packages/inventory/src/index.ts b/packages/inventory/src/index.ts index 4102dee4d8..9d646b97c4 100644 --- a/packages/inventory/src/index.ts +++ b/packages/inventory/src/index.ts @@ -22,6 +22,6 @@ const moduleDefinition: ModuleExports = { } export default moduleDefinition - export * from "./initialize" +export { revertMigration, runMigrations } from "./migrations/run-migration" export * from "./types" diff --git a/packages/inventory/src/initialize/index.ts b/packages/inventory/src/initialize/index.ts index a87e1a56ae..5c2e7a91d8 100644 --- a/packages/inventory/src/initialize/index.ts +++ b/packages/inventory/src/initialize/index.ts @@ -2,17 +2,18 @@ import { ExternalModuleDeclaration, InternalModuleDeclaration, MedusaModule, + Modules, } from "@medusajs/modules-sdk" import { IEventBusService, IInventoryService } from "@medusajs/types" import { InventoryServiceInitializeOptions } from "../types" export const initialize = async ( - options?: InventoryServiceInitializeOptions | ExternalModuleDeclaration, + options: InventoryServiceInitializeOptions | ExternalModuleDeclaration, injectedDependencies?: { eventBusService: IEventBusService } ): Promise => { - const serviceKey = "inventoryService" + const serviceKey = Modules.INVENTORY const loaded = await MedusaModule.bootstrap( serviceKey, "@medusajs/inventory", diff --git a/packages/modules-sdk/src/definitions.ts b/packages/modules-sdk/src/definitions.ts index 46136a213f..8c8303bd05 100644 --- a/packages/modules-sdk/src/definitions.ts +++ b/packages/modules-sdk/src/definitions.ts @@ -4,21 +4,29 @@ import { MODULE_SCOPE, } from "@medusajs/types" -export const MODULE_DEFINITIONS: ModuleDefinition[] = [ - { - key: "eventBus", +export enum Modules { + EVENT_BUS = "eventBus", + STOCK_LOCATION = "stockLocationService", + INVENTORY = "inventoryService", + CACHE = "cacheService", +} + +export const ModulesDefinition: { [key: string]: ModuleDefinition } = { + [Modules.EVENT_BUS]: { + key: Modules.EVENT_BUS, registrationName: "eventBusModuleService", defaultPackage: "@medusajs/event-bus-local", label: "EventBusModuleService", canOverride: true, isRequired: true, + dependencies: ["logger"], defaultModuleDeclaration: { scope: MODULE_SCOPE.INTERNAL, resources: MODULE_RESOURCE_TYPE.SHARED, }, }, - { - key: "stockLocationService", + [Modules.STOCK_LOCATION]: { + key: Modules.STOCK_LOCATION, registrationName: "stockLocationService", defaultPackage: false, label: "StockLocationService", @@ -30,8 +38,8 @@ export const MODULE_DEFINITIONS: ModuleDefinition[] = [ resources: MODULE_RESOURCE_TYPE.SHARED, }, }, - { - key: "inventoryService", + [Modules.INVENTORY]: { + key: Modules.INVENTORY, registrationName: "inventoryService", defaultPackage: false, label: "InventoryService", @@ -43,8 +51,8 @@ export const MODULE_DEFINITIONS: ModuleDefinition[] = [ resources: MODULE_RESOURCE_TYPE.SHARED, }, }, - { - key: "cacheService", + [Modules.CACHE]: { + key: Modules.CACHE, registrationName: "cacheService", defaultPackage: "@medusajs/cache-inmemory", label: "CacheService", @@ -55,6 +63,9 @@ export const MODULE_DEFINITIONS: ModuleDefinition[] = [ resources: MODULE_RESOURCE_TYPE.SHARED, }, }, -] +} + +export const MODULE_DEFINITIONS: ModuleDefinition[] = + Object.values(ModulesDefinition) export default MODULE_DEFINITIONS diff --git a/packages/modules-sdk/src/medusa-module.ts b/packages/modules-sdk/src/medusa-module.ts index 528c5c6fdc..693682aa12 100644 --- a/packages/modules-sdk/src/medusa-module.ts +++ b/packages/modules-sdk/src/medusa-module.ts @@ -50,9 +50,10 @@ export class MedusaModule { const services = {} for (const resolution of Object.values(moduleResolutions)) { + const keyName = resolution.definition.key const registrationName = resolution.definition.registrationName - services[registrationName] = container.resolve(registrationName) + services[keyName] = container.resolve(registrationName) } return services diff --git a/packages/stock-location/src/index.ts b/packages/stock-location/src/index.ts index c452dc4b81..88d1dd53d3 100644 --- a/packages/stock-location/src/index.ts +++ b/packages/stock-location/src/index.ts @@ -19,3 +19,6 @@ const moduleDefinition: ModuleExports = { } export default moduleDefinition +export * from "./initialize" +export { revertMigration, runMigrations } from "./migrations/run-migration" +export * from "./types" diff --git a/packages/stock-location/src/initialize/index.ts b/packages/stock-location/src/initialize/index.ts index 48d039ab0c..def606cfd6 100644 --- a/packages/stock-location/src/initialize/index.ts +++ b/packages/stock-location/src/initialize/index.ts @@ -2,17 +2,18 @@ import { ExternalModuleDeclaration, InternalModuleDeclaration, MedusaModule, + Modules, } from "@medusajs/modules-sdk" import { IEventBusService, IStockLocationService } from "@medusajs/types" import { StockLocationServiceInitializeOptions } from "../types" export const initialize = async ( - options?: StockLocationServiceInitializeOptions | ExternalModuleDeclaration, + options: StockLocationServiceInitializeOptions | ExternalModuleDeclaration, injectedDependencies?: { eventBusService: IEventBusService } ): Promise => { - const serviceKey = "stockLocationService" + const serviceKey = Modules.STOCK_LOCATION const loaded = await MedusaModule.bootstrap( serviceKey, "@medusajs/stock-location", diff --git a/packages/types/src/modules-sdk/index.ts b/packages/types/src/modules-sdk/index.ts index 0dc1f92fc2..81573630c6 100644 --- a/packages/types/src/modules-sdk/index.ts +++ b/packages/types/src/modules-sdk/index.ts @@ -90,10 +90,10 @@ export type ModuleExports = { models?: Constructor[] runMigrations?( options: LoaderOptions, - moduleDeclaration: InternalModuleDeclaration + moduleDeclaration?: InternalModuleDeclaration ): Promise revertMigration?( options: LoaderOptions, - moduleDeclaration: InternalModuleDeclaration + moduleDeclaration?: InternalModuleDeclaration ): Promise }