medusa-product-helper 0.0.22 → 0.0.23

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,322 @@
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 validators_1 = require("./validators");
6
+ /**
7
+ * GET /store/product-helper/inventory
8
+ *
9
+ * Returns product inventory levels (per variant) and pending order counts.
10
+ *
11
+ * Query parameters:
12
+ * - stock_only (boolean): If true, only return inventory data
13
+ * - order_only (boolean): If true, only return order counts
14
+ * - product_id (string[]): Filter by specific product IDs
15
+ * - limit (number): Pagination limit (default: 50)
16
+ * - offset (number): Pagination offset (default: 0)
17
+ *
18
+ * Note: Order counts are based on orders with status "pending".
19
+ *
20
+ * @example
21
+ * ```bash
22
+ * # Get both inventory and order counts
23
+ * GET /store/product-helper/inventory
24
+ *
25
+ * # Get only inventory
26
+ * GET /store/product-helper/inventory?stock_only=true
27
+ *
28
+ * # Get only order counts
29
+ * GET /store/product-helper/inventory?order_only=true
30
+ *
31
+ * # Filter by product IDs
32
+ * GET /store/product-helper/inventory?product_id=prod_123,prod_456
33
+ * ```
34
+ */
35
+ const GET = async (req, res) => {
36
+ try {
37
+ // Validate query parameters
38
+ const validatedQuery = validators_1.InventoryQuerySchema.parse(req.query);
39
+ const { stock_only, order_only, product_id, limit, offset } = validatedQuery;
40
+ // Resolve query service
41
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
42
+ // Determine what data to fetch
43
+ const fetchInventory = !order_only || stock_only;
44
+ const fetchOrders = !stock_only || order_only;
45
+ // Build product filters
46
+ const productFilters = {};
47
+ if (product_id && product_id.length > 0) {
48
+ productFilters.id = product_id;
49
+ }
50
+ // Fetch products with variants
51
+ // Note: We fetch all products first (without pagination) to get accurate inventory/order data
52
+ // Then apply pagination to the final results
53
+ const { data: allProducts = [] } = await query.graph({
54
+ entity: "product",
55
+ fields: ["id", "title", "variants.id", "variants.title"],
56
+ filters: productFilters,
57
+ });
58
+ // If we only need orders, we'll filter products later based on which ones have orders
59
+ const products = allProducts;
60
+ // Build product map for quick lookup
61
+ // Initialize all products with ALL their variants (with 0 quantity initially)
62
+ // This ensures all variants are in the response, even if they don't have inventory items
63
+ const productMap = new Map();
64
+ for (const product of products) {
65
+ const productData = product;
66
+ // Initialize variants array with all variants from the product (with 0 quantity)
67
+ const variants = [];
68
+ if (productData.variants && Array.isArray(productData.variants)) {
69
+ for (const variant of productData.variants) {
70
+ if (variant.id) {
71
+ variants.push({
72
+ variant_id: variant.id,
73
+ variant_title: variant.title || "Default Variant",
74
+ inventory_quantity: 0, // Initialize with 0, will be updated if inventory exists
75
+ });
76
+ }
77
+ }
78
+ }
79
+ // Calculate total inventory quantity (sum of all variants)
80
+ const totalInventoryQuantity = variants.reduce((sum, variant) => sum + variant.inventory_quantity, 0);
81
+ productMap.set(productData.id, {
82
+ product_id: productData.id,
83
+ product_title: productData.title || "Unknown Product",
84
+ variants, // All variants initialized with 0 quantity
85
+ total_inventory_quantity: totalInventoryQuantity, // Sum of all variant inventory quantities
86
+ confirmed_order_count: 0, // Initialize with 0, will be updated if orders exist
87
+ });
88
+ }
89
+ // Fetch inventory data if needed
90
+ if (fetchInventory) {
91
+ // Query inventory items with variant relationships
92
+ const { data: inventoryItems = [] } = await query.graph({
93
+ entity: "inventory_item",
94
+ fields: [
95
+ "id",
96
+ "variants.id",
97
+ ],
98
+ });
99
+ // Create map of variant_id -> inventory_item_id
100
+ const variantToInventoryItem = new Map();
101
+ for (const inventoryItem of inventoryItems) {
102
+ const item = inventoryItem;
103
+ if (item.variants && Array.isArray(item.variants)) {
104
+ for (const variant of item.variants) {
105
+ if (variant.id) {
106
+ variantToInventoryItem.set(variant.id, item.id);
107
+ }
108
+ }
109
+ }
110
+ }
111
+ // Query location levels for all inventory items
112
+ const inventoryItemIds = Array.from(new Set(variantToInventoryItem.values()));
113
+ if (inventoryItemIds.length > 0) {
114
+ // Try to get location levels via inventory service first
115
+ try {
116
+ const { Modules } = await import("@medusajs/framework/utils");
117
+ const inventoryService = req.scope.resolve(Modules.INVENTORY);
118
+ if (inventoryService?.listInventoryLevels) {
119
+ const locationLevels = await inventoryService.listInventoryLevels({
120
+ inventory_item_id: inventoryItemIds,
121
+ });
122
+ // Aggregate inventory per inventory item
123
+ const inventoryItemQuantityMap = new Map();
124
+ for (const level of locationLevels || []) {
125
+ const current = inventoryItemQuantityMap.get(level.inventory_item_id) || 0;
126
+ inventoryItemQuantityMap.set(level.inventory_item_id, current + (level.available_quantity || 0));
127
+ }
128
+ // Map inventory quantities to variants
129
+ // Update existing variants with actual inventory quantities
130
+ for (const [variantId, inventoryItemId] of variantToInventoryItem) {
131
+ const quantity = inventoryItemQuantityMap.get(inventoryItemId) || 0;
132
+ // Find which product this variant belongs to and update the variant
133
+ for (const product of products) {
134
+ const productData = product;
135
+ if (productData.variants) {
136
+ const variant = productData.variants.find((v) => v.id === variantId);
137
+ if (variant) {
138
+ const productEntry = productMap.get(productData.id);
139
+ if (productEntry && productEntry.variants) {
140
+ // Find and update the existing variant instead of adding a new one
141
+ const existingVariant = productEntry.variants.find((v) => v.variant_id === variantId);
142
+ if (existingVariant) {
143
+ existingVariant.inventory_quantity = quantity;
144
+ // Recalculate total inventory quantity for this product
145
+ productEntry.total_inventory_quantity = productEntry.variants.reduce((sum, v) => sum + v.inventory_quantity, 0);
146
+ }
147
+ }
148
+ break;
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
154
+ }
155
+ catch (error) {
156
+ // Fallback: Query location levels via graph query
157
+ const { data: itemsWithLevels = [] } = await query.graph({
158
+ entity: "inventory_item",
159
+ fields: [
160
+ "id",
161
+ "location_levels.available_quantity",
162
+ ],
163
+ filters: { id: inventoryItemIds },
164
+ });
165
+ // Aggregate inventory per inventory item
166
+ const inventoryItemQuantityMap = new Map();
167
+ for (const item of itemsWithLevels) {
168
+ const itemData = item;
169
+ if (itemData.location_levels && Array.isArray(itemData.location_levels)) {
170
+ const totalQuantity = itemData.location_levels.reduce((sum, level) => sum + (level.available_quantity || 0), 0);
171
+ inventoryItemQuantityMap.set(itemData.id, totalQuantity);
172
+ }
173
+ }
174
+ // Map inventory quantities to variants
175
+ // Update existing variants with actual inventory quantities
176
+ for (const [variantId, inventoryItemId] of variantToInventoryItem) {
177
+ const quantity = inventoryItemQuantityMap.get(inventoryItemId) || 0;
178
+ // Find which product this variant belongs to and update the variant
179
+ for (const product of products) {
180
+ const productData = product;
181
+ if (productData.variants) {
182
+ const variant = productData.variants.find((v) => v.id === variantId);
183
+ if (variant) {
184
+ const productEntry = productMap.get(productData.id);
185
+ if (productEntry && productEntry.variants) {
186
+ // Find and update the existing variant instead of adding a new one
187
+ const existingVariant = productEntry.variants.find((v) => v.variant_id === variantId);
188
+ if (existingVariant) {
189
+ existingVariant.inventory_quantity = quantity;
190
+ // Recalculate total inventory quantity for this product
191
+ productEntry.total_inventory_quantity = productEntry.variants.reduce((sum, v) => sum + v.inventory_quantity, 0);
192
+ }
193
+ }
194
+ break;
195
+ }
196
+ }
197
+ }
198
+ }
199
+ }
200
+ }
201
+ }
202
+ // Fetch pending order counts if needed
203
+ if (fetchOrders) {
204
+ // Query pending orders with items (using OrderStatus enum)
205
+ const { data: orders = [] } = await query.graph({
206
+ entity: "order",
207
+ fields: ["id", "items.variant_id"],
208
+ filters: { status: utils_1.OrderStatus.PENDING },
209
+ });
210
+ // Get all variant IDs from order items
211
+ const variantIds = new Set();
212
+ for (const order of orders) {
213
+ const orderData = order;
214
+ if (orderData.items && Array.isArray(orderData.items)) {
215
+ for (const item of orderData.items) {
216
+ if (item.variant_id) {
217
+ variantIds.add(item.variant_id);
218
+ }
219
+ }
220
+ }
221
+ }
222
+ // Query variants to get product_id mapping
223
+ const variantIdsArray = Array.from(variantIds);
224
+ const variantToProductMap = new Map();
225
+ if (variantIdsArray.length > 0) {
226
+ const { data: variants = [] } = await query.graph({
227
+ entity: "product_variant",
228
+ fields: ["id", "product_id"],
229
+ filters: { id: variantIdsArray },
230
+ });
231
+ for (const variant of variants) {
232
+ const variantData = variant;
233
+ if (variantData.product_id) {
234
+ variantToProductMap.set(variantData.id, variantData.product_id);
235
+ }
236
+ }
237
+ }
238
+ // Count pending orders per product
239
+ const productOrderCountMap = new Map();
240
+ for (const order of orders) {
241
+ const orderData = order;
242
+ if (orderData.items && Array.isArray(orderData.items)) {
243
+ const productIdsInOrder = new Set();
244
+ for (const item of orderData.items) {
245
+ if (item.variant_id) {
246
+ const productId = variantToProductMap.get(item.variant_id);
247
+ if (productId) {
248
+ productIdsInOrder.add(productId);
249
+ }
250
+ }
251
+ }
252
+ // Count this order once per unique product
253
+ for (const productId of productIdsInOrder) {
254
+ const current = productOrderCountMap.get(productId) || 0;
255
+ productOrderCountMap.set(productId, current + 1);
256
+ }
257
+ }
258
+ }
259
+ // Add pending order counts to product map
260
+ for (const [productId, count] of productOrderCountMap) {
261
+ const productEntry = productMap.get(productId);
262
+ if (productEntry) {
263
+ productEntry.confirmed_order_count = count;
264
+ }
265
+ }
266
+ }
267
+ // Recalculate total inventory quantity for all products (in case any were missed)
268
+ for (const productEntry of productMap.values()) {
269
+ if (productEntry.variants && productEntry.variants.length > 0) {
270
+ productEntry.total_inventory_quantity = productEntry.variants.reduce((sum, variant) => sum + variant.inventory_quantity, 0);
271
+ }
272
+ else {
273
+ productEntry.total_inventory_quantity = 0;
274
+ }
275
+ }
276
+ // Convert map to array and filter based on query params
277
+ let resultProducts = Array.from(productMap.values());
278
+ // Note: We don't filter out products without variants anymore
279
+ // Products without variants will still show with empty variants array
280
+ // and will show order counts if they have any
281
+ // If order_only, only show products that have order counts
282
+ if (order_only && !stock_only) {
283
+ resultProducts = resultProducts.filter((p) => p.confirmed_order_count !== undefined && p.confirmed_order_count > 0);
284
+ }
285
+ // Get total count before pagination (for pagination metadata)
286
+ const totalCount = resultProducts.length;
287
+ // Apply pagination to final results
288
+ const paginatedProducts = resultProducts.slice(offset, offset + limit);
289
+ const response = {
290
+ products: paginatedProducts,
291
+ count: totalCount,
292
+ offset,
293
+ limit,
294
+ };
295
+ res.json(response);
296
+ }
297
+ catch (error) {
298
+ // Handle validation errors
299
+ if (error && typeof error === "object" && "issues" in error) {
300
+ res.status(400).json({
301
+ message: "Invalid query parameters",
302
+ errors: error.issues,
303
+ products: [],
304
+ count: 0,
305
+ offset: 0,
306
+ limit: 50,
307
+ });
308
+ return;
309
+ }
310
+ // Handle other errors
311
+ const errorMessage = error instanceof Error ? error.message : "Internal server error";
312
+ res.status(500).json({
313
+ message: errorMessage,
314
+ products: [],
315
+ count: 0,
316
+ offset: 0,
317
+ limit: 50,
318
+ });
319
+ }
320
+ };
321
+ exports.GET = GET;
322
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3Byb2R1Y3QtaGVscGVyL2ludmVudG9yeS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBa0Y7QUFFbEYsNkNBQXdFO0FBdUJ4RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCRztBQUNJLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFDdEIsR0FBa0IsRUFDbEIsR0FBc0MsRUFDdEMsRUFBRTtJQUNGLElBQUksQ0FBQztRQUNILDRCQUE0QjtRQUM1QixNQUFNLGNBQWMsR0FBRyxpQ0FBb0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRTVELE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsY0FBYyxDQUFBO1FBRTVFLHdCQUF3QjtRQUN4QixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBUSxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUV2RSwrQkFBK0I7UUFDL0IsTUFBTSxjQUFjLEdBQUcsQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFBO1FBQ2hELE1BQU0sV0FBVyxHQUFHLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQTtRQUU3Qyx3QkFBd0I7UUFDeEIsTUFBTSxjQUFjLEdBQTRCLEVBQUUsQ0FBQTtRQUNsRCxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hDLGNBQWMsQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFBO1FBQ2hDLENBQUM7UUFFRCwrQkFBK0I7UUFDL0IsOEZBQThGO1FBQzlGLDZDQUE2QztRQUM3QyxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsR0FBRyxFQUFFLEVBQUUsR0FBRyxNQUFNLEtBQUss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
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InventoryQuerySchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const booleanish = zod_1.z
6
+ .union([zod_1.z.boolean(), zod_1.z.string(), zod_1.z.number()])
7
+ .optional()
8
+ .transform((value) => {
9
+ if (typeof value === "boolean") {
10
+ return value;
11
+ }
12
+ if (typeof value === "number") {
13
+ return value !== 0;
14
+ }
15
+ if (typeof value === "string") {
16
+ const normalized = value.trim().toLowerCase();
17
+ if (["true", "1", "yes", "y"].includes(normalized)) {
18
+ return true;
19
+ }
20
+ if (["false", "0", "no", "n"].includes(normalized)) {
21
+ return false;
22
+ }
23
+ }
24
+ return undefined;
25
+ });
26
+ const positiveInt = zod_1.z
27
+ .union([zod_1.z.string(), zod_1.z.number()])
28
+ .default(50)
29
+ .transform((value) => {
30
+ const parsed = Number(value);
31
+ if (Number.isNaN(parsed) || parsed <= 0) {
32
+ return 50;
33
+ }
34
+ return Math.floor(parsed);
35
+ });
36
+ const nonNegativeInt = zod_1.z
37
+ .union([zod_1.z.string(), zod_1.z.number()])
38
+ .default(0)
39
+ .transform((value) => {
40
+ const parsed = Number(value);
41
+ if (Number.isNaN(parsed) || parsed < 0) {
42
+ return 0;
43
+ }
44
+ return Math.floor(parsed);
45
+ });
46
+ const stringArray = zod_1.z
47
+ .union([
48
+ zod_1.z.string().transform((value) => value
49
+ .split(",")
50
+ .map((entry) => entry.trim())
51
+ .filter(Boolean)),
52
+ zod_1.z.array(zod_1.z.string()),
53
+ ])
54
+ .optional()
55
+ .transform((value) => (Array.isArray(value) ? value : []));
56
+ exports.InventoryQuerySchema = zod_1.z.object({
57
+ stock_only: booleanish,
58
+ order_only: booleanish,
59
+ product_id: stringArray,
60
+ limit: positiveInt,
61
+ offset: nonNegativeInt,
62
+ });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvc3RvcmUvcHJvZHVjdC1oZWxwZXIvaW52ZW50b3J5L3ZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXVCO0FBRXZCLE1BQU0sVUFBVSxHQUFHLE9BQUM7S0FDakIsS0FBSyxDQUFDLENBQUMsT0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztLQUM1QyxRQUFRLEVBQUU7S0FDVixTQUFTLENBQUMsQ0FBQyxLQUE0QyxFQUFFLEVBQUU7SUFDMUQsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMvQixPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE9BQU8sS0FBSyxLQUFLLENBQUMsQ0FBQTtJQUNwQixDQUFDO0lBRUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDN0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ25ELE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNuRCxPQUFPLEtBQUssQ0FBQTtRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUE7QUFDbEIsQ0FBQyxDQUFDLENBQUE7QUFFSixNQUFNLFdBQVcsR0FBRyxPQUFDO0tBQ2xCLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztLQUMvQixPQUFPLENBQUMsRUFBRSxDQUFDO0tBQ1gsU0FBUyxDQUFDLENBQUMsS0FBc0IsRUFBRSxFQUFFO0lBQ3BDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM1QixJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sRUFBRSxDQUFBO0lBQ1gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUMzQixDQUFDLENBQUMsQ0FBQTtBQUVKLE1BQU0sY0FBYyxHQUFHLE9BQUM7S0FDckIsS0FBSyxDQUFDLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0tBQy9CLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDVixTQUFTLENBQUMsQ0FBQyxLQUFzQixFQUFFLEVBQUU7SUFDcEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzVCLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdkMsT0FBTyxDQUFDLENBQUE7SUFDVixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBQzNCLENBQUMsQ0FBQyxDQUFBO0FBRUosTUFBTSxXQUFXLEdBQUcsT0FBQztLQUNsQixLQUFLLENBQUM7SUFDTCxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBYSxFQUFFLEVBQUUsQ0FDckMsS0FBSztTQUNGLEtBQUssQ0FBQyxHQUFHLENBQUM7U0FDVixHQUFHLENBQUMsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNwQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQ25CO0lBQ0QsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Q0FDcEIsQ0FBQztLQUNELFFBQVEsRUFBRTtLQUNWLFNBQVMsQ0FBQyxDQUFDLEtBQW9DLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBRTlFLFFBQUEsb0JBQW9CLEdBQUcsT0FBQyxDQUFDLE1BQU0sQ0FBQztJQUMzQyxVQUFVLEVBQUUsVUFBVTtJQUN0QixVQUFVLEVBQUUsVUFBVTtJQUN0QixVQUFVLEVBQUUsV0FBVztJQUN2QixLQUFLLEVBQUUsV0FBVztJQUNsQixNQUFNLEVBQUUsY0FBYztDQUN2QixDQUFDLENBQUEifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "medusa-product-helper",
3
- "version": "0.0.22",
3
+ "version": "0.0.23",
4
4
  "description": "A starter for Medusa plugins.",
5
5
  "author": "Medusa (https://medusajs.com)",
6
6
  "license": "MIT",