medusa-product-helper 0.0.1

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.
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ const i18nTranslations0 = {};
3
+ const widgetModule = { widgets: [] };
4
+ const routeModule = {
5
+ routes: []
6
+ };
7
+ const menuItemModule = {
8
+ menuItems: []
9
+ };
10
+ const formModule = { customFields: {} };
11
+ const displayModule = {
12
+ displays: {}
13
+ };
14
+ const i18nModule = { resources: i18nTranslations0 };
15
+ const plugin = {
16
+ widgetModule,
17
+ routeModule,
18
+ menuItemModule,
19
+ formModule,
20
+ displayModule,
21
+ i18nModule
22
+ };
23
+ module.exports = plugin;
@@ -0,0 +1,24 @@
1
+ const i18nTranslations0 = {};
2
+ const widgetModule = { widgets: [] };
3
+ const routeModule = {
4
+ routes: []
5
+ };
6
+ const menuItemModule = {
7
+ menuItems: []
8
+ };
9
+ const formModule = { customFields: {} };
10
+ const displayModule = {
11
+ displays: {}
12
+ };
13
+ const i18nModule = { resources: i18nTranslations0 };
14
+ const plugin = {
15
+ widgetModule,
16
+ routeModule,
17
+ menuItemModule,
18
+ formModule,
19
+ displayModule,
20
+ i18nModule
21
+ };
22
+ export {
23
+ plugin as default
24
+ };
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = GET;
4
+ async function GET(req, res) {
5
+ res.sendStatus(200);
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL3BsdWdpbi9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLGtCQUtDO0FBTE0sS0FBSyxVQUFVLEdBQUcsQ0FDdkIsR0FBa0IsRUFDbEIsR0FBbUI7SUFFbkIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QixDQUFDIn0=
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = GET;
4
+ async function GET(req, res) {
5
+ res.sendStatus(200);
6
+ }
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL3BsdWdpbi9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLGtCQUtDO0FBTE0sS0FBSyxVQUFVLEdBQUcsQ0FDdkIsR0FBa0IsRUFDbEIsR0FBbUI7SUFFbkIsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QixDQUFDIn0=
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StoreBestSellingQuerySchema = exports.StoreProductHelperFilterQuerySchema = void 0;
4
+ const zod_1 = require("zod");
5
+ const numberOrString = zod_1.z.union([zod_1.z.number(), zod_1.z.string()]);
6
+ const optionalNumberish = zod_1.z
7
+ .union([zod_1.z.undefined(), zod_1.z.null(), numberOrString])
8
+ .transform((value) => {
9
+ if (value === undefined || value === null || value === "") {
10
+ return undefined;
11
+ }
12
+ const numeric = typeof value === "number"
13
+ ? value
14
+ : Number(String(value).replace(/,/g, "").trim());
15
+ if (Number.isNaN(numeric)) {
16
+ throw new Error("Invalid numeric value");
17
+ }
18
+ return numeric;
19
+ });
20
+ const positiveInt = zod_1.z
21
+ .union([zod_1.z.string(), zod_1.z.number()])
22
+ .default(20)
23
+ .transform((value) => {
24
+ const parsed = Number(value);
25
+ if (Number.isNaN(parsed) || parsed <= 0) {
26
+ return 20;
27
+ }
28
+ return Math.floor(parsed);
29
+ });
30
+ const nonNegativeInt = zod_1.z
31
+ .union([zod_1.z.string(), zod_1.z.number()])
32
+ .default(0)
33
+ .transform((value) => {
34
+ const parsed = Number(value);
35
+ if (Number.isNaN(parsed) || parsed < 0) {
36
+ return 0;
37
+ }
38
+ return Math.floor(parsed);
39
+ });
40
+ const stringArray = zod_1.z
41
+ .union([
42
+ zod_1.z.string().transform((value) => value
43
+ .split(",")
44
+ .map((entry) => entry.trim())
45
+ .filter(Boolean)),
46
+ zod_1.z.array(zod_1.z.string()),
47
+ ])
48
+ .optional()
49
+ .transform((value) => (Array.isArray(value) ? value : []));
50
+ const metadataValue = zod_1.z.union([
51
+ zod_1.z.string(),
52
+ zod_1.z.number(),
53
+ zod_1.z.boolean(),
54
+ zod_1.z.array(zod_1.z.union([zod_1.z.string(), zod_1.z.number(), zod_1.z.boolean()])),
55
+ ]);
56
+ const metadataFilterInput = zod_1.z
57
+ .union([zod_1.z.record(metadataValue), zod_1.z.string()])
58
+ .optional()
59
+ .transform((value) => {
60
+ if (!value) {
61
+ return {};
62
+ }
63
+ if (typeof value === "string") {
64
+ try {
65
+ const parsed = JSON.parse(value);
66
+ if (parsed && typeof parsed === "object") {
67
+ return parsed;
68
+ }
69
+ }
70
+ catch {
71
+ // fallthrough
72
+ }
73
+ return {};
74
+ }
75
+ return value;
76
+ });
77
+ const booleanish = zod_1.z
78
+ .union([zod_1.z.boolean(), zod_1.z.string(), zod_1.z.number()])
79
+ .optional()
80
+ .transform((value) => {
81
+ if (typeof value === "boolean") {
82
+ return value;
83
+ }
84
+ if (typeof value === "number") {
85
+ return value !== 0;
86
+ }
87
+ if (typeof value === "string") {
88
+ const normalized = value.trim().toLowerCase();
89
+ if (["true", "1", "yes", "y"].includes(normalized)) {
90
+ return true;
91
+ }
92
+ if (["false", "0", "no", "n"].includes(normalized)) {
93
+ return false;
94
+ }
95
+ }
96
+ return undefined;
97
+ });
98
+ const dateish = zod_1.z
99
+ .union([zod_1.z.date(), zod_1.z.string(), zod_1.z.number()])
100
+ .optional()
101
+ .transform((value) => {
102
+ if (typeof value === "undefined" || value === null) {
103
+ return undefined;
104
+ }
105
+ if (value instanceof Date) {
106
+ return value;
107
+ }
108
+ if (typeof value === "string") {
109
+ const trimmed = value.trim();
110
+ if (!trimmed) {
111
+ return undefined;
112
+ }
113
+ const parsed = new Date(trimmed);
114
+ return Number.isNaN(parsed.getTime()) ? undefined : parsed;
115
+ }
116
+ const parsed = new Date(value);
117
+ return Number.isNaN(parsed.getTime()) ? undefined : parsed;
118
+ });
119
+ exports.StoreProductHelperFilterQuerySchema = zod_1.z
120
+ .object({
121
+ q: zod_1.z.string().optional(),
122
+ id: stringArray,
123
+ handle: stringArray,
124
+ collection_id: stringArray,
125
+ category_id: stringArray,
126
+ tags: stringArray,
127
+ sales_channel_id: stringArray,
128
+ limit: positiveInt,
129
+ offset: nonNegativeInt,
130
+ order: zod_1.z.string().optional(),
131
+ fields: stringArray,
132
+ expand: stringArray,
133
+ price_min: optionalNumberish,
134
+ price_max: optionalNumberish,
135
+ metadata: metadataFilterInput,
136
+ promotion_start: dateish,
137
+ promotion_end: dateish,
138
+ promotion_active_on: dateish,
139
+ include_open_promotions: booleanish.default(true),
140
+ availability_status: stringArray,
141
+ include_preorder: booleanish.default(true),
142
+ include_backorder: booleanish.default(true),
143
+ include_gift_cards: booleanish.default(false),
144
+ publishable_only: booleanish.default(true),
145
+ rating_min: optionalNumberish,
146
+ rating_max: optionalNumberish,
147
+ rating_required: booleanish.default(false),
148
+ })
149
+ .refine((value) => typeof value.price_min === "undefined" ||
150
+ typeof value.price_max === "undefined" ||
151
+ value.price_min <= value.price_max, {
152
+ message: "price_min must be less than or equal to price_max",
153
+ path: ["price_max"],
154
+ })
155
+ .refine((value) => typeof value.rating_min === "undefined" ||
156
+ typeof value.rating_max === "undefined" ||
157
+ value.rating_min <= value.rating_max, {
158
+ message: "rating_min must be less than or equal to rating_max",
159
+ path: ["rating_max"],
160
+ });
161
+ exports.StoreBestSellingQuerySchema = zod_1.z.object({
162
+ limit: positiveInt.default(10),
163
+ offset: nonNegativeInt.default(0),
164
+ sales_channel_id: stringArray,
165
+ region_id: stringArray,
166
+ timeframe_from: dateish,
167
+ timeframe_to: dateish,
168
+ variant_id: stringArray,
169
+ product_id: stringArray,
170
+ });
171
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvc3RvcmUvcHJvZHVjdC1oZWxwZXIvcHJvZHVjdHMvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBdUI7QUFFdkIsTUFBTSxjQUFjLEdBQUcsT0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFBO0FBQ3hELE1BQU0saUJBQWlCLEdBQUcsT0FBQztLQUN4QixLQUFLLENBQUMsQ0FBQyxPQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsT0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0tBQ2hELFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO0lBQ25CLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUMxRCxPQUFPLFNBQVMsQ0FBQTtJQUNsQixDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQ1gsT0FBTyxLQUFLLEtBQUssUUFBUTtRQUN2QixDQUFDLENBQUMsS0FBSztRQUNQLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQTtJQUVwRCxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUE7SUFDMUMsQ0FBQztJQUVELE9BQU8sT0FBTyxDQUFBO0FBQ2hCLENBQUMsQ0FBQyxDQUFBO0FBRUosTUFBTSxXQUFXLEdBQUcsT0FBQztLQUNsQixLQUFLLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDL0IsT0FBTyxDQUFDLEVBQUUsQ0FBQztLQUNYLFNBQVMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO0lBQ25CLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM1QixJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3hDLE9BQU8sRUFBRSxDQUFBO0lBQ1gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUMzQixDQUFDLENBQUMsQ0FBQTtBQUVKLE1BQU0sY0FBYyxHQUFHLE9BQUM7S0FDckIsS0FBSyxDQUFDLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0tBQy9CLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FDVixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUNuQixNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDNUIsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN2QyxPQUFPLENBQUMsQ0FBQTtJQUNWLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUE7QUFDM0IsQ0FBQyxDQUFDLENBQUE7QUFFSixNQUFNLFdBQVcsR0FBRyxPQUFDO0tBQ2xCLEtBQUssQ0FBQztJQUNMLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUM3QixLQUFLO1NBQ0YsS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUNWLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1NBQzVCLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FDbkI7SUFDRCxPQUFDLENBQUMsS0FBSyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztDQUNwQixDQUFDO0tBQ0QsUUFBUSxFQUFFO0tBQ1YsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUU1RCxNQUFNLGFBQWEsR0FBRyxPQUFDLENBQUMsS0FBSyxDQUFDO0lBQzVCLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDVixPQUFDLENBQUMsTUFBTSxFQUFFO0lBQ1YsT0FBQyxDQUFDLE9BQU8sRUFBRTtJQUNYLE9BQUMsQ0FBQyxLQUFLLENBQUMsT0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztDQUN4RCxDQUFDLENBQUE7QUFFRixNQUFNLG1CQUFtQixHQUFHLE9BQUM7S0FDMUIsS0FBSyxDQUFDLENBQUMsT0FBQyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztLQUM1QyxRQUFRLEVBQUU7S0FDVixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUNuQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWCxPQUFPLEVBQUUsQ0FBQTtJQUNYLENBQUM7SUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDaEMsSUFBSSxNQUFNLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQ3pDLE9BQU8sTUFBaUMsQ0FBQTtZQUMxQyxDQUFDO1FBQ0gsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLGNBQWM7UUFDaEIsQ0FBQztRQUNELE9BQU8sRUFBRSxDQUFBO0lBQ1gsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQyxDQUFDLENBQUE7QUFFSixNQUFNLFVBQVUsR0FBRyxPQUFDO0tBQ2pCLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7S0FDNUMsUUFBUSxFQUFFO0tBQ1YsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7SUFDbkIsSUFBSSxPQUFPLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUMvQixPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFFRCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE9BQU8sS0FBSyxLQUFLLENBQUMsQ0FBQTtJQUNwQixDQUFDO0lBRUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDN0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQ25ELE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNuRCxPQUFPLEtBQUssQ0FBQTtRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUE7QUFDbEIsQ0FBQyxDQUFDLENBQUE7QUFFSixNQUFNLE9BQU8sR0FBRyxPQUFDO0tBQ2QsS0FBSyxDQUFDLENBQUMsT0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztLQUN6QyxRQUFRLEVBQUU7S0FDVixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUNuQixJQUFJLE9BQU8sS0FBSyxLQUFLLFdBQVcsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDbkQsT0FBTyxTQUFTLENBQUE7SUFDbEIsQ0FBQztJQUVELElBQUksS0FBSyxZQUFZLElBQUksRUFBRSxDQUFDO1FBQzFCLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQzVCLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sU0FBUyxDQUFBO1FBQ2xCLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNoQyxPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBO0lBQzVELENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUM5QixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFBO0FBQzVELENBQUMsQ0FBQyxDQUFBO0FBRVMsUUFBQSxtQ0FBbUMsR0FBRyxPQUFDO0tBQ2pELE1BQU0sQ0FBQztJQUNOLENBQUMsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3hCLEVBQUUsRUFBRSxXQUFXO0lBQ2YsTUFBTSxFQUFFLFdBQVc7SUFDbkIsYUFBYSxFQUFFLFdBQVc7SUFDMUIsV0FBVyxFQUFFLFdBQVc7SUFDeEIsSUFBSSxFQUFFLFdBQVc7SUFDakIsZ0JBQWdCLEVBQUUsV0FBVztJQUM3QixLQUFLLEVBQUUsV0FBVztJQUNsQixNQUFNLEVBQUUsY0FBYztJQUN0QixLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRTtJQUM1QixNQUFNLEVBQUUsV0FBVztJQUNuQixNQUFNLEVBQUUsV0FBVztJQUNuQixTQUFTLEVBQUUsaUJBQWlCO0lBQzVCLFNBQVMsRUFBRSxpQkFBaUI7SUFDNUIsUUFBUSxFQUFFLG1CQUFtQjtJQUM3QixlQUFlLEVBQUUsT0FBTztJQUN4QixhQUFhLEVBQUUsT0FBTztJQUN0QixtQkFBbUIsRUFBRSxPQUFPO0lBQzVCLHVCQUF1QixFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBQ2pELG1CQUFtQixFQUFFLFdBQVc7SUFDaEMsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDMUMsaUJBQWlCLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDM0Msa0JBQWtCLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDN0MsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDMUMsVUFBVSxFQUFFLGlCQUFpQjtJQUM3QixVQUFVLEVBQUUsaUJBQWlCO0lBQzdCLGVBQWUsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztDQUMzQyxDQUFDO0tBQ0QsTUFBTSxDQUNMLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDUixPQUFPLEtBQUssQ0FBQyxTQUFTLEtBQUssV0FBVztJQUN0QyxPQUFPLEtBQUssQ0FBQyxTQUFTLEtBQUssV0FBVztJQUNyQyxLQUFLLENBQUMsU0FBb0IsSUFBSyxLQUFLLENBQUMsU0FBb0IsRUFDNUQ7SUFDRSxPQUFPLEVBQUUsbURBQW1EO0lBQzVELElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQztDQUNwQixDQUNGO0tBQ0EsTUFBTSxDQUNMLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FDUixPQUFPLEtBQUssQ0FBQyxVQUFVLEtBQUssV0FBVztJQUN2QyxPQUFPLEtBQUssQ0FBQyxVQUFVLEtBQUssV0FBVztJQUN0QyxLQUFLLENBQUMsVUFBcUIsSUFBSyxLQUFLLENBQUMsVUFBcUIsRUFDOUQ7SUFDRSxPQUFPLEVBQUUscURBQXFEO0lBQzlELElBQUksRUFBRSxDQUFDLFlBQVksQ0FBQztDQUNyQixDQUNGLENBQUE7QUFNVSxRQUFBLDJCQUEyQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDbEQsS0FBSyxFQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0lBQzlCLE1BQU0sRUFBRSxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNqQyxnQkFBZ0IsRUFBRSxXQUFXO0lBQzdCLFNBQVMsRUFBRSxXQUFXO0lBQ3RCLGNBQWMsRUFBRSxPQUFPO0lBQ3ZCLFlBQVksRUFBRSxPQUFPO0lBQ3JCLFVBQVUsRUFBRSxXQUFXO0lBQ3ZCLFVBQVUsRUFBRSxXQUFXO0NBQ3hCLENBQUMsQ0FBQSJ9
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_PRODUCT_HELPER_OPTIONS = void 0;
4
+ exports.normalizeProductHelperOptions = normalizeProductHelperOptions;
5
+ exports.resolveProductHelperOptions = resolveProductHelperOptions;
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const zod_1 = require("zod");
8
+ const types_1 = require("../shared/product-metadata/types");
9
+ const utils_2 = require("../shared/product-metadata/utils");
10
+ const PriceRangeSchema = zod_1.z
11
+ .object({
12
+ label: zod_1.z.string().min(1).max(64).default("custom"),
13
+ currency_code: zod_1.z
14
+ .string()
15
+ .trim()
16
+ .length(3, "currency_code must be ISO alpha-3")
17
+ .transform((value) => value.toLowerCase())
18
+ .optional(),
19
+ min: zod_1.z
20
+ .number({
21
+ coerce: true,
22
+ invalid_type_error: "price min must be a number",
23
+ })
24
+ .nonnegative()
25
+ .nullable()
26
+ .default(null),
27
+ max: zod_1.z
28
+ .number({
29
+ coerce: true,
30
+ invalid_type_error: "price max must be a number",
31
+ })
32
+ .nonnegative()
33
+ .nullable()
34
+ .default(null),
35
+ })
36
+ .refine((value) => value.min === null ||
37
+ value.max === null ||
38
+ value.min <= value.max, {
39
+ message: "price min must be less than or equal to max",
40
+ path: ["max"],
41
+ });
42
+ const MetadataDescriptorSchema = zod_1.z.object({
43
+ key: zod_1.z.string().min(1),
44
+ label: zod_1.z
45
+ .string()
46
+ .trim()
47
+ .transform((value) => (value.length ? value : undefined))
48
+ .optional(),
49
+ type: zod_1.z.enum(types_1.METADATA_FIELD_TYPES),
50
+ });
51
+ const PromotionWindowSchema = zod_1.z.object({
52
+ start_metadata_key: zod_1.z.string().min(1).default("promotion_start"),
53
+ end_metadata_key: zod_1.z.string().min(1).default("promotion_end"),
54
+ treat_open_ended_as_active: zod_1.z.boolean().default(true),
55
+ });
56
+ const AvailabilitySchema = zod_1.z.object({
57
+ require_in_stock: zod_1.z.boolean().default(false),
58
+ include_preorder: zod_1.z.boolean().default(true),
59
+ include_backorder: zod_1.z.boolean().default(true),
60
+ include_gift_cards: zod_1.z.boolean().default(false),
61
+ publishable_only: zod_1.z.boolean().default(true),
62
+ });
63
+ const RatingSchema = zod_1.z.object({
64
+ enabled: zod_1.z.boolean().default(true),
65
+ min: zod_1.z.number({ coerce: true }).min(0).max(5).default(0),
66
+ max: zod_1.z.number({ coerce: true }).min(0).max(5).default(5),
67
+ require_reviews: zod_1.z.boolean().default(false),
68
+ });
69
+ const ProductHelperOptionsSchema = zod_1.z.object({
70
+ metadata: zod_1.z
71
+ .object({
72
+ descriptors: zod_1.z.array(MetadataDescriptorSchema).default([]),
73
+ expose_client_helpers: zod_1.z.boolean().default(true),
74
+ })
75
+ .default({
76
+ descriptors: [],
77
+ expose_client_helpers: true,
78
+ }),
79
+ price_ranges: zod_1.z.array(PriceRangeSchema).default([]),
80
+ default_price_range: PriceRangeSchema.default({
81
+ label: "custom",
82
+ min: null,
83
+ max: null,
84
+ }),
85
+ promotion_window: PromotionWindowSchema.default({
86
+ start_metadata_key: "promotion_start",
87
+ end_metadata_key: "promotion_end",
88
+ treat_open_ended_as_active: true,
89
+ }),
90
+ availability: AvailabilitySchema.default({
91
+ require_in_stock: false,
92
+ include_preorder: true,
93
+ include_backorder: true,
94
+ include_gift_cards: false,
95
+ publishable_only: true,
96
+ }),
97
+ rating: RatingSchema.default({
98
+ enabled: true,
99
+ min: 0,
100
+ max: 5,
101
+ require_reviews: false,
102
+ }),
103
+ });
104
+ exports.DEFAULT_PRODUCT_HELPER_OPTIONS = normalizeProductHelperOptions({});
105
+ const PLUGIN_NAME = "medusa-product-helper";
106
+ function normalizeProductHelperOptions(input) {
107
+ const parsed = ProductHelperOptionsSchema.parse(input ?? {});
108
+ return {
109
+ ...parsed,
110
+ metadata: {
111
+ ...parsed.metadata,
112
+ descriptors: (0, utils_2.normalizeMetadataDescriptors)(parsed.metadata.descriptors),
113
+ },
114
+ };
115
+ }
116
+ function resolveProductHelperOptions(configModule) {
117
+ const plugins = configModule?.plugins ?? [];
118
+ for (const plugin of plugins) {
119
+ if ((0, utils_1.isString)(plugin)) {
120
+ if (plugin === PLUGIN_NAME) {
121
+ break;
122
+ }
123
+ continue;
124
+ }
125
+ if (plugin?.resolve === PLUGIN_NAME) {
126
+ return normalizeProductHelperOptions(plugin.options);
127
+ }
128
+ }
129
+ return exports.DEFAULT_PRODUCT_HELPER_OPTIONS;
130
+ }
131
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1oZWxwZXItb3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb25maWcvcHJvZHVjdC1oZWxwZXItb3B0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUErSUEsc0VBWUM7QUFFRCxrRUFtQkM7QUFoTEQscURBQW9EO0FBQ3BELDZCQUF1QjtBQUV2Qiw0REFHeUM7QUFDekMsNERBQStFO0FBRS9FLE1BQU0sZ0JBQWdCLEdBQUcsT0FBQztLQUN2QixNQUFNLENBQUM7SUFDTixLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUNsRCxhQUFhLEVBQUUsT0FBQztTQUNiLE1BQU0sRUFBRTtTQUNSLElBQUksRUFBRTtTQUNOLE1BQU0sQ0FBQyxDQUFDLEVBQUUsbUNBQW1DLENBQUM7U0FDOUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDekMsUUFBUSxFQUFFO0lBQ2IsR0FBRyxFQUFFLE9BQUM7U0FDSCxNQUFNLENBQUM7UUFDTixNQUFNLEVBQUUsSUFBSTtRQUNaLGtCQUFrQixFQUFFLDRCQUE0QjtLQUNqRCxDQUFDO1NBQ0QsV0FBVyxFQUFFO1NBQ2IsUUFBUSxFQUFFO1NBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQztJQUNoQixHQUFHLEVBQUUsT0FBQztTQUNILE1BQU0sQ0FBQztRQUNOLE1BQU0sRUFBRSxJQUFJO1FBQ1osa0JBQWtCLEVBQUUsNEJBQTRCO0tBQ2pELENBQUM7U0FDRCxXQUFXLEVBQUU7U0FDYixRQUFRLEVBQUU7U0FDVixPQUFPLENBQUMsSUFBSSxDQUFDO0NBQ2pCLENBQUM7S0FDRCxNQUFNLENBQ0wsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNSLEtBQUss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
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.METADATA_FIELD_TYPES = void 0;
4
+ exports.METADATA_FIELD_TYPES = ["number", "text", "file", "bool"];
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2hhcmVkL3Byb2R1Y3QtbWV0YWRhdGEvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxvQkFBb0IsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBVSxDQUFBIn0=
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeMetadataDescriptors = normalizeMetadataDescriptors;
4
+ exports.getDescriptorMap = getDescriptorMap;
5
+ exports.buildInitialFormState = buildInitialFormState;
6
+ exports.buildMetadataPayload = buildMetadataPayload;
7
+ exports.hasMetadataChanges = hasMetadataChanges;
8
+ exports.validateValueForDescriptor = validateValueForDescriptor;
9
+ const types_1 = require("./types");
10
+ const VALID_FIELD_TYPES = new Set(types_1.METADATA_FIELD_TYPES);
11
+ /**
12
+ * Normalizes arbitrary input (typically plugin options) into a clean descriptor list.
13
+ * - Filters out invalid entries.
14
+ * - Deduplicates by key (first occurrence wins).
15
+ * - Trims key and label whitespace.
16
+ */
17
+ function normalizeMetadataDescriptors(input) {
18
+ if (!Array.isArray(input)) {
19
+ return [];
20
+ }
21
+ const seenKeys = new Set();
22
+ const normalized = [];
23
+ for (const item of input) {
24
+ if (!item || typeof item !== "object") {
25
+ continue;
26
+ }
27
+ const key = getNormalizedKey(item.key);
28
+ if (!key || seenKeys.has(key)) {
29
+ continue;
30
+ }
31
+ const type = getNormalizedType(item.type);
32
+ if (!type) {
33
+ continue;
34
+ }
35
+ const label = getNormalizedLabel(item.label);
36
+ normalized.push({
37
+ key,
38
+ type,
39
+ ...(label ? { label } : {}),
40
+ });
41
+ seenKeys.add(key);
42
+ }
43
+ return normalized;
44
+ }
45
+ function getDescriptorMap(descriptors) {
46
+ return descriptors.reduce((acc, descriptor) => {
47
+ acc[descriptor.key] = descriptor;
48
+ return acc;
49
+ }, {});
50
+ }
51
+ function buildInitialFormState(descriptors, metadata) {
52
+ return descriptors.reduce((acc, descriptor) => {
53
+ const currentValue = metadata && typeof metadata === "object"
54
+ ? metadata[descriptor.key]
55
+ : undefined;
56
+ acc[descriptor.key] = normalizeFormValue(descriptor, currentValue);
57
+ return acc;
58
+ }, {});
59
+ }
60
+ function buildMetadataPayload({ descriptors, values, originalMetadata, }) {
61
+ const base = originalMetadata && typeof originalMetadata === "object"
62
+ ? { ...originalMetadata }
63
+ : {};
64
+ descriptors.forEach((descriptor) => {
65
+ const rawValue = values[descriptor.key];
66
+ const coerced = coerceMetadataValue(descriptor, rawValue);
67
+ if (typeof coerced === "undefined") {
68
+ delete base[descriptor.key];
69
+ return;
70
+ }
71
+ base[descriptor.key] = coerced;
72
+ });
73
+ return base;
74
+ }
75
+ function hasMetadataChanges({ descriptors, values, originalMetadata, }) {
76
+ const next = buildMetadataPayload({ descriptors, values, originalMetadata });
77
+ const prev = originalMetadata && typeof originalMetadata === "object"
78
+ ? originalMetadata
79
+ : {};
80
+ return descriptors.some((descriptor) => {
81
+ const prevValue = prev[descriptor.key];
82
+ const nextValue = next[descriptor.key];
83
+ return !isDeepEqual(prevValue, nextValue);
84
+ });
85
+ }
86
+ function validateValueForDescriptor(descriptor, value) {
87
+ if (descriptor.type === "number") {
88
+ if (value === "" || value === null || typeof value === "undefined") {
89
+ return undefined;
90
+ }
91
+ const numericValue = typeof value === "number" ? value : Number(String(value).trim());
92
+ if (Number.isNaN(numericValue)) {
93
+ return "Enter a valid number";
94
+ }
95
+ }
96
+ if (descriptor.type === "file") {
97
+ if (!value) {
98
+ return undefined;
99
+ }
100
+ try {
101
+ // eslint-disable-next-line no-new
102
+ new URL(String(value).trim());
103
+ }
104
+ catch (err) {
105
+ return "Enter a valid URL";
106
+ }
107
+ }
108
+ return undefined;
109
+ }
110
+ function normalizeFormValue(descriptor, currentValue) {
111
+ if (descriptor.type === "bool") {
112
+ return Boolean(currentValue);
113
+ }
114
+ if ((descriptor.type === "number" || descriptor.type === "text") &&
115
+ typeof currentValue === "number") {
116
+ return currentValue.toString();
117
+ }
118
+ if (typeof currentValue === "string" || typeof currentValue === "number") {
119
+ return String(currentValue);
120
+ }
121
+ return "";
122
+ }
123
+ function coerceMetadataValue(descriptor, value) {
124
+ if (value === "" || value === null || typeof value === "undefined") {
125
+ return undefined;
126
+ }
127
+ if (descriptor.type === "bool") {
128
+ if (typeof value === "boolean") {
129
+ return value;
130
+ }
131
+ if (typeof value === "number") {
132
+ return value !== 0;
133
+ }
134
+ if (typeof value === "string") {
135
+ const normalized = value.trim().toLowerCase();
136
+ if (!normalized) {
137
+ return undefined;
138
+ }
139
+ if (["true", "1", "yes", "y", "on"].includes(normalized)) {
140
+ return true;
141
+ }
142
+ if (["false", "0", "no", "n", "off"].includes(normalized)) {
143
+ return false;
144
+ }
145
+ }
146
+ return Boolean(value);
147
+ }
148
+ if (descriptor.type === "number") {
149
+ if (typeof value === "number") {
150
+ return value;
151
+ }
152
+ const parsed = Number(String(value).trim());
153
+ return Number.isNaN(parsed) ? undefined : parsed;
154
+ }
155
+ return String(value).trim();
156
+ }
157
+ function getNormalizedKey(value) {
158
+ if (typeof value !== "string") {
159
+ return null;
160
+ }
161
+ const trimmed = value.trim();
162
+ return trimmed.length ? trimmed : null;
163
+ }
164
+ function getNormalizedType(value) {
165
+ if (typeof value !== "string") {
166
+ return null;
167
+ }
168
+ const type = value.trim().toLowerCase();
169
+ return VALID_FIELD_TYPES.has(type) ? type : null;
170
+ }
171
+ function getNormalizedLabel(value) {
172
+ if (typeof value !== "string") {
173
+ return undefined;
174
+ }
175
+ const trimmed = value.trim();
176
+ return trimmed.length ? trimmed : undefined;
177
+ }
178
+ function isDeepEqual(a, b) {
179
+ if (a === b) {
180
+ return true;
181
+ }
182
+ if (typeof a === "object" &&
183
+ typeof b === "object" &&
184
+ a !== null &&
185
+ b !== null) {
186
+ const aKeys = Object.keys(a);
187
+ const bKeys = Object.keys(b);
188
+ if (aKeys.length !== bKeys.length) {
189
+ return false;
190
+ }
191
+ return aKeys.every((key) => isDeepEqual(a[key], b[key]));
192
+ }
193
+ return false;
194
+ }
195
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvc2hhcmVkL3Byb2R1Y3QtbWV0YWRhdGEvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFrQkEsb0VBbUNDO0FBRUQsNENBT0M7QUFFRCxzREFnQkM7QUFFRCxvREEyQkM7QUFFRCxnREFvQkM7QUFFRCxnRUErQkM7QUFwS0QsbUNBS2dCO0FBS2hCLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxHQUFHLENBQW9CLDRCQUFvQixDQUFDLENBQUE7QUFFMUU7Ozs7O0dBS0c7QUFDSCxTQUFnQiw0QkFBNEIsQ0FDMUMsS0FBYztJQUVkLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDMUIsT0FBTyxFQUFFLENBQUE7SUFDWCxDQUFDO0lBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQTtJQUNsQyxNQUFNLFVBQVUsR0FBeUIsRUFBRSxDQUFBO0lBRTNDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN0QyxTQUFRO1FBQ1YsQ0FBQztRQUVELE1BQU0sR0FBRyxHQUFHLGdCQUFnQixDQUFFLElBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUMvQyxJQUFJLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM5QixTQUFRO1FBQ1YsQ0FBQztRQUVELE1BQU0sSUFBSSxHQUFHLGlCQUFpQixDQUFFLElBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNsRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDVixTQUFRO1FBQ1YsQ0FBQztRQUVELE1BQU0sS0FBSyxHQUFHLGtCQUFrQixDQUFFLElBQVksQ0FBQyxLQUFLLENB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
@@ -0,0 +1,137 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildProductFilterPlan = buildProductFilterPlan;
4
+ exports.buildBestSellingPlan = buildBestSellingPlan;
5
+ function buildProductFilterPlan({ query, options, }) {
6
+ const baseFilters = {};
7
+ if (query.id?.length) {
8
+ baseFilters.id = query.id;
9
+ }
10
+ if (query.handle?.length) {
11
+ baseFilters.handle = query.handle;
12
+ }
13
+ if (query.collection_id?.length) {
14
+ baseFilters.collection_id = query.collection_id;
15
+ }
16
+ if (query.category_id?.length) {
17
+ baseFilters.categories = {
18
+ id: query.category_id,
19
+ };
20
+ }
21
+ if (query.tags?.length) {
22
+ baseFilters.tags = {
23
+ value: query.tags,
24
+ };
25
+ }
26
+ if (query.sales_channel_id?.length) {
27
+ baseFilters.sales_channels = {
28
+ id: query.sales_channel_id,
29
+ };
30
+ }
31
+ const metadataAllowList = new Set(options.metadata.descriptors.map((descriptor) => descriptor.key));
32
+ const metadataFilters = metadataAllowList.size === 0
33
+ ? {}
34
+ : Object.entries(query.metadata ?? {}).reduce((acc, [key, value]) => {
35
+ if (metadataAllowList.has(key)) {
36
+ acc[key] = value;
37
+ }
38
+ return acc;
39
+ }, {});
40
+ const priceRange = typeof query.price_min !== "undefined" ||
41
+ typeof query.price_max !== "undefined"
42
+ ? {
43
+ min: query.price_min,
44
+ max: query.price_max,
45
+ }
46
+ : options.default_price_range.min !== null ||
47
+ options.default_price_range.max !== null
48
+ ? {
49
+ min: options.default_price_range.min ?? undefined,
50
+ max: options.default_price_range.max ?? undefined,
51
+ currency_code: options.default_price_range.currency_code,
52
+ }
53
+ : undefined;
54
+ const promotionWindow = {
55
+ startKey: options.promotion_window.start_metadata_key,
56
+ endKey: options.promotion_window.end_metadata_key,
57
+ range: query.promotion_start || query.promotion_end
58
+ ? {
59
+ start: query.promotion_start,
60
+ end: query.promotion_end,
61
+ }
62
+ : undefined,
63
+ activeOn: query.promotion_active_on,
64
+ includeOpen: typeof query.include_open_promotions === "boolean"
65
+ ? query.include_open_promotions
66
+ : options.promotion_window.treat_open_ended_as_active,
67
+ };
68
+ const availability = {
69
+ statuses: query.availability_status ?? [],
70
+ include_preorder: typeof query.include_preorder === "boolean"
71
+ ? query.include_preorder
72
+ : options.availability.include_preorder,
73
+ include_backorder: typeof query.include_backorder === "boolean"
74
+ ? query.include_backorder
75
+ : options.availability.include_backorder,
76
+ include_gift_cards: typeof query.include_gift_cards === "boolean"
77
+ ? query.include_gift_cards
78
+ : options.availability.include_gift_cards,
79
+ publishable_only: typeof query.publishable_only === "boolean"
80
+ ? query.publishable_only
81
+ : options.availability.publishable_only,
82
+ };
83
+ const rating = options.rating.enabled
84
+ ? {
85
+ enabled: true,
86
+ min: typeof query.rating_min !== "undefined"
87
+ ? query.rating_min
88
+ : options.rating.min,
89
+ max: typeof query.rating_max !== "undefined"
90
+ ? query.rating_max
91
+ : options.rating.max,
92
+ require_reviews: typeof query.rating_required === "boolean"
93
+ ? query.rating_required
94
+ : options.rating.require_reviews,
95
+ }
96
+ : {
97
+ enabled: false,
98
+ require_reviews: false,
99
+ };
100
+ return {
101
+ pagination: {
102
+ limit: query.limit,
103
+ offset: query.offset,
104
+ },
105
+ projection: {
106
+ fields: query.fields,
107
+ expand: query.expand,
108
+ order: query.order,
109
+ q: query.q,
110
+ },
111
+ baseFilters,
112
+ metadataFilters,
113
+ priceRange,
114
+ promotionWindow,
115
+ availability,
116
+ rating,
117
+ };
118
+ }
119
+ function buildBestSellingPlan(query) {
120
+ return {
121
+ pagination: {
122
+ limit: query.limit,
123
+ offset: query.offset,
124
+ },
125
+ timeframe: query.timeframe_from || query.timeframe_to
126
+ ? {
127
+ from: query.timeframe_from,
128
+ to: query.timeframe_to,
129
+ }
130
+ : undefined,
131
+ sales_channel_id: query.sales_channel_id,
132
+ region_id: query.region_id,
133
+ product_id: query.product_id,
134
+ variant_id: query.variant_id,
135
+ };
136
+ }
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1maWx0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3V0aWxzL3F1ZXJ5LWJ1aWxkZXJzL3Byb2R1Y3QtZmlsdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWdFQSx3REFvSkM7QUFFRCxvREFvQkM7QUExS0QsU0FBZ0Isc0JBQXNCLENBQUMsRUFDckMsS0FBSyxFQUNMLE9BQU8sR0FJUjtJQUNDLE1BQU0sV0FBVyxHQUE0QixFQUFFLENBQUE7SUFFL0MsSUFBSSxLQUFLLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLFdBQVcsQ0FBQyxFQUFFLEdBQUcsS0FBSyxDQUFDLEVBQUUsQ0FBQTtJQUMzQixDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3pCLFdBQVcsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQTtJQUNuQyxDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ2hDLFdBQVcsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQTtJQUNqRCxDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQzlCLFdBQVcsQ0FBQyxVQUFVLEdBQUc7WUFDdkIsRUFBRSxFQUFFLEtBQUssQ0FBQyxXQUFXO1NBQ3RCLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLFdBQVcsQ0FBQyxJQUFJLEdBQUc7WUFDakIsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJO1NBQ2xCLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDbkMsV0FBVyxDQUFDLGNBQWMsR0FBRztZQUMzQixFQUFFLEVB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
package/README.md ADDED
@@ -0,0 +1,64 @@
1
+ <p align="center">
2
+ <a href="https://www.medusajs.com">
3
+ <picture>
4
+ <source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/59018053/229103275-b5e482bb-4601-46e6-8142-244f531cebdb.svg">
5
+ <source media="(prefers-color-scheme: light)" srcset="https://user-images.githubusercontent.com/59018053/229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg">
6
+ <img alt="Medusa logo" src="https://user-images.githubusercontent.com/59018053/229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg">
7
+ </picture>
8
+ </a>
9
+ </p>
10
+ <h1 align="center">
11
+ Medusa Plugin Starter
12
+ </h1>
13
+
14
+ <h4 align="center">
15
+ <a href="https://docs.medusajs.com">Documentation</a> |
16
+ <a href="https://www.medusajs.com">Website</a>
17
+ </h4>
18
+
19
+ <p align="center">
20
+ Building blocks for digital commerce
21
+ </p>
22
+ <p align="center">
23
+ <a href="https://github.com/medusajs/medusa/blob/master/CONTRIBUTING.md">
24
+ <img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat" alt="PRs welcome!" />
25
+ </a>
26
+ <a href="https://www.producthunt.com/posts/medusa"><img src="https://img.shields.io/badge/Product%20Hunt-%231%20Product%20of%20the%20Day-%23DA552E" alt="Product Hunt"></a>
27
+ <a href="https://discord.gg/xpCwq3Kfn8">
28
+ <img src="https://img.shields.io/badge/chat-on%20discord-7289DA.svg" alt="Discord Chat" />
29
+ </a>
30
+ <a href="https://twitter.com/intent/follow?screen_name=medusajs">
31
+ <img src="https://img.shields.io/twitter/follow/medusajs.svg?label=Follow%20@medusajs" alt="Follow @medusajs" />
32
+ </a>
33
+ </p>
34
+
35
+ ## Compatibility
36
+
37
+ This starter is compatible with versions >= 2.4.0 of `@medusajs/medusa`.
38
+
39
+ ## Getting Started
40
+
41
+ Visit the [Quickstart Guide](https://docs.medusajs.com/learn/installation) to set up a server.
42
+
43
+ Visit the [Plugins documentation](https://docs.medusajs.com/learn/fundamentals/plugins) to learn more about plugins and how to create them.
44
+
45
+ Visit the [Docs](https://docs.medusajs.com/learn/installation#get-started) to learn more about our system requirements.
46
+
47
+ ## What is Medusa
48
+
49
+ Medusa is a set of commerce modules and tools that allow you to build rich, reliable, and performant commerce applications without reinventing core commerce logic. The modules can be customized and used to build advanced ecommerce stores, marketplaces, or any product that needs foundational commerce primitives. All modules are open-source and freely available on npm.
50
+
51
+ Learn more about [Medusa’s architecture](https://docs.medusajs.com/learn/introduction/architecture) and [commerce modules](https://docs.medusajs.com/learn/fundamentals/modules/commerce-modules) in the Docs.
52
+
53
+ ## Community & Contributions
54
+
55
+ The community and core team are available in [GitHub Discussions](https://github.com/medusajs/medusa/discussions), where you can ask for support, discuss roadmap, and share ideas.
56
+
57
+ Join our [Discord server](https://discord.com/invite/medusajs) to meet other community members.
58
+
59
+ ## Other channels
60
+
61
+ - [GitHub Issues](https://github.com/medusajs/medusa/issues)
62
+ - [Twitter](https://twitter.com/medusajs)
63
+ - [LinkedIn](https://www.linkedin.com/company/medusajs)
64
+ - [Medusa Blog](https://medusajs.com/blog/)
package/package.json ADDED
@@ -0,0 +1,70 @@
1
+ {
2
+ "name": "medusa-product-helper",
3
+ "version": "0.0.1",
4
+ "description": "A starter for Medusa plugins.",
5
+ "author": "Medusa (https://medusajs.com)",
6
+ "license": "MIT",
7
+ "files": [
8
+ ".medusa/server"
9
+ ],
10
+ "exports": {
11
+ "./package.json": "./package.json",
12
+ "./workflows": "./.medusa/server/src/workflows/index.js",
13
+ "./.medusa/server/src/modules/*": "./.medusa/server/src/modules/*/index.js",
14
+ "./modules/*": "./.medusa/server/src/modules/*/index.js",
15
+ "./providers/*": "./.medusa/server/src/providers/*/index.js",
16
+ "./*": "./.medusa/server/src/*.js",
17
+ "./admin": {
18
+ "import": "./.medusa/server/src/admin/index.mjs",
19
+ "require": "./.medusa/server/src/admin/index.js",
20
+ "default": "./.medusa/server/src/admin/index.js"
21
+ }
22
+ },
23
+ "keywords": [
24
+ "medusa",
25
+ "plugin",
26
+ "medusa-plugin-other",
27
+ "medusa-plugin",
28
+ "medusa-v2"
29
+ ],
30
+ "scripts": {
31
+ "build": "medusa plugin:build",
32
+ "dev": "medusa plugin:develop",
33
+ "prepublishOnly": "medusa plugin:build"
34
+ },
35
+ "devDependencies": {
36
+ "@medusajs/admin-sdk": "2.11.2",
37
+ "@medusajs/cli": "2.11.2",
38
+ "@medusajs/framework": "2.11.2",
39
+ "@medusajs/medusa": "2.11.2",
40
+ "@medusajs/test-utils": "2.11.2",
41
+ "@medusajs/ui": "4.0.25",
42
+ "@medusajs/icons": "2.11.2",
43
+ "@swc/core": "1.5.7",
44
+ "@types/node": "^20.0.0",
45
+ "@types/react": "^18.3.2",
46
+ "@types/react-dom": "^18.2.25",
47
+ "prop-types": "^15.8.1",
48
+ "react": "^18.2.0",
49
+ "react-dom": "^18.2.0",
50
+ "ts-node": "^10.9.2",
51
+ "typescript": "^5.6.2",
52
+ "vite": "^5.2.11",
53
+ "yalc": "^1.0.0-pre.53"
54
+ },
55
+ "dependencies": {
56
+ "zod": "^3.23.8"
57
+ },
58
+ "peerDependencies": {
59
+ "@medusajs/admin-sdk": "2.11.2",
60
+ "@medusajs/cli": "2.11.2",
61
+ "@medusajs/framework": "2.11.2",
62
+ "@medusajs/test-utils": "2.11.2",
63
+ "@medusajs/medusa": "2.11.2",
64
+ "@medusajs/ui": "4.0.25",
65
+ "@medusajs/icons": "2.11.2"
66
+ },
67
+ "engines": {
68
+ "node": ">=20"
69
+ }
70
+ }