@devx-commerce/plugin-discounts-svaraa 0.0.2-beta.12 → 0.0.2-beta.13

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.
@@ -3,12 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const http_1 = require("@medusajs/framework/http");
4
4
  const middlewares_1 = require("./admin/discounts/middlewares");
5
5
  const middlewares_2 = require("./store/discounts/middlewares");
6
+ const middlewares_3 = require("./pos/discounts/middlewares");
6
7
  exports.default = (0, http_1.defineMiddlewares)({
7
8
  routes: [
8
9
  // admin routes
9
10
  ...middlewares_1.adminDiscountRoutesMiddlewares,
10
11
  // store routes
11
12
  ...middlewares_2.storeDiscountRoutesMiddlewares,
13
+ // pos routes
14
+ ...middlewares_3.posDiscountRoutesMiddlewares,
12
15
  ],
13
16
  });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBQTZEO0FBQzdELCtEQUErRTtBQUMvRSwrREFBK0U7QUFFL0Usa0JBQWUsSUFBQSx3QkFBaUIsRUFBQztJQUMvQixNQUFNLEVBQUU7UUFDTixlQUFlO1FBQ2YsR0FBRyw0Q0FBOEI7UUFFakMsZUFBZTtRQUNmLEdBQUcsNENBQThCO0tBQ2xDO0NBQ0YsQ0FBQyxDQUFDIn0=
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBQTZEO0FBQzdELCtEQUErRTtBQUMvRSwrREFBK0U7QUFDL0UsNkRBQTJFO0FBRTNFLGtCQUFlLElBQUEsd0JBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ04sZUFBZTtRQUNmLEdBQUcsNENBQThCO1FBRWpDLGVBQWU7UUFDZixHQUFHLDRDQUE4QjtRQUVqQyxhQUFhO1FBQ2IsR0FBRywwQ0FBNEI7S0FDaEM7Q0FDRixDQUFDLENBQUMifQ==
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = POST;
4
+ const api_response_1 = require("../../../../lib/api-response");
5
+ const apply_coupon_1 = require("../../../../workflows/discount/apply-coupon");
6
+ const helpers_1 = require("@medusajs/medusa/api/store/carts/helpers");
7
+ const constant_1 = require("../../../../lib/constant");
8
+ const utils_1 = require("@medusajs/framework/utils");
9
+ const utils_2 = require("../../../../lib/utils");
10
+ async function POST(req, res) {
11
+ try {
12
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
13
+ const userId = req.auth_context?.actor_id || req.auth_context;
14
+ const { data: carts } = await query.graph({
15
+ entity: "cart",
16
+ fields: [
17
+ "*",
18
+ "items.*",
19
+ "items.variant.*",
20
+ "items.variant.prices.*",
21
+ "items.variant.extended_variant.mrp",
22
+ "promotions.*",
23
+ ],
24
+ filters: { id: req.validatedBody.cart_id },
25
+ });
26
+ if (!carts.length) {
27
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`Cart ${req.validatedBody.cart_id} not found`, 404));
28
+ }
29
+ const { data: discount_codes } = await query.graph({
30
+ entity: "discount_code",
31
+ fields: [
32
+ "*",
33
+ ],
34
+ filters: { code: req.validatedBody.code },
35
+ });
36
+ if (!discount_codes.length) {
37
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
38
+ discountResult: {
39
+ isApplied: false,
40
+ discount: 0,
41
+ message: "This coupon code is invalid or does not exist."
42
+ }
43
+ }));
44
+ }
45
+ if ((req.validatedBody.code.toLowerCase().includes("birth") || req.validatedBody.code.toLowerCase().includes("anni"))
46
+ && !userId) {
47
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
48
+ discountResult: {
49
+ isApplied: false,
50
+ discount: 0,
51
+ message: "This coupon is valid only for registered users. Please log in to apply it."
52
+ }
53
+ }));
54
+ }
55
+ if (userId && (req.validatedBody.code.toLowerCase().includes("birth") || req.validatedBody.code.toLowerCase().includes("anni"))) {
56
+ const { data: customer } = await query.graph({
57
+ entity: "customer",
58
+ fields: ["metadata", "extended_customer.id"],
59
+ filters: { id: userId },
60
+ });
61
+ const externalId = customer?.[0]?.extended_customer?.id;
62
+ if (externalId) {
63
+ const { data: ext } = await query.graph({
64
+ entity: "extended_customer",
65
+ fields: ["birth_date", "anniversary_date"],
66
+ filters: { id: externalId },
67
+ });
68
+ const todayIST = (0, utils_2.getISTMonthDay)(new Date());
69
+ const bday = ext?.[0]?.birth_date;
70
+ const anniv = ext?.[0]?.anniversary_date;
71
+ const isBirthday = bday && (0, utils_2.getISTMonthDay)(bday) === todayIST;
72
+ const isAnniversary = anniv && (0, utils_2.getISTMonthDay)(anniv) === todayIST;
73
+ if ((!isBirthday && req.validatedBody.code.toLowerCase().includes("birth")) || (!isAnniversary && req.validatedBody.code.toLowerCase().includes("anni"))) {
74
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
75
+ discountResult: {
76
+ isApplied: false,
77
+ discount: 0,
78
+ message: "This coupon can only be applied on your birthday or anniversary."
79
+ }
80
+ }));
81
+ }
82
+ else {
83
+ const today = new Date();
84
+ const currentYear = today.getFullYear();
85
+ const startOfYear = new Date(currentYear, 0, 1); // Jan 1
86
+ const endOfYear = new Date(currentYear, 11, 31, 23, 59, 59); // Dec 31
87
+ const { data: orders } = await query.graph({
88
+ entity: "order",
89
+ fields: ["*", "metadata"],
90
+ filters: {
91
+ customer_id: userId,
92
+ created_at: {
93
+ $gte: startOfYear.toISOString(),
94
+ $lte: endOfYear.toISOString(),
95
+ },
96
+ },
97
+ });
98
+ const matchingOrders = orders?.filter((order) => {
99
+ if (req.validatedBody.code?.toLowerCase()?.includes("birth")) {
100
+ return order?.metadata?.code?.toLowerCase()?.includes("birth") ||
101
+ order?.metadata?.discount?.code?.toLowerCase()?.includes("birth");
102
+ }
103
+ if (req.validatedBody.code?.toLowerCase()?.includes("anni")) {
104
+ return order?.metadata?.code?.toLowerCase()?.includes("anni") ||
105
+ order?.metadata?.discount?.code?.toLowerCase()?.includes("anni");
106
+ }
107
+ return order?.metadata?.code === req.validatedBody.code ||
108
+ order?.metadata?.discount?.code === req.validatedBody.code;
109
+ });
110
+ if (matchingOrders.length !== 0) {
111
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
112
+ discountResult: {
113
+ isApplied: false,
114
+ discount: 0,
115
+ message: "You have already used this coupon"
116
+ }
117
+ }));
118
+ }
119
+ }
120
+ }
121
+ }
122
+ const { result, errors } = await (0, apply_coupon_1.applyCouponWorkflow)(req.scope).run({
123
+ input: {
124
+ ...req.validatedBody,
125
+ cart: carts[0],
126
+ customerId: req.auth_context?.actor_id || undefined,
127
+ },
128
+ throwOnError: false
129
+ });
130
+ if (errors && errors.length > 0) {
131
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
132
+ discountResult: {
133
+ isApplied: false,
134
+ discount: 0,
135
+ message: errors?.[0]?.error?.message || "Failed to apply coupon"
136
+ }
137
+ }));
138
+ }
139
+ if (!result) {
140
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Failed to apply coupon", 400));
141
+ }
142
+ const cart = await (0, helpers_1.refetchCart)(req.body.cart_id, req.scope, constant_1.defaultStoreCartFields);
143
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
144
+ cart,
145
+ discountResult: result,
146
+ }));
147
+ }
148
+ catch (error) {
149
+ console.log("error: ", error);
150
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
151
+ }
152
+ }
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvYXBwbHkvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQkEsb0JBNEtDO0FBeExELCtEQUlzQztBQUN0Qyw4RUFBa0Y7QUFFbEYsc0VBQXVFO0FBQ3ZFLHVEQUFrRTtBQUNsRSxxREFBc0U7QUFDdEUsaURBQXVEO0FBRWhELEtBQUssVUFBVSxJQUFJLENBQ3hCLEdBQTBELEVBQzFELEdBQW1CO0lBRW5CLElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sTUFBTSxHQUFHLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxJQUFJLEdBQUcsQ0FBQyxZQUFZLENBQUM7UUFDOUQsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDeEMsTUFBTSxFQUFFLE1BQU07WUFDZCxNQUFNLEVBQUU7Z0JBQ04sR0FBRztnQkFDSCxTQUFTO2dCQUNULGlCQUFpQjtnQkFDakIsd0JBQXdCO2dCQUN4QixvQ0FBb0M7Z0JBQ3BDLGNBQWM7YUFDZjtZQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRTtTQUMzQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLE9BQU8sSUFBQSw4QkFBZSxFQUNwQixHQUFHLEVBQ0gsSUFBQSxrQ0FBbUIsRUFBQyxRQUFRLEdBQUcsQ0FBQyxhQUFhLENBQUMsT0FBTyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQ3hFLENBQUM7UUFDSixDQUFDO1FBQ0QsTUFBTSxFQUFFLElBQUksRUFBRSxjQUFjLEVB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
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = POST;
4
+ const api_response_1 = require("../../../../lib/api-response");
5
+ const apply_freebie_1 = require("../../../../workflows/discount/apply-freebie");
6
+ async function POST(req, res) {
7
+ try {
8
+ const { result } = await (0, apply_freebie_1.applyFreebieWorkflow)(req.scope).run({
9
+ input: req.validatedBody,
10
+ });
11
+ if (!result) {
12
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Failed to create discount price rule", 400));
13
+ }
14
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(result));
15
+ }
16
+ catch (error) {
17
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
18
+ }
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvYXBwbHktZnJlZWJpZS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLG9CQW9CQztBQTVCRCwrREFJc0M7QUFDdEMsZ0ZBQW9GO0FBRzdFLEtBQUssVUFBVSxJQUFJLENBQ3hCLEdBQXlELEVBQ3pELEdBQW1CO0lBRW5CLElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUEsb0NBQW9CLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMzRCxLQUFLLEVBQUUsR0FBRyxDQUFDLGFBQWE7U0FDekIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osT0FBTyxJQUFBLDhCQUFlLEVBQ3BCLEdBQUcsRUFDSCxJQUFBLGtDQUFtQixFQUFDLHNDQUFzQyxFQUFFLEdBQUcsQ0FBQyxDQUNqRSxDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sSUFBQSw4QkFBZSxFQUFDLEdBQUcsRUFBRSxJQUFBLG9DQUFxQixFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLElBQUEsOEJBQWUsRUFBQyxHQUFHLEVBQUUsSUFBQSxrQ0FBbUIsRUFBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztBQUNILENBQUMifQ==
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = POST;
4
+ const api_response_1 = require("../../../../lib/api-response");
5
+ const apply_coupon_1 = require("../../../../workflows/discount/apply-coupon");
6
+ const calculate_coupon_discount_1 = require("../../../../workflows/discount/calculate-coupon-discount");
7
+ const utils_1 = require("@medusajs/framework/utils");
8
+ const redis_utils_1 = require("../../../../lib/redis-utils");
9
+ const utils_2 = require("../../../../lib/utils");
10
+ async function getDiscountCode(query, priceRule, cache) {
11
+ const cacheKey = `discount_code:${priceRule.id}`;
12
+ const cached = await cache.get(cacheKey);
13
+ if (cached)
14
+ return cached;
15
+ if (!priceRule.prefix) {
16
+ await cache.set(cacheKey, priceRule.discount_code, redis_utils_1.CACHE_VALIDATION_TIMES.DISCOUNT_CODE);
17
+ return priceRule.discount_code;
18
+ }
19
+ const { data: codes } = await query.graph({
20
+ entity: "discount_code",
21
+ fields: ["*"],
22
+ filters: {
23
+ $and: [
24
+ { price_rule_id: { $eq: priceRule.id } },
25
+ (priceRule.usage_limit_per_customer_type === "SPECIFIC" || priceRule.usage_limit_per_customer_type === "ONLY_ONCE")
26
+ ? { usage_count: 0 }
27
+ : {},
28
+ ],
29
+ },
30
+ pagination: { take: 1 },
31
+ });
32
+ const code = codes.length > 0 ? codes[0].code : null;
33
+ await cache.set(cacheKey, code, redis_utils_1.CACHE_VALIDATION_TIMES.DISCOUNT_CODE);
34
+ return code;
35
+ }
36
+ function getBestDiscount(discounts) {
37
+ return discounts
38
+ .filter((d) => d.status === "fulfilled" && d.value)
39
+ .map((d) => d.value)
40
+ .reduce((best, cur) => (cur.discount > best.discount ? { discount: cur.discount, code: cur.code } : best), { discount: 0 });
41
+ }
42
+ function groupAdjustments(adjustments) {
43
+ return adjustments.reduce((map, adj) => {
44
+ if (adj.code) {
45
+ map[adj.code] = (map[adj.code] || 0) + Math.abs(adj.amount || 0);
46
+ }
47
+ return map;
48
+ }, {});
49
+ }
50
+ // --- Main Handler ---
51
+ async function POST(req, res) {
52
+ try {
53
+ const query = req.scope.resolve("query");
54
+ const cache = req.scope.resolve(utils_1.Modules.CACHE);
55
+ const userId = req.auth_context?.actor_id || undefined;
56
+ let filters = { ...req.filterableFields };
57
+ // --- Customer birthday/anniversary filters ---
58
+ if (userId) {
59
+ const { data: customer } = await query.graph({
60
+ entity: "customer",
61
+ fields: ["metadata"],
62
+ filters: { id: userId },
63
+ });
64
+ const externalId = customer?.[0]?.metadata?.external_id;
65
+ if (externalId) {
66
+ const { data: ext } = await query.graph({
67
+ entity: "extended_customer",
68
+ fields: ["birth_date", "anniversary_date"],
69
+ filters: { external_id: externalId },
70
+ });
71
+ const todayIST = (0, utils_2.getISTMonthDay)(new Date());
72
+ const bday = ext?.[0]?.birth_date;
73
+ const anniv = ext?.[0]?.anniversary_date;
74
+ const isBirthday = bday && (0, utils_2.getISTMonthDay)(bday) === todayIST;
75
+ const isAnniversary = anniv && (0, utils_2.getISTMonthDay)(anniv) === todayIST;
76
+ if (isBirthday || isAnniversary) {
77
+ filters.$or = [
78
+ ...(isBirthday ? [{ is_birthday: true }] : []),
79
+ ...(isAnniversary ? [{ is_anniversary: true }] : []),
80
+ { is_birthday: false, is_anniversary: false },
81
+ ];
82
+ }
83
+ else {
84
+ filters.is_birthday = false;
85
+ filters.is_anniversary = false;
86
+ }
87
+ }
88
+ }
89
+ else {
90
+ filters = { ...filters, usage_limit: "UNLIMITED", is_birthday: false, is_anniversary: false };
91
+ }
92
+ // --- 1. Fetch auto-apply rules (with caching) ---
93
+ const rulesCacheKey = "discount_price_rules:auto_apply";
94
+ let priceRules = (await cache.get(rulesCacheKey)) || (await query.graph({
95
+ entity: "discount_price_rule",
96
+ fields: ["*"],
97
+ filters: { ...filters, auto_apply: true },
98
+ })).data;
99
+ if (!(await cache.get(rulesCacheKey))) {
100
+ await cache.set(rulesCacheKey, priceRules, redis_utils_1.CACHE_VALIDATION_TIMES.DISCOUNT_CODE);
101
+ }
102
+ // --- 2. Fetch cart once ---
103
+ const { data: carts } = await query.graph({
104
+ entity: "cart",
105
+ fields: [
106
+ "*",
107
+ "items.*",
108
+ "items.variant.*",
109
+ "items.variant.prices.*",
110
+ "items.variant.extended_product_variants.compare_at_price",
111
+ "promotions.*",
112
+ ],
113
+ filters: { id: req.validatedBody.cart_id },
114
+ });
115
+ if (!carts.length) {
116
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`Cart ${req.validatedBody.cart_id} not found`, 404));
117
+ }
118
+ const cart = carts[0];
119
+ // --- 3. Calculate discounts for each rule ---
120
+ const discounts = await Promise.allSettled(priceRules.map(async (rule) => {
121
+ try {
122
+ const code = await getDiscountCode(query, rule, cache);
123
+ if (!code)
124
+ return { discount: 0 };
125
+ const { result: { discount }, } = await (0, calculate_coupon_discount_1.calculateCouponDiscountWorkflow)(req.scope).run({
126
+ input: { cart_id: req.validatedBody.cart_id, cart, code, customerId: userId || undefined },
127
+ });
128
+ return { discount, code };
129
+ }
130
+ catch {
131
+ return { discount: 0 };
132
+ }
133
+ }));
134
+ const { discount: currentDiscount, code: currentCode } = getBestDiscount(discounts);
135
+ // --- 4. Fetch adjustments once ---
136
+ const { data: adjustments } = await query.graph({
137
+ entity: "line_item_adjustment",
138
+ fields: ["*"],
139
+ filters: {
140
+ item_id: { $in: cart.items.map((i) => i.id) },
141
+ code: { $ne: null },
142
+ },
143
+ });
144
+ const codeDiscountMap = groupAdjustments(adjustments);
145
+ const [appliedCouponCode, appliedCouponDiscount] = Object.entries(codeDiscountMap).reduce((best, [code, total]) => (total > best[1] ? [code, total] : best), ["", 0]);
146
+ // --- 5. Compare and apply ---
147
+ if (appliedCouponCode && appliedCouponDiscount >= currentDiscount) {
148
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
149
+ message: "Existing coupon provides better or equal discount. No auto coupon applied.",
150
+ code: appliedCouponCode,
151
+ discount: appliedCouponDiscount,
152
+ }));
153
+ }
154
+ let appliedCode = currentCode;
155
+ let appliedDiscount = currentDiscount;
156
+ if (currentCode) {
157
+ const { result } = await (0, apply_coupon_1.applyCouponWorkflow)(req.scope).run({
158
+ input: { code: currentCode, cart_id: req.validatedBody.cart_id, cart, customerId: userId || undefined },
159
+ });
160
+ if (!result) {
161
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Failed to apply coupon", 400));
162
+ }
163
+ // 🔄 Refresh adjustments after applying
164
+ const { data: adjustmentsAfter } = await query.graph({
165
+ entity: "line_item_adjustment",
166
+ fields: ["*"],
167
+ filters: {
168
+ item_id: { $in: cart.items.map((i) => i.id) },
169
+ code: { $ne: null },
170
+ },
171
+ });
172
+ const codeDiscountMapAfter = groupAdjustments(adjustmentsAfter);
173
+ const [newCode, newDiscount] = Object.entries(codeDiscountMapAfter).reduce((best, [code, total]) => (total > best[1] ? [code, total] : best), ["", 0]);
174
+ appliedCode = newCode;
175
+ appliedDiscount = newDiscount;
176
+ }
177
+ // --- 6. Final response ---
178
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
179
+ message: appliedCode ? "Coupon applied" : "No coupon applied",
180
+ code: appliedCode,
181
+ discount: appliedDiscount,
182
+ }));
183
+ }
184
+ catch (error) {
185
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
186
+ }
187
+ }
188
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvYXV0by1hcHBseS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlFQSxvQkFrTEM7QUEvT0QsK0RBSXFDO0FBQ3JDLDhFQUFpRjtBQUNqRix3R0FBMEc7QUFFMUcscURBQW1EO0FBQ25ELDZEQUFvRTtBQUNwRSxpREFBc0Q7QUFFdEQsS0FBSyxVQUFVLGVBQWUsQ0FBQyxLQUFVLEVBQUUsU0FBYyxFQUFFLEtBQVU7SUFDbkUsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQTtJQUNoRCxNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDeEMsSUFBSSxNQUFNO1FBQUUsT0FBTyxNQUFNLENBQUE7SUFFekIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUN0QixNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxhQUFhLEVBQUUsb0NBQXNCLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDeEYsT0FBTyxTQUFTLENBQUMsYUFBYSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN4QyxNQUFNLEVBQUUsZUFBZTtRQUN2QixNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUM7UUFDYixPQUFPLEVBQUU7WUFDUCxJQUFJLEVBQUU7Z0JBQ0osRUFBRSxhQUFhLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxFQUFFO2dCQUN4QyxDQUFDLFNBQVMsQ0FBQyw2QkFBNkIsS0FBSyxVQUFVLElBQUksU0FBUyxDQUFDLDZCQUE2QixLQUFLLFdBQVcsQ0FBQztvQkFD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
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = GET;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const api_response_1 = require("../../../../../lib/api-response");
6
+ const get_cart_eligible_coupons_1 = require("../../../../../workflows/discount/get-cart-eligible-coupons");
7
+ async function GET(req, res) {
8
+ try {
9
+ const { cart_id } = req.params;
10
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
11
+ const { data: carts } = await query.graph({
12
+ entity: "cart",
13
+ fields: [
14
+ "*",
15
+ "items.*",
16
+ "items.variant.*",
17
+ "items.variant.prices.*",
18
+ "items.variant.extended_variant.mrp",
19
+ ],
20
+ filters: { id: cart_id },
21
+ });
22
+ if (!carts.length) {
23
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`Cart ${cart_id} not found`, 404));
24
+ }
25
+ const { result } = await (0, get_cart_eligible_coupons_1.getCartEligibleCouponsWorkflow)(req.scope).run({
26
+ input: {
27
+ cart_id,
28
+ customerId: req?.auth_context?.actor_id,
29
+ cart: carts[0],
30
+ },
31
+ });
32
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(result));
33
+ }
34
+ catch (error) {
35
+ // Error logging removed - use proper error handling instead
36
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
37
+ }
38
+ }
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvY2FydC1lbGlnaWJsZS1jb3Vwb25zL1tjYXJ0X2lkXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWFBLGtCQXlDQztBQWxERCxxREFBc0U7QUFFdEUsa0VBSXlDO0FBQ3pDLDJHQUE2RztBQUV0RyxLQUFLLFVBQVUsR0FBRyxDQUN2QixHQUErQixFQUMvQixHQUFtQjtJQUVuQixJQUFJLENBQUM7UUFDSCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUUvQixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVqRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztZQUN4QyxNQUFNLEVBQUUsTUFBTTtZQUNkLE1BQU0sRUFBRTtnQkFDTixHQUFHO2dCQUNILFNBQVM7Z0JBQ1QsaUJBQWlCO2dCQUNqQix3QkFBd0I7Z0JBQ3hCLG9DQUFvQzthQUNyQztZQUNELE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUU7U0FDekIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsa0NBQW1CLEVBQUMsUUFBUSxPQUFPLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FDdEQsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxJQUFBLDBEQUE4QixFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7WUFDckUsS0FBSyxFQUFFO2dCQUNMLE9BQU87Z0JBQ1AsVUFBVSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsUUFBUTtnQkFDdkMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDZjtTQUNGLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBQSw4QkFBZSxFQUFDLEdBQUcsRUFBRSxJQUFBLG9DQUFxQixFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZiw0REFBNEQ7UUFDNUQsT0FBTyxJQUFBLDhCQUFlLEVBQUMsR0FBRyxFQUFFLElBQUEsa0NBQW1CLEVBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7QUFDSCxDQUFDIn0=
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = GET;
4
+ const api_response_1 = require("../../../../../lib/api-response");
5
+ async function GET(req, res) {
6
+ try {
7
+ const id = req.params.id;
8
+ const query = req.scope.resolve("query");
9
+ console.log("Fetching discount price rule with ID:", id);
10
+ const { data: [discountPriceRule], } = await query.graph({
11
+ entity: "discount_price_rule",
12
+ ...req.queryConfig,
13
+ filters: { id },
14
+ });
15
+ console.log("Discount price rule fetched:", discountPriceRule);
16
+ if (!discountPriceRule) {
17
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Discount price rule not found", 404));
18
+ }
19
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(discountPriceRule));
20
+ }
21
+ catch (error) {
22
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
23
+ }
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvY291cG9ucy9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBTUEsa0JBMEJDO0FBNUJELGtFQUE4RztBQUV2RyxLQUFLLFVBQVUsR0FBRyxDQUNyQixHQUFrQixFQUNsQixHQUFtQjtJQUVuQixJQUFJLENBQUM7UUFDRCxNQUFNLEVBQUUsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN6QixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxPQUFPLENBQUMsR0FBRyxDQUFDLHVDQUF1QyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sRUFDRixJQUFJLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxHQUM1QixHQUFHLE1BQU0sS0FBSyxDQUFDLEtBQUssQ0FBQztZQUNsQixNQUFNLEVBQUUscUJBQXFCO1lBQzdCLEdBQUcsR0FBRyxDQUFDLFdBQVc7WUFDbEIsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFO1NBQ2xCLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUUvRCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUEsOEJBQWUsRUFBQyxHQUFHLEVBQUUsSUFBQSxrQ0FBbUIsRUFBQywrQkFBK0IsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzNGLENBQUM7UUFFRCxPQUFPLElBQUEsOEJBQWUsRUFBQyxHQUFHLEVBQUUsSUFBQSxvQ0FBcUIsRUFBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixPQUFPLElBQUEsOEJBQWUsRUFBQyxHQUFHLEVBQUUsSUFBQSxrQ0FBbUIsRUFBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztBQUNMLENBQUMifQ==
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.posDiscountRoutesMiddlewares = void 0;
4
+ const http_1 = require("@medusajs/framework/http");
5
+ const validators_1 = require("./validators");
6
+ const medusa_1 = require("@medusajs/medusa");
7
+ exports.posDiscountRoutesMiddlewares = [
8
+ {
9
+ matcher: "/pos/discounts/price-rules",
10
+ methods: ["GET"],
11
+ middlewares: [(0, medusa_1.authenticate)("customer", ["bearer", "session"]),
12
+ (0, http_1.validateAndTransformQuery)(validators_1.PosListDiscountPriceRulesParams, {
13
+ defaults: validators_1.posDefaultDiscountPriceRuleFields,
14
+ defaultLimit: 10,
15
+ isList: true,
16
+ }),
17
+ ],
18
+ },
19
+ {
20
+ matcher: "/pos/discounts/price-rules-list",
21
+ methods: ["GET"],
22
+ middlewares: [
23
+ (0, http_1.validateAndTransformQuery)(validators_1.PosListDiscountPriceRulesParams, {
24
+ defaults: validators_1.posDefaultDiscountPriceRuleFields,
25
+ defaultLimit: 10,
26
+ isList: true,
27
+ }),
28
+ ],
29
+ },
30
+ {
31
+ matcher: "/pos/discounts/apply",
32
+ method: "POST",
33
+ middlewares: [(0, medusa_1.authenticate)("customer", ["bearer", "session"]), (0, http_1.validateAndTransformBody)(validators_1.PosApplyDiscountInputValidator)],
34
+ },
35
+ {
36
+ matcher: "/pos/discounts/auto-apply",
37
+ method: "POST",
38
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.PosAutoApplyDiscountInputValidator)],
39
+ },
40
+ {
41
+ matcher: "/pos/discounts/apply-freebie",
42
+ method: "POST",
43
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.PosApplyFreebieInputValidator)],
44
+ },
45
+ {
46
+ matcher: "/pos/discounts/verify-store-discount",
47
+ method: "POST",
48
+ middlewares: [(0, medusa_1.authenticate)("user", ["bearer", "session"]), (0, http_1.validateAndTransformBody)(validators_1.PosVerifyStoreDiscountInputValidator)],
49
+ },
50
+ {
51
+ matcher: "/pos/discounts/remove-store-discount",
52
+ method: "POST",
53
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.PosRemoveStoreDiscountInputValidator)],
54
+ },
55
+ {
56
+ matcher: "/pos/discounts/remove",
57
+ method: "POST",
58
+ middlewares: [(0, medusa_1.authenticate)("customer", ["bearer", "session"]), (0, http_1.validateAndTransformBody)(validators_1.PosRemoveDiscountInputValidator)],
59
+ },
60
+ ///////////////////// OFFERS ON PRODUCT ////////////////////
61
+ {
62
+ matcher: "/pos/discounts/offers-on-product/:variant_id",
63
+ method: "GET",
64
+ },
65
+ {
66
+ matcher: "/pos/discounts/cart-eligible-coupons/:cart_id",
67
+ method: "GET",
68
+ },
69
+ {
70
+ matcher: "/pos/discounts/coupons/:id",
71
+ method: "GET",
72
+ middlewares: [(0, http_1.validateAndTransformQuery)(validators_1.PosGetDiscountPriceRulesParams, {
73
+ defaults: validators_1.posDefaultDiscountPriceRuleFields,
74
+ }),],
75
+ }
76
+ ];
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvbWlkZGxld2FyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBSWtDO0FBRWxDLDZDQVlzQjtBQUN0Qiw2Q0FBZ0Q7QUFFbkMsUUFBQSw0QkFBNEIsR0FBc0I7SUFDN0Q7UUFDRSxPQUFPLEVBQUUsNEJBQTRCO1FBQ3JDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNoQixXQUFXLEVBQUUsQ0FBQyxJQUFBLHFCQUFZLEVBQUMsVUFBVSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzNELElBQUEsZ0NBQXlCLEVBQUMsNENBQStCLEVBQUU7Z0JBQ3pELFFBQVEsRUFBRSw4Q0FBaUM7Z0JBQzNDLFlBQVksRUFBRSxFQUFFO2dCQUNoQixNQUFNLEVBQUUsSUFBSTthQUNiLENBQUM7U0FDSDtLQUNGO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsaUNBQWlDO1FBQzFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNoQixXQUFXLEVBQUU7WUFDWCxJQUFBLGdDQUF5QixFQUFDLDRDQUErQixFQUFFO2dCQUN6RCxRQUFRLEVBQUUsOENBQWlDO2dCQUMzQyxZQUFZLEVBQUUsRUFBRTtnQkFDaEIsTUFBTSxFQUFFLElBQUk7YUFDYixDQUFDO1NBQ0g7S0FDRjtJQUNEO1FBQ0UsT0FBTyxFQUFFLHNCQUFzQjtRQUMvQixNQUFNLEVBQUUsTUFBTTtRQUNkLFdBQVcsRUFBRSxDQUFDLElBQUEscUJBQVksRUFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBQyxJQUFBLCtCQUF3QixFQUFDLDJDQUE4QixDQUFDLENBQUM7S0FDeEg7SUFDRDtRQUNFLE9BQU8sRUFBRSwyQkFBMkI7UUFDcEMsTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLCtDQUFrQyxDQUFDLENBQUM7S0FDNUU7SUFDRDtRQUNFLE9BQU8sRUFBRSw4QkFBOEI7UUFDdkMsTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLDBDQUE2QixDQUFDLENBQUM7S0FDdkU7SUFDRDtRQUNFLE9BQU8sRUFBRSxzQ0FBc0M7UUFDL0MsTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUUsQ0FBQyxJQUFBLHFCQUFZLEVBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEVBQUMsSUFBQSwrQkFBd0IsRUFBQyxpREFBb0MsQ0FBQyxDQUFDO0tBQzFIO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsc0NBQXNDO1FBQy9DLE1BQU0sRUFBRSxNQUFNO1FBQ2QsV0FBVyxFQUFFLENBQUMsSUFBQSwrQkFBd0IsRUFBQyxpREFBb0MsQ0FBQyxDQUFDO0tBQzlFO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsdUJBQXVCO1FBQ2hDLE1BQU0sRUFBRSxNQUFNO1FBQ2QsV0FBVyxFQUFFLENBQUMsSUFBQSxxQkFBWSxFQUFDLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFDLElBQUEsK0JBQXdCLEVBQUMsNENBQStCLENBQUMsQ0FBQztLQUN6SDtJQUNELDREQUE0RDtJQUM1RDtRQUNFLE9BQU8sRUFBRSw4Q0FBOEM7UUFDdkQsTUFBTSxFQUFFLEtBQUs7S0FDZDtJQUVEO1FBQ0UsT0FBTyxFQUFFLCtDQUErQztRQUN4RCxNQUFNLEVBQUUsS0FBSztLQUNkO0lBRUQ7UUFDRSxPQUFPLEVBQUUsNEJBQTRCO1FBQ3JDLE1BQU0sRUFBRSxLQUFLO1FBQ2IsV0FBVyxFQUFFLENBQUMsSUFBQSxnQ0FBeUIsRUFBQywyQ0FBOEIsRUFBRTtnQkFDdEUsUUFBUSxFQUFFLDhDQUFpQzthQUM1QyxDQUFDLEVBQUU7S0FDTDtDQUNGLENBQUMifQ==
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = GET;
4
+ const api_response_1 = require("../../../../../lib/api-response");
5
+ const get_product_offers_1 = require("../../../../../workflows/discount/get-product-offers");
6
+ async function GET(req, res) {
7
+ try {
8
+ const { variant_id } = req.params;
9
+ const { result } = await (0, get_product_offers_1.calculateProductOfferWorkflow)(req.scope).run({
10
+ input: { variant_id },
11
+ });
12
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(result));
13
+ }
14
+ catch (error) {
15
+ console.log(error);
16
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
17
+ }
18
+ }
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvb2ZmZXJzLW9uLXByb2R1Y3QvW3ZhcmlhbnRfaWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBWUEsa0JBZ0JDO0FBdkJELGtFQUl5QztBQUN6Qyw2RkFBcUc7QUFFOUYsS0FBSyxVQUFVLEdBQUcsQ0FDdkIsR0FBK0IsRUFDL0IsR0FBbUI7SUFFbkIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLFVBQVUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFFbEMsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSxrREFBNkIsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ3BFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRTtTQUN0QixDQUFDLENBQUM7UUFFSCxPQUFPLElBQUEsOEJBQWUsRUFBQyxHQUFHLEVBQUUsSUFBQSxvQ0FBcUIsRUFBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuQixPQUFPLElBQUEsOEJBQWUsRUFBQyxHQUFHLEVBQUUsSUFBQSxrQ0FBbUIsRUFBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDdkUsQ0FBQztBQUNILENBQUMifQ==