order-management 0.0.93 → 0.0.94

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.
@@ -10,6 +10,7 @@ const config_1 = require("../../../../../config");
10
10
  const cancel_order_workflow_1 = require("../../../../../workflows/cancel-order-workflow");
11
11
  const get_guest_token_1 = require("../../get-guest-token");
12
12
  const cancel_order_reason_1 = require("../../../../../modules/cancel-order-reason");
13
+ const unwrap_workflow_error_1 = require("../../../../../utils/unwrap-workflow-error");
13
14
  async function POST(req, res) {
14
15
  const token = (0, get_guest_token_1.getGuestToken)(req);
15
16
  const { id } = req.params;
@@ -21,17 +22,16 @@ async function POST(req, res) {
21
22
  res.status(400).json({ message: "Order ID is required" });
22
23
  return;
23
24
  }
24
- // Resolve plugin configuration
25
25
  let config;
26
26
  try {
27
27
  const configModule = req.scope.resolve(utils_1.ContainerRegistrationKeys.CONFIG_MODULE);
28
28
  config = (0, config_1.resolveOrderManagementOptions)(configModule);
29
29
  }
30
30
  catch (error) {
31
- const errorMessage = error instanceof Error ? error.message : "Unknown error";
31
+ const unwrapped = (0, unwrap_workflow_error_1.unwrapWorkflowError)(error);
32
32
  res.status(500).json({
33
33
  message: "Failed to resolve plugin configuration",
34
- error: errorMessage
34
+ error: unwrapped.message,
35
35
  });
36
36
  return;
37
37
  }
@@ -43,27 +43,24 @@ async function POST(req, res) {
43
43
  }
44
44
  const guest_identifier = decoded.guest_identifier;
45
45
  const actorId = decoded.actor_id ?? decoded.customer_id;
46
- // Resolve Query to fetch order and verify ownership
47
46
  const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
48
- // Fetch the specific order and include customer info
49
47
  const { data: orders } = await query.graph({
50
48
  entity: "order",
51
49
  fields: ["id", "customer_id", "email"],
52
50
  filters: {
53
51
  id: id,
54
- email: guest_identifier
55
- }
52
+ email: guest_identifier,
53
+ },
56
54
  });
57
55
  const order = orders[0];
58
56
  if (!order) {
59
57
  res.status(404).json({ message: "Order not found or access denied" });
60
58
  return;
61
59
  }
62
- // Use the customer_id from the order if available, otherwise from token (actor_id)
63
60
  const orderCustomerId = order.customer_id || actorId;
64
61
  if (!orderCustomerId) {
65
62
  res.status(400).json({
66
- message: "Cannot cancel order: customer ID not found"
63
+ message: "Cannot cancel order: customer ID not found",
67
64
  });
68
65
  return;
69
66
  }
@@ -71,7 +68,6 @@ async function POST(req, res) {
71
68
  const cancelReasonService = req.scope.resolve(cancel_order_reason_1.CANCEL_ORDER_REASON_MODULE);
72
69
  const orderModuleService = req.scope.resolve(utils_1.Modules.ORDER);
73
70
  await cancelReasonService.assertReasonExists(orderModuleService, reason_id);
74
- // Execute cancel order workflow
75
71
  const { result } = await (0, cancel_order_workflow_1.cancelOrderWorkflow)(req.scope).run({
76
72
  input: {
77
73
  order_id: id,
@@ -82,26 +78,19 @@ async function POST(req, res) {
82
78
  res.status(200).json(result);
83
79
  }
84
80
  catch (error) {
85
- if (error instanceof utils_1.MedusaError) {
86
- const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND
87
- ? 404
88
- : error.type === utils_1.MedusaError.Types.NOT_ALLOWED
89
- ? 403
90
- : error.type === utils_1.MedusaError.Types.UNAUTHORIZED
91
- ? 401
92
- : 400;
93
- res.status(statusCode).json({
94
- message: error.message,
95
- type: error.type,
81
+ const unwrapped = (0, unwrap_workflow_error_1.unwrapWorkflowError)(error);
82
+ if (error instanceof utils_1.MedusaError || unwrapped.isMedusaError) {
83
+ res.status((0, unwrap_workflow_error_1.statusCodeForMedusaErrorType)(unwrapped.type)).json({
84
+ message: unwrapped.message,
85
+ type: unwrapped.type,
96
86
  });
97
87
  return;
98
88
  }
99
- const errorMessage = error instanceof Error ? error.message : "An error occurred";
100
- const errorStack = error instanceof Error ? error.stack : undefined;
101
89
  res.status(500).json({
102
- message: errorMessage,
103
- ...(process.env.NODE_ENV === "development" && { stack: errorStack }),
90
+ message: unwrapped.message,
91
+ ...(config_1.runtimeConfig.isDevelopment &&
92
+ error instanceof Error && { stack: error.stack }),
104
93
  });
105
94
  }
106
95
  }
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2d1ZXN0LW9yZGVycy9baWRdL2NhbmNlbC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQVlBLG9CQXdIQztBQWxJRCxxREFBMkY7QUFDM0YsZ0VBQThDO0FBQzlDLGtEQUFxRTtBQUVyRSwwRkFBb0Y7QUFDcEYsMkRBQXFEO0FBQ3JELG9GQUF1RjtBQUloRixLQUFLLFVBQVUsSUFBSSxDQUN0QixHQUF3QyxFQUN4QyxHQUFtQjtJQUVuQixNQUFNLEtBQUssR0FBRyxJQUFBLCtCQUFhLEVBQUMsR0FBRyxDQUFDLENBQUE7SUFDaEMsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFFekIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsMkRBQTJELEVBQUUsQ0FBQyxDQUFBO1FBQzlGLE9BQU07SUFDVixDQUFDO0lBRUQsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ04sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQyxDQUFBO1FBQ3pELE9BQU07SUFDVixDQUFDO0lBRUQsK0JBQStCO0lBQy9CLElBQUksTUFBTSxDQUFBO0lBQ1YsSUFBSSxDQUFDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQ2xDLGlDQUF5QixDQUFDLGFBQWEsQ0FDMUMsQ0FBQTtRQUNELE1BQU0sR0FBRyxJQUFBLHNDQUE2QixFQUFDLFlBQVksQ0FBQyxDQUFBO0lBQ3hELENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsTUFBTSxZQUFZ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
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2d1ZXN0LW9yZGVycy9baWRdL2NhbmNlbC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWdCQSxvQkF5R0M7QUF2SEQscURBQTJGO0FBQzNGLGdFQUE4QztBQUM5QyxrREFBb0Y7QUFFcEYsMEZBQW9GO0FBQ3BGLDJEQUFxRDtBQUNyRCxvRkFBdUY7QUFHdkYsc0ZBR21EO0FBRTVDLEtBQUssVUFBVSxJQUFJLENBQ3hCLEdBQXdDLEVBQ3hDLEdBQW1CO0lBRW5CLE1BQU0sS0FBSyxHQUFHLElBQUEsK0JBQWEsRUFBQyxHQUFHLENBQUMsQ0FBQTtJQUNoQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUV6QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSwyREFBMkQsRUFBRSxDQUFDLENBQUE7UUFDOUYsT0FBTTtJQUNSLENBQUM7SUFFRCxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDUixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxDQUFDLENBQUE7UUFDekQsT0FBTTtJQUNSLENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQTtJQUNWLElBQUksQ0FBQztRQUNILE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUNwQyxpQ0FBeUIsQ0FBQyxhQUFhLENBQ3hDLENBQUE7UUFDRCxNQUFNLEdBQUcsSUFBQSxzQ0FBNkIsRUFBQyxZQUFZLENBQUMsQ0FBQTtJQUN0RCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sU0FB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
@@ -4,6 +4,8 @@ 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
6
  const cancel_order_reason_1 = require("../../../../../modules/cancel-order-reason");
7
+ const config_1 = require("../../../../../config");
8
+ const unwrap_workflow_error_1 = require("../../../../../utils/unwrap-workflow-error");
7
9
  const POST = async (req, res) => {
8
10
  const { order_id } = req.params;
9
11
  if (!order_id) {
@@ -38,28 +40,20 @@ const POST = async (req, res) => {
38
40
  res.json(result);
39
41
  }
40
42
  catch (error) {
41
- if (error instanceof utils_1.MedusaError) {
42
- const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND
43
- ? 404
44
- : error.type === utils_1.MedusaError.Types.NOT_ALLOWED
45
- ? 403
46
- : error.type === utils_1.MedusaError.Types.UNAUTHORIZED
47
- ? 401
48
- : 400;
49
- res.status(statusCode).json({
50
- message: error.message,
51
- type: error.type,
43
+ const unwrapped = (0, unwrap_workflow_error_1.unwrapWorkflowError)(error);
44
+ if (error instanceof utils_1.MedusaError || unwrapped.isMedusaError) {
45
+ res.status((0, unwrap_workflow_error_1.statusCodeForMedusaErrorType)(unwrapped.type)).json({
46
+ message: unwrapped.message,
47
+ type: unwrapped.type,
52
48
  });
53
49
  return;
54
50
  }
55
- // Return detailed error information
56
- const errorMessage = error instanceof Error ? error.message : "An error occurred";
57
- const errorStack = error instanceof Error ? error.stack : undefined;
58
51
  res.status(500).json({
59
- message: errorMessage,
60
- ...(process.env.NODE_ENV === "development" && { stack: errorStack }),
52
+ message: unwrapped.message,
53
+ ...(config_1.runtimeConfig.isDevelopment &&
54
+ error instanceof Error && { stack: error.stack }),
61
55
  });
62
56
  }
63
57
  };
64
58
  exports.POST = POST;
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL29yZGVycy9jYW5jZWwvW29yZGVyX2lkXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxxREFBZ0U7QUFDaEUsMEZBQW9GO0FBQ3BGLG9GQUF1RjtBQUloRixNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQXdDLEVBQ3hDLEdBQW1CLEVBQ25CLEVBQUU7SUFDRixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUUvQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsd0NBQXdDO1NBQ2xELENBQUMsQ0FBQTtRQUNGLE9BQU07SUFDUixDQUFDO0lBRUQsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUE7SUFFdkMsbUNBQW1DO0lBQ25DLE1BQU0sV0FBVyxHQUFJLEdBRW5CLENBQUMsWUFBWSxDQUFBO0lBRWYsTUFBTSxPQUFPLEdBQUcsV0FBVyxFQUFFLFFBQVEsQ0FBQTtJQUNyQyxNQUFNLFNBQVMsR0FBRyxXQUFXLEVBQUUsVUFBVSxDQUFBO0lBQ3pDLE1BQU0sVUFBVSxHQUFHLFNBQVMsS0FBSyxVQUFVLENBQUE7SUFFM0MsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzVCLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxtREFBbUQ7U0FDN0QsQ0FBQyxDQUFBO1FBQ0YsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUMzQyxnREFBMEIsQ0FDM0IsQ0FBQTtJQUNELE1BQU0sa0JBQWtCLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQXNCLGVBQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUVoRixJQUFJLENBQUM7UUFDSCxNQUFNLG1CQUFtQixDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBRTNFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUEsMkNBQW1CLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMxRCxLQUFLLEVBQUU7Z0JBQ0wsUUFBUTtnQkFDUixXQUFXLEVBQUUsT0FBTzthQUNyQjtTQUNGLENBQUMsQ0FBQTtRQUVGLE1BQU0sbUJBQW1CLENBQUMsdUJBQXVCLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFBO1FBRXRFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDbEIsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLEtBQUssWUFBWSxtQkFBVyxFQUFFLENBQUM7WUFDakMsTUFBTSxVQUFVLEdBQ2QsS0FBSyxDQUFDLElBQUksS0FBSyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTO2dCQUN4QyxDQUFDLENBQUMsR0FBRztnQkFDTCxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxXQUFXO29CQUM5QyxDQUFDLENBQUMsR0FBRztvQkFDTCxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZO3dCQUMvQyxDQUFDLENBQUMsR0FBRzt3QkFDTCxDQUFDLENBQUMsR0FBRyxDQUFBO1lBRVQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztnQkFDdEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2FBQ2pCLENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO1FBRUQsb0NBQW9DO1FBQ3BDLE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFBO1FBQ2pGLE1BQU0sVUFBVSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtRQUVuRSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsWUFBWTtZQUNyQixHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssYUFBYSxJQUFJLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDO1NBQ3JFLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDLENBQUE7QUE1RVksUUFBQSxJQUFJLFFBNEVoQiJ9
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL29yZGVycy9jYW5jZWwvW29yZGVyX2lkXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxxREFBZ0U7QUFDaEUsMEZBQW9GO0FBQ3BGLG9GQUF1RjtBQUd2RixrREFBcUQ7QUFDckQsc0ZBR21EO0FBRTVDLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBd0MsRUFDeEMsR0FBbUIsRUFDbkIsRUFBRTtJQUNGLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO0lBRS9CLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ25CLE9BQU8sRUFBRSx3Q0FBd0M7U0FDbEQsQ0FBQyxDQUFBO1FBQ0YsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQTtJQUV2QyxtQ0FBbUM7SUFDbkMsTUFBTSxXQUFXLEdBQUksR0FFbkIsQ0FBQyxZQUFZLENBQUE7SUFFZixNQUFNLE9BQU8sR0FBRyxXQUFXLEVBQUUsUUFBUSxDQUFBO0lBQ3JDLE1BQU0sU0FBUyxHQUFHLFdBQVcsRUFBRSxVQUFVLENBQUE7SUFDekMsTUFBTSxVQUFVLEdBQUcsU0FBUyxLQUFLLFVBQVUsQ0FBQTtJQUUzQyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDNUIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxFQUFFLG1EQUFtRDtTQUM3RCxDQUFDLENBQUE7UUFDRixPQUFNO0lBQ1IsQ0FBQztJQUVELE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQzNDLGdEQUEwQixDQUMzQixDQUFBO0lBQ0QsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBc0IsZUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRWhGLElBQUksQ0FBQztRQUNILE1BQU0sbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFFM0UsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSwyQ0FBbUIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQzFELEtBQUssRUFBRTtnQkFDTCxRQUFRO2dCQUNSLFdBQVcsRUFBRSxPQUFPO2FBQ3JCO1NBQ0YsQ0FBQyxDQUFBO1FBRUYsTUFBTSxtQkFBbUIsQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUE7UUFFdEUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUNsQixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sU0FBUyxHQUFHLElBQUEsMkNBQW1CLEVBQUMsS0FBSyxDQUFDLENBQUE7UUFFNUMsSUFBSSxLQUFLLFlBQVksbUJBQVcsSUFBSSxTQUFTLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDNUQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFBLG9EQUE0QixFQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDNUQsT0FBTyxFQUFFLFNBQVMsQ0FBQyxPQUFPO2dCQUMxQixJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7YUFDckIsQ0FBQyxDQUFBO1lBQ0YsT0FBTTtRQUNSLENBQUM7UUFFRCxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsU0FBUyxDQUFDLE9BQU87WUFDMUIsR0FBRyxDQUFDLHNCQUFhLENBQUMsYUFBYTtnQkFDN0IsS0FBSyxZQUFZLEtBQUssSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDcEQsQ0FBQyxDQUFBO0lBQ0osQ0FBQztBQUNILENBQUMsQ0FBQTtBQWxFWSxRQUFBLElBQUksUUFrRWhCIn0=
@@ -4,9 +4,14 @@
4
4
  * Configuration is now passed through plugin options in medusa-config.ts
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.runtimeConfig = void 0;
7
8
  exports.normalizeOrderManagementOptions = normalizeOrderManagementOptions;
8
9
  exports.resolveOrderManagementOptions = resolveOrderManagementOptions;
9
10
  const utils_1 = require("@medusajs/framework/utils");
11
+ /** Runtime flags read once from the environment (do not use process.env elsewhere). */
12
+ exports.runtimeConfig = {
13
+ isDevelopment: process.env.NODE_ENV === "development",
14
+ };
10
15
  const PLUGIN_NAME = "order-management";
11
16
  function normalizeOrderManagementOptions(input) {
12
17
  if (!input) {
@@ -64,4 +69,4 @@ function resolveOrderManagementOptions(configModule) {
64
69
  }
65
70
  throw new Error("order-management: Plugin not found in configuration. Please add the plugin to medusa-config.ts");
66
71
  }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOztBQXFDSCwwRUFvREM7QUFFRCxzRUF3QkM7QUFqSEQscURBQW9EO0FBc0JwRCxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQTtBQWF0QyxTQUFnQiwrQkFBK0IsQ0FDN0MsS0FBMkM7SUFFM0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FDYixnR0FBZ0csQ0FDakcsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQ2IsK0RBQStELENBQ2hFLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUE7SUFDOUUsQ0FBQztJQUVELE1BQU0saUJBQWlCLEdBQ3JCLE9BQU8sS0FBSyxDQUFDLGlCQUFpQixLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEdBQUcsQ0FBQztRQUN4RSxDQUFDLENBQUMsS0FBSyxDQUFDLGlCQUFpQjtRQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRVAsTUFBTSxtQkFBbUIsR0FDdkIsT0FBTyxLQUFLLENBQUMsbUJBQW1CLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CO1FBQzNCLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFUCxPQUFPO1FBQ0wsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1FBQ2xDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixLQUFLLEVBQUU7WUFDTCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLG9CQUFvQixJQUFJLElBQUk7WUFDL0QsV0FBVyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxJQUFJLElBQUk7U0FDOUM7UUFDRCxJQUFJLEVBQUU7WUFDSixPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLElBQUksS0FBSztZQUNyQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJO1lBQ3RCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUk7WUFDdEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLElBQUk7WUFDbEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSTtZQUN0QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJO1NBQ3ZCO1FBQ0QsYUFBYSxFQUFFO1lBQ2IsT0FBTyxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsT0FBTyxJQUFJLEtBQUs7WUFDOUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsWUFBWSxJQUFJLEVBQUU7U0FDdEQ7UUFDRCw0QkFBNEIsRUFBRSxLQUFLLENBQUMsNEJBQTRCLElBQUksSUFBSTtRQUN4RSxpQkFBaUI7UUFDakIsbUJBQW1CO0tBQ3BCLENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsNkJBQTZCLENBQzNDLFlBQWdDO0lBRWhDLE1BQU0sT0FBTyxHQUFHLFlBQVksRUFBRSxPQUFPLElBQUksRUFBRSxDQUFBO0lBRTNDLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFBLGdCQUFRLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDM0Isd0VBQXdFO2dCQUN4RSxNQUFNLElBQUksS0FBSyxDQUNiLDZGQUE2RixDQUM5RixDQUFBO1lBQ0gsQ0FBQztZQUNELFNBQVE7UUFDVixDQUFDO1FBRUQsSUFBSSxNQUFNLEVBQUUsT0FBTyxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sK0JBQStCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FDYixnR0FBZ0csQ0FDakcsQ0FBQTtBQUNILENBQUMifQ==
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUEwQ0gsMEVBb0RDO0FBRUQsc0VBd0JDO0FBdEhELHFEQUFvRDtBQU1wRCx1RkFBdUY7QUFDMUUsUUFBQSxhQUFhLEdBQUc7SUFDM0IsYUFBYSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLGFBQWE7Q0FDN0MsQ0FBQTtBQWtCVixNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQTtBQWF0QyxTQUFnQiwrQkFBK0IsQ0FDN0MsS0FBMkM7SUFFM0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ1gsTUFBTSxJQUFJLEtBQUssQ0FDYixnR0FBZ0csQ0FDakcsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQ2IsK0RBQStELENBQ2hFLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUE7SUFDOUUsQ0FBQztJQUVELE1BQU0saUJBQWlCLEdBQ3JCLE9BQU8sS0FBSyxDQUFDLGlCQUFpQixLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEdBQUcsQ0FBQztRQUN4RSxDQUFDLENBQUMsS0FBSyxDQUFDLGlCQUFpQjtRQUN6QixDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRVAsTUFBTSxtQkFBbUIsR0FDdkIsT0FBTyxLQUFLLENBQUMsbUJBQW1CLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsR0FBRyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxLQUFLLENBQUMsbUJBQW1CO1FBQzNCLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFUCxPQUFPO1FBQ0wsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1FBQ2xDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztRQUMxQixLQUFLLEVBQUU7WUFDTCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFLG9CQUFvQixJQUFJLElBQUk7WUFDL0QsV0FBVyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxJQUFJLElBQUk7U0FDOUM7UUFDRCxJQUFJLEVBQUU7WUFDSixPQUFPLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLElBQUksS0FBSztZQUNyQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJO1lBQ3RCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUk7WUFDdEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsTUFBTSxJQUFJLElBQUk7WUFDbEMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSTtZQUN0QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJO1NBQ3ZCO1FBQ0QsYUFBYSxFQUFFO1lBQ2IsT0FBTyxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsT0FBTyxJQUFJLEtBQUs7WUFDOUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxhQUFhLEVBQUUsWUFBWSxJQUFJLEVBQUU7U0FDdEQ7UUFDRCw0QkFBNEIsRUFBRSxLQUFLLENBQUMsNEJBQTRCLElBQUksSUFBSTtRQUN4RSxpQkFBaUI7UUFDakIsbUJBQW1CO0tBQ3BCLENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBZ0IsNkJBQTZCLENBQzNDLFlBQWdDO0lBRWhDLE1BQU0sT0FBTyxHQUFHLFlBQVksRUFBRSxPQUFPLElBQUksRUFBRSxDQUFBO0lBRTNDLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7UUFDN0IsSUFBSSxJQUFBLGdCQUFRLEVBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLE1BQU0sS0FBSyxXQUFXLEVBQUUsQ0FBQztnQkFDM0Isd0VBQXdFO2dCQUN4RSxNQUFNLElBQUksS0FBSyxDQUNiLDZGQUE2RixDQUM5RixDQUFBO1lBQ0gsQ0FBQztZQUNELFNBQVE7UUFDVixDQUFDO1FBRUQsSUFBSSxNQUFNLEVBQUUsT0FBTyxLQUFLLFdBQVcsRUFBRSxDQUFDO1lBQ3BDLE9BQU8sK0JBQStCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FDYixnR0FBZ0csQ0FDakcsQ0FBQTtBQUNILENBQUMifQ==
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseFulfilledQuantity = parseFulfilledQuantity;
4
+ exports.getItemFulfilledQuantity = getItemFulfilledQuantity;
5
+ /**
6
+ * Parse Medusa BigNumber / detail fulfilled quantity fields into a non-negative integer.
7
+ * Returns 0 when the value is missing or unparsable (never throws).
8
+ */
9
+ function parseFulfilledQuantity(value) {
10
+ if (value == null) {
11
+ return 0;
12
+ }
13
+ if (typeof value === "number") {
14
+ return Number.isFinite(value) && value > 0 ? Math.floor(value) : 0;
15
+ }
16
+ if (typeof value === "string") {
17
+ const trimmed = value.trim();
18
+ if (!trimmed) {
19
+ return 0;
20
+ }
21
+ const parsed = Number(trimmed);
22
+ return Number.isFinite(parsed) && parsed > 0 ? Math.floor(parsed) : 0;
23
+ }
24
+ if (typeof value === "object") {
25
+ const record = value;
26
+ if ("value" in record) {
27
+ return parseFulfilledQuantity(record.value);
28
+ }
29
+ if ("numeric" in record) {
30
+ return parseFulfilledQuantity(record.numeric);
31
+ }
32
+ }
33
+ return 0;
34
+ }
35
+ function getItemFulfilledQuantity(item) {
36
+ const detail = item.detail != null && typeof item.detail === "object"
37
+ ? item.detail
38
+ : undefined;
39
+ const candidates = [
40
+ item.fulfilled_quantity,
41
+ detail?.fulfilled_quantity,
42
+ detail?.raw_fulfilled_quantity,
43
+ ];
44
+ for (const candidate of candidates) {
45
+ const qty = parseFulfilledQuantity(candidate);
46
+ if (qty > 0) {
47
+ return qty;
48
+ }
49
+ }
50
+ return 0;
51
+ }
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVsZmlsbGVkLXF1YW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL2Z1bGZpbGxlZC1xdWFudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUlBLHdEQTZCQztBQUVELDREQXVCQztBQTFERDs7O0dBR0c7QUFDSCxTQUFnQixzQkFBc0IsQ0FBQyxLQUFjO0lBQ25ELElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2xCLE9BQU8sQ0FBQyxDQUFBO0lBQ1YsQ0FBQztJQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0lBRUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDNUIsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxDQUFDLENBQUE7UUFDVixDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQzlCLE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDdkUsQ0FBQztJQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsTUFBTSxNQUFNLEdBQUcsS0FBZ0MsQ0FBQTtRQUMvQyxJQUFJLE9BQU8sSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUN0QixPQUFPLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUM3QyxDQUFDO1FBQ0QsSUFBSSxTQUFTLElBQUksTUFBTSxFQUFFLENBQUM7WUFDeEIsT0FBTyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBQTtBQUNWLENBQUM7QUFFRCxTQUFnQix3QkFBd0IsQ0FBQyxJQUd4QztJQUNDLE1BQU0sTUFBTSxHQUNWLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxRQUFRO1FBQ3BELENBQUMsQ0FBRSxJQUFJLENBQUMsTUFBa0M7UUFDMUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUVmLE1BQU0sVUFBVSxHQUFjO1FBQzVCLElBQUksQ0FBQyxrQkFBa0I7UUFDdkIsTUFBTSxFQUFFLGtCQUFrQjtRQUMxQixNQUFNLEVBQUUsc0JBQXNCO0tBQy9CLENBQUE7SUFFRCxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ25DLE1BQU0sR0FBRyxHQUFHLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBQzdDLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ1osT0FBTyxHQUFHLENBQUE7UUFDWixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sQ0FBQyxDQUFBO0FBQ1YsQ0FBQyJ9
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.unwrapWorkflowError = unwrapWorkflowError;
4
+ exports.statusCodeForMedusaErrorType = statusCodeForMedusaErrorType;
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ function isRecord(value) {
7
+ return typeof value === "object" && value !== null;
8
+ }
9
+ function readString(value) {
10
+ return typeof value === "string" && value.trim() !== "" ? value.trim() : undefined;
11
+ }
12
+ /**
13
+ * Medusa workflow `.run()` often wraps the real failure in nested objects
14
+ * (`error`, `cause`, `errors[]`) that are not `instanceof Error` / `MedusaError`.
15
+ * Dig until we find a usable message and Medusa-like type.
16
+ */
17
+ function unwrapWorkflowError(error) {
18
+ const visited = new Set();
19
+ const queue = [error];
20
+ let bestMessage;
21
+ let bestType;
22
+ let sawMedusa = false;
23
+ while (queue.length > 0) {
24
+ const current = queue.shift();
25
+ if (current == null || visited.has(current)) {
26
+ continue;
27
+ }
28
+ visited.add(current);
29
+ if (typeof current === "string") {
30
+ if (!bestMessage) {
31
+ bestMessage = current;
32
+ }
33
+ continue;
34
+ }
35
+ if (current instanceof utils_1.MedusaError) {
36
+ sawMedusa = true;
37
+ bestMessage = current.message || bestMessage;
38
+ bestType = current.type || bestType;
39
+ continue;
40
+ }
41
+ if (current instanceof Error) {
42
+ // Prefer nested Error messages (often the real provider failure).
43
+ if (current.message) {
44
+ bestMessage = current.message;
45
+ }
46
+ const maybeType = current.type;
47
+ if (typeof maybeType === "string") {
48
+ bestType = maybeType;
49
+ }
50
+ if (current.__isMedusaError === true) {
51
+ sawMedusa = true;
52
+ }
53
+ const cause = current.cause;
54
+ if (cause != null) {
55
+ queue.push(cause);
56
+ }
57
+ continue;
58
+ }
59
+ if (!isRecord(current)) {
60
+ continue;
61
+ }
62
+ const like = current;
63
+ if (like.__isMedusaError === true || like.name === "MedusaError") {
64
+ sawMedusa = true;
65
+ }
66
+ const message = readString(like.message) ||
67
+ readString(current["msg"]) ||
68
+ readString(current["detail"]);
69
+ if (message && !bestMessage) {
70
+ bestMessage = message;
71
+ }
72
+ if (typeof like.type === "string" && !bestType) {
73
+ bestType = like.type;
74
+ }
75
+ if (like.error != null) {
76
+ queue.push(like.error);
77
+ }
78
+ if (like.cause != null) {
79
+ queue.push(like.cause);
80
+ }
81
+ if (Array.isArray(like.errors)) {
82
+ for (const nested of like.errors) {
83
+ queue.push(nested);
84
+ }
85
+ }
86
+ }
87
+ return {
88
+ message: bestMessage || "An error occurred",
89
+ type: bestType,
90
+ isMedusaError: sawMedusa || Boolean(bestType),
91
+ };
92
+ }
93
+ function statusCodeForMedusaErrorType(type) {
94
+ switch (type) {
95
+ case utils_1.MedusaError.Types.NOT_FOUND:
96
+ return 404;
97
+ case utils_1.MedusaError.Types.NOT_ALLOWED:
98
+ return 403;
99
+ case utils_1.MedusaError.Types.UNAUTHORIZED:
100
+ return 401;
101
+ case utils_1.MedusaError.Types.INVALID_DATA:
102
+ case utils_1.MedusaError.Types.INVALID_ARGUMENT:
103
+ return 400;
104
+ default:
105
+ return 400;
106
+ }
107
+ }
108
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW53cmFwLXdvcmtmbG93LWVycm9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3Vud3JhcC13b3JrZmxvdy1lcnJvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdDQSxrREFzRkM7QUFFRCxvRUFjQztBQXRJRCxxREFBdUQ7QUFtQnZELFNBQVMsUUFBUSxDQUFDLEtBQWM7SUFDOUIsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxLQUFLLElBQUksQ0FBQTtBQUNwRCxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQUMsS0FBYztJQUNoQyxPQUFPLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtBQUNwRixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLEtBQWM7SUFDaEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQVcsQ0FBQTtJQUNsQyxNQUFNLEtBQUssR0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRWhDLElBQUksV0FBK0IsQ0FBQTtJQUNuQyxJQUFJLFFBQTRCLENBQUE7SUFDaEMsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFBO0lBRXJCLE9BQU8sS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN4QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDN0IsSUFBSSxPQUFPLElBQUksSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxTQUFRO1FBQ1YsQ0FBQztRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7UUFFcEIsSUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLEVBQUUs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
@@ -1,59 +1,105 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.cancelOrderStep = void 0;
4
+ exports.cancelOpenUnshippedFulfillments = cancelOpenUnshippedFulfillments;
5
+ exports.executeCancelOrder = executeCancelOrder;
4
6
  const utils_1 = require("@medusajs/framework/utils");
5
7
  const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
6
8
  const core_flows_1 = require("@medusajs/medusa/core-flows");
7
- exports.cancelOrderStep = (0, workflows_sdk_1.createStep)("cancel-order-step", async (input, { container }) => {
9
+ const fulfilled_quantity_1 = require("../../utils/fulfilled-quantity");
10
+ const unwrap_workflow_error_1 = require("../../utils/unwrap-workflow-error");
11
+ /**
12
+ * Cancel unshipped open fulfillments so Medusa core cancelOrderWorkflow can proceed.
13
+ * Shipped fulfillments cannot be canceled — those block order cancel intentionally.
14
+ */
15
+ async function cancelOpenUnshippedFulfillments(container, orderId, cancelFulfillment) {
16
+ let query;
17
+ try {
18
+ query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
19
+ }
20
+ catch {
21
+ return;
22
+ }
23
+ const { data } = await query.graph({
24
+ entity: "order",
25
+ fields: ["id", "fulfillments.id", "fulfillments.canceled_at", "fulfillments.shipped_at"],
26
+ filters: { id: orderId },
27
+ });
28
+ const orderRow = data?.[0];
29
+ const fulfillments = (orderRow?.fulfillments ?? []);
30
+ const open = fulfillments.filter((f) => f?.id && !f.canceled_at);
31
+ if (open.length === 0) {
32
+ return;
33
+ }
34
+ const shipped = open.filter((f) => Boolean(f.shipped_at));
35
+ if (shipped.length > 0) {
36
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "Cannot cancel order: Some items have already been fulfilled or shipped");
37
+ }
38
+ for (const fulfillment of open) {
39
+ await cancelFulfillment({
40
+ order_id: orderId,
41
+ fulfillment_id: fulfillment.id,
42
+ });
43
+ }
44
+ }
45
+ async function executeCancelOrder(input, container, deps) {
8
46
  const { order } = input;
9
47
  if (!order || !order.id) {
10
48
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Order is required to cancel");
11
49
  }
12
- // Check if order has fulfilled items
13
- // Check order items' fulfilled_quantity directly from the order data
14
50
  const orderItems = order.items || [];
15
- const hasFulfilledItems = orderItems.some((item) => {
16
- // Access detail field safely using the [key: string]: unknown type
17
- const detail = item.detail;
18
- const fulfilledQuantity = item.fulfilled_quantity;
19
- // Check fulfilled_quantity from detail.raw_fulfilled_quantity or direct field
20
- const fulfilledQty = detail?.raw_fulfilled_quantity?.value
21
- ? parseInt(detail.raw_fulfilled_quantity.value, 10)
22
- : fulfilledQuantity || 0;
23
- return fulfilledQty > 0;
24
- });
51
+ const hasFulfilledItems = orderItems.some((item) => (0, fulfilled_quantity_1.getItemFulfilledQuantity)({
52
+ fulfilled_quantity: item.fulfilled_quantity,
53
+ detail: item.detail,
54
+ }) > 0);
25
55
  if (hasFulfilledItems) {
26
56
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "Cannot cancel order: Some items have already been fulfilled");
27
57
  }
28
- try {
29
- // Use Medusa's built-in cancel order workflow
30
- const { result } = await (0, core_flows_1.cancelOrderWorkflow)(container).run({
31
- input: {
32
- order_id: order.id,
33
- },
58
+ const cancelFulfillment = deps?.cancelFulfillment ??
59
+ (async (fulfillmentInput) => {
60
+ await (0, core_flows_1.cancelOrderFulfillmentWorkflow)(container).run({
61
+ input: fulfillmentInput,
62
+ });
63
+ });
64
+ const cancelOrder = deps?.cancelOrder ??
65
+ (async (cancelInput) => {
66
+ const { result } = await (0, core_flows_1.cancelOrderWorkflow)(container).run({
67
+ input: cancelInput,
68
+ });
69
+ return result;
34
70
  });
35
- // The workflow result structure may vary, handle it safely
71
+ try {
72
+ await cancelOpenUnshippedFulfillments(container, order.id, cancelFulfillment);
73
+ const result = await cancelOrder({ order_id: order.id });
36
74
  const workflowResult = result;
37
- // Extract order ID and status from result (may be nested or direct)
38
75
  const canceledOrderId = workflowResult?.order?.id || workflowResult?.id || order.id;
39
76
  const canceledStatus = workflowResult?.order?.status || workflowResult?.status || "canceled";
40
- return new workflows_sdk_1.StepResponse({
77
+ return {
41
78
  order_id: canceledOrderId,
42
79
  status: canceledStatus,
43
80
  message: "Order canceled successfully",
44
- });
81
+ };
45
82
  }
46
83
  catch (error) {
47
- // Handle cancellation errors
48
84
  if (error instanceof utils_1.MedusaError) {
49
85
  throw error;
50
86
  }
51
- const errorMessage = error instanceof Error ? error.message : "Failed to cancel order";
52
- // Check for common error scenarios
53
- if (errorMessage.includes("fulfilled") || errorMessage.includes("shipped")) {
87
+ const unwrapped = (0, unwrap_workflow_error_1.unwrapWorkflowError)(error);
88
+ const errorMessage = unwrapped.message;
89
+ if (errorMessage.includes("fulfilled") ||
90
+ errorMessage.includes("shipped") ||
91
+ errorMessage.includes("fulfillment")) {
54
92
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "Cannot cancel order: Some items have already been fulfilled or shipped");
55
93
  }
56
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNEXPECTED_STATE, `Failed to cancel order: ${errorMessage}`);
94
+ const knownTypes = new Set(Object.values(utils_1.MedusaError.Types));
95
+ const errorType = unwrapped.type && knownTypes.has(unwrapped.type)
96
+ ? unwrapped.type
97
+ : utils_1.MedusaError.Types.UNEXPECTED_STATE;
98
+ throw new utils_1.MedusaError(errorType, `Failed to cancel order: ${errorMessage}`);
57
99
  }
100
+ }
101
+ exports.cancelOrderStep = (0, workflows_sdk_1.createStep)("cancel-order-step", async (input, { container }) => {
102
+ const output = await executeCancelOrder(input, container);
103
+ return new workflows_sdk_1.StepResponse(output);
58
104
  });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsLW9yZGVyLXN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL2NhbmNlbC1vcmRlci1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUErRztBQUMvRyxxRUFBNEU7QUFDNUUsNERBQWlFO0FBY3BELFFBQUEsZUFBZSxHQUFHLElBQUEsMEJBQVUsRUFDdkMsbUJBQW1CLEVBQ25CLEtBQUssRUFDSCxLQUEyQixFQUMzQixFQUFFLFNBQVMsRUFBRSxFQUNpQyxFQUFFO0lBQ2hELE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUE7SUFFdkIsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUN4QixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qiw2QkFBNkIsQ0FDOUIsQ0FBQTtJQUNILENBQUM7SUFFRCxxQ0FBcUM7SUFDckMscUVBQXFFO0lBQ3JFLE1BQU0sVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFBO0lBQ3BDLE1BQU0saUJBQWlCLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ2pELG1FQUFtRTtRQUNuRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBcUUsQ0FBQTtRQUN6RixNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxrQkFBd0MsQ0FBQTtRQUV2RSw4RUFBOEU7UUFDOUUsTUFBTSxZQUFZLEdBQUcsTUFBTSxFQUFFLHNCQUFzQixFQUFFLEtBQUs7WUFDeEQsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNuRCxDQUFDLENBQUMsaUJBQWlCLElBQUksQ0FBQyxDQUFBO1FBRTFCLE9BQU8sWUFBWSxHQUFHLENBQUMsQ0FBQTtJQUN6QixDQUFDLENBQUMsQ0FBQTtJQUVGLElBQUksaUJBQWlCLEVBQUUsQ0FBQztRQUN0QixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUM3Qiw2REFBNkQsQ0FDOUQsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCw4Q0FBOEM7UUFDOUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSxnQ0FBbUIsRUFBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDMUQsS0FBSyxFQUFFO2dCQUNMLFFBQVEsRUFBRSxLQUFLLENBQUMsRUFBRTthQUNuQjtTQUNGLENBQUMsQ0FBQTtRQUVGLDJEQUEyRDtRQUMzRCxNQUFNLGNBQWMsR0FBRyxNQUl0QixDQUFBO1FBRUQsb0VBQW9FO1FBQ3BFLE1BQU0sZUFBZSxHQUFHLGNBQWMsRUFBRSxLQUFLLEVBQUUsRUFBRSxJQUFJLGNBQWMsRUFBRSxFQUFFLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQTtRQUNuRixNQUFNLGNBQWMsR0FBRyxjQUFjLEVBQUUsS0FBSyxFQUFFLE1BQU0sSUFBSSxjQUFjLEVBQUUsTUFBTSxJQUFJLFVBQVUsQ0FBQTtRQUU1RixPQUFPLElBQUksNEJBQVksQ0FBd0I7WUFDN0MsUUFBUSxFQUFFLGVBQWU7WUFDekIsTUFBTSxFQUFFLGNBQWM7WUFDdEIsT0FBTyxFQUFFLDZCQUE2QjtTQUN2QyxDQUFDLENBQUE7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLDZCQUE2QjtRQUM3QixJQUFJLEtBQUssWUFBWSxtQkFBVyxFQUFFLENBQUM7WUFDakMsTUFBTSxLQUFLLENBQUE7UUFDYixDQUFDO1FBRUQsTUFBTSxZQUFZLEdBQ2hCLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHdCQUF3QixDQUFBO1FBRW5FLG1DQUFtQztRQUNuQyxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQzNFLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQzdCLHdFQUF3RSxDQUN6RSxDQUFBO1FBQ0gsQ0FBQztRQUVELE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFDbEMsMkJBQTJCLFlBQVksRUFBRSxDQUMxQyxDQUFBO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FDRixDQUFBIn0=
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuY2VsLW9yZGVyLXN0ZXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3N0ZXBzL2NhbmNlbC1vcmRlci1zdGVwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQXNEQSwwRUF3Q0M7QUFFRCxnREEwR0M7QUExTUQscURBR2tDO0FBQ2xDLHFFQUE0RTtBQUM1RSw0REFHb0M7QUFHcEMsdUVBQXlFO0FBQ3pFLDZFQUF1RTtBQXNDdkU7OztHQUdHO0FBQ0ksS0FBSyxVQUFVLCtCQUErQixDQUNuRCxTQUFtQyxFQUNuQyxPQUFlLEVBQ2YsaUJBQXVEO0lBRXZELElBQUksS0FBbUIsQ0FBQTtJQUN2QixJQUFJLENBQUM7UUFDSCxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBZSxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMxRSxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2pDLE1BQU0sRUFBRSxPQUFPO1FBQ2YsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFLDBCQUEwQixFQUFFLHlCQUF5QixDQUFDO1FBQ3hGLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUU7S0FDekIsQ0FBQyxDQUFBO0lBRUYsTUFBTSxRQUFRLEdBQUcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDMUIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxRQUFRLEVBQUUsWUFBWSxJQUFJLEVBQUUsQ0FBeUIsQ0FBQTtJQUMzRSxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0lBRWhFLElBQUks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
package/README.md CHANGED
@@ -270,6 +270,8 @@ curl "http://localhost:9000/admin/orders/order_123/refund-context" \
270
270
  |---|---|---|
271
271
  | OTP request fails with template/config message | Missing `email.otpTemplate` or unresolved plugin options | Configure plugin options in `medusa-config.ts`; verify template path exists. |
272
272
  | Guest JWT endpoints return unauthorized | Invalid/expired token or `jwtSecret` mismatch | Re-run OTP verify and ensure same `jwtSecret` is used in runtime config. |
273
+ | Store cancel returns generic `An error occurred` | Workflow failure was wrapped and not unwrapped by the cancel route | Upgrade this plugin. Nested Medusa/workflow errors are now unwrapped into a real `message`. Check payment refund/void logs if cancel still fails. |
274
+ | Cancel blocked by open fulfillments on a “not fulfilled” order | Core cancel requires all fulfillments to have `canceled_at` | Upgrade this plugin. Unshipped open fulfillments are canceled automatically before core cancel. |
273
275
  | Return/exchange blocked with `RETURN_WINDOW_EXPIRED` | Delivery date outside configured window | Increase `returnValidInDays`/`exchangeValidInDays` or update storefront UX for expiry handling. |
274
276
  | Refund mapping routes fail | `refund-payment-mapping` module not registered/migrated | Register module and run migrations. |
275
277
  | Guest return shows no payment method in Admin | Guest COD returns previously stored `payment_id=null` and guests could not create/link payment details | Upgrade this plugin. Pass `refund_payment` / `refund_payment_id` on guest return create, or use `POST /store/guest-orders/:id/payment-details` + `PUT .../returns/:return_id/refund-payment`. |
@@ -318,6 +320,8 @@ This plugin is compatible with Medusa v2 (e.g. `@medusajs/framework` and `@medus
318
320
  ## Features
319
321
 
320
322
  - **Order Management**: Cancel and reorder for both authenticated customers and guest orders
323
+ - **Cancel error surfacing**: Customer/guest cancel routes unwrap nested Medusa workflow errors so the storefront shows the real failure (not a bare `An error occurred`)
324
+ - **Cancel pre-clears unshipped fulfillments**: Before calling Medusa core cancel, open unshipped fulfillments are canceled so pending orders are not blocked by fulfillment rows
321
325
  - **Authenticated Customer APIs**: Store endpoints for logged-in customers to cancel orders (`/store/orders/cancel/:order_id`), reorder (`/store/orders/reorder/:order_id`), manage returns (`/store/returns`), and manage exchanges (`/store/swaps`)
322
326
  - **Guest Order Portal**: OTP-based look-up for guest users with full order management (view orders, initiate returns, cancel, reorder)
323
327
  - **Guest Order Actions**: Secure JWT-protected endpoints for guest users to view orders, initiate returns (via Medusa workflow), cancel orders, reorder (all under `/store/guest-orders/:id/...`)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "order-management",
3
- "version": "0.0.93",
3
+ "version": "0.0.94",
4
4
  "description": "A starter for Medusa plugins.",
5
5
  "author": "Medusa (https://medusajs.com)",
6
6
  "license": "MIT",