order-management 0.0.103 → 0.0.104

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.
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.injectReturnShippingIfNeeded = injectReturnShippingIfNeeded;
4
+ const ensure_return_to_store_option_1 = require("../../helpers/ensure-return-to-store-option");
5
+ /**
6
+ * Runs as a method-less (global) middleware on `/store/returns` so it executes
7
+ * before Medusa core's POST body validator, which requires `return_shipping`.
8
+ * Store-dropoff clients often send only `location_id`.
9
+ */
10
+ async function injectReturnShippingIfNeeded(req, _res, next) {
11
+ try {
12
+ const body = req.body;
13
+ if (!body || typeof body !== "object" || Array.isArray(body)) {
14
+ next();
15
+ return;
16
+ }
17
+ const record = body;
18
+ const existing = record.return_shipping &&
19
+ typeof record.return_shipping === "object" &&
20
+ !Array.isArray(record.return_shipping)
21
+ ? record.return_shipping
22
+ : null;
23
+ const existingOptionId = typeof existing?.option_id === "string" ? existing.option_id.trim() : "";
24
+ if (existingOptionId) {
25
+ next();
26
+ return;
27
+ }
28
+ const locationId = (typeof record.location_id === "string" && record.location_id.trim()) ||
29
+ (typeof existing?.location_id === "string" && existing.location_id.trim()) ||
30
+ "";
31
+ if (!locationId) {
32
+ next();
33
+ return;
34
+ }
35
+ const optionId = await (0, ensure_return_to_store_option_1.ensureReturnToStoreOption)(req.scope, locationId);
36
+ if (!optionId) {
37
+ next();
38
+ return;
39
+ }
40
+ record.return_shipping = {
41
+ ...(existing ?? {}),
42
+ option_id: optionId,
43
+ location_id: locationId,
44
+ };
45
+ if (!record.location_id) {
46
+ record.location_id = locationId;
47
+ }
48
+ next();
49
+ }
50
+ catch (error) {
51
+ next(error);
52
+ }
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LXJldHVybi1zaGlwcGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvbWlkZGxld2FyZXMvaW5qZWN0LXJldHVybi1zaGlwcGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWtCQSxvRUF3REM7QUFyRUQsK0ZBQXVGO0FBUXZGOzs7O0dBSUc7QUFDSSxLQUFLLFVBQVUsNEJBQTRCLENBQ2hELEdBQWtCLEVBQ2xCLElBQW9CLEVBQ3BCLElBQXdCO0lBRXhCLElBQUksQ0FBQztRQUNILE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUE7UUFDckIsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQzdELElBQUksRUFBRSxDQUFBO1lBQ04sT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUErQixDQUFBO1FBQzlDLE1BQU0sUUFBUSxHQUNaLE1BQU0sQ0FBQyxlQUFlO1lBQ3RCLE9BQU8sTUFBTSxDQUFDLGVBQWUsS0FBSyxRQUFRO1lBQzFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDO1lBQ3BDLENBQUMsQ0FBRSxNQUFNLENBQUMsZUFBc0M7WUFDaEQsQ0FBQyxDQUFDLElBQUksQ0FBQTtRQUVWLE1BQU0sZ0JBQWdCLEdBQ3BCLE9BQU8sUUFBUSxFQUFFLFNBQVMsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtRQUMxRSxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDckIsSUFBSSxFQUFFLENBQUE7WUFDTixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUNkLENBQUMsT0FBTyxNQUFNLENBQUMsV0FBVyxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3JFLENBQUMsT0FBTyxRQUFRLEVBQUUsV0FBVyxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFFLEVBQUUsQ0FBQTtRQUVKLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixJQUFJLEVBQUUsQ0FBQTtZQUNOLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLHlEQUF5QixFQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDdkUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2QsSUFBSSxFQUFFLENBQUE7WUFDTixPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0sQ0FBQyxlQUFlLEdBQUc7WUFDdkIsR0FBRyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDbkIsU0FBUyxFQUFFLFFBQVE7WUFDbkIsV0FBVyxFQUFFLFVBQVU7U0FDeEIsQ0FBQTtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDeEIsTUFBTSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUE7UUFDakMsQ0FBQztRQUVELElBQUksRUFBRSxDQUFBO0lBQ1IsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDYixDQUFDO0FBQ0gsQ0FBQyJ9
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const http_1 = require("@medusajs/framework/http");
4
4
  const block_refund_until_return_received_1 = require("./middlewares/block-refund-until-return-received");
5
+ const inject_return_shipping_1 = require("./middlewares/inject-return-shipping");
5
6
  const validators_1 = require("./store/returns/validators");
6
7
  const cancel_order_1 = require("./store/validators/cancel-order");
7
8
  exports.default = (0, http_1.defineMiddlewares)({
@@ -17,6 +18,11 @@ exports.default = (0, http_1.defineMiddlewares)({
17
18
  methods: ["POST"],
18
19
  middlewares: [block_refund_until_return_received_1.blockRefundUntilReturnReceived],
19
20
  },
21
+ // Method-less → app.use, runs before core POST validator that requires return_shipping
22
+ {
23
+ matcher: "/store/returns",
24
+ middlewares: [inject_return_shipping_1.injectReturnShippingIfNeeded],
25
+ },
20
26
  {
21
27
  matcher: "/store/returns",
22
28
  methods: ["POST"],
@@ -34,4 +40,4 @@ exports.default = (0, http_1.defineMiddlewares)({
34
40
  },
35
41
  ],
36
42
  });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBR2lDO0FBQ2pDLHlHQUFpRztBQUNqRywyREFBb0U7QUFDcEUsa0VBQTRFO0FBRTVFLGtCQUFlLElBQUEsd0JBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ047WUFDRSxPQUFPLEVBQUUsNEJBQTRCO1lBQ3JDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNqQixXQUFXLEVBQUUsQ0FBQyxtRUFBOEIsQ0FBQztTQUM5QztRQUNEO1lBQ0Usa0RBQWtEO1lBQ2xELE9BQU8sRUFBRSwwQkFBMEI7WUFDbkMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ2pCLFdBQVcsRUFBRSxDQUFDLG1FQUE4QixDQUFDO1NBQzlDO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsZ0JBQWdCO1lBQ3pCLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNqQixXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLG9DQUF1QixDQUFDLENBQUM7U0FDakU7UUFDRDtZQUNFLE9BQU8sRUFBRSxnQ0FBZ0M7WUFDekMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ2pCLFdBQVcsRUFBRSxDQUFDLElBQUEsK0JBQXdCLEVBQUMseUNBQTBCLENBQUMsQ0FBQztTQUNwRTtRQUNEO1lBQ0UsT0FBTyxFQUFFLGdDQUFnQztZQUN6QyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDakIsV0FBVyxFQUFFLENBQUMsSUFBQSwrQkFBd0IsRUFBQyx5Q0FBMEIsQ0FBQyxDQUFDO1NBQ3BFO0tBQ0Y7Q0FDRixDQUFDLENBQUEifQ==
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBR2lDO0FBQ2pDLHlHQUFpRztBQUNqRyxpRkFBbUY7QUFDbkYsMkRBQW9FO0FBQ3BFLGtFQUE0RTtBQUU1RSxrQkFBZSxJQUFBLHdCQUFpQixFQUFDO0lBQy9CLE1BQU0sRUFBRTtRQUNOO1lBQ0UsT0FBTyxFQUFFLDRCQUE0QjtZQUNyQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDakIsV0FBVyxFQUFFLENBQUMsbUVBQThCLENBQUM7U0FDOUM7UUFDRDtZQUNFLGtEQUFrRDtZQUNsRCxPQUFPLEVBQUUsMEJBQTBCO1lBQ25DLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNqQixXQUFXLEVBQUUsQ0FBQyxtRUFBOEIsQ0FBQztTQUM5QztRQUNELHVGQUF1RjtRQUN2RjtZQUNFLE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsV0FBVyxFQUFFLENBQUMscURBQTRCLENBQUM7U0FDNUM7UUFDRDtZQUNFLE9BQU8sRUFBRSxnQkFBZ0I7WUFDekIsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO1lBQ2pCLFdBQVcsRUFBRSxDQUFDLElBQUEsK0JBQXdCLEVBQUMsb0NBQXVCLENBQUMsQ0FBQztTQUNqRTtRQUNEO1lBQ0UsT0FBTyxFQUFFLGdDQUFnQztZQUN6QyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7WUFDakIsV0FBVyxFQUFFLENBQUMsSUFBQSwrQkFBd0IsRUFBQyx5Q0FBMEIsQ0FBQyxDQUFDO1NBQ3BFO1FBQ0Q7WUFDRSxPQUFPLEVBQUUsZ0NBQWdDO1lBQ3pDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNqQixXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLHlDQUEwQixDQUFDLENBQUM7U0FDcEU7S0FDRjtDQUNGLENBQUMsQ0FBQSJ9
@@ -0,0 +1,255 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RETURN_TO_STORE_METADATA_KEY = exports.RETURN_TO_STORE_OPTION_CODE = exports.RETURN_TO_STORE_OPTION_NAME = void 0;
4
+ exports.ensureReturnToStoreOption = ensureReturnToStoreOption;
5
+ /**
6
+ * Ensures a free Manual "Return to store" shipping option (`is_return=true`)
7
+ * on a stock location so Medusa core's required `return_shipping.option_id`
8
+ * can be satisfied for store-dropoff returns.
9
+ */
10
+ const core_flows_1 = require("@medusajs/core-flows");
11
+ const utils_1 = require("@medusajs/framework/utils");
12
+ exports.RETURN_TO_STORE_OPTION_NAME = "Return to store";
13
+ exports.RETURN_TO_STORE_OPTION_CODE = "return-to-store";
14
+ exports.RETURN_TO_STORE_METADATA_KEY = "return_to_store";
15
+ function str(value) {
16
+ return typeof value === "string" && value ? value : null;
17
+ }
18
+ function rows(value) {
19
+ return Array.isArray(value)
20
+ ? value.filter((v) => Boolean(v && typeof v === "object"))
21
+ : [];
22
+ }
23
+ function isManual(providerId) {
24
+ return typeof providerId === "string" && providerId.toLowerCase().startsWith("manual");
25
+ }
26
+ async function graph(query, entity, fields, filters) {
27
+ const { data } = await query.graph({
28
+ entity,
29
+ fields,
30
+ ...(filters ? { filters } : {}),
31
+ });
32
+ return rows(data);
33
+ }
34
+ async function manualProviderId(query) {
35
+ const providers = await graph(query, "fulfillment_provider", ["id", "is_enabled"]);
36
+ const hit = providers.find((p) => isManual(p.id) && p.is_enabled !== false);
37
+ return hit ? str(hit.id) : null;
38
+ }
39
+ function optionCode(option) {
40
+ const type = option.type;
41
+ if (type && typeof type === "object" && !Array.isArray(type)) {
42
+ return str(type.code);
43
+ }
44
+ return null;
45
+ }
46
+ function isReturnToStoreOption(option) {
47
+ if (optionCode(option) === exports.RETURN_TO_STORE_OPTION_CODE)
48
+ return true;
49
+ const data = option.data;
50
+ if (data && typeof data === "object" && !Array.isArray(data)) {
51
+ return data[exports.RETURN_TO_STORE_METADATA_KEY] === true;
52
+ }
53
+ return str(option.name) === exports.RETURN_TO_STORE_OPTION_NAME;
54
+ }
55
+ async function loadLocation(query, locationId) {
56
+ const [location] = await graph(query, "stock_location", [
57
+ "id",
58
+ "name",
59
+ "fulfillment_providers.id",
60
+ "fulfillment_sets.id",
61
+ "fulfillment_sets.type",
62
+ "fulfillment_sets.service_zones.id",
63
+ "fulfillment_sets.service_zones.shipping_options.id",
64
+ "fulfillment_sets.service_zones.shipping_options.name",
65
+ "fulfillment_sets.service_zones.shipping_options.provider_id",
66
+ "fulfillment_sets.service_zones.shipping_options.type.code",
67
+ "fulfillment_sets.service_zones.shipping_options.data",
68
+ ], { id: locationId });
69
+ return location ?? null;
70
+ }
71
+ function existingReturnToStoreOption(location) {
72
+ for (const set of rows(location.fulfillment_sets)) {
73
+ for (const zone of rows(set.service_zones)) {
74
+ for (const option of rows(zone.shipping_options)) {
75
+ if (isManual(option.provider_id) && isReturnToStoreOption(option) && str(option.id)) {
76
+ return str(option.id);
77
+ }
78
+ }
79
+ }
80
+ }
81
+ return null;
82
+ }
83
+ /** Any shipping option already flagged for returns (e.g. Shiprocket Return Shipping). */
84
+ async function findAnyReturnShippingOptionId(query) {
85
+ const options = await graph(query, "shipping_option", [
86
+ "id",
87
+ "name",
88
+ "type.code",
89
+ "data",
90
+ "rules.attribute",
91
+ "rules.value",
92
+ ]);
93
+ for (const option of options) {
94
+ if (isReturnToStoreOption(option) && str(option.id)) {
95
+ return str(option.id);
96
+ }
97
+ for (const rule of rows(option.rules)) {
98
+ if (str(rule.attribute) === "is_return" && String(rule.value) === "true" && str(option.id)) {
99
+ return str(option.id);
100
+ }
101
+ }
102
+ }
103
+ return null;
104
+ }
105
+ async function regionCountryCodes(query) {
106
+ const regions = await graph(query, "region", ["countries.iso_2"]);
107
+ const codes = new Set();
108
+ for (const region of regions) {
109
+ for (const c of rows(region.countries)) {
110
+ const code = str(c.iso_2);
111
+ if (code)
112
+ codes.add(code.toLowerCase());
113
+ }
114
+ }
115
+ return [...codes];
116
+ }
117
+ async function currencyCodes(query) {
118
+ const [stores, regions] = await Promise.all([
119
+ graph(query, "store", ["supported_currencies.currency_code"]),
120
+ graph(query, "region", ["currency_code"]),
121
+ ]);
122
+ const codes = new Set();
123
+ for (const store of stores) {
124
+ for (const c of rows(store.supported_currencies)) {
125
+ const code = str(c.currency_code);
126
+ if (code)
127
+ codes.add(code.toLowerCase());
128
+ }
129
+ }
130
+ for (const region of regions) {
131
+ const code = str(region.currency_code);
132
+ if (code)
133
+ codes.add(code.toLowerCase());
134
+ }
135
+ return [...codes];
136
+ }
137
+ async function shippingProfileId(container, query) {
138
+ const profiles = await graph(query, "shipping_profile", ["id", "type"]);
139
+ const preferred = profiles.find((p) => p.type === "default") ?? profiles[0];
140
+ const existing = preferred ? str(preferred.id) : null;
141
+ if (existing)
142
+ return existing;
143
+ const { result } = await (0, core_flows_1.createShippingProfilesWorkflow)(container).run({
144
+ input: { data: [{ name: "Default Shipping Profile", type: "default" }] },
145
+ });
146
+ return result[0].id;
147
+ }
148
+ async function ensurePickupSetAndZone(container, query, locationId, location) {
149
+ const providerId = await manualProviderId(query);
150
+ if (!providerId)
151
+ return null;
152
+ let current = location;
153
+ const linked = rows(current.fulfillment_providers).some((p) => p.id === providerId);
154
+ if (!linked) {
155
+ await (0, core_flows_1.batchLinksWorkflow)(container).run({
156
+ input: {
157
+ create: [
158
+ {
159
+ [utils_1.Modules.STOCK_LOCATION]: { stock_location_id: locationId },
160
+ [utils_1.Modules.FULFILLMENT]: { fulfillment_provider_id: providerId },
161
+ },
162
+ ],
163
+ },
164
+ });
165
+ }
166
+ const suffix = locationId.slice(-8);
167
+ const locationName = str(current.name) ?? "Store";
168
+ let sets = rows(current.fulfillment_sets);
169
+ if (!sets.length) {
170
+ await (0, core_flows_1.createLocationFulfillmentSetWorkflow)(container).run({
171
+ input: {
172
+ location_id: locationId,
173
+ fulfillment_set_data: {
174
+ name: `${locationName} Pickup ${suffix}`,
175
+ type: "pickup",
176
+ },
177
+ },
178
+ });
179
+ current = (await loadLocation(query, locationId)) ?? current;
180
+ sets = rows(current.fulfillment_sets);
181
+ }
182
+ const set = sets.find((s) => s.type === "pickup") ?? sets[0];
183
+ const setId = set ? str(set.id) : null;
184
+ if (!setId)
185
+ return null;
186
+ let zoneId = str(rows(set.service_zones)[0]?.id);
187
+ if (!zoneId) {
188
+ const countries = await regionCountryCodes(query);
189
+ const { result } = await (0, core_flows_1.createServiceZonesWorkflow)(container).run({
190
+ input: {
191
+ data: [
192
+ {
193
+ fulfillment_set_id: setId,
194
+ name: `Pickup zone ${suffix}`,
195
+ geo_zones: countries.map((country_code) => ({
196
+ type: "country",
197
+ country_code,
198
+ })),
199
+ },
200
+ ],
201
+ },
202
+ });
203
+ zoneId = result[0].id;
204
+ }
205
+ return { zoneId };
206
+ }
207
+ /**
208
+ * Returns a return shipping option id suitable for store dropoff.
209
+ * Prefers an existing Return-to-store option on the location, then any
210
+ * is_return option, otherwise creates a free Manual Return-to-store option.
211
+ */
212
+ async function ensureReturnToStoreOption(container, locationId) {
213
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
214
+ const location = await loadLocation(query, locationId);
215
+ if (!location) {
216
+ return findAnyReturnShippingOptionId(query);
217
+ }
218
+ const found = existingReturnToStoreOption(location);
219
+ if (found)
220
+ return found;
221
+ const anyReturn = await findAnyReturnShippingOptionId(query);
222
+ if (anyReturn)
223
+ return anyReturn;
224
+ const providerId = await manualProviderId(query);
225
+ if (!providerId)
226
+ return null;
227
+ const ensured = await ensurePickupSetAndZone(container, query, locationId, location);
228
+ if (!ensured)
229
+ return null;
230
+ const currencies = await currencyCodes(query);
231
+ const { result } = await (0, core_flows_1.createShippingOptionsWorkflow)(container).run({
232
+ input: [
233
+ {
234
+ name: exports.RETURN_TO_STORE_OPTION_NAME,
235
+ service_zone_id: ensured.zoneId,
236
+ shipping_profile_id: await shippingProfileId(container, query),
237
+ provider_id: providerId,
238
+ price_type: "flat",
239
+ prices: currencies.map((currency_code) => ({ currency_code, amount: 0 })),
240
+ type: {
241
+ label: exports.RETURN_TO_STORE_OPTION_NAME,
242
+ description: "Customer drops the return at this store",
243
+ code: exports.RETURN_TO_STORE_OPTION_CODE,
244
+ },
245
+ data: { [exports.RETURN_TO_STORE_METADATA_KEY]: true },
246
+ rules: [
247
+ { attribute: "enabled_in_store", operator: "eq", value: "true" },
248
+ { attribute: "is_return", operator: "eq", value: "true" },
249
+ ],
250
+ },
251
+ ],
252
+ });
253
+ return result[0]?.id ?? null;
254
+ }
255
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5zdXJlLXJldHVybi10by1zdG9yZS1vcHRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaGVscGVycy9lbnN1cmUtcmV0dXJuLXRvLXN0b3JlLW9wdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE0UEEsOERBK0NDO0FBM1NEOzs7O0dBSUc7QUFDSCxxREFNNkI7QUFFN0IscURBQThFO0FBRWpFLFFBQUEsMkJBQTJCLEdBQUcsaUJBQWlCLENBQUE7QUFDL0MsUUFBQSwyQkFBMkIsR0FBRyxpQkFBaUIsQ0FBQTtBQUMvQyxRQUFBLDRCQUE0QixHQUFHLGlCQUFpQixDQUFBO0FBVzdELFNBQVMsR0FBRyxDQUFDLEtBQWM7SUFDekIsT0FBTyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtBQUMxRCxDQUFDO0FBRUQsU0FBUyxJQUFJLENBQUMsS0FBYztJQUMxQixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFZLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBQ3BFLENBQUMsQ0FBQyxFQUFFLENBQUE7QUFDUixDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsVUFBbUI7SUFDbkMsT0FBTyxPQUFPLFVBQVUsS0FBSyxRQUFRLElBQUksVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQTtBQUN4RixDQUFDO0FBRUQsS0FBSyxVQUFVLEtBQUssQ0FDbEIsS0FBaUIsRUFDakIsTUFBYyxFQUNkLE1BQWdCLEVBQ2hCLE9BQWE7SUFFYixNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxD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
@@ -20,4 +20,5 @@ __exportStar(require("./return-exchange-guard"), exports);
20
20
  __exportStar(require("./order-line-presentation"), exports);
21
21
  __exportStar(require("./refund-calculation"), exports);
22
22
  __exportStar(require("./refund-receive-guard"), exports);
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXVCO0FBQ3ZCLHdEQUFxQztBQUNyQywwREFBdUM7QUFDdkMsNERBQXlDO0FBQ3pDLHVEQUFvQztBQUNwQyx5REFBc0MifQ==
23
+ __exportStar(require("./ensure-return-to-store-option"), exports);
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaGVscGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXVCO0FBQ3ZCLHdEQUFxQztBQUNyQywwREFBdUM7QUFDdkMsNERBQXlDO0FBQ3pDLHVEQUFvQztBQUNwQyx5REFBc0M7QUFDdEMsa0VBQStDIn0=
@@ -4,7 +4,7 @@
4
4
  * Used by storefront, order-management, and POS pickup queues.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.CUSTOMER_PICKUP_OPTION_CODE = exports.PICKUP_STATUS_KEY = exports.PAYMENT_MODE_KEY = exports.PICKUP_LOCATION_NAME_KEY = exports.PICKUP_LOCATION_ID_KEY = exports.FULFILLMENT_METHOD_KEY = void 0;
7
+ exports.RETURN_TO_STORE_OPTION_CODE = exports.CUSTOMER_PICKUP_OPTION_CODE = exports.PICKUP_STATUS_KEY = exports.PAYMENT_MODE_KEY = exports.PICKUP_LOCATION_NAME_KEY = exports.PICKUP_LOCATION_ID_KEY = exports.FULFILLMENT_METHOD_KEY = void 0;
8
8
  exports.isFulfillmentMethod = isFulfillmentMethod;
9
9
  exports.isPaymentMode = isPaymentMode;
10
10
  exports.readFulfillmentMetadata = readFulfillmentMetadata;
@@ -16,6 +16,7 @@ exports.PICKUP_LOCATION_NAME_KEY = "pickup_location_name";
16
16
  exports.PAYMENT_MODE_KEY = "payment_mode";
17
17
  exports.PICKUP_STATUS_KEY = "pickup_status";
18
18
  exports.CUSTOMER_PICKUP_OPTION_CODE = "customer-pickup";
19
+ exports.RETURN_TO_STORE_OPTION_CODE = "return-to-store";
19
20
  function isFulfillmentMethod(value) {
20
21
  return value === "delivery" || value === "pickup";
21
22
  }
@@ -65,4 +66,4 @@ function buildDeliveryCartMetadata(input) {
65
66
  delete next[exports.PICKUP_STATUS_KEY];
66
67
  return next;
67
68
  }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZnVsZmlsbG1lbnQtbWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvb3JkZXItZnVsZmlsbG1lbnQtbWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7O0FBcUJILGtEQUVDO0FBRUQsc0NBRUM7QUFFRCwwREFvQkM7QUFFRCwwREFnQkM7QUFFRCw4REFhQztBQWhGWSxRQUFBLHNCQUFzQixHQUFHLG9CQUFvQixDQUFBO0FBQzdDLFFBQUEsc0JBQXNCLEdBQUcsb0JBQW9CLENBQUE7QUFDN0MsUUFBQSx3QkFBd0IsR0FBRyxzQkFBc0IsQ0FBQTtBQUNqRCxRQUFBLGdCQUFnQixHQUFHLGNBQWMsQ0FBQTtBQUNqQyxRQUFBLGlCQUFpQixHQUFHLGVBQWUsQ0FBQTtBQUNuQyxRQUFBLDJCQUEyQixHQUFHLGlCQUFpQixDQUFBO0FBYzVELFNBQWdCLG1CQUFtQixDQUFDLEtBQWM7SUFDaEQsT0FBTyxLQUFLLEtBQUssVUFBVSxJQUFJLEtBQUssS0FBSyxRQUFRLENBQUE7QUFDbkQsQ0FBQztBQUVELFNBQWdCLGFBQWEsQ0FBQyxLQUFjO0lBQzFDLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxLQUFLLEtBQUssY0FBYyxJQUFJLEtBQUssS0FBSyxLQUFLLENBQUE7QUFDMUUsQ0FBQztBQUVELFNBQWdCLHVCQUF1QixDQUNyQyxRQUFvRDtJQUVwRCxJQUFJLENBQUMsUUFBUSxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVE7UUFBRSxPQUFPLEVBQUUsQ0FBQTtJQUN4RCxNQUFNLEdBQUcsR0FBNkIsRUFBRSxDQUFBO0lBQ3hDLElBQUksbUJBQW1CLENBQUMsUUFBUSxDQUFDLDhCQUFzQixDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzFELEdBQUcsQ0FBQyw4QkFBc0IsQ0FBQyxHQUFHLFFBQVEsQ0FBQyw4QkFBc0IsQ0FBQyxDQUFBO0lBQ2hFLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxRQUFRLENBQUMsOEJBQXNCLENBQUMsQ0FBQTtJQUM1QyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUMxQyxHQUFHLENBQUMsOEJBQXNCLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDMUMsQ0FBQztJQUNELElBQUksYUFBYSxDQUFDLFFBQVEsQ0FBQyx3QkFBZ0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM5QyxHQUFHLENBQUMsd0JBQWdCLENBQUMsR0FBRyxRQUFRLENBQUMsd0JBQWdCLENBQUMsQ0FBQTtJQUNwRCxDQUFDO0lBQ0QsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLHlCQUFpQixDQUFDLENBQUE7SUFDMUMsSUFBSSxNQUFNLEtBQUssU0FBUyxJQUFJLE1BQU0sS0FBSyxPQUFPLElBQUksTUFBTSxLQUFLLFdBQVcsRUFBRSxDQUFDO1FBQ3pFLEdBQUcsQ0FBQyx5QkFBaUIsQ0FBQyxHQUFHLE1BQU0sQ0FBQTtJQUNqQyxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDO0FBRUQsU0FBZ0IsdUJBQXVCLENBQUMsS0FLdkM7SUFDQyxPQUFPO1FBQ0wsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksT0FBTyxLQUFLLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9FLENBQUMsOEJBQXNCLENBQUMsRUFBRSxRQUFvQztRQUM5RCxDQUFDLDhCQUFzQixDQUFDLEVBQUUsS0FBSyxDQUFDLFVBQVU7UUFDMUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZO1lBQ3BCLENBQUMsQ0FBQyxFQUFFLENBQUMsZ0NBQXdCLENBQUMsRUFBRSxLQUFLLENBQUMsWUFBWSxFQUFFO1lBQ3BELENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDUCxDQUFDLHdCQUFnQixDQUFDLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxRQUFRO1FBQ2pELENBQUMseUJBQWlCLENBQUMsRUFBRSxTQUFnQztLQUN0RCxDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQWdCLHlCQUF5QixDQUFDLEtBR3pDO0lBQ0MsTUFBTSxJQUFJLEdBQTRCO1FBQ3BDLEdBQUcsQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLE9BQU8sS0FBSyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMvRSxDQUFDLDhCQUFzQixDQUFDLEVBQUUsVUFBc0M7UUFDaEUsQ0FBQyx3QkFBZ0IsQ0FBQyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksUUFBUTtLQUNsRCxDQUFBO0lBQ0QsT0FBTyxJQUFJLENBQUMsOEJBQXNCLENBQUMsQ0FBQTtJQUNuQyxPQUFPLElBQUksQ0FBQyxnQ0FBd0IsQ0FBQyxDQUFBO0lBQ3JDLE9BQU8sSUFBSSxDQUFDLHlCQUFpQixDQUFDLENBQUE7SUFDOUIsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDIn0=
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXItZnVsZmlsbG1lbnQtbWV0YWRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdXRpbHMvb3JkZXItZnVsZmlsbG1lbnQtbWV0YWRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7R0FHRzs7O0FBc0JILGtEQUVDO0FBRUQsc0NBRUM7QUFFRCwwREFvQkM7QUFFRCwwREFnQkM7QUFFRCw4REFhQztBQWpGWSxRQUFBLHNCQUFzQixHQUFHLG9CQUFvQixDQUFBO0FBQzdDLFFBQUEsc0JBQXNCLEdBQUcsb0JBQW9CLENBQUE7QUFDN0MsUUFBQSx3QkFBd0IsR0FBRyxzQkFBc0IsQ0FBQTtBQUNqRCxRQUFBLGdCQUFnQixHQUFHLGNBQWMsQ0FBQTtBQUNqQyxRQUFBLGlCQUFpQixHQUFHLGVBQWUsQ0FBQTtBQUNuQyxRQUFBLDJCQUEyQixHQUFHLGlCQUFpQixDQUFBO0FBQy9DLFFBQUEsMkJBQTJCLEdBQUcsaUJBQWlCLENBQUE7QUFjNUQsU0FBZ0IsbUJBQW1CLENBQUMsS0FBYztJQUNoRCxPQUFPLEtBQUssS0FBSyxVQUFVLElBQUksS0FBSyxLQUFLLFFBQVEsQ0FBQTtBQUNuRCxDQUFDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLEtBQWM7SUFDMUMsT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLEtBQUssS0FBSyxjQUFjLElBQUksS0FBSyxLQUFLLEtBQUssQ0FBQTtBQUMxRSxDQUFDO0FBRUQsU0FBZ0IsdUJBQXVCLENBQ3JDLFFBQW9EO0lBRXBELElBQUksQ0FBQyxRQUFRLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUTtRQUFFLE9BQU8sRUFBRSxDQUFBO0lBQ3hELE1BQU0sR0FBRyxHQUE2QixFQUFFLENBQUE7SUFDeEMsSUFBSSxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsOEJBQXNCLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDMUQsR0FBRyxDQUFDLDhCQUFzQixDQUFDLEdBQUcsUUFBUSxDQUFDLDhCQUFzQixDQUFDLENBQUE7SUFDaEUsQ0FBQztJQUNELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyw4QkFBc0IsQ0FBQyxDQUFBO0lBQzVDLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQzFDLEdBQUcsQ0FBQyw4QkFBc0IsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUMxQyxDQUFDO0lBQ0QsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLHdCQUFnQixDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzlDLEdBQUcsQ0FBQyx3QkFBZ0IsQ0FBQyxHQUFHLFFBQVEsQ0FBQyx3QkFBZ0IsQ0FBQyxDQUFBO0lBQ3BELENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMseUJBQWlCLENBQUMsQ0FBQTtJQUMxQyxJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksTUFBTSxLQUFLLE9BQU8sSUFBSSxNQUFNLEtBQUssV0FBVyxFQUFFLENBQUM7UUFDekUsR0FBRyxDQUFDLHlCQUFpQixDQUFDLEdBQUcsTUFBTSxDQUFBO0lBQ2pDLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQTtBQUNaLENBQUM7QUFFRCxTQUFnQix1QkFBdUIsQ0FBQyxLQUt2QztJQUNDLE9BQU87UUFDTCxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxPQUFPLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDL0UsQ0FBQyw4QkFBc0IsQ0FBQyxFQUFFLFFBQW9DO1FBQzlELENBQUMsOEJBQXNCLENBQUMsRUFBRSxLQUFLLENBQUMsVUFBVTtRQUMxQyxHQUFHLENBQUMsS0FBSyxDQUFDLFlBQVk7WUFDcEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxnQ0FBd0IsQ0FBQyxFQUFFLEtBQUssQ0FBQyxZQUFZLEVBQUU7WUFDcEQsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNQLENBQUMsd0JBQWdCLENBQUMsRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLFFBQVE7UUFDakQsQ0FBQyx5QkFBaUIsQ0FBQyxFQUFFLFNBQWdDO0tBQ3RELENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBZ0IseUJBQXlCLENBQUMsS0FHekM7SUFDQyxNQUFNLElBQUksR0FBNEI7UUFDcEMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksT0FBTyxLQUFLLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9FLENBQUMsOEJBQXNCLENBQUMsRUFBRSxVQUFzQztRQUNoRSxDQUFDLHdCQUFnQixDQUFDLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxRQUFRO0tBQ2xELENBQUE7SUFDRCxPQUFPLElBQUksQ0FBQyw4QkFBc0IsQ0FBQyxDQUFBO0lBQ25DLE9BQU8sSUFBSSxDQUFDLGdDQUF3QixDQUFDLENBQUE7SUFDckMsT0FBTyxJQUFJLENBQUMseUJBQWlCLENBQUMsQ0FBQTtJQUM5QixPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "order-management",
3
- "version": "0.0.103",
3
+ "version": "0.0.104",
4
4
  "description": "A starter for Medusa plugins.",
5
5
  "author": "Medusa (https://medusajs.com)",
6
6
  "license": "MIT",
@@ -13,6 +13,7 @@
13
13
  "./.medusa/server/src/modules/*": "./.medusa/server/src/modules/*/index.js",
14
14
  "./modules/*": "./.medusa/server/src/modules/*/index.js",
15
15
  "./providers/*": "./.medusa/server/src/providers/*/index.js",
16
+ "./helpers/*": "./.medusa/server/src/helpers/*.js",
16
17
  "./*": "./.medusa/server/src/*.js",
17
18
  "./admin": {
18
19
  "import": "./.medusa/server/src/admin/index.mjs",