@zaamx/netme-pos 0.0.7 → 0.0.9

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,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const helpers_1 = require("../helpers");
6
+ /**
7
+ * Admin clone of `GET /store/products/:id` — single product with the same
8
+ * region/customer/sales-channel pricing context as the listing.
9
+ */
10
+ const GET = async (req, res) => {
11
+ const withInventoryQuantity = req.queryConfig.fields.some((field) => field.includes("variants.inventory_quantity"));
12
+ if (withInventoryQuantity) {
13
+ req.queryConfig.fields = req.queryConfig.fields.filter((field) => !field.includes("variants.inventory_quantity"));
14
+ }
15
+ const filters = {
16
+ id: req.params.id,
17
+ ...req.filterableFields,
18
+ };
19
+ const context = {};
20
+ if (req.pricingContext) {
21
+ context["variants"] ??= {};
22
+ context["variants"]["calculated_price"] ??= (0, utils_1.QueryContext)(req.pricingContext);
23
+ }
24
+ const includesCategoriesField = req.queryConfig.fields.some((field) => field.startsWith("categories"));
25
+ if (!req.queryConfig.fields.includes("categories.is_internal")) {
26
+ req.queryConfig.fields.push("categories.is_internal");
27
+ }
28
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
29
+ const { data: products } = await query.graph({
30
+ entity: "product",
31
+ filters,
32
+ context,
33
+ fields: req.queryConfig.fields,
34
+ }, {
35
+ locale: req.locale,
36
+ });
37
+ const product = products[0];
38
+ if (!product) {
39
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Product with id: ${req.params.id} was not found`);
40
+ }
41
+ if (withInventoryQuantity) {
42
+ await (0, helpers_1.wrapVariantsWithInventoryQuantity)(req, product.variants || [], (0, helpers_1.getSingleSalesChannelId)(req));
43
+ }
44
+ if (includesCategoriesField) {
45
+ (0, helpers_1.filterOutInternalProductCategories)([product]);
46
+ }
47
+ await (0, helpers_1.wrapProductsWithTaxPrices)(req, [product]);
48
+ res.json({ product });
49
+ };
50
+ exports.GET = GET;
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL25ldG1lLXBvcy9wcm9kdWN0cy9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUlrQztBQUNsQyx3Q0FNbUI7QUFFbkI7OztHQUdHO0FBQ0ksTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQXVCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3hFLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDbEUsS0FBSyxDQUFDLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUM5QyxDQUFBO0lBRUQsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQzFCLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FDcEQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUMxRCxDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFXO1FBQ3RCLEVBQUUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDakIsR0FBRyxHQUFHLENBQUMsZ0JBQWdCO0tBQ3hCLENBQUE7SUFFRCxNQUFNLE9BQU8sR0FBd0IsRUFBRSxDQUFBO0lBQ3ZDLElBQUksR0FBRyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDMUIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEtBQUssSUFBQSxvQkFBWSxFQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUM5RSxDQUFDO0lBRUQsTUFBTSx1QkFBdUIsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNwRSxLQUFLLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUMvQixDQUFBO0lBRUQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUM7UUFDL0QsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUE7SUFDdkQsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRWhFLE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUMxQztRQUNFLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLE9BQU87UUFDUCxPQUFPO1FBQ1AsTUFBTSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTtLQUMvQixFQUNEO1FBQ0UsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO0tBQ25CLENBQ0YsQ0FBQTtJQUVELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUUzQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUMzQixvQkFBb0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQixDQUNsRCxDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUkscUJBQXFCLEVBQUUsQ0FBQztRQUMxQixNQUFNLElBQUEsMkNBQWlDLEVBQ3JDLEdBQUcsRUFDSCxPQUFPLENBQUMsUUFBUSxJQUFJLEVBQUUsRUFDdEIsSUFBQSxpQ0FBdUIsRUFBQyxHQUFHLENBQUMsQ0FDN0IsQ0FBQTtJQUNILENBQUM7SUFFRCxJQUFJLHVCQUF1QixFQUFFLENBQUM7UUFDNUIsSUFBQSw0Q0FBa0MsRUFBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7SUFDL0MsQ0FBQztJQUVELE1BQU0sSUFBQSxtQ0FBeUIsRUFBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO0lBQy9DLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0FBQ3ZCLENBQUMsQ0FBQTtBQW5FWSxRQUFBLEdBQUcsT0FtRWYifQ==
@@ -0,0 +1,226 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_PRICE_FIELD_PATHS = void 0;
4
+ exports.normalizeDataForContext = normalizeDataForContext;
5
+ exports.setPricingContextFromCustomer = setPricingContextFromCustomer;
6
+ exports.setTaxContext = setTaxContext;
7
+ exports.applyDefaultProductStatus = applyDefaultProductStatus;
8
+ exports.applyMaybeLinkFilterIfNecessary = applyMaybeLinkFilterIfNecessary;
9
+ const http_1 = require("@medusajs/framework/http");
10
+ const utils_1 = require("@medusajs/framework/utils");
11
+ /**
12
+ * Admin-side ports of the store product context middlewares.
13
+ *
14
+ * `normalizeDataForContext` and `setTaxContext` are copied verbatim from
15
+ * Medusa (they only read region/cart/country from `filterableFields`, with no
16
+ * dependency on the customer token or publishable key).
17
+ *
18
+ * `setPricingContextFromCustomer` is the adapted version of the store's
19
+ * `setPricingContext`: it resolves customer-group pricing from the
20
+ * `?customer=cus_...` query param instead of `req.auth_context.actor_id`.
21
+ *
22
+ * `applyDefaultProductStatus` and `applyMaybeLinkFilterIfNecessary` adapt the
23
+ * store's defaults to admin (status is overridable; sales channel is optional).
24
+ */
25
+ exports.DEFAULT_PRICE_FIELD_PATHS = ["variants.calculated_price"];
26
+ // ---------------------------------------------------------------------------
27
+ // normalizeDataForContext — verbatim port
28
+ // Resolves region_id from: region_id param → cart → store default.
29
+ // ---------------------------------------------------------------------------
30
+ function normalizeDataForContext(options = {}) {
31
+ const { priceFieldPaths = exports.DEFAULT_PRICE_FIELD_PATHS } = options;
32
+ return async (req, _, next) => {
33
+ let withCalculatedPrice = false;
34
+ req.queryConfig.fields = req.queryConfig.fields.map((field) => {
35
+ for (const pricePath of priceFieldPaths) {
36
+ if (field === pricePath) {
37
+ withCalculatedPrice = true;
38
+ return `${pricePath}.*`;
39
+ }
40
+ if (field.startsWith(`${pricePath}.`)) {
41
+ withCalculatedPrice = true;
42
+ return field;
43
+ }
44
+ }
45
+ return field;
46
+ });
47
+ if (!withCalculatedPrice && req.filterableFields.region_id) {
48
+ for (const pricePath of priceFieldPaths) {
49
+ const wildcardField = `${pricePath}.*`;
50
+ if (!req.queryConfig.fields.includes(wildcardField)) {
51
+ req.queryConfig.fields.push(wildcardField);
52
+ }
53
+ }
54
+ withCalculatedPrice = priceFieldPaths.length > 0;
55
+ }
56
+ if (!withCalculatedPrice) {
57
+ return next();
58
+ }
59
+ let regionId = req.filterableFields.region_id;
60
+ let countryCode = req.filterableFields.country_code;
61
+ let province = req.filterableFields.province;
62
+ if (req.filterableFields.cart_id) {
63
+ const cart = await (0, http_1.refetchEntity)({
64
+ entity: "cart",
65
+ idOrFilter: req.filterableFields.cart_id,
66
+ scope: req.scope,
67
+ fields: ["region_id", "shipping_address.*"],
68
+ });
69
+ if (cart?.region_id) {
70
+ regionId = cart.region_id;
71
+ }
72
+ if (cart?.shipping_address) {
73
+ countryCode = cart.shipping_address.country_code;
74
+ province = cart.shipping_address.province;
75
+ }
76
+ }
77
+ if (!regionId) {
78
+ const { data: stores } = await (0, http_1.refetchEntities)({
79
+ entity: "store",
80
+ scope: req.scope,
81
+ fields: ["id", "default_region_id"],
82
+ options: { cache: { enable: true } },
83
+ });
84
+ regionId = stores[0]?.default_region_id;
85
+ }
86
+ if (!regionId) {
87
+ try {
88
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Missing required pricing context to calculate prices - provide region_id (or cart_id, or configure a store default region)`);
89
+ }
90
+ catch (e) {
91
+ return next(e);
92
+ }
93
+ }
94
+ req.filterableFields.region_id = regionId;
95
+ req.filterableFields.country_code = countryCode;
96
+ req.filterableFields.province = province;
97
+ return next();
98
+ };
99
+ }
100
+ // ---------------------------------------------------------------------------
101
+ // setPricingContextFromCustomer — adapted from store `setPricingContext`.
102
+ // Customer comes from `?customer=cus_...` instead of the customer token.
103
+ // ---------------------------------------------------------------------------
104
+ function setPricingContextFromCustomer(options = {}) {
105
+ const { priceFieldPaths = exports.DEFAULT_PRICE_FIELD_PATHS } = options;
106
+ return async (req, _, next) => {
107
+ const withCalculatedPrice = req.queryConfig.fields.some((field) => priceFieldPaths.some((pricePath) => field === pricePath || field.startsWith(`${pricePath}.`)));
108
+ if (!withCalculatedPrice) {
109
+ return next();
110
+ }
111
+ const region = await (0, http_1.refetchEntity)({
112
+ entity: "region",
113
+ idOrFilter: req.filterableFields.region_id,
114
+ scope: req.scope,
115
+ fields: ["id", "currency_code"],
116
+ options: { cache: { enable: true } },
117
+ });
118
+ if (!region) {
119
+ try {
120
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Region with id ${req.filterableFields.region_id} not found when populating the pricing context`);
121
+ }
122
+ catch (e) {
123
+ return next(e);
124
+ }
125
+ }
126
+ const pricingContext = {
127
+ region_id: region.id,
128
+ currency_code: region.currency_code,
129
+ };
130
+ // Admin: resolve customer groups from the `?customer=cus_...` param.
131
+ const customerId = req.filterableFields.customer;
132
+ if (customerId) {
133
+ const { data: customerGroups } = await (0, http_1.refetchEntities)({
134
+ entity: "customer_group",
135
+ idOrFilter: { customers: { id: customerId } },
136
+ scope: req.scope,
137
+ fields: ["id"],
138
+ });
139
+ pricingContext.customer = { groups: [] };
140
+ customerGroups.map((cg) => pricingContext.customer.groups.push({ id: cg.id }));
141
+ }
142
+ req.pricingContext = pricingContext;
143
+ return next();
144
+ };
145
+ }
146
+ // ---------------------------------------------------------------------------
147
+ // setTaxContext — verbatim port
148
+ // ---------------------------------------------------------------------------
149
+ function setTaxContext(options = {}) {
150
+ const { priceFieldPaths = exports.DEFAULT_PRICE_FIELD_PATHS } = options;
151
+ return async (req, _, next) => {
152
+ const withCalculatedPrice = req.queryConfig.fields.some((field) => priceFieldPaths.some((pricePath) => field === pricePath || field.startsWith(`${pricePath}.`)));
153
+ if (!withCalculatedPrice) {
154
+ return next();
155
+ }
156
+ try {
157
+ const region = await (0, http_1.refetchEntity)({
158
+ entity: "region",
159
+ idOrFilter: req.filterableFields.region_id,
160
+ scope: req.scope,
161
+ fields: ["automatic_taxes"],
162
+ });
163
+ if (!region) {
164
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Region with id ${req.filterableFields.region_id} not found when populating the tax context`);
165
+ }
166
+ const inclusivity = { automaticTaxes: region.automatic_taxes };
167
+ if (!inclusivity.automaticTaxes) {
168
+ return next();
169
+ }
170
+ let taxLinesContext = undefined;
171
+ if (req.filterableFields.country_code) {
172
+ taxLinesContext = {
173
+ address: {
174
+ country_code: req.filterableFields.country_code,
175
+ province_code: req.filterableFields.province,
176
+ },
177
+ locale: req.locale,
178
+ };
179
+ }
180
+ req.taxContext = {
181
+ taxLineContext: taxLinesContext,
182
+ taxInclusivityContext: inclusivity,
183
+ };
184
+ return next();
185
+ }
186
+ catch (e) {
187
+ next(e);
188
+ }
189
+ };
190
+ }
191
+ // ---------------------------------------------------------------------------
192
+ // applyDefaultProductStatus — admin default: published unless caller filters.
193
+ // (Store unconditionally forces PUBLISHED; admin keeps it overridable.)
194
+ // ---------------------------------------------------------------------------
195
+ function applyDefaultProductStatus() {
196
+ return async (req, _, next) => {
197
+ if (!(0, utils_1.isPresent)(req.filterableFields.status)) {
198
+ req.filterableFields.status = utils_1.ProductStatus.PUBLISHED;
199
+ }
200
+ return next();
201
+ };
202
+ }
203
+ // ---------------------------------------------------------------------------
204
+ // applyMaybeLinkFilterIfNecessary — store port without the index-engine branch.
205
+ // Transforms `sales_channel_id` into a link filter when there is >1 channel.
206
+ // No-op when `sales_channel_id` is absent (admin sees all channels).
207
+ // ---------------------------------------------------------------------------
208
+ async function applyMaybeLinkFilterIfNecessary(req, res, next) {
209
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
210
+ const salesChannelsQueryRes = await query.graph({
211
+ entity: "sales_channels",
212
+ fields: ["id"],
213
+ pagination: { skip: 0, take: 1 },
214
+ });
215
+ const salesChannelCount = salesChannelsQueryRes.metadata?.count ?? 0;
216
+ if (!(salesChannelCount > 1)) {
217
+ delete req.filterableFields.sales_channel_id;
218
+ return next();
219
+ }
220
+ return (0, http_1.maybeApplyLinkFilter)({
221
+ entryPoint: "product_sales_channel",
222
+ resourceId: "product_id",
223
+ filterableField: "sales_channel_id",
224
+ })(req, res, next);
225
+ }
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1taWRkbGV3YXJlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vbmV0bWUtcG9zL3Byb2R1Y3RzL2NvbnRleHQtbWlkZGxld2FyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBOENBLDBEQXNGQztBQU1ELHNFQTREQztBQUtELHNDQXlEQztBQU1ELDhEQVdDO0FBT0QsMEVBdUJDO0FBblRELG1EQU9pQztBQUNqQyxxREFLa0M7QUFFbEM7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUVVLFFBQUEseUJBQXlCLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFBO0FBWXRFLDhFQUE4RTtBQUM5RSwwQ0FBMEM7QUFDMUMsbUVBQW1FO0FBQ25FLDhFQUE4RTtBQUM5RSxTQUFnQix1QkFBdUIsQ0FBQyxVQUEwQixFQUFFO0lBQ2xFLE1BQU0sRUFBRSxlQUFlLEdBQUcsaUNBQXlCLEVBQUUsR0FBRyxPQUFPLENBQUE7SUFFL0QsT0FBTyxLQUFLLEVBQ1YsR0FBa0IsRUFDbEIsQ0FBaUIsRUFDakIsSUFBd0IsRUFDeEIsRUFBRTtRQUNGLElBQUksbUJBQW1CLEdBQUcsS0FBSyxDQUFBO1FBRS9CLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQzVELEtBQUssTUFBTSxTQUFTLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQ3hDLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUN4QixtQkFBbUIsR0FBRyxJQUFJLENBQUE7b0JBQzFCLE9BQU8sR0FBRyxTQUFTLElBQUksQ0FBQTtnQkFDekIsQ0FBQztnQkFDRCxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxTQUFTLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQ3RDLG1CQUFtQixHQUFHLElBQUksQ0FB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
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSingleSalesChannelId = exports.wrapVariantsWithInventoryQuantity = exports.wrapProductsWithTaxPrices = exports.filterOutInternalProductCategories = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ /**
6
+ * Drop internal categories from the response, mirroring the store helper.
7
+ */
8
+ const filterOutInternalProductCategories = (products) => {
9
+ return products.forEach((product) => {
10
+ if (!product.categories) {
11
+ return;
12
+ }
13
+ product.categories = product.categories.filter((category) => !category.is_internal);
14
+ });
15
+ };
16
+ exports.filterOutInternalProductCategories = filterOutInternalProductCategories;
17
+ /**
18
+ * Port of the store `wrapProductsWithTaxPrices`: enriches each variant's
19
+ * `calculated_price` with `*_with_tax` / `*_without_tax` amounts.
20
+ *
21
+ * (Translations feature flag handling from core is intentionally omitted.)
22
+ */
23
+ const wrapProductsWithTaxPrices = async (req, products) => {
24
+ if (!req.taxContext?.taxInclusivityContext || !req.taxContext?.taxLineContext) {
25
+ return;
26
+ }
27
+ if (!req.taxContext.taxInclusivityContext.automaticTaxes) {
28
+ return;
29
+ }
30
+ const taxService = req.scope.resolve(utils_1.Modules.TAX);
31
+ const taxLines = (await taxService.getTaxLines(products.map(asTaxItem).flat(), req.taxContext.taxLineContext));
32
+ const taxRatesMap = new Map();
33
+ taxLines.forEach((taxRate) => {
34
+ if (!taxRatesMap.has(taxRate.line_item_id)) {
35
+ taxRatesMap.set(taxRate.line_item_id, []);
36
+ }
37
+ taxRatesMap.get(taxRate.line_item_id)?.push(taxRate);
38
+ });
39
+ products.forEach((product) => {
40
+ product.variants?.forEach((variant) => {
41
+ if (!variant.calculated_price) {
42
+ return;
43
+ }
44
+ const taxRatesForVariant = taxRatesMap.get(variant.id) || [];
45
+ const { priceWithTax, priceWithoutTax } = (0, utils_1.calculateAmountsWithTax)({
46
+ taxLines: taxRatesForVariant,
47
+ amount: variant.calculated_price.calculated_amount,
48
+ includesTax: variant.calculated_price.is_calculated_price_tax_inclusive,
49
+ });
50
+ variant.calculated_price.calculated_amount_with_tax = priceWithTax;
51
+ variant.calculated_price.calculated_amount_without_tax = priceWithoutTax;
52
+ const { priceWithTax: originalPriceWithTax, priceWithoutTax: originalPriceWithoutTax, } = (0, utils_1.calculateAmountsWithTax)({
53
+ taxLines: taxRatesForVariant,
54
+ amount: variant.calculated_price.original_amount,
55
+ includesTax: variant.calculated_price.is_original_price_tax_inclusive,
56
+ });
57
+ variant.calculated_price.original_amount_with_tax = originalPriceWithTax;
58
+ variant.calculated_price.original_amount_without_tax =
59
+ originalPriceWithoutTax;
60
+ });
61
+ });
62
+ };
63
+ exports.wrapProductsWithTaxPrices = wrapProductsWithTaxPrices;
64
+ const asTaxItem = (product) => {
65
+ return product.variants
66
+ ?.map((variant) => {
67
+ if (!variant.calculated_price) {
68
+ return;
69
+ }
70
+ return {
71
+ id: variant.id,
72
+ product_id: product.id,
73
+ product_type_id: product.type_id,
74
+ quantity: 1,
75
+ unit_price: variant.calculated_price.calculated_amount,
76
+ currency_code: variant.calculated_price.currency_code,
77
+ };
78
+ })
79
+ .filter((v) => !!v);
80
+ };
81
+ /**
82
+ * Admin port of `wrapVariantsWithInventoryQuantityForSalesChannel`.
83
+ *
84
+ * Inventory availability requires a single sales channel. The store derives it
85
+ * from the publishable key; here it must be supplied via `?sales_channel_id=`.
86
+ * If exactly one sales channel id is not available, availability is skipped.
87
+ */
88
+ const wrapVariantsWithInventoryQuantity = async (req, variants, salesChannelId) => {
89
+ if (!salesChannelId) {
90
+ return;
91
+ }
92
+ variants ??= [];
93
+ const variantIds = variants.map((variant) => variant.id).flat(1);
94
+ if (!variantIds.length) {
95
+ return;
96
+ }
97
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
98
+ const availability = await (0, utils_1.getVariantAvailability)(query, {
99
+ variant_ids: variantIds,
100
+ sales_channel_id: salesChannelId,
101
+ });
102
+ for (const variant of variants) {
103
+ if (!variant.manage_inventory) {
104
+ continue;
105
+ }
106
+ variant.inventory_quantity = availability[variant.id]?.availability;
107
+ }
108
+ };
109
+ exports.wrapVariantsWithInventoryQuantity = wrapVariantsWithInventoryQuantity;
110
+ /**
111
+ * Resolve the single sales-channel id usable for inventory availability from
112
+ * the validated query (`?sales_channel_id=`). Returns undefined unless exactly
113
+ * one is present.
114
+ */
115
+ const getSingleSalesChannelId = (req) => {
116
+ const raw = req.validatedQuery?.sales_channel_id;
117
+ if (!raw) {
118
+ return undefined;
119
+ }
120
+ const ids = Array.isArray(raw) ? raw : [raw];
121
+ return ids.length === 1 ? ids[0] : undefined;
122
+ };
123
+ exports.getSingleSalesChannelId = getSingleSalesChannelId;
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vbmV0bWUtcG9zL3Byb2R1Y3RzL2hlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBS2tDO0FBZWxDOztHQUVHO0FBQ0ksTUFBTSxrQ0FBa0MsR0FBRyxDQUFDLFFBQWUsRUFBRSxFQUFFO0lBQ3BFLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDeEIsT0FBTTtRQUNSLENBQUM7UUFDRCxPQUFPLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUM1QyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUN6QyxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFUWSxRQUFBLGtDQUFrQyxzQ0FTOUM7QUFFRDs7Ozs7R0FLRztBQUNJLE1BQU0seUJBQXlCLEdBQUcsS0FBSyxFQUM1QyxHQUF1QixFQUN2QixRQUFlLEVBQ2YsRUFBRTtJQUNGLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLHFCQUFxQixJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsQ0FBQztRQUM5RSxPQUFNO0lBQ1IsQ0FBQztJQUVELElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3pELE9BQU07SUFDUixDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBRWpELE1BQU0sUUFBUSxHQUFHLENBQUMsTUFBTSxVQUFVLENBQUMsV0FBVyxDQUM1QyxRQUFR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
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listProductQueryConfig = exports.retrieveProductQueryConfig = exports.defaultStoreProductFields = void 0;
4
+ // Mirrors the store `GET /store/products` query config.
5
+ exports.defaultStoreProductFields = [
6
+ "id",
7
+ "title",
8
+ "subtitle",
9
+ "description",
10
+ "handle",
11
+ "is_giftcard",
12
+ "discountable",
13
+ "thumbnail",
14
+ "collection_id",
15
+ "type_id",
16
+ "weight",
17
+ "length",
18
+ "height",
19
+ "width",
20
+ "hs_code",
21
+ "origin_country",
22
+ "mid_code",
23
+ "material",
24
+ // Admin clone: expose status (store hides it since it forces published).
25
+ "status",
26
+ "created_at",
27
+ "updated_at",
28
+ "*type",
29
+ "*collection",
30
+ "*options",
31
+ "*options.values",
32
+ "*tags",
33
+ "*images",
34
+ "*variants",
35
+ "*variants.options",
36
+ ];
37
+ exports.retrieveProductQueryConfig = {
38
+ defaults: exports.defaultStoreProductFields,
39
+ isList: false,
40
+ };
41
+ exports.listProductQueryConfig = {
42
+ ...exports.retrieveProductQueryConfig,
43
+ defaultLimit: 50,
44
+ isList: true,
45
+ };
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS9hZG1pbi9uZXRtZS1wb3MvcHJvZHVjdHMvcXVlcnktY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdEQUF3RDtBQUMzQyxRQUFBLHlCQUF5QixHQUFHO0lBQ3ZDLElBQUk7SUFDSixPQUFPO0lBQ1AsVUFBVTtJQUNWLGFBQWE7SUFDYixRQUFRO0lBQ1IsYUFBYTtJQUNiLGNBQWM7SUFDZCxXQUFXO0lBQ1gsZUFBZTtJQUNmLFNBQVM7SUFDVCxRQUFRO0lBQ1IsUUFBUTtJQUNSLFFBQVE7SUFDUixPQUFPO0lBQ1AsU0FBUztJQUNULGdCQUFnQjtJQUNoQixVQUFVO0lBQ1YsVUFBVTtJQUNWLHlFQUF5RTtJQUN6RSxRQUFRO0lBQ1IsWUFBWTtJQUNaLFlBQVk7SUFDWixPQUFPO0lBQ1AsYUFBYTtJQUNiLFVBQVU7SUFDVixpQkFBaUI7SUFDakIsT0FBTztJQUNQLFNBQVM7SUFDVCxXQUFXO0lBQ1gsbUJBQW1CO0NBQ3BCLENBQUE7QUFFWSxRQUFBLDBCQUEwQixHQUFHO0lBQ3hDLFFBQVEsRUFBRSxpQ0FBeUI7SUFDbkMsTUFBTSxFQUFFLEtBQUs7Q0FDZCxDQUFBO0FBRVksUUFBQSxzQkFBc0IsR0FBRztJQUNwQyxHQUFHLGtDQUEwQjtJQUM3QixZQUFZLEVBQUUsRUFBRTtJQUNoQixNQUFNLEVBQUUsSUFBSTtDQUNiLENBQUEifQ==
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const helpers_1 = require("./helpers");
6
+ /**
7
+ * Admin clone of `GET /store/products`.
8
+ *
9
+ * Behaves like the storefront listing — region pricing (`calculated_price`),
10
+ * customer-group pricing, sales-channel scoping, taxes — but driven by URL
11
+ * params instead of a customer token + publishable key:
12
+ * - `?region_id` / `?cart_id` → pricing region (or store default)
13
+ * - `?customer=cus_...` → customer-group pricing
14
+ * - `?sales_channel_id=sc_...` → optional sales-channel scoping
15
+ * - `?status=` → optional (defaults to published)
16
+ *
17
+ * The index-engine branch is intentionally omitted (uses `query.graph` only).
18
+ */
19
+ const GET = async (req, res) => {
20
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
21
+ const context = {};
22
+ const withInventoryQuantity = req.queryConfig.fields.some((field) => field.includes("variants.inventory_quantity"));
23
+ if (withInventoryQuantity) {
24
+ req.queryConfig.fields = req.queryConfig.fields.filter((field) => !field.includes("variants.inventory_quantity"));
25
+ }
26
+ if ((0, utils_1.isPresent)(req.pricingContext)) {
27
+ context["variants"] ??= {};
28
+ context["variants"]["calculated_price"] ??= (0, utils_1.QueryContext)(req.pricingContext);
29
+ }
30
+ const { data: products = [], metadata } = await query.graph({
31
+ entity: "product",
32
+ fields: req.queryConfig.fields,
33
+ filters: req.filterableFields,
34
+ pagination: req.queryConfig.pagination,
35
+ context,
36
+ }, {
37
+ cache: { enable: true },
38
+ locale: req.locale,
39
+ });
40
+ if (withInventoryQuantity) {
41
+ await (0, helpers_1.wrapVariantsWithInventoryQuantity)(req, products.map((product) => product.variants).flat(1), (0, helpers_1.getSingleSalesChannelId)(req));
42
+ }
43
+ await (0, helpers_1.wrapProductsWithTaxPrices)(req, products);
44
+ res.json({
45
+ products,
46
+ count: metadata.count,
47
+ offset: metadata.skip,
48
+ limit: metadata.take,
49
+ });
50
+ };
51
+ exports.GET = GET;
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL25ldG1lLXBvcy9wcm9kdWN0cy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFJa0M7QUFDbEMsdUNBS2tCO0FBRWxCOzs7Ozs7Ozs7Ozs7R0FZRztBQUNJLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUF1QixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUN4RSxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoRSxNQUFNLE9BQU8sR0FBd0IsRUFBRSxDQUFBO0lBRXZDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDbEUsS0FBSyxDQUFDLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUM5QyxDQUFBO0lBRUQsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQzFCLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FDcEQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUMxRCxDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUksSUFBQSxpQkFBUyxFQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUE7UUFDMUIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEtBQUssSUFBQSxvQkFBWSxFQUN0RCxHQUFHLENBQUMsY0FBZSxDQUNwQixDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxHQUFHLEVBQUUsRUFBRSxRQUFRLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQ3pEO1FBQ0UsTUFBTSxFQUFFLFNBQVM7UUFDakIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTtRQUM5QixPQUFPLEVBQUUsR0FBRyxDQUFDLGdCQUFnQjtRQUM3QixVQUFVLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxVQUFVO1FBQ3RDLE9BQU87S0FDUixFQUNEO1FBQ0UsS0FBSyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtRQUN2QixNQUFNLEVBQUUsR0FBRyxDQUFDLE1BQU07S0FDbkIsQ0FDRixDQUFBO0lBRUQsSUFBSSxxQkFBcUIsRUFBRSxDQUFDO1FBQzFCLE1BQU0sSUFBQSwyQ0FBaUMsRUFDckMsR0FBRyxFQUNILFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ25ELElBQUEsaUNBQXVCLEVBQUMsR0FBRyxDQUFDLENBQzdCLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxJQUFBLG1DQUF5QixFQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUU5QyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1AsUUFBUTtRQUNSLEtBQUssRUFBRSxRQUFTLENBQUMsS0FBSztRQUN0QixNQUFNLEVBQUUsUUFBUyxDQUFDLElBQUk7UUFDdEIsS0FBSyxFQUFFLFFBQVMsQ0FBQyxJQUFJO0tBQ3RCLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQTtBQW5EWSxRQUFBLEdBQUcsT0FtRGYifQ==
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AdminGetProductsParams = void 0;
4
+ const zod_1 = require("@medusajs/framework/zod");
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ /**
7
+ * Admin clone of the store `GET /store/products` query validators.
8
+ *
9
+ * The store builds these from Medusa-internal, non-exported helpers
10
+ * (`createFindParams`, `createOperatorMap`, `applyAndAndOrOperators`, …). Those
11
+ * helpers are tiny and stable, so they are ported verbatim here to keep this
12
+ * plugin self-contained (no fragile deep-imports into `@medusajs/medusa/dist`).
13
+ *
14
+ * The ONLY functional differences vs. the store schema:
15
+ * - `customer` → optional `cus_...` id, the admin replacement for the
16
+ * customer token used to resolve customer-group pricing.
17
+ * - `status` → admin may filter by product status (store forces published).
18
+ */
19
+ // ---------------------------------------------------------------------------
20
+ // Ported builder helpers (api/utils/validators.ts)
21
+ // ---------------------------------------------------------------------------
22
+ const createSelectParams = () => zod_1.z.object({
23
+ fields: zod_1.z.string().optional(),
24
+ });
25
+ const createFindParams = ({ offset, limit, order, } = {}) => {
26
+ return createSelectParams().merge(zod_1.z.object({
27
+ offset: zod_1.z.preprocess((val) => (val && typeof val === "string" ? parseInt(val) : val), zod_1.z
28
+ .number()
29
+ .optional()
30
+ .default(offset ?? 0)),
31
+ limit: zod_1.z.preprocess((val) => (val && typeof val === "string" ? parseInt(val) : val), zod_1.z
32
+ .number()
33
+ .optional()
34
+ .default(limit ?? 20)),
35
+ order: order
36
+ ? zod_1.z.string().optional().default(order)
37
+ : zod_1.z.string().optional(),
38
+ with_deleted: zod_1.z.preprocess((val) => {
39
+ if (val && typeof val === "string") {
40
+ return val === "true" ? true : val === "false" ? false : val;
41
+ }
42
+ return val;
43
+ }, zod_1.z.boolean().optional()),
44
+ }));
45
+ };
46
+ const createOperatorMap = (type, valueParser) => {
47
+ if (!type) {
48
+ type = zod_1.z.string();
49
+ }
50
+ let simpleType = type.optional();
51
+ if (valueParser) {
52
+ simpleType = zod_1.z.preprocess(valueParser, type).optional();
53
+ }
54
+ const arrayType = zod_1.z.array(type).optional();
55
+ const unionType = zod_1.z.union([simpleType, arrayType]).optional();
56
+ return zod_1.z.union([
57
+ unionType,
58
+ zod_1.z.object({
59
+ $eq: unionType,
60
+ $ne: unionType,
61
+ $in: arrayType,
62
+ $nin: arrayType,
63
+ $like: simpleType,
64
+ $ilike: simpleType,
65
+ $re: simpleType,
66
+ $contains: simpleType,
67
+ $gt: simpleType,
68
+ $gte: simpleType,
69
+ $lt: simpleType,
70
+ $lte: simpleType,
71
+ }),
72
+ ]);
73
+ };
74
+ // ---------------------------------------------------------------------------
75
+ // Ported common product validators (api/utils/common-validators)
76
+ // ---------------------------------------------------------------------------
77
+ const booleanString = () => zod_1.z
78
+ .union([zod_1.z.boolean(), zod_1.z.string()])
79
+ .refine((value) => ["true", "false"].includes(value.toString().toLowerCase()))
80
+ .transform((value) => value.toString().toLowerCase() === "true");
81
+ const applyAndAndOrOperators = (schema) => {
82
+ return schema.merge(zod_1.z.object({
83
+ $and: zod_1.z.lazy(() => schema.array()).optional(),
84
+ $or: zod_1.z.lazy(() => schema.array()).optional(),
85
+ }));
86
+ };
87
+ function recursivelyNormalizeSchema(transform) {
88
+ return (data) => {
89
+ const normalizedData = transform(data);
90
+ Object.keys(normalizedData)
91
+ .filter((key) => ["$and", "$or"].includes(key))
92
+ .forEach((key) => {
93
+ ;
94
+ normalizedData[key] = normalizedData[key].map(transform);
95
+ });
96
+ return normalizedData;
97
+ };
98
+ }
99
+ const StoreGetProductParamsDirectFields = zod_1.z.object({
100
+ q: zod_1.z.string().optional(),
101
+ id: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
102
+ title: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
103
+ handle: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
104
+ is_giftcard: booleanString().optional(),
105
+ // Admin addition: allow filtering by status (store forces published).
106
+ status: zod_1.z
107
+ .union([zod_1.z.nativeEnum(utils_1.ProductStatus), zod_1.z.array(zod_1.z.nativeEnum(utils_1.ProductStatus))])
108
+ .optional(),
109
+ category_id: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
110
+ external_id: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
111
+ collection_id: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
112
+ tag_id: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
113
+ type_id: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
114
+ created_at: createOperatorMap().optional(),
115
+ updated_at: createOperatorMap().optional(),
116
+ deleted_at: createOperatorMap().optional(),
117
+ });
118
+ const GetProductsParams = zod_1.z
119
+ .object({
120
+ sales_channel_id: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
121
+ })
122
+ .merge(StoreGetProductParamsDirectFields);
123
+ const transformProductParams = (data) => {
124
+ const res = { ...data };
125
+ if ((0, utils_1.isPresent)(data.tag_id)) {
126
+ res.tags = { id: data.tag_id };
127
+ delete res.tag_id;
128
+ }
129
+ if ((0, utils_1.isPresent)(data.category_id)) {
130
+ res.categories = { id: data.category_id };
131
+ delete res.category_id;
132
+ }
133
+ return res;
134
+ };
135
+ const StoreGetProductVariantsParamsFields = zod_1.z.object({
136
+ q: zod_1.z.string().optional(),
137
+ id: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
138
+ sku: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
139
+ ean: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
140
+ upc: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
141
+ barcode: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
142
+ options: zod_1.z
143
+ .object({ value: zod_1.z.string().optional(), option_id: zod_1.z.string().optional() })
144
+ .optional(),
145
+ created_at: createOperatorMap().optional(),
146
+ updated_at: createOperatorMap().optional(),
147
+ deleted_at: createOperatorMap().optional(),
148
+ });
149
+ // ---------------------------------------------------------------------------
150
+ // Admin product list params (store params + `customer`)
151
+ // ---------------------------------------------------------------------------
152
+ const AdminGetProductsParamsFields = zod_1.z
153
+ .object({
154
+ region_id: zod_1.z.string().optional(),
155
+ country_code: zod_1.z.string().optional(),
156
+ province: zod_1.z.string().optional(),
157
+ cart_id: zod_1.z.string().optional(),
158
+ // Admin replacement for the store's customer token.
159
+ customer: zod_1.z.string().optional(),
160
+ })
161
+ .merge(GetProductsParams)
162
+ .strict();
163
+ exports.AdminGetProductsParams = createFindParams({
164
+ offset: 0,
165
+ limit: 50,
166
+ })
167
+ .merge(AdminGetProductsParamsFields)
168
+ .merge(zod_1.z
169
+ .object({
170
+ variants: zod_1.z
171
+ .object({
172
+ options: zod_1.z
173
+ .object({
174
+ value: zod_1.z.string().optional(),
175
+ option_id: zod_1.z.string().optional(),
176
+ })
177
+ .optional(),
178
+ })
179
+ .merge(applyAndAndOrOperators(StoreGetProductVariantsParamsFields))
180
+ .optional(),
181
+ })
182
+ .merge(applyAndAndOrOperators(StoreGetProductParamsDirectFields))
183
+ .strict())
184
+ .transform(recursivelyNormalizeSchema(transformProductParams));
185
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvYWRtaW4vbmV0bWUtcG9zL3Byb2R1Y3RzL3ZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQTJDO0FBQzNDLHFEQUFvRTtBQUVwRTs7Ozs7Ozs7Ozs7O0dBWUc7QUFFSCw4RUFBOEU7QUFDOUUsbURBQW1EO0FBQ25ELDhFQUE4RTtBQUU5RSxNQUFNLGtCQUFrQixHQUFHLEdBQUcsRUFBRSxDQUM5QixPQUFDLENBQUMsTUFBTSxDQUFDO0lBQ1AsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDOUIsQ0FBQyxDQUFBO0FBRUosTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEVBQ3hCLE1BQU0sRUFDTixLQUFLLEVBQ0wsS0FBSyxNQUtILEVBQUUsRUFBRSxFQUFFO0lBQ1IsT0FBTyxrQkFBa0IsRUFBRSxDQUFDLEtBQUssQ0FDL0IsT0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNQLE1BQU0sRUFBRSxPQUFDLENBQUMsVUFBVSxDQUNsQixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUMvRCxPQUFDO2FBQ0UsTUFBTSxFQUFFO2FBQ1IsUUFBUSxFQUFFO2FBQ1YsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FDeEI7UUFDRCxLQUFLLEVBQUUsT0FBQyxDQUFDLFVBQVUsQ0FDakIsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFDL0QsT0FBQzthQUNFLE1BQU0sRUFBRTthQUNSLFFBQVEsRUFBRTthQUNWLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQ3hCO1FBQ0QsS0FBSyxFQUFFLEtBQUs7WUFDVixDQUFDLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDdEMsQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7UUFDekIsWUFBWSxFQUFFLE9BQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQyxJQUFJLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDbkMsT0FBTyxHQUFHLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBO1lBQzlELENBQUM7WUFDRCxPQUFPLEdBQUcsQ0FBQTtRQUNaLENBQUMsRUFBRSxPQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7S0FDM0IsQ0FBQyxDQUNILENBQUE7QUFDSCxDQUFDLENBQUE7QUFFRCxNQUFNLGlCQUFpQixHQUFHLENBQ3hCLElBQWdCLEVBQ2hCLFdBQStCLEVBQy9CLEVBQUU7SUFDRixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVixJQUFJLEdBQUcsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO0lBQ25CLENBQUM7SUFFRCxJQUFJLFVBQVUsR0FBUSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDckMsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNoQixVQUFVLEdBQUcsT0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDekQsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFRLE9BQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUE7SUFDL0MsTUFBTSxTQUFTLEdBQVEsT0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBRWxFLE9BQU8sT0FBQyxDQUFDLEtBQUssQ0FBQztRQUNiLFNBQVM7UUFDVCxPQUFDLENBQUMsTUFBTSxDQUFDO1lBQ1AsR0FBRyxFQUFFLFNBQVM7WUFDZCxHQUFHLEVBQUUsU0FBUztZQUNkLEdBQUcsRUFBRSxTQUFTO1lBQ2QsSUFBSSxFQUFFLFNBQVM7WUFDZixLQUFLLEVBQUUsVUFBVTtZQUNqQixNQUFNLEVBQUUsVUFBVTtZQUNsQixHQUFHLEVBQUUsVUFBVTtZQUNmLFNBQVMsRUFBRSxVQUFVO1lBQ3JCLEdBQUcsRUFBRSxVQUFVO1lBQ2YsSUFBSSxFQUFFLFVBQVU7WUFDaEIsR0FBRyxFQUFFLFVBQVU7WUFDZixJQUFJLEVBQUUsVUFBVTtTQUNqQixDQUFDO0tBQ0gsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBRUQsOEVBQThFO0FBQzlFLGlFQUFpRTtBQUNqRSw4RUFBOEU7QUFFOUUsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFLENBQ3pCLE9BQUM7S0FDRSxLQUFLLENBQUMsQ0FBQyxPQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDaEMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDaEIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUMzRDtLQUNBLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLE1BQU0sQ0FBQyxDQUFBO0FBRXBFLE1BQU0sc0JBQXNCLEdBQUcsQ0FBNkIsTUFBUyxFQUFFLEVBQUU7SUFDdkUsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUNqQixPQUFDLENBQUMsTUFBTSxDQUFDO1FBQ1AsSUFBSSxFQUFFLE9BQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFO1FBQzdDLEdBQUcsRUFBRSxPQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRTtLQUM3QyxDQUFDLENBQ0gsQ0FBQTtBQUNILENBQUMsQ0FBQTtBQUVELFNBQVMsMEJBQTBCLENBR2pDLFNBQXlDO0lBQ3pDLE9BQU8sQ0FBQyxJQUFTLEVBQUUsRUFBRTtRQUNuQixNQUFNLGNBQWMsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFdEMsTUFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7YUFDeEIsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDOUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDZixDQUFDO1lBQUMsY0FBc0IsQ0FBQyxHQUFHLENBQUMsR0FBSSxjQUFzQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FDOUQsU0FBUyxDQUNWLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FBQTtRQUVKLE9BQU8sY0FBYyxDQUFBO0lBQ3ZCLENBQUMsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLGlDQUFpQyxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDakQsQ0FBQyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDeEIsRUFBRSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQ3pELEtBQUssRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUM1RCxNQUFNLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDN0QsV0FBVyxFQUFFLGFBQWEsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUN2QyxzRUFBc0U7SUFDdEUsTUFBTSxFQUFFLE9BQUM7U0FDTixLQUFLLENBQUMsQ0FBQyxPQUFDLENBQUMsVUFBVSxDQUFDLHFCQUFhLENBQUMsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxVQUFVLENBQUMscUJBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMxRSxRQUFRLEVBQUU7SUFDYixXQUFXLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDbEUsV0FBVyxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQ2xFLGFBQWEsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUNwRSxNQUFNLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDN0QsT0FBTyxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQzlELFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMxQyxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDMUMsVUFBVSxFQUFFLGlCQUFpQixFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzNDLENBQUMsQ0FBQTtBQUVGLE1BQU0saUJBQWlCLEdBQUcsT0FBQztLQUN4QixNQUFNLENBQUM7SUFDTixnQkFBZ0IsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtDQUN4RSxDQUFDO0tBQ0QsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUE7QUFFM0MsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFO0lBQzNDLE1BQU0sR0FBRyxHQUFRLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQTtJQUU1QixJQUFJLElBQUEsaUJBQVMsRUFBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUMzQixHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUM5QixPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUE7SUFDbkIsQ0FBQztJQUVELElBQUksSUFBQSxpQkFBUyxFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1FBQ2hDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ3pDLE9BQU8sR0FBRyxDQUFDLFdBQVcsQ0FBQTtJQUN4QixDQUFDO0lBRUQsT0FBTyxHQUFHLENBQUE7QUFDWixDQUFDLENBQUE7QUFFRCxNQUFNLG1DQUFtQyxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDbkQsQ0FBQyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDeEIsRUFBRSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQ3pELEdBQUcsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUMxRCxHQUFHLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDMUQsR0FBRyxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQzFELE9BQU8sRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUM5RCxPQUFPLEVBQUUsT0FBQztTQUNQLE1BQU0sQ0FBQyxFQUFFLEtBQUssRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1NBQzFFLFFBQVEsRUFBRTtJQUNiLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMxQyxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDMUMsVUFBVSxFQUFFLGlCQUFpQixFQUFFLENBQUMsUUFBUSxFQUFFO0NBQzNDLENBQUMsQ0FBQTtBQUVGLDhFQUE4RTtBQUM5RSx3REFBd0Q7QUFDeEQsOEVBQThFO0FBRTlFLE1BQU0sNEJBQTRCLEdBQUcsT0FBQztLQUNuQyxNQUFNLENBQUM7SUFDTixTQUFTLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNoQyxZQUFZLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUNuQyxRQUFRLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUMvQixPQUFPLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM5QixvREFBb0Q7SUFDcEQsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDaEMsQ0FBQztLQUNELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztLQUN4QixNQUFNLEVBQUUsQ0FBQTtBQUlFLFFBQUEsc0JBQXNCLEdBQUcsZ0JBQWdCLENBQUM7SUFDckQsTUFBTSxFQUFFLENBQUM7SUFDVCxLQUFLLEVBQUUsRUFBRTtDQUNWLENBQUM7S0FDQyxLQUFLLENBQUMsNEJBQTRCLENBQUM7S0FDbkMsS0FBSyxDQUNKLE9BQUM7S0FDRSxNQUFNLENBQUM7SUFDTixRQUFRLEVBQUUsT0FBQztTQUNSLE1BQU0sQ0FBQztRQUNOLE9BQU8sRUFBRSxPQUFDO2FBQ1AsTUFBTSxDQUFDO1lBQ04sS0FBSyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7WUFDNUIsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7U0FDakMsQ0FBQzthQUNELFFBQVEsRUFBRTtLQUNkLENBQUM7U0FDRCxLQUFLLENBQUMsc0JBQXNCLENBQUMsbUNBQW1DLENBQUMsQ0FBQztTQUNsRSxRQUFRLEVBQUU7Q0FDZCxDQUFDO0tBQ0QsS0FBSyxDQUFDLHNCQUFzQixDQUFDLGlDQUFpQyxDQUFDLENBQUM7S0FDaEUsTUFBTSxFQUFFLENBQ1o7S0FDQSxTQUFTLENBQUMsMEJBQTBCLENBQUMsc0JBQXNCLENBQVEsQ0FBQyxDQUFBIn0=
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const framework_1 = require("@medusajs/framework");
37
+ const http_1 = require("@medusajs/framework/http");
38
+ const context_middlewares_1 = require("./admin/netme-pos/products/context-middlewares");
39
+ const ProductsQueryConfig = __importStar(require("./admin/netme-pos/products/query-config"));
40
+ const validators_1 = require("./admin/netme-pos/products/validators");
41
+ /**
42
+ * Middleware chain for the admin product clone of `GET /store/products`.
43
+ *
44
+ * `/admin/*` routes already get admin-user authentication globally, so instead
45
+ * of the store's `authenticate("customer", …)` we rely on that and resolve the
46
+ * (optional) customer from `?customer=cus_...` inside `setPricingContextFromCustomer`.
47
+ *
48
+ * Everything after `validateAndTransformQuery` mirrors the store chain, minus
49
+ * `filterByValidSalesChannels` (publishable key) — sales-channel scoping here is
50
+ * optional via `?sales_channel_id=`.
51
+ */
52
+ const clearContextKeys = (0, http_1.clearFiltersByKey)([
53
+ "region_id",
54
+ "country_code",
55
+ "province",
56
+ "cart_id",
57
+ "customer",
58
+ ]);
59
+ exports.default = (0, http_1.defineMiddlewares)({
60
+ routes: [
61
+ {
62
+ method: ["GET"],
63
+ matcher: "/admin/netme-pos/products",
64
+ middlewares: [
65
+ (0, framework_1.validateAndTransformQuery)(validators_1.AdminGetProductsParams, ProductsQueryConfig.listProductQueryConfig),
66
+ context_middlewares_1.applyMaybeLinkFilterIfNecessary,
67
+ (0, context_middlewares_1.applyDefaultProductStatus)(),
68
+ (0, context_middlewares_1.normalizeDataForContext)(),
69
+ (0, context_middlewares_1.setPricingContextFromCustomer)(),
70
+ (0, context_middlewares_1.setTaxContext)(),
71
+ clearContextKeys,
72
+ ],
73
+ },
74
+ {
75
+ method: ["GET"],
76
+ matcher: "/admin/netme-pos/products/:id",
77
+ middlewares: [
78
+ (0, framework_1.validateAndTransformQuery)(validators_1.AdminGetProductsParams, ProductsQueryConfig.retrieveProductQueryConfig),
79
+ (0, http_1.applyParamsAsFilters)({ id: "id" }),
80
+ context_middlewares_1.applyMaybeLinkFilterIfNecessary,
81
+ (0, context_middlewares_1.applyDefaultProductStatus)(),
82
+ (0, context_middlewares_1.normalizeDataForContext)(),
83
+ (0, context_middlewares_1.setPricingContextFromCustomer)(),
84
+ (0, context_middlewares_1.setTaxContext)(),
85
+ clearContextKeys,
86
+ ],
87
+ },
88
+ ],
89
+ });
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbURBQStEO0FBQy9ELG1EQUlpQztBQUNqQyx3RkFNdUQ7QUFDdkQsNkZBQThFO0FBQzlFLHNFQUE4RTtBQUU5RTs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLHdCQUFpQixFQUFDO0lBQ3pDLFdBQVc7SUFDWCxjQUFjO0lBQ2QsVUFBVTtJQUNWLFNBQVM7SUFDVCxVQUFVO0NBQ1gsQ0FBQyxDQUFBO0FBRUYsa0JBQWUsSUFBQSx3QkFBaUIsRUFBQztJQUMvQixNQUFNLEVBQUU7UUFDTjtZQUNFLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNmLE9BQU8sRUFBRSwyQkFBMkI7WUFDcEMsV0FBVyxFQUFFO2dCQUNYLElBQUEscUNBQXlCLEVBQ3ZCLG1DQUFzQixFQUN0QixtQkFBbUIsQ0FBQyxzQkFBc0IsQ0FDM0M7Z0JBQ0QscURBQStCO2dCQUMvQixJQUFBLCtDQUF5QixHQUFFO2dCQUMzQixJQUFBLDZDQUF1QixHQUFFO2dCQUN6QixJQUFBLG1EQUE2QixHQUFFO2dCQUMvQixJQUFBLG1DQUFhLEdBQUU7Z0JBQ2YsZ0JBQWdCO2FBQ2pCO1NBQ0Y7UUFDRDtZQUNFLE1BQU0sRUFBRSxDQUFDLEtBQUssQ0FBQztZQUNmLE9BQU8sRUFBRSwrQkFBK0I7WUFDeEMsV0FBVyxFQUFFO2dCQUNYLElBQUEscUNBQXlCLEVBQ3ZCLG1DQUFzQixFQUN0QixtQkFBbUIsQ0FBQywwQkFBMEIsQ0FDL0M7Z0JBQ0QsSUFBQSwyQkFBb0IsRUFBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDbEMscURBQStCO2dCQUMvQixJQUFBLCtDQUF5QixHQUFFO2dCQUMzQixJQUFBLDZDQUF1QixHQUFFO2dCQUN6QixJQUFBLG1EQUE2QixHQUFFO2dCQUMvQixJQUFBLG1DQUFhLEdBQUU7Z0JBQ2YsZ0JBQWdCO2FBQ2pCO1NBQ0Y7S0FDRjtDQUNGLENBQUMsQ0FBQSJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zaamx/netme-pos",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "description": "A starter for Medusa plugins.",
5
5
  "author": "Medusa (https://medusajs.com)",
6
6
  "license": "MIT",