@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.
- package/.medusa/server/src/api/admin/offers/query-config.js +2 -1
- package/.medusa/server/src/api/admin/product-attributes/query-config.js +4 -1
- package/.medusa/server/src/api/admin/product-attributes/route.d.ts +2 -2
- package/.medusa/server/src/api/admin/product-attributes/route.js +1 -1
- package/.medusa/server/src/api/admin/product-attributes/validators.d.ts +4 -4
- package/.medusa/server/src/api/store/middlewares.js +13 -11
- package/.medusa/server/src/api/store/offers/[id]/route.d.ts +3 -0
- package/.medusa/server/src/api/store/offers/[id]/route.js +28 -0
- package/.medusa/server/src/api/store/offers/helpers.d.ts +43 -0
- package/.medusa/server/src/api/store/offers/helpers.js +191 -0
- package/.medusa/server/src/api/store/offers/middlewares.d.ts +2 -0
- package/.medusa/server/src/api/store/offers/middlewares.js +64 -0
- package/.medusa/server/src/api/store/offers/query-config.d.ts +12 -0
- package/.medusa/server/src/api/store/offers/query-config.js +50 -0
- package/.medusa/server/src/api/store/offers/route.d.ts +3 -0
- package/.medusa/server/src/api/store/offers/route.js +30 -0
- package/.medusa/server/src/api/store/offers/validators.d.ts +159 -0
- package/.medusa/server/src/api/store/offers/validators.js +29 -0
- package/.medusa/server/src/api/store/products/[id]/route.js +9 -1
- package/.medusa/server/src/api/store/products/helpers.d.ts +10 -0
- package/.medusa/server/src/api/store/products/helpers.js +20 -0
- package/.medusa/server/src/api/store/products/middlewares.js +20 -15
- package/.medusa/server/src/api/store/products/route.js +9 -1
- package/.medusa/server/src/api/utils/offers.d.ts +30 -2
- package/.medusa/server/src/api/utils/offers.js +141 -2
- package/.medusa/server/src/api/utils/sellers.d.ts +2 -0
- package/.medusa/server/src/api/utils/sellers.js +23 -0
- package/.medusa/server/src/api/vendor/claims/validators.d.ts +6 -6
- package/.medusa/server/src/api/vendor/exchanges/validators.d.ts +6 -6
- package/.medusa/server/src/api/vendor/offers/query-config.js +2 -1
- package/.medusa/server/src/api/vendor/order-edits/validators.d.ts +6 -6
- package/.medusa/server/src/api/vendor/product-attributes/query-config.js +4 -2
- package/.medusa/server/src/api/vendor/product-attributes/validators.d.ts +4 -4
- package/.medusa/server/src/api/vendor/product-variants/validators.d.ts +6 -6
- package/.medusa/server/src/api/vendor/sales-channels/[id]/products/route.js +2 -1
- package/.medusa/server/src/api/vendor/sales-channels/helpers.d.ts +1 -0
- package/.medusa/server/src/api/vendor/sales-channels/helpers.js +20 -2
- package/.medusa/server/src/links/offer-product-link.d.ts +2 -0
- package/.medusa/server/src/links/offer-product-link.js +15 -0
- package/.medusa/server/src/modules/commission/migrations/Migration20260615120000.js +1 -1
- package/.medusa/server/src/modules/offer/migrations/Migration20260622000000.d.ts +5 -0
- package/.medusa/server/src/modules/offer/migrations/Migration20260622000000.js +16 -0
- package/.medusa/server/src/modules/offer/models/offer.d.ts +1 -0
- package/.medusa/server/src/modules/offer/models/offer.js +7 -1
- package/.medusa/server/src/modules/offer/service.d.ts +1 -0
- package/.medusa/server/src/workflows/offer/steps/create-offers.d.ts +1 -0
- package/.medusa/server/src/workflows/offer/steps/update-offers.d.ts +1 -0
- package/.medusa/server/src/workflows/offer/workflows/create-offers.js +3 -2
- package/.medusa/server/src/workflows/payout/workflows/create-payout.js +16 -16
- 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,
|
|
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 =
|
|
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,
|
|
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,
|
|
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
|
-
|
|
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,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=
|