@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.
- package/.medusa/server/src/api/admin/custom/middlewares.d.ts +2 -0
- package/.medusa/server/src/api/admin/custom/middlewares.js +8 -0
- package/.medusa/server/src/api/admin/custom/product-variants/middlewares.d.ts +2 -0
- package/.medusa/server/src/api/admin/custom/product-variants/middlewares.js +16 -0
- package/.medusa/server/src/api/admin/custom/product-variants/query-config.d.ts +7 -0
- package/.medusa/server/src/api/admin/custom/product-variants/query-config.js +48 -0
- package/.medusa/server/src/api/admin/custom/product-variants/route.d.ts +100 -0
- package/.medusa/server/src/api/admin/custom/product-variants/route.js +133 -0
- package/.medusa/server/src/api/admin/custom/product-variants/utils.d.ts +19 -0
- package/.medusa/server/src/api/admin/custom/product-variants/utils.js +31 -0
- package/.medusa/server/src/api/admin/custom/product-variants/validators.d.ts +327 -0
- package/.medusa/server/src/api/admin/custom/product-variants/validators.js +34 -0
- package/.medusa/server/src/api/admin/inventory-items/[id]/location-levels/[location_id]/route.d.ts +3 -0
- package/.medusa/server/src/api/admin/inventory-items/[id]/location-levels/[location_id]/route.js +36 -0
- package/.medusa/server/src/api/admin/middlewares.js +13 -7
- package/.medusa/server/src/api/admin/notifications/route.js +8 -8
- package/.medusa/server/src/api/admin/orders/[id]/route.d.ts +3 -3
- package/.medusa/server/src/api/admin/orders/[id]/route.js +6 -6
- package/.medusa/server/src/api/admin/orders/middlewares.d.ts +2 -0
- package/.medusa/server/src/api/admin/orders/middlewares.js +17 -0
- package/.medusa/server/src/api/admin/products/validators.d.ts +98 -98
- package/.medusa/server/src/api/admin/reservations/middlewares.d.ts +2 -0
- package/.medusa/server/src/api/admin/reservations/middlewares.js +12 -0
- package/.medusa/server/src/api/admin/sellers/validators.d.ts +2 -2
- package/.medusa/server/src/api/admin/sellers/validators.js +9 -7
- package/.medusa/server/src/api/store/carts/[id]/line-items/[line_id]/route.js +2 -2
- package/.medusa/server/src/api/store/carts/[id]/promotions/route.js +3 -4
- package/.medusa/server/src/api/store/carts/[id]/route.d.ts +6 -0
- package/.medusa/server/src/api/store/carts/[id]/route.js +32 -0
- package/.medusa/server/src/api/store/carts/middlewares.js +4 -5
- package/.medusa/server/src/api/store/middlewares.js +11 -9
- package/.medusa/server/src/api/store/products/middlewares.d.ts +2 -0
- package/.medusa/server/src/api/store/products/middlewares.js +13 -0
- package/.medusa/server/src/api/store/products/search/route.d.ts +81 -0
- package/.medusa/server/src/api/store/products/search/route.js +170 -0
- package/.medusa/server/src/api/store/products/validators.d.ts +36 -0
- package/.medusa/server/src/api/store/products/validators.js +17 -0
- package/.medusa/server/src/api/store/wishlist/middlewares.d.ts +1 -1
- package/.medusa/server/src/api/store/wishlist/middlewares.js +47 -25
- package/.medusa/server/src/api/store/wishlist/{[id]/product → product}/[reference_id]/route.d.ts +3 -9
- package/.medusa/server/src/api/store/wishlist/product/[reference_id]/route.js +65 -0
- package/.medusa/server/src/api/store/wishlist/route.d.ts +789 -28
- package/.medusa/server/src/api/store/wishlist/route.js +816 -37
- package/.medusa/server/src/api/vendor/campaigns/[id]/promotions/route.d.ts +22 -44
- package/.medusa/server/src/api/vendor/campaigns/[id]/promotions/route.js +31 -46
- package/.medusa/server/src/api/vendor/campaigns/middlewares.js +30 -18
- package/.medusa/server/src/api/vendor/campaigns/query-config.js +2 -2
- package/.medusa/server/src/api/vendor/campaigns/validators.d.ts +11 -0
- package/.medusa/server/src/api/vendor/campaigns/validators.js +6 -5
- package/.medusa/server/src/api/vendor/customer-groups/validators.js +1 -1
- package/.medusa/server/src/api/vendor/customers/route.js +2 -2
- package/.medusa/server/src/api/vendor/inventory-items/[id]/location-levels/[location_id]/route.d.ts +1 -2
- package/.medusa/server/src/api/vendor/inventory-items/[id]/location-levels/[location_id]/route.js +2 -5
- package/.medusa/server/src/api/vendor/inventory-items/[id]/location-levels/batch/route.js +2 -2
- package/.medusa/server/src/api/vendor/inventory-items/validators.d.ts +8 -8
- package/.medusa/server/src/api/vendor/me/route.d.ts +1 -2
- package/.medusa/server/src/api/vendor/me/route.js +1 -1
- package/.medusa/server/src/api/vendor/members/[id]/route.js +3 -3
- package/.medusa/server/src/api/vendor/orders/validators.d.ts +4 -4
- package/.medusa/server/src/api/vendor/payout-account/route.js +3 -2
- package/.medusa/server/src/api/vendor/price-lists/[id]/prices/route.d.ts +2 -2
- package/.medusa/server/src/api/vendor/price-lists/[id]/prices/route.js +2 -2
- package/.medusa/server/src/api/vendor/price-lists/route.d.ts +1 -1
- package/.medusa/server/src/api/vendor/price-lists/route.js +27 -8
- package/.medusa/server/src/api/vendor/price-lists/validators.d.ts +2 -2
- package/.medusa/server/src/api/vendor/product-collections/middlewares.js +2 -2
- package/.medusa/server/src/api/vendor/product-collections/route.d.ts +18 -0
- package/.medusa/server/src/api/vendor/product-collections/route.js +19 -1
- package/.medusa/server/src/api/vendor/product-collections/validators.d.ts +404 -15
- package/.medusa/server/src/api/vendor/product-collections/validators.js +18 -3
- package/.medusa/server/src/api/vendor/product-tags/route.d.ts +4 -1
- package/.medusa/server/src/api/vendor/product-tags/route.js +8 -8
- package/.medusa/server/src/api/vendor/product-types/validators.d.ts +153 -1
- package/.medusa/server/src/api/vendor/product-types/validators.js +6 -3
- package/.medusa/server/src/api/vendor/products/[id]/variants/[variant_id]/media/route.d.ts +3 -0
- package/.medusa/server/src/api/vendor/products/[id]/variants/[variant_id]/media/route.js +20 -0
- package/.medusa/server/src/api/vendor/products/batch/route.d.ts +34 -0
- package/.medusa/server/src/api/vendor/products/batch/route.js +79 -0
- package/.medusa/server/src/api/vendor/products/middlewares.js +19 -5
- package/.medusa/server/src/api/vendor/products/route.d.ts +8 -2
- package/.medusa/server/src/api/vendor/products/route.js +29 -21
- package/.medusa/server/src/api/vendor/products/utils.d.ts +35 -1
- package/.medusa/server/src/api/vendor/products/utils.js +148 -6
- package/.medusa/server/src/api/vendor/products/validators.d.ts +275 -99
- package/.medusa/server/src/api/vendor/products/validators.js +58 -2
- package/.medusa/server/src/api/vendor/promotions/route.d.ts +86 -2
- package/.medusa/server/src/api/vendor/promotions/route.js +116 -7
- package/.medusa/server/src/api/vendor/promotions/validators.d.ts +237 -38
- package/.medusa/server/src/api/vendor/promotions/validators.js +23 -5
- package/.medusa/server/src/api/vendor/reservations/middlewares.d.ts +4 -1
- package/.medusa/server/src/api/vendor/reservations/middlewares.js +23 -3
- package/.medusa/server/src/api/vendor/reservations/route.js +5 -3
- package/.medusa/server/src/api/vendor/reservations/validators.d.ts +45 -3
- package/.medusa/server/src/api/vendor/reservations/validators.js +5 -1
- package/.medusa/server/src/api/vendor/sellers/validators.js +1 -1
- package/.medusa/server/src/api/vendor/shipping-profiles/route.d.ts +31 -2
- package/.medusa/server/src/api/vendor/shipping-profiles/route.js +61 -10
- package/.medusa/server/src/api/vendor/shipping-profiles/validators.d.ts +92 -3
- package/.medusa/server/src/api/vendor/shipping-profiles/validators.js +10 -2
- package/.medusa/server/src/api/vendor/stock-locations/[id]/route.d.ts +1 -2
- package/.medusa/server/src/api/vendor/stock-locations/[id]/route.js +1 -1
- package/.medusa/server/src/api/vendor/stock-locations/validators.d.ts +10 -10
- package/.medusa/server/src/links/wishlist-product.js +3 -3
- package/.medusa/server/src/modules/payout/services/provider.js +1 -2
- package/.medusa/server/src/modules/seller/migrations/Migration20260114091400.d.ts +5 -0
- package/.medusa/server/src/modules/seller/migrations/Migration20260114091400.js +32 -0
- package/.medusa/server/src/modules/seller/service.js +2 -2
- package/.medusa/server/src/modules/seller/utils.d.ts +1 -1
- package/.medusa/server/src/modules/seller/utils.js +37 -10
- package/.medusa/server/src/shared/infra/http/middlewares/check-ownership.d.ts +16 -7
- package/.medusa/server/src/shared/infra/http/middlewares/check-ownership.js +26 -18
- package/.medusa/server/src/shared/infra/http/middlewares/index.d.ts +1 -0
- package/.medusa/server/src/shared/infra/http/middlewares/index.js +2 -1
- package/.medusa/server/src/shared/infra/http/middlewares/reject-seller-linked-stock-location.d.ts +19 -0
- package/.medusa/server/src/shared/infra/http/middlewares/reject-seller-linked-stock-location.js +28 -0
- package/.medusa/server/src/shared/infra/http/middlewares/vendor-promotions-rule-attribute-options-path-params-guard.js +2 -2
- package/.medusa/server/src/shared/infra/http/middlewares/vendor-promotions-rule-value-options-path-params-guard.js +2 -2
- package/.medusa/server/src/shared/infra/http/utils/products.js +9 -3
- package/.medusa/server/src/shared/infra/http/utils/unless-base-url.d.ts +1 -3
- package/.medusa/server/src/shared/infra/http/utils/unless-base-url.js +1 -1
- package/.medusa/server/src/subscribers/notification-seller-new-order.d.ts +1 -1
- package/.medusa/server/src/subscribers/notification-seller-new-order.js +44 -37
- package/.medusa/server/src/subscribers/payout-webhook.js +1 -1
- package/.medusa/server/src/subscribers/seller-status-changed.js +2 -3
- package/.medusa/server/src/utils/stock-locations.d.ts +9 -0
- package/.medusa/server/src/utils/stock-locations.js +231 -0
- package/.medusa/server/src/workflows/attribute/steps/update-attributes.js +1 -1
- package/.medusa/server/src/workflows/attribute/steps/validate-attribute-value.js +7 -3
- package/.medusa/server/src/workflows/attribute/utils/products-updated-handler.d.ts +3 -3
- package/.medusa/server/src/workflows/attribute/utils/products-updated-handler.js +17 -15
- package/.medusa/server/src/workflows/attribute/utils/validate-attribute-values-to-link.js +2 -2
- package/.medusa/server/src/workflows/cart/steps/create-order-set.js +1 -1
- package/.medusa/server/src/workflows/cart/utils/prepare-confirm-inventory-input.js +1 -1
- package/.medusa/server/src/workflows/cart/workflows/split-and-complete-cart.js +5 -7
- package/.medusa/server/src/workflows/configuration/steps/create-configuration-rule.js +1 -1
- package/.medusa/server/src/workflows/fulfillment-set/create-vendor-service-zone.js +2 -2
- package/.medusa/server/src/workflows/hooks/add-order-line-items-pricing-context.d.ts +1 -0
- package/.medusa/server/src/workflows/hooks/add-order-line-items-pricing-context.js +75 -0
- package/.medusa/server/src/workflows/hooks/fetch-shipping-option-pricing-context.d.ts +1 -0
- package/.medusa/server/src/workflows/hooks/fetch-shipping-option-pricing-context.js +97 -0
- package/.medusa/server/src/workflows/hooks/product-deleted.js +12 -5
- package/.medusa/server/src/workflows/order/steps/create-payout.js +1 -1
- package/.medusa/server/src/workflows/order/steps/validate-seller-payout-account.js +2 -2
- package/.medusa/server/src/workflows/payout/steps/update-payout-account.js +1 -1
- package/.medusa/server/src/workflows/price-list/steps/validate-vendor-price-list-prices.js +2 -2
- package/.medusa/server/src/workflows/price-list/workflows/create-vendor-price-list.js +2 -2
- package/.medusa/server/src/workflows/product/steps/update-product-status.js +7 -1
- package/.medusa/server/src/workflows/product-variants/helpers/product-variant-filter-helper.d.ts +24 -0
- package/.medusa/server/src/workflows/product-variants/helpers/product-variant-filter-helper.js +39 -0
- package/.medusa/server/src/workflows/product-variants/index.d.ts +3 -0
- package/.medusa/server/src/workflows/product-variants/index.js +20 -0
- package/.medusa/server/src/workflows/product-variants/steps/filter-variants-combined.d.ts +4 -0
- package/.medusa/server/src/workflows/product-variants/steps/filter-variants-combined.js +63 -0
- package/.medusa/server/src/workflows/product-variants/steps/get-seller-product-ids.d.ts +4 -0
- package/.medusa/server/src/workflows/product-variants/steps/get-seller-product-ids.js +28 -0
- package/.medusa/server/src/workflows/product-variants/steps/index.d.ts +2 -0
- package/.medusa/server/src/workflows/product-variants/steps/index.js +19 -0
- package/.medusa/server/src/workflows/product-variants/types.d.ts +10 -0
- package/.medusa/server/src/workflows/product-variants/types.js +3 -0
- package/.medusa/server/src/workflows/product-variants/workflows/index.d.ts +1 -0
- package/.medusa/server/src/workflows/product-variants/workflows/index.js +18 -0
- package/.medusa/server/src/workflows/product-variants/workflows/list-filtered-product-variants.d.ts +31 -0
- package/.medusa/server/src/workflows/product-variants/workflows/list-filtered-product-variants.js +115 -0
- package/.medusa/server/src/workflows/promotions/steps/ensure-seller-product-rule-after-deletion.d.ts +8 -0
- package/.medusa/server/src/workflows/promotions/steps/ensure-seller-product-rule-after-deletion.js +87 -0
- package/.medusa/server/src/workflows/promotions/steps/index.d.ts +2 -0
- package/.medusa/server/src/workflows/promotions/steps/index.js +3 -1
- package/.medusa/server/src/workflows/promotions/steps/inject-seller-product-rule.d.ts +6 -0
- package/.medusa/server/src/workflows/promotions/steps/inject-seller-product-rule.js +43 -0
- package/.medusa/server/src/workflows/promotions/steps/verify-vendor-target-promotion-rules.d.ts +5 -0
- package/.medusa/server/src/workflows/promotions/steps/verify-vendor-target-promotion-rules.js +27 -11
- package/.medusa/server/src/workflows/promotions/utils/sync-seller-product-rule-values.d.ts +2 -0
- package/.medusa/server/src/workflows/promotions/utils/sync-seller-product-rule-values.js +165 -0
- package/.medusa/server/src/workflows/promotions/workflows/batch-vendor-promotion-rules.js +7 -2
- package/.medusa/server/src/workflows/promotions/workflows/create-vendor-promotion.js +4 -3
- package/.medusa/server/src/workflows/seller/steps/create-member.js +1 -1
- package/.medusa/server/src/workflows/seller/steps/create-payment-account.js +1 -1
- package/.medusa/server/src/workflows/seller/steps/create-payout-onboarding.js +1 -1
- package/.medusa/server/src/workflows/seller/steps/sync-stripe-account.js +1 -1
- package/.medusa/server/src/workflows/seller/steps/update-member-invite.js +3 -3
- package/.medusa/server/src/workflows/seller/steps/update-seller.js +2 -3
- package/.medusa/server/src/workflows/seller/steps/validate-products-to-import.d.ts +28 -23
- package/.medusa/server/src/workflows/seller/workflows/import-seller-products.js +2 -2
- package/.medusa/server/src/workflows/wishlist/steps/create-wishlist.js +1 -1
- package/package.json +1 -1
- package/.medusa/server/src/api/store/wishlist/[id]/product/[reference_id]/route.js +0 -61
package/.medusa/server/src/workflows/product-variants/workflows/list-filtered-product-variants.d.ts
ADDED
|
@@ -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, []>;
|
package/.medusa/server/src/workflows/product-variants/workflows/list-filtered-product-variants.js
ADDED
|
@@ -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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
|
package/.medusa/server/src/workflows/promotions/steps/ensure-seller-product-rule-after-deletion.d.ts
ADDED
|
@@ -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 {};
|
package/.medusa/server/src/workflows/promotions/steps/ensure-seller-product-rule-after-deletion.js
ADDED
|
@@ -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
|
-
|
|
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==
|
package/.medusa/server/src/workflows/promotions/steps/verify-vendor-target-promotion-rules.d.ts
CHANGED
|
@@ -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;
|
package/.medusa/server/src/workflows/promotions/steps/verify-vendor-target-promotion-rules.js
CHANGED
|
@@ -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
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
|
19
|
-
const { data: relations } = await query.graph({
|
|
33
|
+
const { data: sellerProducts } = await query.graph({
|
|
20
34
|
entity: seller_product_1.default.entryPoint,
|
|
21
|
-
fields: ['
|
|
35
|
+
fields: ['product_id'],
|
|
22
36
|
filters: {
|
|
23
37
|
seller_id: input.seller_id,
|
|
24
|
-
product_id:
|
|
38
|
+
product_id: productIds
|
|
25
39
|
}
|
|
26
40
|
});
|
|
27
|
-
|
|
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,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyaWZ5LXZlbmRvci10YXJnZXQtcHJvbW90aW9uLXJ1bGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3dvcmtmbG93cy9wcm9tb3Rpb25zL3N0ZXBzL3ZlcmlmeS12ZW5kb3ItdGFyZ2V0LXByb21vdGlvbi1ydWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxxREFHa0M7QUFDbEMscUVBQThEO0FBRTlELG1GQUF5RDtBQUN6RCw2RUFBK0U7QUFFL0U7Ozs7R0FJRztBQUNVLFFBQUEsb0NBQW9DLEdBQUcsSUFBQSwwQkFBVSxFQUM1RCxzQ0FBc0MsRUFDdEMsS0FBSyxFQUNILEtBQThELEVBQzlELEVBQUUsU0FBUyxFQUFFLEVBQ2IsRUFBRTtJQUNGLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzdDLE9BQU07SUFDUixDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUVoRSxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FDckMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUNQLElBQUksQ0FBQyxTQUFTLEtBQUssa0JBQWtCO1FBQ3JDLElBQUksQ0FBQyxXQUFXLEtBQUssNkRBQWdDLENBQ3hELENBQUE7SUFFRCxJQUFJLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDOUIsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxZQUFZO1NBQzVCLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUMxQixJQUFJLEVBQUU7U0FDTixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQW1CLEVBQUUsQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQTtJQUVoRSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDNUIsT0FBTTtJQUNSLENBQUM7SUFFRCxNQUFNLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNqRCxNQUFNLEVBQUUsd0JBQWEsQ0FBQyxVQUFVO1FBQ2hDLE1BQU0sRUFBRSxDQUFDLFlBQVksQ0FBQztRQUN0QixPQUFPLEVBQUU7WUFDUCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsVUFBVSxFQUFFLFVBQVU7U0FDdkI7S0FDRixDQUFDLENBQUE7SUFFRixNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFBO0lBQzNFLE1BQU0sZUFBZSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFFNUUsSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQy9CLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDhEQUE4RCxDQUMvRCxDQUFBO0lBQ0gsQ0FBQztBQUNILENBQUMsQ0FDRixDQUFBIn0=
|
|
@@ -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:
|
|
20
|
+
input: batchInputWithDefaultRule
|
|
16
21
|
});
|
|
17
22
|
});
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmF0Y2gtdmVuZG9yLXByb21vdGlvbi1ydWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy93b3JrZmxvd3MvcHJvbW90aW9ucy93b3JrZmxvd3MvYmF0Y2gtdmVuZG9yLXByb21vdGlvbi1ydWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0REFHb0M7QUFDcEMsMkRBQXlFO0FBRXpFLG9DQUdpQjtBQUVKLFFBQUEsaUNBQWlDLEdBQUcsSUFBQSw4QkFBYyxFQUM3RCw4QkFBOEIsRUFDOUIsVUFBVSxLQUdUO0lBQ0MsSUFBQSxvQkFBSSxFQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEtBQUssY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtRQUN4RSxJQUFBLDRDQUFvQyxFQUNsQyxJQUFBLHlCQUFTLEVBQUMsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzNCLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU07WUFDeEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1NBQzNCLENBQUMsQ0FBQyxDQUNKLENBQUE7SUFDSCxDQUFDLENBQUMsQ0FBQTtJQUVGLE1BQU0seUJBQXlCLEdBQUcsSUFBQSxnREFBd0MsRUFDeEUsSUFBQSx5QkFBUyxFQUFDLEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMzQixVQUFVLEVBQUUsS0FBSyxDQUFDLElBQUk7UUFDdEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO1FBQzFCLFlBQVksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7S0FDNUIsQ0FBQyxDQUFDLENBQ0osQ0FBQTtJQUVELHdDQUEyQixDQUFDLFNBQVMsQ0FBQztRQUNwQyxLQUFLLEVBQUUseUJBQXlCO0tBQ2pDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FDRixDQUFBIn0=
|