diff --git a/packages/core/utils/src/modules-sdk/joiner-config-builder.ts b/packages/core/utils/src/modules-sdk/joiner-config-builder.ts index ee7b7f1275..7263cd9ae0 100644 --- a/packages/core/utils/src/modules-sdk/joiner-config-builder.ts +++ b/packages/core/utils/src/modules-sdk/joiner-config-builder.ts @@ -32,7 +32,7 @@ import { accessSync } from "fs" * then it will be inferred from the entity name of the alias args. * * @param serviceName - * @param alias + * @param alias custom aliases will be merged with the computed aliases from the provided models. Though, if a custom alias correspond to a computed alias for the same model then the custom alias will take place. Also, note that the methodSuffix will be inferred from the entity name if not provided as part of the args. * @param schema * @param models * @param linkableKeys @@ -72,11 +72,19 @@ export function defineJoinerConfig( while (true) { ++index - const fullPath = getCallerFilePath(index) + let fullPath = getCallerFilePath(index) if (!fullPath) { break } + /** + * Handle integration-tests/__tests__ path based on conventional naming + */ + if (fullPath.includes("integration-tests/__tests__")) { + const sourcePath = fullPath.split("integration-tests/__tests__")[0] + fullPath = path.join(sourcePath, "src") + } + const srcDir = fullPath.includes("dist") ? "dist" : "src" const splitPath = fullPath.split(srcDir) @@ -297,10 +305,10 @@ export function buildLinkableKeysFromMikroOrmObjects( * // { * // user: { * // id: { - * // serviceName: 'userService', - * // field: 'user', - * // linkable: 'user_id', - * // primaryKey: 'id' + * // serviceName: 'userService', // The name of the module service it originate from + * // field: 'user', // The field name of the entity, the query field is inferred from it as kebab cased singular/plural + * // linkable: 'user_id', // The linkable key + * // primaryKey: 'id' // The primary key if refers to in the original object representation, it will be used to be passed to the filters of the corresponding public service method * // }, * // toJSON() { ... } * // }, diff --git a/packages/core/utils/src/modules-sdk/module.ts b/packages/core/utils/src/modules-sdk/module.ts index 9ad7e1f362..610ea76064 100644 --- a/packages/core/utils/src/modules-sdk/module.ts +++ b/packages/core/utils/src/modules-sdk/module.ts @@ -53,7 +53,7 @@ export function Module< } else { linkable = buildLinkConfigFromLinkableKeys( serviceName, - defaultJoinerConfig.linkableKeys + service.prototype.__joinerConfig().linkableKeys ) as Linkable } } diff --git a/packages/modules/api-key/integration-tests/__tests__/api-key-module-service.spec.ts b/packages/modules/api-key/integration-tests/__tests__/api-key-module-service.spec.ts index 81a434edb6..b5d72a08bd 100644 --- a/packages/modules/api-key/integration-tests/__tests__/api-key-module-service.spec.ts +++ b/packages/modules/api-key/integration-tests/__tests__/api-key-module-service.spec.ts @@ -1,11 +1,12 @@ import { IApiKeyModuleService } from "@medusajs/types" -import { ApiKeyType, Modules } from "@medusajs/utils" +import { ApiKeyType, Module, Modules } from "@medusajs/utils" import crypto from "crypto" import { moduleIntegrationTestRunner } from "medusa-test-utils" import { createPublishableKeyFixture, createSecretKeyFixture, } from "../__fixtures__" +import { ApiKeyModuleService } from "@services" jest.setTimeout(100000) @@ -39,6 +40,25 @@ moduleIntegrationTestRunner({ jest.restoreAllMocks() }) + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.API_KEY, { + service: ApiKeyModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual(["apiKey"]) + + linkable.apiKey.toJSON = undefined + + expect(linkable.apiKey).toEqual({ + id: { + linkable: "api_key_id", + primaryKey: "id", + serviceName: "apiKey", + field: "apiKey", + }, + }) + }) + describe("API Key Module Service", () => { describe("creating a publishable API key", () => { it("should create it successfully", async function () { diff --git a/packages/modules/api-key/package.json b/packages/modules/api-key/package.json index c2cb0df681..1ad8543ab6 100644 --- a/packages/modules/api-key/package.json +++ b/packages/modules/api-key/package.json @@ -45,13 +45,10 @@ "typescript": "^5.1.6" }, "dependencies": { - "@medusajs/modules-sdk": "^1.12.11", "@medusajs/utils": "^1.11.9", "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", - "awilix": "^8.0.0", - "dotenv": "^16.4.5", - "knex": "2.4.2" + "awilix": "^8.0.0" } } diff --git a/packages/modules/api-key/src/index.ts b/packages/modules/api-key/src/index.ts index f783378890..c3e6aad498 100644 --- a/packages/modules/api-key/src/index.ts +++ b/packages/modules/api-key/src/index.ts @@ -1,5 +1,6 @@ -import { ModuleExports } from "@medusajs/types" +import { Module, Modules } from "@medusajs/utils" import { ApiKeyModuleService } from "@services" -const moduleDefinition: ModuleExports = { service: ApiKeyModuleService } -export default moduleDefinition +export default Module(Modules.API_KEY, { + service: ApiKeyModuleService, +}) diff --git a/packages/modules/api-key/src/joiner-config.ts b/packages/modules/api-key/src/joiner-config.ts deleted file mode 100644 index 6b728a63b2..0000000000 --- a/packages/modules/api-key/src/joiner-config.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { defineJoinerConfig, Modules } from "@medusajs/utils" - -export const joinerConfig = defineJoinerConfig(Modules.API_KEY) diff --git a/packages/modules/api-key/src/services/api-key-module-service.ts b/packages/modules/api-key/src/services/api-key-module-service.ts index b4a0ada6b8..452cd9f130 100644 --- a/packages/modules/api-key/src/services/api-key-module-service.ts +++ b/packages/modules/api-key/src/services/api-key-module-service.ts @@ -8,10 +8,8 @@ import { FindConfig, IApiKeyModuleService, InternalModuleDeclaration, - ModuleJoinerConfig, ModulesSdkTypes, } from "@medusajs/types" -import { joinerConfig } from "../joiner-config" import { ApiKey } from "@models" import { CreateApiKeyDTO, @@ -38,7 +36,7 @@ type InjectedDependencies = { apiKeyService: ModulesSdkTypes.IMedusaInternalService } -export default class ApiKeyModuleService +export class ApiKeyModuleService extends MedusaService<{ ApiKey: { dto: ApiKeyTypes.ApiKeyDTO } }>({ ApiKey }) @@ -57,9 +55,6 @@ export default class ApiKeyModuleService this.apiKeyService_ = apiKeyService } - __joinerConfig(): ModuleJoinerConfig { - return joinerConfig - } //@ts-expect-error createApiKeys( data: ApiKeyTypes.CreateApiKeyDTO[], diff --git a/packages/modules/api-key/src/services/index.ts b/packages/modules/api-key/src/services/index.ts index 9855bfcea7..dd663332cd 100644 --- a/packages/modules/api-key/src/services/index.ts +++ b/packages/modules/api-key/src/services/index.ts @@ -1 +1 @@ -export { default as ApiKeyModuleService } from "./api-key-module-service" +export { ApiKeyModuleService } from "./api-key-module-service" diff --git a/packages/modules/auth/integration-tests/__tests__/auth-module-service/index.spec.ts b/packages/modules/auth/integration-tests/__tests__/auth-module-service/index.spec.ts index 32f3e345f2..bccf1ff438 100644 --- a/packages/modules/auth/integration-tests/__tests__/auth-module-service/index.spec.ts +++ b/packages/modules/auth/integration-tests/__tests__/auth-module-service/index.spec.ts @@ -1,7 +1,8 @@ import { IAuthModuleService } from "@medusajs/types" import { moduleIntegrationTestRunner, SuiteOptions } from "medusa-test-utils" import { resolve } from "path" -import { Modules } from "@medusajs/utils" +import { Module, Modules } from "@medusajs/utils" +import { AuthModuleService } from "@services" let moduleOptions = { providers: [ @@ -36,6 +37,25 @@ moduleIntegrationTestRunner({ }) }) + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.AUTH, { + service: AuthModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual(["authIdentity"]) + + linkable.authIdentity.toJSON = undefined + + expect(linkable.authIdentity).toEqual({ + id: { + linkable: "auth_identity_id", + primaryKey: "id", + serviceName: "auth", + field: "authIdentity", + }, + }) + }) + it("it fails if the provider does not exist", async () => { const err = await service .authenticate("facebook", { diff --git a/packages/modules/auth/package.json b/packages/modules/auth/package.json index ff1f884806..5beade0d87 100644 --- a/packages/modules/auth/package.json +++ b/packages/modules/auth/package.json @@ -34,6 +34,7 @@ "orm:cache:clear": " MIKRO_ORM_CLI=./mikro-orm.config.dev.ts mikro-orm cache:clear" }, "devDependencies": { + "@medusajs/types": "^1.11.14", "@mikro-orm/cli": "5.9.7", "cross-env": "^5.2.1", "jest": "^29.7.0", @@ -45,15 +46,12 @@ "dependencies": { "@medusajs/auth-emailpass": "0.0.1", "@medusajs/modules-sdk": "^1.12.9", - "@medusajs/types": "^1.11.14", "@medusajs/utils": "^1.11.7", "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", "awilix": "^8.0.0", - "dotenv": "^16.4.5", "jsonwebtoken": "^9.0.2", - "knex": "2.4.2", "scrypt-kdf": "^2.0.1", "simple-oauth2": "^5.0.0" } diff --git a/packages/modules/auth/src/index.ts b/packages/modules/auth/src/index.ts index 45b01a150c..2c564ede0f 100644 --- a/packages/modules/auth/src/index.ts +++ b/packages/modules/auth/src/index.ts @@ -1,9 +1,8 @@ -import { ModuleExports } from "@medusajs/types" import { AuthModuleService } from "@services" import loadProviders from "./loaders/providers" +import { Module, Modules } from "@medusajs/utils" -const moduleDefinition: ModuleExports = { +export default Module(Modules.AUTH, { service: AuthModuleService, - loaders: [loadProviders] as any, -} -export default moduleDefinition + loaders: [loadProviders], +}) diff --git a/packages/modules/cart/integration-tests/__tests__/services/cart-module/index.spec.ts b/packages/modules/cart/integration-tests/__tests__/services/cart-module/index.spec.ts index 3161c9e9e6..5e9b7a9d6d 100644 --- a/packages/modules/cart/integration-tests/__tests__/services/cart-module/index.spec.ts +++ b/packages/modules/cart/integration-tests/__tests__/services/cart-module/index.spec.ts @@ -1,7 +1,8 @@ import { ICartModuleService } from "@medusajs/types" -import { BigNumber, Modules } from "@medusajs/utils" +import { BigNumber, Module, Modules } from "@medusajs/utils" import { CheckConstraintViolationException } from "@mikro-orm/core" import { moduleIntegrationTestRunner } from "medusa-test-utils" +import { CartModuleService } from "@services" jest.setTimeout(50000) @@ -9,6 +10,112 @@ moduleIntegrationTestRunner({ moduleName: Modules.CART, testSuite: ({ service }) => { describe("Cart Module Service", () => { + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.CART, { + service: CartModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual([ + "address", + "adjustmentLine", + "cart", + "lineItemAdjustment", + "lineItemTaxLine", + "lineItem", + "shippingMethodAdjustment", + "shippingMethodTaxLine", + "shippingMethod", + "taxLine", + ]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({ + address: { + id: { + linkable: "address_id", + primaryKey: "id", + serviceName: "cart", + field: "address", + }, + }, + adjustmentLine: { + id: { + linkable: "adjustment_line_id", + primaryKey: "id", + serviceName: "cart", + field: "adjustmentLine", + }, + }, + cart: { + id: { + linkable: "cart_id", + primaryKey: "id", + serviceName: "cart", + field: "cart", + }, + }, + lineItemAdjustment: { + id: { + linkable: "line_item_adjustment_id", + primaryKey: "id", + serviceName: "cart", + field: "lineItemAdjustment", + }, + }, + lineItemTaxLine: { + id: { + linkable: "line_item_tax_line_id", + primaryKey: "id", + serviceName: "cart", + field: "lineItemTaxLine", + }, + }, + lineItem: { + id: { + linkable: "line_item_id", + primaryKey: "id", + serviceName: "cart", + field: "lineItem", + }, + }, + shippingMethodAdjustment: { + id: { + linkable: "shipping_method_adjustment_id", + primaryKey: "id", + serviceName: "cart", + field: "shippingMethodAdjustment", + }, + }, + shippingMethodTaxLine: { + id: { + linkable: "shipping_method_tax_line_id", + primaryKey: "id", + serviceName: "cart", + field: "shippingMethodTaxLine", + }, + }, + shippingMethod: { + id: { + linkable: "shipping_method_id", + primaryKey: "id", + serviceName: "cart", + field: "shippingMethod", + }, + }, + taxLine: { + id: { + linkable: "tax_line_id", + primaryKey: "id", + serviceName: "cart", + field: "taxLine", + }, + }, + }) + }) + describe("create", () => { it("should throw an error when required params are not passed", async () => { const error = await service diff --git a/packages/modules/cart/package.json b/packages/modules/cart/package.json index feb686047e..d46b1a2b11 100644 --- a/packages/modules/cart/package.json +++ b/packages/modules/cart/package.json @@ -45,13 +45,10 @@ "typescript": "^5.1.6" }, "dependencies": { - "@medusajs/modules-sdk": "^1.12.11", "@medusajs/utils": "^1.11.9", "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", - "awilix": "^8.0.0", - "dotenv": "^16.4.5", - "knex": "2.4.2" + "awilix": "^8.0.0" } } diff --git a/packages/modules/cart/src/index.ts b/packages/modules/cart/src/index.ts index b771f94cb5..790cf78e34 100644 --- a/packages/modules/cart/src/index.ts +++ b/packages/modules/cart/src/index.ts @@ -1,10 +1,6 @@ -import { ModuleExports } from "@medusajs/types" import { CartModuleService } from "./services" +import { Module, Modules } from "@medusajs/utils" -const service = CartModuleService - -export const moduleDefinition: ModuleExports = { - service, -} - -export default moduleDefinition +export default Module(Modules.CART, { + service: CartModuleService, +}) diff --git a/packages/modules/cart/src/joiner-config.ts b/packages/modules/cart/src/joiner-config.ts deleted file mode 100644 index 4296202f2c..0000000000 --- a/packages/modules/cart/src/joiner-config.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { defineJoinerConfig, Modules } from "@medusajs/utils" - -export const joinerConfig = defineJoinerConfig(Modules.CART) diff --git a/packages/modules/cart/src/services/cart-module.ts b/packages/modules/cart/src/services/cart-module.ts index 0bfb360b35..867157424a 100644 --- a/packages/modules/cart/src/services/cart-module.ts +++ b/packages/modules/cart/src/services/cart-module.ts @@ -6,7 +6,6 @@ import { FindConfig, ICartModuleService, InternalModuleDeclaration, - ModuleJoinerConfig, ModulesSdkTypes, } from "@medusajs/types" import { @@ -39,7 +38,6 @@ import { UpdateLineItemDTO, UpdateShippingMethodTaxLineDTO, } from "@types" -import { joinerConfig } from "../joiner-config" type InjectedDependencies = { baseRepository: DAL.RepositoryService @@ -115,10 +113,6 @@ export default class CartModuleService this.lineItemTaxLineService_ = lineItemTaxLineService } - __joinerConfig(): ModuleJoinerConfig { - return joinerConfig - } - private shouldIncludeTotals(config: FindConfig): boolean { const totalFields = [ "total", diff --git a/packages/modules/currency/integration-tests/__tests__/currency-module-service.spec.ts b/packages/modules/currency/integration-tests/__tests__/currency-module-service.spec.ts index 113fa2b347..758ce506fc 100644 --- a/packages/modules/currency/integration-tests/__tests__/currency-module-service.spec.ts +++ b/packages/modules/currency/integration-tests/__tests__/currency-module-service.spec.ts @@ -1,6 +1,7 @@ import { ICurrencyModuleService } from "@medusajs/types" import { moduleIntegrationTestRunner } from "medusa-test-utils" -import { Modules } from "@medusajs/utils" +import { Module, Modules } from "@medusajs/utils" +import { CurrencyModuleService } from "@services" jest.setTimeout(100000) @@ -8,6 +9,29 @@ moduleIntegrationTestRunner({ moduleName: Modules.CURRENCY, testSuite: ({ service }) => { describe("Currency Module Service", () => { + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.CURRENCY, { + service: CurrencyModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual(["currency"]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({ + currency: { + code: { + linkable: "currency_code", + primaryKey: "code", + serviceName: "currency", + field: "currency", + }, + }, + }) + }) + describe("list", () => { it("list currencies", async () => { const currenciesResult = await service.listCurrencies( diff --git a/packages/modules/currency/package.json b/packages/modules/currency/package.json index b3eafbad19..02a628c97f 100644 --- a/packages/modules/currency/package.json +++ b/packages/modules/currency/package.json @@ -45,13 +45,10 @@ "typescript": "^5.1.6" }, "dependencies": { - "@medusajs/modules-sdk": "^1.12.11", "@medusajs/utils": "^1.11.9", "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", - "awilix": "^8.0.0", - "dotenv": "^16.4.5", - "knex": "2.4.2" + "awilix": "^8.0.0" } } diff --git a/packages/modules/currency/src/joiner-config.ts b/packages/modules/currency/src/joiner-config.ts deleted file mode 100644 index fcdb31aa42..0000000000 --- a/packages/modules/currency/src/joiner-config.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { defineJoinerConfig, Modules } from "@medusajs/utils" - -export const joinerConfig = defineJoinerConfig(Modules.CURRENCY, { - primaryKeys: ["code"], - linkableKeys: { - currency_code: "currency", - }, -}) diff --git a/packages/modules/currency/src/services/currency-module-service.ts b/packages/modules/currency/src/services/currency-module-service.ts index 45cd46b31c..00d229dc78 100644 --- a/packages/modules/currency/src/services/currency-module-service.ts +++ b/packages/modules/currency/src/services/currency-module-service.ts @@ -7,13 +7,11 @@ import { FindConfig, ICurrencyModuleService, InternalModuleDeclaration, - ModuleJoinerConfig, ModulesSdkTypes, } from "@medusajs/types" import { MedusaService } from "@medusajs/utils" import { Currency } from "@models" -import { joinerConfig } from "../joiner-config" type InjectedDependencies = { baseRepository: DAL.RepositoryService @@ -41,10 +39,6 @@ export default class CurrencyModuleService this.currencyService_ = currencyService } - __joinerConfig(): ModuleJoinerConfig { - return joinerConfig - } - // @ts-expect-error async retrieveCurrency( code: string, diff --git a/packages/modules/customer/integration-tests/__tests__/services/customer-module/index.spec.ts b/packages/modules/customer/integration-tests/__tests__/services/customer-module/index.spec.ts index 7654fb6026..df5143b62d 100644 --- a/packages/modules/customer/integration-tests/__tests__/services/customer-module/index.spec.ts +++ b/packages/modules/customer/integration-tests/__tests__/services/customer-module/index.spec.ts @@ -1,6 +1,7 @@ import { ICustomerModuleService } from "@medusajs/types" import { moduleIntegrationTestRunner } from "medusa-test-utils" -import { Modules } from "@medusajs/utils" +import { Module, Modules } from "@medusajs/utils" +import { CustomerModuleService } from "@services" jest.setTimeout(30000) @@ -8,6 +9,58 @@ moduleIntegrationTestRunner({ moduleName: Modules.CUSTOMER, testSuite: ({ service }) => { describe("Customer Module Service", () => { + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.CUSTOMER, { + service: CustomerModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual([ + "address", + "customerGroupCustomer", + "customerGroup", + "customer", + ]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({ + address: { + id: { + linkable: "address_id", + primaryKey: "id", + serviceName: "customer", + field: "address", + }, + }, + customerGroupCustomer: { + id: { + linkable: "customer_group_customer_id", + primaryKey: "id", + serviceName: "customer", + field: "customerGroupCustomer", + }, + }, + customerGroup: { + id: { + linkable: "customer_group_id", + primaryKey: "id", + serviceName: "customer", + field: "customerGroup", + }, + }, + customer: { + id: { + linkable: "customer_id", + primaryKey: "id", + serviceName: "customer", + field: "customer", + }, + }, + }) + }) + describe("create", () => { it("should create a single customer", async () => { const customerData = { diff --git a/packages/modules/customer/package.json b/packages/modules/customer/package.json index ab3003bf19..2001457f4c 100644 --- a/packages/modules/customer/package.json +++ b/packages/modules/customer/package.json @@ -50,8 +50,6 @@ "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", - "awilix": "^8.0.0", - "dotenv": "^16.4.5", - "knex": "2.4.2" + "awilix": "^8.0.0" } } diff --git a/packages/modules/customer/src/index.ts b/packages/modules/customer/src/index.ts index 4a9223e048..e742d1fa0b 100644 --- a/packages/modules/customer/src/index.ts +++ b/packages/modules/customer/src/index.ts @@ -1,7 +1,6 @@ -import { ModuleExports } from "@medusajs/types" import { CustomerModuleService } from "@services" +import { Module, Modules } from "@medusajs/utils" -const moduleDefinition: ModuleExports = { +export default Module(Modules.CUSTOMER, { service: CustomerModuleService, -} -export default moduleDefinition +}) diff --git a/packages/modules/file/integration-tests/__tests__/module.spec.ts b/packages/modules/file/integration-tests/__tests__/module.spec.ts index 4620ace720..ac5fb721c9 100644 --- a/packages/modules/file/integration-tests/__tests__/module.spec.ts +++ b/packages/modules/file/integration-tests/__tests__/module.spec.ts @@ -2,7 +2,8 @@ import { resolve } from "path" import { moduleIntegrationTestRunner } from "medusa-test-utils" import { Entity, PrimaryKey } from "@mikro-orm/core" import { IFileModuleService } from "@medusajs/types" -import { Modules } from "@medusajs/utils" +import { Module, Modules } from "@medusajs/utils" +import { FileModuleService } from "@services" jest.setTimeout(100000) @@ -31,6 +32,20 @@ moduleIntegrationTestRunner({ moduleModels: [DummyEntity], testSuite: ({ service }) => { describe("File Module Service", () => { + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.FILE, { + service: FileModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual([]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({}) + }) + it("creates and gets a file", async () => { const res = await service.createFiles({ filename: "test.jpg", diff --git a/packages/modules/file/package.json b/packages/modules/file/package.json index e2d049015a..ae00e4a4ae 100644 --- a/packages/modules/file/package.json +++ b/packages/modules/file/package.json @@ -47,14 +47,11 @@ "typescript": "^5.1.6" }, "dependencies": { - "@medusajs/modules-sdk": "^1.12.10", + "@medusajs/modules-sdk": "^1.12.11", "@medusajs/utils": "^1.11.8", "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", - "awilix": "^8.0.0", - "dotenv": "^16.4.5", - "knex": "2.4.2", - "lodash": "^4.17.21" + "awilix": "^8.0.0" } } diff --git a/packages/modules/file/src/index.ts b/packages/modules/file/src/index.ts index 997845768c..58b7666312 100644 --- a/packages/modules/file/src/index.ts +++ b/packages/modules/file/src/index.ts @@ -1,13 +1,8 @@ -import { ModuleExports } from "@medusajs/types" import { FileModuleService } from "@services" import loadProviders from "./loaders/providers" +import { Module, Modules } from "@medusajs/utils" -const loaders = [loadProviders] as any - -const service = FileModuleService -export const moduleDefinition: ModuleExports = { - service, - loaders, -} - -export default moduleDefinition +export default Module(Modules.FILE, { + service: FileModuleService, + loaders: [loadProviders], +}) diff --git a/packages/modules/fulfillment/integration-tests/__tests__/fulfillment-module-service/index.spec.ts b/packages/modules/fulfillment/integration-tests/__tests__/fulfillment-module-service/index.spec.ts index 30f517825e..e5e9d60f1c 100644 --- a/packages/modules/fulfillment/integration-tests/__tests__/fulfillment-module-service/index.spec.ts +++ b/packages/modules/fulfillment/integration-tests/__tests__/fulfillment-module-service/index.spec.ts @@ -1,11 +1,11 @@ import { ModulesDefinition } from "@medusajs/modules-sdk" import { FulfillmentSetDTO, IFulfillmentModuleService } from "@medusajs/types" -import { Modules } from "@medusajs/utils" -import { FulfillmentProviderService } from "@services" +import { Module, Modules } from "@medusajs/utils" +import { FulfillmentModuleService, FulfillmentProviderService } from "@services" import { - SuiteOptions, initModules, moduleIntegrationTestRunner, + SuiteOptions, } from "medusa-test-utils" import { resolve } from "path" import { createFullDataStructure } from "../../__fixtures__" @@ -103,6 +103,58 @@ moduleIntegrationTestRunner({ service, }: SuiteOptions) => describe("Fulfillment Module Service", () => { + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.FULFILLMENT, { + service: FulfillmentModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual([ + "fulfillment", + "fulfillmentSet", + "shippingOption", + "shippingOptionRule", + ]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({ + fulfillment: { + id: { + linkable: "fulfillment_id", + primaryKey: "id", + serviceName: "fulfillment", + field: "fulfillment", + }, + }, + fulfillmentSet: { + id: { + linkable: "fulfillment_set_id", + primaryKey: "id", + serviceName: "fulfillment", + field: "fulfillmentSet", + }, + }, + shippingOption: { + id: { + linkable: "shipping_option_id", + primaryKey: "id", + serviceName: "fulfillment", + field: "shippingOption", + }, + }, + shippingOptionRule: { + id: { + linkable: "shipping_option_rule_id", + primaryKey: "id", + serviceName: "fulfillment", + field: "shippingOptionRule", + }, + }, + }) + }) + it("should load and save all the providers on bootstrap with the correct is_enabled value", async () => { const databaseConfig = { schema: "public", diff --git a/packages/modules/fulfillment/package.json b/packages/modules/fulfillment/package.json index 1a8040a9b5..c473c4642b 100644 --- a/packages/modules/fulfillment/package.json +++ b/packages/modules/fulfillment/package.json @@ -51,8 +51,6 @@ "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", - "awilix": "^8.0.0", - "dotenv": "^16.4.5", - "knex": "2.4.2" + "awilix": "^8.0.0" } } diff --git a/packages/modules/fulfillment/src/index.ts b/packages/modules/fulfillment/src/index.ts index f747355fac..9f061b83dd 100644 --- a/packages/modules/fulfillment/src/index.ts +++ b/packages/modules/fulfillment/src/index.ts @@ -1,15 +1,11 @@ -import { ModuleExports } from "@medusajs/types" import { FulfillmentModuleService } from "@services" import loadProviders from "./loaders/providers" +import { Module, Modules } from "@medusajs/utils" -const service = FulfillmentModuleService -const loaders = [loadProviders] - -export const moduleDefinition: ModuleExports = { - service, - loaders, -} -export default moduleDefinition +export default Module(Modules.FULFILLMENT, { + service: FulfillmentModuleService, + loaders: [loadProviders], +}) // Module options types export { FulfillmentModuleOptions } from "./types" diff --git a/packages/modules/inventory-next/integration-tests/__tests__/inventory-module-service.spec.ts b/packages/modules/inventory-next/integration-tests/__tests__/inventory-module-service.spec.ts index ab8ccc694a..7af965cfdf 100644 --- a/packages/modules/inventory-next/integration-tests/__tests__/inventory-module-service.spec.ts +++ b/packages/modules/inventory-next/integration-tests/__tests__/inventory-module-service.spec.ts @@ -1,6 +1,7 @@ import { IInventoryService, InventoryItemDTO } from "@medusajs/types" import { moduleIntegrationTestRunner } from "medusa-test-utils" -import { Modules } from "@medusajs/utils" +import { Module, Modules } from "@medusajs/utils" +import { InventoryModuleService } from "../../src/services" jest.setTimeout(100000) @@ -8,6 +9,49 @@ moduleIntegrationTestRunner({ moduleName: Modules.INVENTORY, testSuite: ({ service }) => { describe("Inventory Module Service", () => { + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.INVENTORY, { + service: InventoryModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual([ + "inventoryItem", + "inventoryLevel", + "reservationItem", + ]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({ + inventoryItem: { + id: { + field: "inventoryItem", + linkable: "inventory_item_id", + primaryKey: "id", + serviceName: "inventoryService", + }, + }, + inventoryLevel: { + id: { + field: "inventoryLevel", + linkable: "inventory_level_id", + primaryKey: "id", + serviceName: "inventoryService", + }, + }, + reservationItem: { + id: { + field: "reservationItem", + linkable: "reservation_item_id", + primaryKey: "id", + serviceName: "inventoryService", + }, + }, + }) + }) + describe("create", () => { it("should create an inventory item", async () => { const data = { sku: "test-sku", origin_country: "test-country" } diff --git a/packages/modules/inventory-next/jest.config.js b/packages/modules/inventory-next/jest.config.js index 3671181174..397da4a234 100644 --- a/packages/modules/inventory-next/jest.config.js +++ b/packages/modules/inventory-next/jest.config.js @@ -1,4 +1,10 @@ module.exports = { + moduleNameMapper: { + "^@models": "/src/models", + "^@services": "/src/services", + "^@repositories": "/src/repositories", + "^@types": "/src/types", + }, transform: { "^.+\\.[jt]s$": [ "@swc/jest", diff --git a/packages/modules/inventory-next/package.json b/packages/modules/inventory-next/package.json index 8973d26d25..99f024d7e4 100644 --- a/packages/modules/inventory-next/package.json +++ b/packages/modules/inventory-next/package.json @@ -36,9 +36,7 @@ "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", - "awilix": "^8.0.0", - "dotenv": "^16.4.5", - "knex": "2.4.2" + "awilix": "^8.0.0" }, "scripts": { "watch": "tsc --build --watch", diff --git a/packages/modules/inventory-next/src/index.ts b/packages/modules/inventory-next/src/index.ts index a00d955d7d..69f27cb300 100644 --- a/packages/modules/inventory-next/src/index.ts +++ b/packages/modules/inventory-next/src/index.ts @@ -1,7 +1,6 @@ -import { ModuleExports } from "@medusajs/types" -import InventoryService from "./services/inventory-module" +import InventoryModuleService from "./services/inventory-module" +import { Module, Modules } from "@medusajs/utils" -const moduleDefinition: ModuleExports = { - service: InventoryService, -} -export default moduleDefinition +export default Module(Modules.INVENTORY, { + service: InventoryModuleService, +}) diff --git a/packages/modules/inventory-next/src/joiner-config.ts b/packages/modules/inventory-next/src/joiner-config.ts index 43636ded89..6306c9e2f1 100644 --- a/packages/modules/inventory-next/src/joiner-config.ts +++ b/packages/modules/inventory-next/src/joiner-config.ts @@ -9,13 +9,6 @@ export const joinerConfig = defineJoinerConfig(Modules.INVENTORY, { methodSuffix: "InventoryItems", }, }, - { - name: ["inventory_level", "inventory_levels"], - args: { - entity: "InventoryLevel", - methodSuffix: "InventoryLevels", - }, - }, { name: [ "reservation", diff --git a/packages/modules/notification/integration-tests/__tests__/notification-module-service/index.spec.ts b/packages/modules/notification/integration-tests/__tests__/notification-module-service/index.spec.ts index 13b6d76ae0..b73c4d958b 100644 --- a/packages/modules/notification/integration-tests/__tests__/notification-module-service/index.spec.ts +++ b/packages/modules/notification/integration-tests/__tests__/notification-module-service/index.spec.ts @@ -1,7 +1,8 @@ import { INotificationModuleService } from "@medusajs/types" -import { Modules } from "@medusajs/utils" +import { Module, Modules } from "@medusajs/utils" import { moduleIntegrationTestRunner, SuiteOptions } from "medusa-test-utils" import { resolve } from "path" +import { NotificationModuleService } from "@services" let moduleOptions = { providers: [ @@ -26,6 +27,29 @@ moduleIntegrationTestRunner({ moduleOptions, testSuite: ({ service }: SuiteOptions) => describe("Notification Module Service", () => { + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.NOTIFICATION, { + service: NotificationModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual(["notification"]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({ + notification: { + id: { + linkable: "notification_id", + primaryKey: "id", + serviceName: "notification", + field: "notification", + }, + }, + }) + }) + it("sends a notification and stores it in the database", async () => { const notification = { to: "admin@medusa.com", diff --git a/packages/modules/notification/package.json b/packages/modules/notification/package.json index f09dc82be5..64bd4c72c8 100644 --- a/packages/modules/notification/package.json +++ b/packages/modules/notification/package.json @@ -34,6 +34,7 @@ "orm:cache:clear": " MIKRO_ORM_CLI=./mikro-orm.config.dev.ts mikro-orm cache:clear" }, "devDependencies": { + "@medusajs/types": "^1.11.16", "@mikro-orm/cli": "5.9.7", "cross-env": "^5.2.1", "jest": "^29.7.0", @@ -45,13 +46,10 @@ }, "dependencies": { "@medusajs/modules-sdk": "^1.12.11", - "@medusajs/types": "^1.11.16", "@medusajs/utils": "^1.11.9", "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", - "awilix": "^8.0.0", - "dotenv": "^16.4.5", - "knex": "2.4.2" + "awilix": "^8.0.0" } } diff --git a/packages/modules/notification/src/index.ts b/packages/modules/notification/src/index.ts index e1278f1f87..4a93106ade 100644 --- a/packages/modules/notification/src/index.ts +++ b/packages/modules/notification/src/index.ts @@ -1,10 +1,8 @@ -import { ModuleExports } from "@medusajs/types" import { NotificationModuleService } from "@services" import loadProviders from "./loaders/providers" +import { Module, Modules } from "@medusajs/utils" -export const moduleDefinition: ModuleExports = { +export default Module(Modules.NOTIFICATION, { service: NotificationModuleService, loaders: [loadProviders], -} - -export default moduleDefinition +}) diff --git a/packages/modules/notification/src/joiner-config.ts b/packages/modules/notification/src/joiner-config.ts deleted file mode 100644 index ab264acb92..0000000000 --- a/packages/modules/notification/src/joiner-config.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { defineJoinerConfig, Modules } from "@medusajs/utils" - -export const joinerConfig = defineJoinerConfig(Modules.NOTIFICATION, { - models: [{ name: "Notification" }], -}) diff --git a/packages/modules/notification/src/services/notification-module-service.ts b/packages/modules/notification/src/services/notification-module-service.ts index ecf6215e4e..973f5d2e84 100644 --- a/packages/modules/notification/src/services/notification-module-service.ts +++ b/packages/modules/notification/src/services/notification-module-service.ts @@ -4,7 +4,6 @@ import { InferEntityType, INotificationModuleService, InternalModuleDeclaration, - ModuleJoinerConfig, ModulesSdkTypes, NotificationTypes, } from "@medusajs/types" @@ -17,7 +16,6 @@ import { promiseAll, } from "@medusajs/utils" import { Notification } from "@models" -import { joinerConfig } from "../joiner-config" import NotificationProviderService from "./notification-provider" type InjectedDependencies = { @@ -55,10 +53,6 @@ export default class NotificationModuleService this.notificationProviderService_ = notificationProviderService } - __joinerConfig(): ModuleJoinerConfig { - return joinerConfig - } - // @ts-expect-error createNotifications( data: NotificationTypes.CreateNotificationDTO[], diff --git a/packages/modules/order/integration-tests/__tests__/index.spec.ts b/packages/modules/order/integration-tests/__tests__/index.spec.ts new file mode 100644 index 0000000000..eda63ff131 --- /dev/null +++ b/packages/modules/order/integration-tests/__tests__/index.spec.ts @@ -0,0 +1,243 @@ +import { moduleIntegrationTestRunner } from "medusa-test-utils" +import { IOrderModuleService } from "@medusajs/types" +import { Module, Modules } from "@medusajs/utils" +import { OrderModuleService } from "@services" + +moduleIntegrationTestRunner({ + moduleName: Modules.ORDER, + testSuite: () => { + describe("Order Module Service", () => { + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.ORDER, { + service: OrderModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual([ + "address", + "adjustmentLine", + "claimItemImage", + "orderClaimItem", + "orderClaim", + "orderExchangeItem", + "orderExchange", + "lineItemAdjustment", + "lineItemTaxLine", + "lineItem", + "orderChangeAction", + "orderChange", + "orderItem", + "orderShippingMethod", + "orderSummary", + "order", + "returnItem", + "returnReason", + "return", + "shippingMethodAdjustment", + "shippingMethodTaxLine", + "shippingMethod", + "taxLine", + "transaction", + ]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({ + address: { + id: { + linkable: "address_id", + primaryKey: "id", + serviceName: "order", + field: "address", + }, + }, + adjustmentLine: { + id: { + linkable: "adjustment_line_id", + primaryKey: "id", + serviceName: "order", + field: "adjustmentLine", + }, + }, + claimItemImage: { + id: { + linkable: "claim_item_image_id", + primaryKey: "id", + serviceName: "order", + field: "claimItemImage", + }, + }, + orderClaimItem: { + id: { + linkable: "order_claim_item_id", + primaryKey: "id", + serviceName: "order", + field: "orderClaimItem", + }, + }, + orderClaim: { + id: { + linkable: "order_claim_id", + primaryKey: "id", + serviceName: "order", + field: "orderClaim", + }, + }, + orderExchangeItem: { + id: { + linkable: "order_exchange_item_id", + primaryKey: "id", + serviceName: "order", + field: "orderExchangeItem", + }, + }, + orderExchange: { + id: { + linkable: "order_exchange_id", + primaryKey: "id", + serviceName: "order", + field: "orderExchange", + }, + }, + lineItemAdjustment: { + id: { + linkable: "line_item_adjustment_id", + primaryKey: "id", + serviceName: "order", + field: "lineItemAdjustment", + }, + }, + lineItemTaxLine: { + id: { + linkable: "line_item_tax_line_id", + primaryKey: "id", + serviceName: "order", + field: "lineItemTaxLine", + }, + }, + lineItem: { + id: { + linkable: "line_item_id", + primaryKey: "id", + serviceName: "order", + field: "lineItem", + }, + }, + orderChangeAction: { + id: { + linkable: "order_change_action_id", + primaryKey: "id", + serviceName: "order", + field: "orderChangeAction", + }, + }, + orderChange: { + id: { + linkable: "order_change_id", + primaryKey: "id", + serviceName: "order", + field: "orderChange", + }, + }, + orderItem: { + id: { + linkable: "order_item_id", + primaryKey: "id", + serviceName: "order", + field: "orderItem", + }, + }, + orderShippingMethod: { + id: { + linkable: "order_shipping_method_id", + primaryKey: "id", + serviceName: "order", + field: "orderShippingMethod", + }, + }, + orderSummary: { + id: { + linkable: "order_summary_id", + primaryKey: "id", + serviceName: "order", + field: "orderSummary", + }, + }, + order: { + id: { + linkable: "order_id", + primaryKey: "id", + serviceName: "order", + field: "order", + }, + }, + returnItem: { + id: { + linkable: "return_item_id", + primaryKey: "id", + serviceName: "order", + field: "returnItem", + }, + }, + returnReason: { + id: { + linkable: "return_reason_id", + primaryKey: "id", + serviceName: "order", + field: "returnReason", + }, + }, + return: { + id: { + linkable: "return_id", + primaryKey: "id", + serviceName: "order", + field: "return", + }, + }, + shippingMethodAdjustment: { + id: { + linkable: "shipping_method_adjustment_id", + primaryKey: "id", + serviceName: "order", + field: "shippingMethodAdjustment", + }, + }, + shippingMethodTaxLine: { + id: { + linkable: "shipping_method_tax_line_id", + primaryKey: "id", + serviceName: "order", + field: "shippingMethodTaxLine", + }, + }, + shippingMethod: { + id: { + linkable: "shipping_method_id", + primaryKey: "id", + serviceName: "order", + field: "shippingMethod", + }, + }, + taxLine: { + id: { + linkable: "tax_line_id", + primaryKey: "id", + serviceName: "order", + field: "taxLine", + }, + }, + transaction: { + id: { + linkable: "transaction_id", + primaryKey: "id", + serviceName: "order", + field: "transaction", + }, + }, + }) + }) + }) + }, +}) diff --git a/packages/modules/order/package.json b/packages/modules/order/package.json index 066b614d25..9b0cbb8ffc 100644 --- a/packages/modules/order/package.json +++ b/packages/modules/order/package.json @@ -50,8 +50,6 @@ "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", - "awilix": "^8.0.0", - "dotenv": "^16.4.5", - "knex": "2.4.2" + "awilix": "^8.0.0" } } diff --git a/packages/modules/order/src/index.ts b/packages/modules/order/src/index.ts index 2953aad39e..b951a24736 100644 --- a/packages/modules/order/src/index.ts +++ b/packages/modules/order/src/index.ts @@ -1,14 +1,6 @@ -import { ModuleExports } from "@medusajs/types" import { OrderModuleService } from "@services" +import { Module, Modules } from "@medusajs/utils" -const service = OrderModuleService - -export const moduleDefinition: ModuleExports = { - service, -} - -export * from "./models" -export * from "./services" -export * from "./types" - -export default moduleDefinition +export default Module(Modules.ORDER, { + service: OrderModuleService, +}) diff --git a/packages/modules/order/src/joiner-config.ts b/packages/modules/order/src/joiner-config.ts deleted file mode 100644 index dda935f996..0000000000 --- a/packages/modules/order/src/joiner-config.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { defineJoinerConfig, Modules } from "@medusajs/utils" - -// TODO: review configuration -export const joinerConfig = defineJoinerConfig(Modules.ORDER) diff --git a/packages/modules/order/src/services/order-module-service.ts b/packages/modules/order/src/services/order-module-service.ts index a7f0839b78..78e4cf2525 100644 --- a/packages/modules/order/src/services/order-module-service.ts +++ b/packages/modules/order/src/services/order-module-service.ts @@ -5,7 +5,6 @@ import { FindConfig, InternalModuleDeclaration, IOrderModuleService, - ModuleJoinerConfig, ModulesSdkTypes, OrderDTO, OrderTypes, @@ -65,7 +64,6 @@ import { UpdateOrderLineItemTaxLineDTO, UpdateOrderShippingMethodTaxLineDTO, } from "@types" -import { joinerConfig } from "../joiner-config" import { applyChangesToOrder, ApplyOrderChangeDTO, @@ -239,10 +237,6 @@ export default class OrderModuleService< this.orderExchangeService_ = orderExchangeService } - __joinerConfig(): ModuleJoinerConfig { - return joinerConfig - } - private shouldIncludeTotals(config: FindConfig): boolean { const totalFields = [ "total", diff --git a/packages/modules/payment/integration-tests/__tests__/services/payment-module/index.spec.ts b/packages/modules/payment/integration-tests/__tests__/services/payment-module/index.spec.ts index 39a100cc1f..2a68d21470 100644 --- a/packages/modules/payment/integration-tests/__tests__/services/payment-module/index.spec.ts +++ b/packages/modules/payment/integration-tests/__tests__/services/payment-module/index.spec.ts @@ -1,11 +1,12 @@ import { IPaymentModuleService } from "@medusajs/types" -import { Modules, promiseAll } from "@medusajs/utils" +import { Module, Modules, promiseAll } from "@medusajs/utils" import { moduleIntegrationTestRunner } from "medusa-test-utils" import { createPaymentCollections, - createPaymentSessions, createPayments, + createPaymentSessions, } from "../../../__fixtures__" +import { PaymentModuleService } from "@services" jest.setTimeout(30000) @@ -13,6 +14,49 @@ moduleIntegrationTestRunner({ moduleName: Modules.PAYMENT, testSuite: ({ MikroOrmWrapper, service }) => { describe("Payment Module Service", () => { + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.PAYMENT, { + service: PaymentModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual([ + "payment", + "paymentCollection", + "paymentProvider", + ]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({ + payment: { + id: { + linkable: "payment_id", + primaryKey: "id", + serviceName: "payment", + field: "payment", + }, + }, + paymentCollection: { + id: { + linkable: "payment_collection_id", + primaryKey: "id", + serviceName: "payment", + field: "paymentCollection", + }, + }, + paymentProvider: { + id: { + linkable: "payment_provider_id", + primaryKey: "id", + serviceName: "payment", + field: "paymentProvider", + }, + }, + }) + }) + describe("Payment Flow", () => { it("complete payment flow successfully", async () => { let paymentCollection = await service.createPaymentCollections({ diff --git a/packages/modules/payment/package.json b/packages/modules/payment/package.json index c278737167..a884b55cc4 100644 --- a/packages/modules/payment/package.json +++ b/packages/modules/payment/package.json @@ -52,8 +52,6 @@ "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", "awilix": "^8.0.0", - "bignumber.js": "^9.1.2", - "dotenv": "^16.4.5", - "knex": "2.4.2" + "bignumber.js": "^9.1.2" } } diff --git a/packages/modules/payment/src/index.ts b/packages/modules/payment/src/index.ts index d009f3e36c..504dbeb5fd 100644 --- a/packages/modules/payment/src/index.ts +++ b/packages/modules/payment/src/index.ts @@ -1,13 +1,10 @@ -import { ModuleExports } from "@medusajs/types" - import { PaymentModuleService } from "@services" import loadProviders from "./loaders/providers" +import { Module, Modules } from "@medusajs/utils" -const moduleDefinition: ModuleExports = { +export default Module(Modules.PAYMENT, { service: PaymentModuleService, loaders: [loadProviders], -} - -export default moduleDefinition +}) export { PaymentModuleOptions } from "./types" diff --git a/packages/modules/pricing/integration-tests/__tests__/services/pricing-module/index.spec.ts b/packages/modules/pricing/integration-tests/__tests__/services/pricing-module/index.spec.ts new file mode 100644 index 0000000000..7ba7d182b5 --- /dev/null +++ b/packages/modules/pricing/integration-tests/__tests__/services/pricing-module/index.spec.ts @@ -0,0 +1,63 @@ +import { moduleIntegrationTestRunner } from "medusa-test-utils" +import { IPricingModuleService } from "@medusajs/types" +import { Module, Modules } from "@medusajs/utils" +import { PricingModuleService } from "@services" + +moduleIntegrationTestRunner({ + moduleName: Modules.PRICING, + testSuite: () => { + describe("PricingModule Service - Calculate Price", () => { + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.PRICING, { + service: PricingModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual([ + "priceSet", + "priceList", + "price", + "pricePreference", + ]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({ + priceSet: { + id: { + linkable: "price_set_id", + primaryKey: "id", + serviceName: "pricingService", + field: "priceSet", + }, + }, + priceList: { + id: { + linkable: "price_list_id", + primaryKey: "id", + serviceName: "pricingService", + field: "priceList", + }, + }, + price: { + id: { + linkable: "price_id", + primaryKey: "id", + serviceName: "pricingService", + field: "price", + }, + }, + pricePreference: { + id: { + linkable: "price_preference_id", + primaryKey: "id", + serviceName: "pricingService", + field: "pricePreference", + }, + }, + }) + }) + }) + }, +}) diff --git a/packages/modules/pricing/package.json b/packages/modules/pricing/package.json index 14301d691b..2b6e6107c0 100644 --- a/packages/modules/pricing/package.json +++ b/packages/modules/pricing/package.json @@ -34,6 +34,7 @@ "orm:cache:clear": " MIKRO_ORM_CLI=./mikro-orm.config.dev.ts mikro-orm cache:clear" }, "devDependencies": { + "@medusajs/types": "^1.11.16", "@mikro-orm/cli": "5.9.7", "cross-env": "^5.2.1", "jest": "^29.7.0", @@ -45,14 +46,10 @@ "typescript": "^5.1.6" }, "dependencies": { - "@medusajs/modules-sdk": "^1.12.11", - "@medusajs/types": "^1.11.16", "@medusajs/utils": "^1.11.9", "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", - "awilix": "^8.0.0", - "dotenv": "^16.4.5", - "knex": "2.4.2" + "awilix": "^8.0.0" } } diff --git a/packages/modules/pricing/src/index.ts b/packages/modules/pricing/src/index.ts index 30003a7cfb..60aebf6c77 100644 --- a/packages/modules/pricing/src/index.ts +++ b/packages/modules/pricing/src/index.ts @@ -1,12 +1,8 @@ -import { ModuleExports } from "@medusajs/types" +import { Module, Modules } from "@medusajs/utils" import { PricingModuleService } from "@services" -const service = PricingModuleService - -export const moduleDefinition: ModuleExports = { - service, -} - -export default moduleDefinition +export default Module(Modules.PRICING, { + service: PricingModuleService, +}) export * from "./types" diff --git a/packages/modules/pricing/src/joiner-config.ts b/packages/modules/pricing/src/joiner-config.ts index 09a538569c..42af561638 100644 --- a/packages/modules/pricing/src/joiner-config.ts +++ b/packages/modules/pricing/src/joiner-config.ts @@ -3,10 +3,4 @@ import { Price, PriceList, PricePreference, PriceSet } from "@models" export const joinerConfig = defineJoinerConfig(Modules.PRICING, { models: [PriceSet, PriceList, Price, PricePreference], - linkableKeys: { - price_set_id: PriceSet.name, - price_list_id: PriceList.name, - price_id: Price.name, - price_preference_id: PricePreference.name, - }, }) diff --git a/packages/modules/product/integration-tests/__tests__/product.ts b/packages/modules/product/integration-tests/__tests__/product.ts index 55269592dd..106ac93153 100644 --- a/packages/modules/product/integration-tests/__tests__/product.ts +++ b/packages/modules/product/integration-tests/__tests__/product.ts @@ -9,9 +9,13 @@ import { } from "../__fixtures__/product" import { IProductModuleService, ProductDTO } from "@medusajs/types" -import { kebabCase, Modules, ProductStatus } from "@medusajs/utils" +import { kebabCase, Module, Modules, ProductStatus } from "@medusajs/utils" import { SqlEntityManager } from "@mikro-orm/postgresql" -import { ProductCategoryService, ProductService } from "@services" +import { + ProductCategoryService, + ProductModuleService, + ProductService, +} from "@services" import { moduleIntegrationTestRunner } from "medusa-test-utils" import { categoriesData, @@ -37,6 +41,94 @@ moduleIntegrationTestRunner({ categoryService = moduleService.productCategoryService_ }) + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.PRODUCT, { + service: ProductModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual([ + "product", + "productVariant", + "productOption", + "productType", + "productImage", + "productTag", + "productCollection", + "productCategory", + ]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({ + product: { + id: { + linkable: "product_id", + primaryKey: "id", + serviceName: "productService", + field: "product", + }, + }, + productVariant: { + id: { + linkable: "product_variant_id", + primaryKey: "id", + serviceName: "productService", + field: "productVariant", + }, + }, + productOption: { + id: { + linkable: "product_option_id", + primaryKey: "id", + serviceName: "productService", + field: "productOption", + }, + }, + productType: { + id: { + linkable: "product_type_id", + primaryKey: "id", + serviceName: "productService", + field: "productType", + }, + }, + productImage: { + id: { + linkable: "product_image_id", + primaryKey: "id", + serviceName: "productService", + field: "productImage", + }, + }, + productTag: { + id: { + linkable: "product_tag_id", + primaryKey: "id", + serviceName: "productService", + field: "productTag", + }, + }, + productCollection: { + id: { + linkable: "product_collection_id", + primaryKey: "id", + serviceName: "productService", + field: "productCollection", + }, + }, + productCategory: { + id: { + linkable: "product_category_id", + primaryKey: "id", + serviceName: "productService", + field: "productCategory", + }, + }, + }) + }) + describe("Product Service", () => { let testManager: SqlEntityManager let products!: Product[] diff --git a/packages/modules/product/package.json b/packages/modules/product/package.json index ed3df54b7d..df88b6a1a0 100644 --- a/packages/modules/product/package.json +++ b/packages/modules/product/package.json @@ -47,14 +47,10 @@ "typescript": "^5.1.6" }, "dependencies": { - "@medusajs/modules-sdk": "^1.12.11", "@medusajs/utils": "^1.11.9", "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", - "awilix": "^8.0.0", - "dotenv": "^16.4.5", - "knex": "2.4.2", - "lodash": "^4.17.21" + "awilix": "^8.0.0" } } diff --git a/packages/modules/product/src/index.ts b/packages/modules/product/src/index.ts index d96d952eac..26a2ed53e7 100644 --- a/packages/modules/product/src/index.ts +++ b/packages/modules/product/src/index.ts @@ -1,7 +1,6 @@ -import { ModuleExports } from "@medusajs/types" +import { Module, Modules } from "@medusajs/utils" import { ProductModuleService } from "@services" -const moduleDefinition: ModuleExports = { +export default Module(Modules.PRODUCT, { service: ProductModuleService, -} -export default moduleDefinition +}) diff --git a/packages/modules/product/src/joiner-config.ts b/packages/modules/product/src/joiner-config.ts index a483ae0bb1..1d80bac5ce 100644 --- a/packages/modules/product/src/joiner-config.ts +++ b/packages/modules/product/src/joiner-config.ts @@ -1,56 +1,33 @@ import { defineJoinerConfig, Modules } from "@medusajs/utils" +import { + Product, + ProductCategory, + ProductCollection, + ProductOption, + ProductTag, + ProductType, + ProductVariant, +} from "@models" +import ProductImage from "./models/product-image" export const joinerConfig = defineJoinerConfig(Modules.PRODUCT, { + models: [ + Product, + ProductVariant, + ProductOption, + ProductType, + ProductImage, + ProductTag, + ProductCollection, + ProductCategory, + ], primaryKeys: ["id", "handle"], - // This module provides more alias than the default config builder alias: [ - { - name: ["product", "products"], - args: { - entity: "Product", - }, - }, { name: ["product_variant", "product_variants", "variant", "variants"], args: { entity: "ProductVariant", }, }, - { - name: ["product_option", "product_options"], - args: { - entity: "ProductOption", - }, - }, - { - name: ["product_type", "product_types"], - args: { - entity: "ProductType", - }, - }, - { - name: ["product_image", "product_images"], - args: { - entity: "ProductImage", - }, - }, - { - name: ["product_tag", "product_tags"], - args: { - entity: "ProductTag", - }, - }, - { - name: ["product_collection", "product_collections"], - args: { - entity: "ProductCollection", - }, - }, - { - name: ["product_category", "product_categories"], - args: { - entity: "ProductCategory", - }, - }, ], }) diff --git a/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/promotion.spec.ts b/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/promotion.spec.ts index 72fe589fbf..a7b95776f5 100644 --- a/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/promotion.spec.ts +++ b/packages/modules/promotion/integration-tests/__tests__/services/promotion-module/promotion.spec.ts @@ -2,6 +2,7 @@ import { IPromotionModuleService } from "@medusajs/types" import { ApplicationMethodType, CampaignBudgetType, + Module, Modules, PromotionType, } from "@medusajs/utils" @@ -12,6 +13,7 @@ import { createDefaultPromotions, createPromotions, } from "../../../__fixtures__/promotion" +import { PromotionModuleService } from "@services" jest.setTimeout(30000) @@ -26,6 +28,49 @@ moduleIntegrationTestRunner({ await createCampaigns(MikroOrmWrapper.forkManager()) }) + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.PROMOTION, { + service: PromotionModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual([ + "promotion", + "campaign", + "promotionRule", + ]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({ + promotion: { + id: { + linkable: "promotion_id", + primaryKey: "id", + serviceName: "promotion", + field: "promotion", + }, + }, + campaign: { + id: { + linkable: "campaign_id", + primaryKey: "id", + serviceName: "promotion", + field: "campaign", + }, + }, + promotionRule: { + id: { + linkable: "promotion_rule_id", + primaryKey: "id", + serviceName: "promotion", + field: "promotionRule", + }, + }, + }) + }) + describe("create", () => { it("should throw an error when required params are not passed", async () => { const error = await createDefaultPromotion(service, { diff --git a/packages/modules/promotion/package.json b/packages/modules/promotion/package.json index 390ec73e15..9fbbae5636 100644 --- a/packages/modules/promotion/package.json +++ b/packages/modules/promotion/package.json @@ -46,13 +46,10 @@ "typescript": "^5.1.6" }, "dependencies": { - "@medusajs/modules-sdk": "^1.12.11", "@medusajs/utils": "1.11.9", "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", - "awilix": "^8.0.0", - "dotenv": "^16.4.5", - "knex": "2.4.2" + "awilix": "^8.0.0" } } diff --git a/packages/modules/promotion/src/index.ts b/packages/modules/promotion/src/index.ts index 4446120144..87fdd26e94 100644 --- a/packages/modules/promotion/src/index.ts +++ b/packages/modules/promotion/src/index.ts @@ -1,7 +1,6 @@ -import { ModuleExports } from "@medusajs/types" +import { Module, Modules } from "@medusajs/utils" import { PromotionModuleService } from "@services" -const moduleDefinition: ModuleExports = { +export default Module(Modules.PROMOTION, { service: PromotionModuleService, -} -export default moduleDefinition +}) diff --git a/packages/modules/promotion/src/joiner-config.ts b/packages/modules/promotion/src/joiner-config.ts index e643dea2a6..7f71a9bdda 100644 --- a/packages/modules/promotion/src/joiner-config.ts +++ b/packages/modules/promotion/src/joiner-config.ts @@ -3,9 +3,4 @@ import { Campaign, Promotion, PromotionRule } from "@models" export const joinerConfig = defineJoinerConfig(Modules.PROMOTION, { models: [Promotion, Campaign, PromotionRule], - linkableKeys: { - promotion_id: Promotion.name, - campaign_id: Campaign.name, - promotion_rule_id: PromotionRule.name, - }, }) diff --git a/packages/modules/region/integration-tests/__tests__/region-module.spec.ts b/packages/modules/region/integration-tests/__tests__/region-module.spec.ts index 1683e3c5bd..4623c5662f 100644 --- a/packages/modules/region/integration-tests/__tests__/region-module.spec.ts +++ b/packages/modules/region/integration-tests/__tests__/region-module.spec.ts @@ -1,6 +1,7 @@ import { IRegionModuleService } from "@medusajs/types" -import { Modules } from "@medusajs/utils" +import { Module, Modules } from "@medusajs/utils" import { moduleIntegrationTestRunner } from "medusa-test-utils" +import { RegionModuleService } from "@services" jest.setTimeout(30000) @@ -8,6 +9,37 @@ moduleIntegrationTestRunner({ moduleName: Modules.REGION, testSuite: ({ service }) => { describe("Region Module Service", () => { + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.REGION, { + service: RegionModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual(["region", "country"]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({ + region: { + id: { + linkable: "region_id", + primaryKey: "id", + serviceName: "region", + field: "region", + }, + }, + country: { + iso_2: { + linkable: "country_iso_2", + primaryKey: "iso_2", + serviceName: "region", + field: "country", + }, + }, + }) + }) + it("should create countries on application start", async () => { const countries = await service.listCountries({}, { take: null }) expect(countries.length).toEqual(250) diff --git a/packages/modules/region/package.json b/packages/modules/region/package.json index f10de75caf..d6d7c6954d 100644 --- a/packages/modules/region/package.json +++ b/packages/modules/region/package.json @@ -45,13 +45,10 @@ "typescript": "^5.1.6" }, "dependencies": { - "@medusajs/modules-sdk": "^1.12.11", "@medusajs/utils": "^1.11.9", "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", - "awilix": "^8.0.0", - "dotenv": "^16.4.5", - "knex": "2.4.2" + "awilix": "^8.0.0" } } diff --git a/packages/modules/region/src/joiner-config.ts b/packages/modules/region/src/joiner-config.ts deleted file mode 100644 index c1864385f5..0000000000 --- a/packages/modules/region/src/joiner-config.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { defineJoinerConfig, Modules } from "@medusajs/utils" - -export const joinerConfig = defineJoinerConfig(Modules.REGION) diff --git a/packages/modules/region/src/services/region-module.ts b/packages/modules/region/src/services/region-module.ts index e5e4e40412..592192473c 100644 --- a/packages/modules/region/src/services/region-module.ts +++ b/packages/modules/region/src/services/region-module.ts @@ -6,7 +6,6 @@ import { InferEntityType, InternalModuleDeclaration, IRegionModuleService, - ModuleJoinerConfig, ModulesSdkTypes, RegionCountryDTO, RegionDTO, @@ -28,7 +27,6 @@ import { } from "@medusajs/utils" import { Country, Region } from "@models" import { UpdateRegionInput } from "@types" -import { joinerConfig } from "../joiner-config" type InjectedDependencies = { baseRepository: DAL.RepositoryService @@ -68,10 +66,6 @@ export default class RegionModuleService this.countryService_ = countryService } - __joinerConfig(): ModuleJoinerConfig { - return joinerConfig - } - // @ts-expect-error async createRegions( data: CreateRegionDTO[], diff --git a/packages/modules/sales-channel/integration-tests/__tests__/services/sales-channel-module.spec.ts b/packages/modules/sales-channel/integration-tests/__tests__/services/sales-channel-module.spec.ts index 953409feb3..ff8a76c4d1 100644 --- a/packages/modules/sales-channel/integration-tests/__tests__/services/sales-channel-module.spec.ts +++ b/packages/modules/sales-channel/integration-tests/__tests__/services/sales-channel-module.spec.ts @@ -1,6 +1,7 @@ import { ISalesChannelModuleService } from "@medusajs/types" import { moduleIntegrationTestRunner } from "medusa-test-utils" -import { Modules } from "@medusajs/utils" +import { Module, Modules } from "@medusajs/utils" +import { SalesChannelModuleService } from "@services" jest.setTimeout(30000) @@ -33,6 +34,29 @@ moduleIntegrationTestRunner({ await service.createSalesChannels(salesChannelData) }) + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.SALES_CHANNEL, { + service: SalesChannelModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual(["salesChannel"]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({ + salesChannel: { + id: { + linkable: "sales_channel_id", + primaryKey: "id", + serviceName: "salesChannel", + field: "salesChannel", + }, + }, + }) + }) + describe("create", () => { it("should create a SalesChannel successfully", async () => { const [created] = await service.createSalesChannels([ diff --git a/packages/modules/sales-channel/package.json b/packages/modules/sales-channel/package.json index 27f8237526..0fe94242a9 100644 --- a/packages/modules/sales-channel/package.json +++ b/packages/modules/sales-channel/package.json @@ -34,6 +34,7 @@ "orm:cache:clear": " MIKRO_ORM_CLI=./mikro-orm.config.dev.ts mikro-orm cache:clear" }, "devDependencies": { + "@medusajs/types": "^1.11.14", "@mikro-orm/cli": "5.9.7", "cross-env": "^5.2.1", "jest": "^29.7.0", @@ -44,14 +45,10 @@ "typescript": "^5.1.6" }, "dependencies": { - "@medusajs/modules-sdk": "^1.12.9", - "@medusajs/types": "^1.11.14", "@medusajs/utils": "^1.11.7", "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", - "awilix": "^8.0.0", - "dotenv": "^16.4.5", - "knex": "2.4.2" + "awilix": "^8.0.0" } } diff --git a/packages/modules/sales-channel/src/index.ts b/packages/modules/sales-channel/src/index.ts index b7a661d136..dca8ba9c81 100644 --- a/packages/modules/sales-channel/src/index.ts +++ b/packages/modules/sales-channel/src/index.ts @@ -1,7 +1,6 @@ -import { ModuleExports } from "@medusajs/types" +import { Module, Modules } from "@medusajs/utils" import { SalesChannelModuleService } from "@services" -const moduleDefinition: ModuleExports = { +export default Module(Modules.SALES_CHANNEL, { service: SalesChannelModuleService, -} -export default moduleDefinition +}) diff --git a/packages/modules/sales-channel/src/joiner-config.ts b/packages/modules/sales-channel/src/joiner-config.ts deleted file mode 100644 index eed6579ddc..0000000000 --- a/packages/modules/sales-channel/src/joiner-config.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { defineJoinerConfig, Modules } from "@medusajs/utils" - -export const joinerConfig = defineJoinerConfig(Modules.SALES_CHANNEL) diff --git a/packages/modules/sales-channel/src/services/sales-channel-module.ts b/packages/modules/sales-channel/src/services/sales-channel-module.ts index 932e1c1ffb..beeb152dc4 100644 --- a/packages/modules/sales-channel/src/services/sales-channel-module.ts +++ b/packages/modules/sales-channel/src/services/sales-channel-module.ts @@ -5,7 +5,6 @@ import { FilterableSalesChannelProps, InternalModuleDeclaration, ISalesChannelModuleService, - ModuleJoinerConfig, ModulesSdkTypes, SalesChannelDTO, UpdateSalesChannelDTO, @@ -22,7 +21,6 @@ import { import { SalesChannel } from "@models" import { UpdateSalesChanneInput } from "@types" -import { joinerConfig } from "../joiner-config" type InjectedDependencies = { baseRepository: DAL.RepositoryService @@ -48,10 +46,6 @@ export default class SalesChannelModuleService this.salesChannelService_ = salesChannelService } - __joinerConfig(): ModuleJoinerConfig { - return joinerConfig - } - // @ts-expect-error async createSalesChannels( data: CreateSalesChannelDTO[], diff --git a/packages/modules/stock-location-next/integration-tests/__tests__/stock-location-module-service.spec.ts b/packages/modules/stock-location-next/integration-tests/__tests__/stock-location-module-service.spec.ts index 104de16c60..e967767fd0 100644 --- a/packages/modules/stock-location-next/integration-tests/__tests__/stock-location-module-service.spec.ts +++ b/packages/modules/stock-location-next/integration-tests/__tests__/stock-location-module-service.spec.ts @@ -1,7 +1,8 @@ import { moduleIntegrationTestRunner } from "medusa-test-utils" import { IStockLocationService } from "@medusajs/types" -import { Modules } from "@medusajs/utils" +import { Module, Modules } from "@medusajs/utils" +import { StockLocationModuleService } from "../../src/services" jest.setTimeout(100000) @@ -9,6 +10,29 @@ moduleIntegrationTestRunner({ moduleName: Modules.STOCK_LOCATION, testSuite: ({ service }) => { describe("Stock Location Module Service", () => { + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.STOCK_LOCATION, { + service: StockLocationModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual(["stockLocation"]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({ + stockLocation: { + location_id: { + linkable: "location_id", + primaryKey: "location_id", + serviceName: "stockLocationService", + field: "stockLocation", + }, + }, + }) + }) + describe("create", () => { it("should create a stock location", async () => { const data = { name: "location" } diff --git a/packages/modules/stock-location-next/package.json b/packages/modules/stock-location-next/package.json index 156df78a42..f5fcd3f585 100644 --- a/packages/modules/stock-location-next/package.json +++ b/packages/modules/stock-location-next/package.json @@ -36,9 +36,7 @@ "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", - "awilix": "^8.0.0", - "dotenv": "^16.4.5", - "knex": "2.4.2" + "awilix": "^8.0.0" }, "scripts": { "watch": "tsc --build --watch", diff --git a/packages/modules/store/integration-tests/__tests__/store-module-service.spec.ts b/packages/modules/store/integration-tests/__tests__/store-module-service.spec.ts index 4927f04303..67fcd1b9a2 100644 --- a/packages/modules/store/integration-tests/__tests__/store-module-service.spec.ts +++ b/packages/modules/store/integration-tests/__tests__/store-module-service.spec.ts @@ -1,7 +1,8 @@ import { IStoreModuleService } from "@medusajs/types" import { moduleIntegrationTestRunner } from "medusa-test-utils" import { createStoreFixture } from "../__fixtures__" -import { Modules } from "@medusajs/utils" +import { Module, Modules } from "@medusajs/utils" +import { StoreModuleService } from "@services" jest.setTimeout(100000) @@ -9,6 +10,37 @@ moduleIntegrationTestRunner({ moduleName: Modules.STORE, testSuite: ({ service }) => { describe("Store Module Service", () => { + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.STORE, { + service: StoreModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual(["storeCurrency", "store"]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({ + storeCurrency: { + id: { + linkable: "store_currency_id", + primaryKey: "id", + serviceName: "store", + field: "storeCurrency", + }, + }, + store: { + id: { + linkable: "store_id", + primaryKey: "id", + serviceName: "store", + field: "store", + }, + }, + }) + }) + describe("creating a store", () => { it("should get created successfully", async function () { const store = await service.createStores(createStoreFixture) diff --git a/packages/modules/store/package.json b/packages/modules/store/package.json index 927a72b339..becbe969ce 100644 --- a/packages/modules/store/package.json +++ b/packages/modules/store/package.json @@ -45,13 +45,10 @@ "typescript": "^5.1.6" }, "dependencies": { - "@medusajs/modules-sdk": "^1.12.11", "@medusajs/utils": "^1.11.9", "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", - "awilix": "^8.0.0", - "dotenv": "^16.4.5", - "knex": "2.4.2" + "awilix": "^8.0.0" } } diff --git a/packages/modules/store/src/index.ts b/packages/modules/store/src/index.ts index a8b48a441f..98cd455a50 100644 --- a/packages/modules/store/src/index.ts +++ b/packages/modules/store/src/index.ts @@ -1,8 +1,6 @@ import { StoreModuleService } from "@services" -import { ModuleExports } from "@medusajs/types" +import { Module, Modules } from "@medusajs/utils" -export const moduleDefinition: ModuleExports = { +export default Module(Modules.STORE, { service: StoreModuleService, -} - -export default moduleDefinition +}) diff --git a/packages/modules/store/src/joiner-config.ts b/packages/modules/store/src/joiner-config.ts deleted file mode 100644 index 9ebf3b6852..0000000000 --- a/packages/modules/store/src/joiner-config.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { defineJoinerConfig, Modules } from "@medusajs/utils" - -export const joinerConfig = defineJoinerConfig(Modules.STORE) diff --git a/packages/modules/store/src/services/store-module-service.ts b/packages/modules/store/src/services/store-module-service.ts index 950b097895..99f0828e2d 100644 --- a/packages/modules/store/src/services/store-module-service.ts +++ b/packages/modules/store/src/services/store-module-service.ts @@ -3,7 +3,6 @@ import { DAL, InternalModuleDeclaration, IStoreModuleService, - ModuleJoinerConfig, ModulesSdkTypes, StoreTypes, } from "@medusajs/types" @@ -20,7 +19,6 @@ import { } from "@medusajs/utils" import { Store, StoreCurrency } from "@models" -import { joinerConfig } from "../joiner-config" import { UpdateStoreInput } from "@types" type InjectedDependencies = { @@ -48,10 +46,6 @@ export default class StoreModuleService this.storeService_ = storeService } - __joinerConfig(): ModuleJoinerConfig { - return joinerConfig - } - // @ts-expect-error async createStores( data: StoreTypes.CreateStoreDTO[], diff --git a/packages/modules/tax/integration-tests/__tests__/index.spec.ts b/packages/modules/tax/integration-tests/__tests__/index.spec.ts index c5df98eded..1534dc6bc5 100644 --- a/packages/modules/tax/integration-tests/__tests__/index.spec.ts +++ b/packages/modules/tax/integration-tests/__tests__/index.spec.ts @@ -1,7 +1,8 @@ import { moduleIntegrationTestRunner } from "medusa-test-utils" import { ITaxModuleService } from "@medusajs/types" import { setupTaxStructure } from "../utils/setup-tax-structure" -import { Modules } from "@medusajs/utils" +import { Module, Modules } from "@medusajs/utils" +import { TaxModuleService } from "@services" jest.setTimeout(30000) @@ -9,6 +10,58 @@ moduleIntegrationTestRunner({ moduleName: Modules.TAX, testSuite: ({ service }) => { describe("TaxModuleService", function () { + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.TAX, { + service: TaxModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual([ + "taxProvider", + "taxRateRule", + "taxRate", + "taxRegion", + ]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({ + taxProvider: { + id: { + linkable: "tax_provider_id", + primaryKey: "id", + serviceName: "tax", + field: "taxProvider", + }, + }, + taxRateRule: { + id: { + linkable: "tax_rate_rule_id", + primaryKey: "id", + serviceName: "tax", + field: "taxRateRule", + }, + }, + taxRate: { + id: { + linkable: "tax_rate_id", + primaryKey: "id", + serviceName: "tax", + field: "taxRate", + }, + }, + taxRegion: { + id: { + linkable: "tax_region_id", + primaryKey: "id", + serviceName: "tax", + field: "taxRegion", + }, + }, + }) + }) + it("should create tax rates and update them", async () => { const region = await service.createTaxRegions({ country_code: "US", diff --git a/packages/modules/tax/package.json b/packages/modules/tax/package.json index 86ac2721c5..d477c49df2 100644 --- a/packages/modules/tax/package.json +++ b/packages/modules/tax/package.json @@ -34,6 +34,7 @@ "orm:cache:clear": " MIKRO_ORM_CLI=./mikro-orm.config.dev.ts mikro-orm cache:clear" }, "devDependencies": { + "@medusajs/types": "^1.11.14", "@mikro-orm/cli": "5.9.7", "cross-env": "^5.2.1", "jest": "^29.7.0", @@ -45,13 +46,10 @@ }, "dependencies": { "@medusajs/modules-sdk": "^1.12.9", - "@medusajs/types": "^1.11.14", "@medusajs/utils": "^1.11.7", "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", - "awilix": "^8.0.0", - "dotenv": "^16.4.5", - "knex": "2.4.2" + "awilix": "^8.0.0" } } diff --git a/packages/modules/tax/src/index.ts b/packages/modules/tax/src/index.ts index 542ac55bcc..13e46b12d4 100644 --- a/packages/modules/tax/src/index.ts +++ b/packages/modules/tax/src/index.ts @@ -1,13 +1,8 @@ -import { ModuleExports } from "@medusajs/types" import { TaxModuleService } from "@services" import loadProviders from "./loaders/providers" +import { Module, Modules } from "@medusajs/utils" -const service = TaxModuleService -const loaders = [loadProviders] - -export const moduleDefinition: ModuleExports = { - service, - loaders, -} - -export default moduleDefinition +export default Module(Modules.TAX, { + service: TaxModuleService, + loaders: [loadProviders], +}) diff --git a/packages/modules/tax/src/joiner-config.ts b/packages/modules/tax/src/joiner-config.ts deleted file mode 100644 index 3cff9fa261..0000000000 --- a/packages/modules/tax/src/joiner-config.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { defineJoinerConfig, Modules } from "@medusajs/utils" - -export const joinerConfig = defineJoinerConfig(Modules.TAX) diff --git a/packages/modules/tax/src/services/tax-module-service.ts b/packages/modules/tax/src/services/tax-module-service.ts index 7c7a621404..6ccbb22a03 100644 --- a/packages/modules/tax/src/services/tax-module-service.ts +++ b/packages/modules/tax/src/services/tax-module-service.ts @@ -4,7 +4,6 @@ import { InternalModuleDeclaration, ITaxModuleService, ITaxProvider, - ModuleJoinerConfig, ModulesSdkTypes, TaxRegionDTO, TaxTypes, @@ -20,7 +19,6 @@ import { promiseAll, } from "@medusajs/utils" import { TaxProvider, TaxRate, TaxRateRule, TaxRegion } from "@models" -import { joinerConfig } from "../joiner-config" type InjectedDependencies = { baseRepository: DAL.RepositoryService @@ -75,10 +73,6 @@ export default class TaxModuleService this.taxProviderService_ = taxProviderService } - __joinerConfig(): ModuleJoinerConfig { - return joinerConfig - } - // @ts-expect-error async createTaxRates( data: TaxTypes.CreateTaxRateDTO[], diff --git a/packages/modules/user/integration-tests/__tests__/user.spec.ts b/packages/modules/user/integration-tests/__tests__/user.spec.ts index 236bd45e39..2dfe495b6a 100644 --- a/packages/modules/user/integration-tests/__tests__/user.spec.ts +++ b/packages/modules/user/integration-tests/__tests__/user.spec.ts @@ -1,9 +1,10 @@ import { IUserModuleService } from "@medusajs/types" -import { Modules, UserEvents } from "@medusajs/utils" +import { Module, Modules, UserEvents } from "@medusajs/utils" import { MockEventBusService, moduleIntegrationTestRunner, } from "medusa-test-utils" +import { UserModuleService } from "@services" jest.setTimeout(30000) @@ -27,6 +28,37 @@ moduleIntegrationTestRunner({ eventBusModuleService: new MockEventBusService(), }, testSuite: ({ service }) => { + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.USER, { + service: UserModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual(["invite", "user"]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({ + invite: { + id: { + linkable: "invite_id", + primaryKey: "id", + serviceName: "user", + field: "invite", + }, + }, + user: { + id: { + linkable: "user_id", + primaryKey: "id", + serviceName: "user", + field: "user", + }, + }, + }) + }) + describe("UserModuleService - User", () => { afterEach(async () => { jest.clearAllMocks() diff --git a/packages/modules/user/package.json b/packages/modules/user/package.json index 0ce76521dd..1c3b82008c 100644 --- a/packages/modules/user/package.json +++ b/packages/modules/user/package.json @@ -47,14 +47,11 @@ "typescript": "^5.1.6" }, "dependencies": { - "@medusajs/modules-sdk": "^1.12.10", "@medusajs/utils": "^1.11.8", "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", "awilix": "^8.0.0", - "dotenv": "^16.4.5", - "jsonwebtoken": "^9.0.2", - "knex": "2.4.2" + "jsonwebtoken": "^9.0.2" } } diff --git a/packages/modules/user/src/index.ts b/packages/modules/user/src/index.ts index 2c9628a28d..4ea7d19956 100644 --- a/packages/modules/user/src/index.ts +++ b/packages/modules/user/src/index.ts @@ -1,7 +1,6 @@ import { UserModuleService } from "@services" -import { ModuleExports } from "@medusajs/types" +import { Module, Modules } from "@medusajs/utils" -const moduleDefinition: ModuleExports = { +export default Module(Modules.USER, { service: UserModuleService, -} -export default moduleDefinition +}) diff --git a/packages/modules/user/src/joiner-config.ts b/packages/modules/user/src/joiner-config.ts deleted file mode 100644 index 5d30938137..0000000000 --- a/packages/modules/user/src/joiner-config.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { defineJoinerConfig, Modules } from "@medusajs/utils" - -export const joinerConfig = defineJoinerConfig(Modules.USER) diff --git a/packages/modules/user/src/services/user-module.ts b/packages/modules/user/src/services/user-module.ts index 5e16a30618..79c9dd7b52 100644 --- a/packages/modules/user/src/services/user-module.ts +++ b/packages/modules/user/src/services/user-module.ts @@ -3,7 +3,6 @@ import { DAL, IEventBusModuleService, InternalModuleDeclaration, - ModuleJoinerConfig, ModulesSdkTypes, UserTypes, } from "@medusajs/types" @@ -19,7 +18,6 @@ import { UserEvents, } from "@medusajs/utils" import jwt, { JwtPayload } from "jsonwebtoken" -import { joinerConfig } from "../joiner-config" import crypto from "node:crypto" import { Invite, User } from "@models" @@ -44,10 +42,6 @@ export default class UserModuleService }>({ User, Invite }) implements UserTypes.IUserModuleService { - __joinerConfig(): ModuleJoinerConfig { - return joinerConfig - } - protected baseRepository_: DAL.RepositoryService protected readonly userService_: ModulesSdkTypes.IMedusaInternalService diff --git a/packages/modules/workflow-engine-inmemory/integration-tests/__tests__/index.spec.ts b/packages/modules/workflow-engine-inmemory/integration-tests/__tests__/index.spec.ts index 98736b7482..753a152366 100644 --- a/packages/modules/workflow-engine-inmemory/integration-tests/__tests__/index.spec.ts +++ b/packages/modules/workflow-engine-inmemory/integration-tests/__tests__/index.spec.ts @@ -4,7 +4,7 @@ import { IWorkflowEngineService, RemoteQueryFunction, } from "@medusajs/types" -import { Modules, TransactionHandlerType } from "@medusajs/utils" +import { Module, Modules, TransactionHandlerType } from "@medusajs/utils" import { moduleIntegrationTestRunner } from "medusa-test-utils" import { setTimeout as setTimeoutPromise } from "timers/promises" import "../__fixtures__" @@ -20,6 +20,7 @@ import { workflowEventGroupIdStep2Mock, } from "../__fixtures__/workflow_event_group_id" import { createScheduled } from "../__fixtures__/workflow_scheduled" +import { WorkflowsModuleService } from "@services" jest.setTimeout(100000) @@ -34,6 +35,29 @@ moduleIntegrationTestRunner({ query = medusaApp.query }) + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.WORKFLOW_ENGINE, { + service: WorkflowsModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual(["workflowExecution"]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({ + workflowExecution: { + id: { + linkable: "workflow_execution_id", + primaryKey: "id", + serviceName: "workflows", + field: "workflowExecution", + }, + }, + }) + }) + it("should execute an async workflow keeping track of the event group id provided in the context", async () => { const eventGroupId = "event-group-id" diff --git a/packages/modules/workflow-engine-inmemory/package.json b/packages/modules/workflow-engine-inmemory/package.json index eb437f9b4e..4072978ece 100644 --- a/packages/modules/workflow-engine-inmemory/package.json +++ b/packages/modules/workflow-engine-inmemory/package.json @@ -45,15 +45,12 @@ "typescript": "^5.1.6" }, "dependencies": { - "@medusajs/modules-sdk": "^1.12.11", "@medusajs/utils": "^1.11.9", "@medusajs/workflows-sdk": "^0.1.6", "@mikro-orm/core": "5.9.7", "@mikro-orm/migrations": "5.9.7", "@mikro-orm/postgresql": "5.9.7", "awilix": "^8.0.0", - "cron-parser": "^4.9.0", - "dotenv": "^16.4.5", - "knex": "2.4.2" + "cron-parser": "^4.9.0" } } diff --git a/packages/modules/workflow-engine-inmemory/src/index.ts b/packages/modules/workflow-engine-inmemory/src/index.ts index acc259f684..2bc0b61c71 100644 --- a/packages/modules/workflow-engine-inmemory/src/index.ts +++ b/packages/modules/workflow-engine-inmemory/src/index.ts @@ -1,6 +1,8 @@ -import { moduleDefinition } from "./module-definition" +import { Module, Modules } from "@medusajs/utils" +import { WorkflowsModuleService } from "@services" +import { loadUtils } from "./loaders" -export default moduleDefinition - -export * from "./loaders" -export * from "./models" +export default Module(Modules.WORKFLOW_ENGINE, { + service: WorkflowsModuleService, + loaders: [loadUtils], +}) diff --git a/packages/modules/workflow-engine-inmemory/src/joiner-config.ts b/packages/modules/workflow-engine-inmemory/src/joiner-config.ts deleted file mode 100644 index 9e9a51f661..0000000000 --- a/packages/modules/workflow-engine-inmemory/src/joiner-config.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { defineJoinerConfig, Modules } from "@medusajs/utils" - -export const joinerConfig = defineJoinerConfig(Modules.WORKFLOW_ENGINE) diff --git a/packages/modules/workflow-engine-inmemory/src/loaders/index.ts b/packages/modules/workflow-engine-inmemory/src/loaders/index.ts index 3eeaeaa90c..9c4b6f8737 100644 --- a/packages/modules/workflow-engine-inmemory/src/loaders/index.ts +++ b/packages/modules/workflow-engine-inmemory/src/loaders/index.ts @@ -1 +1 @@ -export * from "./utils" +export { default as loadUtils } from "./utils" diff --git a/packages/modules/workflow-engine-inmemory/src/module-definition.ts b/packages/modules/workflow-engine-inmemory/src/module-definition.ts deleted file mode 100644 index 7aa8cdf568..0000000000 --- a/packages/modules/workflow-engine-inmemory/src/module-definition.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { ModuleExports } from "@medusajs/types" -import { WorkflowsModuleService } from "@services" -import loadUtils from "./loaders/utils" - -const service = WorkflowsModuleService -const loaders = [loadUtils] - -export const moduleDefinition: ModuleExports = { - service, - loaders, -} diff --git a/packages/modules/workflow-engine-inmemory/src/services/workflows-module.ts b/packages/modules/workflow-engine-inmemory/src/services/workflows-module.ts index 7623185a8d..f17cf7603e 100644 --- a/packages/modules/workflow-engine-inmemory/src/services/workflows-module.ts +++ b/packages/modules/workflow-engine-inmemory/src/services/workflows-module.ts @@ -2,7 +2,6 @@ import { Context, DAL, InternalModuleDeclaration, - ModuleJoinerConfig, ModulesSdkTypes, WorkflowsSdkTypes, } from "@medusajs/types" @@ -17,7 +16,6 @@ import type { } from "@medusajs/workflows-sdk" import { WorkflowExecution } from "@models" import { WorkflowOrchestratorService } from "@services" -import { joinerConfig } from "../joiner-config" type InjectedDependencies = { baseRepository: DAL.RepositoryService @@ -50,10 +48,6 @@ export class WorkflowsModuleService< this.workflowOrchestratorService_ = workflowOrchestratorService } - __joinerConfig(): ModuleJoinerConfig { - return joinerConfig - } - @InjectSharedContext() async run>( workflowIdOrWorkflow: TWorkflow, diff --git a/packages/modules/workflow-engine-redis/integration-tests/__tests__/index.spec.ts b/packages/modules/workflow-engine-redis/integration-tests/__tests__/index.spec.ts index 61d14c65b0..dddbb8e306 100644 --- a/packages/modules/workflow-engine-redis/integration-tests/__tests__/index.spec.ts +++ b/packages/modules/workflow-engine-redis/integration-tests/__tests__/index.spec.ts @@ -11,9 +11,11 @@ import { } from "@medusajs/types" import { ContainerRegistrationKeys, + createMedusaContainer, + Module, + Modules, TransactionHandlerType, TransactionStepState, - createMedusaContainer, } from "@medusajs/utils" import { asValue } from "awilix" import { knex } from "knex" @@ -21,6 +23,7 @@ import { setTimeout } from "timers/promises" import "../__fixtures__" import { createScheduled } from "../__fixtures__/workflow_scheduled" import { DB_URL, TestDatabase } from "../utils" +import { WorkflowsModuleService } from "@medusajs/workflow-engine-inmemory/dist/services" jest.setTimeout(100000) @@ -78,6 +81,29 @@ describe("Workflow Orchestrator module", function () { workflowOrcModule = modules.workflows as unknown as IWorkflowEngineService }) + it(`should export the appropriate linkable configuration`, () => { + const linkable = Module(Modules.WORKFLOW_ENGINE, { + service: WorkflowsModuleService, + }).linkable + + expect(Object.keys(linkable)).toEqual(["workflowExecution"]) + + Object.keys(linkable).forEach((key) => { + delete linkable[key].toJSON + }) + + expect(linkable).toEqual({ + workflowExecution: { + id: { + linkable: "workflow_execution_id", + primaryKey: "id", + serviceName: "workflows", + field: "workflowExecution", + }, + }, + }) + }) + describe("Testing basic workflow", function () { afterEach(afterEach_) diff --git a/packages/modules/workflow-engine-redis/src/index.ts b/packages/modules/workflow-engine-redis/src/index.ts index acc259f684..d6fc0b0466 100644 --- a/packages/modules/workflow-engine-redis/src/index.ts +++ b/packages/modules/workflow-engine-redis/src/index.ts @@ -1,6 +1,8 @@ -import { moduleDefinition } from "./module-definition" +import { Module, Modules } from "@medusajs/utils" +import { WorkflowsModuleService } from "@services" +import { loadUtils, redisConnection } from "./loaders" -export default moduleDefinition - -export * from "./loaders" -export * from "./models" +export default Module(Modules.WORKFLOW_ENGINE, { + service: WorkflowsModuleService, + loaders: [loadUtils, redisConnection] as any[], +}) diff --git a/packages/modules/workflow-engine-redis/src/joiner-config.ts b/packages/modules/workflow-engine-redis/src/joiner-config.ts deleted file mode 100644 index 9e9a51f661..0000000000 --- a/packages/modules/workflow-engine-redis/src/joiner-config.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { defineJoinerConfig, Modules } from "@medusajs/utils" - -export const joinerConfig = defineJoinerConfig(Modules.WORKFLOW_ENGINE) diff --git a/packages/modules/workflow-engine-redis/src/loaders/index.ts b/packages/modules/workflow-engine-redis/src/loaders/index.ts index 3b25a131a2..ec3aef73b1 100644 --- a/packages/modules/workflow-engine-redis/src/loaders/index.ts +++ b/packages/modules/workflow-engine-redis/src/loaders/index.ts @@ -1,2 +1,2 @@ -export * from "./redis" -export * from "./utils" +export { default as redisConnection } from "./redis" +export { default as loadUtils } from "./utils" diff --git a/packages/modules/workflow-engine-redis/src/module-definition.ts b/packages/modules/workflow-engine-redis/src/module-definition.ts deleted file mode 100644 index 1f6edab928..0000000000 --- a/packages/modules/workflow-engine-redis/src/module-definition.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { ModuleExports } from "@medusajs/types" -import { WorkflowsModuleService } from "@services" -import redisConnection from "./loaders/redis" -import loadUtils from "./loaders/utils" - -const service = WorkflowsModuleService -const loaders = [loadUtils, redisConnection] as any - -export const moduleDefinition: ModuleExports = { - service, - loaders, -} diff --git a/packages/modules/workflow-engine-redis/src/services/workflows-module.ts b/packages/modules/workflow-engine-redis/src/services/workflows-module.ts index 8fcb566fd0..86419a61f4 100644 --- a/packages/modules/workflow-engine-redis/src/services/workflows-module.ts +++ b/packages/modules/workflow-engine-redis/src/services/workflows-module.ts @@ -2,7 +2,6 @@ import { Context, DAL, InternalModuleDeclaration, - ModuleJoinerConfig, ModulesSdkTypes, WorkflowsSdkTypes, } from "@medusajs/types" @@ -17,7 +16,6 @@ import type { } from "@medusajs/workflows-sdk" import { WorkflowExecution } from "@models" import { WorkflowOrchestratorService } from "@services" -import { joinerConfig } from "../joiner-config" type InjectedDependencies = { baseRepository: DAL.RepositoryService @@ -54,10 +52,6 @@ export class WorkflowsModuleService< this.redisDisconnectHandler_ = redisDisconnectHandler } - __joinerConfig(): ModuleJoinerConfig { - return joinerConfig - } - __hooks = { onApplicationShutdown: async () => { await this.workflowOrchestratorService_.onApplicationShutdown() diff --git a/yarn.lock b/yarn.lock index 7247e8077a..ed6c258818 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4226,7 +4226,6 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/api-key@workspace:packages/modules/api-key" dependencies: - "@medusajs/modules-sdk": ^1.12.11 "@medusajs/types": ^1.11.16 "@medusajs/utils": ^1.11.9 "@mikro-orm/cli": 5.9.7 @@ -4235,9 +4234,7 @@ __metadata: "@mikro-orm/postgresql": 5.9.7 awilix: ^8.0.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 jest: ^29.7.0 - knex: 2.4.2 medusa-test-utils: ^1.1.44 rimraf: ^3.0.2 ts-node: ^10.9.1 @@ -4289,10 +4286,8 @@ __metadata: "@mikro-orm/postgresql": 5.9.7 awilix: ^8.0.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 jest: ^29.7.0 jsonwebtoken: ^9.0.2 - knex: 2.4.2 medusa-test-utils: ^1.1.42 rimraf: ^3.0.2 scrypt-kdf: ^2.0.1 @@ -4336,7 +4331,6 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/cart@workspace:packages/modules/cart" dependencies: - "@medusajs/modules-sdk": ^1.12.11 "@medusajs/types": "workspace:^" "@medusajs/utils": ^1.11.9 "@mikro-orm/cli": 5.9.7 @@ -4345,9 +4339,7 @@ __metadata: "@mikro-orm/postgresql": 5.9.7 awilix: ^8.0.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 jest: ^29.7.0 - knex: 2.4.2 medusa-test-utils: ^1.1.44 rimraf: ^3.0.2 ts-node: ^10.9.1 @@ -4380,7 +4372,6 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/currency@workspace:packages/modules/currency" dependencies: - "@medusajs/modules-sdk": ^1.12.11 "@medusajs/types": ^1.11.16 "@medusajs/utils": ^1.11.9 "@mikro-orm/cli": 5.9.7 @@ -4389,9 +4380,7 @@ __metadata: "@mikro-orm/postgresql": 5.9.7 awilix: ^8.0.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 jest: ^29.7.0 - knex: 2.4.2 medusa-test-utils: "workspace:^" rimraf: ^3.0.2 ts-node: ^10.9.1 @@ -4413,9 +4402,7 @@ __metadata: "@mikro-orm/postgresql": 5.9.7 awilix: ^8.0.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 jest: ^29.7.0 - knex: 2.4.2 medusa-test-utils: ^1.1.44 rimraf: ^3.0.2 ts-node: ^10.9.1 @@ -4544,7 +4531,7 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/file@workspace:packages/modules/file" dependencies: - "@medusajs/modules-sdk": ^1.12.10 + "@medusajs/modules-sdk": ^1.12.11 "@medusajs/types": ^1.11.15 "@medusajs/utils": ^1.11.8 "@mikro-orm/cli": 5.9.7 @@ -4553,11 +4540,8 @@ __metadata: "@mikro-orm/postgresql": 5.9.7 awilix: ^8.0.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 faker: ^5.5.3 jest: ^29.7.0 - knex: 2.4.2 - lodash: ^4.17.21 medusa-test-utils: ^1.1.43 pg-god: ^1.0.12 rimraf: ^3.0.2 @@ -4595,9 +4579,7 @@ __metadata: "@mikro-orm/postgresql": 5.9.7 awilix: ^8.0.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 jest: ^29.7.0 - knex: 2.4.2 medusa-test-utils: ^1.1.44 rimraf: ^3.0.2 ts-node: ^10.9.1 @@ -4653,9 +4635,7 @@ __metadata: "@mikro-orm/postgresql": 5.9.7 awilix: ^8.0.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 jest: ^29.7.0 - knex: 2.4.2 medusa-test-utils: ^1.1.43 rimraf: ^5.0.1 ts-node: ^10.9.1 @@ -4905,9 +4885,7 @@ __metadata: "@mikro-orm/postgresql": 5.9.7 awilix: ^8.0.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 jest: ^29.7.0 - knex: 2.4.2 medusa-test-utils: ^1.1.44 rimraf: ^3.0.2 ts-node: ^10.9.1 @@ -4953,9 +4931,7 @@ __metadata: "@mikro-orm/postgresql": 5.9.7 awilix: ^8.0.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 jest: ^29.7.0 - knex: 2.4.2 medusa-test-utils: ^1.1.44 rimraf: ^3.0.2 ts-node: ^10.9.1 @@ -4998,9 +4974,7 @@ __metadata: awilix: ^8.0.0 bignumber.js: ^9.1.2 cross-env: ^5.2.1 - dotenv: ^16.4.5 jest: ^29.7.0 - knex: 2.4.2 medusa-test-utils: ^1.1.44 rimraf: ^3.0.2 ts-jest: ^29.1.1 @@ -5014,7 +4988,6 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/pricing@workspace:packages/modules/pricing" dependencies: - "@medusajs/modules-sdk": ^1.12.11 "@medusajs/types": ^1.11.16 "@medusajs/utils": ^1.11.9 "@mikro-orm/cli": 5.9.7 @@ -5023,9 +4996,7 @@ __metadata: "@mikro-orm/postgresql": 5.9.7 awilix: ^8.0.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 jest: ^29.7.0 - knex: 2.4.2 medusa-test-utils: ^1.1.44 rimraf: ^3.0.2 ts-jest: ^29.1.1 @@ -5039,7 +5010,6 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/product@workspace:packages/modules/product" dependencies: - "@medusajs/modules-sdk": ^1.12.11 "@medusajs/types": ^1.11.16 "@medusajs/utils": ^1.11.9 "@mikro-orm/cli": 5.9.7 @@ -5048,11 +5018,8 @@ __metadata: "@mikro-orm/postgresql": 5.9.7 awilix: ^8.0.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 faker: ^5.5.3 jest: ^29.7.0 - knex: 2.4.2 - lodash: ^4.17.21 medusa-test-utils: ^1.1.44 pg-god: ^1.0.12 rimraf: ^3.0.2 @@ -5066,7 +5033,6 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/promotion@workspace:packages/modules/promotion" dependencies: - "@medusajs/modules-sdk": ^1.12.11 "@medusajs/types": ^1.11.16 "@medusajs/utils": 1.11.9 "@mikro-orm/cli": 5.9.7 @@ -5075,9 +5041,7 @@ __metadata: "@mikro-orm/postgresql": 5.9.7 awilix: ^8.0.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 jest: ^29.7.0 - knex: 2.4.2 medusa-test-utils: ^1.1.44 rimraf: ^3.0.2 ts-jest: ^29.1.1 @@ -5091,7 +5055,6 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/region@workspace:packages/modules/region" dependencies: - "@medusajs/modules-sdk": ^1.12.11 "@medusajs/types": ^1.11.16 "@medusajs/utils": ^1.11.9 "@mikro-orm/cli": 5.9.7 @@ -5100,9 +5063,7 @@ __metadata: "@mikro-orm/postgresql": 5.9.7 awilix: ^8.0.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 jest: ^29.7.0 - knex: 2.4.2 medusa-test-utils: "workspace:^" rimraf: ^3.0.2 ts-node: ^10.9.1 @@ -5115,7 +5076,6 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/sales-channel@workspace:packages/modules/sales-channel" dependencies: - "@medusajs/modules-sdk": ^1.12.9 "@medusajs/types": ^1.11.14 "@medusajs/utils": ^1.11.7 "@mikro-orm/cli": 5.9.7 @@ -5124,9 +5084,7 @@ __metadata: "@mikro-orm/postgresql": 5.9.7 awilix: ^8.0.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 jest: ^29.7.0 - knex: 2.4.2 medusa-test-utils: ^1.1.42 rimraf: ^3.0.2 ts-node: ^10.9.1 @@ -5148,9 +5106,7 @@ __metadata: "@mikro-orm/postgresql": 5.9.7 awilix: ^8.0.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 jest: ^29.7.0 - knex: 2.4.2 medusa-test-utils: ^1.1.44 rimraf: ^5.0.1 ts-node: ^10.9.1 @@ -5163,7 +5119,6 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/store@workspace:packages/modules/store" dependencies: - "@medusajs/modules-sdk": ^1.12.11 "@medusajs/types": ^1.11.16 "@medusajs/utils": ^1.11.9 "@mikro-orm/cli": 5.9.7 @@ -5172,9 +5127,7 @@ __metadata: "@mikro-orm/postgresql": 5.9.7 awilix: ^8.0.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 jest: ^29.7.0 - knex: 2.4.2 medusa-test-utils: "workspace:^" rimraf: ^3.0.2 ts-node: ^10.9.1 @@ -5196,9 +5149,7 @@ __metadata: "@mikro-orm/postgresql": 5.9.7 awilix: ^8.0.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 jest: ^29.7.0 - knex: 2.4.2 medusa-test-utils: ^1.1.42 rimraf: ^3.0.2 ts-node: ^10.9.1 @@ -5343,7 +5294,6 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/user@workspace:packages/modules/user" dependencies: - "@medusajs/modules-sdk": ^1.12.10 "@medusajs/types": ^1.11.15 "@medusajs/utils": ^1.11.8 "@mikro-orm/cli": 5.9.7 @@ -5354,10 +5304,8 @@ __metadata: "@swc/jest": ^0.2.36 awilix: ^8.0.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 jest: ^29.7.0 jsonwebtoken: ^9.0.2 - knex: 2.4.2 medusa-test-utils: ^1.1.43 rimraf: ^3.0.2 ts-node: ^10.9.1 @@ -5395,7 +5343,6 @@ __metadata: version: 0.0.0-use.local resolution: "@medusajs/workflow-engine-inmemory@workspace:packages/modules/workflow-engine-inmemory" dependencies: - "@medusajs/modules-sdk": ^1.12.11 "@medusajs/types": ^1.11.16 "@medusajs/utils": ^1.11.9 "@medusajs/workflows-sdk": ^0.1.6 @@ -5406,9 +5353,7 @@ __metadata: awilix: ^8.0.0 cron-parser: ^4.9.0 cross-env: ^5.2.1 - dotenv: ^16.4.5 jest: ^29.7.0 - knex: 2.4.2 medusa-test-utils: ^1.1.44 rimraf: ^3.0.2 ts-node: ^10.9.1