Files
medusa-store/packages/utils/src/common/deep-equal-obj.ts
Adrien de Peretti e47461d95c chore(orchestration): prevent throwing on already defined workflow (#5337)
**What**
At the moment, when importing something from medusa entry point, if two medusa packages are installed because of a plugin, the evaluation of the import can end up throwing that a workflow is already defined. To prevent that from happening, we can just not throw if it is already defined and just return prematurely and make it idempotent.
2023-10-18 09:47:22 +00:00

25 lines
502 B
TypeScript

export function deepEqualObj(obj1: object, obj2: object): boolean {
if (typeof obj1 !== typeof obj2) {
return false
}
if (typeof obj1 !== "object" || obj1 === null) {
return obj1 === obj2
}
const obj1Keys = Object.keys(obj1)
const obj2Keys = Object.keys(obj2)
if (obj1Keys.length !== obj2Keys.length) {
return false
}
for (const key of obj1Keys) {
if (!obj2Keys.includes(key) || !deepEqualObj(obj1[key], obj2[key])) {
return false
}
}
return true
}