order-management 0.0.21 → 0.0.23

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 (36) hide show
  1. package/.medusa/server/src/admin/index.js +513 -484
  2. package/.medusa/server/src/admin/index.mjs +513 -484
  3. package/.medusa/server/src/api/admin/swaps/[id]/approve/route.js +81 -31
  4. package/.medusa/server/src/api/admin/swaps/[id]/confirm-exchange/route.js +109 -0
  5. package/.medusa/server/src/api/admin/swaps/health/route.js +150 -0
  6. package/.medusa/server/src/api/admin/swaps/route.js +6 -12
  7. package/.medusa/server/src/api/admin/swaps/validators.js +9 -13
  8. package/.medusa/server/src/api/store/orders/[order_id]/swaps/route.js +47 -2
  9. package/.medusa/server/src/api/store/swaps/[id]/cancel/route.js +8 -1
  10. package/.medusa/server/src/api/store/swaps/[id]/route.js +15 -4
  11. package/.medusa/server/src/api/store/swaps/route.js +53 -10
  12. package/.medusa/server/src/helpers/swaps.js +1 -1
  13. package/.medusa/server/src/modules/swap/migrations/Migration20260123144734.js +29 -0
  14. package/.medusa/server/src/modules/swap/migrations/Migration20260123162423.js +48 -0
  15. package/.medusa/server/src/modules/swap/migrations/Migration20260126114640.js +48 -0
  16. package/.medusa/server/src/modules/swap/models/swap.js +7 -2
  17. package/.medusa/server/src/modules/swap/service.js +259 -32
  18. package/.medusa/server/src/subscribers/exchange-created.js +207 -0
  19. package/.medusa/server/src/workflows/steps/swap/create-medusa-exchange-step.js +166 -20
  20. package/.medusa/server/src/workflows/steps/swap/create-medusa-return-step.js +76 -8
  21. package/.medusa/server/src/workflows/steps/swap/create-swap-step.js +7 -12
  22. package/.medusa/server/src/workflows/steps/swap/index.js +6 -4
  23. package/.medusa/server/src/workflows/steps/swap/rollback-return-step.js +70 -0
  24. package/.medusa/server/src/workflows/steps/swap/sync-medusa-status-step.js +49 -3
  25. package/.medusa/server/src/workflows/steps/swap/update-swap-exchange-details-step.js +27 -0
  26. package/.medusa/server/src/workflows/steps/swap/validate-eligibility-step.js +9 -4
  27. package/.medusa/server/src/workflows/steps/swap/validate-order-step.js +24 -1
  28. package/.medusa/server/src/workflows/swaps/approve-swap-workflow.js +23 -5
  29. package/.medusa/server/src/workflows/swaps/confirm-exchange-workflow.js +51 -0
  30. package/.medusa/server/src/workflows/swaps/create-swap-workflow.js +3 -1
  31. package/.medusa/server/src/workflows/swaps/execute-swap-workflow.js +26 -4
  32. package/package.json +1 -1
  33. package/.medusa/server/src/api/admin/swaps/[id]/process-payment/route.js +0 -152
  34. package/.medusa/server/src/api/admin/swaps/[id]/status/route.js +0 -45
  35. package/.medusa/server/src/api/admin/swaps/[id]/sync/route.js +0 -148
  36. package/.medusa/server/src/workflows/steps/swap/handle-payment-difference-step.js +0 -102
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.POST = void 0;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
5
  const approve_swap_workflow_1 = require("../../../../../workflows/swaps/approve-swap-workflow");
6
- const execute_swap_workflow_1 = require("../../../../../workflows/swaps/execute-swap-workflow");
6
+ const validators_1 = require("../../validators");
7
+ const swap_1 = require("../../../../../modules/swap");
8
+ const zod_1 = require("zod");
7
9
  const POST = async (req, res) => {
8
10
  const { id } = req.params;
9
11
  if (!id) {
@@ -14,43 +16,92 @@ const POST = async (req, res) => {
14
16
  const authContext = req.auth_context;
15
17
  const adminId = authContext?.actor_id || authContext?.user_id || "admin";
16
18
  try {
17
- // Step 1: Approve the swap
19
+ // Parse and validate request body for exchange details
20
+ const exchangeDetails = validators_1.ApproveSwapSchema.parse(req.body || {});
21
+ // Store exchange details but keep status as "requested"
22
+ // Admin will create exchange using the form, then swap will be approved
18
23
  const { result: approvalResult } = await (0, approve_swap_workflow_1.approveSwapWorkflow)(req.scope).run({
19
24
  input: {
20
25
  swap_id: id,
21
26
  admin_id: adminId,
27
+ return_location_id: exchangeDetails.return_location_id,
28
+ return_shipping_method_id: exchangeDetails.return_shipping_method_id,
29
+ outbound_shipping_method_id: exchangeDetails.outbound_shipping_method_id,
30
+ send_notification: exchangeDetails.send_notification,
22
31
  },
23
32
  });
24
- // Step 2: Execute swap (create Medusa return and exchange)
25
- try {
26
- const { result: executionResult } = await (0, execute_swap_workflow_1.executeSwapWorkflow)(req.scope).run({
27
- input: {
28
- swap_id: id,
29
- },
30
- });
31
- res.json({
32
- ...approvalResult,
33
- execution: executionResult,
33
+ // Get swap to retrieve order_id
34
+ const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
35
+ const swap = await swapService.retrieveSwap(id);
36
+ const swapData = swap;
37
+ // Return response with flag to show exchange form
38
+ res.json({
39
+ swap: approvalResult.swap,
40
+ show_exchange_form: true,
41
+ order_id: swapData.order_id,
42
+ exchange_details: {
43
+ return_items: swapData.return_items,
44
+ new_items: swapData.new_items,
45
+ return_location_id: exchangeDetails.return_location_id,
46
+ return_shipping_method_id: exchangeDetails.return_shipping_method_id,
47
+ outbound_shipping_method_id: exchangeDetails.outbound_shipping_method_id,
48
+ send_notification: exchangeDetails.send_notification,
49
+ },
50
+ message: "Please create the exchange using the form below.",
51
+ });
52
+ }
53
+ catch (error) {
54
+ // Handle Zod validation errors
55
+ if (error instanceof zod_1.z.ZodError) {
56
+ res.status(400).json({
57
+ message: "Invalid request data",
58
+ errors: error.errors,
34
59
  });
60
+ return;
35
61
  }
36
- catch (executionError) {
37
- // If execution fails, still return approval result but log the error
38
- // Admin can retry execution later
39
- if (executionError instanceof utils_1.MedusaError) {
40
- res.status(500).json({
41
- ...approvalResult,
42
- execution_error: {
43
- message: executionError.message,
44
- type: executionError.type,
45
- },
46
- warning: "Swap was approved but Medusa exchange creation failed. Please retry execution.",
47
- });
48
- return;
49
- }
50
- throw executionError;
62
+ // Extract error message - handle various error formats
63
+ let errorMessage = "Unknown error";
64
+ let errorStack;
65
+ let errorType;
66
+ if (error instanceof Error) {
67
+ errorMessage = error.message;
68
+ errorStack = error.stack;
69
+ errorType = error.type;
51
70
  }
52
- }
53
- catch (error) {
71
+ else if (error && typeof error === "object") {
72
+ const errorObj = error;
73
+ errorMessage = String(errorObj.message ||
74
+ errorObj.error ||
75
+ errorObj.reason ||
76
+ JSON.stringify(errorObj));
77
+ errorStack = errorObj.stack;
78
+ errorType = errorObj.type;
79
+ }
80
+ else {
81
+ errorMessage = String(error);
82
+ }
83
+ // Log full error details
84
+ let errorStringified = "Unable to stringify";
85
+ try {
86
+ errorStringified = JSON.stringify(error, (key, value) => {
87
+ if (key === "parent" || key === "children" || key === "container") {
88
+ return "[Circular]";
89
+ }
90
+ return value;
91
+ }, 2);
92
+ }
93
+ catch {
94
+ errorStringified = `Stringify failed`;
95
+ }
96
+ console.error("[Approve Swap] Error:", {
97
+ swap_id: id,
98
+ error_message: errorMessage,
99
+ error_type: errorType,
100
+ error_stack: errorStack,
101
+ error_stringified: errorStringified,
102
+ error_constructor: error?.constructor?.name,
103
+ error_keys: error && typeof error === "object" ? Object.keys(error) : [],
104
+ });
54
105
  if (error instanceof utils_1.MedusaError) {
55
106
  const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND
56
107
  ? 404
@@ -63,7 +114,6 @@ const POST = async (req, res) => {
63
114
  });
64
115
  return;
65
116
  }
66
- const errorMessage = error instanceof Error ? error.message : "Unknown error";
67
117
  res.status(500).json({
68
118
  message: "Failed to approve swap",
69
119
  error: errorMessage,
@@ -71,4 +121,4 @@ const POST = async (req, res) => {
71
121
  }
72
122
  };
73
123
  exports.POST = POST;
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vYXBwcm92ZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBdUQ7QUFDdkQsZ0dBQTBGO0FBQzFGLGdHQUEwRjtBQUVuRixNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ0osRUFBRTtJQUNqQixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUV6QixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDUixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUE7UUFDeEQsT0FBTTtJQUNSLENBQUM7SUFFRCxtQ0FBbUM7SUFDbkMsTUFBTSxXQUFXLEdBQUksR0FFbkIsQ0FBQyxZQUFZLENBQUE7SUFFZixNQUFNLE9BQU8sR0FBRyxXQUFXLEVBQUUsUUFBUSxJQUFJLFdBQVcsRUFBRSxPQUFPLElBQUksT0FBTyxDQUFBO0lBRXhFLElBQUksQ0FBQztRQUNILDJCQUEyQjtRQUMzQixNQUFNLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sSUFBQSwyQ0FBbUIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQzFFLEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsRUFBRTtnQkFDWCxRQUFRLEVBQUUsT0FBTzthQUNsQjtTQUNGLENBQUMsQ0FBQTtRQUVGLDJEQUEyRDtRQUMzRCxJQUFJLENBQUM7WUFDSCxNQUFNLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxHQUFHLE1BQU0sSUFBQSwyQ0FBbUIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUMzRSxLQUFLLEVBQUU7b0JBQ0wsT0FBTyxFQUFFLEVBQUU7aUJBQ1o7YUFDRixDQUFDLENBQUE7WUFFRixHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUNQLEdBQUcsY0FBYztnQkFDakIsU0FBUyxFQUFFLGVBQWU7YUFDM0IsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUFDLE9BQU8sY0FBYyxFQUFFLENBQUM7WUFDeEIscUVBQXFFO1lBQ3JFLGtDQUFrQztZQUNsQyxJQUFJLGNBQWMsWUFBWSxtQkFBVyxFQUFFLENBQUM7Z0JBQzFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNuQixHQUFHLGNBQWM7b0JBQ2pCLGVBQWUsRUFBRTt3QkFDZixPQUFPLEVBQUUsY0FBYyxDQUFDLE9BQU87d0JBQy9CLElBQUksRUFBRSxjQUFjLENBQUMsSUFBSTtxQkFDMUI7b0JBQ0QsT0FBTyxFQUFFLGdGQUFnRjtpQkFDMUYsQ0FBQyxDQUFBO2dCQUNGLE9BQU07WUFDUixDQUFDO1lBRUQsTUFBTSxjQUFjLENBQUE7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLFlBQVksbUJBQVcsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sVUFBVSxHQUNkLEtBQUssQ0FBQyxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUztnQkFDeEMsQ0FBQyxDQUFDLEdBQUc7Z0JBQ0wsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWTtvQkFDL0MsQ0FBQyxDQUFDLEdBQUc7b0JBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtZQUVULEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUMxQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQ3RCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTthQUNqQixDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUM3RSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsd0JBQXdCO1lBQ2pDLEtBQUssRUFBRSxZQUFZO1NBQ3BCLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDLENBQUE7QUE5RVksUUFBQSxJQUFJLFFBOEVoQiJ9
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vYXBwcm92ZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBdUQ7QUFDdkQsZ0dBQTBGO0FBQzFGLGlEQUFvRDtBQUNwRCxzREFBeUQ7QUFFekQsNkJBQXVCO0FBRWhCLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBa0IsRUFDbEIsR0FBbUIsRUFDSixFQUFFO0lBQ2pCLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO0lBRXpCLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNSLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQTtRQUN4RCxPQUFNO0lBQ1IsQ0FBQztJQUVELG1DQUFtQztJQUNuQyxNQUFNLFdBQVcsR0FBSSxHQUVuQixDQUFDLFlBQVksQ0FBQTtJQUVmLE1BQU0sT0FBTyxHQUFHLFdBQVcsRUFBRSxRQUFRLElBQUksV0FBVyxFQUFFLE9BQU8sSUFBSSxPQUFPLENBQUE7SUFFeEUsSUFBSSxDQUFDO1FBQ0gsdURBQXVEO1FBQ3ZELE1BQU0sZUFBZSxHQUFHLDhCQUFpQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBRS9ELHdEQUF3RDtRQUN4RCx3RUFBd0U7UUFDeEUsTUFBTSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLElBQUEsMkNBQW1CLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMxRSxLQUFLLEVBQUU7Z0JBQ0wsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLGtCQUFrQixFQUFFLGVB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
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const confirm_exchange_workflow_1 = require("../../../../../workflows/swaps/confirm-exchange-workflow");
6
+ const zod_1 = require("zod");
7
+ const ConfirmExchangeSchema = zod_1.z.object({
8
+ return_items: zod_1.z.array(zod_1.z.object({
9
+ item_id: zod_1.z.string(),
10
+ quantity: zod_1.z.number().positive(),
11
+ reason_id: zod_1.z.string().optional(),
12
+ })),
13
+ new_items: zod_1.z.array(zod_1.z.object({
14
+ variant_id: zod_1.z.string(),
15
+ quantity: zod_1.z.number().positive(),
16
+ })),
17
+ return_location_id: zod_1.z.string().optional(),
18
+ return_shipping_method_id: zod_1.z.string().optional(),
19
+ outbound_shipping_method_id: zod_1.z.string().optional(),
20
+ send_notification: zod_1.z.boolean().optional().default(false),
21
+ });
22
+ const POST = async (req, res) => {
23
+ const { id } = req.params;
24
+ if (!id) {
25
+ res.status(400).json({ message: "Swap ID is required" });
26
+ return;
27
+ }
28
+ // Type-safe access to auth_context
29
+ const authContext = req.auth_context;
30
+ const adminId = authContext?.actor_id || authContext?.user_id || "admin";
31
+ try {
32
+ // Parse and validate request body
33
+ const exchangeData = ConfirmExchangeSchema.parse(req.body || {});
34
+ // Create exchange and approve swap
35
+ const { result } = await (0, confirm_exchange_workflow_1.confirmExchangeWorkflow)(req.scope).run({
36
+ input: {
37
+ swap_id: id,
38
+ admin_id: adminId,
39
+ return_items: exchangeData.return_items,
40
+ new_items: exchangeData.new_items,
41
+ return_location_id: exchangeData.return_location_id,
42
+ return_shipping_method_id: exchangeData.return_shipping_method_id,
43
+ outbound_shipping_method_id: exchangeData.outbound_shipping_method_id,
44
+ send_notification: exchangeData.send_notification,
45
+ },
46
+ });
47
+ res.json({
48
+ swap: result.swap,
49
+ return_id: result.return_id,
50
+ exchange_id: result.exchange_id,
51
+ message: "Exchange created and swap approved successfully.",
52
+ });
53
+ }
54
+ catch (error) {
55
+ // Handle Zod validation errors
56
+ if (error instanceof zod_1.z.ZodError) {
57
+ res.status(400).json({
58
+ message: "Invalid request data",
59
+ errors: error.errors,
60
+ });
61
+ return;
62
+ }
63
+ // Extract error message - handle various error formats
64
+ let errorMessage = "Unknown error";
65
+ let errorStack;
66
+ let errorType;
67
+ if (error instanceof Error) {
68
+ errorMessage = error.message;
69
+ errorStack = error.stack;
70
+ errorType = error.type;
71
+ }
72
+ else if (error && typeof error === "object") {
73
+ const errorObj = error;
74
+ errorMessage = String(errorObj.message ||
75
+ errorObj.error ||
76
+ errorObj.reason ||
77
+ JSON.stringify(errorObj));
78
+ errorStack = errorObj.stack;
79
+ errorType = errorObj.type;
80
+ }
81
+ else {
82
+ errorMessage = String(error);
83
+ }
84
+ console.error("[Confirm Exchange] Error:", {
85
+ swap_id: id,
86
+ error_message: errorMessage,
87
+ error_type: errorType,
88
+ error_stack: errorStack,
89
+ });
90
+ if (error instanceof utils_1.MedusaError) {
91
+ const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND
92
+ ? 404
93
+ : error.type === utils_1.MedusaError.Types.INVALID_DATA
94
+ ? 400
95
+ : 500;
96
+ res.status(statusCode).json({
97
+ message: error.message,
98
+ type: error.type,
99
+ });
100
+ return;
101
+ }
102
+ res.status(500).json({
103
+ message: "Failed to confirm exchange",
104
+ error: errorMessage,
105
+ });
106
+ }
107
+ };
108
+ exports.POST = POST;
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vY29uZmlybS1leGNoYW5nZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBdUQ7QUFDdkQsd0dBQWtHO0FBQ2xHLDZCQUF1QjtBQUV2QixNQUFNLHFCQUFxQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDckMsWUFBWSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQ25CLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUNuQixRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtRQUMvQixTQUFTLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtLQUNqQyxDQUFDLENBQ0g7SUFDRCxTQUFTLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FDaEIsT0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNQLFVBQVUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFO1FBQ3RCLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0tBQ2hDLENBQUMsQ0FDSDtJQUNELGtCQUFrQixFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDekMseUJBQXlCLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNoRCwyQkFBMkIsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2xELGlCQUFpQixFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0NBQ3pELENBQUMsQ0FBQTtBQUVLLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBa0Is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
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const swap_1 = require("../../../../modules/swap");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ /**
7
+ * Health check endpoint for swap/exchange system
8
+ * Returns status of subscribers, database, and Medusa integration
9
+ */
10
+ const GET = async (req, res) => {
11
+ const health = {
12
+ status: "healthy",
13
+ timestamp: new Date().toISOString(),
14
+ checks: {},
15
+ };
16
+ try {
17
+ // Check 1: Database connectivity
18
+ try {
19
+ const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
20
+ await swapService.listSwaps({}, { take: 1 });
21
+ health.checks.database = {
22
+ status: "ok",
23
+ message: "Database connection successful",
24
+ };
25
+ }
26
+ catch (error) {
27
+ health.status = "unhealthy";
28
+ health.checks.database = {
29
+ status: "error",
30
+ message: "Database connection failed",
31
+ details: error instanceof Error ? error.message : String(error),
32
+ };
33
+ }
34
+ // Check 2: Medusa RemoteQuery connectivity
35
+ try {
36
+ const remoteQuery = req.scope.resolve(utils_1.ContainerRegistrationKeys.REMOTE_QUERY);
37
+ // Test query - try to query a simple entity
38
+ const queryObject = (0, utils_1.remoteQueryObjectFromString)({
39
+ entryPoint: "product",
40
+ fields: ["id"],
41
+ });
42
+ await remoteQuery(queryObject);
43
+ health.checks.medusa_integration = {
44
+ status: "ok",
45
+ message: "Medusa RemoteQuery connection successful",
46
+ };
47
+ }
48
+ catch (error) {
49
+ health.status = health.status === "unhealthy" ? "unhealthy" : "degraded";
50
+ health.checks.medusa_integration = {
51
+ status: "warning",
52
+ message: "Medusa RemoteQuery connection failed",
53
+ details: error instanceof Error ? error.message : String(error),
54
+ };
55
+ }
56
+ // Check 3: Check for swaps with sync failures
57
+ try {
58
+ const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
59
+ const swaps = await swapService.listSwaps({}, { take: 100 });
60
+ const swapsArray = Array.isArray(swaps) ? swaps : swaps ? [swaps] : [];
61
+ const swapsWithSyncFailures = swapsArray.filter((swap) => {
62
+ const swapData = swap;
63
+ const metadata = swapData.metadata || {};
64
+ const syncFailures = metadata.sync_failures;
65
+ return syncFailures && syncFailures.length > 0;
66
+ });
67
+ const swapsWithExecutionFailures = swapsArray.filter((swap) => {
68
+ const swapData = swap;
69
+ const metadata = swapData.metadata || {};
70
+ const executionFailures = metadata.execution_failures;
71
+ return executionFailures && executionFailures.length > 0;
72
+ });
73
+ if (swapsWithSyncFailures.length > 0 || swapsWithExecutionFailures.length > 0) {
74
+ health.status = health.status === "unhealthy" ? "unhealthy" : "degraded";
75
+ health.checks.swap_failures = {
76
+ status: "warning",
77
+ message: `Found ${swapsWithSyncFailures.length} swaps with sync failures and ${swapsWithExecutionFailures.length} with execution failures`,
78
+ details: {
79
+ sync_failures_count: swapsWithSyncFailures.length,
80
+ execution_failures_count: swapsWithExecutionFailures.length,
81
+ },
82
+ };
83
+ }
84
+ else {
85
+ health.checks.swap_failures = {
86
+ status: "ok",
87
+ message: "No swaps with failures found",
88
+ };
89
+ }
90
+ }
91
+ catch (error) {
92
+ health.status = health.status === "unhealthy" ? "unhealthy" : "degraded";
93
+ health.checks.swap_failures = {
94
+ status: "warning",
95
+ message: "Failed to check swap failures",
96
+ details: error instanceof Error ? error.message : String(error),
97
+ };
98
+ }
99
+ // Check 4: Check for orphaned swaps (have return_id but no exchange_id)
100
+ try {
101
+ const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
102
+ const swaps = await swapService.listSwaps({}, { take: 100 });
103
+ const swapsArray = Array.isArray(swaps) ? swaps : swaps ? [swaps] : [];
104
+ const orphanedSwaps = swapsArray.filter((swap) => {
105
+ const swapData = swap;
106
+ return (swapData.return_id &&
107
+ !swapData.exchange_id &&
108
+ swapData.status === "approved");
109
+ });
110
+ if (orphanedSwaps.length > 0) {
111
+ health.status = health.status === "unhealthy" ? "unhealthy" : "degraded";
112
+ health.checks.orphaned_swaps = {
113
+ status: "warning",
114
+ message: `Found ${orphanedSwaps.length} orphaned swaps (have return_id but no exchange_id)`,
115
+ details: {
116
+ count: orphanedSwaps.length,
117
+ swap_ids: orphanedSwaps.map((s) => s.id).filter(Boolean),
118
+ },
119
+ };
120
+ }
121
+ else {
122
+ health.checks.orphaned_swaps = {
123
+ status: "ok",
124
+ message: "No orphaned swaps found",
125
+ };
126
+ }
127
+ }
128
+ catch (error) {
129
+ health.status = health.status === "unhealthy" ? "unhealthy" : "degraded";
130
+ health.checks.orphaned_swaps = {
131
+ status: "warning",
132
+ message: "Failed to check orphaned swaps",
133
+ details: error instanceof Error ? error.message : String(error),
134
+ };
135
+ }
136
+ const statusCode = health.status === "unhealthy" ? 503 : health.status === "degraded" ? 200 : 200;
137
+ res.status(statusCode).json(health);
138
+ }
139
+ catch (error) {
140
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
141
+ res.status(503).json({
142
+ status: "unhealthy",
143
+ timestamp: new Date().toISOString(),
144
+ error: errorMessage,
145
+ checks: health.checks,
146
+ });
147
+ }
148
+ };
149
+ exports.GET = GET;
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL2hlYWx0aC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtREFBc0Q7QUFFdEQscURBQWtHO0FBR2xHOzs7R0FHRztBQUNJLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFDdEIsR0FBa0IsRUFDbEIsR0FBbUIsRUFDSixFQUFFO0lBQ2pCLE1BQU0sTUFBTSxHQVFSO1FBQ0YsTUFBTSxFQUFFLFNBQVM7UUFDakIsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO1FBQ25DLE1BQU0sRUFBRSxFQUFFO0tBQ1gsQ0FBQTtJQUVELElBQUksQ0FBQztRQUNILGlDQUFpQztRQUNqQyxJQUFJLENBQUM7WUFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7WUFDL0QsTUFBTSxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQzVDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHO2dCQUN2QixNQUFNLEVBQUUsSUFBSTtnQkFDWixPQUFPLEVBQUUsZ0NBQWdDO2FBQzFDLENBQUE7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFBO1lBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHO2dCQUN2QixNQUFNLEVBQUUsT0FBTztnQkFDZixPQUFPLEVBQUUsNEJBQTRCO2dCQUNyQyxPQUFPLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUNoRSxDQUFBO1FBQ0gs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
@@ -18,23 +18,17 @@ const GET = async (req, res) => {
18
18
  if (orderId) {
19
19
  filters.order_id = orderId;
20
20
  }
21
- // Note: customer_id filtering would require joining with orders table
22
- // For now, we'll filter client-side if needed
21
+ if (customerId) {
22
+ filters.customer_id = customerId;
23
+ }
23
24
  const swaps = await swapService.listSwaps(filters, {
24
25
  take: limit,
25
26
  skip: offset,
26
27
  });
27
28
  const swapArray = Array.isArray(swaps) ? swaps : swaps ? [swaps] : [];
28
- // Filter by customer_id if provided (would need order lookup in production)
29
- let filteredSwaps = swapArray;
30
- if (customerId) {
31
- // In production, you'd want to join with orders table
32
- // For now, we'll return all swaps
33
- filteredSwaps = swapArray;
34
- }
35
29
  res.json({
36
- swaps: filteredSwaps,
37
- count: filteredSwaps.length,
30
+ swaps: swapArray,
31
+ count: swapArray.length,
38
32
  limit,
39
33
  offset,
40
34
  });
@@ -48,4 +42,4 @@ const GET = async (req, res) => {
48
42
  }
49
43
  };
50
44
  exports.GET = GET;
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLGdEQUFtRDtBQUc1QyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3RCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ0osRUFBRTtJQUNqQixJQUFJLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7UUFFL0QsdUJBQXVCO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBNEIsQ0FBQTtRQUNyRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQThCLENBQUE7UUFDeEQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFpQyxDQUFBO1FBQzlELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUM1RSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRTlFLE1BQU0sT0FBTyxHQUE0QixFQUFFLENBQUE7UUFDM0MsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3pCLENBQUM7UUFDRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUE7UUFDNUIsQ0FBQztRQUNELHNFQUFzRTtRQUN0RSw4Q0FBOEM7UUFFOUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUNqRCxJQUFJLEVBQUUsS0FBSztZQUNYLElBQUksRUFBRSxNQUFNO1NBQ2IsQ0FBQyxDQUFBO1FBRUYsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUVyRSw0RUFBNEU7UUFDNUUsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFBO1FBQzdCLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixzREFBc0Q7WUFDdEQsa0NBQWtDO1lBQ2xDLGFBQWEsR0FBRyxTQUFTLENBQUE7UUFDM0IsQ0FBQztRQUVELEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDUCxLQUFLLEVBQUUsYUFBYTtZQUNwQixLQUFLLEVBQUUsYUFBYSxDQUFDLE1BQU07WUFDM0IsS0FBSztZQUNMLE1BQU07U0FDUCxDQUFDLENBQUE7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUM3RSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsMEJBQTBCO1lBQ25DLEtBQUssRUFBRSxZQUFZO1NBQ3BCLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDLENBQUE7QUFwRFksUUFBQSxHQUFHLE9Bb0RmIn0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLGdEQUFtRDtBQUc1QyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3RCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ0osRUFBRTtJQUNqQixJQUFJLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7UUFFL0QsdUJBQXVCO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBNEIsQ0FBQTtRQUNyRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQThCLENBQUE7UUFDeEQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFpQyxDQUFBO1FBQzlELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUM1RSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRTlFLE1BQU0sT0FBTyxHQUE0QixFQUFFLENBQUE7UUFDM0MsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3pCLENBQUM7UUFDRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUE7UUFDNUIsQ0FBQztRQUNELElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQTtRQUNsQyxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUNqRCxJQUFJLEVBQUUsS0FBSztZQUNYLElBQUksRUFBRSxNQUFNO1NBQ2IsQ0FBQyxDQUFBO1FBRUYsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUVyRSxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ1AsS0FBSyxFQUFFLFNBQVM7WUFDaEIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1lBQ3ZCLEtBQUs7WUFDTCxNQUFNO1NBQ1AsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLFlBQVksR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUE7UUFDN0UsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxFQUFFLDBCQUEwQjtZQUNuQyxLQUFLLEVBQUUsWUFBWTtTQUNwQixDQUFDLENBQUE7SUFDSixDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBN0NZLFFBQUEsR0FBRyxPQTZDZiJ9
@@ -1,22 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RejectSwapSchema = exports.UpdateSwapStatusSchema = void 0;
3
+ exports.ApproveSwapSchema = exports.RejectSwapSchema = exports.UpdateSwapStatusSchema = void 0;
4
4
  const zod_1 = require("zod");
5
5
  exports.UpdateSwapStatusSchema = zod_1.z.object({
6
- status: zod_1.z.enum([
7
- "requested",
8
- "approved",
9
- "rejected",
10
- "return_started",
11
- "return_shipped",
12
- "return_received",
13
- "new_items_shipped",
14
- "completed",
15
- "cancelled",
16
- ]),
6
+ status: zod_1.z.enum(["requested", "approved", "rejected"]),
17
7
  metadata: zod_1.z.record(zod_1.z.unknown()).optional(),
18
8
  });
19
9
  exports.RejectSwapSchema = zod_1.z.object({
20
10
  reason: zod_1.z.string().optional(),
21
11
  });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vc3dhcHMvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBdUI7QUFFVixRQUFBLHNCQUFzQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0MsTUFBTSxFQUFFLE9BQUMsQ0FBQyxJQUFJLENBQUM7UUFDYixXQUFXO1FBQ1gsVUFBVTtRQUNWLFVBQVU7UUFDVixnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQixtQkFBbUI7UUFDbkIsV0FBVztRQUNYLFdBQVc7S0FDWixDQUFDO0lBQ0YsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO0NBQzNDLENBQUMsQ0FBQTtBQUVXLFFBQUEsZ0JBQWdCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN2QyxNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUM5QixDQUFDLENBQUEifQ==
12
+ exports.ApproveSwapSchema = zod_1.z.object({
13
+ return_location_id: zod_1.z.string().optional(),
14
+ return_shipping_method_id: zod_1.z.string().optional(),
15
+ outbound_shipping_method_id: zod_1.z.string().optional(),
16
+ send_notification: zod_1.z.boolean().optional().default(false),
17
+ });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vc3dhcHMvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBdUI7QUFFVixRQUFBLHNCQUFzQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0MsTUFBTSxFQUFFLE9BQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtDQUMzQyxDQUFDLENBQUE7QUFFVyxRQUFBLGdCQUFnQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDdkMsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDOUIsQ0FBQyxDQUFBO0FBRVcsUUFBQSxpQkFBaUIsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3hDLGtCQUFrQixFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDekMseUJBQXlCLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNoRCwyQkFBMkIsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2xELGlCQUFpQixFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0NBQ3pELENBQUMsQ0FBQSJ9
@@ -31,7 +31,11 @@ const GET = async (req, res) => {
31
31
  }
32
32
  try {
33
33
  const swapService = req.scope.resolve(index_js_1.SWAP_MODULE);
34
- const swaps = await swapService.listSwaps({ order_id }, {
34
+ // Always filter by authenticated customer_id for security
35
+ const swaps = await swapService.listSwaps({
36
+ order_id,
37
+ customer_id: customerId,
38
+ }, {
35
39
  take: 100,
36
40
  skip: 0,
37
41
  });
@@ -78,6 +82,10 @@ const POST = async (req, res) => {
78
82
  });
79
83
  // Validate request body
80
84
  const body = CreateSwapSchema.parse(requestBody);
85
+ // Ensure workflow is available
86
+ if (!create_swap_workflow_js_1.createSwapWorkflow) {
87
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Swap workflow is not available. Please ensure the plugin is properly installed.");
88
+ }
81
89
  const { result } = await (0, create_swap_workflow_js_1.createSwapWorkflow)(req.scope).run({
82
90
  input: {
83
91
  order_id,
@@ -127,6 +135,43 @@ const POST = async (req, res) => {
127
135
  }
128
136
  const errorMessage = error instanceof Error ? error.message : "Unknown error";
129
137
  const errorStack = error instanceof Error ? error.stack : undefined;
138
+ // Check for workflow resolution errors
139
+ if (errorMessage.includes("Could not resolve") ||
140
+ errorMessage.includes("Workflow not available") ||
141
+ errorMessage.includes("orderModuleService") ||
142
+ errorMessage.includes("createSwapWorkflow")) {
143
+ console.error("Workflow or service resolution error:", {
144
+ order_id,
145
+ customer_id: customerId,
146
+ error: errorMessage,
147
+ stack: errorStack,
148
+ body: req.body,
149
+ note: "This might indicate a plugin configuration issue. Ensure the plugin is properly installed and workflows are exported correctly.",
150
+ });
151
+ res.status(500).json({
152
+ message: "Failed to initialize swap workflow",
153
+ error: errorMessage,
154
+ hint: "Please ensure the order-management plugin is properly installed and configured.",
155
+ });
156
+ return;
157
+ }
158
+ // Check for specific error about orderModuleService.list
159
+ if (errorMessage.includes("orderModuleService.list") || errorMessage.includes(".list is not a function")) {
160
+ console.error("Order service method error:", {
161
+ order_id,
162
+ customer_id: customerId,
163
+ error: errorMessage,
164
+ stack: errorStack,
165
+ body: req.body,
166
+ note: "Order service does not have a .list() method. Use remoteQuery or listOrders instead.",
167
+ });
168
+ res.status(500).json({
169
+ message: "Failed to verify order",
170
+ error: errorMessage,
171
+ hint: "Order service method error. Please check order verification implementation.",
172
+ });
173
+ return;
174
+ }
130
175
  console.error("Failed to create swap:", {
131
176
  order_id,
132
177
  customer_id: customerId,
@@ -141,4 +186,4 @@ const POST = async (req, res) => {
141
186
  }
142
187
  };
143
188
  exports.POST = POST;
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL29yZGVycy9bb3JkZXJfaWRdL3N3YXBzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUF1RDtBQUN2RCxvR0FBMkY7QUFDM0YsbUVBQWtFO0FBRWxFLDZCQUF1QjtBQUV2QixNQUFNLGdCQUFnQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDaEMsWUFBWSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQ25CLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUNkLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO1FBQy9CLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0tBQzlCLENBQUMsQ0FDSDtJQUNELFNBQVMsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUNoQixPQUFDLENBQUMsTUFBTSxDQUFDO1FBQ1AsVUFBVSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDdEIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7S0FDaEMsQ0FBQyxDQUNIO0lBQ0QsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDNUIsQ0FBQyxDQUFBO0FBRUssTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUFrQixFQUNsQixHQUFtQixFQUNKLEVBQUU7SUFDakIsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFFL0IsbUNBQW1DO0lBQ25DLE1BQU0sV0FBVyxHQUFJLEdBRW5CLENBQUMsWUFBWSxDQUFB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
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL29yZGVycy9bb3JkZXJfaWRdL3N3YXBzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUF1RDtBQUN2RCxvR0FBMkY7QUFDM0YsbUVBQWtFO0FBRWxFLDZCQUF1QjtBQUV2QixNQUFNLGdCQUFnQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDaEMsWUFBWSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQ25CLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUNkLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO1FBQy9CLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0tBQzlCLENBQUMsQ0FDSDtJQUNELFNBQVMsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUNoQixPQUFDLENBQUMsTUFBTSxDQUFDO1FBQ1AsVUFBVSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDdEIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7S0FDaEMsQ0FBQyxDQUNIO0lBQ0QsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDNUIsQ0FBQyxDQUFBO0FBRUssTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUFrQixFQUNsQixHQUFtQixFQUNKLEVBQUU7SUFDakIsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFFL0IsbUNBQW1DO0lBQ25DLE1BQU0sV0FBVyxHQUFJLEdBRW5CLENBQUMsWUFBWSxDQUFBO0lBRWYsTUFBTSxVQUFVLEdBQUcsV0FBVyxFQUFFLFFBQVEsQ0FBQTtJQUV4QyxJQUFJLENBQUMsVUFBVSxJQUFJLFdBQVcsRUFBRSxVQUFVLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDMUQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxFQUFFLG1EQUFtRDtTQUM3RCxDQUFDLENBQUE7UUFDRixPQUFNO0lBQ1IsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFjLHNCQUFXLENBQUMsQ0FBQTtRQUUvRCwwREFBMEQ7UUFDMUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxXQUFXLENBQUMsU0FBUyxDQUN2QztZQUNFLFFBQVE7WUFDUixXQUFXLEVBQUUsVUFBVTtTQUN4QixFQUNEO1lBQ0UsSUFBSSxFQUFFLEdBQUc7WUFDVCxJQUFJLEVBQUUsQ0FBQztTQUNSLENBQ0YsQ0FBQTtRQUVELEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDUCxLQUFLLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7U0FDM0QsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLFlBQVksR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUE7UUFDN0UsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxFQUFFLDBCQUEwQjtZQUNuQyxLQUFLLEVBQUUsWUFBWTtTQUNwQixDQUFDLENBQUE7SUFDSixDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBN0NZLFFBQUEsR0FBRyxPQTZDZjtBQUVNLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBa0IsRUFDbEIsR0FBbUIsRUFDSixFQUFFO0lBQ2pCLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO0lBRS9CLG1DQUFtQztJQUNuQyxNQUFNLFdBQVcsR0FBSSxHQUVuQixDQUFDLFlBQVksQ0FBQTtJQUVmLE1BQU0sVUFBVSxHQUFHLFdBQVcsRUFBRSxRQUFRLENBQUE7SUFFeEMsSUFBSSxDQUFDLFVBQVUsSUFBSSxXQUFXLEVBQUUsVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzFELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxtREFBbUQ7U0FDN0QsQ0FBQyxDQUFBO1FBQ0YsT0FBTTtJQUNSLENBQUM7SUFFRCxpRUFBaUU7SUFDakUsSUFBSSxXQUFXLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQTtJQUMxQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN6RCxXQUFXLEdBQUcsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzlCLENBQUM7SUFFRCwrREFBK0Q7SUFDL0QsSUFBSSxXQUFXLElBQUksT0FBTyxXQUFXLEtBQUssUUFBUSxJQUFJLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNoRixNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLFdBQTRELENBQUE7UUFDN0YsV0FBVyxHQUFHLElBQUksQ0FBQTtJQUNwQixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRTtZQUNwQyxRQUFRO1lBQ1IsV0FBVyxFQUFFLFVBQVU7WUFDdkIsUUFBUSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ2xCLFdBQVcsRUFBRSxXQUFXO1NBQ3pCLENBQUMsQ0FBQTtRQUVGLHdCQUF3QjtRQUN4QixNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7UUFFaEQsK0JBQStCO1FBQy9CLElBQUksQ0FBQyw0Q0FBa0IsRUFBRSxDQUFDO1lBQ3hCLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMsaUZBQWlGLENBQ2xGLENBQUE7UUFDSCxDQUFDO1FBRUQsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSw0Q0FBa0IsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ3pELEtBQUssRUFBRTtnQkFDTCxRQUFRO2dCQUNSLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDL0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2dCQUN6QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDZixXQUFXLEVBQUUsVUFBVTthQUN4QjtTQUNGLENBQUMsQ0FBQTtRQUVGLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzlCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLFlBQVksT0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hDLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLEVBQUU7Z0JBQ2pDLFFBQVE7Z0JBQ1IsV0FBVyxFQUFFLFVBQVU7Z0JBQ3ZCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtnQkFDcEIsSUFBSSxFQUFFLFdBQVc7YUFDbEIsQ0FBQyxDQUFBO1lBQ0YsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSxzQkFBc0I7Z0JBQy9CLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTthQUNyQixDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztRQUVELElBQUksS0FBSyxZQUFZLG1CQUFXLEVBQUUsQ0FBQztZQUNqQyxNQUFNLFVBQVUsR0FDZCxLQUFLLENBQUMsSUFBSSxLQUFLLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVM7Z0JBQ3hDLENBQUMsQ0FBQyxHQUFHO2dCQUNMLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLG1CQUFXLENBQUMsS0FBSyxDQUFDLFdBQVc7b0JBQzlDLENBQUMsQ0FBQyxHQUFHO29CQUNMLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVk7d0JBQy9DLENBQUMsQ0FBQyxHQUFHO3dCQUNMLENBQUMsQ0FBQyxHQUFHLENBQUE7WUFFVCxPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRTtnQkFDN0IsUUFBUTtnQkFDUixXQUFXLEVBQUUsVUFBVTtnQkFDdkIsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUN0QixhQUFhLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQzVCLElBQUksRUFBRSxXQUFXO2FBQ2xCLENBQUMsQ0FBQTtZQUVGLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUMxQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQ3RCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTthQUNqQixDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUM3RSxNQUFNLFVBQVUsR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7UUFFbkUsdUNBQXVDO1FBQ3ZDLElBQ0UsWUFBWSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQztZQUMxQyxZQUFZLENBQUMsUUFBUSxDQUFDLHdCQUF3QixDQUFDO1lBQy9DLFlBQVksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUM7WUFDM0MsWUFBWSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxFQUMzQyxDQUFDO1lBQ0QsT0FBTyxDQUFDLEtBQUssQ0FBQyx1Q0FBdUMsRUFBRTtnQkFDckQsUUFBUTtnQkFDUixXQUFXLEVBQUUsVUFBVTtnQkFDdkIsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLEtBQUssRUFBRSxVQUFVO2dCQUNqQixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7Z0JBQ2QsSUFBSSxFQUFFLGlJQUFpSTthQUN4SSxDQUFDLENBQUE7WUFFRixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDbkIsT0FBTyxFQUFFLG9DQUFvQztnQkFDN0MsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLElBQUksRUFBRSxpRkFBaUY7YUFDeEYsQ0FBQyxDQUFBO1lBQ0YsT0FBTTtRQUNSLENBQUM7UUFFRCx5REFBeUQ7UUFDekQsSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLENBQUM7WUFDekcsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRTtnQkFDM0MsUUFBUTtnQkFDUixXQUFXLEVBQUUsVUFBVTtnQkFDdkIsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLEtBQUssRUFBRSxVQUFVO2dCQUNqQixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7Z0JBQ2QsSUFBSSxFQUFFLHNGQUFzRjthQUM3RixDQUFDLENBQUE7WUFFRixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDbkIsT0FBTyxFQUFFLHdCQUF3QjtnQkFDakMsS0FBSyxFQUFFLFlBQVk7Z0JBQ25CLElBQUksRUFBRSw2RUFBNkU7YUFDcEYsQ0FBQyxDQUFBO1lBQ0YsT0FBTTtRQUNSLENBQUM7UUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFO1lBQ3RDLFFBQVE7WUFDUixXQUFXLEVBQUUsVUFBVTtZQUN2QixLQUFLLEVBQUUsWUFBWTtZQUNuQixLQUFLLEVBQUUsVUFBVTtZQUNqQixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7U0FDZixDQUFDLENBQUE7UUFFRixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsdUJBQXVCO1lBQ2hDLEtBQUssRUFBRSxZQUFZO1NBQ3BCLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDLENBQUE7QUFsS1ksUUFBQSxJQUFJLFFBa0toQiJ9