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.
- package/.medusa/server/src/admin/index.js +513 -484
- package/.medusa/server/src/admin/index.mjs +513 -484
- package/.medusa/server/src/api/admin/swaps/[id]/approve/route.js +81 -31
- package/.medusa/server/src/api/admin/swaps/[id]/confirm-exchange/route.js +109 -0
- package/.medusa/server/src/api/admin/swaps/health/route.js +150 -0
- package/.medusa/server/src/api/admin/swaps/route.js +6 -12
- package/.medusa/server/src/api/admin/swaps/validators.js +9 -13
- package/.medusa/server/src/api/store/orders/[order_id]/swaps/route.js +47 -2
- package/.medusa/server/src/api/store/swaps/[id]/cancel/route.js +8 -1
- package/.medusa/server/src/api/store/swaps/[id]/route.js +15 -4
- package/.medusa/server/src/api/store/swaps/route.js +53 -10
- package/.medusa/server/src/helpers/swaps.js +1 -1
- package/.medusa/server/src/modules/swap/migrations/Migration20260123144734.js +29 -0
- package/.medusa/server/src/modules/swap/migrations/Migration20260123162423.js +48 -0
- package/.medusa/server/src/modules/swap/migrations/Migration20260126114640.js +48 -0
- package/.medusa/server/src/modules/swap/models/swap.js +7 -2
- package/.medusa/server/src/modules/swap/service.js +259 -32
- package/.medusa/server/src/subscribers/exchange-created.js +207 -0
- package/.medusa/server/src/workflows/steps/swap/create-medusa-exchange-step.js +166 -20
- package/.medusa/server/src/workflows/steps/swap/create-medusa-return-step.js +76 -8
- package/.medusa/server/src/workflows/steps/swap/create-swap-step.js +7 -12
- package/.medusa/server/src/workflows/steps/swap/index.js +6 -4
- package/.medusa/server/src/workflows/steps/swap/rollback-return-step.js +70 -0
- package/.medusa/server/src/workflows/steps/swap/sync-medusa-status-step.js +49 -3
- package/.medusa/server/src/workflows/steps/swap/update-swap-exchange-details-step.js +27 -0
- package/.medusa/server/src/workflows/steps/swap/validate-eligibility-step.js +9 -4
- package/.medusa/server/src/workflows/steps/swap/validate-order-step.js +24 -1
- package/.medusa/server/src/workflows/swaps/approve-swap-workflow.js +23 -5
- package/.medusa/server/src/workflows/swaps/confirm-exchange-workflow.js +51 -0
- package/.medusa/server/src/workflows/swaps/create-swap-workflow.js +3 -1
- package/.medusa/server/src/workflows/swaps/execute-swap-workflow.js +26 -4
- package/package.json +1 -1
- package/.medusa/server/src/api/admin/swaps/[id]/process-payment/route.js +0 -152
- package/.medusa/server/src/api/admin/swaps/[id]/status/route.js +0 -45
- package/.medusa/server/src/api/admin/swaps/[id]/sync/route.js +0 -148
- 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
|
|
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
|
-
//
|
|
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
|
-
//
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
22
|
-
|
|
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:
|
|
37
|
-
count:
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL29yZGVycy9bb3JkZXJfaWRdL3N3YXBzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUF1RDtBQUN2RCxvR0FBMkY7QUFDM0YsbUVBQWtFO0FBRWxFLDZCQUF1QjtBQUV2QixNQUFNLGdCQUFnQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDaEMsWUFBWSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQ25CLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUNkLFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO1FBQy9CLE1BQU0sRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0tBQzlCLENBQUMsQ0FDSDtJQUNELFNBQVMsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUNoQixPQUFDLENBQUMsTUFBTSxDQUFDO1FBQ1AsVUFBVSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDdEIsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7S0FDaEMsQ0FBQyxDQUNIO0lBQ0QsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsSUFBSSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDNUIsQ0FBQyxDQUFBO0FBRUssTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUFrQixFQUNsQixHQUFtQixFQUNKLEVBQUU7SUFDakIsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFFL0IsbUNBQW1DO0lBQ25DLE1BQU0sV0FBVyxHQUFJLEdBRW5CLENBQUMsWUFBWSxDQUFB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
|