chore(): Upgrade mikro orm (#13390)

* chore(): Upgrade mikro orm

* handle 'null' value for big number props

* 6.5.2

* remove only

* fix pricing module rule value

* switch select in strategy for balances

* revert to select in strategy for order module

* fix defining DML ManyToOne

* fix define relationship

* test fix

* more fixes

* change order strategy to balanced

* change order strategy to balanced

* prevent unnecessary manager fork

* revert generated www changes

* remove unnecessary changes

* Create real-cobras-deny.md

* address feedback

---------

Co-authored-by: Oli Juhl <59018053+olivermrbl@users.noreply.github.com>
This commit is contained in:
Adrien de PerettiandOli Juhl authored and GitHub committed 2025-09-08 21:10:44 +02:00
1 parent fc4d5f0ac9
commit a095245d71
60 files changed
+863 -712

No files matched your search

+23
View File
@@ -0,0 +1,23 @@
---
"@medusajs/medusa": patch
"@medusajs/test-utils": patch
"@medusajs/api-key": patch
"@medusajs/auth": patch
"@medusajs/cart": patch
"@medusajs/currency": patch
"@medusajs/customer": patch
"@medusajs/file": patch
"@medusajs/fulfillment": patch
"@medusajs/index": patch
"@medusajs/core-flows": patch
"@medusajs/framework": patch
"@medusajs/modules-sdk": patch
"@medusajs/orchestration": patch
"@medusajs/types": patch
"@medusajs/utils": patch
"@medusajs/workflows-sdk": patch
"create-medusa-app": patch
"@medusajs/cli": patch
---
chore(): Upgrade mikro orm 6.5.2
+1 -1
View File
@@ -84,7 +84,7 @@
"resolutions": { "resolutions": {
"@redocly/cli/react": "^17.0.1", "@redocly/cli/react": "^17.0.1",
"@redocly/cli/react-dom": "^17.0.1", "@redocly/cli/react-dom": "^17.0.1",
"pg": "8.11.3", "pg": "8.16.3",
"@changesets/assemble-release-plan@^6.0.0": "patch:@changesets/assemble-release-plan@npm:^6.0.0#.yarn/patches/changesets.patch" "@changesets/assemble-release-plan@^6.0.0": "patch:@changesets/assemble-release-plan@npm:^6.0.0#.yarn/patches/changesets.patch"
} }
} }
+1 -1
View File
@@ -23,7 +23,7 @@
"node-fetch": "^3.3.1", "node-fetch": "^3.3.1",
"open": "^9.1.0", "open": "^9.1.0",
"ora": "^6.3.0", "ora": "^6.3.0",
"pg": "^8.11.3", "pg": "^8.16.3",
"slugify": "^1.6.6", "slugify": "^1.6.6",
"uuid": "^9.0.0", "uuid": "^9.0.0",
"validator": "^13.9.0", "validator": "^13.9.0",
+11 -11
View File
@@ -32,16 +32,16 @@
"author": "Sebastian Rindom", "author": "Sebastian Rindom",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.4.3", "@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"@types/yargs": "^15.0.15", "@types/yargs": "^15.0.15",
"awilix": "^8.0.1", "awilix": "^8.0.1",
"jest": "^29.7.0", "jest": "^29.7.0",
"pg": "^8.13.0", "pg": "^8.16.3",
"rimraf": "^5.0.1", "rimraf": "^5.0.1",
"typescript": "^5.6.2" "typescript": "^5.6.2"
}, },
@@ -62,7 +62,7 @@
"is-valid-path": "^0.1.1", "is-valid-path": "^0.1.1",
"meant": "^1.0.3", "meant": "^1.0.3",
"ora": "^5.4.1", "ora": "^5.4.1",
"pg": "^8.11.3", "pg": "^8.16.3",
"pg-god": "^1.0.12", "pg-god": "^1.0.12",
"prompts": "^2.4.2", "prompts": "^2.4.2",
"resolve-cwd": "^3.0.0", "resolve-cwd": "^3.0.0",
@@ -72,12 +72,12 @@
"yargs": "^15.3.1" "yargs": "^15.3.1"
}, },
"peerDependencies": { "peerDependencies": {
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.4.3", "@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1", "awilix": "^8.0.1",
"pg": "^8.13.0" "pg": "^8.16.3"
}, },
"gitHead": "81a7ff73d012fda722f6e9ef0bd9ba0232d37808" "gitHead": "81a7ff73d012fda722f6e9ef0bd9ba0232d37808"
} }
+5 -5
View File
@@ -27,16 +27,16 @@
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.4.3", "@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"awilix": "^8.0.1", "awilix": "^8.0.1",
"expect-type": "^0.20.0", "expect-type": "^0.20.0",
"jest": "^29.7.0", "jest": "^29.7.0",
"pg": "^8.13.0", "pg": "^8.16.3",
"rimraf": "^5.0.1", "rimraf": "^5.0.1",
"typescript": "^5.6.2" "typescript": "^5.6.2"
}, },
+11 -11
View File
@@ -56,10 +56,10 @@
"devDependencies": { "devDependencies": {
"@aws-sdk/client-dynamodb": "^3.218.0", "@aws-sdk/client-dynamodb": "^3.218.0",
"@medusajs/cli": "2.10.1", "@medusajs/cli": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.4.3", "@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"@types/cors": "^2.8.17", "@types/cors": "^2.8.17",
@@ -68,7 +68,7 @@
"connect-dynamodb": "^3.0.5", "connect-dynamodb": "^3.0.5",
"ioredis": "^5.4.1", "ioredis": "^5.4.1",
"jest": "^29.7.0", "jest": "^29.7.0",
"pg": "^8.13.0", "pg": "^8.16.3",
"rimraf": "^3.0.2", "rimraf": "^3.0.2",
"supertest": "^4.0.2", "supertest": "^4.0.2",
"typescript": "^5.6.2", "typescript": "^5.6.2",
@@ -103,15 +103,15 @@
"peerDependencies": { "peerDependencies": {
"@aws-sdk/client-dynamodb": "^3.218.0", "@aws-sdk/client-dynamodb": "^3.218.0",
"@medusajs/cli": "2.10.1", "@medusajs/cli": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.4.3", "@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1", "awilix": "^8.0.1",
"connect-dynamodb": "^3.0.5", "connect-dynamodb": "^3.0.5",
"ioredis": "^5.4.1", "ioredis": "^5.4.1",
"pg": "^8.13.0", "pg": "^8.16.3",
"vite": "^5.4.14" "vite": "^5.4.14"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
+10 -10
View File
@@ -31,16 +31,16 @@
"watch": "tsc --build --watch" "watch": "tsc --build --watch"
}, },
"devDependencies": { "devDependencies": {
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.4.3", "@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"awilix": "^8.0.1", "awilix": "^8.0.1",
"cross-env": "^5.2.1", "cross-env": "^5.2.1",
"jest": "^29.7.0", "jest": "^29.7.0",
"pg": "^8.13.0", "pg": "^8.16.3",
"rimraf": "^5.0.1", "rimraf": "^5.0.1",
"typescript": "^5.6.2" "typescript": "^5.6.2"
}, },
@@ -50,12 +50,12 @@
"@medusajs/utils": "2.10.1" "@medusajs/utils": "2.10.1"
}, },
"peerDependencies": { "peerDependencies": {
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.4.3", "@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1", "awilix": "^8.0.1",
"express": "^4.21.0", "express": "^4.21.0",
"pg": "^8.13.0" "pg": "^8.16.3"
} }
} }
@@ -36,7 +36,7 @@ export function toRemoteQuery<const TEntity extends string>(
pagination?: Partial<RemoteQueryInput<TEntity>["pagination"]> pagination?: Partial<RemoteQueryInput<TEntity>["pagination"]>
context?: Record<string, any> context?: Record<string, any>
withDeleted?: boolean withDeleted?: boolean
strategy?: "joined" | "select-in" strategy?: "joined" | "select-in" | "balanced"
}, },
entitiesMap: Map<string, any> entitiesMap: Map<string, any>
): RemoteQueryGraph<TEntity> { ): RemoteQueryGraph<TEntity> {
+10 -10
View File
@@ -26,15 +26,15 @@
"author": "Medusa", "author": "Medusa",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.4.3", "@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"awilix": "^8.0.1", "awilix": "^8.0.1",
"jest": "^29.7.0", "jest": "^29.7.0",
"pg": "^8.13.0", "pg": "^8.16.3",
"rimraf": "^5.0.1", "rimraf": "^5.0.1",
"typescript": "^5.6.2" "typescript": "^5.6.2"
}, },
@@ -44,13 +44,13 @@
"ulid": "^2.3.0" "ulid": "^2.3.0"
}, },
"peerDependencies": { "peerDependencies": {
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.4.3", "@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1", "awilix": "^8.0.1",
"express": "^4.21.0", "express": "^4.21.0",
"pg": "^8.13.0" "pg": "^8.16.3"
}, },
"scripts": { "scripts": {
"build": "rimraf dist && tsc --build", "build": "rimraf dist && tsc --build",
+1 -1
View File
@@ -55,7 +55,7 @@ export interface OptionsQuery<T> {
/** /**
* Load strategy (e.g for mikro orm it accept select-in or joined) * Load strategy (e.g for mikro orm it accept select-in or joined)
*/ */
strategy?: "select-in" | "joined" | (string & {}) strategy?: "select-in" | "joined" | "balanced" | (string & {})
} }
/** /**
@@ -74,7 +74,7 @@ export type RemoteQueryInput<TEntry extends string> =
/** /**
* Strategy will be send to the entry module called method * Strategy will be send to the entry module called method
*/ */
strategy?: "joined" | "select-in" strategy?: "joined" | "select-in" | "balanced"
} }
: { : {
/** /**
@@ -119,7 +119,7 @@ export type RemoteQueryInput<TEntry extends string> =
/** /**
* Strategy will be send to the entry module called method * Strategy will be send to the entry module called method
*/ */
strategy?: "joined" | "select-in" strategy?: "joined" | "select-in" | "balanced"
} }
export type RemoteQueryGraph<TEntry extends string> = { export type RemoteQueryGraph<TEntry extends string> = {
+10 -10
View File
@@ -26,10 +26,10 @@
"author": "Medusa", "author": "Medusa",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.4.3", "@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"@types/express": "^4.17.21", "@types/express": "^4.17.21",
@@ -37,7 +37,7 @@
"expect-type": "^0.20.0", "expect-type": "^0.20.0",
"express": "^4.21.0", "express": "^4.21.0",
"jest": "^29.7.0", "jest": "^29.7.0",
"pg": "^8.13.0", "pg": "^8.16.3",
"pg-god": "^1.0.12", "pg-god": "^1.0.12",
"rimraf": "^5.0.1", "rimraf": "^5.0.1",
"typescript": "^5.6.2" "typescript": "^5.6.2"
@@ -60,13 +60,13 @@
"zod": "3.25.76" "zod": "3.25.76"
}, },
"peerDependencies": { "peerDependencies": {
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.4.3", "@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1", "awilix": "^8.0.1",
"express": "^4.21.0", "express": "^4.21.0",
"pg": "^8.13.0" "pg": "^8.16.3"
}, },
"scripts": { "scripts": {
"build": "rimraf dist && tsc --build", "build": "rimraf dist && tsc --build",
@@ -1,6 +1,6 @@
import { BigNumberInput } from "@medusajs/types" import { BigNumberInput } from "@medusajs/types"
import { Property } from "@mikro-orm/core" import { EntityProperty, Platform, Property, Type } from "@mikro-orm/core"
import { isDefined, isPresent, trimZeros } from "../../common" import { isDefined, isObject, isPresent, trimZeros } from "../../common"
import { BigNumber } from "../../totals/big-number" import { BigNumber } from "../../totals/big-number"
export function MikroOrmBigNumberProperty( export function MikroOrmBigNumberProperty(
@@ -24,6 +24,11 @@ export function MikroOrmBigNumberProperty(
return value return value
}, },
set(value: BigNumberInput) { set(value: BigNumberInput) {
// convert 'null' to null
if (value === "null") {
value = null as unknown as BigNumberInput
}
if (options?.nullable && !isPresent(value)) { if (options?.nullable && !isPresent(value)) {
this.__helper.__data[columnName] = null this.__helper.__data[columnName] = null
this.__helper.__data[rawColumnName] = null this.__helper.__data[rawColumnName] = null
@@ -89,7 +94,7 @@ export function MikroOrmBigNumberProperty(
}) })
Property({ Property({
type: "any", type: BigNumberNumeric,
columnType: "numeric", columnType: "numeric",
trackChanges: false, trackChanges: false,
runtimeType: "any", runtimeType: "any",
@@ -97,3 +102,43 @@ export function MikroOrmBigNumberProperty(
})(target, columnName) })(target, columnName)
} }
} }
class BigNumberNumeric extends Type<string | number, string> {
constructor(public mode?: "number" | "string") {
super()
}
override convertToJSValue(value: string): number | string {
if ((this.mode ?? this.prop?.runtimeType) === "number") {
return +value
}
if (isObject(value)) {
return value // Special case for BigNumberRawValue because the setter will manage the dispatch automatically at a later stage
}
return String(value)
}
override compareValues(a: string, b: string): boolean {
return this.format(a) === this.format(b)
}
private format(val: string | number) {
/* istanbul ignore next */
if (this.prop?.scale == null) {
return +val
}
const base = Math.pow(10, this.prop.scale)
return Math.round((+val + Number.EPSILON) * base) / base
}
override getColumnType(prop: EntityProperty, platform: Platform) {
return platform.getDecimalTypeDeclarationSQL(prop)
}
override compareAsType(): string {
return this.mode ?? this.prop?.runtimeType ?? "string"
}
}
@@ -64,11 +64,9 @@ export class MikroOrmBase {
transaction?: TManager transaction?: TManager
} = {} } = {}
): Promise<any> { ): Promise<any> {
const freshManager = this.getFreshManager this.manager_.global = true // this prevent mikro orm from synchronising the transaction manager entity map back to the manager. Also, it will save us from always forking the manager for each transaction while the transacation manager will fork it again for transaction purpose
? this.getFreshManager()
: this.manager_
return await transactionWrapper(freshManager, task, options).catch( return await transactionWrapper(this.manager_, task, options).catch(
dbErrorMapper dbErrorMapper
) )
} }
@@ -467,11 +465,7 @@ export function mikroOrmBaseRepositoryFactory<const T extends object>(
if (!("strategy" in findOptions_.options)) { if (!("strategy" in findOptions_.options)) {
if (findOptions_.options.limit != null || findOptions_.options.offset) { if (findOptions_.options.limit != null || findOptions_.options.offset) {
Object.assign(findOptions_.options, { Object.assign(findOptions_.options, {
strategy: LoadStrategy.SELECT_IN, strategy: LoadStrategy.BALANCED,
})
} else {
Object.assign(findOptions_.options, {
strategy: LoadStrategy.JOINED,
}) })
} }
} }
@@ -162,7 +162,7 @@ describe("Entity builder", () => {
kind: "scalar", kind: "scalar",
setter: true, setter: true,
trackChanges: false, trackChanges: false,
type: "any", type: expect.any(Function),
runtimeType: "any", runtimeType: "any",
}, },
raw_spend_limit: { raw_spend_limit: {
@@ -306,7 +306,7 @@ describe("Entity builder", () => {
kind: "scalar", kind: "scalar",
setter: true, setter: true,
trackChanges: false, trackChanges: false,
type: "any", type: expect.any(Function),
runtimeType: "any", runtimeType: "any",
}, },
raw_spend_limit: { raw_spend_limit: {
@@ -441,7 +441,7 @@ describe("Entity builder", () => {
kind: "scalar", kind: "scalar",
setter: true, setter: true,
trackChanges: false, trackChanges: false,
type: "any", type: expect.any(Function),
runtimeType: "any", runtimeType: "any",
}, },
raw_spend_limit: { raw_spend_limit: {
@@ -555,7 +555,7 @@ describe("Entity builder", () => {
kind: "scalar", kind: "scalar",
setter: true, setter: true,
trackChanges: false, trackChanges: false,
type: "any", type: expect.any(Function),
runtimeType: "any", runtimeType: "any",
}, },
raw_spend_limit: { raw_spend_limit: {
@@ -701,7 +701,7 @@ describe("Entity builder", () => {
kind: "scalar", kind: "scalar",
setter: true, setter: true,
trackChanges: false, trackChanges: false,
type: "any", type: expect.any(Function),
runtimeType: "any", runtimeType: "any",
}, },
raw_spend_limit: { raw_spend_limit: {
@@ -858,7 +858,7 @@ describe("Entity builder", () => {
kind: "scalar", kind: "scalar",
setter: true, setter: true,
trackChanges: false, trackChanges: false,
type: "any", type: expect.any(Function),
runtimeType: "any", runtimeType: "any",
}, },
created_at: { created_at: {
@@ -3916,6 +3916,7 @@ describe("Entity builder", () => {
type: "string", type: "string",
}, },
group: { group: {
defaultRaw: "",
entity: "Group", entity: "Group",
fieldName: "group_id", fieldName: "group_id",
name: "group", name: "group",
@@ -4536,6 +4537,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
user: { user: {
defaultRaw: "",
entity: "User", entity: "User",
fieldName: "user_id", fieldName: "user_id",
name: "user", name: "user",
@@ -5147,6 +5149,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
user: { user: {
defaultRaw: "",
name: "user", name: "user",
kind: "m:1", kind: "m:1",
entity: "User", entity: "User",
@@ -5336,6 +5339,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
user: { user: {
defaultRaw: "",
name: "user", name: "user",
kind: "m:1", kind: "m:1",
fieldName: "user_id", fieldName: "user_id",
@@ -5884,6 +5888,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
parent: { parent: {
defaultRaw: "",
name: "parent", name: "parent",
fieldName: "parent_id", fieldName: "parent_id",
kind: "m:1", kind: "m:1",
@@ -6135,6 +6140,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
teams: { teams: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "teams", name: "teams",
entity: "Team", entity: "Team",
@@ -6204,6 +6210,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
users: { users: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "users", name: "users",
inversedBy: "teams", inversedBy: "teams",
@@ -6316,6 +6323,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
teams: { teams: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "teams", name: "teams",
entity: "Team", entity: "Team",
@@ -6385,6 +6393,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
users: { users: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "users", name: "users",
entity: "User", entity: "User",
@@ -6611,6 +6620,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
teams: { teams: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "teams", name: "teams",
entity: "Team", entity: "Team",
@@ -6680,6 +6690,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
users: { users: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "users", name: "users",
entity: "User", entity: "User",
@@ -6792,6 +6803,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
teams: { teams: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "teams", name: "teams",
entity: "Team", entity: "Team",
@@ -6861,6 +6873,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
users: { users: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "users", name: "users",
entity: "User", entity: "User",
@@ -6991,6 +7004,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
teams: { teams: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "teams", name: "teams",
entity: "Team", entity: "Team",
@@ -6999,6 +7013,7 @@ describe("Entity builder", () => {
mappedBy: "users", mappedBy: "users",
}, },
activeTeams: { activeTeams: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "activeTeams", name: "activeTeams",
entity: "Team", entity: "Team",
@@ -7068,6 +7083,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
users: { users: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "users", name: "users",
entity: "User", entity: "User",
@@ -7076,6 +7092,7 @@ describe("Entity builder", () => {
inversedBy: "teams", inversedBy: "teams",
}, },
activeTeamsUsers: { activeTeamsUsers: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "activeTeamsUsers", name: "activeTeamsUsers",
entity: "User", entity: "User",
@@ -7191,6 +7208,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
teams: { teams: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "teams", name: "teams",
entity: "Team", entity: "Team",
@@ -7261,6 +7279,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
users: { users: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "users", name: "users",
entity: "User", entity: "User",
@@ -7349,6 +7368,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
teams: { teams: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "teams", name: "teams",
entity: "TeamSquad", entity: "TeamSquad",
@@ -7418,6 +7438,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
users: { users: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "users", name: "users",
entity: "RandomUser", entity: "RandomUser",
@@ -7533,6 +7554,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
teams: { teams: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "teams", name: "teams",
entity: "Team", entity: "Team",
@@ -7602,6 +7624,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
users: { users: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "users", name: "users",
owner: false, owner: false,
@@ -7811,6 +7834,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
users: { users: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "users", name: "users",
entity: "User", entity: "User",
@@ -7880,6 +7904,7 @@ describe("Entity builder", () => {
setter: false, setter: false,
}, },
teams: { teams: {
defaultRaw: "",
kind: "m:n", kind: "m:n",
name: "teams", name: "teams",
entity: "Team", entity: "Team",
@@ -6,7 +6,7 @@ import type {
Infer, Infer,
PropertyType, PropertyType,
} from "@medusajs/types" } from "@medusajs/types"
import { Entity, Filter } from "@mikro-orm/core" import { Entity, Filter, MetadataStorage } from "@mikro-orm/core"
import { import {
mikroOrmFreeTextSearchFilterOptionsFactory, mikroOrmFreeTextSearchFilterOptionsFactory,
@@ -116,12 +116,16 @@ function createMikrORMEntity() {
Filter(mikroOrmFreeTextSearchFilterOptionsFactory(modelName))( Filter(mikroOrmFreeTextSearchFilterOptionsFactory(modelName))(
MikroORMEntity MikroORMEntity
) )
const RegisteredEntity = Entity({ tableName })(
Filter(mikroOrmSoftDeletableFilterOptions)(MikroORMEntity)
) as Infer<T>
ENTITIES[modelName] = RegisteredEntity Entity({ tableName })(
return RegisteredEntity Filter(mikroOrmSoftDeletableFilterOptions)(MikroORMEntity)
) as any
const entityMetadata =
MetadataStorage.getMetadataFromDecorator(MikroORMEntity)
ENTITIES[modelName] = entityMetadata.class as Constructor<any>
return entityMetadata.class as Infer<T>
} }
/** /**
@@ -294,6 +294,7 @@ export function defineHasManyRelationship(
} }
OneToMany(options)(MikroORMEntity.prototype, relationship.name) OneToMany(options)(MikroORMEntity.prototype, relationship.name)
// MikroORMEntity.prototype[relationship.name] = new Collection(MikroORMEntity)
} }
/** /**
@@ -466,6 +467,7 @@ export function defineBelongsToRelationship(
ManyToOne({ ManyToOne({
entity: relatedModelName, entity: relatedModelName,
defaultRaw: "", // This is a workaround since we are hacking mikro orm default behavior. The default value here is [Object object] which pass the check here and in turns is returned as a returning field -> @mikro-orm/knex/AbstractSqlDriver.js:462
fieldName: foreignKeyName, fieldName: foreignKeyName,
persist: false, persist: false,
nullable: relationship.nullable, nullable: relationship.nullable,
@@ -741,6 +743,7 @@ export function defineManyToManyRelationship(
const manytoManyOptions = { const manytoManyOptions = {
owner: isOwner, owner: isOwner,
entity: relatedModelName, entity: relatedModelName,
defaultRaw: "", // This is a workaround since we are hacking mikro orm default behavior. The default value here is [Object object] which pass the check here and in turns is returned as a returning field -> @mikro-orm/knex/AbstractSqlDriver.js:462
...(pivotTableName ...(pivotTableName
? { ? {
pivotTable: pgSchema pivotTable: pgSchema
@@ -16,6 +16,7 @@ describe("Internal Module Service Factory", () => {
[modelRepositoryName]: { [modelRepositoryName]: {
transaction: (task) => task(), transaction: (task) => task(),
getFreshManager: jest.fn().mockReturnThis(), getFreshManager: jest.fn().mockReturnThis(),
getActiveManager: jest.fn().mockReturnThis(),
find: jest.fn(), find: jest.fn(),
findAndCount: jest.fn(), findAndCount: jest.fn(),
create: jest.fn(), create: jest.fn(),
@@ -28,6 +29,7 @@ describe("Internal Module Service Factory", () => {
[`composite${Model.name}Repository`]: { [`composite${Model.name}Repository`]: {
transaction: (task) => task(), transaction: (task) => task(),
getFreshManager: jest.fn().mockReturnThis(), getFreshManager: jest.fn().mockReturnThis(),
getActiveManager: jest.fn().mockReturnThis(),
find: jest.fn(), find: jest.fn(),
findAndCount: jest.fn(), findAndCount: jest.fn(),
create: jest.fn(), create: jest.fn(),
@@ -7,6 +7,7 @@ const baseRepoMock = {
serialize: jest.fn().mockImplementation((item) => item), serialize: jest.fn().mockImplementation((item) => item),
transaction: (task) => task("transactionManager"), transaction: (task) => task("transactionManager"),
getFreshManager: jest.fn().mockReturnThis(), getFreshManager: jest.fn().mockReturnThis(),
getActiveManager: jest.fn().mockReturnThis(),
} }
const defaultContext = { const defaultContext = {
@@ -52,7 +52,8 @@ export function InjectManager(managerProperty?: string): MethodDecorator {
} }
copiedContext.manager = copiedContext.manager =
originalContext.manager ?? resourceWithManager.getFreshManager() originalContext.manager ??
resourceWithManager.getActiveManager(originalContext)
if (originalContext?.transactionManager) { if (originalContext?.transactionManager) {
copiedContext.transactionManager = originalContext?.transactionManager copiedContext.transactionManager = originalContext?.transactionManager
+10 -10
View File
@@ -27,16 +27,16 @@
"author": "Medusa", "author": "Medusa",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.4.3", "@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"awilix": "^8.0.1", "awilix": "^8.0.1",
"expect-type": "^0.20.0", "expect-type": "^0.20.0",
"jest": "^29.7.0", "jest": "^29.7.0",
"pg": "^8.13.0", "pg": "^8.16.3",
"rimraf": "^5.0.1", "rimraf": "^5.0.1",
"typescript": "^5.6.2", "typescript": "^5.6.2",
"zod": "3.25.76" "zod": "3.25.76"
@@ -49,13 +49,13 @@
"ulid": "^2.3.0" "ulid": "^2.3.0"
}, },
"peerDependencies": { "peerDependencies": {
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.4.3", "@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1", "awilix": "^8.0.1",
"express": "^4.21.0", "express": "^4.21.0",
"pg": "^8.13.0" "pg": "^8.16.3"
}, },
"scripts": { "scripts": {
"build": "rimraf dist && tsc --build", "build": "rimraf dist && tsc --build",
+6 -6
View File
@@ -26,13 +26,13 @@
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.4.3", "@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1", "awilix": "^8.0.1",
"jest": "^29.7.0", "jest": "^29.7.0",
"pg": "^8.13.0", "pg": "^8.16.3",
"pg-god": "^1.0.12", "pg-god": "^1.0.12",
"rimraf": "^3.0.2", "rimraf": "^3.0.2",
"typescript": "^5.6.2" "typescript": "^5.6.2"
@@ -47,7 +47,7 @@
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/medusa": "2.10.1", "@medusajs/medusa": "2.10.1",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
+4 -4
View File
@@ -136,10 +136,10 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.4.3", "@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@opentelemetry/instrumentation-pg": "^0.52.0", "@opentelemetry/instrumentation-pg": "^0.52.0",
"@opentelemetry/resources": "^2.0.0", "@opentelemetry/resources": "^2.0.0",
"@opentelemetry/sdk-node": "^0.200.0", "@opentelemetry/sdk-node": "^0.200.0",
+4 -4
View File
@@ -38,7 +38,7 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -48,9 +48,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -51,9 +51,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -51,9 +51,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -51,9 +51,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
+7 -7
View File
@@ -39,10 +39,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -52,9 +52,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
+4 -4
View File
@@ -38,10 +38,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -51,9 +51,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
+9 -9
View File
@@ -38,11 +38,11 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.4.3", "@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -52,10 +52,10 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.4.3", "@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
+7 -7
View File
@@ -25,10 +25,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -38,9 +38,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
}, },
"scripts": { "scripts": {
+6 -6
View File
@@ -35,9 +35,9 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"cross-env": "^5.2.1", "cross-env": "^5.2.1",
@@ -48,9 +48,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
+7 -7
View File
@@ -34,10 +34,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -47,9 +47,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -51,9 +51,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
+8 -8
View File
@@ -29,7 +29,7 @@
"resolve:aliases": "tsc --showConfig -p tsconfig.json > tsconfig.resolved.json && tsc-alias -p tsconfig.resolved.json && rimraf tsconfig.resolved.json", "resolve:aliases": "tsc --showConfig -p tsconfig.json > tsconfig.resolved.json && tsc-alias -p tsconfig.resolved.json && rimraf tsconfig.resolved.json",
"build": "rimraf dist && tsc --build && npm run resolve:aliases", "build": "rimraf dist && tsc --build && npm run resolve:aliases",
"test": "jest --runInBand --bail --forceExit -- src/**/__tests__/**/*.ts", "test": "jest --runInBand --bail --forceExit -- src/**/__tests__/**/*.ts",
"test:integration": "jest --forceExit -- integration-tests/**/__tests__/**/*.spec.ts", "test:integration": "jest --forceExit -- integration-tests/__tests__/**/*.spec.ts",
"migration:initial": "MIKRO_ORM_CLI_CONFIG=./mikro-orm.config.dev.ts medusa-mikro-orm migration:create --initial", "migration:initial": "MIKRO_ORM_CLI_CONFIG=./mikro-orm.config.dev.ts medusa-mikro-orm migration:create --initial",
"migration:create": "MIKRO_ORM_CLI_CONFIG=./mikro-orm.config.dev.ts medusa-mikro-orm migration:create", "migration:create": "MIKRO_ORM_CLI_CONFIG=./mikro-orm.config.dev.ts medusa-mikro-orm migration:create",
"migration:up": "MIKRO_ORM_CLI_CONFIG=./mikro-orm.config.dev.ts medusa-mikro-orm migration:up", "migration:up": "MIKRO_ORM_CLI_CONFIG=./mikro-orm.config.dev.ts medusa-mikro-orm migration:up",
@@ -38,10 +38,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -51,9 +51,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
@@ -20,11 +20,7 @@ export function setFindMethods<T>(klass: Constructor<T>, entity: any) {
if (!("strategy" in findOptions_.options)) { if (!("strategy" in findOptions_.options)) {
if (findOptions_.options.limit != null || findOptions_.options.offset) { if (findOptions_.options.limit != null || findOptions_.options.offset) {
Object.assign(findOptions_.options, { Object.assign(findOptions_.options, {
strategy: LoadStrategy.SELECT_IN, strategy: LoadStrategy.BALANCED,
})
} else {
Object.assign(findOptions_.options, {
strategy: LoadStrategy.JOINED,
}) })
} }
} }
@@ -103,7 +99,7 @@ export function setFindMethods<T>(klass: Constructor<T>, entity: any) {
if (!("strategy" in findOptions_.options)) { if (!("strategy" in findOptions_.options)) {
Object.assign(findOptions_.options, { Object.assign(findOptions_.options, {
strategy: LoadStrategy.SELECT_IN, strategy: LoadStrategy.BALANCED,
}) })
} }
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -51,9 +51,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
@@ -267,7 +267,7 @@ export default class PaymentModuleService
) )
} }
@InjectManager() @InjectTransactionManager()
async updatePaymentCollections_( async updatePaymentCollections_(
data: UpdatePaymentCollectionDTO[], data: UpdatePaymentCollectionDTO[],
@MedusaContext() sharedContext?: Context @MedusaContext() sharedContext?: Context
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -51,9 +51,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
@@ -885,7 +885,8 @@ export default class PricingModuleService
return { return {
attribute, attribute,
operator: customRule.operator, operator: customRule.operator,
value: customRule.value, // TODO: we throw above if value is not a number, but the model expect the value to be a string
value: customRule.value.toString(),
} }
}) })
} }
@@ -864,7 +864,12 @@ moduleIntegrationTestRunner<IProductModuleService>({
await service.upsertProducts([updateData]) await service.upsertProducts([updateData])
const product = await service.retrieveProduct(productTwo.id, { const product = await service.retrieveProduct(productTwo.id, {
relations: ["*"], relations: [
"options",
"options.values",
"variants",
"variants.options",
],
}) })
expect(product.options).toHaveLength(1) expect(product.options).toHaveLength(1)
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"faker": "^5.5.3", "faker": "^5.5.3",
@@ -52,9 +52,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
@@ -62,7 +62,7 @@ export class ProductCategoryRepository extends DALUtils.MikroOrmBaseTreeReposito
} }
Object.assign(findOptions_.options, { Object.assign(findOptions_.options, {
strategy: LoadStrategy.SELECT_IN, strategy: LoadStrategy.BALANCED,
}) })
return findOptions_ return findOptions_
@@ -1822,6 +1822,21 @@ export default class ProductModuleService
productData.thumbnail = productData.images[0].url productData.thumbnail = productData.images[0].url
} }
// TODO: these props are typed as number, the model expect a string, the API expect number etc
// There is some inconsistency here, we should fix it
if ("weight" in productData) {
productData.weight = productData.weight?.toString() as any
}
if ("length" in productData) {
productData.length = productData.length?.toString() as any
}
if ("height" in productData) {
productData.height = productData.height?.toString() as any
}
if ("width" in productData) {
productData.width = productData.width?.toString() as any
}
if (productData.images?.length) { if (productData.images?.length) {
productData.images = productData.images.map((image, index) => productData.images = productData.images.map((image, index) =>
(image as { rank?: number }).rank != null (image as { rank?: number }).rank != null
@@ -12,7 +12,7 @@ export async function createCampaigns(
campaignsData?: CreateCampaignDTO[] campaignsData?: CreateCampaignDTO[]
): Promise<Campaign[]> { ): Promise<Campaign[]> {
if (!campaignsData) { if (!campaignsData) {
const cp = JSON.parse(JSON.stringify(defaultCampaignsData)) const cp = structuredClone(defaultCampaignsData)
const starts_at = new Date(TODAY) const starts_at = new Date(TODAY)
starts_at.setDate(starts_at.getDate() - 1) starts_at.setDate(starts_at.getDate() - 1)
+7 -7
View File
@@ -39,10 +39,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -52,9 +52,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
@@ -18,6 +18,7 @@ import {
CampaignBudgetType, CampaignBudgetType,
ComputedActions, ComputedActions,
deduplicate, deduplicate,
EmitEvents,
InjectManager, InjectManager,
InjectTransactionManager, InjectTransactionManager,
isDefined, isDefined,
@@ -139,11 +140,26 @@ export default class PromotionModuleService
} }
@InjectManager() @InjectManager()
listActivePromotions( async listActivePromotions(
filters?: FilterablePromotionProps, filters?: FilterablePromotionProps,
config?: FindConfig<PromotionDTO>, config?: FindConfig<PromotionDTO>,
sharedContext?: Context sharedContext?: Context
): Promise<PromotionDTO[]> { ): Promise<PromotionDTO[]> {
const activePromotions = await this.listActivePromotions_(
filters,
config,
sharedContext
)
return this.baseRepository_.serialize<PromotionDTO[]>(activePromotions)
}
@InjectManager()
protected async listActivePromotions_(
filters?: FilterablePromotionProps,
config?: FindConfig<PromotionDTO>,
@MedusaContext() sharedContext?: Context
): Promise<InferEntityType<typeof Promotion>[]> {
// Ensure we share the same now date across all filters // Ensure we share the same now date across all filters
const now = new Date() const now = new Date()
const activeFilters = { const activeFilters = {
@@ -170,7 +186,11 @@ export default class PromotionModuleService
], ],
} }
return this.listPromotions(activeFilters, config, sharedContext) return await this.promotionService_.list(
activeFilters,
config,
sharedContext
)
} }
@InjectTransactionManager() @InjectTransactionManager()
@@ -185,7 +205,7 @@ export default class PromotionModuleService
const campaignBudgetMap = new Map<string, UpdateCampaignBudgetDTO>() const campaignBudgetMap = new Map<string, UpdateCampaignBudgetDTO>()
const promotionCodeUsageMap = new Map<string, boolean>() const promotionCodeUsageMap = new Map<string, boolean>()
const existingPromotions = await this.listActivePromotions( const existingPromotions = await this.listActivePromotions_(
{ code: promotionCodes }, { code: promotionCodes },
{ relations: ["campaign", "campaign.budget"] }, { relations: ["campaign", "campaign.budget"] },
sharedContext sharedContext
@@ -200,9 +220,10 @@ export default class PromotionModuleService
} }
} }
const existingPromotionsMap = new Map<string, PromotionTypes.PromotionDTO>( const existingPromotionsMap = new Map<
existingPromotions.map((promotion) => [promotion.code!, promotion]) string,
) InferEntityType<typeof Promotion>
>(existingPromotions.map((promotion) => [promotion.code!, promotion]))
for (let computedAction of computedActions) { for (let computedAction of computedActions) {
const promotion = existingPromotionsMap.get(computedAction.code) const promotion = existingPromotionsMap.get(computedAction.code)
@@ -293,7 +314,7 @@ export default class PromotionModuleService
const promotionCodeUsageMap = new Map<string, boolean>() const promotionCodeUsageMap = new Map<string, boolean>()
const campaignBudgetMap = new Map<string, UpdateCampaignBudgetDTO>() const campaignBudgetMap = new Map<string, UpdateCampaignBudgetDTO>()
const existingPromotions = await this.listActivePromotions( const existingPromotions = await this.listActivePromotions_(
{ {
code: computedActions code: computedActions
.map((computedAction) => computedAction.code) .map((computedAction) => computedAction.code)
@@ -312,9 +333,10 @@ export default class PromotionModuleService
} }
} }
const existingPromotionsMap = new Map<string, PromotionTypes.PromotionDTO>( const existingPromotionsMap = new Map<
existingPromotions.map((promotion) => [promotion.code!, promotion]) string,
) InferEntityType<typeof Promotion>
>(existingPromotions.map((promotion) => [promotion.code!, promotion]))
for (let computedAction of computedActions) { for (let computedAction of computedActions) {
const promotion = existingPromotionsMap.get(computedAction.code) const promotion = existingPromotionsMap.get(computedAction.code)
@@ -433,25 +455,18 @@ export default class PromotionModuleService
const methodIdPromoValueMap = new Map<string, number>() const methodIdPromoValueMap = new Map<string, number>()
const automaticPromotions = preventAutoPromotions const promotionCodesToApply = [...promotionCodes, ...appliedCodes]
? []
: await this.listActivePromotions(
{ is_automatic: true },
{ select: ["code"] },
sharedContext
)
const automaticPromotionCodes = automaticPromotions.map((p) => p.code!)
const promotionCodesToApply = [
...promotionCodes,
...automaticPromotionCodes,
...appliedCodes,
]
const uniquePromotionCodes = Array.from(new Set(promotionCodesToApply)) const uniquePromotionCodes = Array.from(new Set(promotionCodesToApply))
const queryFilter = preventAutoPromotions
? { code: uniquePromotionCodes }
: {
$or: [{ code: uniquePromotionCodes }, { is_automatic: true }],
}
const promotions = await this.listActivePromotions( const promotions = await this.listActivePromotions(
{ code: uniquePromotionCodes }, queryFilter,
{ {
take: null, take: null,
order: { application_method: { value: "DESC" } }, order: { application_method: { value: "DESC" } },
@@ -474,6 +489,9 @@ export default class PromotionModuleService
promotions.map((promotion) => [promotion.code!, promotion]) promotions.map((promotion) => [promotion.code!, promotion])
) )
const automaticPromotions = promotions.filter((p) => p.is_automatic)
const automaticPromotionCodes = automaticPromotions.map((p) => p.code!)
for (const [code, adjustments] of codeAdjustmentMap.entries()) { for (const [code, adjustments] of codeAdjustmentMap.entries()) {
for (const adjustment of adjustments.items) { for (const adjustment of adjustments.items) {
computedActions.push({ computedActions.push({
@@ -628,7 +646,9 @@ export default class PromotionModuleService
sharedContext sharedContext
) )
return Array.isArray(data) ? promotions : promotions[0] return await this.baseRepository_.serialize<
PromotionTypes.PromotionDTO | PromotionTypes.PromotionDTO[]
>(Array.isArray(data) ? promotions : promotions[0])
} }
@InjectTransactionManager() @InjectTransactionManager()
@@ -887,6 +907,7 @@ export default class PromotionModuleService
): Promise<PromotionTypes.PromotionDTO[]> ): Promise<PromotionTypes.PromotionDTO[]>
@InjectManager() @InjectManager()
@EmitEvents()
// @ts-expect-error // @ts-expect-error
async updatePromotions( async updatePromotions(
data: data:
@@ -1040,7 +1061,7 @@ export default class PromotionModuleService
) { ) {
const promotionRuleIds = data.map((d) => d.id) const promotionRuleIds = data.map((d) => d.id)
const promotionRules = await this.listPromotionRules( const promotionRules = await this.promotionRuleService_.list(
{ id: promotionRuleIds }, { id: promotionRuleIds },
{ relations: ["values"] }, { relations: ["values"] },
sharedContext sharedContext
@@ -1097,6 +1118,7 @@ export default class PromotionModuleService
} }
@InjectManager() @InjectManager()
@EmitEvents()
async addPromotionRules( async addPromotionRules(
promotionId: string, promotionId: string,
rulesData: PromotionTypes.CreatePromotionRuleDTO[], rulesData: PromotionTypes.CreatePromotionRuleDTO[],
@@ -1218,6 +1240,8 @@ export default class PromotionModuleService
validatePromotionRuleAttributes(rulesData) validatePromotionRuleAttributes(rulesData)
const promotionRuleValuesDataToCreate: CreatePromotionRuleValueDTO[] = []
for (const ruleData of rulesData) { for (const ruleData of rulesData) {
const { values, ...rest } = ruleData const { values, ...rest } = ruleData
const promotionRuleData: CreatePromotionRuleDTO = { const promotionRuleData: CreatePromotionRuleDTO = {
@@ -1238,12 +1262,14 @@ export default class PromotionModuleService
promotion_rule: createdPromotionRule, promotion_rule: createdPromotionRule,
})) }))
await this.promotionRuleValueService_.create( promotionRuleValuesDataToCreate.push(...promotionRuleValuesData)
promotionRuleValuesData,
sharedContext
)
} }
await this.promotionRuleValueService_.create(
promotionRuleValuesDataToCreate,
sharedContext
)
return createdPromotionRules return createdPromotionRules
} }
@@ -1489,15 +1515,16 @@ export default class PromotionModuleService
const updateBudgetData: UpdateCampaignBudgetDTO[] = [] const updateBudgetData: UpdateCampaignBudgetDTO[] = []
const createBudgetData: CreateCampaignBudgetDTO[] = [] const createBudgetData: CreateCampaignBudgetDTO[] = []
const existingCampaigns = await this.listCampaigns( const existingCampaigns = await this.campaignService_.list(
{ id: campaignIds }, { id: campaignIds },
{ relations: ["budget"] }, { relations: ["budget"] },
sharedContext sharedContext
) )
const existingCampaignsMap = new Map<string, PromotionTypes.CampaignDTO>( const existingCampaignsMap = new Map<
existingCampaigns.map((campaign) => [campaign.id, campaign]) string,
) InferEntityType<typeof Campaign>
>(existingCampaigns.map((campaign) => [campaign.id, campaign]))
for (const updateCampaignData of data) { for (const updateCampaignData of data) {
const { budget: budgetData, ...campaignData } = updateCampaignData const { budget: budgetData, ...campaignData } = updateCampaignData
@@ -1554,7 +1581,7 @@ export default class PromotionModuleService
@InjectManager() @InjectManager()
async addPromotionsToCampaign( async addPromotionsToCampaign(
data: PromotionTypes.AddPromotionsToCampaignDTO, data: PromotionTypes.AddPromotionsToCampaignDTO,
sharedContext?: Context @MedusaContext() sharedContext: Context = {}
): Promise<{ ids: string[] }> { ): Promise<{ ids: string[] }> {
const ids = await this.addPromotionsToCampaign_(data, sharedContext) const ids = await this.addPromotionsToCampaign_(data, sharedContext)
@@ -1621,7 +1648,7 @@ export default class PromotionModuleService
@InjectManager() @InjectManager()
async removePromotionsFromCampaign( async removePromotionsFromCampaign(
data: PromotionTypes.AddPromotionsToCampaignDTO, data: PromotionTypes.AddPromotionsToCampaignDTO,
sharedContext?: Context @MedusaContext() sharedContext: Context = {}
): Promise<{ ids: string[] }> { ): Promise<{ ids: string[] }> {
const ids = await this.removePromotionsFromCampaign_(data, sharedContext) const ids = await this.removePromotionsFromCampaign_(data, sharedContext)
@@ -21,10 +21,10 @@
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -51,9 +51,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -51,9 +51,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -51,9 +51,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
+7 -7
View File
@@ -25,10 +25,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -38,9 +38,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
}, },
"scripts": { "scripts": {
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -51,9 +51,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -51,9 +51,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -54,9 +54,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
@@ -38,10 +38,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -55,9 +55,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
@@ -38,10 +38,10 @@
"devDependencies": { "devDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28", "@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36", "@swc/jest": "^0.2.36",
"jest": "^29.7.0", "jest": "^29.7.0",
@@ -56,9 +56,9 @@
}, },
"peerDependencies": { "peerDependencies": {
"@medusajs/framework": "2.10.1", "@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1" "awilix": "^8.0.1"
} }
} }
+12 -12
View File
@@ -53,11 +53,11 @@
"@medusajs/types": "2.10.1", "@medusajs/types": "2.10.1",
"@medusajs/ui": "4.0.21", "@medusajs/ui": "4.0.21",
"@medusajs/ui-preset": "2.10.1", "@medusajs/ui-preset": "2.10.1",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.4.3", "@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"@swc/core": "1.5.7", "@swc/core": "1.5.7",
"@types/lodash": "^4.17.15", "@types/lodash": "^4.17.15",
"@types/node": "^20.0.0", "@types/node": "^20.0.0",
@@ -65,7 +65,7 @@
"@types/react-dom": "^18.2.25", "@types/react-dom": "^18.2.25",
"awilix": "^8.0.1", "awilix": "^8.0.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"pg": "^8.13.0", "pg": "^8.16.3",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-router-dom": "6.20.1", "react-router-dom": "6.20.1",
@@ -82,14 +82,14 @@
"@medusajs/icons": "2.10.1", "@medusajs/icons": "2.10.1",
"@medusajs/test-utils": "2.10.1", "@medusajs/test-utils": "2.10.1",
"@medusajs/ui": "4.0.21", "@medusajs/ui": "4.0.21",
"@mikro-orm/cli": "6.4.3", "@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.4.3", "@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.4.3", "@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.4.3", "@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.4.3", "@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1", "awilix": "^8.0.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"pg": "^8.13.0", "pg": "^8.16.3",
"react-router-dom": "6.20.1" "react-router-dom": "6.20.1"
}, },
"engines": { "engines": {
+371 -362
View File
File diff suppressed because it is too large. Load diff