@mercurjs/core 2.2.0-canary.23 → 2.2.0-canary.26

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 (50) hide show
  1. package/.medusa/server/src/api/admin/offers/query-config.js +2 -1
  2. package/.medusa/server/src/api/admin/product-attributes/query-config.js +4 -1
  3. package/.medusa/server/src/api/admin/product-attributes/route.d.ts +2 -2
  4. package/.medusa/server/src/api/admin/product-attributes/route.js +1 -1
  5. package/.medusa/server/src/api/admin/product-attributes/validators.d.ts +4 -4
  6. package/.medusa/server/src/api/store/middlewares.js +13 -11
  7. package/.medusa/server/src/api/store/offers/[id]/route.d.ts +3 -0
  8. package/.medusa/server/src/api/store/offers/[id]/route.js +28 -0
  9. package/.medusa/server/src/api/store/offers/helpers.d.ts +43 -0
  10. package/.medusa/server/src/api/store/offers/helpers.js +191 -0
  11. package/.medusa/server/src/api/store/offers/middlewares.d.ts +2 -0
  12. package/.medusa/server/src/api/store/offers/middlewares.js +64 -0
  13. package/.medusa/server/src/api/store/offers/query-config.d.ts +12 -0
  14. package/.medusa/server/src/api/store/offers/query-config.js +50 -0
  15. package/.medusa/server/src/api/store/offers/route.d.ts +3 -0
  16. package/.medusa/server/src/api/store/offers/route.js +30 -0
  17. package/.medusa/server/src/api/store/offers/validators.d.ts +159 -0
  18. package/.medusa/server/src/api/store/offers/validators.js +29 -0
  19. package/.medusa/server/src/api/store/products/[id]/route.js +9 -1
  20. package/.medusa/server/src/api/store/products/helpers.d.ts +10 -0
  21. package/.medusa/server/src/api/store/products/helpers.js +20 -0
  22. package/.medusa/server/src/api/store/products/middlewares.js +20 -15
  23. package/.medusa/server/src/api/store/products/route.js +9 -1
  24. package/.medusa/server/src/api/utils/offers.d.ts +30 -2
  25. package/.medusa/server/src/api/utils/offers.js +141 -2
  26. package/.medusa/server/src/api/utils/sellers.d.ts +2 -0
  27. package/.medusa/server/src/api/utils/sellers.js +23 -0
  28. package/.medusa/server/src/api/vendor/claims/validators.d.ts +6 -6
  29. package/.medusa/server/src/api/vendor/exchanges/validators.d.ts +6 -6
  30. package/.medusa/server/src/api/vendor/offers/query-config.js +2 -1
  31. package/.medusa/server/src/api/vendor/order-edits/validators.d.ts +6 -6
  32. package/.medusa/server/src/api/vendor/product-attributes/query-config.js +4 -2
  33. package/.medusa/server/src/api/vendor/product-attributes/validators.d.ts +4 -4
  34. package/.medusa/server/src/api/vendor/product-variants/validators.d.ts +6 -6
  35. package/.medusa/server/src/api/vendor/sales-channels/[id]/products/route.js +2 -1
  36. package/.medusa/server/src/api/vendor/sales-channels/helpers.d.ts +1 -0
  37. package/.medusa/server/src/api/vendor/sales-channels/helpers.js +20 -2
  38. package/.medusa/server/src/links/offer-product-link.d.ts +2 -0
  39. package/.medusa/server/src/links/offer-product-link.js +15 -0
  40. package/.medusa/server/src/modules/commission/migrations/Migration20260615120000.js +1 -1
  41. package/.medusa/server/src/modules/offer/migrations/Migration20260622000000.d.ts +5 -0
  42. package/.medusa/server/src/modules/offer/migrations/Migration20260622000000.js +16 -0
  43. package/.medusa/server/src/modules/offer/models/offer.d.ts +1 -0
  44. package/.medusa/server/src/modules/offer/models/offer.js +7 -1
  45. package/.medusa/server/src/modules/offer/service.d.ts +1 -0
  46. package/.medusa/server/src/workflows/offer/steps/create-offers.d.ts +1 -0
  47. package/.medusa/server/src/workflows/offer/steps/update-offers.d.ts +1 -0
  48. package/.medusa/server/src/workflows/offer/workflows/create-offers.js +3 -2
  49. package/.medusa/server/src/workflows/payout/workflows/create-payout.js +16 -16
  50. package/package.json +1 -1
@@ -0,0 +1,159 @@
1
+ import { z } from "zod";
2
+ export type StoreGetOfferParamsType = z.infer<typeof StoreGetOfferParams>;
3
+ export declare const StoreGetOfferParams: z.ZodObject<{
4
+ fields: z.ZodOptional<z.ZodString>;
5
+ } & {
6
+ region_id: z.ZodOptional<z.ZodString>;
7
+ country_code: z.ZodOptional<z.ZodString>;
8
+ province: z.ZodOptional<z.ZodString>;
9
+ cart_id: z.ZodOptional<z.ZodString>;
10
+ }, "strip", z.ZodTypeAny, {
11
+ fields?: string | undefined;
12
+ country_code?: string | undefined;
13
+ province?: string | undefined;
14
+ cart_id?: string | undefined;
15
+ region_id?: string | undefined;
16
+ }, {
17
+ fields?: string | undefined;
18
+ country_code?: string | undefined;
19
+ province?: string | undefined;
20
+ cart_id?: string | undefined;
21
+ region_id?: string | undefined;
22
+ }>;
23
+ export type StoreGetOffersParamsType = z.infer<typeof StoreGetOffersParams>;
24
+ export declare const StoreGetOffersParams: z.ZodObject<{
25
+ fields: z.ZodOptional<z.ZodString>;
26
+ } & {
27
+ offset: z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodNumber>>, number, unknown>;
28
+ limit: z.ZodEffects<z.ZodDefault<z.ZodOptional<z.ZodNumber>>, number, unknown>;
29
+ order: z.ZodOptional<z.ZodString> | z.ZodDefault<z.ZodOptional<z.ZodString>>;
30
+ with_deleted: z.ZodEffects<z.ZodOptional<z.ZodBoolean>, boolean | undefined, unknown>;
31
+ } & {
32
+ region_id: z.ZodOptional<z.ZodString>;
33
+ country_code: z.ZodOptional<z.ZodString>;
34
+ province: z.ZodOptional<z.ZodString>;
35
+ cart_id: z.ZodOptional<z.ZodString>;
36
+ } & {
37
+ q: z.ZodOptional<z.ZodString>;
38
+ id: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
39
+ product_id: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
40
+ variant_id: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
41
+ seller_id: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
42
+ sku: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
43
+ created_at: z.ZodOptional<z.ZodUnion<[any, z.ZodObject<{
44
+ $eq: any;
45
+ $ne: any;
46
+ $in: any;
47
+ $nin: any;
48
+ $like: any;
49
+ $ilike: any;
50
+ $re: any;
51
+ $contains: any;
52
+ $gt: any;
53
+ $gte: any;
54
+ $lt: any;
55
+ $lte: any;
56
+ }, "strip", z.ZodTypeAny, {
57
+ $eq?: any;
58
+ $ne?: any;
59
+ $in?: any;
60
+ $nin?: any;
61
+ $like?: any;
62
+ $ilike?: any;
63
+ $re?: any;
64
+ $contains?: any;
65
+ $gt?: any;
66
+ $gte?: any;
67
+ $lt?: any;
68
+ $lte?: any;
69
+ }, {
70
+ $eq?: any;
71
+ $ne?: any;
72
+ $in?: any;
73
+ $nin?: any;
74
+ $like?: any;
75
+ $ilike?: any;
76
+ $re?: any;
77
+ $contains?: any;
78
+ $gt?: any;
79
+ $gte?: any;
80
+ $lt?: any;
81
+ $lte?: any;
82
+ }>]>>;
83
+ updated_at: z.ZodOptional<z.ZodUnion<[any, z.ZodObject<{
84
+ $eq: any;
85
+ $ne: any;
86
+ $in: any;
87
+ $nin: any;
88
+ $like: any;
89
+ $ilike: any;
90
+ $re: any;
91
+ $contains: any;
92
+ $gt: any;
93
+ $gte: any;
94
+ $lt: any;
95
+ $lte: any;
96
+ }, "strip", z.ZodTypeAny, {
97
+ $eq?: any;
98
+ $ne?: any;
99
+ $in?: any;
100
+ $nin?: any;
101
+ $like?: any;
102
+ $ilike?: any;
103
+ $re?: any;
104
+ $contains?: any;
105
+ $gt?: any;
106
+ $gte?: any;
107
+ $lt?: any;
108
+ $lte?: any;
109
+ }, {
110
+ $eq?: any;
111
+ $ne?: any;
112
+ $in?: any;
113
+ $nin?: any;
114
+ $like?: any;
115
+ $ilike?: any;
116
+ $re?: any;
117
+ $contains?: any;
118
+ $gt?: any;
119
+ $gte?: any;
120
+ $lt?: any;
121
+ $lte?: any;
122
+ }>]>>;
123
+ }, "strip", z.ZodTypeAny, {
124
+ offset: number;
125
+ limit: number;
126
+ order?: string | undefined;
127
+ seller_id?: string | string[] | undefined;
128
+ id?: string | string[] | undefined;
129
+ created_at?: any;
130
+ updated_at?: any;
131
+ q?: string | undefined;
132
+ fields?: string | undefined;
133
+ with_deleted?: boolean | undefined;
134
+ variant_id?: string | string[] | undefined;
135
+ product_id?: string | string[] | undefined;
136
+ sku?: string | string[] | undefined;
137
+ country_code?: string | undefined;
138
+ province?: string | undefined;
139
+ cart_id?: string | undefined;
140
+ region_id?: string | undefined;
141
+ }, {
142
+ order?: string | undefined;
143
+ seller_id?: string | string[] | undefined;
144
+ id?: string | string[] | undefined;
145
+ created_at?: any;
146
+ updated_at?: any;
147
+ offset?: unknown;
148
+ limit?: unknown;
149
+ q?: string | undefined;
150
+ fields?: string | undefined;
151
+ with_deleted?: unknown;
152
+ variant_id?: string | string[] | undefined;
153
+ product_id?: string | string[] | undefined;
154
+ sku?: string | string[] | undefined;
155
+ country_code?: string | undefined;
156
+ province?: string | undefined;
157
+ cart_id?: string | undefined;
158
+ region_id?: string | undefined;
159
+ }>;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StoreGetOffersParams = exports.StoreGetOfferParams = void 0;
4
+ const zod_1 = require("zod");
5
+ const validators_1 = require("@medusajs/medusa/api/utils/validators");
6
+ const StoreOfferContextFields = zod_1.z.object({
7
+ region_id: zod_1.z.string().optional(),
8
+ country_code: zod_1.z.string().optional(),
9
+ province: zod_1.z.string().optional(),
10
+ cart_id: zod_1.z.string().optional(),
11
+ });
12
+ const StoreOfferFilterFields = zod_1.z.object({
13
+ q: zod_1.z.string().optional(),
14
+ id: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
15
+ product_id: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
16
+ variant_id: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
17
+ seller_id: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
18
+ sku: zod_1.z.union([zod_1.z.string(), zod_1.z.array(zod_1.z.string())]).optional(),
19
+ created_at: (0, validators_1.createOperatorMap)().optional(),
20
+ updated_at: (0, validators_1.createOperatorMap)().optional(),
21
+ });
22
+ exports.StoreGetOfferParams = (0, validators_1.createSelectParams)().merge(StoreOfferContextFields);
23
+ exports.StoreGetOffersParams = (0, validators_1.createFindParams)({
24
+ offset: 0,
25
+ limit: 50,
26
+ })
27
+ .merge(StoreOfferContextFields)
28
+ .merge(StoreOfferFilterFields);
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvc3RvcmUvb2ZmZXJzL3ZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQXVCO0FBQ3ZCLHNFQUk4QztBQUU5QyxNQUFNLHVCQUF1QixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDdkMsU0FBUyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDaEMsWUFBWSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDbkMsUUFBUSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDL0IsT0FBTyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDL0IsQ0FBQyxDQUFBO0FBRUYsTUFBTSxzQkFBc0IsR0FBRyxPQUFDLENBQUMsTUFBTSxDQUFDO0lBQ3RDLENBQUMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3hCLEVBQUUsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUN6RCxVQUFVLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDakUsVUFBVSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO0lBQ2pFLFNBQVMsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtJQUNoRSxHQUFHLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7SUFDMUQsVUFBVSxFQUFFLElBQUEsOEJBQWlCLEdBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDMUMsVUFBVSxFQUFFLElBQUEsOEJBQWlCLEdBQUUsQ0FBQyxRQUFRLEVBQUU7Q0FDM0MsQ0FBQyxDQUFBO0FBR1csUUFBQSxtQkFBbUIsR0FDOUIsSUFBQSwrQkFBa0IsR0FBRSxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO0FBR3hDLFFBQUEsb0JBQW9CLEdBQUcsSUFBQSw2QkFBZ0IsRUFBQztJQUNuRCxNQUFNLEVBQUUsQ0FBQztJQUNULEtBQUssRUFBRSxFQUFFO0NBQ1YsQ0FBQztLQUNDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQztLQUM5QixLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQSJ9
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GET = void 0;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
5
  const utils_2 = require("../../../utils");
6
+ const helpers_1 = require("../helpers");
6
7
  const GET = async (req, res) => {
7
8
  const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
8
9
  // `applyVisibleSellerIdsFilter` + `maybeApplyLinkFilter` resolves the
@@ -13,6 +14,10 @@ const GET = async (req, res) => {
13
14
  if (Array.isArray(visibleIds) && !visibleIds.includes(req.params.id)) {
14
15
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Product with id ${req.params.id} was not found`);
15
16
  }
17
+ // `variants.calculated_price` / `variants.offer_id` are computed from the
18
+ // cheapest offer post-query, not graph columns — strip them before the read.
19
+ const { fields, withCalculatedPrice } = (0, helpers_1.splitComputedVariantFields)(req.queryConfig.fields);
20
+ req.queryConfig.fields = fields;
16
21
  // region_id / currency_code are consumed by setPricingContext only —
17
22
  // the Product entity has neither column, so passing them through
18
23
  // raises `Trying to query by not existing property Product.region_id`.
@@ -26,7 +31,10 @@ const GET = async (req, res) => {
26
31
  throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Product with id ${req.params.id} was not found`);
27
32
  }
28
33
  await (0, utils_2.enrichProductAttributes)(req.scope, [product]);
34
+ if (withCalculatedPrice) {
35
+ await (0, utils_2.wrapProductVariantsWithOfferPrice)(req, [product]);
36
+ }
29
37
  res.json({ product });
30
38
  };
31
39
  exports.GET = GET;
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3Byb2R1Y3RzL1tpZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEscURBR2tDO0FBRWxDLDBDQUF3RDtBQUVqRCxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBdUIsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDeEUsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUE7SUFFaEUsc0VBQXNFO0lBQ3RFLHlFQUF5RTtJQUN6RSxzRUFBc0U7SUFDdEUsdUVBQXVFO0lBQ3ZFLE1BQU0sVUFBVSxHQUFJLEdBQUcsQ0FBQyxnQkFBcUMsQ0FBQyxFQUFFLENBQUE7SUFDaEUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDckUsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IsbUJBQW1CLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxnQkFBZ0IsQ0FDakQsQ0FBQTtJQUNILENBQUM7SUFFRCxxRUFBcUU7SUFDckUsaUVBQWlFO0lBQ2pFLHVFQUF1RTtJQUN2RSxNQUFNLEVBQ0osU0FBUyxFQUFFLEVBQUUsRUFDYixhQUFhLEVBQUUsRUFBRSxFQUNqQixHQUFHLGNBQWMsRUFDbEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQTRCLENBQUE7SUFFM0QsTUFBTSxFQUNKLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUNoQixHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNwQixNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNO1FBQzlCLE9BQU8sRUFBRSxFQUFFLEdBQUcsY0FBYyxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRTtLQUNsRCxDQUFDLENBQUE7SUFFRixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDYixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUMzQixtQkFBbUIsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLGdCQUFnQixDQUNqRCxDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sSUFBQSwrQkFBdUIsRUFBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUVuRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtBQUN2QixDQUFDLENBQUE7QUExQ1ksUUFBQSxHQUFHLE9BMENmIn0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3Byb2R1Y3RzL1tpZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEscURBR2tDO0FBRWxDLDBDQUd1QjtBQUN2Qix3Q0FBdUQ7QUFFaEQsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQXVCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3hFLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRWhFLHNFQUFzRTtJQUN0RSx5RUFBeUU7SUFDekUsc0VBQXNFO0lBQ3RFLHVFQUF1RTtJQUN2RSxNQUFNLFVBQVUsR0FBSSxHQUFHLENBQUMsZ0JBQXFDLENBQUMsRUFBRSxDQUFBO0lBQ2hFLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQ3JFLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQzNCLG1CQUFtQixHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsZ0JBQWdCLENBQ2pELENBQUE7SUFDSCxDQUFDO0lBRUQsMEVBQTBFO0lBQzFFLDZFQUE2RTtJQUM3RSxNQUFNLEVBQUUsTUFBTSxFQUFFLG1CQUFtQixFQUFFLEdBQUcsSUFBQSxvQ0FBMEIsRUFDaEUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQ3ZCLENBQUE7SUFDRCxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUE7SUFFL0IscUVBQXFFO0lBQ3JFLGlFQUFpRTtJQUNqRSx1RUFBdUU7SUFDdkUsTUFBTSxFQUNKLFNBQVMsRUFBRSxFQUFFLEVBQ2IsYUFBYSxFQUFFLEVBQUUsRUFDakIsR0FBRyxjQUFjLEVBQ2xCLEdBQUcsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUE0QixDQUFBO0lBRTNELE1BQU0sRUFDSixJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FDaEIsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDcEIsTUFBTSxFQUFFLFNBQVM7UUFDakIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTTtRQUM5QixPQUFPLEVBQUUsRUFBRSxHQUFHLGNBQWMsRUFBRSxFQUFFLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUU7S0FDbEQsQ0FBQyxDQUFBO0lBRUYsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IsbUJBQW1CLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxnQkFBZ0IsQ0FDakQsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLElBQUEsK0JBQXVCLEVBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUE7SUFFbkQsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBQSx5Q0FBaUMsRUFBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQVUsQ0FBQyxDQUFBO0lBQ2xFLENBQUM7SUFFRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtBQUN2QixDQUFDLENBQUE7QUFyRFksUUFBQSxHQUFHLE9BcURmIn0=
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Splits the virtual offer-pricing fields (`variants.calculated_price[.*]`,
3
+ * `variants.offer_id`) out of a store-product field set. They are computed
4
+ * post-query from the cheapest offer, not graph columns, so passing them to
5
+ * `query.graph` raises `Trying to query by not existing property`.
6
+ */
7
+ export declare const splitComputedVariantFields: (fields: string[]) => {
8
+ fields: string[];
9
+ withCalculatedPrice: boolean;
10
+ };
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.splitComputedVariantFields = void 0;
4
+ /**
5
+ * Splits the virtual offer-pricing fields (`variants.calculated_price[.*]`,
6
+ * `variants.offer_id`) out of a store-product field set. They are computed
7
+ * post-query from the cheapest offer, not graph columns, so passing them to
8
+ * `query.graph` raises `Trying to query by not existing property`.
9
+ */
10
+ const splitComputedVariantFields = (fields) => {
11
+ const withCalculatedPrice = fields.some((f) => f === "variants.calculated_price" ||
12
+ f.startsWith("variants.calculated_price.") ||
13
+ f === "variants.offer_id");
14
+ const filteredFields = fields.filter((f) => f !== "variants.calculated_price" &&
15
+ !f.startsWith("variants.calculated_price.") &&
16
+ f !== "variants.offer_id");
17
+ return { fields: filteredFields, withCalculatedPrice };
18
+ };
19
+ exports.splitComputedVariantFields = splitComputedVariantFields;
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvc3RvcmUvcHJvZHVjdHMvaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7R0FLRztBQUNJLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxNQUFnQixFQUFFLEVBQUU7SUFDN0QsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUNyQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0osQ0FBQyxLQUFLLDJCQUEyQjtRQUNqQyxDQUFDLENBQUMsVUFBVSxDQUFDLDRCQUE0QixDQUFDO1FBQzFDLENBQUMsS0FBSyxtQkFBbUIsQ0FDNUIsQ0FBQTtJQUVELE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQ2xDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDSixDQUFDLEtBQUssMkJBQTJCO1FBQ2pDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyw0QkFBNEIsQ0FBQztRQUMzQyxDQUFDLEtBQUssbUJBQW1CLENBQzVCLENBQUE7SUFFRCxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxtQkFBbUIsRUFBRSxDQUFBO0FBQ3hELENBQUMsQ0FBQTtBQWhCWSxRQUFBLDBCQUEwQiw4QkFnQnRDIn0=
@@ -4,9 +4,11 @@ exports.storeProductsMiddlewares = void 0;
4
4
  const http_1 = require("@medusajs/framework/http");
5
5
  const utils_1 = require("@medusajs/framework/utils");
6
6
  const framework_1 = require("@medusajs/framework");
7
+ const index_1 = require("@medusajs/medusa/api/utils/middlewares/index");
7
8
  const query_config_1 = require("./query-config");
8
9
  const validators_1 = require("./validators");
9
10
  const types_1 = require("@mercurjs/types");
11
+ const sellers_1 = require("../../utils/sellers");
10
12
  /**
11
13
  * Apply the store-facing defaults that vanilla Medusa applies on its own
12
14
  * `/store/products` route. Besides forcing the `published` status, this
@@ -33,23 +35,24 @@ const applyProductFilters = (0, http_1.applyDefaultFilters)({
33
35
  * `product_seller` join entity.
34
36
  */
35
37
  async function applyVisibleSellerIdsFilter(req, _res, next) {
36
- const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
37
- const now = new Date();
38
- const { data: visibleSellers } = await query.graph({
39
- entity: "seller",
40
- fields: ["id"],
41
- filters: {
42
- status: types_1.SellerStatus.OPEN,
43
- $and: [
44
- { $or: [{ closed_from: null }, { closed_from: { $gt: now } }] },
45
- { $or: [{ closed_to: null }, { closed_to: { $lt: now } }] },
46
- ],
47
- },
48
- });
49
38
  req.filterableFields ??= {};
50
- req.filterableFields.seller_id = visibleSellers.map((s) => s.id);
39
+ req.filterableFields.seller_id = await (0, sellers_1.resolveVisibleSellerIds)(req.scope);
51
40
  next();
52
41
  }
42
+ /**
43
+ * Resolve the pricing/tax context consumed by the offer-price wrap. Reuses
44
+ * Medusa's product-pricing middlewares so the gate matches vanilla
45
+ * `/store/products`: prices compute only when the client requests
46
+ * `variants.calculated_price` or passes `region_id`.
47
+ */
48
+ const pricingMiddlewares = [
49
+ (0, http_1.authenticate)("customer", ["session", "bearer"], {
50
+ allowUnauthenticated: true,
51
+ }),
52
+ (0, index_1.normalizeDataForContext)({ priceFieldPaths: ["variants.calculated_price"] }),
53
+ (0, index_1.setPricingContext)({ priceFieldPaths: ["variants.calculated_price"] }),
54
+ (0, index_1.setTaxContext)({ priceFieldPaths: ["variants.calculated_price"] }),
55
+ ];
53
56
  exports.storeProductsMiddlewares = [
54
57
  {
55
58
  method: ["GET"],
@@ -63,6 +66,7 @@ exports.storeProductsMiddlewares = [
63
66
  resourceId: "product_id",
64
67
  filterableField: "seller_id",
65
68
  }),
69
+ ...pricingMiddlewares,
66
70
  ],
67
71
  },
68
72
  {
@@ -77,7 +81,8 @@ exports.storeProductsMiddlewares = [
77
81
  resourceId: "product_id",
78
82
  filterableField: "seller_id",
79
83
  }),
84
+ ...pricingMiddlewares,
80
85
  ],
81
86
  },
82
87
  ];
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3Byb2R1Y3RzL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQU9pQztBQUNqQyxxREFBZ0Y7QUFDaEYsbURBQStEO0FBRS9ELGlEQUF3RDtBQUN4RCw2Q0FHcUI7QUFDckIsMkNBQTZEO0FBRTdEOzs7Ozs7O0dBT0c7QUFDSCxNQUFNLG1CQUFtQixHQUFHLElBQUEsMEJBQW1CLEVBQUM7SUFDOUMsTUFBTSxFQUFFLHFCQUFhLENBQUMsU0FBUztJQUMvQixVQUFVLEVBQUUsQ0FBQyxPQUFnQyxFQUFFLEVBQUU7UUFDL0MsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQTtRQUN2QyxPQUFPLE9BQU8sQ0FBQyxXQUFXLENBQUE7UUFFMUIsSUFBSSxDQUFDLElBQUEsaUJBQVMsRUFBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQzVCLE9BQU07UUFDUixDQUFDO1FBRUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFDakUsQ0FBQztDQUNGLENBQUMsQ0FBQTtBQUVGOzs7OztHQUtHO0FBQ0gsS0FBSyxVQUFVLDJCQUEyQixDQUN4QyxHQUFrQixFQUNsQixJQUFvQixFQUNwQixJQUF3QjtJQUV4QixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNoRSxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFBO0lBRXRCLE1BQU0sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2pELE1BQU0sRUFBRSxRQUFRO1FBQ2hCLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztRQUNkLE9BQU8sRUFBRTtZQUNQLE1BQU0sRUFBRSxvQkFBWSxDQUFDLElBQUk7WUFDekIsSUFBSSxFQUFFO2dCQUNKLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFO2dCQUMvRCxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRTthQUM1RDtTQUNGO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsR0FBRyxDQUFDLGdCQUFnQixLQUFLLEVBQUUsQ0FBQTtJQUMzQixHQUFHLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQ2pELENBQUMsQ0FBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDNUIsQ0FBQTtJQUVELElBQUksRUFBRSxDQUFBO0FBQ1IsQ0FBQztBQUVZLFFBQUEsd0JBQXdCLEdBQXNCO0lBQ3pEO1FBQ0UsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2YsT0FBTyxFQUFFLGlCQUFpQjtRQUMxQixXQUFXLEVBQUU7WUFDWCxJQUFBLHFDQUF5QixFQUN2QixtQ0FBc0IsRUFDdEIsc0NBQXVCLENBQUMsSUFBSSxDQUM3QjtZQUNELG1CQUFtQjtZQUNuQiwyQkFBMkI7WUFDM0IsSUFBQSwyQkFBb0IsRUFBQztnQkFDbkIsVUFBVSxFQUFFLGdCQUFnQjtnQkFDNUIsVUFBVSxFQUFFLFlBQVk7Z0JBQ3hCLGVBQWUsRUFBRSxXQUFXO2FBQzdCLENBQUM7U0FDSDtLQUNGO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDZixPQUFPLEVBQUUscUJBQXFCO1FBQzlCLFdBQVcsRUFBRTtZQUNYLElBQUEscUNBQXlCLEVBQ3ZCLGtDQUFxQixFQUNyQixzQ0FBdUIsQ0FBQyxRQUFRLENBQ2pDO1lBQ0QsbUJBQW1CO1lBQ25CLDJCQUEyQjtZQUMzQixJQUFBLDJCQUFvQixFQUFDO2dCQUNuQixVQUFVLEVBQUUsZ0JBQWdCO2dCQUM1QixVQUFVLEVBQUUsWUFBWTtnQkFDeEIsZUFBZSxFQUFFLFdBQVc7YUFDN0IsQ0FBQztTQUNIO0tBQ0Y7Q0FDRixDQUFBIn0=
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3Byb2R1Y3RzL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQVFpQztBQUNqQyxxREFBcUQ7QUFDckQsbURBQStEO0FBQy9ELHdFQUlxRDtBQUVyRCxpREFBd0Q7QUFDeEQsNkNBR3FCO0FBQ3JCLDJDQUErQztBQUMvQyxpREFBNkQ7QUFFN0Q7Ozs7Ozs7R0FPRztBQUNILE1BQU0sbUJBQW1CLEdBQUcsSUFBQSwwQkFBbUIsRUFBQztJQUM5QyxNQUFNLEVBQUUscUJBQWEsQ0FBQyxTQUFTO0lBQy9CLFVBQVUsRUFBRSxDQUFDLE9BQWdDLEVBQUUsRUFBRTtRQUMvQyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFBO1FBQ3ZDLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQTtRQUUxQixJQUFJLENBQUMsSUFBQSxpQkFBUyxFQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDNUIsT0FBTTtRQUNSLENBQUM7UUFFRCxPQUFPLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQTtJQUNqRSxDQUFDO0NBQ0YsQ0FBQyxDQUFBO0FBRUY7Ozs7O0dBS0c7QUFDSCxLQUFLLFVBQVUsMkJBQTJCLENBQ3hDLEdBQWtCLEVBQ2xCLElBQW9CLEVBQ3BCLElBQXdCO0lBRXhCLEdBQUcsQ0FBQyxnQkFBZ0IsS0FBSyxFQUFFLENBQUE7SUFDM0IsR0FBRyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsR0FBRyxNQUFNLElBQUEsaUNBQXVCLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRXpFLElBQUksRUFBRSxDQUFBO0FBQ1IsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBRztJQUN6QixJQUFBLG1CQUFZLEVBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFO1FBQzlDLG9CQUFvQixFQUFFLElBQUk7S0FDM0IsQ0FBQztJQUNGLElBQUEsK0JBQXVCLEVBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLENBQUM7SUFDM0UsSUFBQSx5QkFBaUIsRUFBQyxFQUFFLGVBQWUsRUFBRSxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FBQztJQUNyRSxJQUFBLHFCQUFhLEVBQUMsRUFBRSxlQUFlLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLENBQUM7Q0FDbEUsQ0FBQTtBQUVZLFFBQUEsd0JBQXdCLEdBQXNCO0lBQ3pEO1FBQ0UsTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2YsT0FBTyxFQUFFLGlCQUFpQjtRQUMxQixXQUFXLEVBQUU7WUFDWCxJQUFBLHFDQUF5QixFQUN2QixtQ0FBc0IsRUFDdEIsc0NBQXVCLENBQUMsSUFBSSxDQUM3QjtZQUNELG1CQUFtQjtZQUNuQiwyQkFBMkI7WUFDM0IsSUFBQSwyQkFBb0IsRUFBQztnQkFDbkIsVUFBVSxFQUFFLGdCQUFnQjtnQkFDNUIsVUFBVSxFQUFFLFlBQVk7Z0JBQ3hCLGVBQWUsRUFBRSxXQUFXO2FBQzdCLENBQUM7WUFDRixHQUFHLGtCQUFrQjtTQUN0QjtLQUNGO0lBQ0Q7UUFDRSxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDZixPQUFPLEVBQUUscUJBQXFCO1FBQzlCLFdBQVcsRUFBRTtZQUNYLElBQUEscUNBQXlCLEVBQ3ZCLGtDQUFxQixFQUNyQixzQ0FBdUIsQ0FBQyxRQUFRLENBQ2pDO1lBQ0QsbUJBQW1CO1lBQ25CLDJCQUEyQjtZQUMzQixJQUFBLDJCQUFvQixFQUFDO2dCQUNuQixVQUFVLEVBQUUsZ0JBQWdCO2dCQUM1QixVQUFVLEVBQUUsWUFBWTtnQkFDeEIsZUFBZSxFQUFFLFdBQVc7YUFDN0IsQ0FBQztZQUNGLEdBQUcsa0JBQWtCO1NBQ3RCO0tBQ0Y7Q0FDRixDQUFBIn0=
@@ -3,8 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GET = void 0;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
5
  const utils_2 = require("../../utils");
6
+ const helpers_1 = require("./helpers");
6
7
  const GET = async (req, res) => {
7
8
  const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
9
+ // `variants.calculated_price` / `variants.offer_id` are computed from the
10
+ // cheapest offer post-query, not graph columns — strip them before the read.
11
+ const { fields, withCalculatedPrice } = (0, helpers_1.splitComputedVariantFields)(req.queryConfig.fields);
12
+ req.queryConfig.fields = fields;
8
13
  // region_id / currency_code are consumed by setPricingContext only.
9
14
  // The Product entity has neither column, so passing them through to
10
15
  // query.graph raises `Trying to query by not existing property
@@ -17,6 +22,9 @@ const GET = async (req, res) => {
17
22
  pagination: req.queryConfig.pagination,
18
23
  });
19
24
  await (0, utils_2.enrichProductAttributes)(req.scope, products);
25
+ if (withCalculatedPrice) {
26
+ await (0, utils_2.wrapProductVariantsWithOfferPrice)(req, products);
27
+ }
20
28
  res.json({
21
29
  products,
22
30
  count: metadata?.count ?? 0,
@@ -25,4 +33,4 @@ const GET = async (req, res) => {
25
33
  });
26
34
  };
27
35
  exports.GET = GET;
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3Byb2R1Y3RzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHFEQUFxRTtBQUVyRSx1Q0FBcUQ7QUFFOUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQXVCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3hFLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRWhFLG9FQUFvRTtJQUNwRSxvRUFBb0U7SUFDcEUsK0RBQStEO0lBQy9ELHNCQUFzQjtJQUN0QixNQUFNLEVBQ0osU0FBUyxFQUFFLEVBQUUsRUFDYixhQUFhLEVBQUUsRUFBRSxFQUNqQixHQUFHLGNBQWMsRUFDbEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQTRCLENBQUE7SUFFM0QsTUFBTSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3JELE1BQU0sRUFBRSxTQUFTO1FBQ2pCLE1BQU0sRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU07UUFDOUIsT0FBTyxFQUFFLGNBQWM7UUFDdkIsVUFBVSxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsVUFBVTtLQUN2QyxDQUFDLENBQUE7SUFFRixNQUFNLElBQUEsK0JBQXVCLEVBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxRQUFpQixDQUFDLENBQUE7SUFFM0QsR0FBRyxDQUFDLElBQUksQ0FBQztRQUNQLFFBQVE7UUFDUixLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssSUFBSSxDQUFDO1FBQzNCLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUM7UUFDM0IsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQztLQUMzQixDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUE1QlksUUFBQSxHQUFHLE9BNEJmIn0=
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3Byb2R1Y3RzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHFEQUFxRTtBQUVyRSx1Q0FHb0I7QUFDcEIsdUNBQXNEO0FBRS9DLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUF1QixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUN4RSxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUVoRSwwRUFBMEU7SUFDMUUsNkVBQTZFO0lBQzdFLE1BQU0sRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEVBQUUsR0FBRyxJQUFBLG9DQUEwQixFQUNoRSxHQUFHLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FDdkIsQ0FBQTtJQUNELEdBQUcsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtJQUUvQixvRUFBb0U7SUFDcEUsb0VBQW9FO0lBQ3BFLCtEQUErRDtJQUMvRCxzQkFBc0I7SUFDdEIsTUFBTSxFQUNKLFNBQVMsRUFBRSxFQUFFLEVBQ2IsYUFBYSxFQUFFLEVBQUUsRUFDakIsR0FBRyxjQUFjLEVBQ2xCLEdBQUcsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUE0QixDQUFBO0lBRTNELE1BQU0sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUNyRCxNQUFNLEVBQUUsU0FBUztRQUNqQixNQUFNLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNO1FBQzlCLE9BQU8sRUFBRSxjQUFjO1FBQ3ZCLFVBQVUsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVU7S0FDdkMsQ0FBQyxDQUFBO0lBRUYsTUFBTSxJQUFBLCtCQUF1QixFQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsUUFBaUIsQ0FBQyxDQUFBO0lBRTNELElBQUksbUJBQW1CLEVBQUUsQ0FBQztRQUN4QixNQUFNLElBQUEseUNBQWlDLEVBQUMsR0FBRyxFQUFFLFFBQWlCLENBQUMsQ0FBQTtJQUNqRSxDQUFDO0lBRUQsR0FBRyxDQUFDLElBQUksQ0FBQztRQUNQLFFBQVE7UUFDUixLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssSUFBSSxDQUFDO1FBQzNCLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxJQUFJLENBQUM7UUFDM0IsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLElBQUksQ0FBQztLQUMzQixDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUF2Q1ksUUFBQSxHQUFHLE9BdUNmIn0=
@@ -1,5 +1,5 @@
1
- import { AuthenticatedMedusaRequest, MedusaNextFunction, MedusaResponse } from "@medusajs/framework/http";
2
- import type { MedusaContainer } from "@medusajs/framework/types";
1
+ import { AuthenticatedMedusaRequest, MedusaNextFunction, MedusaResponse, MedusaStoreRequest } from "@medusajs/framework/http";
2
+ import type { MedusaContainer, MedusaPricingContext, TaxCalculationContext } from "@medusajs/framework/types";
3
3
  type WrappableVariant = {
4
4
  id: string;
5
5
  offers?: unknown[];
@@ -45,4 +45,32 @@ type OfferAwareRequest = AuthenticatedMedusaRequest & {
45
45
  * consumed and removed so it never reaches the product graph read.
46
46
  */
47
47
  export declare const applyOfferedProductsFilter: (req: OfferAwareRequest, _res: MedusaResponse, next: MedusaNextFunction) => Promise<void>;
48
+ type StoreRequestWithContext = MedusaStoreRequest<unknown> & {
49
+ pricingContext?: MedusaPricingContext;
50
+ taxContext?: {
51
+ taxLineContext?: TaxCalculationContext;
52
+ taxInclusivityContext?: {
53
+ automaticTaxes: boolean;
54
+ };
55
+ };
56
+ };
57
+ type PriceableVariant = {
58
+ id: string;
59
+ offer_id?: string | null;
60
+ calculated_price?: Record<string, unknown> | null;
61
+ };
62
+ type PriceableProduct = {
63
+ id?: string;
64
+ variants?: PriceableVariant[] | null;
65
+ };
66
+ /**
67
+ * Sets each variant's cheapest offer as `variant.offer_id` + its
68
+ * `variant.calculated_price`, in place. Offer prices share the variant price
69
+ * set scoped by an `offer_id` rule, so passing the union of offer ids as the
70
+ * pricing context lets one batched `calculatePrices` return the lowest matching
71
+ * price per price set; `offer_id` is recovered from the winning price row via a
72
+ * `price.id → offer.id` map. Variants without an offer get `null` for both.
73
+ * No-ops without a pricing context (caller did not request calculated prices).
74
+ */
75
+ export declare const wrapProductVariantsWithOfferPrice: (req: StoreRequestWithContext, products: PriceableProduct[]) => Promise<void>;
48
76
  export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.applyOfferedProductsFilter = exports.wrapProductVariantsWithOffers = void 0;
3
+ exports.wrapProductVariantsWithOfferPrice = exports.applyOfferedProductsFilter = exports.wrapProductVariantsWithOffers = void 0;
4
4
  const utils_1 = require("@medusajs/framework/utils");
5
5
  /**
6
6
  * Field set pulled for each offer attached by
@@ -133,4 +133,143 @@ const applyOfferedProductsFilter = async (req, _res, next) => {
133
133
  return next();
134
134
  };
135
135
  exports.applyOfferedProductsFilter = applyOfferedProductsFilter;
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS91dGlscy9vZmZlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBS0EscURBQXFFO0FBR3JFOzs7Ozs7R0FNRztBQUNILE1BQU0saUJBQWlCLEdBQUc7SUFDeEIsSUFBSTtJQUNKLFdBQVc7SUFDWCxZQUFZO0lBQ1oscUJBQXFCO0lBQ3JCLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLFlBQVk7SUFDWixZQUFZO0lBQ1osV0FBVztJQUNYLGFBQWE7SUFDYixlQUFlO0lBQ2YscUJBQXFCO0lBQ3JCLHVCQUF1QjtJQUN2QixXQUFXO0lBQ1gsZUFBZTtJQUNmLHNCQUFzQjtJQUN0QixxQkFBcUI7SUFDckIscUJBQXFCO0lBQ3JCLHdCQUF3QjtJQUN4Qix1Q0FBdUM7SUFDdkMsdUNBQXVDO0lBQ3ZDLHVDQUF1QztJQUN2Qyx3Q0FBd0M7SUFDeEMsMENBQTBDO0lBQzFDLHVEQUF1RDtJQUN2RCxnRUFBZ0U7SUFDaEUscUVBQXFFO0NBQ3RFLENBQUE7QUFNRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0ksTUFBTSw2QkFBNkIsR0FBRyxLQUFLLEVBQ2hELEtBQXNCLEVBQ3RCLFFBQTRCLEVBQzVCLFFBQWlCLEVBQ0YsRUFBRTtJQUNqQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUMzQixJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUN0RSxDQUFBO0lBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QixPQUFNO0lBQ1IsQ0FBQztJQUVELE1BQU0sS0FB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
136
+ /**
137
+ * Sets each variant's cheapest offer as `variant.offer_id` + its
138
+ * `variant.calculated_price`, in place. Offer prices share the variant price
139
+ * set scoped by an `offer_id` rule, so passing the union of offer ids as the
140
+ * pricing context lets one batched `calculatePrices` return the lowest matching
141
+ * price per price set; `offer_id` is recovered from the winning price row via a
142
+ * `price.id → offer.id` map. Variants without an offer get `null` for both.
143
+ * No-ops without a pricing context (caller did not request calculated prices).
144
+ */
145
+ const wrapProductVariantsWithOfferPrice = async (req, products) => {
146
+ if (!req.pricingContext) {
147
+ return;
148
+ }
149
+ const variantIds = Array.from(new Set(products.flatMap((p) => (p.variants ?? []).map((v) => v.id))));
150
+ if (!variantIds.length) {
151
+ return;
152
+ }
153
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
154
+ const { data: offers } = await query.graph({
155
+ entity: "offer",
156
+ fields: ["id", "variant_id", "product_variant.price_set.id", "prices.id"],
157
+ filters: { variant_id: variantIds },
158
+ });
159
+ if (!offers.length) {
160
+ return;
161
+ }
162
+ const priceSetToVariant = new Map();
163
+ const priceIdToOffer = new Map();
164
+ const offerIds = [];
165
+ const priceSetIds = new Set();
166
+ for (const offer of offers) {
167
+ const priceSetId = offer.product_variant?.price_set?.id;
168
+ if (!priceSetId) {
169
+ continue;
170
+ }
171
+ priceSetIds.add(priceSetId);
172
+ priceSetToVariant.set(priceSetId, offer.variant_id);
173
+ offerIds.push(offer.id);
174
+ for (const price of offer.prices ?? []) {
175
+ if (price?.id) {
176
+ priceIdToOffer.set(price.id, offer.id);
177
+ }
178
+ }
179
+ }
180
+ if (!priceSetIds.size) {
181
+ return;
182
+ }
183
+ const context = {
184
+ ...req.pricingContext,
185
+ offer_id: offerIds,
186
+ };
187
+ const pricingModule = req.scope.resolve(utils_1.Modules.PRICING);
188
+ const calculated = await pricingModule.calculatePrices({ id: Array.from(priceSetIds) }, { context: context });
189
+ const byVariant = new Map();
190
+ for (const calc of calculated) {
191
+ const variantId = priceSetToVariant.get(calc.id);
192
+ if (!variantId) {
193
+ continue;
194
+ }
195
+ const winningPriceId = calc.calculated_price
196
+ ?.id ?? null;
197
+ byVariant.set(variantId, {
198
+ offerId: winningPriceId
199
+ ? priceIdToOffer.get(winningPriceId) ?? null
200
+ : null,
201
+ price: calc,
202
+ });
203
+ }
204
+ for (const product of products) {
205
+ for (const variant of product.variants ?? []) {
206
+ const hit = byVariant.get(variant.id);
207
+ variant.offer_id = hit?.offerId ?? null;
208
+ variant.calculated_price = hit?.price ?? null;
209
+ }
210
+ }
211
+ await wrapVariantsWithTaxPrices(req, products);
212
+ };
213
+ exports.wrapProductVariantsWithOfferPrice = wrapProductVariantsWithOfferPrice;
214
+ /**
215
+ * Adds tax-inclusive / tax-exclusive amounts onto each variant's
216
+ * `calculated_price`, gated on automatic taxes being enabled.
217
+ */
218
+ const wrapVariantsWithTaxPrices = async (req, products) => {
219
+ if (!req.taxContext?.taxInclusivityContext ||
220
+ !req.taxContext?.taxLineContext ||
221
+ !req.taxContext.taxInclusivityContext.automaticTaxes) {
222
+ return;
223
+ }
224
+ const items = [];
225
+ for (const product of products) {
226
+ for (const variant of product.variants ?? []) {
227
+ const price = variant.calculated_price;
228
+ if (!price || !product.id) {
229
+ continue;
230
+ }
231
+ items.push({
232
+ id: variant.id,
233
+ product_id: product.id,
234
+ quantity: 1,
235
+ unit_price: price.calculated_amount,
236
+ currency_code: price.currency_code,
237
+ });
238
+ }
239
+ }
240
+ if (!items.length) {
241
+ return;
242
+ }
243
+ const taxService = req.scope.resolve(utils_1.Modules.TAX);
244
+ const taxLines = (await taxService.getTaxLines(items, req.taxContext.taxLineContext));
245
+ const taxRatesMap = new Map();
246
+ for (const taxLine of taxLines) {
247
+ const existing = taxRatesMap.get(taxLine.line_item_id) ?? [];
248
+ existing.push(taxLine);
249
+ taxRatesMap.set(taxLine.line_item_id, existing);
250
+ }
251
+ for (const product of products) {
252
+ for (const variant of product.variants ?? []) {
253
+ const price = variant.calculated_price;
254
+ if (!price) {
255
+ continue;
256
+ }
257
+ const taxRatesForVariant = taxRatesMap.get(variant.id) || [];
258
+ const { priceWithTax, priceWithoutTax } = (0, utils_1.calculateAmountsWithTax)({
259
+ taxLines: taxRatesForVariant,
260
+ amount: price.calculated_amount,
261
+ includesTax: price.is_calculated_price_tax_inclusive,
262
+ });
263
+ price.calculated_amount_with_tax = priceWithTax;
264
+ price.calculated_amount_without_tax = priceWithoutTax;
265
+ const { priceWithTax: originalPriceWithTax, priceWithoutTax: originalPriceWithoutTax, } = (0, utils_1.calculateAmountsWithTax)({
266
+ taxLines: taxRatesForVariant,
267
+ amount: price.original_amount,
268
+ includesTax: price.is_original_price_tax_inclusive,
269
+ });
270
+ price.original_amount_with_tax = originalPriceWithTax;
271
+ price.original_amount_without_tax = originalPriceWithoutTax;
272
+ }
273
+ }
274
+ };
275
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwaS91dGlscy9vZmZlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBTUEscURBSWtDO0FBU2xDOzs7Ozs7R0FNRztBQUNILE1BQU0saUJBQWlCLEdBQUc7SUFDeEIsSUFBSTtJQUNKLFdBQVc7SUFDWCxZQUFZO0lBQ1oscUJBQXFCO0lBQ3JCLEtBQUs7SUFDTCxLQUFLO0lBQ0wsS0FBSztJQUNMLFlBQVk7SUFDWixZQUFZO0lBQ1osV0FBVztJQUNYLGFBQWE7SUFDYixlQUFlO0lBQ2YscUJBQXFCO0lBQ3JCLHVCQUF1QjtJQUN2QixXQUFXO0lBQ1gsZUFBZTtJQUNmLHNCQUFzQjtJQUN0QixxQkFBcUI7SUFDckIscUJBQXFCO0lBQ3JCLHdCQUF3QjtJQUN4Qix1Q0FBdUM7SUFDdkMsdUNBQXVDO0lBQ3ZDLHVDQUF1QztJQUN2Qyx3Q0FBd0M7SUFDeEMsMENBQTBDO0lBQzFDLHVEQUF1RDtJQUN2RCxnRUFBZ0U7SUFDaEUscUVBQXFFO0NBQ3RFLENBQUE7QUFNRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0ksTUFBTSw2QkFBNkIsR0FBRyxLQUFLLEVBQ2hELEtBQXNCLEVBQ3RCLFFBQTRCLEVBQzVCLFFBQWlCLEVBQ0YsRUFBRTtJQUNqQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUMzQixJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUN0RSxDQUFBO0lBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN2QixPQUFNO0lBQ1IsQ0FBQztJQUVELE1BQU0sS0FB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
@@ -0,0 +1,2 @@
1
+ import type { MedusaContainer } from "@medusajs/framework/types";
2
+ export declare const resolveVisibleSellerIds: (scope: MedusaContainer) => Promise<string[]>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveVisibleSellerIds = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const types_1 = require("@mercurjs/types");
6
+ const resolveVisibleSellerIds = async (scope) => {
7
+ const query = scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
8
+ const now = new Date();
9
+ const { data: visibleSellers } = await query.graph({
10
+ entity: "seller",
11
+ fields: ["id"],
12
+ filters: {
13
+ status: types_1.SellerStatus.OPEN,
14
+ $and: [
15
+ { $or: [{ closed_from: null }, { closed_from: { $gt: now } }] },
16
+ { $or: [{ closed_to: null }, { closed_to: { $lt: now } }] },
17
+ ],
18
+ },
19
+ });
20
+ return visibleSellers.map((s) => s.id);
21
+ };
22
+ exports.resolveVisibleSellerIds = resolveVisibleSellerIds;
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsbGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvdXRpbHMvc2VsbGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxREFBcUU7QUFFckUsMkNBQThDO0FBRXZDLE1BQU0sdUJBQXVCLEdBQUcsS0FBSyxFQUMxQyxLQUFzQixFQUNILEVBQUU7SUFDckIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM1RCxNQUFNLEdBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFBO0lBRXRCLE1BQU0sRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1FBQ2pELE1BQU0sRUFBRSxRQUFRO1FBQ2hCLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQztRQUNkLE9BQU8sRUFBRTtZQUNQLE1BQU0sRUFBRSxvQkFBWSxDQUFDLElBQUk7WUFDekIsSUFBSSxFQUFFO2dCQUNKLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFO2dCQUMvRCxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRTthQUM1RDtTQUNGO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0FBQ3hELENBQUMsQ0FBQTtBQW5CWSxRQUFBLHVCQUF1QiwyQkFtQm5DIn0=