medusa-pos-plugin 0.0.23 → 0.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/src/api/admin/pos/draft-orders/[id]/finalize/route.js +51 -6
- package/.medusa/server/src/api/admin/pos/staff/[key]/route.js +16 -0
- package/.medusa/server/src/api/admin/pos/staff/route.js +26 -0
- package/.medusa/server/src/api/middlewares.js +30 -0
- package/.medusa/server/src/utils/pos-access.js +168 -0
- package/.medusa/server/src/utils/pos-finalize.js +60 -2
- package/.medusa/server/src/utils/pos-staff.js +15 -0
- package/README.md +14 -0
- package/package.json +1 -1
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.POST = POST;
|
|
4
4
|
const utils_1 = require("@medusajs/framework/utils");
|
|
5
5
|
const core_flows_1 = require("@medusajs/core-flows");
|
|
6
|
+
const pos_access_1 = require("../../../../../../utils/pos-access");
|
|
6
7
|
const validators_1 = require("../../../orders/validators");
|
|
7
8
|
const fulfill_pos_items_1 = require("../../../orders/fulfill-pos-items");
|
|
8
9
|
const pos_returns_1 = require("../../../../../../utils/pos-returns");
|
|
@@ -173,6 +174,17 @@ async function POST(req, res) {
|
|
|
173
174
|
res.status(404).json({ message: "Draft order not found", type: "NOT_FOUND" });
|
|
174
175
|
return;
|
|
175
176
|
}
|
|
177
|
+
const preWalletCheckout = (0, pos_finalize_1.validatePosFinalizeCheckout)(order, {
|
|
178
|
+
charged_total: body.charged_total,
|
|
179
|
+
});
|
|
180
|
+
if (!preWalletCheckout.ok) {
|
|
181
|
+
res.status(preWalletCheckout.status).json({
|
|
182
|
+
message: preWalletCheckout.message,
|
|
183
|
+
type: preWalletCheckout.type,
|
|
184
|
+
code: preWalletCheckout.code,
|
|
185
|
+
});
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
176
188
|
const payableForWallet = (0, pos_returns_1.roundMoney)(typeof body.charged_total === "number" && body.charged_total > 0
|
|
177
189
|
? body.charged_total
|
|
178
190
|
: (0, pos_finalize_1.resolvePosPayableTotal)(order));
|
|
@@ -200,6 +212,17 @@ async function POST(req, res) {
|
|
|
200
212
|
res.status(404).json({ message: "Draft order not found", type: "NOT_FOUND" });
|
|
201
213
|
return;
|
|
202
214
|
}
|
|
215
|
+
const checkout = (0, pos_finalize_1.validatePosFinalizeCheckout)(order, {
|
|
216
|
+
charged_total: body.charged_total,
|
|
217
|
+
});
|
|
218
|
+
if (!checkout.ok) {
|
|
219
|
+
res.status(checkout.status).json({
|
|
220
|
+
message: checkout.message,
|
|
221
|
+
type: checkout.type,
|
|
222
|
+
code: checkout.code,
|
|
223
|
+
});
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
203
226
|
const variantIds = (Array.isArray(order.items) ? order.items : [])
|
|
204
227
|
.map((item) => {
|
|
205
228
|
if (!isRecord(item))
|
|
@@ -251,7 +274,7 @@ async function POST(req, res) {
|
|
|
251
274
|
payment_method: body.payment_method,
|
|
252
275
|
wallet_amount: body.wallet_amount,
|
|
253
276
|
secondary_amount: walletFinalize.secondary_amount,
|
|
254
|
-
charged_total:
|
|
277
|
+
charged_total: checkout.payable,
|
|
255
278
|
razorpay_qr_id: body.razorpay_qr_id,
|
|
256
279
|
razorpay_payment_id: body.razorpay_payment_id,
|
|
257
280
|
cashier_id: confirmedBy !== "system" ? confirmedBy : undefined,
|
|
@@ -262,8 +285,19 @@ async function POST(req, res) {
|
|
|
262
285
|
item_count: itemCount,
|
|
263
286
|
checkout_duration_ms: checkoutDurationMs,
|
|
264
287
|
});
|
|
288
|
+
const posClaims = (0, pos_access_1.readPosClaims)(req.auth_context);
|
|
265
289
|
const existingMetadata = isRecord(order.metadata) ? order.metadata : {};
|
|
266
|
-
const nextMetadata = {
|
|
290
|
+
const nextMetadata = {
|
|
291
|
+
...existingMetadata,
|
|
292
|
+
...posPaymentMetadata,
|
|
293
|
+
...(posClaims
|
|
294
|
+
? {
|
|
295
|
+
pos_staff_id: posClaims.staff_id,
|
|
296
|
+
pos_staff_role: posClaims.role,
|
|
297
|
+
pos_terminal_id: posClaims.terminal_id,
|
|
298
|
+
}
|
|
299
|
+
: {}),
|
|
300
|
+
};
|
|
267
301
|
// Snapshot unit_cost onto line item metadata when missing
|
|
268
302
|
const orderModuleForItems = req.scope.resolve(utils_1.Modules.ORDER);
|
|
269
303
|
if (typeof orderModuleForItems.updateOrderItems === "function") {
|
|
@@ -335,6 +369,19 @@ async function POST(req, res) {
|
|
|
335
369
|
}));
|
|
336
370
|
}
|
|
337
371
|
order = (await (0, pos_draft_edit_1.timed)("reload", timings, () => loadOrder(query, draftOrderId))) || order;
|
|
372
|
+
const postConvertCheckout = (0, pos_finalize_1.validatePosFinalizeCheckout)(order, {
|
|
373
|
+
charged_total: checkout.payable,
|
|
374
|
+
});
|
|
375
|
+
if (!postConvertCheckout.ok) {
|
|
376
|
+
res.status(postConvertCheckout.status).json({
|
|
377
|
+
message: postConvertCheckout.code === "empty_cart" || postConvertCheckout.code === "invalid_total"
|
|
378
|
+
? "Cart was empty or invalid after checkout. Payment was not taken — refresh the cart and try again."
|
|
379
|
+
: postConvertCheckout.message,
|
|
380
|
+
type: postConvertCheckout.type,
|
|
381
|
+
code: postConvertCheckout.code,
|
|
382
|
+
});
|
|
383
|
+
return;
|
|
384
|
+
}
|
|
338
385
|
if (!(0, pos_finalize_1.readAddress1)(order.shipping_address) || !(0, pos_finalize_1.readAddress1)(order.billing_address)) {
|
|
339
386
|
try {
|
|
340
387
|
const orderModule = req.scope.resolve(utils_1.Modules.ORDER);
|
|
@@ -350,9 +397,7 @@ async function POST(req, res) {
|
|
|
350
397
|
}
|
|
351
398
|
const collections = Array.isArray(order.payment_collections) ? order.payment_collections : [];
|
|
352
399
|
let paymentCollection = collections[0];
|
|
353
|
-
const amount = (0, pos_draft_edit_1.toAmount)(
|
|
354
|
-
? body.charged_total
|
|
355
|
-
: (0, pos_finalize_1.resolvePosPayableTotal)(order));
|
|
400
|
+
const amount = (0, pos_draft_edit_1.toAmount)(postConvertCheckout.payable);
|
|
356
401
|
if (!paymentCollection?.id) {
|
|
357
402
|
const created = await (0, pos_draft_edit_1.timed)("create_paycol", timings, () => (0, core_flows_1.createOrderPaymentCollectionWorkflow)(req.scope).run({
|
|
358
403
|
input: { order_id: draftOrderId, amount },
|
|
@@ -450,4 +495,4 @@ async function POST(req, res) {
|
|
|
450
495
|
});
|
|
451
496
|
}
|
|
452
497
|
}
|
|
453
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3Bvcy9kcmFmdC1vcmRlcnMvW2lkXS9maW5hbGl6ZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXNNQSxvQkFzWEM7QUEzakJELHFEQUE4RTtBQUM5RSxxREFNNkI7QUFDN0IsMkRBQW1FO0FBQ25FLHlFQUkwQztBQUMxQyxxRUFPNEM7QUFDNUMsMkVBSytDO0FBQy9DLHVFQVU2QztBQUM3Qyx5RUFHOEM7QUFDOUMscUZBQWlGO0FBQ2pGLGlEQUF5RDtBQVV6RCxTQUFTLFFBQVEsQ0FBQyxLQUFjO0lBQzlCLE9BQU8sT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQTtBQUNwRCxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsS0FBYztJQUNyQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sS0FBSyxDQUFDLEVBQUUsS0FBSyxRQUFRO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFDakUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO0lBQzNELE9BQU87UUFDTCxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7UUFDWixRQUFRLEVBQUUsSUFBQSxzQkFBUSxFQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxJQUFJO1FBQzFDLE1BQU07S0FDUCxDQUFBO0FBQ0gsQ0FBQztBQUVELE1BQU0sWUFBWSxHQUFHO0lBQ25CLElBQUk7SUFDSixRQUFRO0lBQ1IsZ0JBQWdCO0lBQ2hCLE9BQU87SUFDUCxPQUFPO0lBQ1AsVUFBVTtJQUNWLFlBQVk7SUFDWixnQkFBZ0I7SUFDaEIsZUFBZTtJQUNmLFVBQVU7SUFDVixrQkFB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
|
|
498
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3Bvcy9kcmFmdC1vcmRlcnMvW2lkXS9maW5hbGl6ZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXdNQSxvQkFvYUM7QUEzbUJELHFEQUE4RTtBQUM5RSxxREFNNkI7QUFDN0IsbUVBQWtFO0FBQ2xFLDJEQUFtRTtBQUNuRSx5RUFJMEM7QUFDMUMscUVBTzRDO0FBQzVDLDJFQUsrQztBQUMvQyx1RUFXNkM7QUFDN0MseUVBRzhDO0FBQzlDLHFGQUFpRjtBQUNqRixpREFBeUQ7QUFVekQsU0FBUyxRQUFRLENBQUMsS0FBYztJQUM5QixPQUFPLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUE7QUFDcEQsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLEtBQWM7SUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPLEtBQUssQ0FBQyxFQUFFLEtBQUssUUFBUTtRQUFFLE9BQU8sSUFBSSxDQUFBO0lBQ2pFLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQTtJQUMzRCxPQUFPO1FBQ0wsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFO1FBQ1osUUFBUSxFQUFFLElBQUEsc0JBQVEsRUFBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSTtRQUMxQyxNQUFNO0tBQ1AsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFlBQVksR0FBRztJQUNuQixJQUFJO0lBQ0osUUFBUTtJQUNSLGdCQUFnQjtJQUNoQixPQUFPO0lBQ1AsT0FBTztJQUNQLFVBQVU7SUFDVixZQUFZO0lBQ1osZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZixV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
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DELETE = DELETE;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const pos_staff_1 = require("../../../../../utils/pos-staff");
|
|
6
|
+
async function DELETE(req, res) {
|
|
7
|
+
if (!(0, pos_staff_1.requireSecretKey)(req, res))
|
|
8
|
+
return;
|
|
9
|
+
const key = String(req.params.key || "");
|
|
10
|
+
const users = req.scope.resolve(utils_1.Modules.USER);
|
|
11
|
+
const [existing] = await users.listUsers({ email: (0, pos_staff_1.posStaffEmail)(key) }, { take: 1 });
|
|
12
|
+
if (existing)
|
|
13
|
+
await users.softDeleteUsers([existing.id]);
|
|
14
|
+
res.status(200).json({ deleted: Boolean(existing) });
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3Bvcy9zdGFmZi9ba2V5XS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVNBLHdCQU9DO0FBVkQscURBQW1EO0FBQ25ELDhEQUFnRjtBQUV6RSxLQUFLLFVBQVUsTUFBTSxDQUFDLEdBQStCLEVBQUUsR0FBbUI7SUFDL0UsSUFBSSxDQUFDLElBQUEsNEJBQWdCLEVBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztRQUFFLE9BQU07SUFDdkMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ3hDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFxQixlQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDakUsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sS0FBSyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFBLHlCQUFhLEVBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3BGLElBQUksUUFBUTtRQUFFLE1BQU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ3hELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUE7QUFDdEQsQ0FBQyJ9
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.POST = POST;
|
|
4
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
5
|
+
const pos_staff_1 = require("../../../../utils/pos-staff");
|
|
6
|
+
async function POST(req, res) {
|
|
7
|
+
if (!(0, pos_staff_1.requireSecretKey)(req, res))
|
|
8
|
+
return;
|
|
9
|
+
const key = String(req.body?.key || "").trim();
|
|
10
|
+
if (!/^[a-z0-9_-]{6,64}$/i.test(key)) {
|
|
11
|
+
res.status(400).json({ message: "key must be 6-64 letters, digits, _ or -", type: "INVALID_DATA" });
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const name = String(req.body?.name || "").trim().slice(0, 120) || "POS staff";
|
|
15
|
+
const [first_name, ...rest] = name.split(/\s+/);
|
|
16
|
+
const last_name = rest.join(" ") || null;
|
|
17
|
+
const metadata = { vyaparnext_pos_staff: key, pos_role: req.body?.role || null };
|
|
18
|
+
const users = req.scope.resolve(utils_1.Modules.USER);
|
|
19
|
+
const email = (0, pos_staff_1.posStaffEmail)(key);
|
|
20
|
+
const [existing] = await users.listUsers({ email }, { take: 1 });
|
|
21
|
+
const user = existing
|
|
22
|
+
? await users.updateUsers({ id: existing.id, first_name, last_name, metadata })
|
|
23
|
+
: await users.createUsers({ email, first_name, last_name, metadata });
|
|
24
|
+
res.status(200).json({ user: { id: user.id, email: user.email } });
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3Bvcy9zdGFmZi9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVlBLG9CQW9CQztBQXpCRCxxREFBbUQ7QUFDbkQsMkRBQTZFO0FBSXRFLEtBQUssVUFBVSxJQUFJLENBQUMsR0FBcUMsRUFBRSxHQUFtQjtJQUNuRixJQUFJLENBQUMsSUFBQSw0QkFBZ0IsRUFBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO1FBQUUsT0FBTTtJQUN2QyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDOUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3JDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLDBDQUEwQyxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFBO1FBQ25HLE9BQU07SUFDUixDQUFDO0lBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksV0FBVyxDQUFBO0lBQzdFLE1BQU0sQ0FBQyxVQUFVLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQy9DLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFBO0lBQ3hDLE1BQU0sUUFBUSxHQUFHLEVBQUUsb0JBQW9CLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQTtJQUVoRixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBcUIsZUFBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2pFLE1BQU0sS0FBSyxHQUFHLElBQUEseUJBQWEsRUFBQyxHQUFHLENBQUMsQ0FBQTtJQUNoQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUNoRSxNQUFNLElBQUksR0FBRyxRQUFRO1FBQ25CLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBQy9FLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO0lBRXZFLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUE7QUFDcEUsQ0FBQyJ9
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const http_1 = require("@medusajs/framework/http");
|
|
4
|
+
const pos_access_1 = require("../utils/pos-access");
|
|
5
|
+
/** Runs after Medusa's admin authentication, so auth_context and body are ready. */
|
|
6
|
+
function posAccessGuard(req, res, next) {
|
|
7
|
+
const claims = (0, pos_access_1.readPosClaims)(req.auth_context);
|
|
8
|
+
if (!claims)
|
|
9
|
+
return next();
|
|
10
|
+
const denial = (0, pos_access_1.checkPosAccess)({
|
|
11
|
+
method: req.method,
|
|
12
|
+
path: req.originalUrl || req.path,
|
|
13
|
+
body: req.body,
|
|
14
|
+
claims,
|
|
15
|
+
});
|
|
16
|
+
if (denial) {
|
|
17
|
+
res.status(denial.status).json({ message: denial.message, type: denial.type });
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
next();
|
|
21
|
+
}
|
|
22
|
+
exports.default = (0, http_1.defineMiddlewares)({
|
|
23
|
+
routes: [
|
|
24
|
+
{
|
|
25
|
+
matcher: "/admin/*",
|
|
26
|
+
middlewares: [posAccessGuard],
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBS2lDO0FBQ2pDLG9EQUFtRTtBQUVuRSxvRkFBb0Y7QUFDcEYsU0FBUyxjQUFjLENBQUMsR0FBa0IsRUFBRSxHQUFtQixFQUFFLElBQXdCO0lBQ3ZGLE1BQU0sTUFBTSxHQUFHLElBQUEsMEJBQWEsRUFBRSxHQUFrQyxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQzlFLElBQUksQ0FBQyxNQUFNO1FBQUUsT0FBTyxJQUFJLEVBQUUsQ0FBQTtJQUMxQixNQUFNLE1BQU0sR0FBRyxJQUFBLDJCQUFjLEVBQUM7UUFDNUIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO1FBQ2xCLElBQUksRUFBRSxHQUFHLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FBQyxJQUFJO1FBQ2pDLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtRQUNkLE1BQU07S0FDUCxDQUFDLENBQUE7SUFDRixJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQzlFLE9BQU07SUFDUixDQUFDO0lBQ0QsSUFBSSxFQUFFLENBQUE7QUFDUixDQUFDO0FBRUQsa0JBQWUsSUFBQSx3QkFBaUIsRUFBQztJQUMvQixNQUFNLEVBQUU7UUFDTjtZQUNFLE9BQU8sRUFBRSxVQUFVO1lBQ25CLFdBQVcsRUFBRSxDQUFDLGNBQWMsQ0FBQztTQUM5QjtLQUNGO0NBQ0YsQ0FBQyxDQUFBIn0=
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Access policy for POS sessions issued by VyaparNext.
|
|
4
|
+
*
|
|
5
|
+
* VyaparNext signs a normal Medusa admin JWT for each POS session and adds a
|
|
6
|
+
* `pos` claim. Requests without that claim (Medusa admin, secret API keys) are
|
|
7
|
+
* never touched by this policy.
|
|
8
|
+
*/
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.readPosClaims = readPosClaims;
|
|
11
|
+
exports.checkPosAccess = checkPosAccess;
|
|
12
|
+
const ROLES = ["owner", "manager", "cashier"];
|
|
13
|
+
function readPosClaims(authContext) {
|
|
14
|
+
const pos = authContext?.pos;
|
|
15
|
+
if (!pos || typeof pos !== "object")
|
|
16
|
+
return null;
|
|
17
|
+
if (pos.v !== 1 || !pos.role || !ROLES.includes(pos.role))
|
|
18
|
+
return null;
|
|
19
|
+
if (!pos.staff_id || !pos.session_id)
|
|
20
|
+
return null;
|
|
21
|
+
return pos;
|
|
22
|
+
}
|
|
23
|
+
const WRITE_METHODS = new Set(["POST", "PUT", "PATCH", "DELETE"]);
|
|
24
|
+
/** Never reachable with a POS session, whatever the role. */
|
|
25
|
+
const ALWAYS_BLOCKED = [
|
|
26
|
+
"/admin/api-keys",
|
|
27
|
+
"/admin/invites",
|
|
28
|
+
"/admin/users",
|
|
29
|
+
"/admin/pos/staff",
|
|
30
|
+
"/admin/workflows-executions",
|
|
31
|
+
];
|
|
32
|
+
/** Store configuration: owner only. */
|
|
33
|
+
const SETTINGS_WRITE_BLOCKED = [
|
|
34
|
+
"/admin/stock-locations",
|
|
35
|
+
"/admin/regions",
|
|
36
|
+
"/admin/sales-channels",
|
|
37
|
+
"/admin/stores",
|
|
38
|
+
"/admin/tax-rates",
|
|
39
|
+
"/admin/tax-regions",
|
|
40
|
+
"/admin/shipping-options",
|
|
41
|
+
"/admin/shipping-profiles",
|
|
42
|
+
"/admin/fulfillment-sets",
|
|
43
|
+
"/admin/fulfillment-providers",
|
|
44
|
+
"/admin/payment-providers",
|
|
45
|
+
"/admin/price-preferences",
|
|
46
|
+
"/admin/currencies",
|
|
47
|
+
"/admin/return-reasons",
|
|
48
|
+
"/admin/refund-reasons",
|
|
49
|
+
"/admin/notifications",
|
|
50
|
+
];
|
|
51
|
+
/** Catalog, pricing, stock and money-back actions: manager and owner. */
|
|
52
|
+
const MANAGER_WRITE_ONLY = [
|
|
53
|
+
"/admin/products",
|
|
54
|
+
"/admin/product-helper",
|
|
55
|
+
"/admin/product-categories",
|
|
56
|
+
"/admin/collections",
|
|
57
|
+
"/admin/product-tags",
|
|
58
|
+
"/admin/product-types",
|
|
59
|
+
"/admin/price-lists",
|
|
60
|
+
"/admin/promotions",
|
|
61
|
+
"/admin/campaigns",
|
|
62
|
+
"/admin/inventory-items",
|
|
63
|
+
"/admin/inventory-counts",
|
|
64
|
+
"/admin/reservations",
|
|
65
|
+
"/admin/barcodes",
|
|
66
|
+
"/admin/barcode-template",
|
|
67
|
+
"/admin/customer-groups",
|
|
68
|
+
"/admin/pos/manual-discounts",
|
|
69
|
+
"/admin/wallets",
|
|
70
|
+
"/admin/uploads",
|
|
71
|
+
"/admin/exports",
|
|
72
|
+
];
|
|
73
|
+
/** Reports and exports: manager and owner, including reads. */
|
|
74
|
+
const MANAGER_READ_ONLY = ["/admin/analytics", "/admin/pos/reports", "/admin/product-helper/products/export"];
|
|
75
|
+
/** Voids, refunds and returns: manager and owner. */
|
|
76
|
+
const MANAGER_ACTION_PATTERNS = [
|
|
77
|
+
/^\/admin\/pos\/orders\/[^/]+\/(cancel|returns)$/,
|
|
78
|
+
/^\/admin\/orders\/[^/]+\/(cancel|fulfillments\/[^/]+\/cancel)$/,
|
|
79
|
+
/^\/admin\/returns(\/|$)/,
|
|
80
|
+
/^\/admin\/refunds?(\/|$)/,
|
|
81
|
+
/^\/admin\/payments\/[^/]+\/refund$/,
|
|
82
|
+
/^\/admin\/claims(\/|$)/,
|
|
83
|
+
/^\/admin\/exchanges(\/|$)/,
|
|
84
|
+
];
|
|
85
|
+
const BOUND_KEYS = {
|
|
86
|
+
stock_location_id: ["location_id", "stock_location_id"],
|
|
87
|
+
sales_channel_id: ["sales_channel_id"],
|
|
88
|
+
region_id: ["region_id"],
|
|
89
|
+
};
|
|
90
|
+
function underPrefix(path, prefixes) {
|
|
91
|
+
return prefixes.some((p) => path === p || path.startsWith(`${p}/`));
|
|
92
|
+
}
|
|
93
|
+
function deny(message) {
|
|
94
|
+
return { status: 403, message, type: "POS_FORBIDDEN" };
|
|
95
|
+
}
|
|
96
|
+
function normalizePath(path) {
|
|
97
|
+
const clean = (path.split("?")[0] || "/").replace(/\/+$/, "");
|
|
98
|
+
return clean || "/";
|
|
99
|
+
}
|
|
100
|
+
/** Collect values for the given keys anywhere in a JSON body (bounded depth). */
|
|
101
|
+
function collectValues(body, keys, depth = 0, out = []) {
|
|
102
|
+
if (depth > 5 || body === null || typeof body !== "object")
|
|
103
|
+
return out;
|
|
104
|
+
if (Array.isArray(body)) {
|
|
105
|
+
for (const item of body)
|
|
106
|
+
collectValues(item, keys, depth + 1, out);
|
|
107
|
+
return out;
|
|
108
|
+
}
|
|
109
|
+
for (const [key, value] of Object.entries(body)) {
|
|
110
|
+
if (keys.includes(key) && typeof value === "string" && value)
|
|
111
|
+
out.push(value);
|
|
112
|
+
else if (value && typeof value === "object")
|
|
113
|
+
collectValues(value, keys, depth + 1, out);
|
|
114
|
+
}
|
|
115
|
+
return out;
|
|
116
|
+
}
|
|
117
|
+
function checkBindings(path, body, claims) {
|
|
118
|
+
for (const claimKey of Object.keys(BOUND_KEYS)) {
|
|
119
|
+
const bound = claims[claimKey];
|
|
120
|
+
if (!bound)
|
|
121
|
+
continue;
|
|
122
|
+
const values = collectValues(body, BOUND_KEYS[claimKey]);
|
|
123
|
+
if (claimKey === "stock_location_id") {
|
|
124
|
+
const m = path.match(/\/location-levels\/([^/]+)/);
|
|
125
|
+
if (m)
|
|
126
|
+
values.push(decodeURIComponent(m[1]));
|
|
127
|
+
}
|
|
128
|
+
const other = values.find((v) => v !== bound);
|
|
129
|
+
if (other) {
|
|
130
|
+
const label = claimKey.replace(/_id$/, "").replace(/_/g, " ");
|
|
131
|
+
return deny(`This POS session is limited to its assigned ${label}`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Decide whether a POS session may make this admin request.
|
|
138
|
+
* Returns null when allowed.
|
|
139
|
+
*/
|
|
140
|
+
function checkPosAccess(input) {
|
|
141
|
+
const method = input.method.toUpperCase();
|
|
142
|
+
const path = normalizePath(input.path);
|
|
143
|
+
const { claims } = input;
|
|
144
|
+
const write = WRITE_METHODS.has(method);
|
|
145
|
+
if (underPrefix(path, ALWAYS_BLOCKED)) {
|
|
146
|
+
if (method === "GET" && path === "/admin/users/me")
|
|
147
|
+
return null;
|
|
148
|
+
return deny("Not available from POS");
|
|
149
|
+
}
|
|
150
|
+
if (claims.role === "owner")
|
|
151
|
+
return null;
|
|
152
|
+
if (write && underPrefix(path, SETTINGS_WRITE_BLOCKED)) {
|
|
153
|
+
return deny("Only the store owner can change store settings");
|
|
154
|
+
}
|
|
155
|
+
if (claims.role === "cashier") {
|
|
156
|
+
if (underPrefix(path, MANAGER_READ_ONLY))
|
|
157
|
+
return deny("Reports need a manager");
|
|
158
|
+
if (write && underPrefix(path, MANAGER_WRITE_ONLY))
|
|
159
|
+
return deny("This action needs a manager");
|
|
160
|
+
if (write && MANAGER_ACTION_PATTERNS.some((re) => re.test(path))) {
|
|
161
|
+
return deny("Voids, returns and refunds need a manager");
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
if (write)
|
|
165
|
+
return checkBindings(path, input.body, claims);
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zLWFjY2Vzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlscy9wb3MtYWNjZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7O0FBb0JILHNDQU1DO0FBNkhELHdDQWdDQztBQXJLRCxNQUFNLEtBQUssR0FBYyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUE7QUFFeEQsU0FBZ0IsYUFBYSxDQUFDLFdBQW9CO0lBQ2hELE1BQU0sR0FBRyxHQUFJLFdBQTZDLEVBQUUsR0FBcUMsQ0FBQTtJQUNqRyxJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVE7UUFBRSxPQUFPLElBQUksQ0FBQTtJQUNoRCxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztRQUFFLE9BQU8sSUFBSSxDQUFBO0lBQ3RFLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVU7UUFBRSxPQUFPLElBQUksQ0FBQTtJQUNqRCxPQUFPLEdBQWdCLENBQUE7QUFDekIsQ0FBQztBQUVELE1BQU0sYUFBYSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQTtBQUVqRSw2REFBNkQ7QUFDN0QsTUFBTSxjQUFjLEdBQUc7SUFDckIsaUJBQWlCO0lBQ2pCLGdCQUFnQjtJQUNoQixjQUFjO0lBQ2Qsa0JBQWtCO0lBQ2xCLDZCQUE2QjtDQUM5QixDQUFBO0FBRUQsdUNBQXVDO0FBQ3ZDLE1BQU0sc0JBQXNCLEdBQUc7SUFDN0Isd0JBQXdCO0lBQ3hCLGdCQUFnQjtJQUNoQix1QkFBdUI7SUFDdkIsZUFBZTtJQUNmLGtCQUFrQjtJ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
|
|
@@ -4,6 +4,9 @@ exports.regionFallbackCountry = regionFallbackCountry;
|
|
|
4
4
|
exports.buildStoreShippingAddress = buildStoreShippingAddress;
|
|
5
5
|
exports.pickCustomerBillingAddress = pickCustomerBillingAddress;
|
|
6
6
|
exports.buildPosPaymentMetadata = buildPosPaymentMetadata;
|
|
7
|
+
exports.countPosOrderLineQty = countPosOrderLineQty;
|
|
8
|
+
exports.countPosOrderLineRows = countPosOrderLineRows;
|
|
9
|
+
exports.validatePosFinalizeCheckout = validatePosFinalizeCheckout;
|
|
7
10
|
exports.resolvePosPayableTotal = resolvePosPayableTotal;
|
|
8
11
|
exports.paymentCollectionNeedsMarkPaid = paymentCollectionNeedsMarkPaid;
|
|
9
12
|
exports.shouldApplyAutoPromotions = shouldApplyAutoPromotions;
|
|
@@ -93,7 +96,62 @@ function asAmount(value) {
|
|
|
93
96
|
const n = typeof value === "number" ? value : Number(value);
|
|
94
97
|
return Number.isFinite(n) ? n : 0;
|
|
95
98
|
}
|
|
96
|
-
|
|
99
|
+
function roundMoney2(value) {
|
|
100
|
+
return Math.round(value * 100) / 100;
|
|
101
|
+
}
|
|
102
|
+
function countPosOrderLineQty(order) {
|
|
103
|
+
const items = Array.isArray(order?.items) ? order.items : [];
|
|
104
|
+
return items.reduce((sum, item) => {
|
|
105
|
+
if (!isRecord(item))
|
|
106
|
+
return sum;
|
|
107
|
+
const qty = asAmount(item.quantity);
|
|
108
|
+
return sum + Math.max(0, Math.floor(qty));
|
|
109
|
+
}, 0);
|
|
110
|
+
}
|
|
111
|
+
/** At least one line row on the order (guards empty `items: []`). */
|
|
112
|
+
function countPosOrderLineRows(order) {
|
|
113
|
+
const items = Array.isArray(order?.items) ? order.items : [];
|
|
114
|
+
return items.filter((item) => isRecord(item)).length;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Block empty carts and client charged_total that does not match the server payable.
|
|
118
|
+
*/
|
|
119
|
+
function validatePosFinalizeCheckout(order, body) {
|
|
120
|
+
const lineRows = countPosOrderLineRows(order);
|
|
121
|
+
const itemCount = countPosOrderLineQty(order);
|
|
122
|
+
if (lineRows <= 0 || itemCount <= 0) {
|
|
123
|
+
return {
|
|
124
|
+
ok: false,
|
|
125
|
+
status: 400,
|
|
126
|
+
message: "Cannot complete a sale with no items in the cart.",
|
|
127
|
+
type: "EMPTY_CART",
|
|
128
|
+
code: "empty_cart",
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
const payable = roundMoney2(resolvePosPayableTotal(order));
|
|
132
|
+
if (payable <= 0) {
|
|
133
|
+
return {
|
|
134
|
+
ok: false,
|
|
135
|
+
status: 400,
|
|
136
|
+
message: "Cart total must be greater than zero before checkout.",
|
|
137
|
+
type: "INVALID_TOTAL",
|
|
138
|
+
code: "invalid_total",
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
if (typeof body.charged_total === "number" && body.charged_total > 0) {
|
|
142
|
+
const charged = roundMoney2(body.charged_total);
|
|
143
|
+
if (Math.abs(charged - payable) > 0.01) {
|
|
144
|
+
return {
|
|
145
|
+
ok: false,
|
|
146
|
+
status: 409,
|
|
147
|
+
message: `Charged amount (${charged}) does not match cart total (${payable}).`,
|
|
148
|
+
type: "TOTAL_MISMATCH",
|
|
149
|
+
code: "total_mismatch",
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return { ok: true, payable, itemCount };
|
|
154
|
+
}
|
|
97
155
|
function resolvePosPayableTotal(order) {
|
|
98
156
|
if (!order)
|
|
99
157
|
return 0;
|
|
@@ -174,4 +232,4 @@ function readAddress1(value) {
|
|
|
174
232
|
return "";
|
|
175
233
|
return typeof value.address_1 === "string" ? value.address_1.trim() : "";
|
|
176
234
|
}
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zLWZpbmFsaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3Bvcy1maW5hbGl6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdDQSxzREFNQztBQUVELDhEQWtDQztBQUVELGdFQW1DQztBQUVELDBEQWlEQztBQVFELHdEQWdEQztBQUVELHdFQUdDO0FBU0QsOERBRUM7QUFFRCxvQ0FJQztBQUVELG9DQUdDO0FBek5ELFNBQVMsUUFBUSxDQUFDLEtBQWM7SUFDOUIsT0FBTyxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQTtBQUM3RSxDQUFDO0FBRUQsU0FBZ0IscUJBQXFCLENBQ25DLE1BQXVFO0lBRXZFLE1BQU0sR0FBRyxHQUFHLE1BQU0sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEYsRUFBRSxLQUFLLENBQUE7SUFDVCxPQUFPLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0FBQ3BDLENBQUM7QUFFRCxTQUFnQix5QkFBeUIsQ0FDdkMsYUFXb0IsRUFDcEIsTUFBdUU7SUFFdkUsSUFBSSxDQUFDLGFBQWE7UUFBRSxPQUFPLElBQUksQ0FBQTtJQUUvQixNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFBO0lBQ2xDLE1BQU0sU0FBUyxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxPQUFPLENBQUE7SUFDbkUsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLFNBQVMsQ0FBQTtJQUM1RCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBRWxHLE9BQU87UUFDTCxVQUFVLEVBQUUsS0FBSztRQUNqQixTQUFTLEVBQUUsUUFBUTtRQUNuQixPQUFPLEVBQUUsU0FBUztRQUNsQixTQUFTLEVBQUUsUUFBUTtRQUNuQixTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxTQUFTO1FBQy9DLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLFNBQVM7UUFDckMsUUFBUSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksU0FBUztRQUM3QyxXQUFXLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsSUFBSSxTQUFTO1FBQ25ELFlBQVksRUFBRSxPQUFPO1FBQ3JCLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLFNBQVM7S0FDeEMsQ0FBQTtBQUNILENBQUM7QUFFRCxTQUFnQiwwQkFBMEIsQ0FDeEMsUUFNYSxFQUNiLFlBQXNDO0lBRXRDLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDOUUsTUFBTSxNQUFNLEdBQ1YsU0FBUyxDQUFDLElBQUksQ0FDWixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ1YsT0FBTyxDQUFDLGtCQUFrQixJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssUUFBUSxFQUFFLDBCQUEwQixDQUNwRixJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUVuQixJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sWUFBWSxJQUFJLFNBQVMsQ0FBQTtJQUU3QyxPQUFPO1FBQ0wsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLElBQUksU0FBUztRQUMxQyxTQUFTLEVBQUUsTUFBTSxDQUFDLFNBQVMsSUFBSSxTQUFTO1FBQ3hDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxJQUFJLFNBQVM7UUFDcEMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLElBQUksWUFBWSxFQUFFLFNBQVMsSUFBSSxPQUFPO1FBQ2pFLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUyxJQUFJLFNBQVM7UUFDeEMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLElBQUksU0FBUztRQUM1QyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksSUFBSSxTQUFTO1FBQzlCLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLFNBQVM7UUFDdEMsWUFBWSxFQUFFLENBQ1osTUFBTSxDQUFDLFlBQVk7WUFDbkIsWUFBWSxFQUFFLFlBQVk7WUFDMUIsSUFBSSxDQUNMLENBQUMsV0FBVyxFQUFFO1FBQ2YsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksU0FBUztLQUNqQyxDQUFBO0FBQ0gsQ0FBQztBQUVELFNBQWdCLHVCQUF1QixDQUFDLEtBYXZDO0lBQ0MsTUFBTSxTQUFTLEdBQ2IsT0FBTyxLQUFLLENBQUMsVUFBVSxLQUFLLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDdkUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxTQUFTLENBQUE7SUFDZixNQUFNLFVBQVUsR0FDZCxPQUFPLEtBQUssQ0FBQyxvQkFBb0IsS0FBSyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUM7UUFDM0YsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDckQsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUNmLE1BQU0sWUFBWSxHQUNoQixPQUFPLEtBQUssQ0FBQyxhQUFhLEtBQUssUUFBUSxJQUFJLEtBQUssQ0FBQyxhQUFhLEdBQUcsQ0FBQztRQUNoRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUc7UUFDN0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUNmLE1BQU0sZUFBZSxHQUNuQixPQUFPLEtBQUssQ0FBQyxnQkFBZ0IsS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLGdCQUFnQixHQUFHLENBQUM7UUFDdEUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUc7UUFDaEQsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUVmLE9BQU87UUFDTCxNQUFNLEVBQUUsS0FBSztRQUNiLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxjQUFjO1FBQ3hDLEdBQUcsQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDcEUsR0FBRyxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3RSxHQUFHLENBQUMsT0FBTyxLQUFLLENBQUMsYUFBYSxLQUFLLFFBQVEsSUFBSSxLQUFLLENBQUMsYUFBYSxHQUFHLENBQUM7WUFDcEUsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsRUFBRTtZQUNwRSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1AsZ0JBQWdCLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7UUFDMUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLEVBQUUsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pFLEdBQUcsQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN4RixHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDakUsR0FBRyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsZUFBZSxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BFLEdBQUcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuRixHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUM3RSxHQUFHLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxjQUFjLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMzRCxHQUFHLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSx3QkFBd0IsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ3hFLENBQUE7QUFDSCxDQUFDO0FBRUQsU0FBUyxRQUFRLENBQUMsS0FBYztJQUM5QixNQUFNLENBQUMsR0FBRyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzNELE9BQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDbkMsQ0FBQztBQUVELGtGQUFrRjtBQUNsRixTQUFnQixzQkFBc0IsQ0FBQyxLQUFpRDtJQUN0RixJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3BCLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDbkMsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQzNELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUNoRCxJQUFJLE9BQU8sR0FBRyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUE7SUFFdkQsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUMvQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDdkUsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUMzRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO1FBQzNDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1lBQUUsT0FBTyxHQUFHLENBQUE7UUFDL0IsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDeEMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO1FBQzdELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUE7UUFDbEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ2hFLE9BQU8sR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLENBQUE7SUFDekIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQ0wsTUFBTSxLQUFLLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQTtJQUV6RSxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUE7SUFDakIsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQUUsU0FBUTtRQUNqRSxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztnQkFBRSxTQUFRO1lBQzVCLE1BQU0sSUFBSSxHQUFHLE9BQU8sR0FBRyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtZQUN6RCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUM7Z0JBQUUsU0FBUTtZQUN6QyxTQUFTLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7UUFDN0MsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUE7SUFDZixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUE7SUFDdkMsSUFBSSxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNyQixJQUFJLE1BQU0sQ0FBQyxhQUFhLEtBQUssWUFBWSxFQUFFLENBQUM7WUFDMUMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtZQUMzQyxJQUFJLEdBQUcsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFBO1lBQ3pELENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLGNBQWMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDNUQsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDbEQsSUFBSSxHQUFHLElBQUksQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBQzFCLElBQUksS0FBSyxHQUFHLENBQUMsSUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFHLEtBQUs7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUNuRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFBO0FBQ3BFLENBQUM7QUFFRCxTQUFnQiw4QkFBOEIsQ0FBQyxNQUFzQjtJQUNuRSxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBQ3JELE9BQU8sVUFBVSxLQUFLLFdBQVcsSUFBSSxVQUFVLEtBQUssWUFBWSxJQUFJLFVBQVUsS0FBSyxVQUFVLENBQUE7QUFDL0YsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILFNBQWdCLHlCQUF5QixDQUFDLGtCQUEyQjtJQUNuRSxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUM7QUFFRCxTQUFnQixZQUFZLENBQUMsS0FBaUQ7SUFDNUUsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLEtBQUssQ0FBQTtJQUN4QixJQUFJLEtBQUssQ0FBQyxjQUFjLEtBQUssSUFBSTtRQUFFLE9BQU8sSUFBSSxDQUFBO0lBQzlDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssT0FBTyxDQUFBO0FBQzdELENBQUM7QUFFRCxTQUFnQixZQUFZLENBQUMsS0FBYztJQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFBO0lBQy9CLE9BQU8sT0FBTyxLQUFLLENBQUMsU0FBUyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0FBQzFFLENBQUMifQ==
|
|
235
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zLWZpbmFsaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3Bvcy1maW5hbGl6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdDQSxzREFNQztBQUVELDhEQWtDQztBQUVELGdFQW1DQztBQUVELDBEQWlEQztBQWdCRCxvREFPQztBQUdELHNEQUdDO0FBS0Qsa0VBeUNDO0FBRUQsd0RBZ0RDO0FBRUQsd0VBR0M7QUFTRCw4REFFQztBQUVELG9DQUlDO0FBRUQsb0NBR0M7QUE5UkQsU0FBUyxRQUFRLENBQUMsS0FBYztJQUM5QixPQUFPLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0FBQzdFLENBQUM7QUFFRCxTQUFnQixxQkFBcUIsQ0FDbkMsTUFBdUU7SUFFdkUsTUFBTSxHQUFHLEdBQUcsTUFBTSxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4RixFQUFFLEtBQUssQ0FBQTtJQUNULE9BQU8sQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7QUFDcEMsQ0FBQztBQUVELFNBQWdCLHlCQUF5QixDQUN2QyxhQVdvQixFQUNwQixNQUF1RTtJQUV2RSxJQUFJLENBQUMsYUFBYTtRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRS9CLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUE7SUFDbEMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLE9BQU8sQ0FBQTtJQUNuRSxNQUFNLFFBQVEsR0FB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
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.posStaffEmail = posStaffEmail;
|
|
4
|
+
exports.requireSecretKey = requireSecretKey;
|
|
5
|
+
/** POS staff users never sign in with a password, so the address only needs to be unique. */
|
|
6
|
+
function posStaffEmail(key) {
|
|
7
|
+
return `pos-staff+${key.toLowerCase()}@staff.pos.vyaparnext.com`;
|
|
8
|
+
}
|
|
9
|
+
function requireSecretKey(req, res) {
|
|
10
|
+
if (req.auth_context?.actor_type === "api-key")
|
|
11
|
+
return true;
|
|
12
|
+
res.status(403).json({ message: "Requires a secret API key", type: "POS_FORBIDDEN" });
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zLXN0YWZmLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3Bvcy1zdGFmZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUdBLHNDQUVDO0FBRUQsNENBSUM7QUFURCw2RkFBNkY7QUFDN0YsU0FBZ0IsYUFBYSxDQUFDLEdBQVc7SUFDdkMsT0FBTyxhQUFhLEdBQUcsQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLENBQUE7QUFDbEUsQ0FBQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLEdBQStCLEVBQUUsR0FBbUI7SUFDbkYsSUFBSSxHQUFHLENBQUMsWUFBWSxFQUFFLFVBQVUsS0FBSyxTQUFTO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFDM0QsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUE7SUFDckYsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDIn0=
|
package/README.md
CHANGED
|
@@ -39,6 +39,20 @@ All routes keep the `/admin/pos/*` paths used by the `medusa-pos` client.
|
|
|
39
39
|
| POST | `/admin/pos/orders/:id/returns` | POS return (`cash` / `wallet` / `gift_card`) |
|
|
40
40
|
| POST | `/admin/pos/orders/:id/cancel` | Void sale (full return + cash; `pos_voided`) |
|
|
41
41
|
| … | `/admin/pos/*` | Finalize, payments, catalog, etc. |
|
|
42
|
+
| POST | `/admin/pos/staff` | Upsert the Medusa user for an app.VyaparNext POS staff member (secret API key only) |
|
|
43
|
+
| DELETE | `/admin/pos/staff/:key` | Remove that user (secret API key only) |
|
|
44
|
+
|
|
45
|
+
## app.VyaparNext POS sign-in (0.0.24+)
|
|
46
|
+
|
|
47
|
+
The POS signs in to app.VyaparNext, not to Medusa. The deployer mints a short-lived admin JWT (signed with the store's `JWT_SECRET`) for the chosen staff member, with a `pos` claim carrying the role and the till's assigned stock location, sales channel and region.
|
|
48
|
+
|
|
49
|
+
A middleware on `/admin/*` enforces that claim on every request:
|
|
50
|
+
|
|
51
|
+
- **All POS roles** — no API keys, invites, user management, `/admin/pos/staff`, or workflow executions.
|
|
52
|
+
- **Manager / cashier** — cannot change store settings (locations, regions, channels, tax, shipping, …). Any `location_id` / `stock_location_id` / `sales_channel_id` / `region_id` in a write must match the assigned one.
|
|
53
|
+
- **Cashier** — additionally no catalog, pricing, promotion or inventory edits, no analytics/reports, and no voids, returns, refunds, claims or exchanges.
|
|
54
|
+
|
|
55
|
+
Requests without a `pos` claim (normal admin logins, API keys) are not affected. Finalized POS orders record `pos_staff_id`, `pos_staff_role` and `pos_terminal_id` in metadata.
|
|
42
56
|
|
|
43
57
|
## Inventory & fulfillment on finalize
|
|
44
58
|
|
package/package.json
CHANGED