medusa-product-helper 0.0.16 → 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 (26) hide show
  1. package/.medusa/server/src/admin/index.js +59 -117
  2. package/.medusa/server/src/admin/index.mjs +59 -117
  3. package/.medusa/server/src/api/store/product-helper/products/route.js +41 -5
  4. package/.medusa/server/src/api/store/product-helper/products/validators.js +2 -1
  5. package/.medusa/server/src/providers/filter-providers/availability-provider.js +53 -67
  6. package/.medusa/server/src/providers/filter-providers/base-filter-provider.js +1 -19
  7. package/.medusa/server/src/providers/filter-providers/base-product-provider.js +37 -100
  8. package/.medusa/server/src/providers/filter-providers/category-provider.js +15 -34
  9. package/.medusa/server/src/providers/filter-providers/collection-provider.js +15 -32
  10. package/.medusa/server/src/providers/filter-providers/index.js +13 -49
  11. package/.medusa/server/src/providers/filter-providers/metadata-provider.js +38 -57
  12. package/.medusa/server/src/providers/filter-providers/price-range-provider.js +66 -79
  13. package/.medusa/server/src/providers/filter-providers/promotion-provider.js +106 -169
  14. package/.medusa/server/src/providers/filter-providers/promotion-window-provider.js +53 -93
  15. package/.medusa/server/src/providers/filter-providers/rating-provider.js +47 -70
  16. package/.medusa/server/src/services/dynamic-filter-service.js +455 -744
  17. package/.medusa/server/src/services/filter-provider-loader.js +91 -139
  18. package/.medusa/server/src/services/filter-provider-registry.js +8 -107
  19. package/.medusa/server/src/services/product-filter-service.js +127 -174
  20. package/.medusa/server/src/shared/product-metadata/utils.js +66 -116
  21. package/.medusa/server/src/utils/query-builders/product-filters.js +89 -111
  22. package/.medusa/server/src/utils/query-parser.js +24 -76
  23. package/.medusa/server/src/workflows/add-to-wishlist.js +12 -26
  24. package/.medusa/server/src/workflows/get-wishlist.js +53 -51
  25. package/.medusa/server/src/workflows/remove-from-wishlist.js +3 -8
  26. package/package.json +1 -1
@@ -5,99 +5,47 @@
5
5
  * Normalizes query parameters from both formats:
6
6
  * - Bracketed flat: `price_range[min]=10&price_range[max]=100`
7
7
  * - Nested objects: `{ price_range: { min: 10, max: 100 } }`
8
- *
9
- * This ensures consistent handling regardless of how the HTTP server
10
- * or query parser processes the query string.
11
8
  */
12
9
  Object.defineProperty(exports, "__esModule", { value: true });
13
10
  exports.normalizeQueryParams = normalizeQueryParams;
14
- /**
15
- * Parse a query parameter key that may be in bracketed format.
16
- *
17
- * Examples:
18
- * - `price_range[min]` → `{ base: "price_range", key: "min" }`
19
- * - `promotion[min_discount_percentage]` → `{ base: "promotion", key: "min_discount_percentage" }`
20
- * - `category_id` → `{ base: "category_id", key: null }`
21
- *
22
- * @param key - Query parameter key (may be bracketed or flat)
23
- * @returns Object with base key and nested key (if bracketed)
24
- */
25
11
  function parseBracketedKey(key) {
26
- const bracketMatch = key.match(/^(.+)\[([^\]]+)\]$/);
27
- if (bracketMatch) {
28
- return {
29
- base: bracketMatch[1],
30
- key: bracketMatch[2],
31
- };
12
+ const match = key.match(/^([^[]+)\[([^\]]+)\]$/);
13
+ if (match) {
14
+ return { base: match[1], key: match[2] };
32
15
  }
33
- return {
34
- base: key,
35
- key: null,
36
- };
16
+ return { base: key, key: null };
17
+ }
18
+ function isPlainObject(value) {
19
+ return value !== null &&
20
+ typeof value === "object" &&
21
+ !Array.isArray(value) &&
22
+ Object.getPrototypeOf(value) === Object.prototype;
37
23
  }
38
- /**
39
- * Normalize query parameters to handle both bracketed and nested formats.
40
- *
41
- * Converts bracketed flat keys like `price_range[min]=10` into nested objects
42
- * like `{ price_range: { min: 10 } }`.
43
- *
44
- * Also handles already-nested objects, preserving them as-is.
45
- *
46
- * @param query - Raw query object (may contain bracketed keys or nested objects)
47
- * @returns Normalized query object with nested structure
48
- *
49
- * @example
50
- * ```ts
51
- * // Input: { "price_range[min]": "10", "price_range[max]": "100" }
52
- * // Output: { price_range: { min: "10", max: "100" } }
53
- *
54
- * // Input: { price_range: { min: 10, max: 100 } }
55
- * // Output: { price_range: { min: 10, max: 100 } } (unchanged)
56
- * ```
57
- */
58
24
  function normalizeQueryParams(query) {
59
25
  const normalized = {};
60
26
  const nestedKeys = {};
61
- // First pass: collect all bracketed keys
62
27
  for (const [key, value] of Object.entries(query)) {
63
- const parsed = parseBracketedKey(key);
64
- if (parsed.key !== null) {
65
- // This is a bracketed key (e.g., price_range[min])
66
- if (!nestedKeys[parsed.base]) {
67
- nestedKeys[parsed.base] = {};
68
- }
69
- nestedKeys[parsed.base][parsed.key] = value;
28
+ const { base, key: nestedKey } = parseBracketedKey(key);
29
+ if (nestedKey !== null) {
30
+ // Bracketed key: price_range[min]
31
+ if (!nestedKeys[base])
32
+ nestedKeys[base] = {};
33
+ nestedKeys[base][nestedKey] = value;
70
34
  }
71
35
  else {
72
- // This is a flat key (e.g., category_id)
73
- // Check if it's already a nested object
74
- if (value !== null &&
75
- typeof value === "object" &&
76
- !Array.isArray(value) &&
77
- Object.getPrototypeOf(value) === Object.prototype) {
78
- // Already nested, keep as-is
79
- normalized[parsed.base] = value;
80
- }
81
- else {
82
- // Flat value, add directly
83
- normalized[parsed.base] = value;
84
- }
36
+ // Flat key: category_id or already nested object
37
+ normalized[base] = isPlainObject(value) ? value : value;
85
38
  }
86
39
  }
87
- // Second pass: merge nested keys (from bracketed format) with existing nested objects
88
- for (const [baseKey, nestedValues] of Object.entries(nestedKeys)) {
89
- if (baseKey in normalized && typeof normalized[baseKey] === "object" && normalized[baseKey] !== null && !Array.isArray(normalized[baseKey])) {
90
- // Merge with existing nested object
91
- normalized[baseKey] = {
92
- ...normalized[baseKey],
93
- ...nestedValues,
94
- };
40
+ // Merge bracketed keys into normalized result
41
+ for (const [base, nestedValues] of Object.entries(nestedKeys)) {
42
+ if (isPlainObject(normalized[base])) {
43
+ normalized[base] = { ...normalized[base], ...nestedValues };
95
44
  }
96
45
  else {
97
- // Create new nested object
98
- normalized[baseKey] = nestedValues;
46
+ normalized[base] = nestedValues;
99
47
  }
100
48
  }
101
49
  return normalized;
102
50
  }
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3F1ZXJ5LXBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7OztHQVNHOztBQStDSCxvREFpREM7QUE5RkQ7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQVMsaUJBQWlCLENBQUMsR0FBVztJQUNwQyxNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUE7SUFDcEQsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNqQixPQUFPO1lBQ0wsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7WUFDckIsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7U0FDckIsQ0FBQTtJQUNILENBQUM7SUFDRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLEdBQUc7UUFDVCxHQUFHLEVBQUUsSUFBSTtLQUNWLENBQUE7QUFDSCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtQkc7QUFDSCxTQUFnQixvQkFBb0IsQ0FDbEMsS0FBOEI7SUFFOUIsTUFBTSxVQUFVLEdBQTRCLEVBQUUsQ0FBQTtJQUM5QyxNQUFNLFVBQVUsR0FBNEMsRUFBRSxDQUFBO0lBRTlELHlDQUF5QztJQUN6QyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2pELE1BQU0sTUFBTSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRXJDLElBQUksTUFBTSxDQUFDLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUN4QixtREFBbUQ7WUFDbkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDN0IsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUE7WUFDOUIsQ0FBQztZQUNELFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQTtRQUM3QyxDQUFDO2FBQU0sQ0FBQztZQUNOLHlDQUF5QztZQUN6Qyx3Q0FBd0M7WUFDeEMsSUFDRSxLQUFLLEtBQUssSUFBSTtnQkFDZCxPQUFPLEtBQUssS0FBSyxRQUFRO2dCQUN6QixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO2dCQUNyQixNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQ2pELENBQUM7Z0JBQ0QsNkJBQTZCO2dCQUM3QixVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQTtZQUNqQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sMkJBQTJCO2dCQUMzQixVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQTtZQUNqQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxzRkFBc0Y7SUFDdEYsS0FBSyxNQUFNLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUNqRSxJQUFJLE9BQU8sSUFBSSxVQUFVLElBQUksT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDNUksb0NBQW9DO1lBQ3BDLFVBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRztnQkFDcEIsR0FBSSxVQUFVLENBQUMsT0FBTyxDQUE2QjtnQkFDbkQsR0FBRyxZQUFZO2FBQ2hCLENBQUE7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLDJCQUEyQjtZQUMzQixVQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsWUFBWSxDQUFBO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxVQUFVLENBQUE7QUFDbkIsQ0FBQyJ9
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktcGFyc2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3F1ZXJ5LXBhcnNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOztBQW1CSCxvREEyQkM7QUE1Q0QsU0FBUyxpQkFBaUIsQ0FBQyxHQUFXO0lBQ3BDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtJQUVoRCxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ1YsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQzFDLENBQUM7SUFFRCxPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUE7QUFDakMsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLEtBQWM7SUFDbkMsT0FBTyxLQUFLLEtBQUssSUFBSTtRQUNkLE9BQU8sS0FBSyxLQUFLLFFBQVE7UUFDekIsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUNyQixNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLE1BQU0sQ0FBQyxTQUFTLENBQUE7QUFDMUQsQ0FBQztBQUVELFNBQWdCLG9CQUFvQixDQUFDLEtBQThCO0lBQ2pFLE1BQU0sVUFBVSxHQUE0QixFQUFFLENBQUE7SUFDOUMsTUFBTSxVQUFVLEdBQTRDLEVBQUUsQ0FBQTtJQUU5RCxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2pELE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBRXZELElBQUksU0FBUyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3ZCLGtDQUFrQztZQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztnQkFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFBO1lBQzVDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUE7UUFDckMsQ0FBQzthQUFNLENBQUM7WUFDTixpREFBaUQ7WUFDakQsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7UUFDekQsQ0FBQztJQUNILENBQUM7SUFFRCw4Q0FBOEM7SUFDOUMsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUM5RCxJQUFJLGFBQWEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3BDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBNEIsRUFBRSxHQUFHLFlBQVksRUFBRSxDQUFBO1FBQ3hGLENBQUM7YUFBTSxDQUFDO1lBQ04sVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQTtRQUNqQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFBO0FBQ25CLENBQUMifQ==
@@ -5,37 +5,25 @@ const utils_1 = require("@medusajs/framework/utils");
5
5
  const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
6
6
  const wishlist_1 = require("../modules/wishlist");
7
7
  const validateCustomerAndProductStep = (0, workflows_sdk_1.createStep)("validate-customer-and-product", async (input, { container }) => {
8
- // Validate customer exists using remote query
9
8
  const remoteQuery = container.resolve(utils_1.ContainerRegistrationKeys.REMOTE_QUERY);
9
+ // Validate customer exists
10
10
  const customerQuery = (0, utils_1.remoteQueryObjectFromString)({
11
11
  entryPoint: "customer",
12
12
  fields: ["id"],
13
- variables: {
14
- filters: {
15
- id: [input.customer_id],
16
- },
17
- },
13
+ filters: { id: [input.customer_id] },
18
14
  });
19
- const customerResults = await remoteQuery(customerQuery);
20
- const customer = customerResults?.[0];
21
- if (!customer) {
22
- throw new Error(`Customer with id ${input.customer_id} not found`);
23
- }
24
- // Validate product exists using remote query
15
+ const [customer] = await remoteQuery(customerQuery);
16
+ if (!customer)
17
+ throw new Error(`Customer ${input.customer_id} not found`);
18
+ // Validate product exists
25
19
  const productQuery = (0, utils_1.remoteQueryObjectFromString)({
26
20
  entryPoint: "product",
27
21
  fields: ["id"],
28
- variables: {
29
- filters: {
30
- id: [input.product_id],
31
- },
32
- },
22
+ filters: { id: [input.product_id] },
33
23
  });
34
- const productResults = await remoteQuery(productQuery);
35
- const product = productResults?.[0];
36
- if (!product) {
37
- throw new Error(`Product with id ${input.product_id} not found`);
38
- }
24
+ const [product] = await remoteQuery(productQuery);
25
+ if (!product)
26
+ throw new Error(`Product ${input.product_id} not found`);
39
27
  return new workflows_sdk_1.StepResponse({
40
28
  customer_id: input.customer_id,
41
29
  product_id: input.product_id,
@@ -49,9 +37,7 @@ const addToWishlistStep = (0, workflows_sdk_1.createStep)("add-to-wishlist", asy
49
37
  exports.addToWishlistWorkflow = (0, workflows_sdk_1.createWorkflow)("add-to-wishlist", (input) => {
50
38
  const validated = validateCustomerAndProductStep(input);
51
39
  const wishlistItem = addToWishlistStep(validated);
52
- return new workflows_sdk_1.WorkflowResponse({
53
- wishlist_item: wishlistItem,
54
- });
40
+ return new workflows_sdk_1.WorkflowResponse({ wishlist_item: wishlistItem });
55
41
  });
56
42
  exports.default = exports.addToWishlistWorkflow;
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXRvLXdpc2hsaXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9hZGQtdG8td2lzaGxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBR2tDO0FBRWxDLHFFQUswQztBQUMxQyxrREFBcUQ7QUFrQnJELE1BQU0sOEJBQThCLEdBQUcsSUFBQSwwQkFBVSxFQUMvQywrQkFBK0IsRUFDL0IsS0FBSyxFQUFFLEtBQXlCLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ2pELDhDQUE4QztJQUM5QyxNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUNuQyxpQ0FBeUIsQ0FBQyxZQUFZLENBQ3ZDLENBQUE7SUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFBLG1DQUEyQixFQUFDO1FBQ2hELFVBQVUsRUFBRSxVQUFVO1FBQ3RCLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztRQUNkLFNBQVMsRUFBRTtZQUNULE9BQU8sRUFBRTtnQkFDUCxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO2FBQ3hCO1NBQ0Y7S0FDRixDQUFDLENBQUE7SUFFRixNQUFNLGVBQWUsR0FBRyxNQUFNLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUN4RCxNQUFNLFFBQVEsR0FBRyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUVyQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixLQUFLLENBQUMsV0FBVyxZQUFZLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0lBRUQsNkNBQTZDO0lBQzdDLE1BQU0sWUFBWSxHQUFHLElBQUEsbUNBQTJCLEVBQUM7UUFDL0MsVUFBVSxFQUFFLFNBQVM7UUFDckIsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ2QsU0FBUyxFQUFFO1lBQ1QsT0FBTyxFQUFFO2dCQUNQLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUM7YUFDdkI7U0FDRjtLQUNGLENBQUMsQ0FBQTtJQUVGLE1BQU0sY0FBYyxHQUFHLE1BQU0sV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBQ3RELE1BQU0sT0FBTyxHQUFHLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRW5DLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLEtBQUssQ0FBQyxVQUFVLFlBQVksQ0FBQyxDQUFBO0lBQ2xFLENBQUM7SUFFRCxPQUFPLElBQUksNEJBQVksQ0FBQztRQUN0QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7UUFDOUIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO0tBQzdCLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FDRixDQUFBO0FBRUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFBLDBCQUFVLEVBQ2xDLGlCQUFpQixFQUNqQixLQUFLLEVBQ0gsS0FBa0QsRUFDbEQsRUFBRSxTQUFTLEVBQUUsRUFDYixFQUFFO0lBQ0YsTUFBTSxlQUFlLEdBQTBCLFNBQVMsQ0FBQyxPQUFPLENBQzlELDBCQUFlLENBQ2hCLENBQUE7SUFFRCxNQUFNLFlBQVksR0FBRyxNQUFNLGVBQWUsQ0FBQyxhQUFhLENBQ3RELEtBQUssQ0FBQyxXQUFXLEVBQ2pCLEtBQUssQ0FBQyxVQUFVLENBQ2pCLENBQUE7SUFFRCxPQUFPLElBQUksNEJBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQTtBQUN2QyxDQUFDLENBQ0YsQ0FBQTtBQUVZLFFBQUEscUJBQXFCLEdBQUcsSUFBQSw4QkFBYyxFQUNqRCxpQkFBaUIsRUFDakIsQ0FBQyxLQUF5QixFQUF5QyxFQUFFO0lBQ25FLE1BQU0sU0FBUyxHQUFHLDhCQUE4QixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3ZELE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBRWpELE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQztRQUMxQixhQUFhLEVBQUUsWUFBWTtLQUM1QixDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQTtBQUVELGtCQUFlLDZCQUFxQixDQUFBIn0=
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLXRvLXdpc2hsaXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9hZGQtdG8td2lzaGxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBR2tDO0FBRWxDLHFFQUswQztBQUMxQyxrREFBcUQ7QUFrQnJELE1BQU0sOEJBQThCLEdBQUcsSUFBQSwwQkFBVSxFQUMvQywrQkFBK0IsRUFDL0IsS0FBSyxFQUFFLEtBQXlCLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQ2pELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQXNCLGlDQUF5QixDQUFDLFlBQVksQ0FBQyxDQUFBO0lBRWxHLDJCQUEyQjtJQUMzQixNQUFNLGFBQWEsR0FBRyxJQUFBLG1DQUEyQixFQUFDO1FBQ2hELFVBQVUsRUFBRSxVQUFVO1FBQ3RCLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztRQUNkLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsRUFBRTtLQUNyQyxDQUFDLENBQUE7SUFFRixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUE7SUFDbkQsSUFBSSxDQUFDLFFBQVE7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksS0FBSyxDQUFDLFdBQVcsWUFBWSxDQUFDLENBQUE7SUFFekUsMEJBQTBCO0lBQzFCLE1BQU0sWUFBWSxHQUFHLElBQUEsbUNBQTJCLEVBQUM7UUFDL0MsVUFBVSxFQUFFLFNBQVM7UUFDckIsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ2QsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0tBQ3BDLENBQUMsQ0FBQTtJQUVGLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxNQUFNLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNqRCxJQUFJLENBQUMsT0FBTztRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxLQUFLLENBQUMsVUFBVSxZQUFZLENBQUMsQ0FBQTtJQUV0RSxPQUFPLElBQUksNEJBQVksQ0FBQztRQUN0QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7UUFDOUIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO0tBQzdCLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FDRixDQUFBO0FBRUQsTUFBTSxpQkFBaUIsR0FBRyxJQUFBLDBCQUFVLEVBQ2xDLGlCQUFpQixFQUNqQixLQUFLLEVBQUUsS0FBa0QsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDMUUsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBd0IsMEJBQWUsQ0FBQyxDQUFBO0lBQ2pGLE1BQU0sWUFBWSxHQUFHLE1BQU0sZUFBZSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUU3RixPQUFPLElBQUksNEJBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQTtBQUN2QyxDQUFDLENBQ0YsQ0FBQTtBQUVZLFFBQUEscUJBQXFCLEdBQUcsSUFBQSw4QkFBYyxFQUNqRCxpQkFBaUIsRUFDakIsQ0FBQyxLQUF5QixFQUF5QyxFQUFFO0lBQ25FLE1BQU0sU0FBUyxHQUFHLDhCQUE4QixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3ZELE1BQU0sWUFBWSxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBRWpELE9BQU8sSUFBSSxnQ0FBZ0IsQ0FBQyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFBO0FBQzlELENBQUMsQ0FDRixDQUFBO0FBRUQsa0JBQWUsNkJBQXFCLENBQUEifQ==
@@ -8,71 +8,73 @@ const fetchWishlistItemsStep = (0, workflows_sdk_1.createStep)("fetch-wishlist-i
8
8
  const wishlistService = container.resolve(wishlist_1.WISHLIST_MODULE);
9
9
  const wishlist = await wishlistService.getWishlist(input.customer_id, input.options);
10
10
  const includeDetails = input.options?.includeDetails ?? false;
11
- // Convert to consistent format
12
- let formattedWishlist;
13
- if (includeDetails) {
14
- formattedWishlist = wishlist.map((item) => ({
11
+ let formattedWishlist = [];
12
+ if (includeDetails && Array.isArray(wishlist)) {
13
+ // When includeDetails is true, wishlist should be array of objects with id, product_id, etc.
14
+ const wishlistItems = wishlist;
15
+ formattedWishlist = wishlistItems.map((item) => ({
15
16
  id: item.id,
16
17
  product_id: item.product_id,
17
- created_at: item.created_at,
18
+ created_at: item.created_at
18
19
  }));
19
20
  }
20
- else {
21
- formattedWishlist = wishlist.map((product_id) => ({
22
- product_id,
21
+ else if (Array.isArray(wishlist)) {
22
+ // When includeDetails is false, wishlist should be array of product_id strings
23
+ const productIds = wishlist;
24
+ formattedWishlist = productIds
25
+ .filter((product_id) => typeof product_id === "string" && product_id.length > 0)
26
+ .map(product_id => ({
27
+ product_id: String(product_id)
23
28
  }));
24
29
  }
25
- return new workflows_sdk_1.StepResponse({
26
- wishlist: formattedWishlist,
27
- includeDetails,
28
- });
30
+ return new workflows_sdk_1.StepResponse({ wishlist: formattedWishlist, includeDetails });
29
31
  });
30
32
  const enrichWithProductDetailsStep = (0, workflows_sdk_1.createStep)("enrich-with-product-details", async (input, { container }) => {
31
33
  if (!input.includeDetails || input.wishlist.length === 0) {
32
- // Return as-is if no details needed or empty
33
34
  return new workflows_sdk_1.StepResponse({ wishlist: input.wishlist });
34
35
  }
35
- // Get full wishlist items with product_id
36
- const wishlistItems = input.wishlist;
37
- const productIds = wishlistItems.map((item) => item.product_id);
38
- // Fetch product details using remote query
39
- const remoteQuery = container.resolve(utils_1.ContainerRegistrationKeys.REMOTE_QUERY);
40
- const queryObject = (0, utils_1.remoteQueryObjectFromString)({
41
- entryPoint: "product",
42
- fields: [
43
- "id",
44
- "title",
45
- "handle",
46
- "description",
47
- "thumbnail",
48
- "status",
49
- "created_at",
50
- "updated_at",
51
- ],
52
- variables: {
53
- filters: {
54
- id: productIds,
55
- },
56
- },
57
- });
58
- const products = await remoteQuery(queryObject);
59
- // Create a map of product_id to product details
60
- const productMap = new Map(products.map((product) => [product.id, product]));
61
- // Merge wishlist items with product details
62
- const enrichedWishlist = wishlistItems.map((item) => ({
63
- id: item.id,
64
- product_id: item.product_id,
65
- product: productMap.get(item.product_id) || null,
66
- created_at: item.created_at,
67
- }));
68
- return new workflows_sdk_1.StepResponse({ wishlist: enrichedWishlist });
36
+ // Validate and extract product IDs
37
+ const productIds = input.wishlist
38
+ .map(item => item.product_id)
39
+ .filter((id) => typeof id === "string" && id.length > 0);
40
+ if (productIds.length === 0) {
41
+ // No valid product IDs, return wishlist as-is
42
+ return new workflows_sdk_1.StepResponse({ wishlist: input.wishlist });
43
+ }
44
+ try {
45
+ const remoteQuery = container.resolve(utils_1.ContainerRegistrationKeys.REMOTE_QUERY);
46
+ const queryObject = (0, utils_1.remoteQueryObjectFromString)({
47
+ entryPoint: "product",
48
+ fields: ["id", "title", "handle", "description", "thumbnail", "status", "created_at", "updated_at"],
49
+ filters: { id: productIds },
50
+ });
51
+ const products = await remoteQuery(queryObject);
52
+ // Type-safe product mapping
53
+ const productMap = new Map();
54
+ if (Array.isArray(products)) {
55
+ for (const product of products) {
56
+ if (product && typeof product === "object" && "id" in product && typeof product.id === "string") {
57
+ productMap.set(product.id, product);
58
+ }
59
+ }
60
+ }
61
+ const enrichedWishlist = input.wishlist.map(item => ({
62
+ ...item,
63
+ product: item.product_id ? (productMap.get(item.product_id) || null) : null
64
+ }));
65
+ return new workflows_sdk_1.StepResponse({ wishlist: enrichedWishlist });
66
+ }
67
+ catch (error) {
68
+ // If product query fails, return wishlist without product details
69
+ // Log error but don't fail the workflow
70
+ console.warn("[getWishlistWorkflow] Failed to fetch product details:", error instanceof Error ? error.message : String(error));
71
+ return new workflows_sdk_1.StepResponse({ wishlist: input.wishlist });
72
+ }
69
73
  });
70
74
  exports.getWishlistWorkflow = (0, workflows_sdk_1.createWorkflow)("get-wishlist", (input) => {
71
75
  const wishlistData = fetchWishlistItemsStep(input);
72
76
  const enrichedWishlist = enrichWithProductDetailsStep(wishlistData);
73
- return new workflows_sdk_1.WorkflowResponse({
74
- wishlist: enrichedWishlist.wishlist,
75
- });
77
+ return new workflows_sdk_1.WorkflowResponse({ wishlist: enrichedWishlist.wishlist });
76
78
  });
77
79
  exports.default = exports.getWishlistWorkflow;
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXdpc2hsaXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9nZXQtd2lzaGxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSzBDO0FBQzFDLHFEQUdrQztBQUVsQyxrREFBcUQ7QUFvQnJELE1BQU0sc0JBQXNCLEdBQUcsSUFBQSwwQkFBVSxFQUN2QyxzQkFBc0IsRUFDdEIsS0FBSyxFQUFFLEtBQXVCLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFO0lBQy9DLE1BQU0sZUFBZSxHQUEwQixTQUFTLENBQUMsT0FBTyxDQUM5RCwwQkFBZSxDQUNoQixDQUFBO0lBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxlQUFlLENBQUMsV0FBVyxDQUNoRCxLQUFLLENBQUMsV0FBVyxFQUNqQixLQUFLLENBQUMsT0FBTyxDQUNkLENBQUE7SUFFRCxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLGNBQWMsSUFBSSxLQUFLLENBQUE7SUFFN0QsK0JBQStCO0lBQy9CLElBQUksaUJBS0YsQ0FBQTtJQUVGLElBQUksY0FBYyxFQUFFLENBQUM7UUFDbkIsaUJBQWlCLEdBQUksUUFLbEIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDakIsRUFBRSxFQUFFLElBQUksQ0FBQyxFQUFFO1lBQ1gsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtTQUM1QixDQUFDLENBQUMsQ0FBQTtJQUNMLENBQUM7U0FBTSxDQUFDO1FBQ04saUJBQWlCLEdBQUksUUFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDOUQsVUFBVTtTQUNYLENBQUMsQ0FBQyxDQUFBO0lBQ0wsQ0FBQztJQUVELE9BQU8sSUFBSSw0QkFBWSxDQUFDO1FBQ3RCLFFBQVEsRUFBRSxp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
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXdpc2hsaXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9nZXQtd2lzaGxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUVBSzBDO0FBQzFDLHFEQUdrQztBQUVsQyxrREFBcUQ7QUFPckQsTUFBTSxzQkFBc0IsR0FBRyxJQUFBLDBCQUFVLEVBQ3ZDLHNCQUFzQixFQUN0QixLQUFLLEVBQUUsS0FBdUIsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDL0MsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBd0IsMEJBQWUsQ0FBQyxDQUFBO0lBQ2pGLE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBZSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNwRixNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLGNBQWMsSUFBSSxLQUFLLENBQUE7SUFFN0QsSUFBSSxpQkFBaUIsR0FBbUIsRUFBRSxDQUFBO0lBRTFDLElBQUksY0FBYyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUM5Qyw2RkFBNkY7UUFDN0YsTUFBTSxhQUFhLEdBQUcsUUFBaUMsQ0FBQTtRQUN2RCxpQkFBaUIsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDNUIsQ0FBQyxDQUFDLENBQUE7SUFDTCxDQUFDO1NBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDbkMsK0VBQStFO1FBQy9FLE1BQU0sVUFBVSxHQUFHLFFB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
@@ -9,10 +9,7 @@ const validateWishlistItemExistsStep = (0, workflows_sdk_1.createStep)("validate
9
9
  if (!exists) {
10
10
  throw new Error(`Wishlist item not found for customer ${input.customer_id} and product ${input.product_id}`);
11
11
  }
12
- return new workflows_sdk_1.StepResponse({
13
- customer_id: input.customer_id,
14
- product_id: input.product_id,
15
- });
12
+ return new workflows_sdk_1.StepResponse(input);
16
13
  });
17
14
  const removeFromWishlistStep = (0, workflows_sdk_1.createStep)("remove-from-wishlist", async (input, { container }) => {
18
15
  const wishlistService = container.resolve(wishlist_1.WISHLIST_MODULE);
@@ -22,9 +19,7 @@ const removeFromWishlistStep = (0, workflows_sdk_1.createStep)("remove-from-wish
22
19
  exports.removeFromWishlistWorkflow = (0, workflows_sdk_1.createWorkflow)("remove-from-wishlist", (input) => {
23
20
  const validated = validateWishlistItemExistsStep(input);
24
21
  const result = removeFromWishlistStep(validated);
25
- return new workflows_sdk_1.WorkflowResponse({
26
- success: result.success,
27
- });
22
+ return new workflows_sdk_1.WorkflowResponse({ success: result.success });
28
23
  });
29
24
  exports.default = exports.removeFromWishlistWorkflow;
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWZyb20td2lzaGxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3JlbW92ZS1mcm9tLXdpc2hsaXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUswQztBQUMxQyxrREFBcUQ7QUFZckQsTUFBTSw4QkFBOEIsR0FBRyxJQUFBLDBCQUFVLEVBQy9DLCtCQUErQixFQUMvQixLQUFLLEVBQUUsS0FBOEIsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDdEQsTUFBTSxlQUFlLEdBQTBCLFNBQVMsQ0FBQyxPQUFPLENBQzlELDBCQUFlLENBQ2hCLENBQUE7SUFFRCxNQUFNLE1BQU0sR0FBRyxNQUFNLGVBQWUsQ0FBQyxZQUFZLENBQy9DLEtBQUssQ0FBQyxXQUFXLEVBQ2pCLEtBQUssQ0FBQyxVQUFVLENBQ2pCLENBQUE7SUFFRCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixNQUFNLElBQUksS0FBSyxDQUNiLHdDQUF3QyxLQUFLLENBQUMsV0FBVyxnQkFBZ0IsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUM1RixDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU8sSUFBSSw0QkFBWSxDQUFDO1FBQ3RCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztRQUM5QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7S0FDN0IsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUNGLENBQUE7QUFFRCxNQUFNLHNCQUFzQixHQUFHLElBQUEsMEJBQVUsRUFDdkMsc0JBQXNCLEVBQ3RCLEtBQUssRUFDSCxLQUFrRCxFQUNsRCxFQUFFLFNBQVMsRUFBRSxFQUNiLEVBQUU7SUFDRixNQUFNLGVBQWUsR0FBMEIsU0FBUyxDQUFDLE9BQU8sQ0FDOUQsMEJBQWUsQ0FDaEIsQ0FBQTtJQUVELE1BQU0sZUFBZSxDQUFDLGtCQUFrQixDQUN0QyxLQUFLLENBQUMsV0FBVyxFQUNqQixLQUFLLENBQUMsVUFBVSxDQUNqQixDQUFBO0lBRUQsT0FBTyxJQUFJLDRCQUFZLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtBQUM1QyxDQUFDLENBQ0YsQ0FBQTtBQUVZLFFBQUEsMEJBQTBCLEdBQUcsSUFBQSw4QkFBYyxFQUN0RCxzQkFBc0IsRUFDdEIsQ0FDRSxLQUE4QixFQUNjLEVBQUU7SUFDOUMsTUFBTSxTQUFTLEdBQUcsOEJBQThCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDdkQsTUFBTSxNQUFNLEdBQUcsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUE7SUFFaEQsT0FBTyxJQUFJLGdDQUFnQixDQUFDO1FBQzFCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztLQUN4QixDQUFDLENBQUE7QUFDSixDQUFDLENBQ0YsQ0FBQTtBQUVELGtCQUFlLGtDQUEwQixDQUFBIn0=
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWZyb20td2lzaGxpc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3JlbW92ZS1mcm9tLXdpc2hsaXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFFQUswQztBQUMxQyxrREFBcUQ7QUFNckQsTUFBTSw4QkFBOEIsR0FBRyxJQUFBLDBCQUFVLEVBQy9DLCtCQUErQixFQUMvQixLQUFLLEVBQUUsS0FBOEIsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDdEQsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBd0IsMEJBQWUsQ0FBQyxDQUFBO0lBQ2pGLE1BQU0sTUFBTSxHQUFHLE1BQU0sZUFBZSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUV0RixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDWixNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxLQUFLLENBQUMsV0FBVyxnQkFBZ0IsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUE7SUFDOUcsQ0FBQztJQUVELE9BQU8sSUFBSSw0QkFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQ2hDLENBQUMsQ0FDRixDQUFBO0FBRUQsTUFBTSxzQkFBc0IsR0FBRyxJQUFBLDBCQUFVLEVBQ3ZDLHNCQUFzQixFQUN0QixLQUFLLEVBQUUsS0FBOEIsRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDdEQsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBd0IsMEJBQWUsQ0FBQyxDQUFBO0lBQ2pGLE1BQU0sZUFBZSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBRTdFLE9BQU8sSUFBSSw0QkFBWSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7QUFDNUMsQ0FBQyxDQUNGLENBQUE7QUFFWSxRQUFBLDBCQUEwQixHQUFHLElBQUEsOEJBQWMsRUFDdEQsc0JBQXNCLEVBQ3RCLENBQUMsS0FBOEIsRUFBOEMsRUFBRTtJQUM3RSxNQUFNLFNBQVMsR0FBRyw4QkFBOEIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN2RCxNQUFNLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUVoRCxPQUFPLElBQUksZ0NBQWdCLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUE7QUFDMUQsQ0FBQyxDQUNGLENBQUE7QUFFRCxrQkFBZSxrQ0FBMEIsQ0FBQSJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "medusa-product-helper",
3
- "version": "0.0.16",
3
+ "version": "0.0.18",
4
4
  "description": "A starter for Medusa plugins.",
5
5
  "author": "Medusa (https://medusajs.com)",
6
6
  "license": "MIT",