@devx-commerce/plugin-discounts-svaraa 0.0.2-beta.2 → 0.0.2-beta.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/.medusa/server/src/api/admin/discounts/validators.js +16 -1
  2. package/.medusa/server/src/api/middlewares.js +4 -1
  3. package/.medusa/server/src/api/pos/discounts/apply/route.js +151 -0
  4. package/.medusa/server/src/api/pos/discounts/apply-freebie/route.js +20 -0
  5. package/.medusa/server/src/api/pos/discounts/auto-apply/route.js +188 -0
  6. package/.medusa/server/src/api/pos/discounts/cart-eligible-coupons/[cart_id]/route.js +39 -0
  7. package/.medusa/server/src/api/pos/discounts/coupons/[id]/route.js +25 -0
  8. package/.medusa/server/src/api/pos/discounts/middlewares.js +99 -0
  9. package/.medusa/server/src/api/pos/discounts/offers-on-product/[variant_id]/route.js +19 -0
  10. package/.medusa/server/src/api/pos/discounts/price-rules/route.js +89 -0
  11. package/.medusa/server/src/api/pos/discounts/price-rules-list/route.js +54 -0
  12. package/.medusa/server/src/api/pos/discounts/remove/route.js +41 -0
  13. package/.medusa/server/src/api/pos/discounts/remove-store-discount/route.js +54 -0
  14. package/.medusa/server/src/api/pos/discounts/validators.js +358 -0
  15. package/.medusa/server/src/api/pos/discounts/verify-store-discount/route.js +394 -0
  16. package/.medusa/server/src/api/store/discounts/apply/route.js +126 -8
  17. package/.medusa/server/src/api/store/discounts/auto-apply/route.js +143 -80
  18. package/.medusa/server/src/api/store/discounts/cart-eligible-coupons/[cart_id]/route.js +23 -3
  19. package/.medusa/server/src/api/store/discounts/price-rules/route.js +65 -2
  20. package/.medusa/server/src/api/store/discounts/remove/route.js +23 -3
  21. package/.medusa/server/src/index.js +2 -1
  22. package/.medusa/server/src/lib/constant.js +126 -0
  23. package/.medusa/server/src/lib/helper.js +68 -0
  24. package/.medusa/server/src/lib/redis-utils.js +33 -0
  25. package/.medusa/server/src/lib/send-otp-helper.js +37 -0
  26. package/.medusa/server/src/lib/utils.js +11 -2
  27. package/.medusa/server/src/modules/discounts/migrations/Migration20250822052209.js +14 -0
  28. package/.medusa/server/src/modules/discounts/migrations/Migration20250825073038.js +14 -0
  29. package/.medusa/server/src/modules/discounts/migrations/Migration20250901083847.js +14 -0
  30. package/.medusa/server/src/modules/discounts/migrations/Migration20250918095658.js +14 -0
  31. package/.medusa/server/src/modules/discounts/models/price-rule.js +13 -1
  32. package/.medusa/server/src/modules/discounts/service.js +9 -7
  33. package/.medusa/server/src/subscribers/index.js +18 -0
  34. package/.medusa/server/src/subscribers/promocode-subscriber.js +77 -0
  35. package/.medusa/server/src/workflows/discount/add-more-code-in-price-rule/index.js +3 -3
  36. package/.medusa/server/src/workflows/discount/apply-coupon/index.js +36 -26
  37. package/.medusa/server/src/workflows/discount/apply-coupon/steps/apply-coupon-step.js +25 -187
  38. package/.medusa/server/src/workflows/discount/apply-coupon/steps/generate-adjustment-line-item.js +27 -9
  39. package/.medusa/server/src/workflows/discount/apply-coupon/steps/validate-coupon-step.js +3 -5
  40. package/.medusa/server/src/workflows/discount/auto-apply-coupon/steps/auto-apply-coupon.js +157 -87
  41. package/.medusa/server/src/workflows/discount/calculate-coupon-discount/index.js +36 -32
  42. package/.medusa/server/src/workflows/discount/calculate-coupon-discount/step/fetch-price-rule-by-code.js +36 -0
  43. package/.medusa/server/src/workflows/discount/create-discount-price-rule/steps/create-discount-price-rule-step.js +2 -2
  44. package/.medusa/server/src/workflows/discount/create-subscriber-to-discount-price-rule.js +10 -0
  45. package/.medusa/server/src/workflows/discount/get-cart-eligible-coupons/index.js +2 -1
  46. package/.medusa/server/src/workflows/discount/get-cart-eligible-coupons/step/get-cart-eligible-coupon.js +33 -10
  47. package/.medusa/server/src/workflows/discount/index.js +5 -1
  48. package/.medusa/server/src/workflows/discount/remove-coupon/index.js +22 -2
  49. package/.medusa/server/src/workflows/discount/remove-coupon/step/remove-coupon-step.js +45 -26
  50. package/.medusa/server/src/workflows/discount/rounded-cart-total/index.js +13 -0
  51. package/.medusa/server/src/workflows/discount/steps/rounded-cart-total.js +168 -0
  52. package/.medusa/server/src/workflows/discount/update-coupon-code-stats/index.js +12 -0
  53. package/.medusa/server/src/workflows/discount/update-coupon-code-stats/step/update-coupon-code-stats.js +52 -0
  54. package/.medusa/server/src/workflows/discount/update-discount-price-rule/index.js +1 -3
  55. package/package.json +4 -2
@@ -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,99 @@
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)("user", ["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, medusa_1.authenticate)("user", ["bearer", "session"], {
24
+ allowUnauthenticated: true,
25
+ }),
26
+ (0, http_1.validateAndTransformQuery)(validators_1.PosListDiscountPriceRulesParams, {
27
+ defaults: validators_1.posDefaultDiscountPriceRuleFields,
28
+ defaultLimit: 10,
29
+ isList: true,
30
+ }),
31
+ ],
32
+ },
33
+ {
34
+ matcher: "/pos/discounts/apply",
35
+ method: "POST",
36
+ middlewares: [(0, medusa_1.authenticate)("user", ["bearer", "session"]), (0, http_1.validateAndTransformBody)(validators_1.PosApplyDiscountInputValidator)],
37
+ },
38
+ {
39
+ matcher: "/pos/discounts/auto-apply",
40
+ method: "POST",
41
+ middlewares: [
42
+ (0, medusa_1.authenticate)("user", ["bearer", "session"]),
43
+ (0, http_1.validateAndTransformBody)(validators_1.PosAutoApplyDiscountInputValidator),
44
+ ],
45
+ },
46
+ {
47
+ matcher: "/pos/discounts/apply-freebie",
48
+ method: "POST",
49
+ middlewares: [
50
+ (0, medusa_1.authenticate)("user", ["bearer", "session"]),
51
+ (0, http_1.validateAndTransformBody)(validators_1.PosApplyFreebieInputValidator),
52
+ ],
53
+ },
54
+ {
55
+ matcher: "/pos/discounts/verify-store-discount",
56
+ method: "POST",
57
+ middlewares: [(0, medusa_1.authenticate)("user", ["bearer", "session"]), (0, http_1.validateAndTransformBody)(validators_1.PosVerifyStoreDiscountInputValidator)],
58
+ },
59
+ {
60
+ matcher: "/pos/discounts/remove-store-discount",
61
+ method: "POST",
62
+ middlewares: [
63
+ (0, medusa_1.authenticate)("user", ["bearer", "session"]),
64
+ (0, http_1.validateAndTransformBody)(validators_1.PosRemoveStoreDiscountInputValidator),
65
+ ],
66
+ },
67
+ {
68
+ matcher: "/pos/discounts/remove",
69
+ method: "POST",
70
+ middlewares: [(0, medusa_1.authenticate)("user", ["bearer", "session"]), (0, http_1.validateAndTransformBody)(validators_1.PosRemoveDiscountInputValidator)],
71
+ },
72
+ ///////////////////// OFFERS ON PRODUCT ////////////////////
73
+ {
74
+ matcher: "/pos/discounts/offers-on-product/:variant_id",
75
+ method: "GET",
76
+ middlewares: [
77
+ (0, medusa_1.authenticate)("user", ["bearer", "session"], {
78
+ allowUnauthenticated: true,
79
+ }),
80
+ ],
81
+ },
82
+ {
83
+ matcher: "/pos/discounts/cart-eligible-coupons/:cart_id",
84
+ method: "GET",
85
+ middlewares: [
86
+ (0, medusa_1.authenticate)("user", ["bearer", "session"], {
87
+ allowUnauthenticated: true,
88
+ }),
89
+ ],
90
+ },
91
+ {
92
+ matcher: "/pos/discounts/coupons/:id",
93
+ method: "GET",
94
+ middlewares: [(0, http_1.validateAndTransformQuery)(validators_1.PosGetDiscountPriceRulesParams, {
95
+ defaults: validators_1.posDefaultDiscountPriceRuleFields,
96
+ }),],
97
+ }
98
+ ];
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvbWlkZGxld2FyZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBSWtDO0FBRWxDLDZDQVlzQjtBQUN0Qiw2Q0FBZ0Q7QUFFbkMsUUFBQSw0QkFBNEIsR0FBc0I7SUFDN0Q7UUFDRSxPQUFPLEVBQUUsNEJBQTRCO1FBQ3JDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNoQixXQUFXLEVBQUUsQ0FBQyxJQUFBLHFCQUFZLEVBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZELElBQUEsZ0NBQXlCLEVBQUMsNENBQStCLEVBQUU7Z0JBQ3pELFFBQVEsRUFBRSw4Q0FBaUM7Z0JBQzNDLFlBQVksRUFBRSxFQUFFO2dCQUNoQixNQUFNLEVBQUUsSUFBSTthQUNiLENBQUM7U0FDSDtLQUNGO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsaUNBQWlDO1FBQzFDLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNoQixXQUFXLEVBQUU7WUFDWCxJQUFBLHFCQUFZLEVBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFO2dCQUMxQyxvQkFBb0IsRUFBRSxJQUFJO2FBQzNCLENBQUM7WUFDRixJQUFBLGdDQUF5QixFQUFDLDRDQUErQixFQUFFO2dCQUN6RCxRQUFRLEVBQUUsOENBQWlDO2dCQUMzQyxZQUFZLEVBQUUsRUFBRTtnQkFDaEIsTUFBTSxFQUFFLElBQUk7YUFDYixDQUFDO1NBQ0g7S0FDRjtJQUNEO1FBQ0UsT0FBTyxFQUFFLHNCQUFzQjtRQUMvQixNQUFNLEVBQUUsTUFBTTtRQUNkLFdBQVcsRUFBRSxDQUFDLElBQUEscUJBQVksRUFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFBQyxJQUFBLCtCQUF3QixFQUFDLDJDQUE4QixDQUFDLENBQUM7S0FDcEg7SUFDRDtRQUNFLE9BQU8sRUFBRSwyQkFBMkI7UUFDcEMsTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUU7WUFDWCxJQUFBLHFCQUFZLEVBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzNDLElBQUEsK0JBQXdCLEVBQUMsK0NBQWtDLENBQUM7U0FDN0Q7S0FDRjtJQUNEO1FBQ0UsT0FBTyxFQUFFLDhCQUE4QjtRQUN2QyxNQUFNLEVBQUUsTUFBTTtRQUNkLFdBQVcsRUFBRTtZQUNYLElBQUEscUJBQVksRUFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDM0MsSUFBQSwrQkFBd0IsRUFBQywwQ0FBNkIsQ0FBQztTQUN4RDtLQUNGO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsc0NBQXNDO1FBQy9DLE1BQU0sRUFBRSxNQUFNO1FBQ2QsV0FBVyxFQUFFLENBQUMsSUFBQSxxQkFBWSxFQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFDLElBQUEsK0JBQXdCLEVBQUMsaURBQW9DLENBQUMsQ0FBQztLQUMxSDtJQUNEO1FBQ0UsT0FBTyxFQUFFLHNDQUFzQztRQUMvQyxNQUFNLEVBQUUsTUFBTTtRQUNkLFdBQVcsRUFBRTtZQUNYLElBQUEscUJBQVksRUFBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDM0MsSUFBQSwrQkFBd0IsRUFBQyxpREFBb0MsQ0FBQztTQUMvRDtLQUNGO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsdUJBQXVCO1FBQ2hDLE1BQU0sRUFBRSxNQUFNO1FBQ2QsV0FBVyxFQUFFLENBQUMsSUFBQSxxQkFBWSxFQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxFQUFDLElBQUEsK0JBQXdCLEVBQUMsNENBQStCLENBQUMsQ0FBQztLQUNySDtJQUNELDREQUE0RDtJQUM1RDtRQUNFLE9BQU8sRUFBRSw4Q0FBOEM7UUFDdkQsTUFBTSxFQUFFLEtBQUs7UUFDYixXQUFXLEVBQUU7WUFDWCxJQUFBLHFCQUFZLEVBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxFQUFFO2dCQUMxQyxvQkFBb0IsRUFBRSxJQUFJO2FBQzNCLENBQUM7U0FDSDtLQUNGO0lBRUQ7UUFDRSxPQUFPLEVBQUUsK0NBQStDO1FBQ3hELE1BQU0sRUFBRSxLQUFLO1FBQ2IsV0FBVyxFQUFFO1lBQ1gsSUFBQSxxQkFBWSxFQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsRUFBRTtnQkFDMUMsb0JBQW9CLEVBQUUsSUFBSTthQUMzQixDQUFDO1NBQ0g7S0FDRjtJQUVEO1FBQ0UsT0FBTyxFQUFFLDRCQUE0QjtRQUNyQyxNQUFNLEVBQUUsS0FBSztRQUNiLFdBQVcsRUFBRSxDQUFDLElBQUEsZ0NBQXlCLEVBQUMsMkNBQThCLEVBQUU7Z0JBQ3RFLFFBQVEsRUFBRSw4Q0FBaUM7YUFDNUMsQ0FBQyxFQUFFO0tBQ0w7Q0FDRixDQUFDIn0=
@@ -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==
@@ -0,0 +1,89 @@
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 utils_1 = require("../../../../lib/utils");
6
+ async function GET(req, res) {
7
+ try {
8
+ const query = req.scope.resolve("query");
9
+ // Use customer_id from query params if provided, otherwise use authenticated customer
10
+ const customerId = req.validatedQuery?.customer_id || req.auth_context?.actor_id;
11
+ let filters = { ...req.filterableFields };
12
+ // Remove customer_id from filters as it's not a database field
13
+ if (filters.customer_id) {
14
+ delete filters.customer_id;
15
+ }
16
+ // Filter out expired coupons - only show active coupons
17
+ // starts_at <= now AND (ends_at >= now OR ends_at is null)
18
+ const now = new Date();
19
+ filters.starts_at = { $lte: now };
20
+ // Date filter for ends_at (not expired)
21
+ const dateFilter = {
22
+ $or: [{ ends_at: { $gte: now } }, { ends_at: null }],
23
+ };
24
+ if (!customerId) {
25
+ filters = {
26
+ ...filters,
27
+ usage_limit: "UNLIMITED",
28
+ is_birthday: false,
29
+ is_anniversary: false,
30
+ ...dateFilter,
31
+ };
32
+ }
33
+ if (customerId) {
34
+ const { data: customer } = await query.graph({
35
+ entity: "customer",
36
+ fields: ["metadata", "extended_customer.id"],
37
+ filters: { id: customerId },
38
+ });
39
+ const externalId = customer?.[0]?.extended_customer?.id;
40
+ if (externalId) {
41
+ const { data: ext } = await query.graph({
42
+ entity: "extended_customer",
43
+ fields: ["birth_date", "anniversary_date"],
44
+ filters: { id: externalId },
45
+ });
46
+ const todayIST = (0, utils_1.getISTMonthDay)(new Date());
47
+ const bday = ext?.[0]?.birth_date;
48
+ const anniv = ext?.[0]?.anniversary_date;
49
+ const isBirthday = bday && (0, utils_1.getISTMonthDay)(bday) === todayIST;
50
+ const isAnniversary = anniv && (0, utils_1.getISTMonthDay)(anniv) === todayIST;
51
+ if (isBirthday || isAnniversary) {
52
+ // Combine date filter with birthday/anniversary filter using $and
53
+ filters.$and = [
54
+ dateFilter,
55
+ {
56
+ $or: [
57
+ { is_birthday: false, is_anniversary: false },
58
+ ...(isBirthday ? [{ is_birthday: true }] : []),
59
+ ...(isAnniversary ? [{ is_anniversary: true }] : []),
60
+ ],
61
+ },
62
+ ];
63
+ }
64
+ else {
65
+ filters.is_birthday = false;
66
+ filters.is_anniversary = false;
67
+ filters.$or = dateFilter.$or;
68
+ }
69
+ }
70
+ else {
71
+ filters.is_birthday = false;
72
+ filters.is_anniversary = false;
73
+ filters.$or = dateFilter.$or;
74
+ }
75
+ }
76
+ const { data, metadata } = await query.graph({
77
+ entity: "discount_price_rule",
78
+ ...req.queryConfig,
79
+ filters,
80
+ });
81
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({ data, metadata }));
82
+ }
83
+ catch (error) {
84
+ console.log(error);
85
+ const message = error instanceof Error ? error.message : "An unexpected error occurred";
86
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(message, 500));
87
+ }
88
+ }
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvcHJpY2UtcnVsZXMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFZQSxrQkE2RkM7QUFyR0QsK0RBSXNDO0FBRXRDLGlEQUF1RDtBQUVoRCxLQUFLLFVBQVUsR0FBRyxDQUN2QixHQUFvRSxFQUNwRSxHQUFtQjtJQUVuQixJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxzRkFBc0Y7UUFDdEYsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLGNBQWMsRUFBRSxXQUFXLElBQUksR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUM7UUFDakYsSUFBSSxPQUFPLEdBQXdCLEVBQUUsR0FBRyxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUUvRCwrREFBK0Q7UUFDL0QsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDeEIsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDO1FBQzdCLENBQUM7UUFFRCx3REFBd0Q7UUFDeEQsMkRBQTJEO1FBQzNELE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsT0FBTyxDQUFDLFNBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUVsQyx3Q0FBd0M7UUFDeEMsTUFBTSxVQUFVLEdBQUc7WUFDakIsR0FBRyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUNyRCxDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE9BQU8sR0FBRztnQkFDUixHQUFHLE9BQU87Z0JBQ1YsV0FBVyxF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
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = POST;
4
+ exports.GET = GET;
5
+ const api_response_1 = require("../../../../lib/api-response");
6
+ const create_discount_price_rule_1 = require("../../../../workflows/discount/create-discount-price-rule");
7
+ const utils_1 = require("@medusajs/framework/utils");
8
+ async function POST(req, res) {
9
+ try {
10
+ const { result } = await (0, create_discount_price_rule_1.createDiscountPriceRuleWorkflow)(req.scope).run({
11
+ input: req.validatedBody,
12
+ });
13
+ if (!result) {
14
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Failed to create discount price rule", 400));
15
+ }
16
+ const eventBus = req.scope.resolve(utils_1.Modules.EVENT_BUS);
17
+ eventBus.emit({
18
+ name: "audit.logs",
19
+ data: {
20
+ relation_id: result[0].id,
21
+ message: "Discount price rule created",
22
+ admin_id: req.auth_context.actor_id
23
+ },
24
+ });
25
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(result));
26
+ }
27
+ catch (error) {
28
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
29
+ }
30
+ }
31
+ async function GET(req, res) {
32
+ try {
33
+ const query = req.scope.resolve("query");
34
+ // Filter out expired coupons - only show active coupons
35
+ // starts_at <= now AND (ends_at >= now OR ends_at is null)
36
+ const now = new Date();
37
+ const filters = {
38
+ ...req.filterableFields,
39
+ starts_at: { $lte: now },
40
+ $or: [{ ends_at: { $gte: now } }, { ends_at: null }],
41
+ };
42
+ const response = await query.graph({
43
+ entity: "discount_price_rule",
44
+ ...req.queryConfig,
45
+ filters,
46
+ });
47
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)(response));
48
+ }
49
+ catch (error) {
50
+ const message = error instanceof Error ? error.message : "An unexpected error occurred";
51
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(message, 500));
52
+ }
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvcHJpY2UtcnVsZXMtbGlzdC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlCQSxvQkFnQ0M7QUFFRCxrQkE0QkM7QUExRUQsK0RBSXNDO0FBQ3RDLDBHQUE0RztBQUs1RyxxREFBb0Q7QUFFN0MsS0FBSyxVQUFVLElBQUksQ0FDeEIsR0FBa0UsRUFDbEUsR0FBbUI7SUFFbkIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSw0REFBK0IsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQ3RFLEtBQUssRUFBRSxHQUFHLENBQUMsYUFBYTtTQUN6QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsa0NBQW1CLEVBQUMsc0NBQXNDLEVBQUUsR0FBRyxDQUFDLENBQ2pFLENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXRELFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDWixJQUFJLEVBQUUsWUFBWTtZQUNsQixJQUFJLEVBQUU7Z0JBQ0osV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUN6QixPQUFPLEVBQUUsNkJBQTZCO2dCQUN0QyxRQUFRLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRO2FBQ3BDO1NBQ0YsQ0FBQyxDQUFBO1FBR0YsT0FBTyxJQUFBLDhCQUFlLEVBQUMsR0FBRyxFQUFFLElBQUEsb0NBQXFCLEVBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sSUFBQSw4QkFBZSxFQUFDLEdBQUcsRUFBRSxJQUFBLGtDQUFtQixFQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0FBQ0gsQ0FBQztBQUVNLEtBQUssVUFBVSxHQUFHLENBQ3ZCLEdBQW9FLEVBQ3BFLEdBQW1CO0lBRW5CLElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRXpDLHdEQUF3RDtRQUN4RCwyREFBMkQ7UUFDM0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixNQUFNLE9BQU8sR0FBd0I7WUFDbkMsR0FBRyxHQUFHLENBQUMsZ0JBQWdCO1lBQ3ZCLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7WUFDeEIsR0FBRyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUNyRCxDQUFDO1FBRUYsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ2pDLE1BQU0sRUFBRSxxQkFBcUI7WUFDN0IsR0FBRyxHQUFHLENBQUMsV0FBVztZQUNsQixPQUFPO1NBQ1IsQ0FBQyxDQUFDO1FBRUgsT0FBTyxJQUFBLDhCQUFlLEVBQUMsR0FBRyxFQUFFLElBQUEsb0NBQXFCLEVBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sT0FBTyxHQUNYLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDhCQUE4QixDQUFDO1FBQzFFLE9BQU8sSUFBQSw4QkFBZSxFQUFDLEdBQUcsRUFBRSxJQUFBLGtDQUFtQixFQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7QUFDSCxDQUFDIn0=
@@ -0,0 +1,41 @@
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 remove_coupon_1 = require("../../../../workflows/discount/remove-coupon");
6
+ async function POST(req, res) {
7
+ try {
8
+ const query = req.scope.resolve("query");
9
+ const { data: discount_codes } = await query.graph({
10
+ entity: "discount_code",
11
+ fields: [
12
+ "*",
13
+ ],
14
+ filters: { code: req.validatedBody.code },
15
+ });
16
+ if (!discount_codes.length) {
17
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
18
+ discountResult: {
19
+ isApplied: false,
20
+ discount: 0,
21
+ message: "This coupon code is invalid or does not exist."
22
+ }
23
+ }));
24
+ }
25
+ const { result } = await (0, remove_coupon_1.removeCouponWorkflow)(req.scope).run({
26
+ input: req.validatedBody,
27
+ });
28
+ if (!result) {
29
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)("Failed to remove coupon", 400));
30
+ }
31
+ // Return only discount result - frontend will fetch cart separately
32
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({
33
+ discountResult: result,
34
+ }));
35
+ }
36
+ catch (error) {
37
+ console.log("error: ", error);
38
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message, 500));
39
+ }
40
+ }
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvcmVtb3ZlL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBWUEsb0JBOENDO0FBdERELCtEQUlzQztBQUN0QyxnRkFBb0Y7QUFHN0UsS0FBSyxVQUFVLElBQUksQ0FDeEIsR0FBMkQsRUFDM0QsR0FBbUI7SUFFbkIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsTUFBTSxFQUFFLElBQUksRUFBRSxjQUFjLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDakQsTUFBTSxFQUFFLGVBQWU7WUFDdkIsTUFBTSxFQUFFO2dCQUNOLEdBQUc7YUFDSjtZQUNELE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRTtTQUMxQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLE9BQU8sSUFBQSw4QkFBZSxFQUFDLEdBQUcsRUFBRSxJQUFBLG9DQUFxQixFQUFDO2dCQUNoRCxjQUFjLEVBQUU7b0JBQ2QsU0FBUyxFQUFFLEtBQUs7b0JBQ2hCLFFBQVEsRUFBRSxDQUFDO29CQUNYLE9BQU8sRUFBRSxnREFBZ0Q7aUJBQzFEO2FBQ0YsQ0FBQyxDQUFDLENBQUM7UUFDTixDQUFDO1FBQ0QsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBQSxvQ0FBb0IsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQzNELEtBQUssRUFBRSxHQUFHLENBQUMsYUFBYTtTQUN6QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsa0NBQW1CLEVBQUMseUJBQXlCLEVBQUUsR0FBRyxDQUFDLENBQ3BELENBQUM7UUFDSixDQUFDO1FBRUQsb0VBQW9FO1FBQ3BFLE9BQU8sSUFBQSw4QkFBZSxFQUNwQixHQUFHLEVBQ0gsSUFBQSxvQ0FBcUIsRUFBQztZQUNwQixjQUFjLEVBQUUsTUFBTTtTQUN2QixDQUFDLENBQ0gsQ0FBQztJQUVKLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUIsT0FBTyxJQUFBLDhCQUFlLEVBQUMsR0FBRyxFQUFFLElBQUEsa0NBQW1CLEVBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7QUFDSCxDQUFDIn0=
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const api_response_1 = require("../../../../lib/api-response");
6
+ /**
7
+ * POST /pos/discount/remove-store-discount
8
+ *
9
+ * Remove any existing manual store discount from a cart.
10
+ */
11
+ const POST = async (req, res) => {
12
+ try {
13
+ const { cart_id } = req.validatedBody;
14
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
15
+ const cartService = req.scope.resolve("cart");
16
+ const { data: carts } = await query.graph({
17
+ entity: "cart",
18
+ fields: ["*", "items.*"],
19
+ filters: { id: cart_id },
20
+ });
21
+ if (!carts.length) {
22
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(`Cart ${cart_id} not found`, 404));
23
+ }
24
+ const cart = carts[0];
25
+ const itemIds = cart.items?.map((i) => i.id) || [];
26
+ if (itemIds.length) {
27
+ const { data: adjustments } = await query.graph({
28
+ entity: "line_item_adjustment",
29
+ fields: ["id"],
30
+ filters: {
31
+ item_id: { $in: itemIds },
32
+ code: "STORE_DISCOUNT",
33
+ },
34
+ });
35
+ if (adjustments?.length) {
36
+ await cartService.deleteLineItemAdjustments(adjustments.map((a) => a.id));
37
+ }
38
+ }
39
+ // Clear store_discount metadata
40
+ const currentCart = await cartService.retrieveCart(cart_id);
41
+ const meta = { ...(currentCart.metadata || {}), store_discount: null };
42
+ await cartService.updateCarts(cart_id, {
43
+ metadata: meta,
44
+ });
45
+ // Return only success message - frontend will fetch cart separately
46
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createSuccessResponse)({}, "Store discount removed"));
47
+ }
48
+ catch (error) {
49
+ console.error("Error removing store discount:", error);
50
+ return (0, api_response_1.sendApiResponse)(res, (0, api_response_1.createErrorResponse)(error.message || "Failed to remove store discount", 500));
51
+ }
52
+ };
53
+ exports.POST = POST;
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3Bvcy9kaXNjb3VudHMvcmVtb3ZlLXN0b3JlLWRpc2NvdW50L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHFEQUFzRTtBQUV0RSwrREFJc0M7QUFHdEM7Ozs7R0FJRztBQUNJLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBZ0UsRUFDaEUsR0FBbUIsRUFDbkIsRUFBRTtJQUNGLElBQUksQ0FBQztRQUNILE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDO1FBRXRDLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGlDQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlDLE1BQU0sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ3hDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQztZQUN4QixPQUFPLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFO1NBQ3pCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEIsT0FBTyxJQUFBLDhCQUFlLEVBQ3BCLEdBQUcsRUFDSCxJQUFBLGtDQUFtQixFQUFDLFFBQVEsT0FBTyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQ3RELENBQUM7UUFDSixDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXhELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxDQUFDO2dCQUM5QyxNQUFNLEVBQUUsc0JBQXNCO2dCQUM5QixNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsT0FBTyxFQUFFO29CQUNQLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUU7b0JBQ3pCLElBQUksRUFBRSxnQkFBZ0I7aUJBQ3ZCO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsSUFBSSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ3hCLE1BQU0sV0FBVyxDQUFDLHlCQUF5QixDQUN6QyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQ2xDLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELGdDQUFnQztRQUNoQyxNQUFNLFdBQVcsR0FBRyxNQUFNLFdBQVcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUQsTUFBTSxJQUFJLEdBQUcsRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsRUFBQyxjQUFjLEVBQUMsSUFBSSxFQUFFLENBQUM7UUFFckUsTUFBTSxXQUFXLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRTtZQUNyQyxRQUFRLEVBQUUsSUFBSTtTQUNmLENBQUMsQ0FBQztRQUVILG9FQUFvRTtRQUNwRSxPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsb0NBQXFCLEVBQ25CLEVBQUUsRUFDRix3QkFBd0IsQ0FDekIsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7UUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RCxPQUFPLElBQUEsOEJBQWUsRUFDcEIsR0FBRyxFQUNILElBQUEsa0NBQW1CLEVBQ2pCLEtBQUssQ0FBQyxPQUFPLElBQUksaUNBQWlDLEVBQ2xELEdBQUcsQ0FDSixDQUNGLENBQUM7SUFDSixDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBckVXLFFBQUEsSUFBSSxRQXFFZiJ9