@mercurjs/core 2.3.5-canary.0 → 2.3.6-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/.medusa/server/src/api/admin/collections/validators.d.ts +12 -185
  2. package/.medusa/server/src/api/admin/collections/validators.js +3 -3
  3. package/.medusa/server/src/api/admin/commission-rates/validators.d.ts +21 -226
  4. package/.medusa/server/src/api/admin/customer-groups/validators.d.ts +6 -26
  5. package/.medusa/server/src/api/admin/members/validators.d.ts +1 -18
  6. package/.medusa/server/src/api/admin/offers/validators.d.ts +22 -261
  7. package/.medusa/server/src/api/admin/order-groups/validators.d.ts +9 -94
  8. package/.medusa/server/src/api/admin/orders/validators.d.ts +162 -1
  9. package/.medusa/server/src/api/admin/payouts/validators.d.ts +7 -86
  10. package/.medusa/server/src/api/admin/product-attributes/validators.d.ts +45 -398
  11. package/.medusa/server/src/api/admin/product-attributes/validators.js +8 -8
  12. package/.medusa/server/src/api/admin/product-categories/middlewares.js +4 -2
  13. package/.medusa/server/src/api/admin/product-categories/validators.d.ts +41 -376
  14. package/.medusa/server/src/api/admin/product-categories/validators.js +3 -3
  15. package/.medusa/server/src/api/admin/product-changes/validators.d.ts +2 -10
  16. package/.medusa/server/src/api/admin/products/middlewares.js +4 -2
  17. package/.medusa/server/src/api/admin/products/validators.d.ts +128 -1702
  18. package/.medusa/server/src/api/admin/products/validators.js +9 -9
  19. package/.medusa/server/src/api/admin/promotions/[id]/cost/validators.d.ts +6 -8
  20. package/.medusa/server/src/api/admin/reservations/validators.d.ts +2 -39
  21. package/.medusa/server/src/api/admin/reviews/validators.d.ts +24 -46
  22. package/.medusa/server/src/api/admin/sellers/validators.d.ts +32 -358
  23. package/.medusa/server/src/api/admin/sellers/validators.js +4 -4
  24. package/.medusa/server/src/api/store/carts/[id]/complete/validators.d.ts +1 -5
  25. package/.medusa/server/src/api/store/carts/[id]/line-items/validators.d.ts +1 -17
  26. package/.medusa/server/src/api/store/carts/[id]/line-items/validators.js +3 -5
  27. package/.medusa/server/src/api/store/offers/validators.d.ts +9 -112
  28. package/.medusa/server/src/api/store/order-groups/validators.d.ts +5 -80
  29. package/.medusa/server/src/api/store/product-attributes/validators.d.ts +19 -175
  30. package/.medusa/server/src/api/store/product-categories/validators.d.ts +21 -184
  31. package/.medusa/server/src/api/store/products/validators.d.ts +25 -210
  32. package/.medusa/server/src/api/store/reviews/validators.d.ts +7 -34
  33. package/.medusa/server/src/api/store/sellers/validators.d.ts +7 -92
  34. package/.medusa/server/src/api/vendor/campaigns/validators.d.ts +28 -165
  35. package/.medusa/server/src/api/vendor/campaigns/validators.js +4 -4
  36. package/.medusa/server/src/api/vendor/claims/validators.d.ts +23 -276
  37. package/.medusa/server/src/api/vendor/collections/validators.d.ts +8 -117
  38. package/.medusa/server/src/api/vendor/currencies/validators.d.ts +5 -32
  39. package/.medusa/server/src/api/vendor/customer-groups/[id]/customers/route.js +10 -9
  40. package/.medusa/server/src/api/vendor/customer-groups/validators.d.ts +11 -108
  41. package/.medusa/server/src/api/vendor/customer-groups/validators.js +3 -3
  42. package/.medusa/server/src/api/vendor/customers/helpers.d.ts +1 -1
  43. package/.medusa/server/src/api/vendor/customers/helpers.js +12 -6
  44. package/.medusa/server/src/api/vendor/customers/validators.d.ts +11 -102
  45. package/.medusa/server/src/api/vendor/exchanges/validators.d.ts +17 -228
  46. package/.medusa/server/src/api/vendor/fulfillment-providers/validators.d.ts +4 -27
  47. package/.medusa/server/src/api/vendor/fulfillment-sets/validators.d.ts +18 -290
  48. package/.medusa/server/src/api/vendor/fulfillment-sets/validators.js +3 -3
  49. package/.medusa/server/src/api/vendor/inventory-items/validators.d.ts +48 -560
  50. package/.medusa/server/src/api/vendor/inventory-items/validators.js +3 -3
  51. package/.medusa/server/src/api/vendor/members/validators.d.ts +2 -18
  52. package/.medusa/server/src/api/vendor/offers/validators.d.ts +34 -497
  53. package/.medusa/server/src/api/vendor/order-edits/validators.d.ts +8 -118
  54. package/.medusa/server/src/api/vendor/order-edits/validators.js +6 -6
  55. package/.medusa/server/src/api/vendor/orders/validators.d.ts +17 -170
  56. package/.medusa/server/src/api/vendor/payments/validators.d.ts +11 -121
  57. package/.medusa/server/src/api/vendor/payout-accounts/validators.d.ts +4 -32
  58. package/.medusa/server/src/api/vendor/payout-accounts/validators.js +5 -5
  59. package/.medusa/server/src/api/vendor/payouts/validators.d.ts +5 -80
  60. package/.medusa/server/src/api/vendor/price-lists/validators.d.ts +21 -262
  61. package/.medusa/server/src/api/vendor/price-preferences/validators.d.ts +5 -30
  62. package/.medusa/server/src/api/vendor/product-attributes/validators.d.ts +33 -273
  63. package/.medusa/server/src/api/vendor/product-attributes/validators.js +5 -5
  64. package/.medusa/server/src/api/vendor/product-categories/validators.d.ts +34 -275
  65. package/.medusa/server/src/api/vendor/product-tags/validators.d.ts +12 -48
  66. package/.medusa/server/src/api/vendor/product-types/validators.d.ts +4 -27
  67. package/.medusa/server/src/api/vendor/product-variants/middlewares.js +7 -2
  68. package/.medusa/server/src/api/vendor/product-variants/validators.d.ts +38 -364
  69. package/.medusa/server/src/api/vendor/products/middlewares.js +19 -3
  70. package/.medusa/server/src/api/vendor/products/validators.d.ts +102 -1012
  71. package/.medusa/server/src/api/vendor/products/validators.js +13 -13
  72. package/.medusa/server/src/api/vendor/promotions/validators.d.ts +104 -1109
  73. package/.medusa/server/src/api/vendor/promotions/validators.js +3 -3
  74. package/.medusa/server/src/api/vendor/refund-reasons/validators.d.ts +5 -82
  75. package/.medusa/server/src/api/vendor/regions/validators.d.ts +7 -88
  76. package/.medusa/server/src/api/vendor/reservations/validators.d.ts +14 -207
  77. package/.medusa/server/src/api/vendor/return-reasons/validators.d.ts +9 -94
  78. package/.medusa/server/src/api/vendor/returns/validators.d.ts +26 -306
  79. package/.medusa/server/src/api/vendor/returns/validators.js +8 -8
  80. package/.medusa/server/src/api/vendor/reviews/validators.d.ts +19 -36
  81. package/.medusa/server/src/api/vendor/sales-channels/validators.d.ts +5 -32
  82. package/.medusa/server/src/api/vendor/sellers/validators.d.ts +17 -249
  83. package/.medusa/server/src/api/vendor/sellers/validators.js +4 -4
  84. package/.medusa/server/src/api/vendor/shipping-option-types/validators.d.ts +8 -91
  85. package/.medusa/server/src/api/vendor/shipping-options/validators.d.ts +59 -730
  86. package/.medusa/server/src/api/vendor/shipping-options/validators.js +5 -5
  87. package/.medusa/server/src/api/vendor/shipping-profiles/validators.d.ts +5 -86
  88. package/.medusa/server/src/api/vendor/stock-locations/validators.d.ts +14 -209
  89. package/.medusa/server/src/api/vendor/stock-locations/validators.js +3 -3
  90. package/.medusa/server/src/api/vendor/stores/query-config.d.ts +1 -0
  91. package/.medusa/server/src/api/vendor/stores/query-config.js +7 -4
  92. package/.medusa/server/src/api/vendor/stores/validators.d.ts +4 -27
  93. package/.medusa/server/src/patches/manifest.js +2 -2
  94. package/.medusa/server/src/utils/disable-medusa-middlewares.d.ts +2 -0
  95. package/.medusa/server/src/utils/disable-medusa-middlewares.js +35 -10
  96. package/.medusa/server/src/workflows/offer/workflows/index.d.ts +1 -0
  97. package/.medusa/server/src/workflows/offer/workflows/index.js +2 -1
  98. package/.medusa/server/src/workflows/offer/workflows/update-offers.js +9 -138
  99. package/.medusa/server/src/workflows/offer/workflows/upsert-offer-prices.d.ts +14 -0
  100. package/.medusa/server/src/workflows/offer/workflows/upsert-offer-prices.js +130 -0
  101. package/package.json +17 -17
@@ -5,24 +5,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.ORIGINAL_MIDDLEWARES = void 0;
7
7
  exports.disableMedusaMiddlewares = disableMedusaMiddlewares;
8
+ exports.withOriginalMiddlewares = withOriginalMiddlewares;
8
9
  const fs_1 = require("fs");
9
10
  const path_1 = require("path");
10
11
  const resolve_cwd_1 = __importDefault(require("resolve-cwd"));
11
12
  const pkg_dir_1 = __importDefault(require("pkg-dir"));
12
13
  // Medusa's `dist/api/middlewares.js` is a single aggregator that statically
13
14
  // requires every sub-middleware file (e.g. `./store/carts/middlewares`) and
14
- // spreads each one's exported array into a flat list. Mercur replaces some
15
- // of those modules wholesale (products), and partially overrides others
16
- // (carts). Overriding route handlers is trivial in Medusa (file-based,
15
+ // spreads each one's exported array into a flat list. Mercur overrides a
16
+ // subset of the routes in each of those modules. Overriding route handlers is trivial in Medusa (file-based,
17
17
  // plugin scanned after core), but middlewares can't be overridden the same
18
18
  // way — hence this patch.
19
19
  //
20
20
  // We preload each listed sub-middleware module and empty its exported array
21
21
  // in place BEFORE Medusa's aggregator runs. The aggregator then spreads an
22
- // empty array. For files where Mercur only overrides a subset of routes
23
- // (carts), the original entries are captured into `ORIGINAL_MIDDLEWARES`
22
+ // empty array. The original entries are captured into `ORIGINAL_MIDDLEWARES`
24
23
  // first so Mercur's own middlewares.ts can re-spread the non-overridden
25
- // ones.
24
+ // ones (see `withOriginalMiddlewares`).
26
25
  //
27
26
  // Bun deduplicates each transitive copy of `@medusajs/medusa` under
28
27
  // `node_modules/.bun/@medusajs+medusa@<ver>+<hash>/`. The framework can
@@ -33,7 +32,6 @@ const OVERRIDES = [
33
32
  "dist/api/admin/promotions/middlewares.js",
34
33
  "dist/api/admin/campaigns/middlewares.js",
35
34
  "dist/api/admin/price-lists/middlewares.js",
36
- "dist/api/admin/product-variants/middlewares.js",
37
35
  "dist/api/admin/product-categories/middlewares.js",
38
36
  "dist/api/admin/collections/middlewares.js",
39
37
  "dist/api/admin/customer-groups/middlewares.js",
@@ -45,7 +43,6 @@ const OVERRIDES = [
45
43
  "dist/api/admin/inventory-items/middlewares.js",
46
44
  "dist/api/store/products/middlewares.js",
47
45
  "dist/api/store/product-categories/middlewares.js",
48
- "dist/api/store/product-variants/middlewares.js",
49
46
  "dist/api/store/carts/middlewares.js",
50
47
  ];
51
48
  exports.ORIGINAL_MIDDLEWARES = {};
@@ -92,10 +89,38 @@ function disableMedusaMiddlewares() {
92
89
  const value = mod[key];
93
90
  if (!Array.isArray(value))
94
91
  continue;
95
- exports.ORIGINAL_MIDDLEWARES[file] = [...value];
92
+ // The first dir is the copy the app resolves; later copies (possibly
93
+ // other Medusa versions further up the tree) must not replace it.
94
+ if (!exports.ORIGINAL_MIDDLEWARES[file] && value.length) {
95
+ exports.ORIGINAL_MIDDLEWARES[file] = [...value];
96
+ }
96
97
  value.length = 0;
97
98
  }
98
99
  }
99
100
  }
100
101
  }
101
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZS1tZWR1c2EtbWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvZGlzYWJsZS1tZWR1c2EtbWlkZGxld2FyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBZ0ZBLDREQXFCQztBQXJHRCwyQkFBNEM7QUFDNUMsK0JBQW9DO0FBQ3BDLDhEQUFvQztBQUNwQyxzREFBNEI7QUFFNUIsNEVBQTRFO0FBQzVFLDRFQUE0RTtBQUM1RSwyRUFBMkU7QUFDM0Usd0VBQXdFO0FBQ3hFLHVFQUF1RTtBQUN2RSwyRUFBMkU7QUFDM0UsMEJBQTBCO0FBQzFCLEVBQUU7QUFDRiw0RUFBNEU7QUFDNUUsMkVBQTJFO0FBQzNFLHdFQUF3RTtBQUN4RSx5RUFBeUU7QUFDekUsd0VBQXdFO0FBQ3hFLFFBQVE7QUFDUixFQUFFO0FBQ0Ysb0VBQW9FO0FBQ3BFLHdFQUF3RTtBQUN4RSwwRUFBMEU7QUFDMUUsZ0JBQWdCO0FBRWhCLE1BQU0sU0FBUyxHQUFhO0lBQzFCLHdDQUF3QztJQUN4QywwQ0FBMEM7SUFDMUMseUNBQXlDO0lBQ3pDLDJDQUEyQztJQUMzQyxnREFBZ0Q7SUFDaEQsa0RBQWtEO0lBQ2xELDJDQUEyQztJQUMzQywrQ0FBK0M7SUFDL0Msc0NBQXNDO0lBQ3RDLGdEQUFnRDtJQUNoRCxpREFBaUQ7SUFDakQsK0NBQStDO0lBQy9DLDRDQUE0QztJQUM1QywrQ0FBK0M7SUFDL0Msd0NBQXdDO0lBQ3hDLGtEQUFrRDtJQUNsRCxnREFBZ0Q7SUFDaEQscUNBQXFDO0NBQ3RDLENBQUE7QUFFWSxRQUFBLG9CQUFvQixHQUE4QixFQUFFLENBQUE7QUFFakUsU0FBUyxjQUFjO0lBQ3JCLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUE7SUFFOUIsTUFBTSxLQUFLLEdBQUcsSUFBQSxxQkFBVSxFQUFDLGtCQUFrQixDQUFDLENBQUE7SUFDNUMsTUFBTSxPQUFPLEdBQUcsaUJBQU0sQ0FBQyxJQUFJLENBQUMsSUFBQSxjQUFPLEVBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUMzQyxJQUFJLE9BQU87UUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBRTlCLDRFQUE0RTtJQUM1RSxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUE7SUFDMUIsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUNaLE1BQU0sTUFBTSxHQUFHLElBQUEsV0FBSSxFQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDbkQsSUFBSSxJQUFBLGVBQVUsRUFBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssTUFBTSxLQUFLLElBQUksSUFBQSxnQkFBVyxFQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDO29CQUFFLFNBQVE7Z0JBQ3BELE1BQU0sS0FBSyxHQUFHLElBQUEsV0FBSSxFQUNoQixNQUFNLEVBQ04sS0FBSyxFQUNMLGNBQWMsRUFDZCxXQUFXLEVBQ1gsUUFBUSxDQUNULENBQUE7Z0JBQ0QsSUFBSSxJQUFBLGVBQVUsRUFBQyxJQUFBLFdBQUksRUFBQyxLQUFLLEVBQUUsY0FBYyxDQUFDLENBQUM7b0JBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUM5RCxDQUFDO1FBQ0gsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLElBQUEsY0FBTyxFQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzlCLElBQUksTUFBTSxLQUFLLE1BQU07WUFBRSxNQUFLO1FBQzVCLE1BQU0sR0FBRyxNQUFNLENBQUE7SUFDakIsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFBO0FBQ2xCLENBQUM7QUFFRCxTQUFnQix3QkFBd0I7SUFDdEMsS0FBSyxNQUFNLFNBQVMsSUFBSSxjQUFjLEVBQUUsRUFBRSxDQUFDO1FBQ3pDLEtBQUssTUFBTSxJQUFJLElBQUksU0FBUyxFQUFFLENBQUM7WUFDN0IsTUFBTSxRQUFRLEdBQUcsSUFBQSxXQUFJLEVBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFBO1lBQ3RDLElBQUksQ0FBQyxJQUFBLGVBQVUsRUFBQyxRQUFRLENBQUM7Z0JBQUUsU0FBUTtZQUVuQyxJQUFJLEdBQTRCLENBQUE7WUFDaEMsSUFBSSxDQUFDO2dCQUNILEdBQUcsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUE7WUFDekIsQ0FBQztZQUFDLE1BQU0sQ0FBQztnQkFDUCxTQUFRO1lBQ1YsQ0FBQztZQUVELEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUNuQyxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ3RCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztvQkFBRSxTQUFRO2dCQUNuQyw0QkFBb0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7Z0JBQ3ZDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO1lBQ2xCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztBQUNILENBQUMifQ==
102
+ const toMethods = (route) => {
103
+ if (!route.method)
104
+ return undefined;
105
+ return Array.isArray(route.method) ? route.method : [route.method];
106
+ };
107
+ const collides = (original, override) => {
108
+ if (String(original.matcher) !== String(override.matcher))
109
+ return false;
110
+ const a = toMethods(original);
111
+ const b = toMethods(override);
112
+ if (!a || !b)
113
+ return true;
114
+ return a.some((method) => b.includes(method));
115
+ };
116
+ // Medusa's handlers for routes Mercur doesn't override still load and expect
117
+ // Medusa's validators/query config, so every original entry must be kept
118
+ // unless Mercur registers the same matcher + method itself.
119
+ function withOriginalMiddlewares(file, overrides) {
120
+ const original = (exports.ORIGINAL_MIDDLEWARES[file] ?? []);
121
+ return [
122
+ ...original.filter((route) => !overrides.some((override) => collides(route, override))),
123
+ ...overrides,
124
+ ];
125
+ }
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZS1tZWR1c2EtbWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvZGlzYWJsZS1tZWR1c2EtbWlkZGxld2FyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBNkVBLDREQXlCQztBQWtCRCwwREFXQztBQW5JRCwyQkFBNEM7QUFDNUMsK0JBQW9DO0FBQ3BDLDhEQUFvQztBQUNwQyxzREFBNEI7QUFHNUIsNEVBQTRFO0FBQzVFLDRFQUE0RTtBQUM1RSx5RUFBeUU7QUFDekUsNkdBQTZHO0FBQzdHLDJFQUEyRTtBQUMzRSwwQkFBMEI7QUFDMUIsRUFBRTtBQUNGLDRFQUE0RTtBQUM1RSwyRUFBMkU7QUFDM0UsNkVBQTZFO0FBQzdFLHdFQUF3RTtBQUN4RSx3Q0FBd0M7QUFDeEMsRUFBRTtBQUNGLG9FQUFvRTtBQUNwRSx3RUFBd0U7QUFDeEUsMEVBQTBFO0FBQzFFLGdCQUFnQjtBQUVoQixNQUFNLFNBQVMsR0FBYTtJQUMxQix3Q0FBd0M7SUFDeEMsMENBQTBDO0lBQzFDLHlDQUF5QztJQUN6QywyQ0FBMkM7SUFDM0Msa0RBQWtEO0lBQ2xELDJDQUEyQztJQUMzQywrQ0FBK0M7SUFDL0Msc0NBQXNDO0lBQ3RDLGdEQUFnRDtJQUNoRCxpREFBaUQ7SUFDakQsK0NBQStDO0lBQy9DLDRDQUE0QztJQUM1QywrQ0FBK0M7SUFDL0Msd0NBQXdDO0lBQ3hDLGtEQUFrRDtJQUNsRCxxQ0FBcUM7Q0FDdEMsQ0FBQTtBQUVZLFFBQUEsb0JBQW9CLEdBQThCLEVBQUUsQ0FBQTtBQUVqRSxTQUFTLGNBQWM7SUFDckIsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQTtJQUU5QixNQUFNLEtBQUssR0FBRyxJQUFBLHFCQUFVLEVBQUMsa0JBQWtCLENBQUMsQ0FBQTtJQUM1QyxNQUFNLE9BQU8sR0FBRyxpQkFBTSxDQUFDLElBQUksQ0FBQyxJQUFBLGNBQU8sRUFBQyxLQUFL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
@@ -1,4 +1,5 @@
1
1
  export * from "./create-offers";
2
2
  export * from "./update-offers";
3
+ export * from "./upsert-offer-prices";
3
4
  export * from "./delete-offers";
4
5
  export * from "./batch-offer-inventory-items";
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./create-offers"), exports);
18
18
  __exportStar(require("./update-offers"), exports);
19
+ __exportStar(require("./upsert-offer-prices"), exports);
19
20
  __exportStar(require("./delete-offers"), exports);
20
21
  __exportStar(require("./batch-offer-inventory-items"), exports);
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL29mZmVyL3dvcmtmbG93cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0RBQStCO0FBQy9CLGtEQUErQjtBQUMvQixrREFBK0I7QUFDL0IsZ0VBQTZDIn0=
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL29mZmVyL3dvcmtmbG93cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsa0RBQStCO0FBQy9CLGtEQUErQjtBQUMvQix3REFBcUM7QUFDckMsa0RBQStCO0FBQy9CLGdFQUE2QyJ9
@@ -3,10 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.updateOffersWorkflow = exports.updateOffersWorkflowId = void 0;
4
4
  const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
5
  const core_flows_1 = require("@medusajs/medusa/core-flows");
6
- const utils_1 = require("@medusajs/framework/utils");
7
- const types_1 = require("@mercurjs/types");
8
6
  const steps_1 = require("../steps");
9
- const utils_2 = require("../utils");
7
+ const upsert_offer_prices_1 = require("./upsert-offer-prices");
10
8
  const events_1 = require("../../events");
11
9
  exports.updateOffersWorkflowId = "update-offers";
12
10
  exports.updateOffersWorkflow = (0, workflows_sdk_1.createWorkflow)(exports.updateOffersWorkflowId, function (input) {
@@ -21,140 +19,13 @@ exports.updateOffersWorkflow = (0, workflows_sdk_1.createWorkflow)(exports.updat
21
19
  metadata: o.metadata,
22
20
  })));
23
21
  const offers = (0, steps_1.updateOffersStep)(rowUpdates);
24
- const offersWithPriceUpdates = (0, workflows_sdk_1.transform)({ input }, ({ input }) => input.offers
25
- .filter((o) => Array.isArray(o.prices))
26
- .map((o) => o.id));
27
- const { data: offerRows } = (0, core_flows_1.useQueryGraphStep)({
28
- entity: "offer",
29
- fields: [
30
- "id",
31
- "variant_id",
32
- "product_variant.price_set.id",
33
- "prices.id",
34
- "prices.amount",
35
- "prices.currency_code",
36
- "prices.min_quantity",
37
- "prices.max_quantity",
38
- "prices.price_rules.attribute",
39
- "prices.price_rules.value",
40
- ],
41
- filters: { id: offersWithPriceUpdates },
42
- }).config({ name: "get-offer-prices" });
43
- const pricingDiff = (0, workflows_sdk_1.transform)({ input, offerRows }, ({ input, offerRows }) => {
44
- const offerById = new Map(offerRows.map((o) => [o.id, o]));
45
- const priceSetUpserts = [];
46
- const toRemoveIds = [];
47
- const newPriceOwners = [];
48
- const removedLinks = [];
49
- for (const offer of input.offers) {
50
- if (!Array.isArray(offer.prices)) {
51
- continue;
52
- }
53
- const loaded = offerById.get(offer.id);
54
- if (!loaded) {
55
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Offer ${offer.id} was not found`);
56
- }
57
- const priceSetId = loaded.product_variant?.price_set?.id;
58
- if (!priceSetId) {
59
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Variant ${loaded.variant_id} has no PriceSet`);
60
- }
61
- // `prices` comes through the offer <-> price link, so a link row
62
- // whose price no longer resolves yields a null element. Such a
63
- // dangling link takes no part in the diff.
64
- const ownedIds = new Set((loaded.prices ?? [])
65
- .filter((p) => !!p?.id)
66
- .map((p) => p.id));
67
- const incomingIds = offer.prices
68
- .map((p) => p.id)
69
- .filter((id) => !!id);
70
- (0, utils_2.assertOfferPriceOwnership)({
71
- offer_id: offer.id,
72
- price_ids: incomingIds,
73
- owned_price_ids: ownedIds,
74
- });
75
- const keepIds = new Set(incomingIds);
76
- for (const ownedId of ownedIds) {
77
- if (!keepIds.has(ownedId)) {
78
- toRemoveIds.push(ownedId);
79
- removedLinks.push({
80
- [types_1.MercurModules.OFFER]: { offer_id: offer.id },
81
- [utils_1.Modules.PRICING]: { price_id: ownedId },
82
- });
83
- }
84
- }
85
- const upsertPrices = offer.prices.map((p) => {
86
- const base = {
87
- amount: p.amount,
88
- currency_code: p.currency_code,
89
- rules: { ...(p.rules ?? {}), offer_id: offer.id },
90
- };
91
- if (p.id) {
92
- base.id = p.id;
93
- }
94
- if (p.min_quantity !== undefined && p.min_quantity !== null) {
95
- base.min_quantity = p.min_quantity;
96
- }
97
- if (p.max_quantity !== undefined && p.max_quantity !== null) {
98
- base.max_quantity = p.max_quantity;
99
- }
100
- return base;
101
- });
102
- const newRowCount = offer.prices.filter((p) => !p.id).length;
103
- priceSetUpserts.push({
104
- id: priceSetId,
105
- prices: upsertPrices,
106
- });
107
- if (newRowCount > 0) {
108
- newPriceOwners.push({
109
- offer_id: offer.id,
110
- priceSetId,
111
- newRowCount,
112
- });
113
- }
114
- }
115
- return {
116
- price_sets: priceSetUpserts,
117
- toRemoveIds,
118
- newPriceOwners,
119
- removedLinks,
120
- };
121
- });
122
- const priceSetsPayload = (0, workflows_sdk_1.transform)({ pricingDiff }, ({ pricingDiff }) => ({ price_sets: pricingDiff.price_sets }));
123
- const upsertedPriceSets = (0, core_flows_1.updatePriceSetsStep)(priceSetsPayload);
124
- const toRemoveIds = (0, workflows_sdk_1.transform)({ pricingDiff }, ({ pricingDiff }) => pricingDiff.toRemoveIds);
125
- const removedLinks = (0, workflows_sdk_1.transform)({ pricingDiff }, ({ pricingDiff }) => pricingDiff.removedLinks);
126
- // Dismiss the links before deleting the prices: a failure between the two
127
- // then leaves an orphaned price rather than a dangling link, which would
128
- // make the offer permanently unupdatable.
129
- (0, core_flows_1.dismissRemoteLinkStep)(removedLinks).config({
130
- name: "dismiss-removed-offer-price-links",
131
- });
132
- (0, steps_1.removeOfferPricesStep)(toRemoveIds);
133
- const newLinks = (0, workflows_sdk_1.transform)({ pricingDiff, upsertedPriceSets }, ({ pricingDiff, upsertedPriceSets }) => {
134
- if (!pricingDiff.newPriceOwners.length) {
135
- return [];
136
- }
137
- const priceSetById = new Map((upsertedPriceSets ?? []).map((ps) => [ps.id, ps]));
138
- const links = [];
139
- for (const owner of pricingDiff.newPriceOwners) {
140
- const set = priceSetById.get(owner.priceSetId);
141
- if (!set)
142
- continue;
143
- const matchingPrices = (set.prices ?? []).filter((price) => {
144
- const rules = price.price_rules ?? [];
145
- return rules.some((r) => r.attribute === "offer_id" && r.value === owner.offer_id);
146
- });
147
- for (const price of matchingPrices) {
148
- links.push({
149
- [types_1.MercurModules.OFFER]: { offer_id: owner.offer_id },
150
- [utils_1.Modules.PRICING]: { price_id: price.id },
151
- });
152
- }
153
- }
154
- return links;
155
- });
156
- (0, core_flows_1.createRemoteLinkStep)(newLinks).config({
157
- name: "create-new-offer-price-links",
22
+ const offerPrices = (0, workflows_sdk_1.transform)({ input }, ({ input }) => ({
23
+ offers: input.offers
24
+ .filter((o) => Array.isArray(o.prices))
25
+ .map((o) => ({ id: o.id, prices: o.prices ?? [] })),
26
+ }));
27
+ (0, workflows_sdk_1.when)({ offerPrices }, ({ offerPrices }) => offerPrices.offers.length > 0).then(() => {
28
+ upsert_offer_prices_1.upsertOfferPricesWorkflow.runAsStep({ input: offerPrices });
158
29
  });
159
30
  const eventData = (0, workflows_sdk_1.transform)({ offers }, ({ offers }) => offers.map((o) => ({ id: o.id, product_id: o.product_id })));
160
31
  (0, core_flows_1.emitEventStep)({
@@ -169,4 +40,4 @@ exports.updateOffersWorkflow = (0, workflows_sdk_1.createWorkflow)(exports.updat
169
40
  hooks: [validate, offersUpdated],
170
41
  });
171
42
  });
172
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLW9mZmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvb2ZmZXIvd29ya2Zsb3dzL3VwZGF0ZS1vZmZlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBTzBDO0FBTTFDLDREQU1vQztBQUNwQyxxREFBZ0U7QUFDaEUsMkNBQXlFO0FBRXpFLG9DQUFrRTtBQUNsRSxvQ0FBb0Q7QUFDcEQseUNBQWtEO0FBa0JyQyxRQUFBLHNCQUFzQixHQUFHLGVBQWUsQ0FBQTtBQUV4QyxRQUFBLG9CQUFvQixHQUk3QixJQUFBLDhCQUFjLEVBQ2hCLDhCQUFzQixFQUN0QixVQUFVLEtBQWdDO0lBQ3hDLE1BQU0sUUFBUSxHQUFHLElBQUEsMEJBQVUsRUFBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBRWxELE1BQU0sVUFBVSxHQUFHLElBQUEseUJBQVMsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FDakQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUU7UUFDUixHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUc7UUFDVixtQkFBbUIsRUFBRSxDQUFDLENBQUMsbUJBQW1CO1FBQzFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxnQkFBZ0I7UUFDcEMsZUFBZSxFQUFFLENBQUMsQ0FBQyxlQUFlO1FBQ2xDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxnQkFBZ0I7UUFDcEMsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO0tBQ3JCLENBQUMsQ0FBQyxDQUNKLENBQUE7SUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFBLHdCQUFnQixFQUFDLFVBQVUsQ0FBQyxDQUFBO0lBRTNDLE1BQU0sc0JBQXNCLEdBQUcsSUFBQSx5QkFBUyxFQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FDaEUsS0FBSyxDQUFDLE1BQU07U0FDVCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3RDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUNwQixDQUFBO0lBRUQsTUFBTSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFBLDhCQUFpQixFQUFDO1FBQzVDLE1BQU0sRUFBRSxPQUFPO1FBQ2YsTUFBTSxFQUFFO1lBQ04sSUFBSTtZQUNKLFlBQVk7WUFDWiw4QkFBOEI7WUFDOUIsV0FBVztZQUNYLGVBQWU7WUFDZixzQkFBc0I7WUFDdEIscUJBQXFCO1lBQ3JCLHFCQUFxQjtZQUNyQiw4QkFBOEI7WUFDOUIsMEJBQTBCO1NBQzNCO1FBQ0QsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLHNCQUFzQixFQUFFO0tBQ3hDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFBO0lBRXZDLE1BQU0sV0FBVyxHQUFHLElBQUEseUJBQVMsRUFDM0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQ3BCLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRTtRQUN2QixNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FDdEIsU0FPRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQzFCLENBQUE7UUFFRCxNQUFNLGVBQWUsR0FBcUMsRUFBRSxDQUFBO1FBQzVELE1BQU0sV0FBVyxHQUFhLEVBQUUsQ0FBQTtRQUNoQyxNQUFNLGNBQWMsR0FJZixFQUFFLENBQUE7UUFDUCxNQUFNLFlBQVksR0FBcUIsRUFBRSxDQUFBO1FBRXpDLEtBQUssTUFBTSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxTQUFRO1lBQ1YsQ0FBQztZQUNELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQ3RDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDWixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUMzQixTQUFTLEtBQUssQ0FBQyxFQUFFLGdCQUFnQixDQUNsQyxDQUFBO1lBQ0gsQ0FBQztZQUNELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxlQUFlLEVBQUUsU0FBUyxFQUFFLEVBQUUsQ0FBQTtZQUN4RCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ2hCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLFdBQVcsTUFBTSxDQUFDLFVBQVUsa0JBQWtCLENBQy9DLENBQUE7WUFDSCxDQUFDO1lBRUQsaUVBQWlFO1lBQ2pFLCtEQUErRDtZQUMvRCwyQ0FBMkM7WUFDM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLENBQ3RCLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUM7aUJBQ2xCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBdUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO2lCQUMzQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FDcEIsQ0FBQTtZQUNELE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNO2lCQUM3QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7aUJBQ2hCLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQTtZQUVyQyxJQUFBLGlDQUF5QixFQUFDO2dCQUN4QixRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUU7Z0JBQ2xCLFNBQVMsRUFBRSxXQUFXO2dCQUN0QixlQUFlLEVBQUUsUUFBUTthQUMxQixDQUFDLENBQUE7WUFFRixNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUNwQyxLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUMxQixXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO29CQUN6QixZQUFZLENBQUMsSUFBSSxDQUFDO3dCQUNoQixDQUFDLHFCQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTt3QkFDN0MsQ0FBQyxlQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFO3FCQUN6QyxDQUFDLENBQUE7Z0JBQ0osQ0FBQztZQUNILENBQUM7WUFFRCxNQUFNLFlBQVksR0FFZCxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUN6QixNQUFNLElBQUksR0FBbUQ7b0JBQzNELE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTTtvQkFDaEIsYUFBYSxFQUFFLENBQUMsQ0FBQyxhQUFhO29CQUM5QixLQUFLLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRTtpQkFDbEQsQ0FBQTtnQkFDRCxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztvQkFDVCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUE7Z0JBQ2hCLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLENBQUMsWUFBWSxLQUFLLFNBQVMsSUFBSSxDQUFDLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO29CQUM1RCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUE7Z0JBQ3BDLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLENBQUMsWUFBWSxLQUFLLFNBQVMsSUFBSSxDQUFDLENBQUMsWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO29CQUM1RCxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxZQUFZLENBQUE7Z0JBQ3BDLENBQUM7Z0JBQ0QsT0FBTyxJQUFJLENBQUE7WUFDYixDQUFDLENBQUMsQ0FBQTtZQUVGLE1BQU0sV0FBVyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUE7WUFFNUQsZUFBZSxDQUFDLElBQUksQ0FBQztnQkFDbkIsRUFBRSxFQUFFLFVBQVU7Z0JBQ2QsTUFBTSxFQUFFLFlBQVk7YUFDckIsQ0FBQyxDQUFBO1lBRUYsSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BCLGNBQWMsQ0FBQyxJQUFJLENBQUM7b0JBQ2xCLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRTtvQkFDbEIsVUFBVTtvQkFDVixXQUFXO2lCQUNaLENBQUMsQ0FBQTtZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTztZQUNMLFVBQVUsRUFBRSxlQUFlO1lBQzNCLFdBQVc7WUFDWCxjQUFjO1lBQ2QsWUFBWTtTQUNiLENBQUE7SUFDSCxDQUFDLENBQ0YsQ0FBQTtJQUVELE1BQU0sZ0JBQWdCLEdBQUcsSUFBQSx5QkFBUyxFQUNoQyxFQUFFLFdBQVcsRUFBRSxFQUNmLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FDOUQsQ0FBQTtJQUVELE1BQU0saUJBQWlCLEdBQUcsSUFBQSxnQ0FBbUIsRUFBQyxnQkFBZ0IsQ0FBQyxDQUFBO0lBRS9ELE1BQU0sV0FBVyxHQUFHLElBQUEseUJBQVMsRUFDM0IsRUFBRSxXQUFXLEVBQUUsRUFDZixDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQzdDLENBQUE7SUFFRCxNQUFNLFlBQVksR0FBRyxJQUFBLHlCQUFTLEVBQzVCLEVBQUUsV0FBVyxFQUFFLEVBQ2YsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUM5QyxDQUFBO0lBQ0QsMEVBQTBFO0lBQzFFLHlFQUF5RTtJQUN6RSwwQ0FBMEM7SUFDMUMsSUFBQSxrQ0FBcUIsRUFBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDekMsSUFBSSxFQUFFLG1DQUFtQztLQUMxQyxDQUFDLENBQUE7SUFFRixJQUFBLDZCQUFxQixFQUFDLFdBQVcsQ0FBQyxDQUFBO0lBRWxDLE1BQU0sUUFBUSxHQUFHLElBQUEseUJBQVMsRUFDeEIsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsRUFDbEMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLEVBQUU7UUFDckMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkMsT0FBTyxFQUFzQixDQUFBO1FBQy9CLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxJQUFJLEdBQUcsQ0FDMUIsQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUNuRCxDQUFBO1FBQ0QsTUFBTSxLQUFLLEdBQXFCLEVBQUUsQ0FBQTtRQUVsQyxLQUFLLE1BQU0sS0FBSyxJQUFJLFdBQVcsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUMvQyxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtZQUM5QyxJQUFJLENBQUMsR0FBRztnQkFBRSxTQUFRO1lBQ2xCLE1BQU0sY0FBYyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDekQsTUFBTSxLQUFLLEdBQUksS0FHVixDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUE7Z0JBQ3ZCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FDZixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxVQUFVLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsUUFBUSxDQUNoRSxDQUFBO1lBQ0gsQ0FBQyxDQUFDLENBQUE7WUFFRixLQUFLLE1BQU0sS0FBSyxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUNuQyxLQUFLLENBQUMsSUFBSSxDQUFDO29CQUNULENBQUMscUJBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxFQUFFO29CQUNuRCxDQUFDLGVBQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO2lCQUMxQyxDQUFDLENBQUE7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQyxDQUNGLENBQUE7SUFFRCxJQUFBLGlDQUFvQixFQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNwQyxJQUFJLEVBQUUsOEJBQThCO0tBQ3JDLENBQUMsQ0FBQTtJQUVGLE1BQU0sU0FBUyxHQUFHLElBQUEseUJBQVMsRUFBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQ3JELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FDNUQsQ0FBQTtJQUVELElBQUEsMEJBQWEsRUFBQztRQUNaLFNBQVMsRUFBRSw0QkFBbUIsQ0FBQyxPQUFPO1FBQ3RDLElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUMsQ0FBQTtJQUVGLE1BQU0sYUFBYSxHQUFHLElBQUEsMEJBQVUsRUFBQyxlQUFlLEVBQUU7UUFDaEQsTUFBTTtRQUNOLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZTtLQUN2QyxDQUFDLENBQUE7SUFFRixPQUFPLElBQUksZ0NBQWdCLENBQUMsTUFBTSxFQUFFO1FBQ2xDLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUM7S0FDakMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUNGLENBQUEifQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLW9mZmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvb2ZmZXIvd29ya2Zsb3dzL3VwZGF0ZS1vZmZlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBUTBDO0FBRTFDLDREQUEyRDtBQUczRCxvQ0FBMkM7QUFDM0MsK0RBQWlFO0FBQ2pFLHlDQUFrRDtBQWtCckMsUUFBQSxzQkFBc0IsR0FBRyxlQUFlLENBQUE7QUFFeEMsUUFBQSxvQkFBb0IsR0FJN0IsSUFBQSw4QkFBYyxFQUNoQiw4QkFBc0IsRUFDdEIsVUFBVSxLQUFnQztJQUN4QyxNQUFNLFFBQVEsR0FBRyxJQUFBLDBCQUFVLEVBQUMsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUVsRCxNQUFNLFVBQVUsR0FBRyxJQUFBLHlCQUFTLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQ2pELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakIsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFO1FBQ1IsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHO1FBQ1YsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLG1CQUFtQjtRQUMxQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsZ0JBQWdCO1FBQ3BDLGVBQWUsRUFBRSxDQUFDLENBQUMsZUFBZTtRQUNsQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsZ0JBQWdCO1FBQ3BDLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTtLQUNyQixDQUFDLENBQUMsQ0FDSixDQUFBO0lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBQSx3QkFBZ0IsRUFBQyxVQUFVLENBQUMsQ0FBQTtJQUUzQyxNQUFNLFdBQVcsR0FBRyxJQUFBLHlCQUFTLEVBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkQsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO2FBQ2pCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDdEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztLQUN0RCxDQUFDLENBQUMsQ0FBQTtJQUVILElBQUEsb0JBQUksRUFBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUM1RSxHQUFHLEVBQUU7UUFDSCwrQ0FBeUIsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQTtJQUM3RCxDQUFDLENBQ0YsQ0FBQTtJQUVELE1BQU0sU0FBUyxHQUFHLElBQUEseUJBQVMsRUFBQyxFQUFFLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQ3JELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FDNUQsQ0FBQTtJQUVELElBQUEsMEJBQWEsRUFBQztRQUNaLFNBQVMsRUFBRSw0QkFBbUIsQ0FBQyxPQUFPO1FBQ3RDLElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUMsQ0FBQTtJQUVGLE1BQU0sYUFBYSxHQUFHLElBQUEsMEJBQVUsRUFBQyxlQUFlLEVBQUU7UUFDaEQsTUFBTTtRQUNOLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZTtLQUN2QyxDQUFDLENBQUE7SUFFRixPQUFPLElBQUksZ0NBQWdCLENBQUMsTUFBTSxFQUFFO1FBQ2xDLEtBQUssRUFBRSxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUM7S0FDakMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUNGLENBQUEifQ==
@@ -0,0 +1,14 @@
1
+ import { UpsertOfferPriceDTO } from "@mercurjs/types";
2
+ export type UpsertOfferPricesWorkflowInput = {
3
+ offers: {
4
+ id: string;
5
+ prices: UpsertOfferPriceDTO[];
6
+ }[];
7
+ };
8
+ export declare const upsertOfferPricesWorkflowId = "upsert-offer-prices";
9
+ /**
10
+ * Replaces each offer's own prices. Offers on the same variant share its
11
+ * PriceSet, so prices are upserted by id instead of rewriting the set, which
12
+ * would drop the prices of every other offer on the variant.
13
+ */
14
+ export declare const upsertOfferPricesWorkflow: import("@medusajs/framework/workflows-sdk").ReturnWorkflow<UpsertOfferPricesWorkflowInput, import("../steps").AddOfferPricesStepOutput, []>;
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.upsertOfferPricesWorkflow = exports.upsertOfferPricesWorkflowId = void 0;
4
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
5
+ const core_flows_1 = require("@medusajs/medusa/core-flows");
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const types_1 = require("@mercurjs/types");
8
+ const steps_1 = require("../steps");
9
+ const utils_2 = require("../utils");
10
+ exports.upsertOfferPricesWorkflowId = "upsert-offer-prices";
11
+ /**
12
+ * Replaces each offer's own prices. Offers on the same variant share its
13
+ * PriceSet, so prices are upserted by id instead of rewriting the set, which
14
+ * would drop the prices of every other offer on the variant.
15
+ */
16
+ exports.upsertOfferPricesWorkflow = (0, workflows_sdk_1.createWorkflow)(exports.upsertOfferPricesWorkflowId, function (input) {
17
+ const offerIds = (0, workflows_sdk_1.transform)({ input }, ({ input }) => input.offers.map((o) => o.id));
18
+ const { data: offerRows } = (0, core_flows_1.useQueryGraphStep)({
19
+ entity: "offer",
20
+ fields: [
21
+ "id",
22
+ "variant_id",
23
+ "product_variant.price_set.id",
24
+ "prices.id",
25
+ "prices.amount",
26
+ "prices.currency_code",
27
+ "prices.min_quantity",
28
+ "prices.max_quantity",
29
+ "prices.price_rules.attribute",
30
+ "prices.price_rules.value",
31
+ ],
32
+ filters: { id: offerIds },
33
+ }).config({ name: "get-offer-prices" });
34
+ const pricingDiff = (0, workflows_sdk_1.transform)({ input, offerRows }, ({ input, offerRows }) => {
35
+ const offerById = new Map(offerRows.map((o) => [o.id, o]));
36
+ const addPricesPayload = [];
37
+ const toRemoveIds = [];
38
+ const removedLinks = [];
39
+ for (const offer of input.offers) {
40
+ const loaded = offerById.get(offer.id);
41
+ if (!loaded) {
42
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Offer ${offer.id} was not found`);
43
+ }
44
+ const priceSetId = loaded.product_variant?.price_set?.id;
45
+ if (!priceSetId) {
46
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Variant ${loaded.variant_id} has no PriceSet`);
47
+ }
48
+ // `prices` comes through the offer <-> price link, so a link row
49
+ // whose price no longer resolves yields a null element. Such a
50
+ // dangling link takes no part in the diff.
51
+ const ownedIds = new Set((loaded.prices ?? [])
52
+ .filter((p) => !!p?.id)
53
+ .map((p) => p.id));
54
+ const incomingIds = offer.prices
55
+ .map((p) => p.id)
56
+ .filter((id) => !!id);
57
+ (0, utils_2.assertOfferPriceOwnership)({
58
+ offer_id: offer.id,
59
+ price_ids: incomingIds,
60
+ owned_price_ids: ownedIds,
61
+ });
62
+ const keepIds = new Set(incomingIds);
63
+ for (const ownedId of ownedIds) {
64
+ if (!keepIds.has(ownedId)) {
65
+ toRemoveIds.push(ownedId);
66
+ removedLinks.push({
67
+ [types_1.MercurModules.OFFER]: { offer_id: offer.id },
68
+ [utils_1.Modules.PRICING]: { price_id: ownedId },
69
+ });
70
+ }
71
+ }
72
+ const upsertPrices = offer.prices.map((p) => {
73
+ const base = {
74
+ amount: p.amount,
75
+ currency_code: p.currency_code,
76
+ rules: { ...(p.rules ?? {}), offer_id: offer.id },
77
+ };
78
+ if (p.id) {
79
+ base.id = p.id;
80
+ }
81
+ if (p.min_quantity !== undefined && p.min_quantity !== null) {
82
+ base.min_quantity = p.min_quantity;
83
+ }
84
+ if (p.max_quantity !== undefined && p.max_quantity !== null) {
85
+ base.max_quantity = p.max_quantity;
86
+ }
87
+ return base;
88
+ });
89
+ if (upsertPrices.length) {
90
+ addPricesPayload.push({
91
+ priceSetId,
92
+ prices: upsertPrices,
93
+ });
94
+ }
95
+ }
96
+ return {
97
+ addPricesPayload,
98
+ toRemoveIds,
99
+ removedLinks,
100
+ };
101
+ });
102
+ const toRemoveIds = (0, workflows_sdk_1.transform)({ pricingDiff }, ({ pricingDiff }) => pricingDiff.toRemoveIds);
103
+ const removedLinks = (0, workflows_sdk_1.transform)({ pricingDiff }, ({ pricingDiff }) => pricingDiff.removedLinks);
104
+ // Dismiss the links before deleting the prices: a failure between the two
105
+ // then leaves an orphaned price rather than a dangling link, which would
106
+ // make the offer permanently unupdatable.
107
+ (0, core_flows_1.dismissRemoteLinkStep)(removedLinks).config({
108
+ name: "dismiss-removed-offer-price-links",
109
+ });
110
+ (0, steps_1.removeOfferPricesStep)(toRemoveIds);
111
+ const addPricesPayload = (0, workflows_sdk_1.transform)({ pricingDiff }, ({ pricingDiff }) => pricingDiff.addPricesPayload);
112
+ const addedPrices = (0, steps_1.addOfferPricesStep)(addPricesPayload);
113
+ const newLinks = (0, workflows_sdk_1.transform)({ addedPrices }, ({ addedPrices }) => {
114
+ const links = [];
115
+ for (const entry of addedPrices) {
116
+ for (const priceId of entry.price_ids) {
117
+ links.push({
118
+ [types_1.MercurModules.OFFER]: { offer_id: entry.offer_id },
119
+ [utils_1.Modules.PRICING]: { price_id: priceId },
120
+ });
121
+ }
122
+ }
123
+ return links;
124
+ });
125
+ (0, core_flows_1.createRemoteLinkStep)(newLinks).config({
126
+ name: "create-new-offer-price-links",
127
+ });
128
+ return new workflows_sdk_1.WorkflowResponse(addedPrices);
129
+ });
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBzZXJ0LW9mZmVyLXByaWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3Mvb2ZmZXIvd29ya2Zsb3dzL3Vwc2VydC1vZmZlci1wcmljZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSzBDO0FBRTFDLDREQUlvQztBQUNwQyxxREFBZ0U7QUFDaEUsMkNBQW9FO0FBRXBFLG9DQUlpQjtBQUNqQixvQ0FBb0Q7QUFTdkMsUUFBQSwyQkFBMkIsR0FBRyxxQkFBcUIsQ0FBQTtBQUVoRTs7OztHQUlHO0FBQ1UsUUFBQSx5QkFBeUIsR0FBRyxJQUFBLDhCQUFjLEVBQ3JELG1DQUEyQixFQUMzQixVQUFVLEtBQW1EO0lBQzNELE1BQU0sUUFBUSxHQUFHLElBQUEseUJBQVMsRUFBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQ2xELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQzlCLENBQUE7SUFFRCxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUEsOEJBQWlCLEVBQUM7UUFDNUMsTUFBTSxFQUFFLE9BQU87UUFDZixNQUFNLEVBQUU7WUFDTixJQUFJO1lBQ0osWUFBWTtZQUNaLDhCQUE4QjtZQUM5QixXQUFXO1lBQ1gsZUFBZTtZQUNmLHNCQUFzQjtZQUN0QixxQkFBcUI7WUFDckIscUJBQXFCO1lBQ3JCLDhCQUE4QjtZQUM5QiwwQkFBMEI7U0FDM0I7UUFDRCxPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFO0tBQzFCLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxDQUFBO0lBRXZDLE1BQU0sV0FBVyxHQUFHLElBQUEseUJBQVMsRUFDM0IsRUFB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mercurjs/core",
3
- "version": "2.3.5-canary.0",
3
+ "version": "2.3.6-canary.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/mercurjs/mercur",
@@ -54,14 +54,14 @@
54
54
  },
55
55
  "devDependencies": {
56
56
  "cors": "^2.8.5",
57
- "@medusajs/core-flows": "2.20.1",
58
- "@medusajs/cli": "2.20.1",
59
- "@medusajs/framework": "2.20.1",
60
- "@medusajs/icons": "2.20.1",
61
- "@medusajs/medusa": "2.20.1",
62
- "@medusajs/test-utils": "2.20.1",
57
+ "@medusajs/core-flows": "2.21.0",
58
+ "@medusajs/cli": "2.21.0",
59
+ "@medusajs/framework": "2.21.0",
60
+ "@medusajs/icons": "2.21.0",
61
+ "@medusajs/medusa": "2.21.0",
62
+ "@medusajs/test-utils": "2.21.0",
63
63
  "@medusajs/ui": "4.2.3",
64
- "@mercurjs/types": "2.3.5-canary.0",
64
+ "@mercurjs/types": "2.3.6-canary.0",
65
65
  "@swc/core": "^1.7.28",
66
66
  "@types/cors": "^2.8.17",
67
67
  "@types/express": "^4.17.21",
@@ -76,19 +76,19 @@
76
76
  "tsx": "^4.19.2",
77
77
  "typescript": "5.9.3",
78
78
  "yalc": "^1.0.0-pre.53",
79
- "@medusajs/types": "2.20.1",
79
+ "@medusajs/types": "2.21.0",
80
80
  "multer": "^2.0.2",
81
81
  "http-proxy-middleware": "^3.0.3",
82
- "jsonwebtoken": "^9.0.2",
83
- "@mercurjs/cli": "2.3.5-canary.0"
82
+ "jsonwebtoken": "^9.0.3",
83
+ "@mercurjs/cli": "2.3.6-canary.0"
84
84
  },
85
85
  "peerDependencies": {
86
- "@medusajs/admin-sdk": ">=2.20.1",
87
- "@medusajs/cli": ">=2.20.1",
88
- "@medusajs/framework": ">=2.20.1",
89
- "@medusajs/icons": ">=2.20.1",
90
- "@medusajs/medusa": ">=2.20.1",
91
- "@medusajs/test-utils": ">=2.20.1",
86
+ "@medusajs/admin-sdk": ">=2.21.0",
87
+ "@medusajs/cli": ">=2.21.0",
88
+ "@medusajs/framework": ">=2.21.0",
89
+ "@medusajs/icons": ">=2.21.0",
90
+ "@medusajs/medusa": ">=2.21.0",
91
+ "@medusajs/test-utils": ">=2.21.0",
92
92
  "express": "^4.21.0"
93
93
  },
94
94
  "engines": {