order-management 0.0.82 → 0.0.83

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 (24) hide show
  1. package/.medusa/server/src/admin/index.js +9 -9
  2. package/.medusa/server/src/admin/index.mjs +9 -9
  3. package/.medusa/server/src/api/admin/return/[id]/reject/route.js +6 -2
  4. package/.medusa/server/src/api/admin/swaps/[id]/cancel/route.js +5 -1
  5. package/.medusa/server/src/api/admin/swaps/[id]/reject/route.js +5 -1
  6. package/.medusa/server/src/api/store/guest-orders/[id]/returns/route.js +56 -41
  7. package/.medusa/server/src/api/store/guest-orders/[id]/swaps/[swap_id]/cancel/route.js +3 -1
  8. package/.medusa/server/src/api/store/guest-orders/[id]/swaps/route.js +25 -15
  9. package/.medusa/server/src/api/store/returns/[id]/cancel/route.js +3 -1
  10. package/.medusa/server/src/api/store/returns/route.js +24 -19
  11. package/.medusa/server/src/api/store/swaps/[id]/cancel/route.js +5 -1
  12. package/.medusa/server/src/api/store/swaps/route.js +26 -15
  13. package/.medusa/server/src/helpers/index.js +2 -1
  14. package/.medusa/server/src/helpers/return-exchange-guard.js +129 -0
  15. package/.medusa/server/src/modules/order-rma-gate/constants.js +21 -0
  16. package/.medusa/server/src/modules/order-rma-gate/index.js +20 -0
  17. package/.medusa/server/src/modules/order-rma-gate/migrations/Migration20260724100000.js +34 -0
  18. package/.medusa/server/src/modules/order-rma-gate/models/order-rma-gate.js +11 -0
  19. package/.medusa/server/src/modules/order-rma-gate/service.js +202 -0
  20. package/.medusa/server/src/modules/order-rma-gate/stale-reclaim.js +18 -0
  21. package/.medusa/server/src/modules/order-rma-gate/types.js +3 -0
  22. package/.medusa/server/src/subscribers/order-return-received.js +45 -0
  23. package/README.md +13 -4
  24. package/package.json +4 -2
@@ -10,6 +10,7 @@ const payment_detail_1 = require("../../../modules/payment-detail");
10
10
  const config_1 = require("../../../config");
11
11
  const returns_1 = require("../../../helpers/returns");
12
12
  const detect_cod_1 = require("../../../helpers/detect-cod");
13
+ const return_exchange_guard_1 = require("../../../helpers/return-exchange-guard");
13
14
  async function POST(req, res) {
14
15
  const authContext = req.auth_context;
15
16
  const actorId = authContext?.actor_id;
@@ -34,24 +35,6 @@ async function POST(req, res) {
34
35
  const data = parseResult.data;
35
36
  const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
36
37
  const isCodOrder = await (0, detect_cod_1.detectCodOrder)(data.order_id, query);
37
- // Early duplicate guard — fail fast before running any workflow step
38
- try {
39
- const { data: activeChanges } = await query.graph({
40
- entity: "order_change",
41
- fields: ["id", "status"],
42
- filters: { order_id: data.order_id, status: ["pending", "requested"] },
43
- });
44
- if (activeChanges.length > 0) {
45
- res.status(400).json({
46
- message: "This order already has an active return or exchange in progress. Cancel or complete the existing one before creating a new return.",
47
- type: "NOT_ALLOWED",
48
- });
49
- return;
50
- }
51
- }
52
- catch (e) {
53
- void e;
54
- }
55
38
  // Delivery window check — reject if outside the configured return/exchange period
56
39
  try {
57
40
  const configModule = req.scope.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
@@ -82,6 +65,23 @@ async function POST(req, res) {
82
65
  return;
83
66
  }
84
67
  }
68
+ const gate = await (0, return_exchange_guard_1.acquireOrderRmaGate)(data.order_id, "return", req.scope);
69
+ if (!gate.ok) {
70
+ res.status(400).json({
71
+ message: gate.message,
72
+ type: gate.type,
73
+ });
74
+ return;
75
+ }
76
+ const entityCheck = await (0, return_exchange_guard_1.assertNoActiveConflictingRma)(data.order_id, "return", req.scope);
77
+ if (!entityCheck.allowed) {
78
+ await (0, return_exchange_guard_1.releaseOrderRmaGate)(data.order_id, req.scope);
79
+ res.status(400).json({
80
+ message: entityCheck.message,
81
+ type: entityCheck.type,
82
+ });
83
+ return;
84
+ }
85
85
  const { items, return_shipping, ...rest } = data;
86
86
  const input = {
87
87
  ...rest,
@@ -110,6 +110,7 @@ async function POST(req, res) {
110
110
  ]);
111
111
  if (updated)
112
112
  returnPayload = updated;
113
+ await (0, return_exchange_guard_1.setOrderRmaGateReference)(data.order_id, returnId, req.scope);
113
114
  try {
114
115
  const mappingService = req.scope.resolve(refund_payment_mapping_1.REFUND_PAYMENT_MAPPING_MODULE);
115
116
  // COD orders have no payment detail — store null so admin knows no bank/UPI refund is needed
@@ -125,9 +126,13 @@ async function POST(req, res) {
125
126
  }
126
127
  }
127
128
  }
129
+ else {
130
+ await (0, return_exchange_guard_1.releaseOrderRmaGate)(data.order_id, req.scope);
131
+ }
128
132
  res.status(201).json({ return: returnPayload });
129
133
  }
130
134
  catch (err) {
135
+ await (0, return_exchange_guard_1.releaseOrderRmaGate)(data.order_id, req.scope);
131
136
  const message = err instanceof Error ? err.message : "Unknown error";
132
137
  res.status(500).json({
133
138
  message: "Failed to create return",
@@ -187,4 +192,4 @@ async function GET(req, res) {
187
192
  });
188
193
  }
189
194
  }
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3JldHVybnMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFzQkEsb0JBcUlDO0FBRUQsa0JBNERDO0FBeE5ELHFEQUEyRTtBQUMzRSxxREFBOEU7QUFFOUUsNkNBQXNEO0FBQ3RELG9GQUF1RjtBQUV2RixvRUFBdUU7QUFFdkUsNENBQStEO0FBRS9ELHNEQUFzRztBQUN0Ryw0REFBNEQ7QUFVckQsS0FBSyxVQUFVLElBQUksQ0FBQyxHQUFrQixFQUFFLEdBQW1CO0lBQ2hFLE1BQU0sV0FBVyxHQUFJLEdBQXFFLENBQUMsWUFBWSxDQUFBO0lBQ3ZHLE1BQU0sT0FBTyxHQUFHLFdBQVcsRUFBRSxRQUFRLENBQUE7SUFDckMsTUFBTSxTQUFTLEdBQUcsV0FBVyxFQUFFLFVBQVUsQ0FBQTtJQUN6QyxJQUFJLENBQUMsT0FBTyxJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUN6QyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsbURBQW1EO1lBQzVELElBQUksRUFBRSxjQUFjO1NBQ3JCLENBQUMsQ0FBQTtRQUNGLE9BQU07SUFDUixDQUFDO0lBRUQsK0RBQStEO0lBQy9ELE1BQU0sV0FBVyxHQUFHLG9DQUF1QixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN6QixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsc0JBQXNCO1lBQy9CLE1BQU0sRUFBRSxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNuQyxJQUFJLEVBQUUsY0FBYztTQUNyQixDQUFDLENBQUE7UUFDRixPQUFNO0lBQ1IsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUE7SUFFN0IsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQWEsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDNUUsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFBLDJCQUFjLEVBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUU3RCxxRUFBcUU7SUFDckUsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDaEQsTUFBTSxFQUFFLGNBQWM7WUFDdEIsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQztZQUN4QixPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxTQUFTLEVBQUUsV0FBVyxDQUFDLEVBQUU7U0FDdkUsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNuQixPQUFPLEVBQUUsb0lBQW9JO2dCQUM3SSxJQUFJLEVBQUUsYUFBYTthQUNwQixDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLENBQVUsRUFBRSxDQUFDO1FBQ3BCLEtBQUssQ0FBQyxDQUFBO0lBQ1IsQ0FBQztJQUVELGtGQUFrRjtJQUNsRixJQUFJLENBQUM7UUFDSCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBb0IsaUNBQXlCLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDbEcsTUFBTSxhQUFhLEdBQUcsSUFBQSxzQ0FBNkIsRUFBQyxZQUFZLENBQUMsQ0FBQTtRQUNqRSxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUEsbUNBQXlCLEVBQ2xELElBQUksQ0FBQyxRQUFRLEVBQ2IsYUFBYSxDQUFDLGlCQUFpQixFQUMvQixHQUFHLENBQUMsS0FBSyxDQUNWLENBQUE7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzFCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNuQixPQUFPLEVBQUUsWUFBWSxDQUFDLE9BQU87Z0JBQzdCLElBQUksRUFBRSx1QkFBdUI7Z0JBQzdCLFlBQVksRUFBRSxZQUFZLENBQUMsWUFBWTtnQkFDdkMsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO2FBQ3RDLENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7UUFDcEIsS0FBSyxDQUFDLENBQUE7SUFDUixDQUFDO0lBRUQscUVBQXFFO0lBQ3JFLElBQUksVUFBVSxFQUFFLENBQUM7UUFDZixNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUE2QixzQ0FBcUIsQ0FBQyxDQUFBO1FBQ2pHLE1BQU0sVUFBVSxHQUFHLE1BQU0sb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDeEUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNuQixPQUFPLEVBQUUseUVBQXlFO2dCQUNsRixJQUFJLEVBQUUsY0FBYzthQUNyQixDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQTtJQUNoRCxNQUFNLEtBQUssR0FBRztRQUNaLEdBQUcsSUFBSTtRQUNQLFVBQVUsRUFBRSxPQUFPO1FBQ25CLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3ZCLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDcEMsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRO1lBQ3BCLFNBQVMsRUFBRSxDQUFDLENBQUMsU0FBUyxJQUFJLFNBQVM7WUFDbkMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLElBQUksU0FBUztTQUMxQixDQUFDLENBQUM7UUFDSCxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsSUFBSSxlQUFlLEVBQUUsV0FBVztRQUM3RCxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDaEQsQ0FBQTtJQUVELElBQUksQ0FBQztRQUNILE1BQU0sUUFBUSxHQUFHLElBQUEsaURBQW9DLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2hFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1FBQ2hELElBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQTtRQUMxQixNQUFNLFFBQVEsR0FBSSxNQUEwQixFQUFFLEVBQUUsQ0FBQTtRQUNoRCxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBc0IsZUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ2hGLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLGtCQUFrQixDQUFDLGFBQWEsQ0FBQztnQkFDdkQ7b0JBQ0UsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRTtvQkFDMUIsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBa0U7aUJBQzlGO2FBQ0YsQ0FBQyxDQUFBO1lBQ0YsSUFBSSxPQUFPO2dCQUFFLGFBQWEsR0FBRyxPQUFPLENBQUE7WUFFcEMsSUFBSSxDQUFDO2dCQUNILE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFvQyxzREFBNkIsQ0FBQyxDQUFBO2dCQUMxRyw2RkFBNkY7Z0JBQzdGLE1BQU0sY0FBYyxDQUFDLGFBQWEsQ0FBQztvQkFDakMsU0FBUyxFQUFFLFFBQVE7b0JBQ25CLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLElBQUksU0FBUyxDQUFDO2lCQUN0RSxDQUFDLENBQUE7WUFDSixDQUFDO1lBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFBO2dCQUM1RCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO29CQUN6RSxLQUFLLENBQUMsQ0FBQTtnQkFDUixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7UUFDRCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFBO0lBQ2pELENBQUM7SUFBQyxPQUFPLEdBQVksRUFBRSxDQUFDO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUNwRSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUseUJBQXlCO1lBQ2xDLEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFLGdCQUFnQjtTQUN2QixDQUFDLENBQUE7SUFDSixDQUFDO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSxHQUFHLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUMvRCxNQUFNLFdBQVcsR0FBSSxHQUFxRSxDQUFDLFlBQVksQ0FBQTtJQUN2RyxNQUFNLE9BQU8sR0FBRyxXQUFXLEVBQUUsUUFBUSxDQUFBO0lBQ3JDLE1BQU0sU0FBUyxHQUFHLFdBQVcsRUFBRSxVQUFVLENBQUE7SUFDekMsSUFBSSxDQUFDLE9BQU8sSUFBSSxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDekMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxFQUFFLG1EQUFtRDtZQUM1RCxJQUFJLEVBQUUsY0FBYztTQUNyQixDQUFDLENBQUE7UUFDRixPQUFNO0lBQ1IsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQXNCLGVBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNoRixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQThCLENBQUE7UUFDeEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDMUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRTVDLElBQUksUUFBa0IsQ0FBQTtRQUN0QixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osTUFBTSxLQUFLLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQy9FLElBQUksQ0FBQyxLQUFLLElBQUssS0FBa0MsQ0FBQyxXQUFXLEtBQUssT0FBTyxFQUFFLENBQUM7Z0JBQzFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7Z0JBQ2xELE9BQU07WUFDUixDQUFDO1lBQ0QsUUFBUSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdEIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FDMUQsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLEVBQ3hCLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUM5QixDQUFBO1lBQ0QsUUFBUSxHQUFHLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDM0MsQ0FBQztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtZQUNsRCxPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FDbkUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUErRCxFQUNuRjtZQUNFLElBQUksRUFBRSxLQUFLO1lBQ1gsSUFBSSxFQUFFLE1BQU07WUFDWixLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFO1lBQzdCLFNBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUM7U0FDckMsQ0FDRixDQUFBO1FBQ0QsTUFBTSxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDckMsSUFBQSwwQ0FBZ0MsRUFBQyxFQUFFLEdBQUksQ0FBbUQsRUFBRSxDQUFDLENBQzlGLENBQUE7UUFDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtJQUMvRCxDQUFDO0lBQUMsT0FBTyxHQUFZLEVBQUUsQ0FBQztRQUN0QixNQUFNLE9BQU8sR0FBRyxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUE7UUFDcEUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxFQUFFLHdCQUF3QjtZQUNqQyxLQUFLLEVBQUUsT0FBTztZQUNkLElBQUksRUFBRSxnQkFBZ0I7U0FDdkIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUMifQ==
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3JldHVybnMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUE0QkEsb0JBMklDO0FBRUQsa0JBNERDO0FBcE9ELHFEQUEyRTtBQUMzRSxxREFBOEU7QUFFOUUsNkNBQXNEO0FBQ3RELG9GQUF1RjtBQUV2RixvRUFBdUU7QUFFdkUsNENBQStEO0FBRS9ELHNEQUFzRztBQUN0Ryw0REFBNEQ7QUFDNUQsa0ZBSytDO0FBVXhDLEtBQUssVUFBVSxJQUFJLENBQUMsR0FBa0IsRUFBRSxHQUFtQjtJQUNoRSxNQUFNLFdBQVcsR0FBSSxHQUFxRSxDQUFDLFlBQVksQ0FBQTtJQUN2RyxNQUFNLE9BQU8sR0FBRyxXQUFXLEVBQUUsUUFBUSxDQUFBO0lBQ3JDLE1BQU0sU0FBUyxHQUFHLFdBQVcsRUFBRSxVQUFVLENBQUE7SUFDekMsSUFBSSxDQUFDLE9BQU8sSUFBSSxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDekMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxFQUFFLG1EQUFtRDtZQUM1RCxJQUFJLEVBQUUsY0FBYztTQUNyQixDQUFDLENBQUE7UUFDRixPQUFNO0lBQ1IsQ0FBQztJQUVELCtEQUErRDtJQUMvRCxNQUFNLFdBQVcsR0FBRyxvQ0FBdUIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9ELElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxFQUFFLHNCQUFzQjtZQUMvQixNQUFNLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDbkMsSUFBSSxFQUFFLGNBQWM7U0FDckIsQ0FBQyxD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
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.POST = POST;
4
4
  const core_flows_1 = require("@medusajs/core-flows");
5
5
  const utils_1 = require("@medusajs/framework/utils");
6
+ const return_exchange_guard_1 = require("../../../../../helpers/return-exchange-guard");
6
7
  async function POST(req, res) {
7
8
  const authContext = req.auth_context;
8
9
  const customerId = authContext?.actor_id;
@@ -52,6 +53,9 @@ async function POST(req, res) {
52
53
  await (0, core_flows_1.cancelBeginOrderExchangeWorkflow)(req.scope).run({
53
54
  input: { exchange_id: exchangeId },
54
55
  });
56
+ if (oc.order_id) {
57
+ await (0, return_exchange_guard_1.releaseOrderRmaGate)(oc.order_id, req.scope);
58
+ }
55
59
  const updated = await orderModuleService.retrieveOrderChange(id, { relations: ["actions"] });
56
60
  res.json({ order_change: updated });
57
61
  }
@@ -64,4 +68,4 @@ async function POST(req, res) {
64
68
  });
65
69
  }
66
70
  }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3N3YXBzL1tpZF0vY2FuY2VsL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBSUEsb0JBc0VDO0FBekVELHFEQUF1RTtBQUN2RSxxREFBbUQ7QUFFNUMsS0FBSyxVQUFVLElBQUksQ0FDeEIsR0FBa0IsRUFDbEIsR0FBbUI7SUFFbkIsTUFBTSxXQUFXLEdBQUksR0FBcUUsQ0FBQyxZQUFZLENBQUE7SUFDdkcsTUFBTSxVQUFVLEdBQUcsV0FBVyxFQUFFLFFBQVEsQ0FBQTtJQUN4QyxNQUFNLFNBQVMsR0FBRyxXQUFXLEVBQUUsVUFBVSxDQUFBO0lBQ3pDLElBQUksQ0FBQyxVQUFVLElBQUksU0FBUyxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzVDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxtREFBbUQ7WUFDNUQsSUFBSSxFQUFFLGNBQWM7U0FDckIsQ0FBQyxDQUFBO1FBQ0YsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUV6QixJQUFJLENBQUM7UUFDSCxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMzRCxNQUFNLFdBQVcsR0FBRyxNQUFNLGtCQUFrQixDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUV0RixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSw0QkFBNEI7Z0JBQ3JDLElBQUksRUFBRSxXQUFXO2FBQ2xCLENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxFQUFFLEdBQUcsV0FBaUcsQ0FBQTtRQUM1RyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDbEMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSw0QkFBNEI7Z0JBQ3JDLElBQUksRUFBRSxXQUFXO2FBQ2xCLENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLFFBQVMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNwRixJQUFJLENBQUMsS0FBSyxJQUFLLEtBQWtDLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQzdFLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNuQixPQUFPLEVBQUUsOENBQThDO2dCQUN2RCxJQUFJLEVBQUUsYUFBYTthQUNwQixDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUE7UUFDakMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNuQixPQUFPLEVBQUUsOEJBQThCO2dCQUN2QyxJQUFJLEVBQUUsY0FBYzthQUNyQixDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sSUFBQSw2Q0FBZ0MsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ3BELEtBQUssRUFBRSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUU7U0FDbkMsQ0FBQyxDQUFBO1FBRUYsTUFBTSxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDNUYsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFBQyxPQUFPLEdBQVksRUFBRSxDQUFDO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUNwRSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsbUNBQW1DO1lBQzVDLEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFLGdCQUFnQjtTQUN2QixDQUFDLENBQUE7SUFDSixDQUFDO0FBQ0gsQ0FBQyJ9
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3N3YXBzL1tpZF0vY2FuY2VsL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBS0Esb0JBMEVDO0FBOUVELHFEQUF1RTtBQUN2RSxxREFBbUQ7QUFDbkQsd0ZBQWtGO0FBRTNFLEtBQUssVUFBVSxJQUFJLENBQ3hCLEdBQWtCLEVBQ2xCLEdBQW1CO0lBRW5CLE1BQU0sV0FBVyxHQUFJLEdBQXFFLENBQUMsWUFBWSxDQUFBO0lBQ3ZHLE1BQU0sVUFBVSxHQUFHLFdBQVcsRUFBRSxRQUFRLENBQUE7SUFDeEMsTUFBTSxTQUFTLEdBQUcsV0FBVyxFQUFFLFVBQVUsQ0FBQTtJQUN6QyxJQUFJLENBQUMsVUFBVSxJQUFJLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUM1QyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsbURBQW1EO1lBQzVELElBQUksRUFBRSxjQUFjO1NBQ3JCLENBQUMsQ0FBQTtRQUNGLE9BQU07SUFDUixDQUFDO0lBRUQsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFFekIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDM0QsTUFBTSxXQUFXLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFdEYsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNuQixPQUFPLEVBQUUsNEJBQTRCO2dCQUNyQyxJQUFJLEVBQUUsV0FBVzthQUNsQixDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sRUFBRSxHQUFHLFdBQWlHLENBQUE7UUFDNUcsSUFBSSxFQUFFLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2xDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNuQixPQUFPLEVBQUUsNEJBQTRCO2dCQUNyQyxJQUFJLEVBQUUsV0FBVzthQUNsQixDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sa0JBQWtCLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxRQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDcEYsSUFBSSxDQUFDLEtBQUssSUFBSyxLQUFrQyxDQUFDLFdBQVcsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUM3RSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDbkIsT0FBTyxFQUFFLDhDQUE4QztnQkFDdkQsSUFBSSxFQUFFLGFBQWE7YUFDcEIsQ0FBQyxDQUFBO1lBQ0YsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFBO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDbkIsT0FBTyxFQUFFLDhCQUE4QjtnQkFDdkMsSUFBSSxFQUFFLGNBQWM7YUFDckIsQ0FBQyxDQUFBO1lBQ0YsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLElBQUEsNkNBQWdDLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUNwRCxLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFO1NBQ25DLENBQUMsQ0FBQTtRQUVGLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBQSwyQ0FBbUIsRUFBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNuRCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDNUYsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQ3JDLENBQUM7SUFBQyxPQUFPLEdBQVksRUFBRSxDQUFDO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUNwRSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsbUNBQW1DO1lBQzVDLEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFLGdCQUFnQjtTQUN2QixDQUFDLENBQUE7SUFDSixDQUFDO0FBQ0gsQ0FBQyJ9
@@ -8,6 +8,7 @@ const zod_1 = require("zod");
8
8
  const config_1 = require("../../../config");
9
9
  const returns_1 = require("../../../helpers/returns");
10
10
  const validate_same_product_1 = require("../../../exchanges/validate-same-product");
11
+ const return_exchange_guard_1 = require("../../../helpers/return-exchange-guard");
11
12
  const StorePostOrderChangesReqSchema = zod_1.z.object({
12
13
  order_id: zod_1.z.string().min(1),
13
14
  type: zod_1.z.literal("exchange").optional().default("exchange"),
@@ -59,20 +60,6 @@ async function POST(req, res) {
59
60
  return;
60
61
  }
61
62
  try {
62
- // Early duplicate guard — fail fast before running any workflow step
63
- const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
64
- const { data: activeChanges } = await query.graph({
65
- entity: "order_change",
66
- fields: ["id", "status"],
67
- filters: { order_id, status: ["pending", "requested"] },
68
- });
69
- if (activeChanges.length > 0) {
70
- res.status(400).json({
71
- message: "This order already has an active return or exchange in progress. Cancel or complete the existing one before creating a new exchange.",
72
- type: "NOT_ALLOWED",
73
- });
74
- return;
75
- }
76
63
  // Delivery window check — reject if outside the configured return/exchange period
77
64
  try {
78
65
  const configModule = req.scope.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
@@ -91,11 +78,29 @@ async function POST(req, res) {
91
78
  catch (e) {
92
79
  void e;
93
80
  }
81
+ const gate = await (0, return_exchange_guard_1.acquireOrderRmaGate)(order_id, "exchange", req.scope);
82
+ if (!gate.ok) {
83
+ res.status(400).json({
84
+ message: gate.message,
85
+ type: gate.type,
86
+ });
87
+ return;
88
+ }
89
+ const entityCheck = await (0, return_exchange_guard_1.assertNoActiveConflictingRma)(order_id, "exchange", req.scope);
90
+ if (!entityCheck.allowed) {
91
+ await (0, return_exchange_guard_1.releaseOrderRmaGate)(order_id, req.scope);
92
+ res.status(400).json({
93
+ message: entityCheck.message,
94
+ type: entityCheck.type,
95
+ });
96
+ return;
97
+ }
94
98
  const orderModuleService = req.scope.resolve(utils_1.Modules.ORDER);
95
99
  const order = await orderModuleService.retrieveOrder(order_id, {
96
100
  relations: ["items"],
97
101
  }).catch(() => null);
98
102
  if (!order) {
103
+ await (0, return_exchange_guard_1.releaseOrderRmaGate)(order_id, req.scope);
99
104
  res.status(404).json({
100
105
  message: "Order not found",
101
106
  type: "NOT_FOUND",
@@ -104,6 +109,7 @@ async function POST(req, res) {
104
109
  }
105
110
  const orderData = order;
106
111
  if (orderData.customer_id !== customerId) {
112
+ await (0, return_exchange_guard_1.releaseOrderRmaGate)(order_id, req.scope);
107
113
  res.status(403).json({
108
114
  message: "Order does not belong to customer",
109
115
  type: "NOT_ALLOWED",
@@ -114,6 +120,7 @@ async function POST(req, res) {
114
120
  const orderItemIds = new Set(orderItems.map((i) => i.id));
115
121
  for (const r of return_items) {
116
122
  if (!orderItemIds.has(r.item_id)) {
123
+ await (0, return_exchange_guard_1.releaseOrderRmaGate)(order_id, req.scope);
117
124
  res.status(400).json({
118
125
  message: `Item ${r.item_id} is not a valid line item on this order`,
119
126
  type: "INVALID_DATA",
@@ -124,6 +131,7 @@ async function POST(req, res) {
124
131
  // Same-product validation: new variants must belong to the same product as the returned items
125
132
  const sameProductResult = await (0, validate_same_product_1.validateSameProductExchange)(return_items.map((r) => r.item_id), new_items.map((n) => n.variant_id), req.scope);
126
133
  if (!sameProductResult.valid) {
134
+ await (0, return_exchange_guard_1.releaseOrderRmaGate)(order_id, req.scope);
127
135
  res.status(400).json({
128
136
  message: sameProductResult.message,
129
137
  type: "INVALID_DATA",
@@ -140,12 +148,14 @@ async function POST(req, res) {
140
148
  });
141
149
  const exchangeId = orderChange.exchange_id;
142
150
  if (!exchangeId) {
151
+ await (0, return_exchange_guard_1.releaseOrderRmaGate)(order_id, req.scope);
143
152
  res.status(500).json({
144
153
  message: "Exchange could not be created",
145
154
  type: "INTERNAL_ERROR",
146
155
  });
147
156
  return;
148
157
  }
158
+ await (0, return_exchange_guard_1.setOrderRmaGateReference)(order_id, exchangeId, req.scope);
149
159
  const returnItemsInput = return_items.map((item) => ({
150
160
  id: item.item_id,
151
161
  quantity: item.quantity,
@@ -211,6 +221,7 @@ async function POST(req, res) {
211
221
  });
212
222
  }
213
223
  catch (err) {
224
+ await (0, return_exchange_guard_1.releaseOrderRmaGate)(order_id, req.scope);
214
225
  const message = err instanceof Error ? err.message : "Unknown error";
215
226
  res.status(500).json({
216
227
  message: "Failed to create exchange request",
@@ -277,4 +288,4 @@ async function GET(req, res) {
277
288
  });
278
289
  }
279
290
  }
280
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3N3YXBzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBb0NBLG9CQXVPQztBQUVELGtCQXFFQztBQWpWRCxxREFNNkI7QUFDN0IscURBQThFO0FBRTlFLDZCQUF1QjtBQUN2Qiw0Q0FBK0Q7QUFFL0Qsc0RBQW9FO0FBQ3BFLG9GQUFzRjtBQUV0RixNQUFNLDhCQUE4QixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDOUMsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNCLElBQUksRUFBRSxPQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDMUQsWUFBWSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQ25CLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUNuQixRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0IsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUU7UUFDL0IsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUU7S0FDM0IsQ0FBQyxDQUNIO0lBQ0QsU0FBUyxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQ2hCLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxVQUFVLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUN0QixRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7S0FDNUIsQ0FBQyxDQUNIO0lBQ0Qsa0JBQWtCLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRTtDQUN6QyxDQUFDLENBQUE7QUFFSyxLQUFLLFVBQVUsSUFBSSxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDaEUsTUFBTSxXQUFXLEdBQUksR0FBcUUsQ0FBQyxZQUFZLENBQUE7SUFDdkcsTUFBTSxVQUFVLEdBQUcsV0FBVyxFQUFFLFFBQVEsQ0FBQTtJQUN4QyxNQUFNLFNBQVMsR0FBRyxXQUFXLEVBQUUsVUFBVSxDQUFBO0lBQ3pDLElBQUksQ0FBQyxVQUFVLElBQUksU0FBUyxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzVDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxtREFBbUQ7WUFDNUQsSUFBSSxFQUFFLGNBQWM7U0FDckIsQ0FBQyxDQUFBO1FBQ0YsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLFdBQVcsR0FBRyw4QkFBOEIsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3RFLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDekIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxFQUFFLHNCQUFzQjtZQUMvQixNQUFNLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUU7WUFDbkMsSUFBSSxFQUFFLGNBQWM7U0FDckIsQ0FBQyxDQUFBO1FBQ0YsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFBO0lBRWxGLElBQUksWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM5QixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsd0RBQXdEO1lBQ2pFLElBQUksRUFBRSxjQUFjO1NBQ3JCLENBQUMsQ0FBQTtRQUNGLE9BQU07SUFDUixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzNCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxxREFBcUQ7WUFDOUQsSUFBSSxFQUFFLGNBQWM7U0FDckIsQ0FBQyxDQUFBO1FBQ0YsT0FBTTtJQUNSLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxxRUFBcUU7UUFDckUsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBRTVCLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ25DLE1BQU0sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ2hELE1BQU0sRUFBRSxjQUFjO1lBQ3RCLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUM7WUFDeEIsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsRUFBRTtTQUN4RCxDQUFDLENBQUE7UUFDRixJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDN0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSxzSUFBc0k7Z0JBQy9JLElBQUksRUFBRSxhQUFhO2FBQ3BCLENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO1FBRUQsa0ZBQWtGO1FBQ2xGLElBQUksQ0FBQztZQUNILE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFvQixpQ0FBeUIsQ0FBQyxhQUFhLENBQUMsQ0FBQTtZQUNsRyxNQUFNLGFBQWEsR0FBRyxJQUFBLHNDQUE2QixFQUFDLFlBQVksQ0FBQyxDQUFBO1lBQ2pFLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBQSxtQ0FBeUIsRUFDbEQsUUFBUSxFQUNSLGFBQWEsQ0FBQyxtQkFBbUIsRUFDakMsR0FBRyxDQUFDLEtBQUssRUFDVCxVQUFVLENBQ1gsQ0FBQTtZQUNELElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzFCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNuQixPQUFPLEVBQUUsWUFBWSxDQUFDLE9BQU87b0JBQzdCLElBQUksRUFBRSx1QkFBdUI7b0JBQzdCLFlBQVksRUFBRSxZQUFZLENBQUMsWUFBWTtvQkFDdkMsV0FBVyxFQUFFLFlBQVksQ0FBQyxXQUFXO2lCQUN0QyxDQUFDLENBQUE7Z0JBQ0YsT0FBTTtZQUNSLENBQUM7UUFDSCxDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixLQUFLLENBQUMsQ0FBQTtRQUNSLENBQUM7UUFFRCxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMzRCxNQUFNLEtBQUssR0FBRyxNQUFNLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUU7WUFDN0QsU0FBUyxFQUFFLENBQUMsT0FBTyxDQUFDO1NBQ3JCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDcEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLElBQUksRUFBRSxXQUFXO2FBQ2xCLENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsS0FBNEYsQ0FBQTtRQUM5RyxJQUFJLFNBQVMsQ0FBQyxXQUFXLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDekMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSxtQ0FBbUM7Z0JBQzVDLElBQUksRUFBRSxhQUFhO2FBQ3BCLENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsU0FBUyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUE7UUFDeEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7UUFDekQsS0FBSyxNQUFNLENBQUMsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztnQkFDakMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7b0JBQ25CLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxPQUFPLHlDQUF5QztvQkFDbkUsSUFBSSxFQUFFLGNBQWM7aUJBQ3JCLENBQUMsQ0FBQTtnQkFDRixPQUFNO1lBQ1IsQ0FBQztRQUNILENBQUM7UUFFRCw4RkFBOEY7UUFDOUYsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUEsbURBQTJCLEVBQ3pELFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFDbEMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUNsQyxHQUFHLENBQUMsS0FBSyxDQUNWLENBQUE7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxPQUFPO2dCQUNsQyxJQUFJLEVBQUUsY0FBYztnQkFDcEIsbUJBQW1CLEVBQUUsaUJBQWlCLENBQUMsbUJBQW1CO2FBQzNELENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUcsSUFBQSx1Q0FBMEIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDM0QsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsR0FBRyxNQUFNLGFBQWEsQ0FBQyxHQUFHLENBQUM7WUFDdEQsS0FBSyxFQUFFO2dCQUNMLFFBQVE7Z0JBQ1IsVUFBVSxFQUFFLFVBQVU7YUFDdkI7U0FDRixDQUFDLENBQUE7UUFFRixNQUFNLFVBQVUsR0FBSSxXQUF3QyxDQUFDLFdBQVcsQ0FBQTtRQUN4RSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSwrQkFBK0I7Z0JBQ3hDLElBQUksRUFBRSxnQkFBZ0I7YUFDdkIsQ0FBQyxDQUFBO1lBQ0YsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDbkQsRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ2hCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVMsSUFBSSxTQUFTO1lBQ3RDLGFBQWEsRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLFNBQVM7U0FDdEMsQ0FBQyxDQUFDLENBQUE7UUFFSCwyRkFBMkY7UUFDM0YsTUFBTSxJQUFBLG1EQUFzQyxFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDMUQsS0FBSyxFQUFFO2dCQUNMLFdBQVcsRUFBRSxVQUFVO2dCQUN2QixTQUFTLEVBQUUsRUFBRTtnQkFDYixLQUFLLEVBQUUsZ0JBQWdCO2FBQ3hCO1NBQ0YsQ0FBQyxDQUFBO1FBRUYsTUFBTSxhQUFhLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3QyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1NBQ3hCLENBQUMsQ0FBQyxDQUFBO1FBRUgsTUFBTSxJQUFBLDRDQUErQixFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDbkQsS0FBSyxFQUFFO2dCQUNMLFdBQVcsRUFBRSxVQUFVO2dCQUN2QixLQUFLLEVBQUUsYUFBYTthQUNyQjtTQUNGLENBQUMsQ0FBQTtRQUVGLE1BQU0sUUFBUSxHQUFJLFdBQThCLENBQUMsRUFBRSxDQUFBO1FBQ25ELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLE1BQU0sa0JBQWtCLENBQUMsZ0JBQWdCLENBQ3BFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxFQUNoQixFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQ3pDLENBQUE7UUFDRCxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLENBQUUsa0JBQW9ELENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7UUFDL0csTUFBTSxRQUFRLEdBQUcsV0FBVyxJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1FBRXJHLElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixNQUFNLGtCQUFrQixDQUFDLGFBQWEsQ0FBQztnQkFDckM7b0JBQ0UsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRTtvQkFDMUIsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBa0U7aUJBQ2pHO2FBQ0YsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUVELElBQUksa0JBQWtCLEVBQUUsQ0FBQztZQUN2QixJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLE1BQU0sSUFBQSxpREFBb0MsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO29CQUN4RCxLQUFLLEVBQUU7d0JBQ0wsV0FBVyxFQUFFLFVBQVU7d0JBQ3ZCLFNBQVMsRUFBRSxRQUFRO3dCQUNuQixrQkFBa0I7cUJBQ25CO2lCQUNGLENBQUMsQ0FBQTtZQUNKLENBQUM7WUFDRCxNQUFNLElBQUEsaURBQW9DLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztnQkFDeEQsS0FBSyxFQUFFO29CQUNMLFdBQVcsRUFBRSxVQUFVO29CQUN2QixrQkFBa0I7aUJBQ25CO2FBQ0YsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUVELE1BQU0sSUFBQSwyQ0FBOEIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ2xELEtBQUssRUFBRTtnQkFDTCxXQUFXLEVBQUUsVUFBVTtnQkFDdkIsWUFBWSxFQUFFLFVBQVU7YUFDekI7U0FDRixDQUFDLENBQUE7UUFFRixNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FDL0QsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQ2hCLEVBQUUsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FDM0IsQ0FBQTtRQUVELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLFlBQVksRUFBRSxhQUFhLElBQUksV0FBVztTQUMzQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBQUMsT0FBTyxHQUFZLEVBQUUsQ0FBQztRQUN0QixNQUFNLE9BQU8sR0FBRyxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUE7UUFDcEUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxFQUFFLG1DQUFtQztZQUM1QyxLQUFLLEVBQUUsT0FBTztZQUNkLElBQUksRUFBRSxnQkFBZ0I7U0FDdkIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUM7QUFFTSxLQUFLLFVBQVUsR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUI7SUFDL0QsTUFBTSxXQUFXLEdBQUksR0FBcUUsQ0FBQyxZQUFZLENBQUE7SUFDdkcsTUFBTSxVQUFVLEdBQUcsV0FBVyxFQUFFLFFBQVEsQ0FBQTtJQUN4QyxNQUFNLFNBQVMsR0FBRyxXQUFXLEVBQUUsVUFBVSxDQUFBO0lBQ3pDLElBQUksQ0FBQyxVQUFVLElBQUksU0FBUyxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzVDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxtREFBbUQ7WUFDNUQsSUFBSSxFQUFFLGNBQWM7U0FDckIsQ0FBQyxDQUFBO1FBQ0YsT0FBTTtJQUNSLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUMzRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQThCLENBQUE7UUFDeEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUE7UUFDMUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBRTFDLElBQUksUUFBa0IsQ0FBQTtRQUN0QixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osTUFBTSxLQUFLLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQy9FLElBQUksQ0FBQyxLQUFLLElBQUssS0FBa0MsQ0FBQyxXQUFXLEtBQUssVUFBVSxFQUFFLENBQUM7Z0JBQzdFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxhQUFhLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO2dCQUM5RCxPQUFNO1lBQ1IsQ0FBQztZQUNELFFBQVEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3RCLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sa0JBQWtCLENBQUMsa0JBQWtCLENBQzFELEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxFQUMzQixFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FDOUIsQ0FBQTtZQUNELFFBQVEsR0FBRyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFBO1FBQzNDLENBQUM7UUFFRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUIsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsRUFBRSxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7WUFDOUQsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxNQUFNLGtCQUFrQixDQUFDLGdCQUFnQixDQUMxRDtZQUNFLFFBQVEsRUFBRSxRQUFRO1NBQ25CLEVBQ0Q7WUFDRSxJQUFJLEVBQUUsR0FBRztZQUNULEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7WUFDN0IsU0FBUyxFQUFFLENBQUMsU0FBUyxDQUFDO1NBQ3ZCLENBQ0YsQ0FBQTtRQUVELE1BQU0sZUFBZSxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FDL0MsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFFLEVBQStCLENBQUMsV0FBVyxLQUFLLFVBQVUsQ0FDcEUsQ0FBQTtRQUNELE1BQU0sWUFBWSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQTtRQUU5RCxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ1AsYUFBYSxFQUFFLFlBQVk7WUFDM0IsS0FBSyxFQUFFLGVBQWUsQ0FBQyxNQUFNO1lBQzdCLEtBQUs7WUFDTCxNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFBQyxPQUFPLEdBQVksRUFBRSxDQUFDO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUNwRSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsa0NBQWtDO1lBQzNDLEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFLGdCQUFnQjtTQUN2QixDQUFDLENBQUE7SUFDSixDQUFDO0FBQ0gsQ0FBQyJ9
291
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3N3YXBzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBMENBLG9CQWlQQztBQUVELGtCQXFFQztBQWpXRCxxREFNNkI7QUFDN0IscURBQThFO0FBRTlFLDZCQUF1QjtBQUN2Qiw0Q0FBK0Q7QUFFL0Qsc0RBQW9FO0FBQ3BFLG9GQUFzRjtBQUN0RixrRkFLK0M7QUFFL0MsTUFBTSw4QkFBOEIsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQzlDLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMzQixJQUFJLEVBQUUsT0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO0lBQzFELFlBQVksRUFBRSxPQUFDLENBQUMsS0FBSyxDQUNuQixPQUFDLENBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDbkIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzNCLFNBQVMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFO1FBQy9CLElBQUksRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsT0FBTyxFQUFFO0tBQzNCLENBQUMsQ0FDSDtJQUNELFNBQVMsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUNoQixPQUFDLENBQUMsTUFBTSxDQUFDO1FBQ1AsVUFBVSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDdEIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0tBQzVCLENBQUMsQ0FDSDtJQUNELGtCQUFrQixFQUFFLE9BQUMs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
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./swaps"), exports);
18
18
  __exportStar(require("./order-exchange-data"), exports);
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXVCO0FBQ3ZCLHdEQUFxQyJ9
19
+ __exportStar(require("./return-exchange-guard"), exports);
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXVCO0FBQ3ZCLHdEQUFxQztBQUNyQywwREFBdUMifQ==
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.evaluateStaleGateReclaim = exports.STALE_GATE_TTL_MS = exports.ACTIVE_RETURN_STATUSES = void 0;
4
+ exports.isActiveReturnStatus = isActiveReturnStatus;
5
+ exports.isActiveStandaloneReturn = isActiveStandaloneReturn;
6
+ exports.isActiveExchange = isActiveExchange;
7
+ exports.assertNoActiveConflictingRma = assertNoActiveConflictingRma;
8
+ exports.orderHasActiveMedusaRma = orderHasActiveMedusaRma;
9
+ exports.acquireOrderRmaGate = acquireOrderRmaGate;
10
+ exports.releaseOrderRmaGate = releaseOrderRmaGate;
11
+ exports.setOrderRmaGateReference = setOrderRmaGateReference;
12
+ const utils_1 = require("@medusajs/framework/utils");
13
+ const constants_1 = require("../modules/order-rma-gate/constants");
14
+ var constants_2 = require("../modules/order-rma-gate/constants");
15
+ Object.defineProperty(exports, "ACTIVE_RETURN_STATUSES", { enumerable: true, get: function () { return constants_2.ACTIVE_RETURN_STATUSES; } });
16
+ Object.defineProperty(exports, "STALE_GATE_TTL_MS", { enumerable: true, get: function () { return constants_2.STALE_GATE_TTL_MS; } });
17
+ var stale_reclaim_1 = require("../modules/order-rma-gate/stale-reclaim");
18
+ Object.defineProperty(exports, "evaluateStaleGateReclaim", { enumerable: true, get: function () { return stale_reclaim_1.evaluateStaleGateReclaim; } });
19
+ function isActiveReturnStatus(status) {
20
+ if (!status) {
21
+ return false;
22
+ }
23
+ return constants_1.ACTIVE_RETURN_STATUSES.includes(status);
24
+ }
25
+ /**
26
+ * Standalone refund return (not the return created as part of an exchange).
27
+ */
28
+ function isActiveStandaloneReturn(ret) {
29
+ if (ret.exchange_id) {
30
+ return false;
31
+ }
32
+ return isActiveReturnStatus(ret.status);
33
+ }
34
+ /**
35
+ * Exchange is active while not canceled and (no linked return yet, or linked return still active).
36
+ */
37
+ function isActiveExchange(exchange, linkedReturn) {
38
+ if (exchange.canceled_at) {
39
+ return false;
40
+ }
41
+ const ret = linkedReturn ?? exchange.return ?? null;
42
+ if (!ret) {
43
+ return true;
44
+ }
45
+ return isActiveReturnStatus(ret.status);
46
+ }
47
+ function conflictMessage(requesting, blocking) {
48
+ if (requesting === "exchange" && blocking === "return") {
49
+ return "This order already has a return request. Cancel or complete it before creating an exchange.";
50
+ }
51
+ if (requesting === "return" && blocking === "exchange") {
52
+ return "This order already has an exchange request. Cancel it before creating a return.";
53
+ }
54
+ if (requesting === "return") {
55
+ return "This order already has an active return in progress. Cancel or complete it before creating a new return.";
56
+ }
57
+ return "This order already has an active exchange in progress. Cancel it before creating a new exchange.";
58
+ }
59
+ /**
60
+ * Entity-level mutual exclusion (allowlists). Used after gate acquire and in tests.
61
+ */
62
+ async function assertNoActiveConflictingRma(orderId, requesting, container) {
63
+ const orderModule = container.resolve(utils_1.Modules.ORDER);
64
+ const returns = await orderModule.listReturns({ order_id: orderId }, { take: 100, relations: ["items"] });
65
+ const returnList = Array.isArray(returns) ? returns : [];
66
+ const activeStandalone = returnList.find((r) => isActiveStandaloneReturn(r));
67
+ if (activeStandalone) {
68
+ return {
69
+ allowed: false,
70
+ message: conflictMessage(requesting, "return"),
71
+ type: "NOT_ALLOWED",
72
+ blocking: "return",
73
+ };
74
+ }
75
+ const exchanges = await orderModule.listOrderExchanges({ order_id: orderId }, { take: 100, relations: ["return"] });
76
+ const exchangeList = Array.isArray(exchanges) ? exchanges : [];
77
+ for (const ex of exchangeList) {
78
+ const row = ex;
79
+ let linked = row.return ?? null;
80
+ if (!linked && row.return_id) {
81
+ const found = returnList.find((r) => r.id === row.return_id);
82
+ linked = found ? found : null;
83
+ if (!linked) {
84
+ try {
85
+ const retrieved = await orderModule.retrieveReturn(row.return_id);
86
+ linked = retrieved;
87
+ }
88
+ catch {
89
+ linked = null;
90
+ }
91
+ }
92
+ }
93
+ if (isActiveExchange(row, linked)) {
94
+ return {
95
+ allowed: false,
96
+ message: conflictMessage(requesting, "exchange"),
97
+ type: "NOT_ALLOWED",
98
+ blocking: "exchange",
99
+ };
100
+ }
101
+ }
102
+ return { allowed: true };
103
+ }
104
+ async function orderHasActiveMedusaRma(orderId, container) {
105
+ const asReturn = await assertNoActiveConflictingRma(orderId, "return", container);
106
+ return !asReturn.allowed;
107
+ }
108
+ async function acquireOrderRmaGate(orderId, kind, container) {
109
+ const gateService = container.resolve(constants_1.ORDER_RMA_GATE_MODULE);
110
+ return gateService.acquire(orderId, kind, () => orderHasActiveMedusaRma(orderId, container));
111
+ }
112
+ async function releaseOrderRmaGate(orderId, container) {
113
+ try {
114
+ const gateService = container.resolve(constants_1.ORDER_RMA_GATE_MODULE);
115
+ await gateService.release(orderId);
116
+ }
117
+ catch (e) {
118
+ const msg = e instanceof Error ? e.message : "";
119
+ if (msg.includes("could not be resolved") || msg.includes("not found")) {
120
+ return;
121
+ }
122
+ throw e;
123
+ }
124
+ }
125
+ async function setOrderRmaGateReference(orderId, referenceId, container) {
126
+ const gateService = container.resolve(constants_1.ORDER_RMA_GATE_MODULE);
127
+ await gateService.setReference(orderId, referenceId);
128
+ }
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0dXJuLWV4Y2hhbmdlLWd1YXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2hlbHBlcnMvcmV0dXJuLWV4Y2hhbmdlLWd1YXJkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQW1DQSxvREFLQztBQUtELDREQUtDO0FBS0QsNENBWUM7QUFxQkQsb0VBdURDO0FBRUQsMERBTUM7QUFFRCxrREFPQztBQUVELGtEQWNDO0FBRUQsNERBT0M7QUF4TEQscURBQW1EO0FBQ25ELG1FQUk0QztBQUk1QyxpRUFJNEM7QUFIMUMsbUhBQUEsc0JBQXNCLE9BQUE7QUFDdEIsOEdBQUEsaUJBQWlCLE9BQUE7QUFHbkIseUVBQWtGO0FBQXpFLHlIQUFBLHdCQUF3QixPQUFBO0FBb0JqQyxTQUFnQixvQkFBb0IsQ0FBQyxNQUFpQztJQUNwRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFDRCxPQUFRLGtDQUE0QyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUN2RSxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxHQUFlO0lBQ3RELElBQUksR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUNELE9BQU8sb0JBQW9CLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBQ3pDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGdCQUFnQixDQUM5QixRQUFzQixFQUN0QixZQUFnQztJQUVoQyxJQUFJLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6QixPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxZQUFZLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUE7SUFDbkQsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1QsT0FB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
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ORDER_RMA_GATE_MODULE = exports.STALE_GATE_TTL_MS = exports.ACTIVE_RETURN_STATUSES = void 0;
4
+ /**
5
+ * Medusa ReturnStatus values that count as an open RMA.
6
+ * Do not use `!== "canceled"` — `received` is terminal (no `completed` in the enum).
7
+ * @see `@medusajs/utils` ReturnStatus
8
+ */
9
+ exports.ACTIVE_RETURN_STATUSES = [
10
+ "open",
11
+ "requested",
12
+ "partially_received",
13
+ ];
14
+ /**
15
+ * Max age of an unreferenced gate before lazy reclaim may steal it.
16
+ * Tune if crash-recovery timing needs adjust in production.
17
+ */
18
+ exports.STALE_GATE_TTL_MS = 15 * 60 * 1000;
19
+ /** Module registration key (also exported from index.ts). */
20
+ exports.ORDER_RMA_GATE_MODULE = "order_rma_gate";
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvb3JkZXItcm1hLWdhdGUvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7O0dBSUc7QUFDVSxRQUFBLHNCQUFzQixHQUFHO0lBQ3BDLE1BQU07SUFDTixXQUFXO0lBQ1gsb0JBQW9CO0NBQ1osQ0FBQTtBQUlWOzs7R0FHRztBQUNVLFFBQUEsaUJBQWlCLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUE7QUFJL0MsNkRBQTZEO0FBQ2hELFFBQUEscUJBQXFCLEdBQUcsZ0JBQWdCLENBQUEifQ==
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.evaluateStaleGateReclaim = exports.STALE_GATE_TTL_MS = exports.ACTIVE_RETURN_STATUSES = exports.OrderRmaGateModuleService = exports.ORDER_RMA_GATE_MODULE = void 0;
7
+ const utils_1 = require("@medusajs/framework/utils");
8
+ const service_1 = __importDefault(require("./service"));
9
+ exports.OrderRmaGateModuleService = service_1.default;
10
+ const constants_1 = require("./constants");
11
+ Object.defineProperty(exports, "ORDER_RMA_GATE_MODULE", { enumerable: true, get: function () { return constants_1.ORDER_RMA_GATE_MODULE; } });
12
+ exports.default = (0, utils_1.Module)(constants_1.ORDER_RMA_GATE_MODULE, {
13
+ service: service_1.default,
14
+ });
15
+ var constants_2 = require("./constants");
16
+ Object.defineProperty(exports, "ACTIVE_RETURN_STATUSES", { enumerable: true, get: function () { return constants_2.ACTIVE_RETURN_STATUSES; } });
17
+ Object.defineProperty(exports, "STALE_GATE_TTL_MS", { enumerable: true, get: function () { return constants_2.STALE_GATE_TTL_MS; } });
18
+ var stale_reclaim_1 = require("./stale-reclaim");
19
+ Object.defineProperty(exports, "evaluateStaleGateReclaim", { enumerable: true, get: function () { return stale_reclaim_1.evaluateStaleGateReclaim; } });
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9vcmRlci1ybWEtZ2F0ZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxREFBa0Q7QUFDbEQsd0RBQWlEO0FBU3hDLG9DQVRGLGlCQUF5QixDQVNFO0FBUmxDLDJDQUFtRDtBQUUxQyxzR0FGQSxpQ0FBcUIsT0FFQTtBQUU5QixrQkFBZSxJQUFBLGNBQU0sRUFBQyxpQ0FBcUIsRUFBRTtJQUMzQyxPQUFPLEVBQUUsaUJBQXlCO0NBQ25DLENBQUMsQ0FBQTtBQUdGLHlDQUtvQjtBQUpsQixtSEFBQSxzQkFBc0IsT0FBQTtBQUN0Qiw4R0FBQSxpQkFBaUIsT0FBQTtBQUtuQixpREFBMEQ7QUFBakQseUhBQUEsd0JBQXdCLE9BQUEifQ==
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Migration20260724100000 = void 0;
4
+ const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
5
+ class Migration20260724100000 extends migrations_1.Migration {
6
+ async up() {
7
+ this.addSql(`
8
+ CREATE TABLE IF NOT EXISTS "order_rma_gate" (
9
+ "id" text NOT NULL PRIMARY KEY,
10
+ "order_id" text NOT NULL,
11
+ "kind" text NOT NULL,
12
+ "reference_id" text NULL,
13
+ "created_at" timestamptz NOT NULL DEFAULT now(),
14
+ "updated_at" timestamptz NOT NULL DEFAULT now(),
15
+ "deleted_at" timestamptz NULL
16
+ );
17
+ `);
18
+ this.addSql(`
19
+ CREATE UNIQUE INDEX IF NOT EXISTS "IDX_order_rma_gate_order_id_active"
20
+ ON "order_rma_gate" ("order_id") WHERE "deleted_at" IS NULL;
21
+ `);
22
+ this.addSql(`
23
+ CREATE INDEX IF NOT EXISTS "IDX_order_rma_gate_deleted_at"
24
+ ON "order_rma_gate" ("deleted_at");
25
+ `);
26
+ }
27
+ async down() {
28
+ this.addSql(`DROP INDEX IF EXISTS "IDX_order_rma_gate_deleted_at";`);
29
+ this.addSql(`DROP INDEX IF EXISTS "IDX_order_rma_gate_order_id_active";`);
30
+ this.addSql(`DROP TABLE IF EXISTS "order_rma_gate";`);
31
+ }
32
+ }
33
+ exports.Migration20260724100000 = Migration20260724100000;
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA3MjQxMDAwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9vcmRlci1ybWEtZ2F0ZS9taWdyYXRpb25zL01pZ3JhdGlvbjIwMjYwNzI0MTAwMDAwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlFQUFvRTtBQUVwRSxNQUFhLHVCQUF3QixTQUFRLHNCQUFTO0lBQ3BELEtBQUssQ0FBQyxFQUFFO1FBQ04sSUFBSSxDQUFDLE1BQU0sQ0FBQzs7Ozs7Ozs7OztLQVVYLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxNQUFNLENBQUM7OztLQUdYLENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxNQUFNLENBQUM7OztLQUdYLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksQ0FBQyxNQUFNLENBQUMsdURBQXVELENBQUMsQ0FBQTtRQUNwRSxJQUFJLENBQUMsTUFBTSxDQUFDLDREQUE0RCxDQUFDLENBQUE7UUFDekUsSUFBSSxDQUFDLE1BQU0sQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFBO0lBQ3ZELENBQUM7Q0FDRjtBQTlCRCwwREE4QkMifQ==
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const utils_1 = require("@medusajs/framework/utils");
4
+ const OrderRmaGate = utils_1.model.define("order_rma_gate", {
5
+ id: utils_1.model.id().primaryKey(),
6
+ order_id: utils_1.model.text(),
7
+ kind: utils_1.model.text(),
8
+ reference_id: utils_1.model.text().nullable(),
9
+ });
10
+ exports.default = OrderRmaGate;
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItcm1hLWdhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9vcmRlci1ybWEtZ2F0ZS9tb2RlbHMvb3JkZXItcm1hLWdhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxREFBaUQ7QUFFakQsTUFBTSxZQUFZLEdBQUcsYUFBSyxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRTtJQUNsRCxFQUFFLEVBQUUsYUFBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsRUFBRTtJQUMzQixRQUFRLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRTtJQUN0QixJQUFJLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRTtJQUNsQixZQUFZLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUN0QyxDQUFDLENBQUE7QUFFRixrQkFBZSxZQUFZLENBQUEifQ==