@zaamx/netme-pos 0.0.15 → 0.0.18

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 (35) hide show
  1. package/.medusa/server/src/admin/index.js +216 -216
  2. package/.medusa/server/src/admin/index.mjs +220 -220
  3. package/.medusa/server/src/api/admin/orders/sales/pending-by-location/route.js +152 -0
  4. package/.medusa/server/src/api/admin/orders/sales/route.js +398 -0
  5. package/.medusa/server/src/api/middlewares.js +168 -1
  6. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/convert-to-order/route.js +37 -0
  7. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/confirm/route.js +20 -0
  8. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/items/[action_id]/route.js +74 -0
  9. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/items/item/[item_id]/route.js +41 -0
  10. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/items/route.js +31 -0
  11. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/promotions/route.js +31 -0
  12. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/request/route.js +16 -0
  13. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/route.js +32 -0
  14. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/shipping-methods/[action_id]/route.js +32 -0
  15. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/shipping-methods/method/[method_id]/route.js +30 -0
  16. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/edit/shipping-methods/route.js +19 -0
  17. package/.medusa/server/src/api/store/netme-pos/draft-orders/[id]/route.js +63 -0
  18. package/.medusa/server/src/api/store/netme-pos/draft-orders/guards.js +77 -0
  19. package/.medusa/server/src/api/store/netme-pos/draft-orders/helpers.js +19 -0
  20. package/.medusa/server/src/api/store/netme-pos/draft-orders/pricing.js +136 -0
  21. package/.medusa/server/src/api/store/netme-pos/draft-orders/query-config.js +60 -0
  22. package/.medusa/server/src/api/store/netme-pos/draft-orders/route.js +140 -0
  23. package/.medusa/server/src/api/store/netme-pos/draft-orders/validators.js +217 -0
  24. package/.medusa/server/src/api/store/netme-pos/fulfillment-validators.js +74 -0
  25. package/.medusa/server/src/api/store/netme-pos/payment-collections/[id]/mark-as-paid/route.js +34 -0
  26. package/.medusa/server/src/api/store/netme-pos/payment-collections/[id]/payment-sessions/route.js +28 -0
  27. package/.medusa/server/src/api/store/netme-pos/payment-collections/guards.js +27 -0
  28. package/.medusa/server/src/api/store/netme-pos/products/[id]/route.js +10 -0
  29. package/.medusa/server/src/api/store/netme-pos/products/route.js +14 -0
  30. package/.medusa/server/src/api/store/netme-pos/scope.js +106 -0
  31. package/.medusa/server/src/api/store/netme-pos/shipping-options/route.js +100 -0
  32. package/.medusa/server/src/api/store/netme-pos/stock-locations/route.js +45 -0
  33. package/.medusa/server/src/links/agent-draft-order.js +31 -0
  34. package/.medusa/server/src/workflows/ensure-agent-can-act-for/index.js +36 -0
  35. package/package.json +1 -1
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = GET;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const scope_1 = require("../scope");
6
+ /**
7
+ * `GET /store/netme-pos/shipping-options` — store clone of
8
+ * `GET /admin/shipping-options` (same params, default fields and response
9
+ * `{ shipping_options, count, offset, limit }`). The POS uses it as
10
+ * `?stock_location_id=<id>&fields=id,name,price_type,*prices,service_zone.fulfillment_set.type`.
11
+ *
12
+ * Differences with the admin list, so an agent only sees options it can sell:
13
+ * - limited to stock locations of the publishable key's sales channels;
14
+ * - excludes return options and options not enabled in store.
15
+ */
16
+ const ruleValue = (value) => {
17
+ if (typeof value !== "string") {
18
+ return value;
19
+ }
20
+ try {
21
+ return JSON.parse(value);
22
+ }
23
+ catch {
24
+ return value;
25
+ }
26
+ };
27
+ const hasRule = (option, attribute, expected) => (option.rules ?? []).some((r) => r?.attribute === attribute &&
28
+ r?.operator === "eq" &&
29
+ String(ruleValue(r.value)) === String(expected));
30
+ async function GET(req, res) {
31
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
32
+ const pagination = req.queryConfig.pagination;
33
+ const empty = () => res.json({
34
+ shipping_options: [],
35
+ count: 0,
36
+ offset: pagination.skip ?? 0,
37
+ limit: pagination.take ?? 50,
38
+ });
39
+ const allowedLocationIds = (await (0, scope_1.listStockLocationsForChannels)(req.scope, (0, scope_1.getKeySalesChannelIds)(req))).map((l) => l.id);
40
+ const { stock_location_id: requestedLocations, id: requestedIds, ...otherFilters } = req.filterableFields;
41
+ let locationIds = allowedLocationIds;
42
+ if (requestedLocations) {
43
+ const asked = Array.isArray(requestedLocations)
44
+ ? requestedLocations
45
+ : [requestedLocations];
46
+ locationIds = locationIds.filter((id) => asked.includes(id));
47
+ }
48
+ if (!locationIds.length) {
49
+ empty();
50
+ return;
51
+ }
52
+ // Options served from those locations (location → fulfillment sets → zones).
53
+ const { data: locations } = await query.graph({
54
+ entity: "stock_location",
55
+ filters: { id: locationIds },
56
+ fields: ["id", "fulfillment_sets.service_zones.shipping_options.id"],
57
+ });
58
+ let optionIds = [
59
+ ...new Set(locations
60
+ .flatMap((l) => l.fulfillment_sets ?? [])
61
+ .flatMap((fs) => fs?.service_zones ?? [])
62
+ .flatMap((sz) => sz?.shipping_options ?? [])
63
+ .map((so) => so?.id)
64
+ .filter(Boolean)),
65
+ ];
66
+ if (requestedIds) {
67
+ const asked = Array.isArray(requestedIds) ? requestedIds : [requestedIds];
68
+ optionIds = optionIds.filter((id) => asked.includes(id));
69
+ }
70
+ if (!optionIds.length) {
71
+ empty();
72
+ return;
73
+ }
74
+ // Drop return / not-enabled-in-store options before paginating.
75
+ const { data: withRules } = await query.graph({
76
+ entity: "shipping_option",
77
+ filters: { id: optionIds },
78
+ fields: ["id", "rules.attribute", "rules.operator", "rules.value"],
79
+ });
80
+ const sellableIds = withRules
81
+ .filter((o) => !hasRule(o, "is_return", true) && !hasRule(o, "enabled_in_store", false))
82
+ .map((o) => o.id);
83
+ if (!sellableIds.length) {
84
+ empty();
85
+ return;
86
+ }
87
+ const { data: shipping_options, metadata } = await query.graph({
88
+ entity: "shipping_option",
89
+ filters: { ...otherFilters, id: sellableIds },
90
+ fields: req.queryConfig.fields,
91
+ pagination: req.queryConfig.pagination,
92
+ });
93
+ res.json({
94
+ shipping_options,
95
+ count: metadata?.count ?? shipping_options.length,
96
+ offset: metadata?.skip ?? 0,
97
+ limit: metadata?.take ?? shipping_options.length,
98
+ });
99
+ }
100
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL25ldG1lLXBvcy9zaGlwcGluZy1vcHRpb25zL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBd0NBLGtCQTRGQztBQWhJRCxxREFBcUU7QUFDckUsb0NBR2lCO0FBRWpCOzs7Ozs7Ozs7R0FTRztBQUVILE1BQU0sU0FBUyxHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUU7SUFDbkMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFDRCxJQUFJLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDMUIsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztBQUNILENBQUMsQ0FBQTtBQUVELE1BQU0sT0FBTyxHQUFHLENBQUMsTUFBVyxFQUFFLFNBQWlCLEVBQUUsUUFBaUIsRUFBRSxFQUFFLENBQ3BFLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3ZCLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FDVCxDQUFDLEVBQUUsU0FBUyxLQUFLLFNBQVM7SUFDMUIsQ0FBQyxFQUFFLFFBQVEsS0FBSyxJQUFJO0lBQ3BCLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUNsRCxDQUFBO0FBRUksS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUErQixFQUFFLEdBQW1CO0lBQzVFLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2hFLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxXQUFX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
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = GET;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const scope_1 = require("../scope");
6
+ /**
7
+ * `GET /store/netme-pos/stock-locations` — store clone of
8
+ * `GET /admin/stock-locations` (same params, default fields and response
9
+ * `{ stock_locations, count, offset, limit }`), limited to the stock locations
10
+ * of the publishable key's sales channels. The POS uses it with
11
+ * `fields=id,name,address.*`.
12
+ */
13
+ async function GET(req, res) {
14
+ const allowed = await (0, scope_1.listStockLocationsForChannels)(req.scope, (0, scope_1.getKeySalesChannelIds)(req));
15
+ let ids = allowed.map((l) => l.id);
16
+ const requested = req.filterableFields.id;
17
+ if (requested) {
18
+ const asked = Array.isArray(requested) ? requested : [requested];
19
+ ids = ids.filter((id) => asked.includes(id));
20
+ }
21
+ const pagination = req.queryConfig.pagination;
22
+ if (!ids.length) {
23
+ res.json({
24
+ stock_locations: [],
25
+ count: 0,
26
+ offset: pagination.skip ?? 0,
27
+ limit: pagination.take ?? 50,
28
+ });
29
+ return;
30
+ }
31
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
32
+ const { data: stock_locations, metadata } = await query.graph({
33
+ entity: "stock_location",
34
+ filters: { ...req.filterableFields, id: ids },
35
+ fields: req.queryConfig.fields,
36
+ pagination: req.queryConfig.pagination,
37
+ });
38
+ res.json({
39
+ stock_locations,
40
+ count: metadata?.count ?? stock_locations.length,
41
+ offset: metadata?.skip ?? 0,
42
+ limit: metadata?.take ?? stock_locations.length,
43
+ });
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL25ldG1lLXBvcy9zdG9jay1sb2NhdGlvbnMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQkEsa0JBMENDO0FBdkRELHFEQUFxRTtBQUNyRSxvQ0FHaUI7QUFFakI7Ozs7OztHQU1HO0FBQ0ksS0FBSyxVQUFVLEdBQUcsQ0FBQyxHQUErQixFQUFFLEdBQW1CO0lBQzVFLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSxxQ0FBNkIsRUFDakQsR0FBRyxDQUFDLEtBQUssRUFDVCxJQUFBLDZCQUFxQixFQUFDLEdBQUcsQ0FBQyxDQUMzQixDQUFBO0lBQ0QsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBRWxDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFtQyxDQUFBO0lBQzFFLElBQUksU0FBUyxFQUFFLENBQUM7UUFDZCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDaEUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUM5QyxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUdsQyxDQUFBO0lBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQixHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ1AsZUFBZSxFQUFFLEVBQUU7WUFDbkIsS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLEVBQUUsVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDO1lBQzVCLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUU7U0FDN0IsQ0FBQyxDQUFBO1FBQ0YsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDNUQsTUFBTSxFQUFFLGdCQUFnQjtRQUN4QixPQUFPLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFO1FBQzdDLE1BQU0sRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU07UUFDOUIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVTtLQUN2QyxDQUFDLENBQUE7SUFFRixHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1AsZUFBZTtRQUNmLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxJQUFJLGVBQWUsQ0FBQyxNQUFNO1FBQ2hELE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUM7UUFDM0IsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLElBQUksZUFBZSxDQUFDLE1BQU07S0FDaEQsQ0FBQyxDQUFBO0FBQ0osQ0FBQyJ9
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const customer_1 = __importDefault(require("@medusajs/medusa/customer"));
8
+ const order_1 = __importDefault(require("@medusajs/medusa/order"));
9
+ /**
10
+ * Attribution link (spec §3.1 option B): agent (customer) ↔ draft order.
11
+ *
12
+ * Source of truth for "which agent created/owns this draft order". Created in
13
+ * `POST /store/netme-pos/draft-orders` and used by `ensureDraftOrderAgent` and
14
+ * the agent's list route.
15
+ *
16
+ * Custom aliases (`agent` / `draft_order`) instead of the defaults
17
+ * (`customer` / `order`): in 2.14.2 the graph `extends` this link generates
18
+ * would otherwise collide with the native `order.customer` / `customer.orders`
19
+ * aliases. With these aliases the graph gains:
20
+ * - `order.agent` → the agent customer (single)
21
+ * - `customer.draft_orders` → the agent's draft orders (list)
22
+ * - entryPoint `agent_draft_order` (queryable link table)
23
+ *
24
+ * After deploying: `npx medusa db:migrate` creates the pivot table
25
+ * `mlm_agent_draft_order`.
26
+ */
27
+ exports.default = (0, utils_1.defineLink)({ linkable: { ...customer_1.default.linkable.customer.toJSON(), alias: "agent" } }, {
28
+ linkable: { ...order_1.default.linkable.order.toJSON(), alias: "draft_order" },
29
+ isList: true,
30
+ }, { database: { table: "mlm_agent_draft_order" } });
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtZHJhZnQtb3JkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGlua3MvYWdlbnQtZHJhZnQtb3JkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxREFBc0Q7QUFDdEQseUVBQXNEO0FBQ3RELG1FQUFnRDtBQUVoRDs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxrQkFBZSxJQUFBLGtCQUFVLEVBQ3ZCLEVBQUUsUUFBUSxFQUFFLEVBQUUsR0FBRyxrQkFBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQzlFO0lBQ0UsUUFBUSxFQUFFLEVBQUUsR0FBRyxlQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFO0lBQzFFLE1BQU0sRUFBRSxJQUFJO0NBQ2IsRUFDRCxFQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxFQUFFLENBQ2pELENBQUEifQ==
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ensureAgentCanActForWorkflow = exports.ensureAgentCanActForWorkflowId = exports.ensureAgentCanActForStep = exports.ensureAgentCanActForStepId = exports.ensureAgentCanActFor = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
6
+ const ensureAgentCanActFor = async (container, { agent_customer_id, target_customer_id }) => {
7
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
8
+ const { data: customers } = await query.graph({
9
+ entity: "customer",
10
+ filters: {
11
+ id: [...new Set([agent_customer_id, target_customer_id])],
12
+ },
13
+ fields: ["id", "email", "groups.id"],
14
+ });
15
+ const agent = customers.find((c) => c.id === agent_customer_id);
16
+ const target = customers.find((c) => c.id === target_customer_id);
17
+ if (!agent) {
18
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.UNAUTHORIZED, `Agent customer ${agent_customer_id} was not found`);
19
+ }
20
+ if (!target) {
21
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Customer ${target_customer_id} was not found`);
22
+ }
23
+ return { agent, target };
24
+ };
25
+ exports.ensureAgentCanActFor = ensureAgentCanActFor;
26
+ exports.ensureAgentCanActForStepId = "netme-pos-ensure-agent-can-act-for";
27
+ exports.ensureAgentCanActForStep = (0, workflows_sdk_1.createStep)(exports.ensureAgentCanActForStepId, async (input, { container }) => {
28
+ const result = await (0, exports.ensureAgentCanActFor)(container, input);
29
+ return new workflows_sdk_1.StepResponse(result);
30
+ });
31
+ exports.ensureAgentCanActForWorkflowId = "netme-pos-ensure-agent-can-act-for-workflow";
32
+ exports.ensureAgentCanActForWorkflow = (0, workflows_sdk_1.createWorkflow)(exports.ensureAgentCanActForWorkflowId, function (input) {
33
+ const result = (0, exports.ensureAgentCanActForStep)(input);
34
+ return new workflows_sdk_1.WorkflowResponse(result);
35
+ });
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL2Vuc3VyZS1hZ2VudC1jYW4tYWN0LWZvci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFHa0M7QUFDbEMscUVBTTBDO0FBMEJuQyxNQUFNLG9CQUFvQixHQUFHLEtBQUssRUFDdkMsU0FBMEIsRUFDMUIsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBNkIsRUFDL0IsRUFBRTtJQUN2QyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRWhFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQzVDLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLE9BQU8sRUFBRTtZQUNQLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxpQkFBaUIsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7U0FDMUQ7UUFDRCxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFdBQVcsQ0FBQztLQUNyQyxDQUFDLENBQUE7SUFFRixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLGlCQUFpQixDQUFDLENBQUE7SUFDcEUsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxrQkFBa0IsQ0FBQyxDQUFBO0lBRXRFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLGtCQUFrQixpQkFBaUIsZ0JBQWdCLENBQ3BELENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsWUFBWSxrQkFBa0IsZ0JBQWdCLENBQy9DLENBQUE7SUFDSCxDQUFDO0lBRUQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQTtBQUMxQixDQUFDLENBQUE7QUFoQ1ksUUFBQSxvQkFBb0Isd0JBZ0NoQztBQUVZLFFBQUEsMEJBQTBCLEdBQUcsb0NBQW9DLENBQUE7QUFFakUsUUFBQSx3QkFBd0IsR0FBRyxJQUFBLDBCQUFVLEVBQ2hELGtDQUEwQixFQUMxQixLQUFLLEVBQUUsS0FBZ0MsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDeEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLDRCQUFvQixFQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUMzRCxPQUFPLElBQUksNEJBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNqQyxDQUFDLENBQ0YsQ0FBQTtBQUVZLFFBQUEsOEJBQThCLEdBQ3pDLDZDQUE2QyxDQUFBO0FBRWxDLFFBQUEsNEJBQTRCLEdBQUcsSUFBQSw4QkFBYyxFQUN4RCxzQ0FBOEIsRUFDOUIsVUFBVSxLQUE4QztJQUN0RCxNQUFNLE1BQU0sR0FBRyxJQUFBLGdDQUF3QixFQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzlDLE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNyQyxDQUFDLENBQ0YsQ0FBQSJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zaamx/netme-pos",
3
- "version": "0.0.15",
3
+ "version": "0.0.18",
4
4
  "description": "A starter for Medusa plugins.",
5
5
  "author": "Medusa (https://medusajs.com)",
6
6
  "license": "MIT",