order-management 0.0.21 → 0.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/.medusa/server/src/admin/index.js +49 -23
  2. package/.medusa/server/src/admin/index.mjs +49 -23
  3. package/.medusa/server/src/api/admin/swaps/[id]/approve/route.js +69 -31
  4. package/.medusa/server/src/api/admin/swaps/health/route.js +150 -0
  5. package/.medusa/server/src/api/admin/swaps/route.js +6 -12
  6. package/.medusa/server/src/api/admin/swaps/validators.js +9 -13
  7. package/.medusa/server/src/api/store/orders/[order_id]/swaps/route.js +47 -2
  8. package/.medusa/server/src/api/store/swaps/[id]/cancel/route.js +8 -1
  9. package/.medusa/server/src/api/store/swaps/[id]/route.js +15 -4
  10. package/.medusa/server/src/api/store/swaps/route.js +53 -10
  11. package/.medusa/server/src/helpers/swaps.js +1 -1
  12. package/.medusa/server/src/modules/swap/migrations/Migration20260123144734.js +29 -0
  13. package/.medusa/server/src/modules/swap/migrations/Migration20260123162423.js +48 -0
  14. package/.medusa/server/src/modules/swap/migrations/Migration20260126114640.js +48 -0
  15. package/.medusa/server/src/modules/swap/models/swap.js +7 -2
  16. package/.medusa/server/src/modules/swap/service.js +259 -32
  17. package/.medusa/server/src/subscribers/exchange-created.js +171 -0
  18. package/.medusa/server/src/workflows/steps/swap/create-medusa-exchange-step.js +153 -19
  19. package/.medusa/server/src/workflows/steps/swap/create-medusa-return-step.js +62 -6
  20. package/.medusa/server/src/workflows/steps/swap/create-swap-step.js +7 -12
  21. package/.medusa/server/src/workflows/steps/swap/index.js +6 -4
  22. package/.medusa/server/src/workflows/steps/swap/rollback-return-step.js +70 -0
  23. package/.medusa/server/src/workflows/steps/swap/sync-medusa-status-step.js +49 -3
  24. package/.medusa/server/src/workflows/steps/swap/update-swap-exchange-details-step.js +27 -0
  25. package/.medusa/server/src/workflows/steps/swap/validate-eligibility-step.js +9 -4
  26. package/.medusa/server/src/workflows/steps/swap/validate-order-step.js +24 -1
  27. package/.medusa/server/src/workflows/swaps/approve-swap-workflow.js +19 -3
  28. package/.medusa/server/src/workflows/swaps/create-swap-workflow.js +3 -1
  29. package/.medusa/server/src/workflows/swaps/execute-swap-workflow.js +26 -4
  30. package/package.json +1 -1
  31. package/.medusa/server/src/api/admin/swaps/[id]/process-payment/route.js +0 -152
  32. package/.medusa/server/src/api/admin/swaps/[id]/status/route.js +0 -45
  33. package/.medusa/server/src/api/admin/swaps/[id]/sync/route.js +0 -148
  34. package/.medusa/server/src/workflows/steps/swap/handle-payment-difference-step.js +0 -102
@@ -775,17 +775,7 @@ const SwapDetailPage = () => {
775
775
  const [error, setError] = react.useState(null);
776
776
  const [updateError, setUpdateError] = react.useState(null);
777
777
  const [updateSuccess, setUpdateSuccess] = react.useState(false);
778
- const availableStatuses = [
779
- "requested",
780
- "approved",
781
- "rejected",
782
- "return_started",
783
- "return_shipped",
784
- "return_received",
785
- "new_items_shipped",
786
- "completed",
787
- "cancelled"
788
- ];
778
+ const availableStatuses = ["requested", "approved", "rejected"];
789
779
  react.useEffect(() => {
790
780
  if (!id) {
791
781
  navigate("/swaps");
@@ -877,12 +867,12 @@ const SwapDetailPage = () => {
877
867
  const payload = await response.json();
878
868
  setSwap(payload.swap);
879
869
  setUpdateSuccess(true);
880
- setTimeout(() => setUpdateSuccess(false), 3e3);
870
+ setTimeout(() => setUpdateSuccess(false), 5e3);
881
871
  const detailResponse = await fetch(`/admin/swaps/${id}`, {
882
872
  credentials: "include"
883
873
  });
884
874
  if (detailResponse.ok) {
885
- const detailPayload = await response.json();
875
+ const detailPayload = await detailResponse.json();
886
876
  setSwap(detailPayload.swap);
887
877
  setOrder(detailPayload.order || null);
888
878
  }
@@ -994,7 +984,7 @@ const SwapDetailPage = () => {
994
984
  }
995
985
  )
996
986
  ] }),
997
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-ui-border-base bg-ui-bg-base p-6", children: [
987
+ swap.status === "requested" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-ui-border-base bg-ui-bg-base p-6", children: [
998
988
  /* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h2", className: "mb-4 text-lg", children: "Update Status" }),
999
989
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-3 md:flex-row md:items-end", children: [
1000
990
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex-1", children: [
@@ -1026,6 +1016,38 @@ const SwapDetailPage = () => {
1026
1016
  updateError && /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "mt-2 text-ui-fg-error", children: updateError }),
1027
1017
  updateSuccess && /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "mt-2 text-ui-fg-success", children: "Status updated successfully" })
1028
1018
  ] }),
1019
+ swap.status === "approved" && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-ui-border-base bg-ui-bg-base p-6", children: [
1020
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h2", className: "mb-4 text-lg", children: "Exchange Information" }),
1021
+ swap.exchange_id ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
1022
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1023
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "text-ui-fg-subtle", children: "Exchange ID" }),
1024
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "font-medium", children: swap.exchange_id })
1025
+ ] }),
1026
+ /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
1027
+ ui.Button,
1028
+ {
1029
+ variant: "secondary",
1030
+ onClick: () => {
1031
+ window.open(`/app/orders/${swap.order_id}/exchanges/${swap.exchange_id}`, "_blank");
1032
+ },
1033
+ children: "View Exchange"
1034
+ }
1035
+ ) })
1036
+ ] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-3", children: [
1037
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "text-ui-fg-subtle", children: "Swap approved. Please create the exchange using Medusa's exchange creation form." }),
1038
+ /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(
1039
+ ui.Button,
1040
+ {
1041
+ variant: "primary",
1042
+ onClick: () => {
1043
+ window.open(`/app/orders/${swap.order_id}/exchanges`, "_blank");
1044
+ },
1045
+ children: "Create Exchange"
1046
+ }
1047
+ ) }),
1048
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "text-ui-fg-subtle", children: "The exchange will be automatically linked to this swap once created." })
1049
+ ] })
1050
+ ] }),
1029
1051
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "grid gap-6 md:grid-cols-2", children: [
1030
1052
  /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "rounded-lg border border-ui-border-base bg-ui-bg-base p-6", children: [
1031
1053
  /* @__PURE__ */ jsxRuntime.jsx(ui.Heading, { level: "h2", className: "mb-4 text-lg", children: "Swap Information" }),
@@ -1057,6 +1079,10 @@ const SwapDetailPage = () => {
1057
1079
  /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1058
1080
  /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "text-ui-fg-subtle", children: "Last Updated" }),
1059
1081
  /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "font-medium", children: new Date(swap.updated_at).toLocaleString() })
1082
+ ] }),
1083
+ swap.exchange_id && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1084
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { size: "small", className: "text-ui-fg-subtle", children: "Exchange ID" }),
1085
+ /* @__PURE__ */ jsxRuntime.jsx(ui.Text, { className: "font-medium", children: swap.exchange_id })
1060
1086
  ] })
1061
1087
  ] })
1062
1088
  ] }),
@@ -1168,12 +1194,6 @@ const routeModule = {
1168
1194
  };
1169
1195
  const menuItemModule = {
1170
1196
  menuItems: [
1171
- {
1172
- label: config$2.label,
1173
- icon: config$2.icon,
1174
- path: "/swaps",
1175
- nested: void 0
1176
- },
1177
1197
  {
1178
1198
  label: config$3.label,
1179
1199
  icon: config$3.icon,
@@ -1181,9 +1201,9 @@ const menuItemModule = {
1181
1201
  nested: void 0
1182
1202
  },
1183
1203
  {
1184
- label: config.label,
1185
- icon: config.icon,
1186
- path: "/swaps/:id",
1204
+ label: config$2.label,
1205
+ icon: config$2.icon,
1206
+ path: "/swaps",
1187
1207
  nested: void 0
1188
1208
  },
1189
1209
  {
@@ -1191,6 +1211,12 @@ const menuItemModule = {
1191
1211
  icon: config$1.icon,
1192
1212
  path: "/returns/:id",
1193
1213
  nested: void 0
1214
+ },
1215
+ {
1216
+ label: config.label,
1217
+ icon: config.icon,
1218
+ path: "/swaps/:id",
1219
+ nested: void 0
1194
1220
  }
1195
1221
  ]
1196
1222
  };
@@ -774,17 +774,7 @@ const SwapDetailPage = () => {
774
774
  const [error, setError] = useState(null);
775
775
  const [updateError, setUpdateError] = useState(null);
776
776
  const [updateSuccess, setUpdateSuccess] = useState(false);
777
- const availableStatuses = [
778
- "requested",
779
- "approved",
780
- "rejected",
781
- "return_started",
782
- "return_shipped",
783
- "return_received",
784
- "new_items_shipped",
785
- "completed",
786
- "cancelled"
787
- ];
777
+ const availableStatuses = ["requested", "approved", "rejected"];
788
778
  useEffect(() => {
789
779
  if (!id) {
790
780
  navigate("/swaps");
@@ -876,12 +866,12 @@ const SwapDetailPage = () => {
876
866
  const payload = await response.json();
877
867
  setSwap(payload.swap);
878
868
  setUpdateSuccess(true);
879
- setTimeout(() => setUpdateSuccess(false), 3e3);
869
+ setTimeout(() => setUpdateSuccess(false), 5e3);
880
870
  const detailResponse = await fetch(`/admin/swaps/${id}`, {
881
871
  credentials: "include"
882
872
  });
883
873
  if (detailResponse.ok) {
884
- const detailPayload = await response.json();
874
+ const detailPayload = await detailResponse.json();
885
875
  setSwap(detailPayload.swap);
886
876
  setOrder(detailPayload.order || null);
887
877
  }
@@ -993,7 +983,7 @@ const SwapDetailPage = () => {
993
983
  }
994
984
  )
995
985
  ] }),
996
- /* @__PURE__ */ jsxs("div", { className: "rounded-lg border border-ui-border-base bg-ui-bg-base p-6", children: [
986
+ swap.status === "requested" && /* @__PURE__ */ jsxs("div", { className: "rounded-lg border border-ui-border-base bg-ui-bg-base p-6", children: [
997
987
  /* @__PURE__ */ jsx(Heading, { level: "h2", className: "mb-4 text-lg", children: "Update Status" }),
998
988
  /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-3 md:flex-row md:items-end", children: [
999
989
  /* @__PURE__ */ jsxs("div", { className: "flex-1", children: [
@@ -1025,6 +1015,38 @@ const SwapDetailPage = () => {
1025
1015
  updateError && /* @__PURE__ */ jsx(Text, { size: "small", className: "mt-2 text-ui-fg-error", children: updateError }),
1026
1016
  updateSuccess && /* @__PURE__ */ jsx(Text, { size: "small", className: "mt-2 text-ui-fg-success", children: "Status updated successfully" })
1027
1017
  ] }),
1018
+ swap.status === "approved" && /* @__PURE__ */ jsxs("div", { className: "rounded-lg border border-ui-border-base bg-ui-bg-base p-6", children: [
1019
+ /* @__PURE__ */ jsx(Heading, { level: "h2", className: "mb-4 text-lg", children: "Exchange Information" }),
1020
+ swap.exchange_id ? /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
1021
+ /* @__PURE__ */ jsxs("div", { children: [
1022
+ /* @__PURE__ */ jsx(Text, { size: "small", className: "text-ui-fg-subtle", children: "Exchange ID" }),
1023
+ /* @__PURE__ */ jsx(Text, { className: "font-medium", children: swap.exchange_id })
1024
+ ] }),
1025
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
1026
+ Button,
1027
+ {
1028
+ variant: "secondary",
1029
+ onClick: () => {
1030
+ window.open(`/app/orders/${swap.order_id}/exchanges/${swap.exchange_id}`, "_blank");
1031
+ },
1032
+ children: "View Exchange"
1033
+ }
1034
+ ) })
1035
+ ] }) : /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
1036
+ /* @__PURE__ */ jsx(Text, { size: "small", className: "text-ui-fg-subtle", children: "Swap approved. Please create the exchange using Medusa's exchange creation form." }),
1037
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(
1038
+ Button,
1039
+ {
1040
+ variant: "primary",
1041
+ onClick: () => {
1042
+ window.open(`/app/orders/${swap.order_id}/exchanges`, "_blank");
1043
+ },
1044
+ children: "Create Exchange"
1045
+ }
1046
+ ) }),
1047
+ /* @__PURE__ */ jsx(Text, { size: "small", className: "text-ui-fg-subtle", children: "The exchange will be automatically linked to this swap once created." })
1048
+ ] })
1049
+ ] }),
1028
1050
  /* @__PURE__ */ jsxs("div", { className: "grid gap-6 md:grid-cols-2", children: [
1029
1051
  /* @__PURE__ */ jsxs("div", { className: "rounded-lg border border-ui-border-base bg-ui-bg-base p-6", children: [
1030
1052
  /* @__PURE__ */ jsx(Heading, { level: "h2", className: "mb-4 text-lg", children: "Swap Information" }),
@@ -1056,6 +1078,10 @@ const SwapDetailPage = () => {
1056
1078
  /* @__PURE__ */ jsxs("div", { children: [
1057
1079
  /* @__PURE__ */ jsx(Text, { size: "small", className: "text-ui-fg-subtle", children: "Last Updated" }),
1058
1080
  /* @__PURE__ */ jsx(Text, { className: "font-medium", children: new Date(swap.updated_at).toLocaleString() })
1081
+ ] }),
1082
+ swap.exchange_id && /* @__PURE__ */ jsxs("div", { children: [
1083
+ /* @__PURE__ */ jsx(Text, { size: "small", className: "text-ui-fg-subtle", children: "Exchange ID" }),
1084
+ /* @__PURE__ */ jsx(Text, { className: "font-medium", children: swap.exchange_id })
1059
1085
  ] })
1060
1086
  ] })
1061
1087
  ] }),
@@ -1167,12 +1193,6 @@ const routeModule = {
1167
1193
  };
1168
1194
  const menuItemModule = {
1169
1195
  menuItems: [
1170
- {
1171
- label: config$2.label,
1172
- icon: config$2.icon,
1173
- path: "/swaps",
1174
- nested: void 0
1175
- },
1176
1196
  {
1177
1197
  label: config$3.label,
1178
1198
  icon: config$3.icon,
@@ -1180,9 +1200,9 @@ const menuItemModule = {
1180
1200
  nested: void 0
1181
1201
  },
1182
1202
  {
1183
- label: config.label,
1184
- icon: config.icon,
1185
- path: "/swaps/:id",
1203
+ label: config$2.label,
1204
+ icon: config$2.icon,
1205
+ path: "/swaps",
1186
1206
  nested: void 0
1187
1207
  },
1188
1208
  {
@@ -1190,6 +1210,12 @@ const menuItemModule = {
1190
1210
  icon: config$1.icon,
1191
1211
  path: "/returns/:id",
1192
1212
  nested: void 0
1213
+ },
1214
+ {
1215
+ label: config.label,
1216
+ icon: config.icon,
1217
+ path: "/swaps/:id",
1218
+ nested: void 0
1193
1219
  }
1194
1220
  ]
1195
1221
  };
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.POST = void 0;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
5
  const approve_swap_workflow_1 = require("../../../../../workflows/swaps/approve-swap-workflow");
6
- const execute_swap_workflow_1 = require("../../../../../workflows/swaps/execute-swap-workflow");
6
+ const validators_1 = require("../../validators");
7
+ const zod_1 = require("zod");
7
8
  const POST = async (req, res) => {
8
9
  const { id } = req.params;
9
10
  if (!id) {
@@ -14,43 +15,81 @@ const POST = async (req, res) => {
14
15
  const authContext = req.auth_context;
15
16
  const adminId = authContext?.actor_id || authContext?.user_id || "admin";
16
17
  try {
17
- // Step 1: Approve the swap
18
+ // Parse and validate request body for exchange details
19
+ const exchangeDetails = validators_1.ApproveSwapSchema.parse(req.body || {});
20
+ // Approve the swap
21
+ // This updates the swap status from "requested" to "approved" and stores exchange details
22
+ // Admin should then create the exchange manually using Medusa's exchange creation form
18
23
  const { result: approvalResult } = await (0, approve_swap_workflow_1.approveSwapWorkflow)(req.scope).run({
19
24
  input: {
20
25
  swap_id: id,
21
26
  admin_id: adminId,
27
+ return_location_id: exchangeDetails.return_location_id,
28
+ return_shipping_method_id: exchangeDetails.return_shipping_method_id,
29
+ outbound_shipping_method_id: exchangeDetails.outbound_shipping_method_id,
30
+ send_notification: exchangeDetails.send_notification,
22
31
  },
23
32
  });
24
- // Step 2: Execute swap (create Medusa return and exchange)
25
- try {
26
- const { result: executionResult } = await (0, execute_swap_workflow_1.executeSwapWorkflow)(req.scope).run({
27
- input: {
28
- swap_id: id,
29
- },
30
- });
31
- res.json({
32
- ...approvalResult,
33
- execution: executionResult,
33
+ // Return success response
34
+ // Exchange will be created manually by admin and linked automatically via subscriber
35
+ res.json({
36
+ swap: approvalResult.swap,
37
+ message: "Swap approved successfully. Please create the exchange using Medusa's exchange creation form.",
38
+ note: "The exchange will be automatically linked to this swap once created.",
39
+ });
40
+ }
41
+ catch (error) {
42
+ // Handle Zod validation errors
43
+ if (error instanceof zod_1.z.ZodError) {
44
+ res.status(400).json({
45
+ message: "Invalid request data",
46
+ errors: error.errors,
34
47
  });
48
+ return;
35
49
  }
36
- catch (executionError) {
37
- // If execution fails, still return approval result but log the error
38
- // Admin can retry execution later
39
- if (executionError instanceof utils_1.MedusaError) {
40
- res.status(500).json({
41
- ...approvalResult,
42
- execution_error: {
43
- message: executionError.message,
44
- type: executionError.type,
45
- },
46
- warning: "Swap was approved but Medusa exchange creation failed. Please retry execution.",
47
- });
48
- return;
49
- }
50
- throw executionError;
50
+ // Extract error message - handle various error formats
51
+ let errorMessage = "Unknown error";
52
+ let errorStack;
53
+ let errorType;
54
+ if (error instanceof Error) {
55
+ errorMessage = error.message;
56
+ errorStack = error.stack;
57
+ errorType = error.type;
51
58
  }
52
- }
53
- catch (error) {
59
+ else if (error && typeof error === "object") {
60
+ const errorObj = error;
61
+ errorMessage = String(errorObj.message ||
62
+ errorObj.error ||
63
+ errorObj.reason ||
64
+ JSON.stringify(errorObj));
65
+ errorStack = errorObj.stack;
66
+ errorType = errorObj.type;
67
+ }
68
+ else {
69
+ errorMessage = String(error);
70
+ }
71
+ // Log full error details
72
+ let errorStringified = "Unable to stringify";
73
+ try {
74
+ errorStringified = JSON.stringify(error, (key, value) => {
75
+ if (key === "parent" || key === "children" || key === "container") {
76
+ return "[Circular]";
77
+ }
78
+ return value;
79
+ }, 2);
80
+ }
81
+ catch {
82
+ errorStringified = `Stringify failed`;
83
+ }
84
+ console.error("[Approve Swap] Error:", {
85
+ swap_id: id,
86
+ error_message: errorMessage,
87
+ error_type: errorType,
88
+ error_stack: errorStack,
89
+ error_stringified: errorStringified,
90
+ error_constructor: error?.constructor?.name,
91
+ error_keys: error && typeof error === "object" ? Object.keys(error) : [],
92
+ });
54
93
  if (error instanceof utils_1.MedusaError) {
55
94
  const statusCode = error.type === utils_1.MedusaError.Types.NOT_FOUND
56
95
  ? 404
@@ -63,7 +102,6 @@ const POST = async (req, res) => {
63
102
  });
64
103
  return;
65
104
  }
66
- const errorMessage = error instanceof Error ? error.message : "Unknown error";
67
105
  res.status(500).json({
68
106
  message: "Failed to approve swap",
69
107
  error: errorMessage,
@@ -71,4 +109,4 @@ const POST = async (req, res) => {
71
109
  }
72
110
  };
73
111
  exports.POST = POST;
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vYXBwcm92ZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBdUQ7QUFDdkQsZ0dBQTBGO0FBQzFGLGdHQUEwRjtBQUVuRixNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ0osRUFBRTtJQUNqQixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQTtJQUV6QixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDUixHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxDQUFDLENBQUE7UUFDeEQsT0FBTTtJQUNSLENBQUM7SUFFRCxtQ0FBbUM7SUFDbkMsTUFBTSxXQUFXLEdBQUksR0FFbkIsQ0FBQyxZQUFZLENBQUE7SUFFZixNQUFNLE9BQU8sR0FBRyxXQUFXLEVBQUUsUUFBUSxJQUFJLFdBQVcsRUFBRSxPQUFPLElBQUksT0FBTyxDQUFBO0lBRXhFLElBQUksQ0FBQztRQUNILDJCQUEyQjtRQUMzQixNQUFNLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sSUFBQSwyQ0FBbUIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQzFFLEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsRUFBRTtnQkFDWCxRQUFRLEVBQUUsT0FBTzthQUNsQjtTQUNGLENBQUMsQ0FBQTtRQUVGLDJEQUEyRDtRQUMzRCxJQUFJLENBQUM7WUFDSCxNQUFNLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxHQUFHLE1BQU0sSUFBQSwyQ0FBbUIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO2dCQUMzRSxLQUFLLEVBQUU7b0JBQ0wsT0FBTyxFQUFFLEVBQUU7aUJBQ1o7YUFDRixDQUFDLENBQUE7WUFFRixHQUFHLENBQUMsSUFBSSxDQUFDO2dCQUNQLEdBQUcsY0FBYztnQkFDakIsU0FBUyxFQUFFLGVBQWU7YUFDM0IsQ0FBQyxDQUFBO1FBQ0osQ0FBQztRQUFDLE9BQU8sY0FBYyxFQUFFLENBQUM7WUFDeEIscUVBQXFFO1lBQ3JFLGtDQUFrQztZQUNsQyxJQUFJLGNBQWMsWUFBWSxtQkFBVyxFQUFFLENBQUM7Z0JBQzFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO29CQUNuQixHQUFHLGNBQWM7b0JBQ2pCLGVBQWUsRUFBRTt3QkFDZixPQUFPLEVBQUUsY0FBYyxDQUFDLE9BQU87d0JBQy9CLElBQUksRUFBRSxjQUFjLENBQUMsSUFBSTtxQkFDMUI7b0JBQ0QsT0FBTyxFQUFFLGdGQUFnRjtpQkFDMUYsQ0FBQyxDQUFBO2dCQUNGLE9BQU07WUFDUixDQUFDO1lBRUQsTUFBTSxjQUFjLENBQUE7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLFlBQVksbUJBQVcsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sVUFBVSxHQUNkLEtBQUssQ0FBQyxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUztnQkFDeEMsQ0FBQyxDQUFDLEdBQUc7Z0JBQ0wsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWTtvQkFDL0MsQ0FBQyxDQUFDLEdBQUc7b0JBQ0wsQ0FBQyxDQUFDLEdBQUcsQ0FBQTtZQUVULEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUMxQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQ3RCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTthQUNqQixDQUFDLENBQUE7WUFDRixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUM3RSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsd0JBQXdCO1lBQ2pDLEtBQUssRUFBRSxZQUFZO1NBQ3BCLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDLENBQUE7QUE5RVksUUFBQSxJQUFJLFFBOEVoQiJ9
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL1tpZF0vYXBwcm92ZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBdUQ7QUFDdkQsZ0dBQTBGO0FBQzFGLGlEQUFvRDtBQUNwRCw2QkFBdUI7QUFFaEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUN2QixHQUFrQixFQUNsQixHQUFtQixFQUNKLEVBQUU7SUFDakIsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFFekIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ1IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsQ0FBQyxDQUFBO1FBQ3hELE9BQU07SUFDUixDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLE1BQU0sV0FBVyxHQUFJLEdBRW5CLENBQUMsWUFBWSxDQUFBO0lBRWYsTUFBTSxPQUFPLEdBQUcsV0FBVyxFQUFFLFFBQVEsSUFBSSxXQUFXLEVBQUUsT0FBTyxJQUFJLE9BQU8sQ0FBQTtJQUV4RSxJQUFJLENBQUM7UUFDSCx1REFBdUQ7UUFDdkQsTUFBTSxlQUFlLEdBQUcsOEJBQWlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUE7UUFFL0QsbUJBQW1CO1FBQ25CLDBGQUEwRjtRQUMxRix1RkFBdUY7UUFDdkYsTUFBTSxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLElBQUEsMkNBQW1CLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMxRSxLQUFLLEVBQUU7Z0JBQ0wsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLGtCQUFrQixFQUFFLGVB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
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const swap_1 = require("../../../../modules/swap");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ /**
7
+ * Health check endpoint for swap/exchange system
8
+ * Returns status of subscribers, database, and Medusa integration
9
+ */
10
+ const GET = async (req, res) => {
11
+ const health = {
12
+ status: "healthy",
13
+ timestamp: new Date().toISOString(),
14
+ checks: {},
15
+ };
16
+ try {
17
+ // Check 1: Database connectivity
18
+ try {
19
+ const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
20
+ await swapService.listSwaps({}, { take: 1 });
21
+ health.checks.database = {
22
+ status: "ok",
23
+ message: "Database connection successful",
24
+ };
25
+ }
26
+ catch (error) {
27
+ health.status = "unhealthy";
28
+ health.checks.database = {
29
+ status: "error",
30
+ message: "Database connection failed",
31
+ details: error instanceof Error ? error.message : String(error),
32
+ };
33
+ }
34
+ // Check 2: Medusa RemoteQuery connectivity
35
+ try {
36
+ const remoteQuery = req.scope.resolve(utils_1.ContainerRegistrationKeys.REMOTE_QUERY);
37
+ // Test query - try to query a simple entity
38
+ const queryObject = (0, utils_1.remoteQueryObjectFromString)({
39
+ entryPoint: "product",
40
+ fields: ["id"],
41
+ });
42
+ await remoteQuery(queryObject);
43
+ health.checks.medusa_integration = {
44
+ status: "ok",
45
+ message: "Medusa RemoteQuery connection successful",
46
+ };
47
+ }
48
+ catch (error) {
49
+ health.status = health.status === "unhealthy" ? "unhealthy" : "degraded";
50
+ health.checks.medusa_integration = {
51
+ status: "warning",
52
+ message: "Medusa RemoteQuery connection failed",
53
+ details: error instanceof Error ? error.message : String(error),
54
+ };
55
+ }
56
+ // Check 3: Check for swaps with sync failures
57
+ try {
58
+ const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
59
+ const swaps = await swapService.listSwaps({}, { take: 100 });
60
+ const swapsArray = Array.isArray(swaps) ? swaps : swaps ? [swaps] : [];
61
+ const swapsWithSyncFailures = swapsArray.filter((swap) => {
62
+ const swapData = swap;
63
+ const metadata = swapData.metadata || {};
64
+ const syncFailures = metadata.sync_failures;
65
+ return syncFailures && syncFailures.length > 0;
66
+ });
67
+ const swapsWithExecutionFailures = swapsArray.filter((swap) => {
68
+ const swapData = swap;
69
+ const metadata = swapData.metadata || {};
70
+ const executionFailures = metadata.execution_failures;
71
+ return executionFailures && executionFailures.length > 0;
72
+ });
73
+ if (swapsWithSyncFailures.length > 0 || swapsWithExecutionFailures.length > 0) {
74
+ health.status = health.status === "unhealthy" ? "unhealthy" : "degraded";
75
+ health.checks.swap_failures = {
76
+ status: "warning",
77
+ message: `Found ${swapsWithSyncFailures.length} swaps with sync failures and ${swapsWithExecutionFailures.length} with execution failures`,
78
+ details: {
79
+ sync_failures_count: swapsWithSyncFailures.length,
80
+ execution_failures_count: swapsWithExecutionFailures.length,
81
+ },
82
+ };
83
+ }
84
+ else {
85
+ health.checks.swap_failures = {
86
+ status: "ok",
87
+ message: "No swaps with failures found",
88
+ };
89
+ }
90
+ }
91
+ catch (error) {
92
+ health.status = health.status === "unhealthy" ? "unhealthy" : "degraded";
93
+ health.checks.swap_failures = {
94
+ status: "warning",
95
+ message: "Failed to check swap failures",
96
+ details: error instanceof Error ? error.message : String(error),
97
+ };
98
+ }
99
+ // Check 4: Check for orphaned swaps (have return_id but no exchange_id)
100
+ try {
101
+ const swapService = req.scope.resolve(swap_1.SWAP_MODULE);
102
+ const swaps = await swapService.listSwaps({}, { take: 100 });
103
+ const swapsArray = Array.isArray(swaps) ? swaps : swaps ? [swaps] : [];
104
+ const orphanedSwaps = swapsArray.filter((swap) => {
105
+ const swapData = swap;
106
+ return (swapData.return_id &&
107
+ !swapData.exchange_id &&
108
+ swapData.status === "approved");
109
+ });
110
+ if (orphanedSwaps.length > 0) {
111
+ health.status = health.status === "unhealthy" ? "unhealthy" : "degraded";
112
+ health.checks.orphaned_swaps = {
113
+ status: "warning",
114
+ message: `Found ${orphanedSwaps.length} orphaned swaps (have return_id but no exchange_id)`,
115
+ details: {
116
+ count: orphanedSwaps.length,
117
+ swap_ids: orphanedSwaps.map((s) => s.id).filter(Boolean),
118
+ },
119
+ };
120
+ }
121
+ else {
122
+ health.checks.orphaned_swaps = {
123
+ status: "ok",
124
+ message: "No orphaned swaps found",
125
+ };
126
+ }
127
+ }
128
+ catch (error) {
129
+ health.status = health.status === "unhealthy" ? "unhealthy" : "degraded";
130
+ health.checks.orphaned_swaps = {
131
+ status: "warning",
132
+ message: "Failed to check orphaned swaps",
133
+ details: error instanceof Error ? error.message : String(error),
134
+ };
135
+ }
136
+ const statusCode = health.status === "unhealthy" ? 503 : health.status === "degraded" ? 200 : 200;
137
+ res.status(statusCode).json(health);
138
+ }
139
+ catch (error) {
140
+ const errorMessage = error instanceof Error ? error.message : "Unknown error";
141
+ res.status(503).json({
142
+ status: "unhealthy",
143
+ timestamp: new Date().toISOString(),
144
+ error: errorMessage,
145
+ checks: health.checks,
146
+ });
147
+ }
148
+ };
149
+ exports.GET = GET;
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL2hlYWx0aC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxtREFBc0Q7QUFFdEQscURBQWtHO0FBR2xHOzs7R0FHRztBQUNJLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFDdEIsR0FBa0IsRUFDbEIsR0FBbUIsRUFDSixFQUFFO0lBQ2pCLE1BQU0sTUFBTSxHQVFSO1FBQ0YsTUFBTSxFQUFFLFNBQVM7UUFDakIsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO1FBQ25DLE1BQU0sRUFBRSxFQUFFO0tBQ1gsQ0FBQTtJQUVELElBQUksQ0FBQztRQUNILGlDQUFpQztRQUNqQyxJQUFJLENBQUM7WUFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7WUFDL0QsTUFBTSxXQUFXLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQzVDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHO2dCQUN2QixNQUFNLEVBQUUsSUFBSTtnQkFDWixPQUFPLEVBQUUsZ0NBQWdDO2FBQzFDLENBQUE7UUFDSCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFBO1lBQzNCLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHO2dCQUN2QixNQUFNLEVBQUUsT0FBTztnQkFDZixPQUFPLEVBQUUsNEJBQTRCO2dCQUNyQyxPQUFPLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQzthQUNoRSxDQUFBO1FBQ0gs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
@@ -18,23 +18,17 @@ const GET = async (req, res) => {
18
18
  if (orderId) {
19
19
  filters.order_id = orderId;
20
20
  }
21
- // Note: customer_id filtering would require joining with orders table
22
- // For now, we'll filter client-side if needed
21
+ if (customerId) {
22
+ filters.customer_id = customerId;
23
+ }
23
24
  const swaps = await swapService.listSwaps(filters, {
24
25
  take: limit,
25
26
  skip: offset,
26
27
  });
27
28
  const swapArray = Array.isArray(swaps) ? swaps : swaps ? [swaps] : [];
28
- // Filter by customer_id if provided (would need order lookup in production)
29
- let filteredSwaps = swapArray;
30
- if (customerId) {
31
- // In production, you'd want to join with orders table
32
- // For now, we'll return all swaps
33
- filteredSwaps = swapArray;
34
- }
35
29
  res.json({
36
- swaps: filteredSwaps,
37
- count: filteredSwaps.length,
30
+ swaps: swapArray,
31
+ count: swapArray.length,
38
32
  limit,
39
33
  offset,
40
34
  });
@@ -48,4 +42,4 @@ const GET = async (req, res) => {
48
42
  }
49
43
  };
50
44
  exports.GET = GET;
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLGdEQUFtRDtBQUc1QyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3RCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ0osRUFBRTtJQUNqQixJQUFJLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7UUFFL0QsdUJBQXVCO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBNEIsQ0FBQTtRQUNyRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQThCLENBQUE7UUFDeEQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFpQyxDQUFBO1FBQzlELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUM1RSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRTlFLE1BQU0sT0FBTyxHQUE0QixFQUFFLENBQUE7UUFDM0MsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3pCLENBQUM7UUFDRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUE7UUFDNUIsQ0FBQztRQUNELHNFQUFzRTtRQUN0RSw4Q0FBOEM7UUFFOUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUNqRCxJQUFJLEVBQUUsS0FBSztZQUNYLElBQUksRUFBRSxNQUFNO1NBQ2IsQ0FBQyxDQUFBO1FBRUYsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUVyRSw0RUFBNEU7UUFDNUUsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFBO1FBQzdCLElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixzREFBc0Q7WUFDdEQsa0NBQWtDO1lBQ2xDLGFBQWEsR0FBRyxTQUFTLENBQUE7UUFDM0IsQ0FBQztRQUVELEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDUCxLQUFLLEVBQUUsYUFBYTtZQUNwQixLQUFLLEVBQUUsYUFBYSxDQUFDLE1BQU07WUFDM0IsS0FBSztZQUNMLE1BQU07U0FDUCxDQUFDLENBQUE7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sWUFBWSxHQUFHLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQTtRQUM3RSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNuQixPQUFPLEVBQUUsMEJBQTBCO1lBQ25DLEtBQUssRUFBRSxZQUFZO1NBQ3BCLENBQUMsQ0FBQTtJQUNKLENBQUM7QUFDSCxDQUFDLENBQUE7QUFwRFksUUFBQSxHQUFHLE9Bb0RmIn0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3N3YXBzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLGdEQUFtRDtBQUc1QyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3RCLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ0osRUFBRTtJQUNqQixJQUFJLENBQUM7UUFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBYyxrQkFBVyxDQUFDLENBQUE7UUFFL0QsdUJBQXVCO1FBQ3ZCLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBNEIsQ0FBQTtRQUNyRCxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQThCLENBQUE7UUFDeEQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFpQyxDQUFBO1FBQzlELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUM1RSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRTlFLE1BQU0sT0FBTyxHQUE0QixFQUFFLENBQUE7UUFDM0MsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3pCLENBQUM7UUFDRCxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osT0FBTyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUE7UUFDNUIsQ0FBQztRQUNELElBQUksVUFBVSxFQUFFLENBQUM7WUFDZixPQUFPLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQTtRQUNsQyxDQUFDO1FBRUQsTUFBTSxLQUFLLEdBQUcsTUFBTSxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtZQUNqRCxJQUFJLEVBQUUsS0FBSztZQUNYLElBQUksRUFBRSxNQUFNO1NBQ2IsQ0FBQyxDQUFBO1FBRUYsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUVyRSxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ1AsS0FBSyxFQUFFLFNBQVM7WUFDaEIsS0FBSyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1lBQ3ZCLEtBQUs7WUFDTCxNQUFNO1NBQ1AsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixNQUFNLFlBQVksR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUE7UUFDN0UsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDbkIsT0FBTyxFQUFFLDBCQUEwQjtZQUNuQyxLQUFLLEVBQUUsWUFBWTtTQUNwQixDQUFDLENBQUE7SUFDSixDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBN0NZLFFBQUEsR0FBRyxPQTZDZiJ9
@@ -1,22 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RejectSwapSchema = exports.UpdateSwapStatusSchema = void 0;
3
+ exports.ApproveSwapSchema = exports.RejectSwapSchema = exports.UpdateSwapStatusSchema = void 0;
4
4
  const zod_1 = require("zod");
5
5
  exports.UpdateSwapStatusSchema = zod_1.z.object({
6
- status: zod_1.z.enum([
7
- "requested",
8
- "approved",
9
- "rejected",
10
- "return_started",
11
- "return_shipped",
12
- "return_received",
13
- "new_items_shipped",
14
- "completed",
15
- "cancelled",
16
- ]),
6
+ status: zod_1.z.enum(["requested", "approved", "rejected"]),
17
7
  metadata: zod_1.z.record(zod_1.z.unknown()).optional(),
18
8
  });
19
9
  exports.RejectSwapSchema = zod_1.z.object({
20
10
  reason: zod_1.z.string().optional(),
21
11
  });
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vc3dhcHMvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBdUI7QUFFVixRQUFBLHNCQUFzQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0MsTUFBTSxFQUFFLE9BQUMsQ0FBQyxJQUFJLENBQUM7UUFDYixXQUFXO1FBQ1gsVUFBVTtRQUNWLFVBQVU7UUFDVixnQkFBZ0I7UUFDaEIsZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQixtQkFBbUI7UUFDbkIsV0FBVztRQUNYLFdBQVc7S0FDWixDQUFDO0lBQ0YsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO0NBQzNDLENBQUMsQ0FBQTtBQUVXLFFBQUEsZ0JBQWdCLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN2QyxNQUFNLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtDQUM5QixDQUFDLENBQUEifQ==
12
+ exports.ApproveSwapSchema = zod_1.z.object({
13
+ return_location_id: zod_1.z.string().optional(),
14
+ return_shipping_method_id: zod_1.z.string().optional(),
15
+ outbound_shipping_method_id: zod_1.z.string().optional(),
16
+ send_notification: zod_1.z.boolean().optional().default(false),
17
+ });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vc3dhcHMvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBdUI7QUFFVixRQUFBLHNCQUFzQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDN0MsTUFBTSxFQUFFLE9BQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3JELFFBQVEsRUFBRSxPQUFDLENBQUMsTUFBTSxDQUFDLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtDQUMzQyxDQUFDLENBQUE7QUFFVyxRQUFBLGdCQUFnQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDdkMsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDOUIsQ0FBQyxDQUFBO0FBRVcsUUFBQSxpQkFBaUIsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3hDLGtCQUFrQixFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDekMseUJBQXlCLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNoRCwyQkFBMkIsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2xELGlCQUFpQixFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0NBQ3pELENBQUMsQ0FBQSJ9