@xbstracts/medusa-coupons 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.
Files changed (84) hide show
  1. package/.medusa/server/src/admin/index.js +3207 -0
  2. package/.medusa/server/src/admin/index.mjs +3253 -0
  3. package/.medusa/server/src/api/admin/coupon-products/[product_id]/entitlements/route.js +9 -0
  4. package/.medusa/server/src/api/admin/coupon-products/[product_id]/mirror-promotion/route.js +132 -0
  5. package/.medusa/server/src/api/admin/coupon-products/[product_id]/preview/route.js +28 -0
  6. package/.medusa/server/src/api/admin/coupon-products/[product_id]/route.js +18 -0
  7. package/.medusa/server/src/api/admin/coupon-products/[product_id]/variants/[variant_config_id]/route.js +14 -0
  8. package/.medusa/server/src/api/admin/coupon-products/[product_id]/variants/route.js +14 -0
  9. package/.medusa/server/src/api/admin/coupon-products/configs/[id]/route.js +53 -0
  10. package/.medusa/server/src/api/admin/coupon-products/configs/[id]/variants/[variant_config_id]/route.js +26 -0
  11. package/.medusa/server/src/api/admin/coupon-products/configs/[id]/variants/route.js +27 -0
  12. package/.medusa/server/src/api/admin/coupon-products/configs/route.js +36 -0
  13. package/.medusa/server/src/api/admin/coupon-products/entitlements/[id]/cancel/route.js +15 -0
  14. package/.medusa/server/src/api/admin/coupon-products/entitlements/[id]/redeem/route.js +15 -0
  15. package/.medusa/server/src/api/admin/coupon-products/entitlements/[id]/route.js +16 -0
  16. package/.medusa/server/src/api/admin/coupon-products/entitlements/route.js +22 -0
  17. package/.medusa/server/src/api/admin/coupon-products/options/route.js +9 -0
  18. package/.medusa/server/src/api/admin/coupon-products/products/route.js +16 -0
  19. package/.medusa/server/src/api/admin/coupon-products/route.js +13 -0
  20. package/.medusa/server/src/api/admin/coupon-products/uploads/route.js +7 -0
  21. package/.medusa/server/src/api/coupon-product-routes.js +546 -0
  22. package/.medusa/server/src/api/entitlement-utils.js +90 -0
  23. package/.medusa/server/src/api/media-upload.js +57 -0
  24. package/.medusa/server/src/api/middlewares.js +92 -0
  25. package/.medusa/server/src/api/product-utils.js +304 -0
  26. package/.medusa/server/src/api/promotion-code-resolver.js +225 -0
  27. package/.medusa/server/src/api/seller-utils.js +101 -0
  28. package/.medusa/server/src/api/utils.js +25 -0
  29. package/.medusa/server/src/api/validators.js +199 -0
  30. package/.medusa/server/src/api/vendor/coupon-products/[product_id]/entitlements/route.js +9 -0
  31. package/.medusa/server/src/api/vendor/coupon-products/[product_id]/route.js +18 -0
  32. package/.medusa/server/src/api/vendor/coupon-products/[product_id]/variants/[variant_config_id]/route.js +14 -0
  33. package/.medusa/server/src/api/vendor/coupon-products/[product_id]/variants/route.js +14 -0
  34. package/.medusa/server/src/api/vendor/coupon-products/configs/[id]/route.js +60 -0
  35. package/.medusa/server/src/api/vendor/coupon-products/configs/[id]/variants/[variant_config_id]/route.js +41 -0
  36. package/.medusa/server/src/api/vendor/coupon-products/configs/[id]/variants/route.js +45 -0
  37. package/.medusa/server/src/api/vendor/coupon-products/configs/route.js +51 -0
  38. package/.medusa/server/src/api/vendor/coupon-products/entitlements/[id]/route.js +25 -0
  39. package/.medusa/server/src/api/vendor/coupon-products/entitlements/route.js +45 -0
  40. package/.medusa/server/src/api/vendor/coupon-products/options/route.js +9 -0
  41. package/.medusa/server/src/api/vendor/coupon-products/products/route.js +19 -0
  42. package/.medusa/server/src/api/vendor/coupon-products/route.js +13 -0
  43. package/.medusa/server/src/api/vendor/coupon-products/uploads/route.js +7 -0
  44. package/.medusa/server/src/jobs/retry-coupon-media-deletes.js +14 -0
  45. package/.medusa/server/src/links/coupon-issuance-order-line-item.js +17 -0
  46. package/.medusa/server/src/links/coupon-issuance-order.js +15 -0
  47. package/.medusa/server/src/links/coupon-product-config-product.js +17 -0
  48. package/.medusa/server/src/links/coupon-product-variant-config-variant.js +17 -0
  49. package/.medusa/server/src/links/coupon-promotion-mirror-promotion.js +17 -0
  50. package/.medusa/server/src/links/customer-coupon-entitlement-customer.js +15 -0
  51. package/.medusa/server/src/modules/coupon/constants.js +46 -0
  52. package/.medusa/server/src/modules/coupon/index.js +16 -0
  53. package/.medusa/server/src/modules/coupon/loaders/reconcile-coupon-products.js +65 -0
  54. package/.medusa/server/src/modules/coupon/migrations/Migration20260709000000.js +40 -0
  55. package/.medusa/server/src/modules/coupon/migrations/Migration20260710000000.js +22 -0
  56. package/.medusa/server/src/modules/coupon/migrations/Migration20260711000000.js +25 -0
  57. package/.medusa/server/src/modules/coupon/migrations/Migration20260712000000.js +78 -0
  58. package/.medusa/server/src/modules/coupon/migrations/Migration20260719000000.js +19 -0
  59. package/.medusa/server/src/modules/coupon/migrations/Migration20260722000000.js +17 -0
  60. package/.medusa/server/src/modules/coupon/migrations/Migration20260723000000.js +18 -0
  61. package/.medusa/server/src/modules/coupon/models/coupon-entitlement-promotion.js +31 -0
  62. package/.medusa/server/src/modules/coupon/models/coupon-entitlement-seller.js +28 -0
  63. package/.medusa/server/src/modules/coupon/models/coupon-issuance.js +35 -0
  64. package/.medusa/server/src/modules/coupon/models/coupon-media-asset.js +41 -0
  65. package/.medusa/server/src/modules/coupon/models/coupon-product-config.js +45 -0
  66. package/.medusa/server/src/modules/coupon/models/coupon-product-variant-config.js +36 -0
  67. package/.medusa/server/src/modules/coupon/models/coupon-promotion-mirror.js +27 -0
  68. package/.medusa/server/src/modules/coupon/models/customer-coupon-entitlement.js +56 -0
  69. package/.medusa/server/src/modules/coupon/models/index.js +23 -0
  70. package/.medusa/server/src/modules/coupon/payment-order-utils.js +76 -0
  71. package/.medusa/server/src/modules/coupon/product-metadata.js +24 -0
  72. package/.medusa/server/src/modules/coupon/purchase-conditions.js +138 -0
  73. package/.medusa/server/src/modules/coupon/service.js +628 -0
  74. package/.medusa/server/src/modules/coupon/types.js +3 -0
  75. package/.medusa/server/src/modules/coupon/utils.js +302 -0
  76. package/.medusa/server/src/subscribers/issue-coupons-from-order.js +88 -0
  77. package/.medusa/server/src/vendor/index.mjs +3237 -0
  78. package/.medusa/server/src/workflows/hooks/validate-coupon-add-to-cart.js +13 -0
  79. package/.medusa/server/src/workflows/hooks/validate-coupon-complete-cart.js +8 -0
  80. package/.medusa/server/src/workflows/index.js +21 -0
  81. package/.medusa/server/src/workflows/steps.js +27 -0
  82. package/.medusa/server/src/workflows/validate-coupon-purchase.js +85 -0
  83. package/README.md +84 -0
  84. package/package.json +102 -0
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const coupon_product_routes_1 = require("../../../../coupon-product-routes");
5
+ const GET = async (req, res) => {
6
+ return (0, coupon_product_routes_1.listProductEntitlements)(req, res, "admin");
7
+ };
8
+ exports.GET = GET;
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbi1wcm9kdWN0cy9bcHJvZHVjdF9pZF0vZW50aXRsZW1lbnRzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZFQUEyRTtBQUVwRSxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDbkUsT0FBTyxJQUFBLCtDQUF1QixFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDbkQsQ0FBQyxDQUFBO0FBRlksUUFBQSxHQUFHLE9BRWYifQ==
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ exports.buildPromotionInput = buildPromotionInput;
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const core_flows_1 = require("@medusajs/medusa/core-flows");
7
+ const coupon_1 = require("../../../../../modules/coupon");
8
+ const utils_2 = require("../../../../../modules/coupon/utils");
9
+ const utils_3 = require("../../../../utils");
10
+ function buildPromotionInput(config) {
11
+ if (config.code_strategy !== "shared_code" || !config.shared_code) {
12
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Only shared_code coupon configs can be mirrored to a reusable Medusa promotion in MVP");
13
+ }
14
+ const basePromotion = {
15
+ code: config.shared_code,
16
+ type: utils_1.PromotionType.STANDARD,
17
+ status: config.promotion_status === "active"
18
+ ? utils_1.PromotionStatus.ACTIVE
19
+ : config.promotion_status === "inactive"
20
+ ? utils_1.PromotionStatus.INACTIVE
21
+ : utils_1.PromotionStatus.DRAFT,
22
+ is_automatic: false,
23
+ campaign_id: config.campaign_id || undefined,
24
+ ...(config.promotion_template || {}),
25
+ };
26
+ if (config.benefit_type === "fixed_amount") {
27
+ if (config.amounts.length > 1) {
28
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Multi-currency fixed coupons are applied through issued entitlements and cannot use a single reusable promotion mirror");
29
+ }
30
+ const configuredTarget = config.promotion_template
31
+ ?.application_method?.target_type;
32
+ const targetType = configuredTarget === "order"
33
+ ? utils_1.ApplicationMethodTargetType.ORDER
34
+ : utils_1.ApplicationMethodTargetType.ITEMS;
35
+ const allocation = (0, utils_2.resolvePromotionAllocation)(config.promotion_template, targetType === utils_1.ApplicationMethodTargetType.ORDER ? "order" : "items");
36
+ return {
37
+ ...basePromotion,
38
+ application_method: {
39
+ type: utils_1.ApplicationMethodType.FIXED,
40
+ value: config.amount || 0,
41
+ currency_code: config.currency_code,
42
+ target_type: targetType,
43
+ allocation: allocation === "across"
44
+ ? utils_1.ApplicationMethodAllocation.ACROSS
45
+ : allocation === "once"
46
+ ? utils_1.ApplicationMethodAllocation.ONCE
47
+ : utils_1.ApplicationMethodAllocation.EACH,
48
+ },
49
+ };
50
+ }
51
+ if (config.benefit_type === "percentage") {
52
+ const configuredTarget = config.promotion_template
53
+ ?.application_method?.target_type;
54
+ const targetType = configuredTarget === "order"
55
+ ? utils_1.ApplicationMethodTargetType.ORDER
56
+ : utils_1.ApplicationMethodTargetType.ITEMS;
57
+ const allocation = (0, utils_2.resolvePromotionAllocation)(config.promotion_template, targetType === utils_1.ApplicationMethodTargetType.ORDER ? "order" : "items");
58
+ return {
59
+ ...basePromotion,
60
+ application_method: {
61
+ type: utils_1.ApplicationMethodType.PERCENTAGE,
62
+ value: config.percentage || 0,
63
+ target_type: targetType,
64
+ allocation: allocation === "across"
65
+ ? utils_1.ApplicationMethodAllocation.ACROSS
66
+ : allocation === "once"
67
+ ? utils_1.ApplicationMethodAllocation.ONCE
68
+ : utils_1.ApplicationMethodAllocation.EACH,
69
+ },
70
+ };
71
+ }
72
+ if (config.benefit_type === "free_shipping") {
73
+ return {
74
+ ...basePromotion,
75
+ application_method: {
76
+ type: utils_1.ApplicationMethodType.PERCENTAGE,
77
+ value: 100,
78
+ target_type: utils_1.ApplicationMethodTargetType.SHIPPING_METHODS,
79
+ allocation: utils_1.ApplicationMethodAllocation.EACH,
80
+ },
81
+ };
82
+ }
83
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "This coupon benefit type cannot be mirrored to Medusa promotions yet");
84
+ }
85
+ const POST = async (req, res) => {
86
+ const productId = (0, utils_3.readStringParam)(req.params, "product_id");
87
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
88
+ const [config] = await service.listCouponProductConfigs({
89
+ product_id: productId,
90
+ });
91
+ if (!config) {
92
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Coupon product config was not found");
93
+ }
94
+ const resolved = (0, utils_2.mergeVariantConfig)(config);
95
+ try {
96
+ const promotionInput = buildPromotionInput(resolved);
97
+ const { result } = await (0, core_flows_1.createPromotionsWorkflow)(req.scope).run({
98
+ input: {
99
+ promotionsData: [promotionInput],
100
+ additional_data: {
101
+ coupon_product_config_id: config.id,
102
+ },
103
+ },
104
+ });
105
+ const promotion = result[0];
106
+ const mirror = await service.createPromotionMirror({
107
+ config_id: config.id,
108
+ promotion_id: promotion.id,
109
+ status: "created",
110
+ metadata: {
111
+ promotion_input: promotionInput,
112
+ },
113
+ });
114
+ res.json({
115
+ coupon_promotion_mirror: mirror,
116
+ promotion,
117
+ });
118
+ }
119
+ catch (error) {
120
+ const mirror = await service.createPromotionMirror({
121
+ config_id: config.id,
122
+ status: "failed",
123
+ last_error: error instanceof Error ? error.message : String(error),
124
+ });
125
+ res.status(400).json({
126
+ coupon_promotion_mirror: mirror,
127
+ message: mirror.last_error,
128
+ });
129
+ }
130
+ };
131
+ exports.POST = POST;
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbi1wcm9kdWN0cy9bcHJvZHVjdF9pZF0vbWlycm9yLXByb21vdGlvbi9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFtQkEsa0RBb0dDO0FBdEhELHFEQU9rQztBQUNsQyw0REFBc0U7QUFDdEUsMERBQTZEO0FBRzdELCtEQUc0QztBQUM1Qyw2Q0FBbUQ7QUFFbkQsU0FBZ0IsbUJBQW1CLENBQUMsTUFBNEI7SUFDOUQsSUFBSSxNQUFNLENBQUMsYUFBYSxLQUFLLGFBQWEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNsRSxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qix1RkFBdUYsQ0FDeEYsQ0FBQTtJQUNILENBQUM7SUFFRCxNQUFNLGFBQWEsR0FBRztRQUNwQixJQUFJLEVBQUUsTUFBTSxDQUFDLFdBQVc7UUFDeEIsSUFBSSxFQUFFLHFCQUFhLENBQUMsUUFBUTtRQUM1QixNQUFNLEVBQ0osTUFBTSxDQUFDLGdCQUFnQixLQUFLLFFBQVE7WUFDbEMsQ0FBQyxDQUFDLHVCQUFlLENBQUMsTUFBTTtZQUN4QixDQUFDLENBQUMsTUFBTSxDQUFDLGdCQUFnQixLQUFLLFVBQVU7Z0JBQ3RDLENBQUMsQ0FBQyx1QkFBZSxDQUFDLFFBQVE7Z0JBQzFCLENBQUMsQ0FBQyx1QkFBZSxDQUFDLEtBQUs7UUFDN0IsWUFBWSxFQUFFLEtBQUs7UUFDbkIsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLElBQUksU0FBUztRQUM1QyxHQUFHLENBQUMsTUFBTSxDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQztLQUNyQyxDQUFBO0lBRUQsSUFBSSxNQUFNLENBQUMsWUFBWSxLQUFLLGNBQWMsRUFBRSxDQUFDO1FBQzNDLElBQUksTUFBTSxDQUFD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
@@ -0,0 +1,28 @@
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 coupon_1 = require("../../../../../modules/coupon");
6
+ const utils_2 = require("../../../../../modules/coupon/utils");
7
+ const utils_3 = require("../../../../utils");
8
+ const POST = async (req, res) => {
9
+ const productId = (0, utils_3.readStringParam)(req.params, "product_id");
10
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
11
+ const [config] = await service.listCouponProductConfigs({
12
+ product_id: productId,
13
+ });
14
+ if (!config) {
15
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Coupon product config was not found");
16
+ }
17
+ const variantConfigs = await service.listCouponProductVariantConfigs({
18
+ product_config_id: config.id,
19
+ });
20
+ res.json({
21
+ coupon_product_config: config,
22
+ resolved_product_config: (0, utils_2.mergeVariantConfig)(config),
23
+ coupon_product_variant_configs: variantConfigs,
24
+ resolved_variant_configs: variantConfigs.map((variantConfig) => (0, utils_2.mergeVariantConfig)(config, variantConfig)),
25
+ });
26
+ };
27
+ exports.POST = POST;
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbi1wcm9kdWN0cy9bcHJvZHVjdF9pZF0vcHJldmlldy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxxREFBdUQ7QUFDdkQsMERBQTZEO0FBRTdELCtEQUF3RTtBQUN4RSw2Q0FBbUQ7QUFFNUMsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3BFLE1BQU0sU0FBUyxHQUFHLElBQUEsdUJBQWUsRUFBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFBO0lBQzNELE1BQU0sT0FBTyxHQUF3QixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxzQkFBYSxDQUFDLENBQUE7SUFDckUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLHdCQUF3QixDQUFDO1FBQ3RELFVBQVUsRUFBRSxTQUFTO0tBQ2YsQ0FBQyxDQUFBO0lBRVQsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1osTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IscUNBQXFDLENBQ3RDLENBQUE7SUFDSCxDQUFDO0lBRUQsTUFBTSxjQUFjLEdBQUcsTUFBTSxPQUFPLENBQUMsK0JBQStCLENBQUM7UUFDbkUsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLEVBQUU7S0FDdEIsQ0FBQyxDQUFBO0lBRVQsR0FBRyxDQUFDLElBQUksQ0FBQztRQUNQLHFCQUFxQixFQUFFLE1BQU07UUFDN0IsdUJBQXVCLEVBQUUsSUFBQSwwQkFBa0IsRUFBQyxNQUFNLENBQUM7UUFDbkQsOEJBQThCLEVBQUUsY0FBYztRQUM5Qyx3QkFBd0IsRUFBRSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FDN0QsSUFBQSwwQkFBa0IsRUFBQyxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQzFDO0tBQ0YsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBMUJZLFFBQUEsSUFBSSxRQTBCaEIifQ==
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DELETE = exports.POST = exports.PATCH = exports.GET = void 0;
4
+ const coupon_product_routes_1 = require("../../../coupon-product-routes");
5
+ const GET = async (req, res) => {
6
+ return (0, coupon_product_routes_1.retrieveCouponProduct)(req, res, "admin");
7
+ };
8
+ exports.GET = GET;
9
+ const PATCH = async (req, res) => {
10
+ return (0, coupon_product_routes_1.updateCouponProduct)(req, res, "admin");
11
+ };
12
+ exports.PATCH = PATCH;
13
+ exports.POST = exports.PATCH;
14
+ const DELETE = async (req, res) => {
15
+ return (0, coupon_product_routes_1.deleteCouponProduct)(req, res, "admin");
16
+ };
17
+ exports.DELETE = DELETE;
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbi1wcm9kdWN0cy9bcHJvZHVjdF9pZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMEVBSXVDO0FBRWhDLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNuRSxPQUFPLElBQUEsNkNBQXFCLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUNqRCxDQUFDLENBQUE7QUFGWSxRQUFBLEdBQUcsT0FFZjtBQUVNLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNyRSxPQUFPLElBQUEsMkNBQW1CLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUMvQyxDQUFDLENBQUE7QUFGWSxRQUFBLEtBQUssU0FFakI7QUFFWSxRQUFBLElBQUksR0FBRyxhQUFLLENBQUE7QUFFbEIsTUFBTSxNQUFNLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3RFLE9BQU8sSUFBQSwyQ0FBbUIsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQy9DLENBQUMsQ0FBQTtBQUZZLFFBQUEsTUFBTSxVQUVsQiJ9
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DELETE = exports.POST = exports.PATCH = void 0;
4
+ const coupon_product_routes_1 = require("../../../../../coupon-product-routes");
5
+ const PATCH = async (req, res) => {
6
+ return (0, coupon_product_routes_1.updateCouponProductVariant)(req, res, "admin");
7
+ };
8
+ exports.PATCH = PATCH;
9
+ exports.POST = exports.PATCH;
10
+ const DELETE = async (req, res) => {
11
+ return (0, coupon_product_routes_1.deleteCouponProductVariant)(req, res, "admin");
12
+ };
13
+ exports.DELETE = DELETE;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbi1wcm9kdWN0cy9bcHJvZHVjdF9pZF0vdmFyaWFudHMvW3ZhcmlhbnRfY29uZmlnX2lkXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxnRkFHNkM7QUFFdEMsTUFBTSxLQUFLLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3JFLE9BQU8sSUFBQSxrREFBMEIsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQ3RELENBQUMsQ0FBQTtBQUZZLFFBQUEsS0FBSyxTQUVqQjtBQUVZLFFBQUEsSUFBSSxHQUFHLGFBQUssQ0FBQTtBQUVsQixNQUFNLE1BQU0sR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDdEUsT0FBTyxJQUFBLGtEQUEwQixFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDdEQsQ0FBQyxDQUFBO0FBRlksUUFBQSxNQUFNLFVBRWxCIn0=
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PATCH = exports.POST = exports.GET = void 0;
4
+ const coupon_product_routes_1 = require("../../../../coupon-product-routes");
5
+ const GET = async (req, res) => {
6
+ return (0, coupon_product_routes_1.listCouponProductVariants)(req, res, "admin");
7
+ };
8
+ exports.GET = GET;
9
+ const POST = async (req, res) => {
10
+ return (0, coupon_product_routes_1.upsertCouponProductVariant)(req, res, "admin");
11
+ };
12
+ exports.POST = POST;
13
+ exports.PATCH = exports.POST;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbi1wcm9kdWN0cy9bcHJvZHVjdF9pZF0vdmFyaWFudHMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkVBRzBDO0FBRW5DLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNuRSxPQUFPLElBQUEsaURBQXlCLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUNyRCxDQUFDLENBQUE7QUFGWSxRQUFBLEdBQUcsT0FFZjtBQUVNLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNwRSxPQUFPLElBQUEsa0RBQTBCLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUN0RCxDQUFDLENBQUE7QUFGWSxRQUFBLElBQUksUUFFaEI7QUFFWSxRQUFBLEtBQUssR0FBRyxZQUFJLENBQUEifQ==
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DELETE = exports.POST = exports.GET = void 0;
4
+ const coupon_1 = require("../../../../../modules/coupon");
5
+ const validators_1 = require("../../../../validators");
6
+ const utils_1 = require("../../../../utils");
7
+ const product_utils_1 = require("../../../../product-utils");
8
+ const GET = async (req, res) => {
9
+ const id = (0, utils_1.readStringParam)(req.params, "id");
10
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
11
+ const config = await service.retrieveCouponProductConfig(id);
12
+ const variantConfigs = await service.listCouponProductVariantConfigs({
13
+ product_config_id: id,
14
+ });
15
+ res.json({
16
+ coupon_product_config: config,
17
+ coupon_product_variant_configs: variantConfigs,
18
+ });
19
+ };
20
+ exports.GET = GET;
21
+ const POST = async (req, res) => {
22
+ const id = (0, utils_1.readStringParam)(req.params, "id");
23
+ const body = (0, utils_1.parseBody)(validators_1.UpdateCouponProductConfigBody, req.body);
24
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
25
+ const existing = await service.retrieveCouponProductConfig(id);
26
+ let conditions = body.purchase_conditions;
27
+ let options = null;
28
+ if (conditions !== undefined) {
29
+ options = await (0, product_utils_1.listCouponProductOptions)(req);
30
+ conditions = (0, product_utils_1.validateCouponPurchaseOptions)({ ...existing, ...body }, options);
31
+ }
32
+ const config = await service.updateProductConfig(id, {
33
+ ...body,
34
+ ...(conditions !== undefined ? { purchase_conditions: conditions } : {}),
35
+ });
36
+ if (conditions !== undefined && options) {
37
+ await (0, product_utils_1.synchronizeCouponProductSalesChannels)(req, existing.product_id, (0, product_utils_1.resolveCouponSalesChannelIds)(conditions, options));
38
+ }
39
+ res.json({ coupon_product_config: config });
40
+ };
41
+ exports.POST = POST;
42
+ const DELETE = async (req, res) => {
43
+ const id = (0, utils_1.readStringParam)(req.params, "id");
44
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
45
+ const config = await service.deleteProductConfig(id);
46
+ res.json({
47
+ id: config.id,
48
+ object: "coupon_product_config",
49
+ deleted: true,
50
+ });
51
+ };
52
+ exports.DELETE = DELETE;
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbi1wcm9kdWN0cy9jb25maWdzL1tpZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMERBQTZEO0FBRTdELHVEQUFzRTtBQUN0RSw2Q0FBOEQ7QUFDOUQsNkRBS2tDO0FBRTNCLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNuRSxNQUFNLEVBQUUsR0FBRyxJQUFBLHVCQUFlLEVBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUM1QyxNQUFNLE9BQU8sR0FBd0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsc0JBQWEsQ0FBQyxDQUFBO0lBQ3JFLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQzVELE1BQU0sY0FBYyxHQUFHLE1BQU0sT0FBTyxDQUFDLCtCQUErQixDQUFDO1FBQ25FLGlCQUFpQixFQUFFLEVBQUU7S0FDZixDQUFDLENBQUE7SUFFVCxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1AscUJBQXFCLEVBQUUsTUFBTTtRQUM3Qiw4QkFBOEIsRUFBRSxjQUFjO0tBQy9DLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQTtBQVpZLFFBQUEsR0FBRyxPQVlmO0FBRU0sTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3BFLE1BQU0sRUFBRSxHQUFHLElBQUEsdUJBQWUsRUFBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzVDLE1BQU0sSUFBSSxHQUFHLElBQUEsaUJBQVMsRUFBQywwQ0FBNkIsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDL0QsTUFBTSxPQUFPLEdBQXdCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHNCQUFhLENBQUMsQ0FBQTtJQUNyRSxNQUFNLFFBQVEsR0FBRyxNQUFNLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUM5RCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUE7SUFDekMsSUFBSSxPQUFPLEdBQWdFLElBQUksQ0FBQTtJQUMvRSxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM3QixPQUFPLEdBQUcsTUFBTSxJQUFBLHdDQUF3QixFQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzdDLFVBQVUsR0FBRyxJQUFBLDZDQUE2QixFQUN4QyxFQUFFLEdBQUcsUUFBUSxFQUFFLEdBQUcsSUFBSSxFQUFTLEVBQy9CLE9BQU8sQ0FDUixDQUFBO0lBQ0gsQ0FBQztJQUNELE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsRUFBRTtRQUNuRCxHQUFHLElBQUk7UUFDUCxHQUFHLENBQUMsVUFBVSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0tBQ3pFLENBQUMsQ0FBQTtJQUNGLElBQUksVUFBVSxLQUFLLFNBQVMsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN4QyxNQUFNLElBQUEscURBQXFDLEVBQ3pDLEdBQUcsRUFDSCxRQUFRLENBQUMsVUFBVSxFQUNuQixJQUFBLDRDQUE0QixFQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FDbEQsQ0FBQTtJQUNILENBQUM7SUFFRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtBQUM3QyxDQUFDLENBQUE7QUEzQlksUUFBQSxJQUFJLFFBMkJoQjtBQUVNLE1BQU0sTUFBTSxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUN0RSxNQUFNLEVBQUUsR0FBRyxJQUFBLHVCQUFlLEVBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUM1QyxNQUFNLE9BQU8sR0FBd0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsc0JBQWEsQ0FBQyxDQUFBO0lBQ3JFLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBRXBELEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDUCxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7UUFDYixNQUFNLEVBQUUsdUJBQXVCO1FBQy9CLE9BQU8sRUFBRSxJQUFJO0tBQ2QsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBVlksUUFBQSxNQUFNLFVBVWxCIn0=
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DELETE = exports.POST = void 0;
4
+ const coupon_1 = require("../../../../../../../modules/coupon");
5
+ const validators_1 = require("../../../../../../validators");
6
+ const utils_1 = require("../../../../../../utils");
7
+ const POST = async (req, res) => {
8
+ const variantConfigId = (0, utils_1.readStringParam)(req.params, "variant_config_id");
9
+ const body = (0, utils_1.parseBody)(validators_1.UpdateCouponVariantConfigBody, req.body);
10
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
11
+ const config = await service.updateVariantConfig(variantConfigId, body);
12
+ res.json({ coupon_product_variant_config: config });
13
+ };
14
+ exports.POST = POST;
15
+ const DELETE = async (req, res) => {
16
+ const variantConfigId = (0, utils_1.readStringParam)(req.params, "variant_config_id");
17
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
18
+ await service.deleteCouponProductVariantConfigs(variantConfigId);
19
+ res.json({
20
+ id: variantConfigId,
21
+ object: "coupon_product_variant_config",
22
+ deleted: true,
23
+ });
24
+ };
25
+ exports.DELETE = DELETE;
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbi1wcm9kdWN0cy9jb25maWdzL1tpZF0vdmFyaWFudHMvW3ZhcmlhbnRfY29uZmlnX2lkXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxnRUFBbUU7QUFFbkUsNkRBQTRFO0FBQzVFLG1EQUFvRTtBQUU3RCxNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDcEUsTUFBTSxlQUFlLEdBQUcsSUFBQSx1QkFBZSxFQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLENBQUMsQ0FBQTtJQUN4RSxNQUFNLElBQUksR0FBRyxJQUFBLGlCQUFTLEVBQUMsMENBQTZCLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9ELE1BQU0sT0FBTyxHQUF3QixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxzQkFBYSxDQUFDLENBQUE7SUFDckUsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsbUJBQW1CLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBRXZFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSw2QkFBNkIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO0FBQ3JELENBQUMsQ0FBQTtBQVBZLFFBQUEsSUFBSSxRQU9oQjtBQUVNLE1BQU0sTUFBTSxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUN0RSxNQUFNLGVBQWUsR0FBRyxJQUFBLHVCQUFlLEVBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxtQkFBbUIsQ0FBQyxDQUFBO0lBQ3hFLE1BQU0sT0FBTyxHQUF3QixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxzQkFBYSxDQUFDLENBQUE7SUFDckUsTUFBTSxPQUFPLENBQUMsaUNBQWlDLENBQUMsZUFBZSxDQUFDLENBQUE7SUFFaEUsR0FBRyxDQUFDLElBQUksQ0FBQztRQUNQLEVBQUUsRUFBRSxlQUFlO1FBQ25CLE1BQU0sRUFBRSwrQkFBK0I7UUFDdkMsT0FBTyxFQUFFLElBQUk7S0FDZCxDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFWWSxRQUFBLE1BQU0sVUFVbEIifQ==
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = exports.GET = void 0;
4
+ const coupon_1 = require("../../../../../../modules/coupon");
5
+ const validators_1 = require("../../../../../validators");
6
+ const utils_1 = require("../../../../../utils");
7
+ const GET = async (req, res) => {
8
+ const id = (0, utils_1.readStringParam)(req.params, "id");
9
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
10
+ const configs = await service.listCouponProductVariantConfigs({
11
+ product_config_id: id,
12
+ });
13
+ res.json({
14
+ coupon_product_variant_configs: configs,
15
+ count: configs.length,
16
+ });
17
+ };
18
+ exports.GET = GET;
19
+ const POST = async (req, res) => {
20
+ const id = (0, utils_1.readStringParam)(req.params, "id");
21
+ const body = (0, utils_1.parseBody)(validators_1.CreateCouponVariantConfigBody, req.body);
22
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
23
+ const config = await service.createVariantConfig(id, body);
24
+ res.status(201).json({ coupon_product_variant_config: config });
25
+ };
26
+ exports.POST = POST;
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbi1wcm9kdWN0cy9jb25maWdzL1tpZF0vdmFyaWFudHMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkRBQWdFO0FBRWhFLDBEQUF5RTtBQUN6RSxnREFBaUU7QUFFMUQsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ25FLE1BQU0sRUFBRSxHQUFHLElBQUEsdUJBQWUsRUFBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzVDLE1BQU0sT0FBTyxHQUF3QixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxzQkFBYSxDQUFDLENBQUE7SUFDckUsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsK0JBQStCLENBQUM7UUFDNUQsaUJBQWlCLEVBQUUsRUFBRTtLQUNmLENBQUMsQ0FBQTtJQUVULEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDUCw4QkFBOEIsRUFBRSxPQUFPO1FBQ3ZDLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN0QixDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFYWSxRQUFBLEdBQUcsT0FXZjtBQUVNLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNwRSxNQUFNLEVBQUUsR0FBRyxJQUFBLHVCQUFlLEVBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUM1QyxNQUFNLElBQUksR0FBRyxJQUFBLGlCQUFTLEVBQUMsMENBQTZCLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9ELE1BQU0sT0FBTyxHQUF3QixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxzQkFBYSxDQUFDLENBQUE7SUFDckUsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsbUJBQW1CLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBRTFELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtBQUNqRSxDQUFDLENBQUE7QUFQWSxRQUFBLElBQUksUUFPaEIifQ==
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = exports.GET = void 0;
4
+ const coupon_1 = require("../../../../modules/coupon");
5
+ const validators_1 = require("../../../validators");
6
+ const utils_1 = require("../../../utils");
7
+ const product_utils_1 = require("../../../product-utils");
8
+ const GET = async (req, res) => {
9
+ const query = validators_1.ListCouponConfigQuery.parse(req.query);
10
+ const filters = {};
11
+ if (query.product_id)
12
+ filters.product_id = query.product_id;
13
+ if (typeof query.enabled === "boolean")
14
+ filters.enabled = query.enabled;
15
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
16
+ const configs = await service.listCouponProductConfigs(filters);
17
+ res.json({
18
+ coupon_product_configs: configs,
19
+ count: configs.length,
20
+ });
21
+ };
22
+ exports.GET = GET;
23
+ const POST = async (req, res) => {
24
+ const body = (0, utils_1.parseBody)(validators_1.CreateCouponProductConfigBody, req.body);
25
+ const options = await (0, product_utils_1.listCouponProductOptions)(req);
26
+ const conditions = (0, product_utils_1.validateCouponPurchaseOptions)(body, options);
27
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
28
+ const config = await service.createProductConfig({
29
+ ...body,
30
+ purchase_conditions: conditions,
31
+ });
32
+ await (0, product_utils_1.synchronizeCouponProductSalesChannels)(req, body.product_id, (0, product_utils_1.resolveCouponSalesChannelIds)(conditions, options));
33
+ res.status(201).json({ coupon_product_config: config });
34
+ };
35
+ exports.POST = POST;
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbi1wcm9kdWN0cy9jb25maWdzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVEQUEwRDtBQUUxRCxvREFHNEI7QUFDNUIsMENBQTBDO0FBQzFDLDBEQUsrQjtBQUV4QixNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDbkUsTUFBTSxLQUFLLEdBQUcsa0NBQXFCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNwRCxNQUFNLE9BQU8sR0FBNEIsRUFBRSxDQUFBO0lBQzNDLElBQUksS0FBSyxDQUFDLFVBQVU7UUFBRSxPQUFPLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUE7SUFDM0QsSUFBSSxPQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUztRQUFFLE9BQU8sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQTtJQUV2RSxNQUFNLE9BQU8sR0FBd0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsc0JBQWEsQ0FBQyxDQUFBO0lBQ3JFLE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLHdCQUF3QixDQUFDLE9BQWMsQ0FBQyxDQUFBO0lBRXRFLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDUCxzQkFBc0IsRUFBRSxPQUFPO1FBQy9CLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN0QixDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFiWSxRQUFBLEdBQUcsT0FhZjtBQUVNLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNwRSxNQUFNLElBQUksR0FBRyxJQUFBLGlCQUFTLEVBQUMsMENBQTZCLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9ELE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBQSx3Q0FBd0IsRUFBQyxHQUFHLENBQUMsQ0FBQTtJQUNuRCxNQUFNLFVBQVUsR0FBRyxJQUFBLDZDQUE2QixFQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUMvRCxNQUFNLE9BQU8sR0FBd0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsc0JBQWEsQ0FBQyxDQUFBO0lBQ3JFLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLG1CQUFtQixDQUFDO1FBQy9DLEdBQUcsSUFBSTtRQUNQLG1CQUFtQixFQUFFLFVBQVU7S0FDaEMsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxJQUFBLHFEQUFxQyxFQUN6QyxHQUFHLEVBQ0gsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFBLDRDQUE0QixFQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FDbEQsQ0FBQTtJQUVELEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtBQUN6RCxDQUFDLENBQUE7QUFoQlksUUFBQSxJQUFJLFFBZ0JoQiJ9
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const coupon_1 = require("../../../../../../modules/coupon");
5
+ const validators_1 = require("../../../../../validators");
6
+ const utils_1 = require("../../../../../utils");
7
+ const POST = async (req, res) => {
8
+ const id = (0, utils_1.readStringParam)(req.params, "id");
9
+ const body = (0, utils_1.parseBody)(validators_1.EntitlementActionBody, req.body);
10
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
11
+ const entitlement = await service.cancelEntitlement(id, body.metadata);
12
+ res.json({ customer_coupon_entitlement: entitlement });
13
+ };
14
+ exports.POST = POST;
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbi1wcm9kdWN0cy9lbnRpdGxlbWVudHMvW2lkXS9jYW5jZWwvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkRBQWdFO0FBRWhFLDBEQUFpRTtBQUNqRSxnREFBaUU7QUFFMUQsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3BFLE1BQU0sRUFBRSxHQUFHLElBQUEsdUJBQWUsRUFBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzVDLE1BQU0sSUFBSSxHQUFHLElBQUEsaUJBQVMsRUFBQyxrQ0FBcUIsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDdkQsTUFBTSxPQUFPLEdBQXdCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHNCQUFhLENBQUMsQ0FBQTtJQUNyRSxNQUFNLFdBQVcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRXRFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSwyQkFBMkIsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFBO0FBQ3hELENBQUMsQ0FBQTtBQVBZLFFBQUEsSUFBSSxRQU9oQiJ9
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const coupon_1 = require("../../../../../../modules/coupon");
5
+ const validators_1 = require("../../../../../validators");
6
+ const utils_1 = require("../../../../../utils");
7
+ const POST = async (req, res) => {
8
+ const id = (0, utils_1.readStringParam)(req.params, "id");
9
+ const body = (0, utils_1.parseBody)(validators_1.EntitlementActionBody, req.body);
10
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
11
+ const entitlement = await service.redeemEntitlement(id, body.metadata);
12
+ res.json({ customer_coupon_entitlement: entitlement });
13
+ };
14
+ exports.POST = POST;
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbi1wcm9kdWN0cy9lbnRpdGxlbWVudHMvW2lkXS9yZWRlZW0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNkRBQWdFO0FBRWhFLDBEQUFpRTtBQUNqRSxnREFBaUU7QUFFMUQsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3BFLE1BQU0sRUFBRSxHQUFHLElBQUEsdUJBQWUsRUFBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzVDLE1BQU0sSUFBSSxHQUFHLElBQUEsaUJBQVMsRUFBQyxrQ0FBcUIsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDdkQsTUFBTSxPQUFPLEdBQXdCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHNCQUFhLENBQUMsQ0FBQTtJQUNyRSxNQUFNLFdBQVcsR0FBRyxNQUFNLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBRXRFLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSwyQkFBMkIsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFBO0FBQ3hELENBQUMsQ0FBQTtBQVBZLFFBQUEsSUFBSSxRQU9oQiJ9
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const coupon_1 = require("../../../../../modules/coupon");
5
+ const entitlement_utils_1 = require("../../../../entitlement-utils");
6
+ const utils_1 = require("../../../../utils");
7
+ const GET = async (req, res) => {
8
+ const id = (0, utils_1.readStringParam)(req.params, "id");
9
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
10
+ const detail = await (0, entitlement_utils_1.retrieveCouponEntitlementDetail)(service, id);
11
+ const entitlement = detail.customer_coupon_entitlement;
12
+ detail.order = await (0, entitlement_utils_1.retrieveCouponOrderSummary)(req.scope, entitlement.order_id);
13
+ res.json(detail);
14
+ };
15
+ exports.GET = GET;
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbi1wcm9kdWN0cy9lbnRpdGxlbWVudHMvW2lkXS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwwREFBNkQ7QUFFN0QscUVBR3NDO0FBQ3RDLDZDQUFtRDtBQUU1QyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDbkUsTUFBTSxFQUFFLEdBQUcsSUFBQSx1QkFBZSxFQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDNUMsTUFBTSxPQUFPLEdBQXdCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHNCQUFhLENBQUMsQ0FBQTtJQUNyRSxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsbURBQStCLEVBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ2pFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQywyQkFBa0MsQ0FBQTtJQUU3RCxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sSUFBQSw4Q0FBMEIsRUFDN0MsR0FBRyxDQUFDLEtBQUssRUFDVCxXQUFXLENBQUMsUUFBUSxDQUNyQixDQUFBO0lBRUQsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNsQixDQUFDLENBQUE7QUFaWSxRQUFBLEdBQUcsT0FZZiJ9
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const coupon_1 = require("../../../../modules/coupon");
5
+ const entitlement_utils_1 = require("../../../entitlement-utils");
6
+ const GET = async (req, res) => {
7
+ const filters = {};
8
+ if (typeof req.query.product_id === "string" && req.query.product_id) {
9
+ filters.product_id = req.query.product_id;
10
+ }
11
+ if (typeof req.query.status === "string" && req.query.status) {
12
+ filters.status = req.query.status;
13
+ }
14
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
15
+ const entitlements = await (0, entitlement_utils_1.attachEntitlementSellerTargets)(service, await (0, entitlement_utils_1.listCouponEntitlements)(service, filters));
16
+ res.json({
17
+ customer_coupon_entitlements: entitlements,
18
+ count: entitlements.length,
19
+ });
20
+ };
21
+ exports.GET = GET;
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbi1wcm9kdWN0cy9lbnRpdGxlbWVudHMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsdURBQTBEO0FBRTFELGtFQUdtQztBQUU1QixNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDbkUsTUFBTSxPQUFPLEdBQTRCLEVBQUUsQ0FBQTtJQUMzQyxJQUFJLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLEtBQUssUUFBUSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDckUsT0FBTyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQTtJQUMzQyxDQUFDO0lBQ0QsSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLFFBQVEsSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQzdELE9BQU8sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUE7SUFDbkMsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUF3QixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxzQkFBYSxDQUFDLENBQUE7SUFDckUsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFBLGtEQUE4QixFQUN2RCxPQUFPLEVBQ1AsTUFBTSxJQUFBLDBDQUFzQixFQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FDL0MsQ0FBQTtJQUVELEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDUCw0QkFBNEIsRUFBRSxZQUFZO1FBQzFDLEtBQUssRUFBRSxZQUFZLENBQUMsTUFBTTtLQUMzQixDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFuQlksUUFBQSxHQUFHLE9BbUJmIn0=
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const coupon_product_routes_1 = require("../../../coupon-product-routes");
5
+ const GET = async (req, res) => {
6
+ return (0, coupon_product_routes_1.optionsForCouponProducts)(req, res, "admin");
7
+ };
8
+ exports.GET = GET;
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbi1wcm9kdWN0cy9vcHRpb25zL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDBFQUF5RTtBQUVsRSxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDbkUsT0FBTyxJQUFBLGdEQUF3QixFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7QUFDcEQsQ0FBQyxDQUFBO0FBRlksUUFBQSxHQUFHLE9BRWYifQ==
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const product_utils_1 = require("../../../product-utils");
5
+ const GET = async (req, res) => {
6
+ const products = await (0, product_utils_1.listProductPickerOptions)(req, {
7
+ q: req.query.q,
8
+ limit: req.query.limit,
9
+ });
10
+ res.json({
11
+ products,
12
+ count: products.length,
13
+ });
14
+ };
15
+ exports.GET = GET;
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbi1wcm9kdWN0cy9wcm9kdWN0cy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwwREFBaUU7QUFFMUQsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ25FLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSx3Q0FBd0IsRUFBQyxHQUFHLEVBQUU7UUFDbkQsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNkLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUs7S0FDdkIsQ0FBQyxDQUFBO0lBRUYsR0FBRyxDQUFDLElBQUksQ0FBQztRQUNQLFFBQVE7UUFDUixLQUFLLEVBQUUsUUFBUSxDQUFDLE1BQU07S0FDdkIsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBVlksUUFBQSxHQUFHLE9BVWYifQ==
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = exports.GET = void 0;
4
+ const coupon_product_routes_1 = require("../../coupon-product-routes");
5
+ const GET = async (req, res) => {
6
+ return (0, coupon_product_routes_1.listCouponProducts)(req, res, "admin");
7
+ };
8
+ exports.GET = GET;
9
+ const POST = async (req, res) => {
10
+ return (0, coupon_product_routes_1.createCouponProduct)(req, res, "admin");
11
+ };
12
+ exports.POST = POST;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbi1wcm9kdWN0cy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx1RUFHb0M7QUFFN0IsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ25FLE9BQU8sSUFBQSwwQ0FBa0IsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQzlDLENBQUMsQ0FBQTtBQUZZLFFBQUEsR0FBRyxPQUVmO0FBRU0sTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3BFLE9BQU8sSUFBQSwyQ0FBbUIsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0FBQy9DLENBQUMsQ0FBQTtBQUZZLFFBQUEsSUFBSSxRQUVoQiJ9
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const media_upload_1 = require("../../../media-upload");
5
+ const POST = (req, res) => (0, media_upload_1.uploadCouponMedia)(req, res, "admin");
6
+ exports.POST = POST;
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2NvdXBvbi1wcm9kdWN0cy91cGxvYWRzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHdEQUF5RDtBQUVsRCxNQUFNLElBQUksR0FBRyxDQUFDLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFLENBQzlELElBQUEsZ0NBQWlCLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtBQUR6QixRQUFBLElBQUksUUFDcUIifQ==