@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,225 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveCouponPromotionCodesMiddleware = resolveCouponPromotionCodesMiddleware;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const core_flows_1 = require("@medusajs/medusa/core-flows");
6
+ const coupon_1 = require("../modules/coupon");
7
+ const utils_2 = require("../modules/coupon/utils");
8
+ const seller_utils_1 = require("./seller-utils");
9
+ function requestCodes(req) {
10
+ const validated = req.validatedBody?.promo_codes;
11
+ if (Array.isArray(validated))
12
+ return validated;
13
+ const body = (req.body || {});
14
+ return Array.isArray(body.promo_codes)
15
+ ? body.promo_codes.filter((code) => typeof code === "string")
16
+ : [];
17
+ }
18
+ function setRequestCodes(req, promoCodes) {
19
+ req.body = { ...(req.body || {}), promo_codes: promoCodes };
20
+ req.validatedBody = {
21
+ ...(req.validatedBody || {}),
22
+ promo_codes: promoCodes,
23
+ };
24
+ }
25
+ async function readPromotionTarget(req) {
26
+ const id = String(req.params?.id || "").trim();
27
+ if (!id) {
28
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Cart or draft order id is required");
29
+ }
30
+ const isCart = req.path?.includes("/carts/") || req.originalUrl?.includes("/carts/");
31
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
32
+ const { data } = await query.graph({
33
+ entity: isCart ? "cart" : "order",
34
+ fields: ["id", "currency_code", "customer_id", "email"],
35
+ filters: { id },
36
+ });
37
+ const target = data?.[0];
38
+ if (!target?.currency_code) {
39
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, isCart ? "Cart was not found" : "Draft order was not found");
40
+ }
41
+ return {
42
+ currency_code: String(target.currency_code).toLowerCase(),
43
+ customer_id: target.customer_id ? String(target.customer_id) : null,
44
+ email: target.email ? String(target.email).trim().toLowerCase() : null,
45
+ };
46
+ }
47
+ function entitlementMatchesTarget(entitlement, target) {
48
+ if (entitlement.customer_id) {
49
+ return Boolean(target.customer_id && entitlement.customer_id === target.customer_id);
50
+ }
51
+ if (entitlement.email) {
52
+ return Boolean(target.email &&
53
+ String(entitlement.email).trim().toLowerCase() === target.email);
54
+ }
55
+ return true;
56
+ }
57
+ function usableEntitlement(entitlement) {
58
+ if (entitlement.status !== "issued")
59
+ return false;
60
+ if (!entitlement.expires_at)
61
+ return true;
62
+ const expiresAt = new Date(entitlement.expires_at).getTime();
63
+ return Number.isFinite(expiresAt) && expiresAt > Date.now();
64
+ }
65
+ function entitlementSort(left, right) {
66
+ const leftExpiry = left.expires_at
67
+ ? new Date(left.expires_at).getTime()
68
+ : Number.MAX_SAFE_INTEGER;
69
+ const rightExpiry = right.expires_at
70
+ ? new Date(right.expires_at).getTime()
71
+ : Number.MAX_SAFE_INTEGER;
72
+ if (leftExpiry !== rightExpiry)
73
+ return leftExpiry - rightExpiry;
74
+ return (new Date(left.created_at || 0).getTime() -
75
+ new Date(right.created_at || 0).getTime());
76
+ }
77
+ async function ensureEntitlementPromotion(req, service, entitlement, currencyCode) {
78
+ const [existing] = await service.listCouponEntitlementPromotions({
79
+ entitlement_id: entitlement.id,
80
+ currency_code: currencyCode,
81
+ });
82
+ if (existing)
83
+ return existing.internal_code;
84
+ const benefitSnapshot = entitlement.benefit_snapshot || {};
85
+ const benefitType = benefitSnapshot.benefit_type;
86
+ const fixedAmount = benefitType === "fixed_amount"
87
+ ? (0, utils_2.resolveAmountForCurrency)(benefitSnapshot, currencyCode).amount
88
+ : null;
89
+ const percentage = benefitType === "percentage"
90
+ ? Number(benefitSnapshot.percentage)
91
+ : null;
92
+ if (benefitType !== "fixed_amount" &&
93
+ (benefitType !== "percentage" ||
94
+ !Number.isFinite(percentage) ||
95
+ Number(percentage) <= 0 ||
96
+ Number(percentage) > 100)) {
97
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Issued coupon does not contain a supported discount benefit");
98
+ }
99
+ const applicationValue = fixedAmount ?? Number(percentage);
100
+ const configuredTarget = entitlement.benefit_snapshot?.promotion_template
101
+ ?.application_method?.target_type;
102
+ const targetType = configuredTarget === "order"
103
+ ? utils_1.ApplicationMethodTargetType.ORDER
104
+ : utils_1.ApplicationMethodTargetType.ITEMS;
105
+ const allocation = (0, utils_2.resolvePromotionAllocation)(entitlement.benefit_snapshot?.promotion_template, targetType === utils_1.ApplicationMethodTargetType.ORDER ? "order" : "items");
106
+ const internalCode = `CC-${entitlement.id}-${currencyCode}`.toUpperCase();
107
+ const applicationMethod = {
108
+ type: benefitType === "percentage"
109
+ ? utils_1.ApplicationMethodType.PERCENTAGE
110
+ : utils_1.ApplicationMethodType.FIXED,
111
+ value: applicationValue,
112
+ ...(benefitType === "fixed_amount" ? { currency_code: currencyCode } : {}),
113
+ target_type: targetType,
114
+ allocation: allocation === "across"
115
+ ? utils_1.ApplicationMethodAllocation.ACROSS
116
+ : allocation === "once"
117
+ ? utils_1.ApplicationMethodAllocation.ONCE
118
+ : utils_1.ApplicationMethodAllocation.EACH,
119
+ };
120
+ try {
121
+ const { result } = await (0, core_flows_1.createPromotionsWorkflow)(req.scope).run({
122
+ input: {
123
+ promotionsData: [
124
+ {
125
+ code: internalCode,
126
+ type: utils_1.PromotionType.STANDARD,
127
+ status: utils_1.PromotionStatus.ACTIVE,
128
+ is_automatic: false,
129
+ limit: 1,
130
+ metadata: {
131
+ medusa_coupon_entitlement_id: entitlement.id,
132
+ public_code: entitlement.code || entitlement.shared_code,
133
+ currency_code: currencyCode,
134
+ benefit_type: benefitType,
135
+ application_method: applicationMethod,
136
+ },
137
+ application_method: applicationMethod,
138
+ },
139
+ ],
140
+ additional_data: {
141
+ source: "medusa-coupons",
142
+ entitlement_id: entitlement.id,
143
+ },
144
+ },
145
+ });
146
+ const promotion = result[0];
147
+ const mapping = await service.createCouponEntitlementPromotions({
148
+ entitlement_id: entitlement.id,
149
+ currency_code: currencyCode,
150
+ promotion_id: promotion.id,
151
+ internal_code: internalCode,
152
+ amount: applicationValue,
153
+ metadata: {
154
+ public_code: entitlement.code || entitlement.shared_code,
155
+ benefit_type: benefitType,
156
+ application_method: applicationMethod,
157
+ },
158
+ });
159
+ return mapping.internal_code;
160
+ }
161
+ catch (error) {
162
+ const [createdByConcurrentRequest] = await service.listCouponEntitlementPromotions({
163
+ entitlement_id: entitlement.id,
164
+ currency_code: currencyCode,
165
+ });
166
+ if (createdByConcurrentRequest) {
167
+ return createdByConcurrentRequest.internal_code;
168
+ }
169
+ throw error;
170
+ }
171
+ }
172
+ async function translateCouponCode(req, service, code, target, sellerProductIds) {
173
+ const normalized = (0, utils_2.normalizeCode)(code);
174
+ if (!normalized)
175
+ return code;
176
+ const internal = await service.listCouponEntitlementPromotions({
177
+ internal_code: normalized,
178
+ });
179
+ if (internal.length)
180
+ return normalized;
181
+ const [uniqueEntitlements, sharedEntitlements] = await Promise.all([
182
+ service.listCustomerCouponEntitlements({ code: normalized }),
183
+ service.listCustomerCouponEntitlements({ shared_code: normalized }),
184
+ ]);
185
+ const candidates = [...uniqueEntitlements, ...sharedEntitlements].filter((entitlement, index, rows) => rows.findIndex((row) => row.id === entitlement.id) === index);
186
+ if (!candidates.length)
187
+ return code;
188
+ const eligible = candidates
189
+ .filter(usableEntitlement)
190
+ .filter((entitlement) => entitlementMatchesTarget(entitlement, target))
191
+ .filter((entitlement) => !sellerProductIds || sellerProductIds.has(entitlement.product_id))
192
+ .sort(entitlementSort);
193
+ const entitlement = eligible[0];
194
+ if (!entitlement) {
195
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "Coupon is not available for this customer or seller");
196
+ }
197
+ if (entitlement.benefit_snapshot?.benefit_type !== "fixed_amount" &&
198
+ entitlement.benefit_snapshot?.benefit_type !== "percentage") {
199
+ return code;
200
+ }
201
+ return ensureEntitlementPromotion(req, service, entitlement, target.currency_code);
202
+ }
203
+ async function resolveCouponPromotionCodesMiddleware(req, _res, next) {
204
+ try {
205
+ const promotionReq = req;
206
+ const codes = requestCodes(promotionReq);
207
+ if (!codes.length)
208
+ return next();
209
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
210
+ const target = await readPromotionTarget(promotionReq);
211
+ const sellerProductIds = promotionReq.seller_context?.seller_id
212
+ ? new Set(await (0, seller_utils_1.listSellerProductIds)(promotionReq))
213
+ : undefined;
214
+ const translated = [];
215
+ for (const code of codes) {
216
+ translated.push(await translateCouponCode(promotionReq, service, code, target, sellerProductIds));
217
+ }
218
+ setRequestCodes(promotionReq, translated);
219
+ next();
220
+ }
221
+ catch (error) {
222
+ next(error);
223
+ }
224
+ }
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbW90aW9uLWNvZGUtcmVzb2x2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL3Byb21vdGlvbi1jb2RlLXJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBeVJBLHNGQWdDQztBQXBURCxxREFRa0M7QUFDbEMsNERBQXNFO0FBQ3RFLDhDQUFpRDtBQUVqRCxtREFJZ0M7QUFDaEMsaURBQXFEO0FBT3JELFNBQVMsWUFBWSxDQUFDLEdBQXFCO0lBQ3pDLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFBO0lBQ2hELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFBRSxPQUFPLFNBQVMsQ0FBQTtJQUM5QyxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUE4QixDQUFBO0lBQzFELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBa0IsRUFBRSxDQUFDLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQztRQUM3RSxDQUFDLENBQUMsRUFBRSxDQUFBO0FBQ1IsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUFDLEdBQXFCLEVBQUUsVUFBb0I7SUFDbEUsR0FBRyxDQUFDLElBQUksR0FBRyxFQUFFLEdBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBWSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsQ0FBQTtJQUN2RSxHQUFHLENBQUMsYUFBYSxHQUFHO1FBQ2xCLEdBQUcsQ0FBQyxHQUFHLENBQUMsYUFBYSxJQUFJLEVBQUUsQ0FBQztRQUM1QixXQUFXLEVBQUUsVUFBVTtLQUN4QixDQUFBO0FBQ0gsQ0FBQztBQUVELEtBQUssVUFBVSxtQkFBbUIsQ0FBQyxHQUFxQjtJ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
@@ -0,0 +1,101 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ensureCouponSellerMiddleware = ensureCouponSellerMiddleware;
4
+ exports.getSellerId = getSellerId;
5
+ exports.listSellerProductIds = listSellerProductIds;
6
+ exports.assertSellerOwnsProduct = assertSellerOwnsProduct;
7
+ exports.assertSellerOwnsConfig = assertSellerOwnsConfig;
8
+ const utils_1 = require("@medusajs/framework/utils");
9
+ const SELLER_ID_HEADER = "x-seller-id";
10
+ function readHeader(req, name) {
11
+ const value = req.get?.(name) || req.headers?.[name];
12
+ return Array.isArray(value) ? value[0] : value;
13
+ }
14
+ async function ensureCouponSellerMiddleware(req, _res, next) {
15
+ try {
16
+ const sellerId = readHeader(req, SELLER_ID_HEADER) || req.session?.seller_id;
17
+ const memberId = req.auth_context?.actor_id;
18
+ if (!sellerId || !memberId) {
19
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "A seller account is required for vendor coupon routes");
20
+ }
21
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
22
+ const { data } = await query.graph({
23
+ entity: "seller_member",
24
+ fields: ["id", "seller_id", "member_id", "role_id", "seller.*"],
25
+ filters: {
26
+ seller_id: sellerId,
27
+ member_id: memberId,
28
+ },
29
+ }, {
30
+ cache: {
31
+ enable: true,
32
+ },
33
+ });
34
+ const sellerMember = data?.[0];
35
+ if (!sellerMember) {
36
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "You are not a member of this seller account");
37
+ }
38
+ req.seller_context = {
39
+ seller_id: sellerId,
40
+ seller_member: sellerMember,
41
+ currency_code: sellerMember.seller?.currency_code ?? null,
42
+ };
43
+ next();
44
+ }
45
+ catch (error) {
46
+ next(error);
47
+ }
48
+ }
49
+ function getSellerId(req) {
50
+ const sellerId = req.seller_context?.seller_id;
51
+ if (!sellerId) {
52
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_ALLOWED, "Seller context is required");
53
+ }
54
+ return sellerId;
55
+ }
56
+ async function listSellerProductIds(req) {
57
+ const sellerId = getSellerId(req);
58
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
59
+ const { data } = await query.graph({
60
+ entity: "product_seller",
61
+ fields: ["product_id", "seller_id"],
62
+ filters: {
63
+ seller_id: sellerId,
64
+ },
65
+ pagination: {
66
+ skip: 0,
67
+ take: 10000,
68
+ },
69
+ }, {
70
+ cache: {
71
+ enable: true,
72
+ },
73
+ });
74
+ return Array.from(new Set((data || []).map((row) => row.product_id).filter(Boolean)));
75
+ }
76
+ async function assertSellerOwnsProduct(req, productId) {
77
+ const sellerId = getSellerId(req);
78
+ const query = req.scope.resolve(utils_1.ContainerRegistrationKeys.QUERY);
79
+ const { data } = await query.graph({
80
+ entity: "product_seller",
81
+ fields: ["product_id", "seller_id"],
82
+ filters: {
83
+ seller_id: sellerId,
84
+ product_id: productId,
85
+ },
86
+ }, {
87
+ cache: {
88
+ enable: true,
89
+ },
90
+ });
91
+ if (!data?.length) {
92
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Product with id: ${productId} was not found`);
93
+ }
94
+ }
95
+ async function assertSellerOwnsConfig(req, config) {
96
+ if (!config.product_id) {
97
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Coupon product config was not found");
98
+ }
99
+ await assertSellerOwnsProduct(req, config.product_id);
100
+ }
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsbGVyLXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9zZWxsZXItdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFpQ0Esb0VBbURDO0FBRUQsa0NBV0M7QUFFRCxvREF5QkM7QUFFRCwwREE0QkM7QUFFRCx3REFZQztBQW5LRCxxREFHa0M7QUFrQmxDLE1BQU0sZ0JBQWdCLEdBQUcsYUFBYSxDQUFBO0FBRXRDLFNBQVMsVUFBVSxDQUFDLEdBQWtCLEVBQUUsSUFBWTtJQUNsRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUssR0FBRyxDQUFDLE9BQWUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzdELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7QUFDaEQsQ0FBQztBQUVNLEtBQUssVUFBVSw0QkFBNEIsQ0FDaEQsR0FBa0IsRUFDbEIsSUFBb0IsRUFDcEIsSUFBd0I7SUFFeEIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFBO1FBQzVFLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFBO1FBRTNDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUM3Qix1REFBdUQsQ0FDeEQsQ0FBQTtRQUNILENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENB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
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseBody = parseBody;
4
+ exports.readStringParam = readStringParam;
5
+ const utils_1 = require("@medusajs/framework/utils");
6
+ const zod_1 = require("@medusajs/framework/zod");
7
+ function parseBody(schema, body) {
8
+ try {
9
+ return schema.parse(body);
10
+ }
11
+ catch (error) {
12
+ if (error instanceof zod_1.ZodError) {
13
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, error.issues.map((issue) => issue.message).join(", "));
14
+ }
15
+ throw error;
16
+ }
17
+ }
18
+ function readStringParam(params, key) {
19
+ const value = params[key];
20
+ if (typeof value !== "string" || !value.trim()) {
21
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, `Missing route parameter: ${key}`);
22
+ }
23
+ return value.trim();
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBR0EsOEJBYUM7QUFFRCwwQ0FhQztBQS9CRCxxREFBdUQ7QUFDdkQsaURBQWtFO0FBRWxFLFNBQWdCLFNBQVMsQ0FBSSxNQUFvQixFQUFFLElBQWE7SUFDOUQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzNCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLFlBQVksY0FBUSxFQUFFLENBQUM7WUFDOUIsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQ3RELENBQUE7UUFDSCxDQUFDO1FBRUQsTUFBTSxLQUFLLENBQUE7SUFDYixDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQWdCLGVBQWUsQ0FDN0IsTUFBK0IsRUFDL0IsR0FBVztJQUVYLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUN6QixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1FBQy9DLE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQzlCLDRCQUE0QixHQUFHLEVBQUUsQ0FDbEMsQ0FBQTtJQUNILENBQUM7SUFFRCxPQUFPLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtBQUNyQixDQUFDIn0=
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UpsertCouponProductVariantBody = exports.UpdateCouponProductBody = exports.CreateCouponProductBody = exports.CouponVariantOverrideInput = exports.CouponCampaignInput = exports.CouponProductInput = exports.EntitlementActionBody = exports.ListCouponConfigQuery = exports.UpdateCouponVariantConfigBody = exports.CreateCouponVariantConfigBody = exports.UpdateCouponProductConfigBody = exports.CreateCouponProductConfigBody = exports.CouponConfigFields = void 0;
4
+ const zod_1 = require("@medusajs/framework/zod");
5
+ const expirationPolicy = zod_1.z.union([
6
+ zod_1.z.object({
7
+ type: zod_1.z.literal("none"),
8
+ }),
9
+ zod_1.z.object({
10
+ type: zod_1.z.literal("duration"),
11
+ duration_days: zod_1.z.number().int().positive(),
12
+ cap_by_campaign: zod_1.z.boolean().optional(),
13
+ cap_at: zod_1.z.string().datetime().nullable().optional(),
14
+ }),
15
+ zod_1.z.object({
16
+ type: zod_1.z.literal("fixed"),
17
+ expires_at: zod_1.z.string().datetime(),
18
+ cap_by_campaign: zod_1.z.boolean().optional(),
19
+ cap_at: zod_1.z.string().datetime().nullable().optional(),
20
+ }),
21
+ ]);
22
+ const metadata = zod_1.z.record(zod_1.z.unknown()).nullable().optional();
23
+ const couponAmount = zod_1.z.object({
24
+ currency_code: zod_1.z.string().trim().length(3),
25
+ amount: zod_1.z.number().positive(),
26
+ });
27
+ const couponPurchaseCondition = zod_1.z
28
+ .object({
29
+ attribute: zod_1.z.enum([
30
+ "customer.groups.id",
31
+ "region.id",
32
+ "shipping_address.country_code",
33
+ "sales_channel_id",
34
+ "currency_code",
35
+ ]),
36
+ operator: zod_1.z.enum(["in", "eq", "ne"]),
37
+ values: zod_1.z.array(zod_1.z.string().trim().min(1)).min(1),
38
+ })
39
+ .refine((condition) => condition.operator !== "eq" || condition.values.length === 1, "Equals purchase conditions require exactly one value");
40
+ const purchaseConditions = zod_1.z
41
+ .array(couponPurchaseCondition)
42
+ .superRefine((conditions, context) => {
43
+ const seen = new Set();
44
+ conditions.forEach((condition, index) => {
45
+ if (seen.has(condition.attribute)) {
46
+ context.addIssue({
47
+ code: zod_1.z.ZodIssueCode.custom,
48
+ message: `Purchase condition attribute ${condition.attribute} cannot be duplicated`,
49
+ path: [index, "attribute"],
50
+ });
51
+ }
52
+ seen.add(condition.attribute);
53
+ });
54
+ });
55
+ const CouponBaseConfigFields = zod_1.z.object({
56
+ enabled: zod_1.z.boolean().optional(),
57
+ benefit_type: zod_1.z
58
+ .enum(["fixed_amount", "percentage", "free_shipping", "buy_get"])
59
+ .optional(),
60
+ amounts: zod_1.z.array(couponAmount).min(1).nullable().optional(),
61
+ amount: zod_1.z.number().positive().nullable().optional(),
62
+ percentage: zod_1.z.number().positive().max(100).nullable().optional(),
63
+ currency_code: zod_1.z.string().trim().length(3).nullable().optional(),
64
+ code_strategy: zod_1.z.enum(["unique_code", "shared_code"]).optional(),
65
+ code_prefix: zod_1.z.string().trim().nullable().optional(),
66
+ shared_code: zod_1.z.string().trim().nullable().optional(),
67
+ expiration_policy: expirationPolicy.optional(),
68
+ max_issuance_per_order_item: zod_1.z.number().int().positive().nullable().optional(),
69
+ promotion_mirror_mode: zod_1.z.enum(["none", "manual", "auto"]).optional(),
70
+ promotion_status: zod_1.z.enum(["draft", "active", "inactive"]).nullable().optional(),
71
+ promotion_template: zod_1.z.record(zod_1.z.unknown()).nullable().optional(),
72
+ campaign_mode: zod_1.z.enum(["none", "existing", "new"]).nullable().optional(),
73
+ campaign_id: zod_1.z.string().trim().nullable().optional(),
74
+ campaign_snapshot: zod_1.z.record(zod_1.z.unknown()).nullable().optional(),
75
+ metadata,
76
+ });
77
+ exports.CouponConfigFields = CouponBaseConfigFields.extend({
78
+ purchase_conditions: purchaseConditions.nullable().optional(),
79
+ });
80
+ exports.CreateCouponProductConfigBody = exports.CouponConfigFields.extend({
81
+ product_id: zod_1.z.string().trim().min(1),
82
+ benefit_type: zod_1.z
83
+ .enum(["fixed_amount", "percentage", "free_shipping", "buy_get"])
84
+ .default("fixed_amount"),
85
+ code_strategy: zod_1.z.enum(["unique_code", "shared_code"]).default("unique_code"),
86
+ expiration_policy: expirationPolicy,
87
+ });
88
+ exports.UpdateCouponProductConfigBody = exports.CouponConfigFields.refine((value) => Object.keys(value).length > 0, "At least one field is required");
89
+ exports.CreateCouponVariantConfigBody = CouponBaseConfigFields.extend({
90
+ variant_id: zod_1.z.string().trim().min(1),
91
+ });
92
+ exports.UpdateCouponVariantConfigBody = CouponBaseConfigFields.refine((value) => Object.keys(value).length > 0, "At least one field is required");
93
+ exports.ListCouponConfigQuery = zod_1.z.object({
94
+ product_id: zod_1.z.string().optional(),
95
+ enabled: zod_1.z
96
+ .union([zod_1.z.boolean(), zod_1.z.enum(["true", "false"])])
97
+ .optional()
98
+ .transform((value) => {
99
+ if (value === "true")
100
+ return true;
101
+ if (value === "false")
102
+ return false;
103
+ return value;
104
+ }),
105
+ });
106
+ exports.EntitlementActionBody = zod_1.z.object({
107
+ metadata: zod_1.z.record(zod_1.z.unknown()).nullable().optional(),
108
+ });
109
+ const productReference = zod_1.z.object({
110
+ id: zod_1.z.string().trim().min(1),
111
+ });
112
+ const productPrice = zod_1.z.object({
113
+ currency_code: zod_1.z.string().trim().length(3),
114
+ amount: zod_1.z.number().nonnegative(),
115
+ });
116
+ const productVariant = zod_1.z.object({
117
+ title: zod_1.z.string().trim().min(1),
118
+ sku: zod_1.z.string().trim().nullable().optional(),
119
+ manage_inventory: zod_1.z.boolean().optional(),
120
+ allow_backorder: zod_1.z.boolean().optional(),
121
+ options: zod_1.z.record(zod_1.z.string()).optional(),
122
+ prices: zod_1.z.array(productPrice).min(1),
123
+ metadata: zod_1.z.record(zod_1.z.unknown()).nullable().optional(),
124
+ });
125
+ exports.CouponProductInput = zod_1.z.object({
126
+ title: zod_1.z.string().trim().min(1),
127
+ subtitle: zod_1.z.string().trim().nullable().optional(),
128
+ handle: zod_1.z.string().trim().nullable().optional(),
129
+ description: zod_1.z.string().trim().nullable().optional(),
130
+ status: zod_1.z.enum(["draft", "proposed", "published", "rejected"]).default("draft"),
131
+ thumbnail: zod_1.z.string().trim().nullable().optional(),
132
+ thumbnail_asset_id: zod_1.z.string().trim().min(1).nullable().optional(),
133
+ images: zod_1.z
134
+ .array(zod_1.z
135
+ .object({
136
+ url: zod_1.z.string().trim().min(1).optional(),
137
+ asset_id: zod_1.z.string().trim().min(1).optional(),
138
+ })
139
+ .refine((image) => image.url || image.asset_id, {
140
+ message: "An image URL or managed asset id is required",
141
+ }))
142
+ .optional(),
143
+ discountable: zod_1.z.boolean().optional(),
144
+ type_id: zod_1.z.string().trim().nullable().optional(),
145
+ collection_id: zod_1.z.string().trim().nullable().optional(),
146
+ shipping_profile_id: zod_1.z.string().trim().nullable().optional(),
147
+ categories: zod_1.z.array(productReference).optional(),
148
+ tags: zod_1.z.array(productReference).optional(),
149
+ sales_channels: zod_1.z.array(productReference).optional(),
150
+ options: zod_1.z
151
+ .array(zod_1.z.object({
152
+ title: zod_1.z.string().trim().min(1),
153
+ values: zod_1.z.array(zod_1.z.string().trim().min(1)).min(1),
154
+ }))
155
+ .optional(),
156
+ variants: zod_1.z.array(productVariant).min(1),
157
+ metadata: zod_1.z.record(zod_1.z.unknown()).nullable().optional(),
158
+ });
159
+ exports.CouponCampaignInput = zod_1.z.object({
160
+ mode: zod_1.z.enum(["none", "existing", "new"]).default("none"),
161
+ campaign_id: zod_1.z.string().trim().nullable().optional(),
162
+ campaign: zod_1.z
163
+ .object({
164
+ name: zod_1.z.string().trim().min(1),
165
+ campaign_identifier: zod_1.z.string().trim().min(1),
166
+ description: zod_1.z.string().trim().nullable().optional(),
167
+ starts_at: zod_1.z.string().datetime().nullable().optional(),
168
+ ends_at: zod_1.z.string().datetime().nullable().optional(),
169
+ budget: zod_1.z.record(zod_1.z.unknown()).nullable().optional(),
170
+ })
171
+ .nullable()
172
+ .optional(),
173
+ });
174
+ exports.CouponVariantOverrideInput = CouponBaseConfigFields.extend({
175
+ variant_id: zod_1.z.string().trim().min(1).optional(),
176
+ variant_index: zod_1.z.number().int().nonnegative().optional(),
177
+ });
178
+ exports.CreateCouponProductBody = zod_1.z.object({
179
+ product: exports.CouponProductInput,
180
+ coupon: exports.CouponConfigFields.extend({
181
+ benefit_type: zod_1.z
182
+ .enum(["fixed_amount", "percentage", "free_shipping", "buy_get"])
183
+ .default("fixed_amount"),
184
+ code_strategy: zod_1.z.enum(["unique_code", "shared_code"]).default("unique_code"),
185
+ expiration_policy: expirationPolicy,
186
+ }),
187
+ campaign: exports.CouponCampaignInput.optional(),
188
+ variant_overrides: zod_1.z.array(exports.CouponVariantOverrideInput).optional(),
189
+ seller_id: zod_1.z.string().trim().nullable().optional(),
190
+ });
191
+ exports.UpdateCouponProductBody = zod_1.z.object({
192
+ product: exports.CouponProductInput.partial().optional(),
193
+ coupon: exports.UpdateCouponProductConfigBody.optional(),
194
+ campaign: exports.CouponCampaignInput.optional(),
195
+ });
196
+ exports.UpsertCouponProductVariantBody = exports.CouponVariantOverrideInput.extend({
197
+ variant_id: zod_1.z.string().trim().min(1),
198
+ });
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvdmFsaWRhdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpREFBMkM7QUFFM0MsTUFBTSxnQkFBZ0IsR0FBRyxPQUFDLENBQUMsS0FBSyxDQUFDO0lBQy9CLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxJQUFJLEVBQUUsT0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7S0FDeEIsQ0FBQztJQUNGLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxJQUFJLEVBQUUsT0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDM0IsYUFBYSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxRQUFRLEVBQUU7UUFDMUMsZUFBZSxFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7UUFDdkMsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7S0FDcEQsQ0FBQztJQUNGLE9BQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxJQUFJLEVBQUUsT0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDeEIsVUFBVSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7UUFDakMsZUFBZSxFQUFFLE9BQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUU7UUFDdkMsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLEVBQUU7S0FDcEQsQ0FBQztDQUNILENBQUMsQ0FBQTtBQUVGLE1BQU0sUUFBUSxHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUMsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFF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
@@ -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, "vendor");
7
+ };
8
+ exports.GET = GET;
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3ZlbmRvci9jb3Vwb24tcHJvZHVjdHMvW3Byb2R1Y3RfaWRdL2VudGl0bGVtZW50cy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSw2RUFBMkU7QUFFcEUsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ25FLE9BQU8sSUFBQSwrQ0FBdUIsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBQ3BELENBQUMsQ0FBQTtBQUZZLFFBQUEsR0FBRyxPQUVmIn0=
@@ -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, "vendor");
7
+ };
8
+ exports.GET = GET;
9
+ const PATCH = async (req, res) => {
10
+ return (0, coupon_product_routes_1.updateCouponProduct)(req, res, "vendor");
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, "vendor");
16
+ };
17
+ exports.DELETE = DELETE;
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3ZlbmRvci9jb3Vwb24tcHJvZHVjdHMvW3Byb2R1Y3RfaWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDBFQUl1QztBQUVoQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDbkUsT0FBTyxJQUFBLDZDQUFxQixFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFDbEQsQ0FBQyxDQUFBO0FBRlksUUFBQSxHQUFHLE9BRWY7QUFFTSxNQUFNLEtBQUssR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDckUsT0FBTyxJQUFBLDJDQUFtQixFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFDaEQsQ0FBQyxDQUFBO0FBRlksUUFBQSxLQUFLLFNBRWpCO0FBRVksUUFBQSxJQUFJLEdBQUcsYUFBSyxDQUFBO0FBRWxCLE1BQU0sTUFBTSxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUN0RSxPQUFPLElBQUEsMkNBQW1CLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQTtBQUNoRCxDQUFDLENBQUE7QUFGWSxRQUFBLE1BQU0sVUFFbEIifQ==
@@ -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, "vendor");
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, "vendor");
12
+ };
13
+ exports.DELETE = DELETE;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3ZlbmRvci9jb3Vwb24tcHJvZHVjdHMvW3Byb2R1Y3RfaWRdL3ZhcmlhbnRzL1t2YXJpYW50X2NvbmZpZ19pZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsZ0ZBRzZDO0FBRXRDLE1BQU0sS0FBSyxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNyRSxPQUFPLElBQUEsa0RBQTBCLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQTtBQUN2RCxDQUFDLENBQUE7QUFGWSxRQUFBLEtBQUssU0FFakI7QUFFWSxRQUFBLElBQUksR0FBRyxhQUFLLENBQUE7QUFFbEIsTUFBTSxNQUFNLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3RFLE9BQU8sSUFBQSxrREFBMEIsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBQ3ZELENBQUMsQ0FBQTtBQUZZLFFBQUEsTUFBTSxVQUVsQiJ9