order-management 0.0.71 → 0.0.72
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/api/admin/orders/[order_id]/cancel-reason-mapping/route.js +64 -0
- package/.medusa/server/src/api/middlewares.js +12 -1
- package/.medusa/server/src/api/store/guest-orders/[id]/cancel/route.js +6 -1
- package/.medusa/server/src/api/store/guest-orders/[id]/cancel-reason-mapping/route.js +95 -0
- package/.medusa/server/src/api/store/orders/[order_id]/cancel-reason-mapping/route.js +82 -0
- package/.medusa/server/src/api/store/orders/cancel/[order_id]/route.js +6 -1
- package/.medusa/server/src/api/store/validators/cancel-order.js +8 -0
- package/.medusa/server/src/modules/cancel-order-reason/index.js +14 -0
- package/.medusa/server/src/modules/cancel-order-reason/migrations/Migration20260407100000.js +36 -0
- package/.medusa/server/src/modules/cancel-order-reason/models/cancel-order-reason-mapping.js +10 -0
- package/.medusa/server/src/modules/cancel-order-reason/service.js +97 -0
- package/.medusa/server/src/modules/cancel-order-reason/types.js +3 -0
- package/package.json +2 -1
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const cancel_order_reason_1 = require("../../../../../modules/cancel-order-reason");
|
|
6
|
+
/**
|
|
7
|
+
* GET /admin/orders/:order_id/cancel-reason-mapping
|
|
8
|
+
* Admin: read which cancel reason was recorded for an order (if any).
|
|
9
|
+
*/
|
|
10
|
+
async function GET(req, res) {
|
|
11
|
+
const orderId = req.params.order_id;
|
|
12
|
+
if (!orderId) {
|
|
13
|
+
res.status(400).json({
|
|
14
|
+
message: "order_id is required",
|
|
15
|
+
type: "INVALID_DATA",
|
|
16
|
+
});
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
const orderModuleService = req.scope.resolve(utils_1.Modules.ORDER);
|
|
21
|
+
const order = await orderModuleService.retrieveOrder(orderId).catch(() => null);
|
|
22
|
+
if (!order) {
|
|
23
|
+
res.status(404).json({
|
|
24
|
+
message: "Order not found",
|
|
25
|
+
type: "NOT_FOUND",
|
|
26
|
+
});
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
let mappingService;
|
|
30
|
+
try {
|
|
31
|
+
mappingService = req.scope.resolve(cancel_order_reason_1.CANCEL_ORDER_REASON_MODULE);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
res.json({ cancel_order_reason_mapping: null });
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const payload = await mappingService.getMappingWithReasonLabel(orderId);
|
|
38
|
+
if (!payload) {
|
|
39
|
+
res.json({ cancel_order_reason_mapping: null });
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const { mapping, reason_label } = payload;
|
|
43
|
+
res.json({
|
|
44
|
+
cancel_order_reason_mapping: {
|
|
45
|
+
id: mapping.id,
|
|
46
|
+
order_id: mapping.order_id,
|
|
47
|
+
reason_id: mapping.reason_id,
|
|
48
|
+
reason_label,
|
|
49
|
+
created_at: mapping.created_at.toISOString(),
|
|
50
|
+
updated_at: mapping.updated_at.toISOString(),
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
const message = err instanceof Error ? err.message : "Unknown error";
|
|
56
|
+
console.error("[Order Management] GET admin cancel-reason-mapping:", err);
|
|
57
|
+
res.status(500).json({
|
|
58
|
+
message: "Failed to get cancel reason mapping",
|
|
59
|
+
error: message,
|
|
60
|
+
type: "INTERNAL_ERROR",
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL29yZGVycy9bb3JkZXJfaWRdL2NhbmNlbC1yZWFzb24tbWFwcGluZy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXFCQSxrQkE2REM7QUFqRkQscURBQW1EO0FBRW5ELG9GQUF1RjtBQWN2Rjs7O0dBR0c7QUFDSSxLQUFLLFVBQVUsR0FBRyxDQUN2QixHQUFrQixFQUNsQixHQUFtQjtJQUVuQixNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQWtCLENBQUE7SUFFN0MsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxFQUFFLHNCQUFzQjtZQUMvQixJQUFJLEVBQUUsY0FBYztTQUNyQixDQUFDLENBQUE7UUFDRixPQUFNO0lBQ1IsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQXNCLGVBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNoRixNQUFNLEtBQUssR0FBRyxNQUFNLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDL0UsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ25CLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLElBQUksRUFBRSxXQUFXO2FBQ2xCLENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO1FBRUQsSUFBSSxjQUE4QyxDQUFBO1FBQ2xELElBQUksQ0FBQztZQUNILGNBQWMsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDaEMsZ0RBQTBCLENBQzNCLENBQUE7UUFDSCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLDJCQUEyQixFQUFFLElBQUksRUFBNkMsQ0FBQyxDQUFBO1lBQzFGLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxjQUFjLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdkUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLDJCQUEyQixFQUFFLElBQUksRUFBNkMsQ0FBQyxDQUFBO1lBQzFGLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxPQUFPLENBQUE7UUFDekMsR0FBRyxDQUFDLElBQUksQ0FBQztZQUNQLDJCQUEyQixFQUFFO2dCQUMzQixFQUFFLEVBQUUsT0FBTyxDQUFDLEVBQUU7Z0JBQ2QsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO2dCQUMxQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7Z0JBQzVCLFlBQVk7Z0JBQ1osVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFO2dCQUM1QyxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUU7YUFDN0M7U0FDeUMsQ0FBQyxDQUFBO0lBQy9DLENBQUM7SUFBQyxPQUFPLEdBQVksRUFBRSxDQUFDO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLEdBQUcsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUNwRSxPQUFPLENBQUMsS0FBSyxDQUFDLHFEQUFxRCxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQ3pFLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxxQ0FBcUM7WUFDOUMsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUUsZ0JBQWdCO1NBQ3ZCLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDIn0=
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const http_1 = require("@medusajs/framework/http");
|
|
4
4
|
const validators_1 = require("./store/returns/validators");
|
|
5
|
+
const cancel_order_1 = require("./store/validators/cancel-order");
|
|
5
6
|
exports.default = (0, http_1.defineMiddlewares)({
|
|
6
7
|
routes: [
|
|
7
8
|
{
|
|
@@ -9,6 +10,16 @@ exports.default = (0, http_1.defineMiddlewares)({
|
|
|
9
10
|
method: "POST",
|
|
10
11
|
middlewares: [(0, http_1.validateAndTransformBody)(validators_1.StoreCreateReturnSchema)],
|
|
11
12
|
},
|
|
13
|
+
{
|
|
14
|
+
matcher: "/store/orders/cancel/:order_id",
|
|
15
|
+
method: "POST",
|
|
16
|
+
middlewares: [(0, http_1.validateAndTransformBody)(cancel_order_1.StoreCancelOrderBodySchema)],
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
matcher: "/store/guest-orders/:id/cancel",
|
|
20
|
+
method: "POST",
|
|
21
|
+
middlewares: [(0, http_1.validateAndTransformBody)(cancel_order_1.StoreCancelOrderBodySchema)],
|
|
22
|
+
},
|
|
12
23
|
],
|
|
13
24
|
});
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBR2lDO0FBQ2pDLDJEQUFvRTtBQUNwRSxrRUFBNEU7QUFFNUUsa0JBQWUsSUFBQSx3QkFBaUIsRUFBQztJQUMvQixNQUFNLEVBQUU7UUFDTjtZQUNFLE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsTUFBTSxFQUFFLE1BQU07WUFDZCxXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLG9DQUF1QixDQUFDLENBQUM7U0FDakU7UUFDRDtZQUNFLE9BQU8sRUFBRSxnQ0FBZ0M7WUFDekMsTUFBTSxFQUFFLE1BQU07WUFDZCxXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLHlDQUEwQixDQUFDLENBQUM7U0FDcEU7UUFDRDtZQUNFLE9BQU8sRUFBRSxnQ0FBZ0M7WUFDekMsTUFBTSxFQUFFLE1BQU07WUFDZCxXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLHlDQUEwQixDQUFDLENBQUM7U0FDcEU7S0FDRjtDQUNGLENBQUMsQ0FBQSJ9
|
|
@@ -10,6 +10,7 @@ const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
|
10
10
|
const config_1 = require("../../../../../config");
|
|
11
11
|
const cancel_order_workflow_1 = require("../../../../../workflows/cancel-order-workflow");
|
|
12
12
|
const get_guest_token_1 = require("../../get-guest-token");
|
|
13
|
+
const cancel_order_reason_1 = require("../../../../../modules/cancel-order-reason");
|
|
13
14
|
async function POST(req, res) {
|
|
14
15
|
const token = (0, get_guest_token_1.getGuestToken)(req);
|
|
15
16
|
const { id } = req.params;
|
|
@@ -68,6 +69,9 @@ async function POST(req, res) {
|
|
|
68
69
|
});
|
|
69
70
|
return;
|
|
70
71
|
}
|
|
72
|
+
const { reason_id } = req.validatedBody;
|
|
73
|
+
const cancelReasonService = req.scope.resolve(cancel_order_reason_1.CANCEL_ORDER_REASON_MODULE);
|
|
74
|
+
await cancelReasonService.assertReasonExists(reason_id);
|
|
71
75
|
// Execute cancel order workflow
|
|
72
76
|
const { result } = await (0, cancel_order_workflow_1.cancelOrderWorkflow)(req.scope).run({
|
|
73
77
|
input: {
|
|
@@ -75,6 +79,7 @@ async function POST(req, res) {
|
|
|
75
79
|
customer_id: orderCustomerId,
|
|
76
80
|
},
|
|
77
81
|
});
|
|
82
|
+
await cancelReasonService.recordOrderCancelReason(id, reason_id);
|
|
78
83
|
res.status(200).json(result);
|
|
79
84
|
}
|
|
80
85
|
catch (error) {
|
|
@@ -102,4 +107,4 @@ async function POST(req, res) {
|
|
|
102
107
|
});
|
|
103
108
|
}
|
|
104
109
|
}
|
|
105
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2d1ZXN0LW9yZGVycy9baWRdL2NhbmNlbC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVlBLG9CQTJIQztBQXRJRCxxREFBcUU7QUFDckUscURBQXVEO0FBQ3ZELGdFQUE4QztBQUM5QyxrREFBcUU7QUFFckUsMEZBQW9GO0FBQ3BGLDJEQUFxRDtBQUNyRCxvRkFBdUY7QUFJaEYsS0FBSyxVQUFVLElBQUksQ0FDdEIsR0FBd0MsRUFDeEMsR0FBbUI7SUFFbkIsTUFBTSxLQUFLLEdBQUcsSUFBQSwrQkFBYSxFQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2hDLE1BQU0sRUFBRSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO0lBRXpCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNULEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLDJEQUEyRCxFQUFFLENBQUMsQ0FBQTtRQUM5RixPQUFNO0lBQ1YsQ0FBQztJQUVELElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNOLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLENBQUMsQ0FBQTtRQUN6RCxPQUFNO0lBQ1YsQ0FBQztJQUVELCtCQUErQjtJQUMvQixJQUFJLE1BQU0sQ0FBQTtJQUNWLElBQUksQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUNsQyxpQ0FBeUIsQ0FBQyxhQUFhLENBQzFDLENBQUE7UUFDRCxNQUFNLEdBQUcsSUFBQSxzQ0FBNkIsRUFBQyxZQUFZLENBQUMsQ0FBQTtJQUN4RCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztR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
|
|
@@ -0,0 +1,95 @@
|
|
|
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.GET = GET;
|
|
7
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
8
|
+
const jsonwebtoken_1 = __importDefault(require("jsonwebtoken"));
|
|
9
|
+
const config_1 = require("../../../../../config");
|
|
10
|
+
const get_guest_token_1 = require("../../get-guest-token");
|
|
11
|
+
const cancel_order_reason_1 = require("../../../../../modules/cancel-order-reason");
|
|
12
|
+
/**
|
|
13
|
+
* GET /store/guest-orders/:id/cancel-reason-mapping
|
|
14
|
+
* Guest JWT: same access rules as GET /store/guest-orders/:id
|
|
15
|
+
*/
|
|
16
|
+
async function GET(req, res) {
|
|
17
|
+
const token = (0, get_guest_token_1.getGuestToken)(req);
|
|
18
|
+
const { id: orderId } = req.params;
|
|
19
|
+
if (!token) {
|
|
20
|
+
res.status(401).json({ message: "Missing or invalid token (cookie or Authorization header)" });
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (!orderId) {
|
|
24
|
+
res.status(400).json({ message: "Order ID is required" });
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
let config;
|
|
28
|
+
try {
|
|
29
|
+
const configModule = req.scope.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
|
|
30
|
+
config = (0, config_1.resolveOrderManagementOptions)(configModule);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
34
|
+
console.error("[Guest Cancel Reason Mapping] Could not resolve config:", errorMessage);
|
|
35
|
+
res.status(500).json({
|
|
36
|
+
message: "Failed to resolve plugin configuration",
|
|
37
|
+
error: errorMessage,
|
|
38
|
+
});
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
try {
|
|
42
|
+
const decoded = jsonwebtoken_1.default.verify(token, config.jwtSecret);
|
|
43
|
+
if (!decoded || !decoded.guest_identifier) {
|
|
44
|
+
res.status(401).json({ message: "Invalid token payload" });
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const guest_identifier = decoded.guest_identifier;
|
|
48
|
+
const actorId = decoded.actor_id ?? decoded.customer_id;
|
|
49
|
+
const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
|
|
50
|
+
const { data: orders } = await query.graph({
|
|
51
|
+
entity: "order",
|
|
52
|
+
fields: ["id"],
|
|
53
|
+
filters: {
|
|
54
|
+
id: orderId,
|
|
55
|
+
...(actorId
|
|
56
|
+
? { customer_id: [actorId] }
|
|
57
|
+
: { email: guest_identifier }),
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
if (!orders[0]) {
|
|
61
|
+
res.status(404).json({ message: "Order not found or access denied" });
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
let mappingService;
|
|
65
|
+
try {
|
|
66
|
+
mappingService = req.scope.resolve(cancel_order_reason_1.CANCEL_ORDER_REASON_MODULE);
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
res.json({ cancel_order_reason_mapping: null });
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const payload = await mappingService.getMappingWithReasonLabel(orderId);
|
|
73
|
+
if (!payload) {
|
|
74
|
+
res.json({ cancel_order_reason_mapping: null });
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const { mapping, reason_label } = payload;
|
|
78
|
+
res.status(200).json({
|
|
79
|
+
cancel_order_reason_mapping: {
|
|
80
|
+
id: mapping.id,
|
|
81
|
+
order_id: mapping.order_id,
|
|
82
|
+
reason_id: mapping.reason_id,
|
|
83
|
+
reason_label,
|
|
84
|
+
created_at: mapping.created_at.toISOString(),
|
|
85
|
+
updated_at: mapping.updated_at.toISOString(),
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
91
|
+
console.error("[Guest Cancel Reason Mapping] Error:", errorMessage);
|
|
92
|
+
res.status(401).json({ message: "Unauthorized or invalid token", error: errorMessage });
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2d1ZXN0LW9yZGVycy9baWRdL2NhbmNlbC1yZWFzb24tbWFwcGluZy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWNBLGtCQTBGQztBQXZHRCxxREFBcUU7QUFDckUsZ0VBQThDO0FBQzlDLGtEQUFxRTtBQUVyRSwyREFBcUQ7QUFDckQsb0ZBQXVGO0FBSXZGOzs7R0FHRztBQUNJLEtBQUssVUFBVSxHQUFHLENBQ3ZCLEdBQWtCLEVBQ2xCLEdBQW1CO0lBRW5CLE1BQU0sS0FBSyxHQUFHLElBQUEsK0JBQWEsRUFBQyxHQUFHLENBQUMsQ0FBQTtJQUNoQyxNQUFNLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFFbEMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsMkRBQTJELEVBQUUsQ0FBQyxDQUFBO1FBQzlGLE9BQU07SUFDUixDQUFDO0lBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQyxDQUFBO1FBQ3pELE9BQU07SUFDUixDQUFDO0lBRUQsSUFBSSxNQUFNLENBQUE7SUFDVixJQUFJLENBQUM7UUFDSCxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBb0IsaUNBQXlCLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDbEcsTUFBTSxHQUFHLElBQUEsc0NBQTZCLEVBQUMsWUFBWSxDQUFDLENBQUE7SUFDdEQsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLFlBQVksR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUE7UUFDN0UsT0FBTyxDQUFDLEtBQUssQ0FBQyx5REFBeUQsRUFBRSxZQUFZLENBQUMsQ0FBQTtRQUN0RixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsd0NBQXdDO1lBQ2pELEtBQUssRUFBRSxZQUFZO1NBQ3BCLENBQUMsQ0FBQTtRQUNGLE9BQU07SUFDUixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsc0JBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQWUsQ0FBQTtRQUVqRSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQyxDQUFBO1lBQzFELE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLENBQUE7UUFDakQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSyxPQUFvQyxDQUFDLFdBQVcsQ0FBQTtRQUVyRixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUVoRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztZQUN6QyxNQUFNLEVBQUUsT0FBTztZQUNmLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztZQUNkLE9BQU8sRUFBRTtnQkFDUCxFQUFFLEVBQUUsT0FBTztnQkFDWCxHQUFHLENBQUMsT0FBTztvQkFDVCxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDNUIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLENBQUM7YUFDakM7U0FDRixDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDZixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxDQUFDLENBQUE7WUFDckUsT0FBTTtRQUNSLENBQUM7UUFFRCxJQUFJLGNBQThDLENBQUE7UUFDbEQsSUFBSSxDQUFDO1lBQ0gsY0FBYyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFpQyxnREFBMEIsQ0FBQyxDQUFBO1FBQ2hHLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUE2QyxDQUFDLENBQUE7WUFDMUYsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxNQUFNLGNBQWMsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUN2RSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDYixHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUE2QyxDQUFDLENBQUE7WUFDMUYsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUN6QyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQiwyQkFBMkIsRUFBRTtnQkFDM0IsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUNkLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtnQkFDMUIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO2dCQUM1QixZQUFZO2dCQUNaLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRTtnQkFDNUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFO2FBQzdDO1NBQ3lDLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUM3RSxPQUFPLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxFQUFFLFlBQVksQ0FBQyxDQUFBO1FBQ25FLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLCtCQUErQixFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFBO0lBQ3pGLENBQUM7QUFDSCxDQUFDIn0=
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GET = GET;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const cancel_order_reason_1 = require("../../../../../modules/cancel-order-reason");
|
|
6
|
+
/**
|
|
7
|
+
* GET /store/orders/:order_id/cancel-reason-mapping
|
|
8
|
+
* Customer: mapping for their own cancelled order (if recorded).
|
|
9
|
+
*/
|
|
10
|
+
async function GET(req, res) {
|
|
11
|
+
const authContext = req
|
|
12
|
+
.auth_context;
|
|
13
|
+
const customerId = authContext?.actor_id;
|
|
14
|
+
const actorType = authContext?.actor_type;
|
|
15
|
+
const orderId = req.params.order_id;
|
|
16
|
+
if (!customerId || actorType !== "customer") {
|
|
17
|
+
res.status(401).json({
|
|
18
|
+
message: "Unauthorized: Customer authentication is required",
|
|
19
|
+
type: "UNAUTHORIZED",
|
|
20
|
+
});
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
if (!orderId) {
|
|
24
|
+
res.status(400).json({
|
|
25
|
+
message: "order_id is required",
|
|
26
|
+
type: "INVALID_DATA",
|
|
27
|
+
});
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
const orderModuleService = req.scope.resolve(utils_1.Modules.ORDER);
|
|
32
|
+
const order = await orderModuleService.retrieveOrder(orderId).catch(() => null);
|
|
33
|
+
if (!order) {
|
|
34
|
+
res.status(404).json({
|
|
35
|
+
message: "Order not found",
|
|
36
|
+
type: "NOT_FOUND",
|
|
37
|
+
});
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
if (order.customer_id !== customerId) {
|
|
41
|
+
res.status(404).json({
|
|
42
|
+
message: "Order not found or access denied",
|
|
43
|
+
type: "NOT_FOUND",
|
|
44
|
+
});
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
let mappingService;
|
|
48
|
+
try {
|
|
49
|
+
mappingService = req.scope.resolve(cancel_order_reason_1.CANCEL_ORDER_REASON_MODULE);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
res.json({ cancel_order_reason_mapping: null });
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const payload = await mappingService.getMappingWithReasonLabel(orderId);
|
|
56
|
+
if (!payload) {
|
|
57
|
+
res.json({ cancel_order_reason_mapping: null });
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const { mapping, reason_label } = payload;
|
|
61
|
+
res.json({
|
|
62
|
+
cancel_order_reason_mapping: {
|
|
63
|
+
id: mapping.id,
|
|
64
|
+
order_id: mapping.order_id,
|
|
65
|
+
reason_id: mapping.reason_id,
|
|
66
|
+
reason_label,
|
|
67
|
+
created_at: mapping.created_at.toISOString(),
|
|
68
|
+
updated_at: mapping.updated_at.toISOString(),
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
const message = err instanceof Error ? err.message : "Unknown error";
|
|
74
|
+
console.error("[Order Management] GET store cancel-reason-mapping:", err);
|
|
75
|
+
res.status(500).json({
|
|
76
|
+
message: "Failed to get cancel reason mapping",
|
|
77
|
+
error: message,
|
|
78
|
+
type: "INTERNAL_ERROR",
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL29yZGVycy9bb3JkZXJfaWRdL2NhbmNlbC1yZWFzb24tbWFwcGluZy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXFCQSxrQkFpRkM7QUFyR0QscURBQW1EO0FBRW5ELG9GQUF1RjtBQWN2Rjs7O0dBR0c7QUFDSSxLQUFLLFVBQVUsR0FBRyxDQUN2QixHQUFrQixFQUNsQixHQUFtQjtJQUVuQixNQUFNLFdBQVcsR0FBSSxHQUFxRTtTQUN2RixZQUFZLENBQUE7SUFDZixNQUFNLFVBQVUsR0FBRyxXQUFXLEVBQUUsUUFBUSxDQUFBO0lBQ3hDLE1BQU0sU0FBUyxHQUFHLFdBQVcsRUFBRSxVQUFVLENBQUE7SUFDekMsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxRQUFrQixDQUFBO0lBRTdDLElBQUksQ0FBQyxVQUFVLElBQUksU0FBUyxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzVDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxtREFBbUQ7WUFDNUQsSUFBSSxFQUFFLGNBQWM7U0FDckIsQ0FBQyxDQUFBO1FBQ0YsT0FBTTtJQUNSLENBQUM7SUFFRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsc0JBQXNCO1lBQy9CLElBQUksRUFBRSxjQUFjO1NBQ3JCLENBQUMsQ0FBQTtRQUNGLE9BQU07SUFDUixDQUFDO0lBRUQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBc0IsZUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2hGLE1BQU0sS0FBSyxHQUFHLE1BQU0sa0JBQWtCLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMvRSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDbkIsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsSUFBSSxFQUFFLFdBQVc7YUFDbEIsQ0FBQyxDQUFBO1lBQ0YsT0FBTTtRQUNSLENBQUM7UUFFRCxJQUFLLEtBQWtDLENBQUMsV0FBVyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ25FLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUNuQixPQUFPLEVBQUUsa0NBQWtDO2dCQUMzQyxJQUFJLEVBQUUsV0FBVzthQUNsQixDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztRQUVELElBQUksY0FBOEMsQ0FBQTtRQUNsRCxJQUFJLENBQUM7WUFDSCxjQUFjLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2hDLGdEQUEwQixDQUMzQixDQUFBO1FBQ0gsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSwyQkFBMkIsRUFBRSxJQUFJLEVBQTZDLENBQUMsQ0FBQTtZQUMxRixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sY0FBYyxDQUFDLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3ZFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSwyQkFBMkIsRUFBRSxJQUFJLEVBQTZDLENBQUMsQ0FBQTtZQUMxRixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLEdBQUcsT0FBTyxDQUFBO1FBQ3pDLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDUCwyQkFBMkIsRUFBRTtnQkFDM0IsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFO2dCQUNkLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtnQkFDMUIsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO2dCQUM1QixZQUFZO2dCQUNaLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRTtnQkFDNUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFO2FBQzdDO1NBQ3lDLENBQUMsQ0FBQTtJQUMvQyxDQUFDO0lBQUMsT0FBTyxHQUFZLEVBQUUsQ0FBQztRQUN0QixNQUFNLE9BQU8sR0FBRyxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUE7UUFDcEUsT0FBTyxDQUFDLEtBQUssQ0FBQyxxREFBcUQsRUFBRSxHQUFHLENBQUMsQ0FBQTtRQUN6RSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUscUNBQXFDO1lBQzlDLEtBQUssRUFBRSxPQUFPO1lBQ2QsSUFBSSxFQUFFLGdCQUFnQjtTQUN2QixDQUFDLENBQUE7SUFDSixDQUFDO0FBQ0gsQ0FBQyJ9
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.POST = void 0;
|
|
4
4
|
const utils_1 = require("@medusajs/framework/utils");
|
|
5
5
|
const cancel_order_workflow_1 = require("../../../../../workflows/cancel-order-workflow");
|
|
6
|
+
const cancel_order_reason_1 = require("../../../../../modules/cancel-order-reason");
|
|
6
7
|
const POST = async (req, res) => {
|
|
7
8
|
const { order_id } = req.params;
|
|
8
9
|
if (!order_id) {
|
|
@@ -11,6 +12,7 @@ const POST = async (req, res) => {
|
|
|
11
12
|
});
|
|
12
13
|
return;
|
|
13
14
|
}
|
|
15
|
+
const { reason_id } = req.validatedBody;
|
|
14
16
|
// Type-safe access to auth_context
|
|
15
17
|
const authContext = req.auth_context;
|
|
16
18
|
const actorId = authContext?.actor_id;
|
|
@@ -28,13 +30,16 @@ const POST = async (req, res) => {
|
|
|
28
30
|
});
|
|
29
31
|
return;
|
|
30
32
|
}
|
|
33
|
+
const cancelReasonService = req.scope.resolve(cancel_order_reason_1.CANCEL_ORDER_REASON_MODULE);
|
|
31
34
|
try {
|
|
35
|
+
await cancelReasonService.assertReasonExists(reason_id);
|
|
32
36
|
const { result } = await (0, cancel_order_workflow_1.cancelOrderWorkflow)(req.scope).run({
|
|
33
37
|
input: {
|
|
34
38
|
order_id,
|
|
35
39
|
customer_id: actorId,
|
|
36
40
|
},
|
|
37
41
|
});
|
|
42
|
+
await cancelReasonService.recordOrderCancelReason(order_id, reason_id);
|
|
38
43
|
res.json(result);
|
|
39
44
|
}
|
|
40
45
|
catch (error) {
|
|
@@ -74,4 +79,4 @@ const POST = async (req, res) => {
|
|
|
74
79
|
}
|
|
75
80
|
};
|
|
76
81
|
exports.POST = POST;
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL29yZGVycy9jYW5jZWwvW29yZGVyX2lkXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBdUQ7QUFDdkQsMEZBQW9GO0FBQ3BGLG9GQUF1RjtBQUloRixNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQXdDLEVBQ3hDLEdBQW1CLEVBQ25CLEVBQUU7SUFDRixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUUvQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsd0NBQXdDO1NBQ2xELENBQUMsQ0FBQTtRQUNGLE9BQU07SUFDUixDQUFDO0lBRUQsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUE7SUFFdkMsbUNBQW1DO0lBQ25DLE1BQU0sV0FBVyxHQUFJLEdBRW5CLENBQUMsWUFBWSxDQUFBO0lBRWYsTUFBTSxPQUFPLEdBQUcsV0FBVyxFQUFFLFFBQVEsQ0FBQTtJQUNyQyxNQUFNLFNBQVMsR0FBRyxXQUFXLEVBQUUsVUFBVSxDQUFBO0lBQ3pDLE1BQU0sVUFBVSxHQUFHLFNBQVMsS0FBSyxVQUFVLENBQUE7SUFFM0MsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxJQUFJLENBQUMsMERBQTBELEVBQUU7WUFDdkUsUUFBUTtZQUNSLFFBQVEsRUFBRSxPQUFPO1lBQ2pCLFVBQVUsRUFBRSxTQUFTO1lBQ3JCLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLG9CQUFvQjtTQUM3RCxDQUFDLENBQUE7UUFDRixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsbURBQW1EO1NBQzdELENBQUMsQ0FBQTtRQUNGLE9BQU07SUFDUixDQUFDO0lBRUQsTUFBTSxtQkFBbUIsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FDM0MsZ0RBQTBCLENBQzNCLENBQUE7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBRXZELE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUEsMkNBQW1CLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMxRCxLQUFLLEVBQUU7Z0JBQ0wsUUFBUTtnQkFDUixXQUFXLEVBQUUsT0FBTzthQUNyQjtTQUNGLENBQUMsQ0FBQTtRQUVGLE1BQU0sbUJBQW1CLENBQUMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBRXRFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbEIsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZiwwQkFBMEI7UUFDMUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxpREFBaUQsRUFBRTtZQUMvRCxRQUFRO1lBQ1IsUUFBUSxFQUFFLE9BQU87WUFDakIsS0FBSyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDN0QsYUFBYSxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0JBQ2hCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztnQkFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO2FBQ25CLENBQUMsQ0FBQyxDQUFDLEtBQUs7WUFDVCxXQUFXLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUztTQUM5RCxDQUFDLENBQUE7UUFFRixJQUFJLEtBQUssWUFBWSxtQkFBVyxFQUFFLENBQUM7WUFDakMsTUFBTSxVQUFVLEdBQ2QsS0FBSyxDQUFDLElBQUksS0FBSyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTO2dCQUN4QyxDQUFDLENBQUMsR0FBRztnQkFDTCxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxXQUFXO29CQUM5QyxDQUFDLENBQUMsR0FBRztvQkFDTCxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZO3dCQUMvQyxDQUFDLENBQUMsR0FBRzt3QkFDTCxDQUFDLENBQUMsR0FBRyxDQUFBO1lBRVQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztnQkFDdEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2FBQ2pCLENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO1FBRUQsb0NBQW9DO1FBQ3BDLE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFBO1FBQ2pGLE1BQU0sVUFBVSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtRQUVuRSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsWUFBWTtZQUNyQixHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssYUFBYSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDO1NBQ3JFLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDLENBQUE7QUE5RlksUUFBQSxJQUFJLFFBOEZoQiJ9
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StoreCancelOrderBodySchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.StoreCancelOrderBodySchema = zod_1.z.object({
|
|
6
|
+
reason_id: zod_1.z.string().min(1, "reason_id is required"),
|
|
7
|
+
});
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsLW9yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS9zdG9yZS92YWxpZGF0b3JzL2NhbmNlbC1vcmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBdUI7QUFFVixRQUFBLDBCQUEwQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDakQsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLHVCQUF1QixDQUFDO0NBQ3RELENBQUMsQ0FBQSJ9
|
|
@@ -0,0 +1,14 @@
|
|
|
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.CancelOrderReasonModuleService = exports.CANCEL_ORDER_REASON_MODULE = void 0;
|
|
7
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
8
|
+
const service_1 = __importDefault(require("./service"));
|
|
9
|
+
exports.CancelOrderReasonModuleService = service_1.default;
|
|
10
|
+
exports.CANCEL_ORDER_REASON_MODULE = "cancel_order_reason";
|
|
11
|
+
exports.default = (0, utils_1.Module)(exports.CANCEL_ORDER_REASON_MODULE, {
|
|
12
|
+
service: service_1.default,
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jYW5jZWwtb3JkZXItcmVhc29uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFEQUFrRDtBQUNsRCx3REFBc0Q7QUFRN0MseUNBUkYsaUJBQThCLENBUUU7QUFOMUIsUUFBQSwwQkFBMEIsR0FBRyxxQkFBcUIsQ0FBQTtBQUUvRCxrQkFBZSxJQUFBLGNBQU0sRUFBQyxrQ0FBMEIsRUFBRTtJQUNoRCxPQUFPLEVBQUUsaUJBQThCO0NBQ3hDLENBQUMsQ0FBQSJ9
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Migration20260407100000 = void 0;
|
|
4
|
+
const migrations_1 = require("@medusajs/framework/mikro-orm/migrations");
|
|
5
|
+
class Migration20260407100000 extends migrations_1.Migration {
|
|
6
|
+
async up() {
|
|
7
|
+
this.addSql(`
|
|
8
|
+
CREATE TABLE IF NOT EXISTS "cancel_order_reason_mapping" (
|
|
9
|
+
"id" text NOT NULL PRIMARY KEY,
|
|
10
|
+
"order_id" text NOT NULL,
|
|
11
|
+
"reason_id" text NOT NULL,
|
|
12
|
+
"created_at" timestamptz NOT NULL DEFAULT now(),
|
|
13
|
+
"updated_at" timestamptz NOT NULL DEFAULT now(),
|
|
14
|
+
"deleted_at" timestamptz NULL,
|
|
15
|
+
CONSTRAINT "FK_cancel_order_reason_mapping_return_reason"
|
|
16
|
+
FOREIGN KEY ("reason_id") REFERENCES "return_reason"("id")
|
|
17
|
+
ON UPDATE CASCADE ON DELETE RESTRICT
|
|
18
|
+
);
|
|
19
|
+
`);
|
|
20
|
+
this.addSql(`
|
|
21
|
+
CREATE UNIQUE INDEX IF NOT EXISTS "IDX_cancel_order_reason_mapping_order_id"
|
|
22
|
+
ON "cancel_order_reason_mapping" ("order_id") WHERE "deleted_at" IS NULL;
|
|
23
|
+
`);
|
|
24
|
+
this.addSql(`
|
|
25
|
+
CREATE INDEX IF NOT EXISTS "IDX_cancel_order_reason_mapping_reason_id"
|
|
26
|
+
ON "cancel_order_reason_mapping" ("reason_id") WHERE "deleted_at" IS NULL;
|
|
27
|
+
`);
|
|
28
|
+
}
|
|
29
|
+
async down() {
|
|
30
|
+
this.addSql(`DROP INDEX IF EXISTS "IDX_cancel_order_reason_mapping_reason_id";`);
|
|
31
|
+
this.addSql(`DROP INDEX IF EXISTS "IDX_cancel_order_reason_mapping_order_id";`);
|
|
32
|
+
this.addSql(`DROP TABLE IF EXISTS "cancel_order_reason_mapping";`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.Migration20260407100000 = Migration20260407100000;
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWlncmF0aW9uMjAyNjA0MDcxMDAwMDAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jYW5jZWwtb3JkZXItcmVhc29uL21pZ3JhdGlvbnMvTWlncmF0aW9uMjAyNjA0MDcxMDAwMDAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUVBQW9FO0FBRXBFLE1BQWEsdUJBQXdCLFNBQVEsc0JBQVM7SUFDcEQsS0FBSyxDQUFDLEVBQUU7UUFDTixJQUFJLENBQUMsTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7S0FZWCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDOzs7S0FHWCxDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsTUFBTSxDQUFDOzs7S0FHWCxDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixJQUFJLENBQUMsTUFBTSxDQUFDLG1FQUFtRSxDQUFDLENBQUE7UUFDaEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxrRUFBa0UsQ0FBQyxDQUFBO1FBQy9FLElBQUksQ0FBQyxNQUFNLENBQUMscURBQXFELENBQUMsQ0FBQTtJQUNwRSxDQUFDO0NBQ0Y7QUFoQ0QsMERBZ0NDIn0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
4
|
+
const CancelOrderReasonMapping = utils_1.model.define("cancel_order_reason_mapping", {
|
|
5
|
+
id: utils_1.model.id().primaryKey(),
|
|
6
|
+
order_id: utils_1.model.text(),
|
|
7
|
+
reason_id: utils_1.model.text(),
|
|
8
|
+
});
|
|
9
|
+
exports.default = CancelOrderReasonMapping;
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsLW9yZGVyLXJlYXNvbi1tYXBwaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvY2FuY2VsLW9yZGVyLXJlYXNvbi9tb2RlbHMvY2FuY2VsLW9yZGVyLXJlYXNvbi1tYXBwaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscURBQWlEO0FBRWpELE1BQU0sd0JBQXdCLEdBQUcsYUFBSyxDQUFDLE1BQU0sQ0FBQyw2QkFBNkIsRUFBRTtJQUMzRSxFQUFFLEVBQUUsYUFBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsRUFBRTtJQUMzQixRQUFRLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRTtJQUN0QixTQUFTLEVBQUUsYUFBSyxDQUFDLElBQUksRUFBRTtDQUN4QixDQUFDLENBQUE7QUFFRixrQkFBZSx3QkFBd0IsQ0FBQSJ9
|
|
@@ -0,0 +1,97 @@
|
|
|
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
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
7
|
+
const _1 = require(".");
|
|
8
|
+
const cancel_order_reason_mapping_1 = __importDefault(require("./models/cancel-order-reason-mapping"));
|
|
9
|
+
class CancelOrderReasonModuleService extends (0, utils_1.MedusaService)({
|
|
10
|
+
CancelOrderReasonMapping: cancel_order_reason_mapping_1.default,
|
|
11
|
+
}) {
|
|
12
|
+
constructor(container) {
|
|
13
|
+
super(container);
|
|
14
|
+
this.manager_ = container.manager;
|
|
15
|
+
}
|
|
16
|
+
get moduleKey() {
|
|
17
|
+
return _1.CANCEL_ORDER_REASON_MODULE;
|
|
18
|
+
}
|
|
19
|
+
getOrderModule() {
|
|
20
|
+
const order = this.__container__[utils_1.Modules.ORDER];
|
|
21
|
+
if (!order || typeof order.retrieveReturnReason !== "function") {
|
|
22
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, "Order module is not available; cannot validate return reasons");
|
|
23
|
+
}
|
|
24
|
+
return order;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Ensures reason_id references an existing return_reason (Medusa order module).
|
|
28
|
+
*/
|
|
29
|
+
async assertReasonExists(reasonId) {
|
|
30
|
+
const orderModule = this.getOrderModule();
|
|
31
|
+
try {
|
|
32
|
+
await orderModule.retrieveReturnReason(reasonId);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Return reason not found for id "${reasonId}"`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
normalizeMapping(raw) {
|
|
39
|
+
if (!raw || typeof raw !== "object" || !("id" in raw) || !("order_id" in raw)) {
|
|
40
|
+
throw new Error("Invalid cancel order reason mapping data");
|
|
41
|
+
}
|
|
42
|
+
const row = raw;
|
|
43
|
+
return {
|
|
44
|
+
id: row.id,
|
|
45
|
+
order_id: row.order_id,
|
|
46
|
+
reason_id: row.reason_id,
|
|
47
|
+
created_at: new Date(row.created_at ?? new Date()),
|
|
48
|
+
updated_at: new Date(row.updated_at ?? new Date()),
|
|
49
|
+
deleted_at: row.deleted_at ? new Date(row.deleted_at) : null,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Persists which return reason was used for an order (after Medusa cancel succeeds).
|
|
54
|
+
*/
|
|
55
|
+
async recordOrderCancelReason(orderId, reasonId) {
|
|
56
|
+
const [existingRows] = await this.listAndCountCancelOrderReasonMappings({ order_id: orderId }, { take: 1 });
|
|
57
|
+
const existingList = Array.isArray(existingRows) ? existingRows : [];
|
|
58
|
+
const firstExisting = existingList[0];
|
|
59
|
+
if (firstExisting) {
|
|
60
|
+
return this.normalizeMapping(firstExisting);
|
|
61
|
+
}
|
|
62
|
+
const created = await this.createCancelOrderReasonMappings({
|
|
63
|
+
order_id: orderId,
|
|
64
|
+
reason_id: reasonId,
|
|
65
|
+
});
|
|
66
|
+
const arr = Array.isArray(created) ? created : [created];
|
|
67
|
+
const first = arr[0];
|
|
68
|
+
if (!first) {
|
|
69
|
+
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Failed to create cancel order reason mapping");
|
|
70
|
+
}
|
|
71
|
+
return this.normalizeMapping(first);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Load cancel reason mapping for an order, with return_reason label when still present.
|
|
75
|
+
*/
|
|
76
|
+
async getMappingWithReasonLabel(orderId) {
|
|
77
|
+
const [rows] = await this.listAndCountCancelOrderReasonMappings({ order_id: orderId }, { take: 1 });
|
|
78
|
+
const list = Array.isArray(rows) ? rows : [];
|
|
79
|
+
const first = list[0];
|
|
80
|
+
if (!first) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
const mapping = this.normalizeMapping(first);
|
|
84
|
+
const orderModule = this.getOrderModule();
|
|
85
|
+
let reason_label = null;
|
|
86
|
+
try {
|
|
87
|
+
const reason = await orderModule.retrieveReturnReason(mapping.reason_id);
|
|
88
|
+
reason_label = typeof reason.label === "string" ? reason.label : null;
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
reason_label = null;
|
|
92
|
+
}
|
|
93
|
+
return { mapping, reason_label };
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.default = CancelOrderReasonModuleService;
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL2NhbmNlbC1vcmRlci1yZWFzb24vc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUErRTtBQUcvRSx3QkFBOEM7QUFDOUMsdUdBQTJFO0FBZTNFLE1BQXFCLDhCQUErQixTQUFRLElBQUEscUJBQWEsRUFBQztJQUN4RSx3QkFBd0IsRUFBeEIscUNBQXdCO0NBQ3pCLENBQUM7SUFHQSxZQUFZLFNBQStCO1FBQ3pDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUE7SUFDbkMsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sNkJBQTBCLENBQUE7SUFDbkMsQ0FBQztJQUVTLGNBQWM7UUFDdEIsTUFBTSxLQUFLLEdBQUksSUFBb0MsQ0FBQyxhQUFhLENBQUMsZUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ2hGLElBQUksQ0FBQyxLQUFLLElBQUksT0FBUSxLQUE2QixDQUFDLG9CQUFvQixLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3hGLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMsK0RBQStELENBQ2hFLENBQUE7UUFDSCxDQUFDO1FBQ0QsT0FBTyxLQUE0QixDQUFBO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxRQUFnQjtRQUN2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7UUFDekMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxXQUFXLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDbEQsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFD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
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jYW5jZWwtb3JkZXItcmVhc29uL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "order-management",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.72",
|
|
4
4
|
"description": "A starter for Medusa plugins.",
|
|
5
5
|
"author": "Medusa (https://medusajs.com)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -52,6 +52,7 @@
|
|
|
52
52
|
"ts-node": "^10.9.2",
|
|
53
53
|
"typescript": "^5.6.2",
|
|
54
54
|
"vite": "^5.2.11",
|
|
55
|
+
"vitest": "^2.0.0",
|
|
55
56
|
"yalc": "^1.0.0-pre.53"
|
|
56
57
|
},
|
|
57
58
|
"peerDependencies": {
|