@mercurjs/b2c-core 1.5.0 → 1.5.2

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 (186) hide show
  1. package/.medusa/server/src/api/admin/custom/middlewares.d.ts +2 -0
  2. package/.medusa/server/src/api/admin/custom/middlewares.js +8 -0
  3. package/.medusa/server/src/api/admin/custom/product-variants/middlewares.d.ts +2 -0
  4. package/.medusa/server/src/api/admin/custom/product-variants/middlewares.js +16 -0
  5. package/.medusa/server/src/api/admin/custom/product-variants/query-config.d.ts +7 -0
  6. package/.medusa/server/src/api/admin/custom/product-variants/query-config.js +48 -0
  7. package/.medusa/server/src/api/admin/custom/product-variants/route.d.ts +100 -0
  8. package/.medusa/server/src/api/admin/custom/product-variants/route.js +133 -0
  9. package/.medusa/server/src/api/admin/custom/product-variants/utils.d.ts +19 -0
  10. package/.medusa/server/src/api/admin/custom/product-variants/utils.js +31 -0
  11. package/.medusa/server/src/api/admin/custom/product-variants/validators.d.ts +327 -0
  12. package/.medusa/server/src/api/admin/custom/product-variants/validators.js +34 -0
  13. package/.medusa/server/src/api/admin/inventory-items/[id]/location-levels/[location_id]/route.d.ts +3 -0
  14. package/.medusa/server/src/api/admin/inventory-items/[id]/location-levels/[location_id]/route.js +36 -0
  15. package/.medusa/server/src/api/admin/middlewares.js +13 -7
  16. package/.medusa/server/src/api/admin/notifications/route.js +8 -8
  17. package/.medusa/server/src/api/admin/orders/[id]/route.d.ts +3 -3
  18. package/.medusa/server/src/api/admin/orders/[id]/route.js +6 -6
  19. package/.medusa/server/src/api/admin/orders/middlewares.d.ts +2 -0
  20. package/.medusa/server/src/api/admin/orders/middlewares.js +17 -0
  21. package/.medusa/server/src/api/admin/products/validators.d.ts +98 -98
  22. package/.medusa/server/src/api/admin/reservations/middlewares.d.ts +2 -0
  23. package/.medusa/server/src/api/admin/reservations/middlewares.js +12 -0
  24. package/.medusa/server/src/api/admin/sellers/validators.d.ts +2 -2
  25. package/.medusa/server/src/api/admin/sellers/validators.js +9 -7
  26. package/.medusa/server/src/api/store/carts/[id]/line-items/[line_id]/route.js +2 -2
  27. package/.medusa/server/src/api/store/carts/[id]/promotions/route.js +3 -4
  28. package/.medusa/server/src/api/store/carts/[id]/route.d.ts +6 -0
  29. package/.medusa/server/src/api/store/carts/[id]/route.js +32 -0
  30. package/.medusa/server/src/api/store/carts/middlewares.js +4 -5
  31. package/.medusa/server/src/api/store/middlewares.js +11 -9
  32. package/.medusa/server/src/api/store/products/middlewares.d.ts +2 -0
  33. package/.medusa/server/src/api/store/products/middlewares.js +13 -0
  34. package/.medusa/server/src/api/store/products/search/route.d.ts +81 -0
  35. package/.medusa/server/src/api/store/products/search/route.js +170 -0
  36. package/.medusa/server/src/api/store/products/validators.d.ts +36 -0
  37. package/.medusa/server/src/api/store/products/validators.js +17 -0
  38. package/.medusa/server/src/api/store/wishlist/middlewares.d.ts +1 -1
  39. package/.medusa/server/src/api/store/wishlist/middlewares.js +47 -25
  40. package/.medusa/server/src/api/store/wishlist/{[id]/product → product}/[reference_id]/route.d.ts +3 -9
  41. package/.medusa/server/src/api/store/wishlist/product/[reference_id]/route.js +65 -0
  42. package/.medusa/server/src/api/store/wishlist/route.d.ts +789 -28
  43. package/.medusa/server/src/api/store/wishlist/route.js +816 -37
  44. package/.medusa/server/src/api/vendor/campaigns/[id]/promotions/route.d.ts +22 -44
  45. package/.medusa/server/src/api/vendor/campaigns/[id]/promotions/route.js +31 -46
  46. package/.medusa/server/src/api/vendor/campaigns/middlewares.js +30 -18
  47. package/.medusa/server/src/api/vendor/campaigns/query-config.js +2 -2
  48. package/.medusa/server/src/api/vendor/campaigns/validators.d.ts +11 -0
  49. package/.medusa/server/src/api/vendor/campaigns/validators.js +6 -5
  50. package/.medusa/server/src/api/vendor/customer-groups/validators.js +1 -1
  51. package/.medusa/server/src/api/vendor/customers/route.js +2 -2
  52. package/.medusa/server/src/api/vendor/inventory-items/[id]/location-levels/[location_id]/route.d.ts +1 -2
  53. package/.medusa/server/src/api/vendor/inventory-items/[id]/location-levels/[location_id]/route.js +2 -5
  54. package/.medusa/server/src/api/vendor/inventory-items/[id]/location-levels/batch/route.js +2 -2
  55. package/.medusa/server/src/api/vendor/inventory-items/validators.d.ts +8 -8
  56. package/.medusa/server/src/api/vendor/me/route.d.ts +1 -2
  57. package/.medusa/server/src/api/vendor/me/route.js +1 -1
  58. package/.medusa/server/src/api/vendor/members/[id]/route.js +3 -3
  59. package/.medusa/server/src/api/vendor/orders/validators.d.ts +4 -4
  60. package/.medusa/server/src/api/vendor/payout-account/route.js +3 -2
  61. package/.medusa/server/src/api/vendor/price-lists/[id]/prices/route.d.ts +2 -2
  62. package/.medusa/server/src/api/vendor/price-lists/[id]/prices/route.js +2 -2
  63. package/.medusa/server/src/api/vendor/price-lists/route.d.ts +1 -1
  64. package/.medusa/server/src/api/vendor/price-lists/route.js +27 -8
  65. package/.medusa/server/src/api/vendor/price-lists/validators.d.ts +2 -2
  66. package/.medusa/server/src/api/vendor/product-collections/middlewares.js +2 -2
  67. package/.medusa/server/src/api/vendor/product-collections/route.d.ts +18 -0
  68. package/.medusa/server/src/api/vendor/product-collections/route.js +19 -1
  69. package/.medusa/server/src/api/vendor/product-collections/validators.d.ts +404 -15
  70. package/.medusa/server/src/api/vendor/product-collections/validators.js +18 -3
  71. package/.medusa/server/src/api/vendor/product-tags/route.d.ts +4 -1
  72. package/.medusa/server/src/api/vendor/product-tags/route.js +8 -8
  73. package/.medusa/server/src/api/vendor/product-types/validators.d.ts +153 -1
  74. package/.medusa/server/src/api/vendor/product-types/validators.js +6 -3
  75. package/.medusa/server/src/api/vendor/products/[id]/variants/[variant_id]/media/route.d.ts +3 -0
  76. package/.medusa/server/src/api/vendor/products/[id]/variants/[variant_id]/media/route.js +20 -0
  77. package/.medusa/server/src/api/vendor/products/batch/route.d.ts +34 -0
  78. package/.medusa/server/src/api/vendor/products/batch/route.js +79 -0
  79. package/.medusa/server/src/api/vendor/products/middlewares.js +19 -5
  80. package/.medusa/server/src/api/vendor/products/route.d.ts +8 -2
  81. package/.medusa/server/src/api/vendor/products/route.js +29 -21
  82. package/.medusa/server/src/api/vendor/products/utils.d.ts +35 -1
  83. package/.medusa/server/src/api/vendor/products/utils.js +148 -6
  84. package/.medusa/server/src/api/vendor/products/validators.d.ts +275 -99
  85. package/.medusa/server/src/api/vendor/products/validators.js +58 -2
  86. package/.medusa/server/src/api/vendor/promotions/route.d.ts +86 -2
  87. package/.medusa/server/src/api/vendor/promotions/route.js +116 -7
  88. package/.medusa/server/src/api/vendor/promotions/validators.d.ts +237 -38
  89. package/.medusa/server/src/api/vendor/promotions/validators.js +23 -5
  90. package/.medusa/server/src/api/vendor/reservations/middlewares.d.ts +4 -1
  91. package/.medusa/server/src/api/vendor/reservations/middlewares.js +23 -3
  92. package/.medusa/server/src/api/vendor/reservations/route.js +5 -3
  93. package/.medusa/server/src/api/vendor/reservations/validators.d.ts +45 -3
  94. package/.medusa/server/src/api/vendor/reservations/validators.js +5 -1
  95. package/.medusa/server/src/api/vendor/sellers/validators.js +1 -1
  96. package/.medusa/server/src/api/vendor/shipping-profiles/route.d.ts +31 -2
  97. package/.medusa/server/src/api/vendor/shipping-profiles/route.js +61 -10
  98. package/.medusa/server/src/api/vendor/shipping-profiles/validators.d.ts +92 -3
  99. package/.medusa/server/src/api/vendor/shipping-profiles/validators.js +10 -2
  100. package/.medusa/server/src/api/vendor/stock-locations/[id]/route.d.ts +1 -2
  101. package/.medusa/server/src/api/vendor/stock-locations/[id]/route.js +1 -1
  102. package/.medusa/server/src/api/vendor/stock-locations/validators.d.ts +10 -10
  103. package/.medusa/server/src/links/wishlist-product.js +3 -3
  104. package/.medusa/server/src/modules/payout/services/provider.js +1 -2
  105. package/.medusa/server/src/modules/seller/migrations/Migration20260114091400.d.ts +5 -0
  106. package/.medusa/server/src/modules/seller/migrations/Migration20260114091400.js +32 -0
  107. package/.medusa/server/src/modules/seller/service.js +2 -2
  108. package/.medusa/server/src/modules/seller/utils.d.ts +1 -1
  109. package/.medusa/server/src/modules/seller/utils.js +37 -10
  110. package/.medusa/server/src/shared/infra/http/middlewares/check-ownership.d.ts +16 -7
  111. package/.medusa/server/src/shared/infra/http/middlewares/check-ownership.js +26 -18
  112. package/.medusa/server/src/shared/infra/http/middlewares/index.d.ts +1 -0
  113. package/.medusa/server/src/shared/infra/http/middlewares/index.js +2 -1
  114. package/.medusa/server/src/shared/infra/http/middlewares/reject-seller-linked-stock-location.d.ts +19 -0
  115. package/.medusa/server/src/shared/infra/http/middlewares/reject-seller-linked-stock-location.js +28 -0
  116. package/.medusa/server/src/shared/infra/http/middlewares/vendor-promotions-rule-attribute-options-path-params-guard.js +2 -2
  117. package/.medusa/server/src/shared/infra/http/middlewares/vendor-promotions-rule-value-options-path-params-guard.js +2 -2
  118. package/.medusa/server/src/shared/infra/http/utils/products.js +9 -3
  119. package/.medusa/server/src/shared/infra/http/utils/unless-base-url.d.ts +1 -3
  120. package/.medusa/server/src/shared/infra/http/utils/unless-base-url.js +1 -1
  121. package/.medusa/server/src/subscribers/notification-seller-new-order.d.ts +1 -1
  122. package/.medusa/server/src/subscribers/notification-seller-new-order.js +44 -37
  123. package/.medusa/server/src/subscribers/payout-webhook.js +1 -1
  124. package/.medusa/server/src/subscribers/seller-status-changed.js +2 -3
  125. package/.medusa/server/src/utils/stock-locations.d.ts +9 -0
  126. package/.medusa/server/src/utils/stock-locations.js +231 -0
  127. package/.medusa/server/src/workflows/attribute/steps/update-attributes.js +1 -1
  128. package/.medusa/server/src/workflows/attribute/steps/validate-attribute-value.js +7 -3
  129. package/.medusa/server/src/workflows/attribute/utils/products-updated-handler.d.ts +3 -3
  130. package/.medusa/server/src/workflows/attribute/utils/products-updated-handler.js +17 -15
  131. package/.medusa/server/src/workflows/attribute/utils/validate-attribute-values-to-link.js +2 -2
  132. package/.medusa/server/src/workflows/cart/steps/create-order-set.js +1 -1
  133. package/.medusa/server/src/workflows/cart/utils/prepare-confirm-inventory-input.js +1 -1
  134. package/.medusa/server/src/workflows/cart/workflows/split-and-complete-cart.js +5 -7
  135. package/.medusa/server/src/workflows/configuration/steps/create-configuration-rule.js +1 -1
  136. package/.medusa/server/src/workflows/fulfillment-set/create-vendor-service-zone.js +2 -2
  137. package/.medusa/server/src/workflows/hooks/add-order-line-items-pricing-context.d.ts +1 -0
  138. package/.medusa/server/src/workflows/hooks/add-order-line-items-pricing-context.js +75 -0
  139. package/.medusa/server/src/workflows/hooks/fetch-shipping-option-pricing-context.d.ts +1 -0
  140. package/.medusa/server/src/workflows/hooks/fetch-shipping-option-pricing-context.js +97 -0
  141. package/.medusa/server/src/workflows/hooks/product-deleted.js +12 -5
  142. package/.medusa/server/src/workflows/order/steps/create-payout.js +1 -1
  143. package/.medusa/server/src/workflows/order/steps/validate-seller-payout-account.js +2 -2
  144. package/.medusa/server/src/workflows/payout/steps/update-payout-account.js +1 -1
  145. package/.medusa/server/src/workflows/price-list/steps/validate-vendor-price-list-prices.js +2 -2
  146. package/.medusa/server/src/workflows/price-list/workflows/create-vendor-price-list.js +2 -2
  147. package/.medusa/server/src/workflows/product/steps/update-product-status.js +7 -1
  148. package/.medusa/server/src/workflows/product-variants/helpers/product-variant-filter-helper.d.ts +24 -0
  149. package/.medusa/server/src/workflows/product-variants/helpers/product-variant-filter-helper.js +39 -0
  150. package/.medusa/server/src/workflows/product-variants/index.d.ts +3 -0
  151. package/.medusa/server/src/workflows/product-variants/index.js +20 -0
  152. package/.medusa/server/src/workflows/product-variants/steps/filter-variants-combined.d.ts +4 -0
  153. package/.medusa/server/src/workflows/product-variants/steps/filter-variants-combined.js +63 -0
  154. package/.medusa/server/src/workflows/product-variants/steps/get-seller-product-ids.d.ts +4 -0
  155. package/.medusa/server/src/workflows/product-variants/steps/get-seller-product-ids.js +28 -0
  156. package/.medusa/server/src/workflows/product-variants/steps/index.d.ts +2 -0
  157. package/.medusa/server/src/workflows/product-variants/steps/index.js +19 -0
  158. package/.medusa/server/src/workflows/product-variants/types.d.ts +10 -0
  159. package/.medusa/server/src/workflows/product-variants/types.js +3 -0
  160. package/.medusa/server/src/workflows/product-variants/workflows/index.d.ts +1 -0
  161. package/.medusa/server/src/workflows/product-variants/workflows/index.js +18 -0
  162. package/.medusa/server/src/workflows/product-variants/workflows/list-filtered-product-variants.d.ts +31 -0
  163. package/.medusa/server/src/workflows/product-variants/workflows/list-filtered-product-variants.js +115 -0
  164. package/.medusa/server/src/workflows/promotions/steps/ensure-seller-product-rule-after-deletion.d.ts +8 -0
  165. package/.medusa/server/src/workflows/promotions/steps/ensure-seller-product-rule-after-deletion.js +87 -0
  166. package/.medusa/server/src/workflows/promotions/steps/index.d.ts +2 -0
  167. package/.medusa/server/src/workflows/promotions/steps/index.js +3 -1
  168. package/.medusa/server/src/workflows/promotions/steps/inject-seller-product-rule.d.ts +6 -0
  169. package/.medusa/server/src/workflows/promotions/steps/inject-seller-product-rule.js +43 -0
  170. package/.medusa/server/src/workflows/promotions/steps/verify-vendor-target-promotion-rules.d.ts +5 -0
  171. package/.medusa/server/src/workflows/promotions/steps/verify-vendor-target-promotion-rules.js +27 -11
  172. package/.medusa/server/src/workflows/promotions/utils/sync-seller-product-rule-values.d.ts +2 -0
  173. package/.medusa/server/src/workflows/promotions/utils/sync-seller-product-rule-values.js +165 -0
  174. package/.medusa/server/src/workflows/promotions/workflows/batch-vendor-promotion-rules.js +7 -2
  175. package/.medusa/server/src/workflows/promotions/workflows/create-vendor-promotion.js +4 -3
  176. package/.medusa/server/src/workflows/seller/steps/create-member.js +1 -1
  177. package/.medusa/server/src/workflows/seller/steps/create-payment-account.js +1 -1
  178. package/.medusa/server/src/workflows/seller/steps/create-payout-onboarding.js +1 -1
  179. package/.medusa/server/src/workflows/seller/steps/sync-stripe-account.js +1 -1
  180. package/.medusa/server/src/workflows/seller/steps/update-member-invite.js +3 -3
  181. package/.medusa/server/src/workflows/seller/steps/update-seller.js +2 -3
  182. package/.medusa/server/src/workflows/seller/steps/validate-products-to-import.d.ts +28 -23
  183. package/.medusa/server/src/workflows/seller/workflows/import-seller-products.js +2 -2
  184. package/.medusa/server/src/workflows/wishlist/steps/create-wishlist.js +1 -1
  185. package/package.json +1 -1
  186. package/.medusa/server/src/api/store/wishlist/[id]/product/[reference_id]/route.js +0 -61
@@ -0,0 +1,31 @@
1
+ export interface ListFilteredProductVariantsInput {
2
+ seller_id?: string;
3
+ has_price?: boolean;
4
+ has_inventory?: boolean;
5
+ has_stock_location?: boolean;
6
+ has_admin_stock_location?: boolean;
7
+ q?: string;
8
+ fields: string[];
9
+ /**
10
+ * Additional filters coming from API query params (everything except custom filters).
11
+ * Example: id, created_at, updated_at, manage_inventory, allow_backorder, etc.
12
+ */
13
+ filters?: Record<string, unknown>;
14
+ pagination?: {
15
+ skip?: number;
16
+ take?: number;
17
+ order?: Record<string, string>;
18
+ };
19
+ }
20
+ export interface ListFilteredProductVariantsOutput {
21
+ variants: unknown[];
22
+ count: number;
23
+ offset: number;
24
+ limit: number;
25
+ }
26
+ export declare const listFilteredProductVariantsWorkflow: import("@medusajs/framework/workflows-sdk").ReturnWorkflow<ListFilteredProductVariantsInput, import("@medusajs/framework/workflows-sdk").WorkflowData<{
27
+ variants: (any[] | import("@medusajs/framework/workflows-sdk").WorkflowData<any[]>) & any[];
28
+ count: (number | import("@medusajs/framework/workflows-sdk").WorkflowData<number>) & number;
29
+ offset: (number | import("@medusajs/framework/workflows-sdk").WorkflowData<number>) & number;
30
+ limit: (number | import("@medusajs/framework/workflows-sdk").WorkflowData<number>) & number;
31
+ }> | undefined, []>;
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listFilteredProductVariantsWorkflow = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
6
+ const core_flows_1 = require("@medusajs/medusa/core-flows");
7
+ const steps_1 = require("../steps");
8
+ exports.listFilteredProductVariantsWorkflow = (0, workflows_sdk_1.createWorkflow)("list-filtered-product-variants", (input) => {
9
+ const hasFilters = (0, workflows_sdk_1.transform)({ input }, ({ input }) => {
10
+ return (!!input.seller_id ||
11
+ input.has_price !== undefined ||
12
+ input.has_inventory !== undefined ||
13
+ input.has_stock_location !== undefined ||
14
+ input.has_admin_stock_location !== undefined);
15
+ });
16
+ const filterResult = (0, workflows_sdk_1.when)({ hasFilters }, ({ hasFilters }) => hasFilters).then(() => {
17
+ return (0, steps_1.filterVariantsCombinedStep)({
18
+ seller_id: input.seller_id,
19
+ has_price: input.has_price,
20
+ has_inventory: input.has_inventory,
21
+ has_stock_location: input.has_stock_location,
22
+ has_admin_stock_location: input.has_admin_stock_location,
23
+ });
24
+ });
25
+ const finalVariantIds = (0, workflows_sdk_1.transform)({ filterResult }, ({ filterResult }) => {
26
+ return filterResult?.variantIds ?? null;
27
+ });
28
+ const finalVariantIdsAfterIntersection = (0, workflows_sdk_1.transform)({ input, finalVariantIds }, ({ input, finalVariantIds }) => {
29
+ if (finalVariantIds === null) {
30
+ return null;
31
+ }
32
+ const rawExisting = input.filters?.id;
33
+ const existingIds = Array.isArray(rawExisting)
34
+ ? rawExisting.filter((id) => typeof id === "string" && id.length > 0)
35
+ : typeof rawExisting === "string" && rawExisting.length > 0
36
+ ? [rawExisting]
37
+ : [];
38
+ if (!existingIds.length) {
39
+ return finalVariantIds;
40
+ }
41
+ const set = new Set(existingIds);
42
+ return finalVariantIds.filter((id) => set.has(id));
43
+ });
44
+ const isEmpty = (0, workflows_sdk_1.transform)({ finalVariantIdsAfterIntersection }, ({ finalVariantIdsAfterIntersection }) => {
45
+ return (finalVariantIdsAfterIntersection !== null &&
46
+ Array.isArray(finalVariantIdsAfterIntersection) &&
47
+ finalVariantIdsAfterIntersection.length === 0);
48
+ });
49
+ const emptyResponse = (0, workflows_sdk_1.when)({ isEmpty }, ({ isEmpty }) => isEmpty).then(() => {
50
+ return (0, workflows_sdk_1.transform)({ pagination: input.pagination }, ({ pagination }) => ({
51
+ variants: [],
52
+ count: 0,
53
+ offset: pagination?.skip || 0,
54
+ limit: pagination?.take || 50,
55
+ }));
56
+ });
57
+ const dataResponse = (0, workflows_sdk_1.when)({ isEmpty }, ({ isEmpty }) => !isEmpty).then(() => {
58
+ const finalFilters = (0, workflows_sdk_1.transform)({ input, finalVariantIdsAfterIntersection }, ({ input, finalVariantIdsAfterIntersection }) => {
59
+ const filters = {
60
+ ...(input.filters ?? {}),
61
+ };
62
+ if (finalVariantIdsAfterIntersection !== null) {
63
+ filters.id = finalVariantIdsAfterIntersection;
64
+ }
65
+ const q = typeof input.q === "string" ? input.q.trim() : "";
66
+ if (q) {
67
+ const searchOr = [
68
+ { title: { $ilike: `%${q}%` } },
69
+ { sku: { $ilike: `%${q}%` } },
70
+ ];
71
+ // Don't overwrite existing $or/$and from validated filters – instead, AND the search in.
72
+ const existingAnd = filters.$and;
73
+ if (Array.isArray(existingAnd)) {
74
+ filters.$and = [...existingAnd, { $or: searchOr }];
75
+ }
76
+ else if (filters.$or) {
77
+ filters.$and = [{ $or: filters.$or }, { $or: searchOr }];
78
+ delete filters.$or;
79
+ }
80
+ else {
81
+ filters.$or = searchOr;
82
+ }
83
+ }
84
+ return filters;
85
+ });
86
+ const fields = (0, workflows_sdk_1.transform)({ input }, ({ input }) => {
87
+ return (0, utils_1.deduplicate)([
88
+ ...(input.fields ?? []),
89
+ "id",
90
+ "title",
91
+ "sku",
92
+ "product_id",
93
+ "created_at",
94
+ "updated_at",
95
+ ]);
96
+ });
97
+ const { data: variants, metadata } = (0, core_flows_1.useQueryGraphStep)({
98
+ entity: "product_variant",
99
+ fields,
100
+ filters: finalFilters,
101
+ pagination: input.pagination,
102
+ });
103
+ return (0, workflows_sdk_1.transform)({ variants, metadata }, ({ variants, metadata }) => ({
104
+ variants,
105
+ count: metadata?.count || 0,
106
+ offset: metadata?.skip || 0,
107
+ limit: metadata?.take || 50,
108
+ }));
109
+ });
110
+ const result = (0, workflows_sdk_1.transform)({ emptyResponse, dataResponse }, ({ emptyResponse, dataResponse }) => {
111
+ return emptyResponse || dataResponse;
112
+ });
113
+ return new workflows_sdk_1.WorkflowResponse(result);
114
+ });
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1maWx0ZXJlZC1wcm9kdWN0LXZhcmlhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9wcm9kdWN0LXZhcmlhbnRzL3dvcmtmbG93cy9saXN0LWZpbHRlcmVkLXByb2R1Y3QtdmFyaWFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscURBQXdEO0FBQ3hELHFFQUsyQztBQUMzQyw0REFBZ0U7QUFFaEUsb0NBQXNEO0FBNkJ6QyxRQUFBLG1DQUFtQyxHQUFHLElBQUEsOEJBQWMsRUFDL0QsZ0NBQWdDLEVBQ2hDLENBQUMsS0FBdUMsRUFBRSxFQUFFO0lBQzFDLE1BQU0sVUFBVSxHQUFHLElBQUEseUJBQVMsRUFBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQ3BELE9BQU8sQ0FDTCxDQUFDLENBQUMsS0FBSyxDQUFDLFNBQVM7WUFDakIsS0FBSyxDQUFDLFNBQVMsS0FBSyxTQUFTO1lBQzdCLEtBQUssQ0FBQyxhQUFhLEtBQUssU0FBUztZQUNqQyxLQUFLLENBQUMsa0JBQWtCLEtBQUssU0FBUztZQUN0QyxLQUFLLENBQUMsd0JBQXdCLEtBQUssU0FBUyxDQUM3QyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLFlBQVksR0FBRyxJQUFBLG9CQUFJLEVBQ3ZCLEVBQUUsVUFBVSxFQUFFLEVBQ2QsQ0FBQyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQy9CLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUNWLE9BQU8sSUFBQSxrQ0FBMEIsRUFBQztZQUNoQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1lBQzFCLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYTtZQUNsQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsa0JBQWtC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
@@ -0,0 +1,8 @@
1
+ import { BatchPromotionRulesWorkflowInput } from '@medusajs/medusa/core-flows';
2
+ type Input = {
3
+ batchInput: BatchPromotionRulesWorkflowInput;
4
+ seller_id: string;
5
+ promotion_id: string;
6
+ };
7
+ export declare const ensureSellerProductRuleAfterDeletionStep: import("@medusajs/framework/workflows-sdk").StepFunction<Input, BatchPromotionRulesWorkflowInput>;
8
+ export {};
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ensureSellerProductRuleAfterDeletionStep = void 0;
7
+ const utils_1 = require("@medusajs/framework/utils");
8
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
9
+ const seller_product_1 = __importDefault(require("../../../links/seller-product"));
10
+ const inject_seller_product_rule_1 = require("./inject-seller-product-rule");
11
+ const isProductRule = (rule) => rule?.attribute === 'items.product.id';
12
+ const normalizeValues = (values) => Array.isArray(values) ? values : [values];
13
+ exports.ensureSellerProductRuleAfterDeletionStep = (0, workflows_sdk_1.createStep)('ensure-seller-product-rule-after-deletion', async (input, { container }) => {
14
+ const { batchInput } = input;
15
+ if (batchInput.rule_type !== 'target_rules') {
16
+ return new workflows_sdk_1.StepResponse(batchInput);
17
+ }
18
+ const createdRules = batchInput.create || [];
19
+ const productRulesToCreate = createdRules.filter(isProductRule);
20
+ const nonProductRulesToCreate = createdRules.filter((rule) => !isProductRule(rule));
21
+ const hasDeletions = Boolean(batchInput.delete?.length);
22
+ const hasNewProductRule = productRulesToCreate.length > 0;
23
+ if (!hasDeletions && !hasNewProductRule) {
24
+ return new workflows_sdk_1.StepResponse(batchInput);
25
+ }
26
+ const promotionModule = container.resolve(utils_1.Modules.PROMOTION);
27
+ const promotion = await promotionModule.retrievePromotion(input.promotion_id, {
28
+ relations: [
29
+ 'application_method.target_rules',
30
+ 'application_method.target_rules.values'
31
+ ]
32
+ });
33
+ const deleteSet = new Set(batchInput.delete || []);
34
+ const currentRules = promotion.application_method?.target_rules || [];
35
+ const remainingRules = currentRules.filter((rule) => !deleteSet.has(rule.id));
36
+ if (hasNewProductRule) {
37
+ const baseRule = productRulesToCreate[0];
38
+ const nextRule = {
39
+ ...baseRule,
40
+ values: normalizeValues(baseRule.values),
41
+ description: baseRule.description === inject_seller_product_rule_1.SELLER_PRODUCTS_RULE_DESCRIPTION
42
+ ? undefined
43
+ : baseRule.description
44
+ };
45
+ const existingProductRuleIds = remainingRules
46
+ .filter(isProductRule)
47
+ .map((rule) => rule.id)
48
+ .filter(Boolean);
49
+ existingProductRuleIds.forEach((id) => deleteSet.add(id));
50
+ return new workflows_sdk_1.StepResponse({
51
+ ...batchInput,
52
+ delete: Array.from(deleteSet),
53
+ create: [nextRule, ...nonProductRulesToCreate]
54
+ });
55
+ }
56
+ const hasProductRule = remainingRules.some(isProductRule);
57
+ if (hasProductRule) {
58
+ return new workflows_sdk_1.StepResponse({
59
+ ...batchInput,
60
+ delete: Array.from(deleteSet)
61
+ });
62
+ }
63
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
64
+ const { data: sellerProducts } = await query.graph({
65
+ entity: seller_product_1.default.entryPoint,
66
+ fields: ['product_id'],
67
+ filters: {
68
+ seller_id: input.seller_id
69
+ }
70
+ });
71
+ const productIds = sellerProducts.map((sp) => sp.product_id);
72
+ if (productIds.length === 0) {
73
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Seller has no products. Cannot remove all product rules.');
74
+ }
75
+ const defaultRule = {
76
+ attribute: 'items.product.id',
77
+ operator: 'in',
78
+ values: productIds,
79
+ description: inject_seller_product_rule_1.SELLER_PRODUCTS_RULE_DESCRIPTION
80
+ };
81
+ return new workflows_sdk_1.StepResponse({
82
+ ...batchInput,
83
+ delete: Array.from(deleteSet),
84
+ create: [defaultRule, ...createdRules]
85
+ });
86
+ });
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5zdXJlLXNlbGxlci1wcm9kdWN0LXJ1bGUtYWZ0ZXItZGVsZXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3Byb21vdGlvbnMvc3RlcHMvZW5zdXJlLXNlbGxlci1wcm9kdWN0LXJ1bGUtYWZ0ZXItZGVsZXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EscURBSWtDO0FBQ2xDLHFFQUE0RTtBQUU1RSxtRkFBeUQ7QUFDekQsNkVBQStFO0FBUS9FLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBNkIsRUFBRSxFQUFFLENBQ3RELElBQUksRUFBRSxTQUFTLEtBQUssa0JBQWtCLENBQUE7QUFFeEMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxNQUF5QixFQUFFLEVBQUUsQ0FDcEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBRTlCLFFBQUEsd0NBQXdDLEdBQUcsSUFBQSwwQkFBVSxFQUNoRSwyQ0FBMkMsRUFDM0MsS0FBSyxFQUFFLEtBQVksRUFBRSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7SUFDcEMsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLEtBQUssQ0FBQTtJQUU1QixJQUFJLFVBQVUsQ0FBQyxTQUFTLEtBQUssY0FBYyxFQUFFLENBQUM7UUFDNUMsT0FBTyxJQUFJLDRCQUFZLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDckMsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFBO0lBQzVDLE1BQU0sb0JBQW9CLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUMvRCxNQUFNLHVCQUF1QixHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENB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
@@ -2,3 +2,5 @@ export * from './verify-vendor-promotion';
2
2
  export * from './verify-vendor-campaign';
3
3
  export * from './verify-vendor-target-promotion-rules';
4
4
  export * from './register-usage-step';
5
+ export * from './inject-seller-product-rule';
6
+ export * from './ensure-seller-product-rule-after-deletion';
@@ -18,4 +18,6 @@ __exportStar(require("./verify-vendor-promotion"), exports);
18
18
  __exportStar(require("./verify-vendor-campaign"), exports);
19
19
  __exportStar(require("./verify-vendor-target-promotion-rules"), exports);
20
20
  __exportStar(require("./register-usage-step"), exports);
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3Byb21vdGlvbnMvc3RlcHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDREQUF5QztBQUN6QywyREFBd0M7QUFDeEMseUVBQXNEO0FBQ3RELHdEQUFxQyJ9
21
+ __exportStar(require("./inject-seller-product-rule"), exports);
22
+ __exportStar(require("./ensure-seller-product-rule-after-deletion"), exports);
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3Byb21vdGlvbnMvc3RlcHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDREQUF5QztBQUN6QywyREFBd0M7QUFDeEMseUVBQXNEO0FBQ3RELHdEQUFxQztBQUNyQywrREFBNEM7QUFDNUMsOEVBQTJEIn0=
@@ -0,0 +1,6 @@
1
+ import { CreatePromotionDTO } from '@medusajs/framework/types';
2
+ export declare const SELLER_PRODUCTS_RULE_DESCRIPTION = "seller_products_default_rule";
3
+ export declare const injectSellerProductRuleStep: import("@medusajs/framework/workflows-sdk").StepFunction<{
4
+ promotion: CreatePromotionDTO;
5
+ seller_id: string;
6
+ }, CreatePromotionDTO>;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.injectSellerProductRuleStep = exports.SELLER_PRODUCTS_RULE_DESCRIPTION = void 0;
7
+ const utils_1 = require("@medusajs/framework/utils");
8
+ const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
9
+ const seller_product_1 = __importDefault(require("../../../links/seller-product"));
10
+ exports.SELLER_PRODUCTS_RULE_DESCRIPTION = 'seller_products_default_rule';
11
+ exports.injectSellerProductRuleStep = (0, workflows_sdk_1.createStep)('inject-seller-product-rule', async (input, { container }) => {
12
+ if (input.promotion.application_method.target_rules && input.promotion.application_method.target_rules.length > 0) {
13
+ return new workflows_sdk_1.StepResponse(input.promotion);
14
+ }
15
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
16
+ const { data: sellerProducts } = await query.graph({
17
+ entity: seller_product_1.default.entryPoint,
18
+ fields: ['product_id'],
19
+ filters: {
20
+ seller_id: input.seller_id
21
+ }
22
+ });
23
+ const productIds = sellerProducts.map((sp) => sp.product_id);
24
+ if (productIds.length === 0) {
25
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Seller has no products. Cannot create a promotion without products.');
26
+ }
27
+ const existingTargetRules = input.promotion.application_method?.target_rules || [];
28
+ const sellerProductRule = {
29
+ attribute: 'items.product.id',
30
+ operator: 'in',
31
+ values: productIds,
32
+ description: exports.SELLER_PRODUCTS_RULE_DESCRIPTION
33
+ };
34
+ const promotionWithDefaultRule = {
35
+ ...input.promotion,
36
+ application_method: {
37
+ ...input.promotion.application_method,
38
+ target_rules: [sellerProductRule, ...existingTargetRules]
39
+ }
40
+ };
41
+ return new workflows_sdk_1.StepResponse(promotionWithDefaultRule);
42
+ });
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LXNlbGxlci1wcm9kdWN0LXJ1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvd29ya2Zsb3dzL3Byb21vdGlvbnMvc3RlcHMvaW5qZWN0LXNlbGxlci1wcm9kdWN0LXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EscURBR2tDO0FBQ2xDLHFFQUE0RTtBQUU1RSxtRkFBeUQ7QUFFNUMsUUFBQSxnQ0FBZ0MsR0FBRyw4QkFBOEIsQ0FBQTtBQUVqRSxRQUFBLDJCQUEyQixHQUFHLElBQUEsMEJBQVUsRUFDbkQsNEJBQTRCLEVBQzVCLEtBQUssRUFDSCxLQUEyRCxFQUMzRCxFQUFFLFNBQVMsRUFBRSxFQUNiLEVBQUU7SUFDRixJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsWUFBWSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsSCxPQUFPLElBQUksNEJBQVksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUVELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFaEUsTUFBTSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDakQsTUFBTSxFQUFFLHdCQUFhLENBQUMsVUFBVTtRQUNoQyxNQUFNLEVBQUUsQ0FBQyxZQUFZLENBQUM7UUFDdEIsT0FBTyxFQUFFO1lBQ1AsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1NBQzNCO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBRTVELElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM1QixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixxRUFBcUUsQ0FDdEUsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLG1CQUFtQixHQUN2QixLQUFLLENBQUMsU0FBUyxDQUFDLGtCQUFrQixFQUFFLFlBQVksSUFBSSxFQUFFLENBQUE7SUFFeEQsTUFBTSxpQkFBaUIsR0FBRztRQUN4QixTQUFTLEVBQUUsa0JBQWtCO1FBQzdCLFFBQVEsRUFBRSxJQUFhO1FBQ3ZCLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFdBQVcsRUFBRSx3Q0FBZ0M7S0FDOUMsQ0FBQTtJQUVELE1BQU0sd0JBQXdCLEdBQXVCO1FBQ25ELEdBQUcsS0FBSyxDQUFDLFNBQVM7UUFDbEIsa0JBQWtCLEVBQUU7WUFDbEIsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLGtCQUFrQjtZQUNyQyxZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLG1CQUFtQixDQUFDO1NBQzFEO0tBQ0YsQ0FBQTtJQUVELE9BQU8sSUFBSSw0QkFBWSxDQUFDLHdCQUF3QixDQUFDLENBQUE7QUFDbkQsQ0FBQyxDQUNGLENBQUEifQ==
@@ -1,4 +1,9 @@
1
1
  import { CreatePromotionRuleDTO } from '@medusajs/framework/types';
2
+ /**
3
+ * Verifies that any product-based target rules in a promotion only reference
4
+ * products that belong to the seller. Other attribute types (category, collection, etc.)
5
+ * are allowed and will be combined with the default seller products rule using AND logic.
6
+ */
2
7
  export declare const verifyVendorTargetPromotionRulesStep: import("@medusajs/framework/workflows-sdk").StepFunction<{
3
8
  rules?: CreatePromotionRuleDTO[];
4
9
  seller_id: string;
@@ -7,25 +7,41 @@ exports.verifyVendorTargetPromotionRulesStep = void 0;
7
7
  const utils_1 = require("@medusajs/framework/utils");
8
8
  const workflows_sdk_1 = require("@medusajs/framework/workflows-sdk");
9
9
  const seller_product_1 = __importDefault(require("../../../links/seller-product"));
10
+ const inject_seller_product_rule_1 = require("./inject-seller-product-rule");
11
+ /**
12
+ * Verifies that any product-based target rules in a promotion only reference
13
+ * products that belong to the seller. Other attribute types (category, collection, etc.)
14
+ * are allowed and will be combined with the default seller products rule using AND logic.
15
+ */
10
16
  exports.verifyVendorTargetPromotionRulesStep = (0, workflows_sdk_1.createStep)('verify-vendor-target-promotion-rules', async (input, { container }) => {
17
+ if (!input.rules || input.rules.length === 0) {
18
+ return;
19
+ }
11
20
  const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
12
- const nonProductAttributes = input.rules
13
- ?.map((p) => p.attribute)
14
- .filter((attr) => attr !== 'items.product.id') || [];
15
- if (nonProductAttributes.length) {
16
- throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Invalid attribute!');
21
+ const productRules = input.rules.filter((rule) => rule.attribute === 'items.product.id' &&
22
+ rule.description !== inject_seller_product_rule_1.SELLER_PRODUCTS_RULE_DESCRIPTION);
23
+ if (productRules.length === 0) {
24
+ return;
25
+ }
26
+ const productIds = productRules
27
+ .map((rule) => rule.values)
28
+ .flat()
29
+ .filter((value) => typeof value === 'string');
30
+ if (productIds.length === 0) {
31
+ return;
17
32
  }
18
- const products = input.rules?.map((p) => p.values).flat() || [];
19
- const { data: relations } = await query.graph({
33
+ const { data: sellerProducts } = await query.graph({
20
34
  entity: seller_product_1.default.entryPoint,
21
- fields: ['id'],
35
+ fields: ['product_id'],
22
36
  filters: {
23
37
  seller_id: input.seller_id,
24
- product_id: products
38
+ product_id: productIds
25
39
  }
26
40
  });
27
- if (relations.length !== products.length) {
41
+ const sellerProductIds = new Set(sellerProducts.map((sp) => sp.product_id));
42
+ const invalidProducts = productIds.filter((id) => !sellerProductIds.has(id));
43
+ if (invalidProducts.length > 0) {
28
44
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, 'Vendor Promotion can be applied only to seller own products!');
29
45
  }
30
46
  });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5LXZlbmRvci10YXJnZXQtcHJvbW90aW9uLXJ1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9wcm9tb3Rpb25zL3N0ZXBzL3ZlcmlmeS12ZW5kb3ItdGFyZ2V0LXByb21vdGlvbi1ydWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxxREFHa0M7QUFDbEMscUVBQThEO0FBRTlELG1GQUF5RDtBQUU1QyxRQUFBLG9DQUFvQyxHQUFHLElBQUEsMEJBQVUsRUFDNUQsc0NBQXNDLEVBQ3RDLEtBQUssRUFDSCxLQUE4RCxFQUM5RCxFQUFFLFNBQVMsRUFBRSxFQUNiLEVBQUU7SUFDRixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRWhFLE1BQU0sb0JBQW9CLEdBQ3hCLEtBQUssQ0FBQyxLQUFLO1FBQ1QsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDeEIsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUE7SUFFeEQsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5QixvQkFBb0IsQ0FDckIsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQTtJQUUvRCxNQUFNLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUM1QyxNQUFNLEVBQUUsd0JBQWEsQ0FBQyxVQUFVO1FBQ2hDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztRQUNkLE9BQU8sRUFBRTtZQUNQLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixVQUFVLEVBQUUsUUFBUTtTQUNyQjtLQUNGLENBQUMsQ0FBQTtJQUVGLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDekMsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsOERBQThELENBQy9ELENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUNGLENBQUEifQ==
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5LXZlbmRvci10YXJnZXQtcHJvbW90aW9uLXJ1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9wcm9tb3Rpb25zL3N0ZXBzL3ZlcmlmeS12ZW5kb3ItdGFyZ2V0LXByb21vdGlvbi1ydWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxxREFHa0M7QUFDbEMscUVBQThEO0FBRTlELG1GQUF5RDtBQUN6RCw2RUFBK0U7QUFFL0U7Ozs7R0FJRztBQUNVLFFBQUEsb0NBQW9DLEdBQUcsSUFBQSwwQkFBVSxFQUM1RCxzQ0FBc0MsRUFDdEMsS0FBSyxFQUNILEtBQThELEVBQzlELEVBQUUsU0FBUyxFQUFFLEVBQ2IsRUFBRTtJQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzdDLE9BQU07SUFDUixDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUVoRSxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDckMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNQLElBQUksQ0FBQyxTQUFTLEtBQUssa0JBQWtCO1FBQ3JDLElBQUksQ0FBQyxXQUFXLEtBQUssNkRBQWdDLENBQ3hELENBQUE7SUFFRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDOUIsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxZQUFZO1NBQzVCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUMxQixJQUFJLEVBQUU7U0FDTixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQW1CLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQTtJQUVoRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDNUIsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNqRCxNQUFNLEVBQUUsd0JBQWEsQ0FBQyxVQUFVO1FBQ2hDLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQztRQUN0QixPQUFPLEVBQUU7WUFDUCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsVUFBVSxFQUFFLFVBQVU7U0FDdkI7S0FDRixDQUFDLENBQUE7SUFFRixNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO0lBQzNFLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFFNUUsSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQy9CLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDhEQUE4RCxDQUMvRCxDQUFBO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FDRixDQUFBIn0=
@@ -0,0 +1,2 @@
1
+ import { MedusaContainer } from "@medusajs/framework";
2
+ export declare const syncSellersPromotionsDefaultProductRuleValues: (container: MedusaContainer, productIds: string[], action: "add" | "remove") => Promise<void>;
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.syncSellersPromotionsDefaultProductRuleValues = void 0;
7
+ const utils_1 = require("@medusajs/framework/utils");
8
+ const seller_product_1 = __importDefault(require("../../../links/seller-product"));
9
+ const seller_promotion_1 = __importDefault(require("../../../links/seller-promotion"));
10
+ const inject_seller_product_rule_1 = require("../steps/inject-seller-product-rule");
11
+ const TARGET_RULE_FIELDS = [
12
+ "id",
13
+ "application_method.target_rules.*",
14
+ "application_method.target_rules.id",
15
+ "application_method.target_rules.description",
16
+ "application_method.target_rules.attribute",
17
+ "application_method.target_rules.values",
18
+ "application_method.target_rules.values.id",
19
+ "application_method.target_rules.values.value",
20
+ ];
21
+ const buildRuleUpdates = (promotions, productIds, action, options = {}) => {
22
+ const updates = [];
23
+ for (const promotion of promotions) {
24
+ const rules = promotion.application_method?.target_rules?.filter((r) => action === "add"
25
+ ? r.description === inject_seller_product_rule_1.SELLER_PRODUCTS_RULE_DESCRIPTION
26
+ : r.attribute === "items.product.id") || [];
27
+ for (const rule of rules) {
28
+ const existingValues = (rule.values || []).map((v) => v.value);
29
+ let nextValues = action === "add"
30
+ ? (0, utils_1.deduplicate)([...existingValues, ...productIds])
31
+ : existingValues.filter((value) => !productIds.includes(value));
32
+ if (action === "remove" && nextValues.length === 0) {
33
+ const fallbackValues = options.sellerProductsByPromotion?.get(promotion.id || "") || [];
34
+ if (fallbackValues.length) {
35
+ nextValues = (0, utils_1.deduplicate)(fallbackValues);
36
+ }
37
+ }
38
+ const changed = existingValues.length !== nextValues.length ||
39
+ existingValues.some((v) => !nextValues.includes(v));
40
+ if (!changed) {
41
+ continue;
42
+ }
43
+ updates.push({
44
+ id: rule.id,
45
+ values: nextValues,
46
+ });
47
+ }
48
+ }
49
+ return updates;
50
+ };
51
+ const syncSellersPromotionsDefaultProductRuleValues = async (container, productIds, action) => {
52
+ if (!productIds.length) {
53
+ return;
54
+ }
55
+ const query = container.resolve(utils_1.ContainerRegistrationKeys.QUERY);
56
+ const promotionModule = container.resolve(utils_1.Modules.PROMOTION);
57
+ const logger = container.resolve(utils_1.ContainerRegistrationKeys.LOGGER);
58
+ switch (action) {
59
+ case "remove": {
60
+ const { data: promotions } = await query.graph({
61
+ entity: "promotion",
62
+ fields: TARGET_RULE_FIELDS,
63
+ filters: {
64
+ application_method: {
65
+ target_rules: {
66
+ values: { value: productIds },
67
+ },
68
+ },
69
+ },
70
+ });
71
+ const promotionIds = promotions
72
+ .map((p) => p.id)
73
+ .filter(Boolean);
74
+ const { data: sellerPromotions } = promotionIds.length
75
+ ? await query.graph({
76
+ entity: seller_promotion_1.default.entryPoint,
77
+ fields: ["promotion_id", "seller_id", "promotion.id"],
78
+ filters: { promotion_id: promotionIds },
79
+ })
80
+ : { data: [] };
81
+ const promotionSellerMap = new Map();
82
+ for (const sp of sellerPromotions) {
83
+ if (sp.promotion_id && sp.seller_id && !promotionSellerMap.has(sp.promotion_id)) {
84
+ promotionSellerMap.set(sp.promotion_id, sp.seller_id);
85
+ }
86
+ }
87
+ const sellerIds = Array.from(new Set(promotionSellerMap.values()));
88
+ const { data: sellerProducts } = sellerIds.length
89
+ ? await query.graph({
90
+ entity: seller_product_1.default.entryPoint,
91
+ fields: ["product_id", "seller_id"],
92
+ filters: { seller_id: sellerIds },
93
+ })
94
+ : { data: [] };
95
+ const sellerProductsBySeller = new Map();
96
+ for (const sp of sellerProducts) {
97
+ if (!sp.seller_id || !sp.product_id) {
98
+ continue;
99
+ }
100
+ if (productIds.includes(sp.product_id)) {
101
+ continue;
102
+ }
103
+ const list = sellerProductsBySeller.get(sp.seller_id) ?? [];
104
+ list.push(sp.product_id);
105
+ sellerProductsBySeller.set(sp.seller_id, list);
106
+ }
107
+ const sellerProductsByPromotion = new Map();
108
+ for (const [promotionId, sellerId] of promotionSellerMap.entries()) {
109
+ const products = sellerProductsBySeller.get(sellerId);
110
+ if (products?.length) {
111
+ sellerProductsByPromotion.set(promotionId, (0, utils_1.deduplicate)(products));
112
+ }
113
+ }
114
+ const updates = buildRuleUpdates(promotions, productIds, "remove", { sellerProductsByPromotion });
115
+ if (updates.length) {
116
+ await promotionModule.updatePromotionRules(updates);
117
+ }
118
+ return;
119
+ }
120
+ case "add": {
121
+ const productsBySeller = new Map();
122
+ const { data: sellerProducts } = await query.graph({
123
+ entity: seller_product_1.default.entryPoint,
124
+ fields: ["product_id", "seller_id"],
125
+ filters: { product_id: productIds },
126
+ });
127
+ for (const sp of sellerProducts) {
128
+ const list = productsBySeller.get(sp.seller_id) ?? [];
129
+ list.push(sp.product_id);
130
+ productsBySeller.set(sp.seller_id, list);
131
+ }
132
+ if (!productsBySeller.size) {
133
+ return;
134
+ }
135
+ for (const [seller, sellerProductIds] of productsBySeller.entries()) {
136
+ const { data: sellerPromotions } = await query.graph({
137
+ entity: seller_promotion_1.default.entryPoint,
138
+ fields: ["promotion_id", "promotion.id", ...TARGET_RULE_FIELDS],
139
+ filters: { seller_id: seller },
140
+ });
141
+ const promotionMap = new Map();
142
+ for (const sp of sellerPromotions) {
143
+ const promo = sp.promotion;
144
+ if (promo?.id && !promotionMap.has(promo.id)) {
145
+ promotionMap.set(promo.id, promo);
146
+ }
147
+ }
148
+ const promotions = Array.from(promotionMap.values());
149
+ if (!promotions.length) {
150
+ continue;
151
+ }
152
+ const updates = buildRuleUpdates(promotions, sellerProductIds, "add");
153
+ if (updates.length) {
154
+ await promotionModule.updatePromotionRules(updates);
155
+ }
156
+ }
157
+ return;
158
+ }
159
+ default:
160
+ logger.warn(`Unsupported action "${action}" in syncSellersPromotionsDefaultProductRuleValues; productIds=${productIds.join(",")}`);
161
+ return;
162
+ }
163
+ };
164
+ exports.syncSellersPromotionsDefaultProductRuleValues = syncSellersPromotionsDefaultProductRuleValues;
165
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3luYy1zZWxsZXItcHJvZHVjdC1ydWxlLXZhbHVlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcHJvbW90aW9ucy91dGlscy9zeW5jLXNlbGxlci1wcm9kdWN0LXJ1bGUtdmFsdWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLHFEQUltQztBQUVuQyxtRkFBMEQ7QUFDMUQsdUZBQThEO0FBQzlELG9GQUF1RjtBQUV2RixNQUFNLGtCQUFrQixHQUFHO0lBQ3pCLElBQUk7SUFDSixtQ0FBbUM7SUFDbkMsb0NBQW9DO0lBQ3BDLDZDQUE2QztJQUM3QywyQ0FBMkM7SUFDM0Msd0NBQXdDO0lBQ3hDLDJDQUEyQztJQUMzQyw4Q0FBOEM7Q0FDL0MsQ0FBQztBQU1GLE1BQU0sZ0JBQWdCLEdBQUcsQ0FDdkIsVUFBeUMsRUFDekMsVUFBb0IsRUFDcEIsTUFBd0IsRUFDeEIsVUFBbUMsRUFBRSxFQUNyQyxFQUFFO0lBQ0YsTUFBTSxPQUFPLEdBQTRDLEVBQUUsQ0FBQztJQUU1RCxLQUFLLE1BQU0sU0FBUyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ25DLE1BQU0sS0FBSyxHQUNULFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDdkQsTUFBTSxLQUFLLEtBQUs7WUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyw2REFBZ0M7WUFDcEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssa0JBQWtCLENBQ3ZDLElBQUksRUFBRSxDQUFDO1FBRVYsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUN6QixNQUFNLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMs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
@@ -11,8 +11,13 @@ exports.batchVendorPromotionRulesWorkflow = (0, workflows_sdk_1.createWorkflow)(
11
11
  seller_id: input.seller_id
12
12
  })));
13
13
  });
14
+ const batchInputWithDefaultRule = (0, steps_1.ensureSellerProductRuleAfterDeletionStep)((0, workflows_sdk_1.transform)(input, (input) => ({
15
+ batchInput: input.data,
16
+ seller_id: input.seller_id,
17
+ promotion_id: input.data.id
18
+ })));
14
19
  core_flows_1.batchPromotionRulesWorkflow.runAsStep({
15
- input: input.data
20
+ input: batchInputWithDefaultRule
16
21
  });
17
22
  });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2gtdmVuZG9yLXByb21vdGlvbi1ydWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcHJvbW90aW9ucy93b3JrZmxvd3MvYmF0Y2gtdmVuZG9yLXByb21vdGlvbi1ydWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0REFHb0M7QUFDcEMsMkRBQXlFO0FBRXpFLG9DQUErRDtBQUVsRCxRQUFBLGlDQUFpQyxHQUFHLElBQUEsOEJBQWMsRUFDN0QsOEJBQThCLEVBQzlCLFVBQVUsS0FHVDtJQUNDLElBQUEsb0JBQUksRUFBQyxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7UUFDeEUsSUFBQSw0Q0FBb0MsRUFDbEMsSUFBQSx5QkFBUyxFQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzQixLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNO1lBQ3hCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztTQUMzQixDQUFDLENBQUMsQ0FDSixDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQUE7SUFFRix3Q0FBMkIsQ0FBQyxTQUFTLENBQUM7UUFDcEMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJO0tBQ2xCLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FDRixDQUFBIn0=
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2gtdmVuZG9yLXByb21vdGlvbi1ydWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcHJvbW90aW9ucy93b3JrZmxvd3MvYmF0Y2gtdmVuZG9yLXByb21vdGlvbi1ydWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0REFHb0M7QUFDcEMsMkRBQXlFO0FBRXpFLG9DQUdpQjtBQUVKLFFBQUEsaUNBQWlDLEdBQUcsSUFBQSw4QkFBYyxFQUM3RCw4QkFBOEIsRUFDOUIsVUFBVSxLQUdUO0lBQ0MsSUFBQSxvQkFBSSxFQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUN4RSxJQUFBLDRDQUFvQyxFQUNsQyxJQUFBLHlCQUFTLEVBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU07WUFDeEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1NBQzNCLENBQUMsQ0FBQyxDQUNKLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLE1BQU0seUJBQXlCLEdBQUcsSUFBQSxnREFBd0MsRUFDeEUsSUFBQSx5QkFBUyxFQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzQixVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUk7UUFDdEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQzFCLFlBQVksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7S0FDNUIsQ0FBQyxDQUFDLENBQ0osQ0FBQTtJQUVELHdDQUEyQixDQUFDLFNBQVMsQ0FBQztRQUNwQyxLQUFLLEVBQUUseUJBQXlCO0tBQ2pDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FDRixDQUFBIn0=