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 Peretti
2025-09-08 21:10:44 +02:00
committed by GitHub
co-authored by Oli Juhl
parent fc4d5f0ac9
commit a095245d71
60 changed files with 863 additions and 712 deletions
+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": {
"@redocly/cli/react": "^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"
}
}
+1 -1
View File
@@ -23,7 +23,7 @@
"node-fetch": "^3.3.1",
"open": "^9.1.0",
"ora": "^6.3.0",
"pg": "^8.11.3",
"pg": "^8.16.3",
"slugify": "^1.6.6",
"uuid": "^9.0.0",
"validator": "^13.9.0",
+11 -11
View File
@@ -32,16 +32,16 @@
"author": "Sebastian Rindom",
"license": "MIT",
"devDependencies": {
"@mikro-orm/core": "6.4.3",
"@mikro-orm/knex": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"@types/yargs": "^15.0.15",
"awilix": "^8.0.1",
"jest": "^29.7.0",
"pg": "^8.13.0",
"pg": "^8.16.3",
"rimraf": "^5.0.1",
"typescript": "^5.6.2"
},
@@ -62,7 +62,7 @@
"is-valid-path": "^0.1.1",
"meant": "^1.0.3",
"ora": "^5.4.1",
"pg": "^8.11.3",
"pg": "^8.16.3",
"pg-god": "^1.0.12",
"prompts": "^2.4.2",
"resolve-cwd": "^3.0.0",
@@ -72,12 +72,12 @@
"yargs": "^15.3.1"
},
"peerDependencies": {
"@mikro-orm/core": "6.4.3",
"@mikro-orm/knex": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1",
"pg": "^8.13.0"
"pg": "^8.16.3"
},
"gitHead": "81a7ff73d012fda722f6e9ef0bd9ba0232d37808"
}
+5 -5
View File
@@ -27,16 +27,16 @@
"license": "MIT",
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/knex": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"awilix": "^8.0.1",
"expect-type": "^0.20.0",
"jest": "^29.7.0",
"pg": "^8.13.0",
"pg": "^8.16.3",
"rimraf": "^5.0.1",
"typescript": "^5.6.2"
},
+11 -11
View File
@@ -56,10 +56,10 @@
"devDependencies": {
"@aws-sdk/client-dynamodb": "^3.218.0",
"@medusajs/cli": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/knex": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"@types/cors": "^2.8.17",
@@ -68,7 +68,7 @@
"connect-dynamodb": "^3.0.5",
"ioredis": "^5.4.1",
"jest": "^29.7.0",
"pg": "^8.13.0",
"pg": "^8.16.3",
"rimraf": "^3.0.2",
"supertest": "^4.0.2",
"typescript": "^5.6.2",
@@ -103,15 +103,15 @@
"peerDependencies": {
"@aws-sdk/client-dynamodb": "^3.218.0",
"@medusajs/cli": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/knex": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1",
"connect-dynamodb": "^3.0.5",
"ioredis": "^5.4.1",
"pg": "^8.13.0",
"pg": "^8.16.3",
"vite": "^5.4.14"
},
"peerDependenciesMeta": {
+10 -10
View File
@@ -31,16 +31,16 @@
"watch": "tsc --build --watch"
},
"devDependencies": {
"@mikro-orm/core": "6.4.3",
"@mikro-orm/knex": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"awilix": "^8.0.1",
"cross-env": "^5.2.1",
"jest": "^29.7.0",
"pg": "^8.13.0",
"pg": "^8.16.3",
"rimraf": "^5.0.1",
"typescript": "^5.6.2"
},
@@ -50,12 +50,12 @@
"@medusajs/utils": "2.10.1"
},
"peerDependencies": {
"@mikro-orm/core": "6.4.3",
"@mikro-orm/knex": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1",
"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"]>
context?: Record<string, any>
withDeleted?: boolean
strategy?: "joined" | "select-in"
strategy?: "joined" | "select-in" | "balanced"
},
entitiesMap: Map<string, any>
): RemoteQueryGraph<TEntity> {
+10 -10
View File
@@ -26,15 +26,15 @@
"author": "Medusa",
"license": "MIT",
"devDependencies": {
"@mikro-orm/core": "6.4.3",
"@mikro-orm/knex": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"awilix": "^8.0.1",
"jest": "^29.7.0",
"pg": "^8.13.0",
"pg": "^8.16.3",
"rimraf": "^5.0.1",
"typescript": "^5.6.2"
},
@@ -44,13 +44,13 @@
"ulid": "^2.3.0"
},
"peerDependencies": {
"@mikro-orm/core": "6.4.3",
"@mikro-orm/knex": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1",
"express": "^4.21.0",
"pg": "^8.13.0"
"pg": "^8.16.3"
},
"scripts": {
"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)
*/
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?: "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?: "joined" | "select-in"
strategy?: "joined" | "select-in" | "balanced"
}
export type RemoteQueryGraph<TEntry extends string> = {
+10 -10
View File
@@ -26,10 +26,10 @@
"author": "Medusa",
"license": "MIT",
"devDependencies": {
"@mikro-orm/core": "6.4.3",
"@mikro-orm/knex": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"@types/express": "^4.17.21",
@@ -37,7 +37,7 @@
"expect-type": "^0.20.0",
"express": "^4.21.0",
"jest": "^29.7.0",
"pg": "^8.13.0",
"pg": "^8.16.3",
"pg-god": "^1.0.12",
"rimraf": "^5.0.1",
"typescript": "^5.6.2"
@@ -60,13 +60,13 @@
"zod": "3.25.76"
},
"peerDependencies": {
"@mikro-orm/core": "6.4.3",
"@mikro-orm/knex": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1",
"express": "^4.21.0",
"pg": "^8.13.0"
"pg": "^8.16.3"
},
"scripts": {
"build": "rimraf dist && tsc --build",
@@ -1,6 +1,6 @@
import { BigNumberInput } from "@medusajs/types"
import { Property } from "@mikro-orm/core"
import { isDefined, isPresent, trimZeros } from "../../common"
import { EntityProperty, Platform, Property, Type } from "@mikro-orm/core"
import { isDefined, isObject, isPresent, trimZeros } from "../../common"
import { BigNumber } from "../../totals/big-number"
export function MikroOrmBigNumberProperty(
@@ -24,6 +24,11 @@ export function MikroOrmBigNumberProperty(
return value
},
set(value: BigNumberInput) {
// convert 'null' to null
if (value === "null") {
value = null as unknown as BigNumberInput
}
if (options?.nullable && !isPresent(value)) {
this.__helper.__data[columnName] = null
this.__helper.__data[rawColumnName] = null
@@ -89,7 +94,7 @@ export function MikroOrmBigNumberProperty(
})
Property({
type: "any",
type: BigNumberNumeric,
columnType: "numeric",
trackChanges: false,
runtimeType: "any",
@@ -97,3 +102,43 @@ export function MikroOrmBigNumberProperty(
})(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
} = {}
): Promise<any> {
const freshManager = this.getFreshManager
? this.getFreshManager()
: this.manager_
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
return await transactionWrapper(freshManager, task, options).catch(
return await transactionWrapper(this.manager_, task, options).catch(
dbErrorMapper
)
}
@@ -467,11 +465,7 @@ export function mikroOrmBaseRepositoryFactory<const T extends object>(
if (!("strategy" in findOptions_.options)) {
if (findOptions_.options.limit != null || findOptions_.options.offset) {
Object.assign(findOptions_.options, {
strategy: LoadStrategy.SELECT_IN,
})
} else {
Object.assign(findOptions_.options, {
strategy: LoadStrategy.JOINED,
strategy: LoadStrategy.BALANCED,
})
}
}
@@ -162,7 +162,7 @@ describe("Entity builder", () => {
kind: "scalar",
setter: true,
trackChanges: false,
type: "any",
type: expect.any(Function),
runtimeType: "any",
},
raw_spend_limit: {
@@ -306,7 +306,7 @@ describe("Entity builder", () => {
kind: "scalar",
setter: true,
trackChanges: false,
type: "any",
type: expect.any(Function),
runtimeType: "any",
},
raw_spend_limit: {
@@ -441,7 +441,7 @@ describe("Entity builder", () => {
kind: "scalar",
setter: true,
trackChanges: false,
type: "any",
type: expect.any(Function),
runtimeType: "any",
},
raw_spend_limit: {
@@ -555,7 +555,7 @@ describe("Entity builder", () => {
kind: "scalar",
setter: true,
trackChanges: false,
type: "any",
type: expect.any(Function),
runtimeType: "any",
},
raw_spend_limit: {
@@ -701,7 +701,7 @@ describe("Entity builder", () => {
kind: "scalar",
setter: true,
trackChanges: false,
type: "any",
type: expect.any(Function),
runtimeType: "any",
},
raw_spend_limit: {
@@ -858,7 +858,7 @@ describe("Entity builder", () => {
kind: "scalar",
setter: true,
trackChanges: false,
type: "any",
type: expect.any(Function),
runtimeType: "any",
},
created_at: {
@@ -3916,6 +3916,7 @@ describe("Entity builder", () => {
type: "string",
},
group: {
defaultRaw: "",
entity: "Group",
fieldName: "group_id",
name: "group",
@@ -4536,6 +4537,7 @@ describe("Entity builder", () => {
setter: false,
},
user: {
defaultRaw: "",
entity: "User",
fieldName: "user_id",
name: "user",
@@ -5147,6 +5149,7 @@ describe("Entity builder", () => {
setter: false,
},
user: {
defaultRaw: "",
name: "user",
kind: "m:1",
entity: "User",
@@ -5336,6 +5339,7 @@ describe("Entity builder", () => {
setter: false,
},
user: {
defaultRaw: "",
name: "user",
kind: "m:1",
fieldName: "user_id",
@@ -5884,6 +5888,7 @@ describe("Entity builder", () => {
setter: false,
},
parent: {
defaultRaw: "",
name: "parent",
fieldName: "parent_id",
kind: "m:1",
@@ -6135,6 +6140,7 @@ describe("Entity builder", () => {
setter: false,
},
teams: {
defaultRaw: "",
kind: "m:n",
name: "teams",
entity: "Team",
@@ -6204,6 +6210,7 @@ describe("Entity builder", () => {
setter: false,
},
users: {
defaultRaw: "",
kind: "m:n",
name: "users",
inversedBy: "teams",
@@ -6316,6 +6323,7 @@ describe("Entity builder", () => {
setter: false,
},
teams: {
defaultRaw: "",
kind: "m:n",
name: "teams",
entity: "Team",
@@ -6385,6 +6393,7 @@ describe("Entity builder", () => {
setter: false,
},
users: {
defaultRaw: "",
kind: "m:n",
name: "users",
entity: "User",
@@ -6611,6 +6620,7 @@ describe("Entity builder", () => {
setter: false,
},
teams: {
defaultRaw: "",
kind: "m:n",
name: "teams",
entity: "Team",
@@ -6680,6 +6690,7 @@ describe("Entity builder", () => {
setter: false,
},
users: {
defaultRaw: "",
kind: "m:n",
name: "users",
entity: "User",
@@ -6792,6 +6803,7 @@ describe("Entity builder", () => {
setter: false,
},
teams: {
defaultRaw: "",
kind: "m:n",
name: "teams",
entity: "Team",
@@ -6861,6 +6873,7 @@ describe("Entity builder", () => {
setter: false,
},
users: {
defaultRaw: "",
kind: "m:n",
name: "users",
entity: "User",
@@ -6991,6 +7004,7 @@ describe("Entity builder", () => {
setter: false,
},
teams: {
defaultRaw: "",
kind: "m:n",
name: "teams",
entity: "Team",
@@ -6999,6 +7013,7 @@ describe("Entity builder", () => {
mappedBy: "users",
},
activeTeams: {
defaultRaw: "",
kind: "m:n",
name: "activeTeams",
entity: "Team",
@@ -7068,6 +7083,7 @@ describe("Entity builder", () => {
setter: false,
},
users: {
defaultRaw: "",
kind: "m:n",
name: "users",
entity: "User",
@@ -7076,6 +7092,7 @@ describe("Entity builder", () => {
inversedBy: "teams",
},
activeTeamsUsers: {
defaultRaw: "",
kind: "m:n",
name: "activeTeamsUsers",
entity: "User",
@@ -7191,6 +7208,7 @@ describe("Entity builder", () => {
setter: false,
},
teams: {
defaultRaw: "",
kind: "m:n",
name: "teams",
entity: "Team",
@@ -7261,6 +7279,7 @@ describe("Entity builder", () => {
setter: false,
},
users: {
defaultRaw: "",
kind: "m:n",
name: "users",
entity: "User",
@@ -7349,6 +7368,7 @@ describe("Entity builder", () => {
setter: false,
},
teams: {
defaultRaw: "",
kind: "m:n",
name: "teams",
entity: "TeamSquad",
@@ -7418,6 +7438,7 @@ describe("Entity builder", () => {
setter: false,
},
users: {
defaultRaw: "",
kind: "m:n",
name: "users",
entity: "RandomUser",
@@ -7533,6 +7554,7 @@ describe("Entity builder", () => {
setter: false,
},
teams: {
defaultRaw: "",
kind: "m:n",
name: "teams",
entity: "Team",
@@ -7602,6 +7624,7 @@ describe("Entity builder", () => {
setter: false,
},
users: {
defaultRaw: "",
kind: "m:n",
name: "users",
owner: false,
@@ -7811,6 +7834,7 @@ describe("Entity builder", () => {
setter: false,
},
users: {
defaultRaw: "",
kind: "m:n",
name: "users",
entity: "User",
@@ -7880,6 +7904,7 @@ describe("Entity builder", () => {
setter: false,
},
teams: {
defaultRaw: "",
kind: "m:n",
name: "teams",
entity: "Team",
@@ -6,7 +6,7 @@ import type {
Infer,
PropertyType,
} from "@medusajs/types"
import { Entity, Filter } from "@mikro-orm/core"
import { Entity, Filter, MetadataStorage } from "@mikro-orm/core"
import {
mikroOrmFreeTextSearchFilterOptionsFactory,
@@ -116,12 +116,16 @@ function createMikrORMEntity() {
Filter(mikroOrmFreeTextSearchFilterOptionsFactory(modelName))(
MikroORMEntity
)
const RegisteredEntity = Entity({ tableName })(
Filter(mikroOrmSoftDeletableFilterOptions)(MikroORMEntity)
) as Infer<T>
ENTITIES[modelName] = RegisteredEntity
return RegisteredEntity
Entity({ tableName })(
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)
// MikroORMEntity.prototype[relationship.name] = new Collection(MikroORMEntity)
}
/**
@@ -466,6 +467,7 @@ export function defineBelongsToRelationship(
ManyToOne({
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,
persist: false,
nullable: relationship.nullable,
@@ -741,6 +743,7 @@ export function defineManyToManyRelationship(
const manytoManyOptions = {
owner: isOwner,
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
? {
pivotTable: pgSchema
@@ -16,6 +16,7 @@ describe("Internal Module Service Factory", () => {
[modelRepositoryName]: {
transaction: (task) => task(),
getFreshManager: jest.fn().mockReturnThis(),
getActiveManager: jest.fn().mockReturnThis(),
find: jest.fn(),
findAndCount: jest.fn(),
create: jest.fn(),
@@ -28,6 +29,7 @@ describe("Internal Module Service Factory", () => {
[`composite${Model.name}Repository`]: {
transaction: (task) => task(),
getFreshManager: jest.fn().mockReturnThis(),
getActiveManager: jest.fn().mockReturnThis(),
find: jest.fn(),
findAndCount: jest.fn(),
create: jest.fn(),
@@ -7,6 +7,7 @@ const baseRepoMock = {
serialize: jest.fn().mockImplementation((item) => item),
transaction: (task) => task("transactionManager"),
getFreshManager: jest.fn().mockReturnThis(),
getActiveManager: jest.fn().mockReturnThis(),
}
const defaultContext = {
@@ -52,7 +52,8 @@ export function InjectManager(managerProperty?: string): MethodDecorator {
}
copiedContext.manager =
originalContext.manager ?? resourceWithManager.getFreshManager()
originalContext.manager ??
resourceWithManager.getActiveManager(originalContext)
if (originalContext?.transactionManager) {
copiedContext.transactionManager = originalContext?.transactionManager
+10 -10
View File
@@ -27,16 +27,16 @@
"author": "Medusa",
"license": "MIT",
"devDependencies": {
"@mikro-orm/core": "6.4.3",
"@mikro-orm/knex": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"awilix": "^8.0.1",
"expect-type": "^0.20.0",
"jest": "^29.7.0",
"pg": "^8.13.0",
"pg": "^8.16.3",
"rimraf": "^5.0.1",
"typescript": "^5.6.2",
"zod": "3.25.76"
@@ -49,13 +49,13 @@
"ulid": "^2.3.0"
},
"peerDependencies": {
"@mikro-orm/core": "6.4.3",
"@mikro-orm/knex": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1",
"express": "^4.21.0",
"pg": "^8.13.0"
"pg": "^8.16.3"
},
"scripts": {
"build": "rimraf dist && tsc --build",
+6 -6
View File
@@ -26,13 +26,13 @@
"license": "MIT",
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/knex": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1",
"jest": "^29.7.0",
"pg": "^8.13.0",
"pg": "^8.16.3",
"pg-god": "^1.0.12",
"rimraf": "^3.0.2",
"typescript": "^5.6.2"
@@ -47,7 +47,7 @@
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/medusa": "2.10.1",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
},
"peerDependenciesMeta": {
+4 -4
View File
@@ -136,10 +136,10 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/knex": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@opentelemetry/instrumentation-pg": "^0.52.0",
"@opentelemetry/resources": "^2.0.0",
"@opentelemetry/sdk-node": "^0.200.0",
+4 -4
View File
@@ -38,7 +38,7 @@
"devDependencies": {
"@medusajs/framework": "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/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -48,9 +48,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -51,9 +51,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -51,9 +51,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -51,9 +51,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
+7 -7
View File
@@ -39,10 +39,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -52,9 +52,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
+4 -4
View File
@@ -38,10 +38,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -51,9 +51,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
+9 -9
View File
@@ -38,11 +38,11 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/knex": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -52,10 +52,10 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/knex": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
+7 -7
View File
@@ -25,10 +25,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -38,9 +38,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
},
"scripts": {
+6 -6
View File
@@ -35,9 +35,9 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"cross-env": "^5.2.1",
@@ -48,9 +48,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
+7 -7
View File
@@ -34,10 +34,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -47,9 +47,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -51,9 +51,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"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",
"build": "rimraf dist && tsc --build && npm run resolve:aliases",
"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: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",
@@ -38,10 +38,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -51,9 +51,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
@@ -20,11 +20,7 @@ export function setFindMethods<T>(klass: Constructor<T>, entity: any) {
if (!("strategy" in findOptions_.options)) {
if (findOptions_.options.limit != null || findOptions_.options.offset) {
Object.assign(findOptions_.options, {
strategy: LoadStrategy.SELECT_IN,
})
} else {
Object.assign(findOptions_.options, {
strategy: LoadStrategy.JOINED,
strategy: LoadStrategy.BALANCED,
})
}
}
@@ -103,7 +99,7 @@ export function setFindMethods<T>(klass: Constructor<T>, entity: any) {
if (!("strategy" in findOptions_.options)) {
Object.assign(findOptions_.options, {
strategy: LoadStrategy.SELECT_IN,
strategy: LoadStrategy.BALANCED,
})
}
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -51,9 +51,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
@@ -267,7 +267,7 @@ export default class PaymentModuleService
)
}
@InjectManager()
@InjectTransactionManager()
async updatePaymentCollections_(
data: UpdatePaymentCollectionDTO[],
@MedusaContext() sharedContext?: Context
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -51,9 +51,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
@@ -885,7 +885,8 @@ export default class PricingModuleService
return {
attribute,
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])
const product = await service.retrieveProduct(productTwo.id, {
relations: ["*"],
relations: [
"options",
"options.values",
"variants",
"variants.options",
],
})
expect(product.options).toHaveLength(1)
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"faker": "^5.5.3",
@@ -52,9 +52,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
@@ -62,7 +62,7 @@ export class ProductCategoryRepository extends DALUtils.MikroOrmBaseTreeReposito
}
Object.assign(findOptions_.options, {
strategy: LoadStrategy.SELECT_IN,
strategy: LoadStrategy.BALANCED,
})
return findOptions_
@@ -1822,6 +1822,21 @@ export default class ProductModuleService
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) {
productData.images = productData.images.map((image, index) =>
(image as { rank?: number }).rank != null
@@ -12,7 +12,7 @@ export async function createCampaigns(
campaignsData?: CreateCampaignDTO[]
): Promise<Campaign[]> {
if (!campaignsData) {
const cp = JSON.parse(JSON.stringify(defaultCampaignsData))
const cp = structuredClone(defaultCampaignsData)
const starts_at = new Date(TODAY)
starts_at.setDate(starts_at.getDate() - 1)
+7 -7
View File
@@ -39,10 +39,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -52,9 +52,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
@@ -18,6 +18,7 @@ import {
CampaignBudgetType,
ComputedActions,
deduplicate,
EmitEvents,
InjectManager,
InjectTransactionManager,
isDefined,
@@ -139,11 +140,26 @@ export default class PromotionModuleService
}
@InjectManager()
listActivePromotions(
async listActivePromotions(
filters?: FilterablePromotionProps,
config?: FindConfig<PromotionDTO>,
sharedContext?: Context
): 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
const now = new Date()
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()
@@ -185,7 +205,7 @@ export default class PromotionModuleService
const campaignBudgetMap = new Map<string, UpdateCampaignBudgetDTO>()
const promotionCodeUsageMap = new Map<string, boolean>()
const existingPromotions = await this.listActivePromotions(
const existingPromotions = await this.listActivePromotions_(
{ code: promotionCodes },
{ relations: ["campaign", "campaign.budget"] },
sharedContext
@@ -200,9 +220,10 @@ export default class PromotionModuleService
}
}
const existingPromotionsMap = new Map<string, PromotionTypes.PromotionDTO>(
existingPromotions.map((promotion) => [promotion.code!, promotion])
)
const existingPromotionsMap = new Map<
string,
InferEntityType<typeof Promotion>
>(existingPromotions.map((promotion) => [promotion.code!, promotion]))
for (let computedAction of computedActions) {
const promotion = existingPromotionsMap.get(computedAction.code)
@@ -293,7 +314,7 @@ export default class PromotionModuleService
const promotionCodeUsageMap = new Map<string, boolean>()
const campaignBudgetMap = new Map<string, UpdateCampaignBudgetDTO>()
const existingPromotions = await this.listActivePromotions(
const existingPromotions = await this.listActivePromotions_(
{
code: computedActions
.map((computedAction) => computedAction.code)
@@ -312,9 +333,10 @@ export default class PromotionModuleService
}
}
const existingPromotionsMap = new Map<string, PromotionTypes.PromotionDTO>(
existingPromotions.map((promotion) => [promotion.code!, promotion])
)
const existingPromotionsMap = new Map<
string,
InferEntityType<typeof Promotion>
>(existingPromotions.map((promotion) => [promotion.code!, promotion]))
for (let computedAction of computedActions) {
const promotion = existingPromotionsMap.get(computedAction.code)
@@ -433,25 +455,18 @@ export default class PromotionModuleService
const methodIdPromoValueMap = new Map<string, number>()
const automaticPromotions = preventAutoPromotions
? []
: await this.listActivePromotions(
{ is_automatic: true },
{ select: ["code"] },
sharedContext
)
const automaticPromotionCodes = automaticPromotions.map((p) => p.code!)
const promotionCodesToApply = [
...promotionCodes,
...automaticPromotionCodes,
...appliedCodes,
]
const promotionCodesToApply = [...promotionCodes, ...appliedCodes]
const uniquePromotionCodes = Array.from(new Set(promotionCodesToApply))
const queryFilter = preventAutoPromotions
? { code: uniquePromotionCodes }
: {
$or: [{ code: uniquePromotionCodes }, { is_automatic: true }],
}
const promotions = await this.listActivePromotions(
{ code: uniquePromotionCodes },
queryFilter,
{
take: null,
order: { application_method: { value: "DESC" } },
@@ -474,6 +489,9 @@ export default class PromotionModuleService
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 adjustment of adjustments.items) {
computedActions.push({
@@ -628,7 +646,9 @@ export default class PromotionModuleService
sharedContext
)
return Array.isArray(data) ? promotions : promotions[0]
return await this.baseRepository_.serialize<
PromotionTypes.PromotionDTO | PromotionTypes.PromotionDTO[]
>(Array.isArray(data) ? promotions : promotions[0])
}
@InjectTransactionManager()
@@ -887,6 +907,7 @@ export default class PromotionModuleService
): Promise<PromotionTypes.PromotionDTO[]>
@InjectManager()
@EmitEvents()
// @ts-expect-error
async updatePromotions(
data:
@@ -1040,7 +1061,7 @@ export default class PromotionModuleService
) {
const promotionRuleIds = data.map((d) => d.id)
const promotionRules = await this.listPromotionRules(
const promotionRules = await this.promotionRuleService_.list(
{ id: promotionRuleIds },
{ relations: ["values"] },
sharedContext
@@ -1097,6 +1118,7 @@ export default class PromotionModuleService
}
@InjectManager()
@EmitEvents()
async addPromotionRules(
promotionId: string,
rulesData: PromotionTypes.CreatePromotionRuleDTO[],
@@ -1218,6 +1240,8 @@ export default class PromotionModuleService
validatePromotionRuleAttributes(rulesData)
const promotionRuleValuesDataToCreate: CreatePromotionRuleValueDTO[] = []
for (const ruleData of rulesData) {
const { values, ...rest } = ruleData
const promotionRuleData: CreatePromotionRuleDTO = {
@@ -1238,12 +1262,14 @@ export default class PromotionModuleService
promotion_rule: createdPromotionRule,
}))
await this.promotionRuleValueService_.create(
promotionRuleValuesData,
sharedContext
)
promotionRuleValuesDataToCreate.push(...promotionRuleValuesData)
}
await this.promotionRuleValueService_.create(
promotionRuleValuesDataToCreate,
sharedContext
)
return createdPromotionRules
}
@@ -1489,15 +1515,16 @@ export default class PromotionModuleService
const updateBudgetData: UpdateCampaignBudgetDTO[] = []
const createBudgetData: CreateCampaignBudgetDTO[] = []
const existingCampaigns = await this.listCampaigns(
const existingCampaigns = await this.campaignService_.list(
{ id: campaignIds },
{ relations: ["budget"] },
sharedContext
)
const existingCampaignsMap = new Map<string, PromotionTypes.CampaignDTO>(
existingCampaigns.map((campaign) => [campaign.id, campaign])
)
const existingCampaignsMap = new Map<
string,
InferEntityType<typeof Campaign>
>(existingCampaigns.map((campaign) => [campaign.id, campaign]))
for (const updateCampaignData of data) {
const { budget: budgetData, ...campaignData } = updateCampaignData
@@ -1554,7 +1581,7 @@ export default class PromotionModuleService
@InjectManager()
async addPromotionsToCampaign(
data: PromotionTypes.AddPromotionsToCampaignDTO,
sharedContext?: Context
@MedusaContext() sharedContext: Context = {}
): Promise<{ ids: string[] }> {
const ids = await this.addPromotionsToCampaign_(data, sharedContext)
@@ -1621,7 +1648,7 @@ export default class PromotionModuleService
@InjectManager()
async removePromotionsFromCampaign(
data: PromotionTypes.AddPromotionsToCampaignDTO,
sharedContext?: Context
@MedusaContext() sharedContext: Context = {}
): Promise<{ ids: string[] }> {
const ids = await this.removePromotionsFromCampaign_(data, sharedContext)
@@ -21,10 +21,10 @@
"license": "MIT",
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -51,9 +51,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -51,9 +51,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -51,9 +51,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
+7 -7
View File
@@ -25,10 +25,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -38,9 +38,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
},
"scripts": {
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -51,9 +51,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -51,9 +51,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
+7 -7
View File
@@ -38,10 +38,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -54,9 +54,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
@@ -38,10 +38,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -55,9 +55,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
@@ -38,10 +38,10 @@
"devDependencies": {
"@medusajs/framework": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "^1.7.28",
"@swc/jest": "^0.2.36",
"jest": "^29.7.0",
@@ -56,9 +56,9 @@
},
"peerDependencies": {
"@medusajs/framework": "2.10.1",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1"
}
}
+12 -12
View File
@@ -53,11 +53,11 @@
"@medusajs/types": "2.10.1",
"@medusajs/ui": "4.0.21",
"@medusajs/ui-preset": "2.10.1",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/knex": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"@swc/core": "1.5.7",
"@types/lodash": "^4.17.15",
"@types/node": "^20.0.0",
@@ -65,7 +65,7 @@
"@types/react-dom": "^18.2.25",
"awilix": "^8.0.1",
"lodash": "^4.17.21",
"pg": "^8.13.0",
"pg": "^8.16.3",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-router-dom": "6.20.1",
@@ -82,14 +82,14 @@
"@medusajs/icons": "2.10.1",
"@medusajs/test-utils": "2.10.1",
"@medusajs/ui": "4.0.21",
"@mikro-orm/cli": "6.4.3",
"@mikro-orm/core": "6.4.3",
"@mikro-orm/knex": "6.4.3",
"@mikro-orm/migrations": "6.4.3",
"@mikro-orm/postgresql": "6.4.3",
"@mikro-orm/cli": "6.5.2",
"@mikro-orm/core": "6.5.2",
"@mikro-orm/knex": "6.5.2",
"@mikro-orm/migrations": "6.5.2",
"@mikro-orm/postgresql": "6.5.2",
"awilix": "^8.0.1",
"lodash": "^4.17.21",
"pg": "^8.13.0",
"pg": "^8.16.3",
"react-router-dom": "6.20.1"
},
"engines": {
+371 -362
View File
File diff suppressed because it is too large Load Diff