@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,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, "vendor");
7
+ };
8
+ exports.GET = GET;
9
+ const POST = async (req, res) => {
10
+ return (0, coupon_product_routes_1.upsertCouponProductVariant)(req, res, "vendor");
11
+ };
12
+ exports.POST = POST;
13
+ exports.PATCH = exports.POST;
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3ZlbmRvci9jb3Vwb24tcHJvZHVjdHMvW3Byb2R1Y3RfaWRdL3ZhcmlhbnRzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDZFQUcwQztBQUVuQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDbkUsT0FBTyxJQUFBLGlEQUF5QixFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFDdEQsQ0FBQyxDQUFBO0FBRlksUUFBQSxHQUFHLE9BRWY7QUFFTSxNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDcEUsT0FBTyxJQUFBLGtEQUEwQixFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFDdkQsQ0FBQyxDQUFBO0FBRlksUUFBQSxJQUFJLFFBRWhCO0FBRVksUUFBQSxLQUFLLEdBQUcsWUFBSSxDQUFBIn0=
@@ -0,0 +1,60 @@
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 seller_utils_1 = require("../../../../seller-utils");
8
+ const product_utils_1 = require("../../../../product-utils");
9
+ const GET = async (req, res) => {
10
+ const id = (0, utils_1.readStringParam)(req.params, "id");
11
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
12
+ const config = await service.retrieveCouponProductConfig(id);
13
+ await (0, seller_utils_1.assertSellerOwnsConfig)(req, config);
14
+ const variantConfigs = await service.listCouponProductVariantConfigs({
15
+ product_config_id: id,
16
+ });
17
+ res.json({
18
+ coupon_product_config: config,
19
+ coupon_product_variant_configs: variantConfigs,
20
+ });
21
+ };
22
+ exports.GET = GET;
23
+ const POST = async (req, res) => {
24
+ const id = (0, utils_1.readStringParam)(req.params, "id");
25
+ const body = (0, utils_1.parseBody)(validators_1.UpdateCouponProductConfigBody, req.body);
26
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
27
+ const existing = await service.retrieveCouponProductConfig(id);
28
+ await (0, seller_utils_1.assertSellerOwnsConfig)(req, existing);
29
+ let conditions = body.purchase_conditions;
30
+ let options = null;
31
+ if (conditions !== undefined) {
32
+ const sellerId = (0, seller_utils_1.getSellerId)(req);
33
+ const productIds = await (0, seller_utils_1.listSellerProductIds)(req);
34
+ options = await (0, product_utils_1.listCouponProductOptions)(req, productIds, sellerId);
35
+ conditions = (0, product_utils_1.validateCouponPurchaseOptions)({ ...existing, ...body }, options);
36
+ }
37
+ const config = await service.updateProductConfig(id, {
38
+ ...body,
39
+ ...(conditions !== undefined ? { purchase_conditions: conditions } : {}),
40
+ });
41
+ if (conditions !== undefined && options) {
42
+ await (0, product_utils_1.synchronizeCouponProductSalesChannels)(req, existing.product_id, (0, product_utils_1.resolveCouponSalesChannelIds)(conditions, options), (0, seller_utils_1.getSellerId)(req));
43
+ }
44
+ res.json({ coupon_product_config: config });
45
+ };
46
+ exports.POST = POST;
47
+ const DELETE = async (req, res) => {
48
+ const id = (0, utils_1.readStringParam)(req.params, "id");
49
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
50
+ const existing = await service.retrieveCouponProductConfig(id);
51
+ await (0, seller_utils_1.assertSellerOwnsConfig)(req, existing);
52
+ const config = await service.deleteProductConfig(id);
53
+ res.json({
54
+ id: config.id,
55
+ object: "coupon_product_config",
56
+ deleted: true,
57
+ });
58
+ };
59
+ exports.DELETE = DELETE;
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3ZlbmRvci9jb3Vwb24tcHJvZHVjdHMvY29uZmlncy9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDBEQUE2RDtBQUU3RCx1REFBc0U7QUFDdEUsNkNBQThEO0FBQzlELDJEQUlpQztBQUNqQyw2REFLa0M7QUFFM0IsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ25FLE1BQU0sRUFBRSxHQUFHLElBQUEsdUJBQWUsRUFBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzVDLE1BQU0sT0FBTyxHQUF3QixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxzQkFBYSxDQUFDLENBQUE7SUFDckUsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsMkJBQTJCLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDNUQsTUFBTSxJQUFBLHFDQUFzQixFQUFDLEdBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUVoRCxNQUFNLGNBQWMsR0FBRyxNQUFNLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQztRQUNuRSxpQkFBaUIsRUFBRSxFQUFFO0tBQ2YsQ0FBQyxDQUFBO0lBRVQsR0FBRyxDQUFDLElBQUksQ0FBQztRQUNQLHFCQUFxQixFQUFFLE1BQU07UUFDN0IsOEJBQThCLEVBQUUsY0FBYztLQUMvQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFkWSxRQUFBLEdBQUcsT0FjZjtBQUVNLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNwRSxNQUFNLEVBQUUsR0FBRyxJQUFBLHVCQUFlLEVBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUM1QyxNQUFNLElBQUksR0FBRyxJQUFBLGlCQUFTLEVBQUMsMENBQTZCLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9ELE1BQU0sT0FBTyxHQUF3QixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxzQkFBYSxDQUFDLENBQUE7SUFDckUsTUFBTSxRQUFRLEdBQUcsTUFBTSxPQUFPLENBQUMsMkJBQTJCLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDOUQsTUFBTSxJQUFBLHFDQUFzQixFQUFDLEdBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUVsRCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUE7SUFDekMsSUFBSSxPQUFPLEdBQWdFLElBQUksQ0FBQTtJQUMvRSxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM3QixNQUFNLFFBQVEsR0FBRyxJQUFBLDBCQUFXLEVBQUMsR0FBVSxDQUFDLENBQUE7UUFDeEMsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFBLG1DQUFvQixFQUFDLEdBQVUsQ0FBQyxDQUFBO1FBQ3pELE9BQU8sR0FBRyxNQUFNLElBQUEsd0NBQXdCLEVBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQTtRQUNuRSxVQUFVLEdBQUcsSUFBQSw2Q0FBNkIsRUFDeEMsRUFBRSxHQUFHLFFBQVEsRUFBRSxHQUFHLElBQUksRUFBUyxFQUMvQixPQUFPLENBQ1IsQ0FBQTtJQUNILENBQUM7SUFDRCxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUU7UUFDbkQsR0FBRyxJQUFJO1FBQ1AsR0FBRyxDQUFDLFVBQVUsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztLQUN6RSxDQUFDLENBQUE7SUFDRixJQUFJLFVBQVUsS0FBSyxTQUFTLElBQUksT0FBTyxFQUFFLENBQUM7UUFDeEMsTUFBTSxJQUFBLHFEQUFxQyxFQUN6QyxHQUFHLEVBQ0gsUUFBUSxDQUFDLFVBQVUsRUFDbkIsSUFBQSw0Q0FBNEIsRUFBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQ2pELElBQUEsMEJBQVcsRUFBQyxHQUFVLENBQUMsQ0FDeEIsQ0FBQTtJQUNILENBQUM7SUFFRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQTtBQUM3QyxDQUFDLENBQUE7QUFoQ1ksUUFBQSxJQUFJLFFBZ0NoQjtBQUVNLE1BQU0sTUFBTSxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUN0RSxNQUFNLEVBQUUsR0FBRyxJQUFBLHVCQUFlLEVBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUM1QyxNQUFNLE9BQU8sR0FBd0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsc0JBQWEsQ0FBQyxDQUFBO0lBQ3JFLE1BQU0sUUFBUSxHQUFHLE1BQU0sT0FBTyxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQzlELE1BQU0sSUFBQSxxQ0FBc0IsRUFBQyxHQUFVLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFFbEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFcEQsR0FBRyxDQUFDLElBQUksQ0FBQztRQUNQLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRTtRQUNiLE1BQU0sRUFBRSx1QkFBdUI7UUFDL0IsT0FBTyxFQUFFLElBQUk7S0FDZCxDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFiWSxRQUFBLE1BQU0sVUFhbEIifQ==
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DELETE = exports.POST = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const coupon_1 = require("../../../../../../../modules/coupon");
6
+ const validators_1 = require("../../../../../../validators");
7
+ const utils_2 = require("../../../../../../utils");
8
+ const seller_utils_1 = require("../../../../../../seller-utils");
9
+ async function assertSellerOwnsVariantConfig(req, service, productConfigId, variantConfigId) {
10
+ const productConfig = await service.retrieveCouponProductConfig(productConfigId);
11
+ await (0, seller_utils_1.assertSellerOwnsConfig)(req, productConfig);
12
+ const variantConfig = await service.retrieveCouponProductVariantConfig(variantConfigId);
13
+ if (variantConfig.product_config_id !== productConfigId) {
14
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, "Coupon product variant config was not found");
15
+ }
16
+ return variantConfig;
17
+ }
18
+ const POST = async (req, res) => {
19
+ const id = (0, utils_2.readStringParam)(req.params, "id");
20
+ const variantConfigId = (0, utils_2.readStringParam)(req.params, "variant_config_id");
21
+ const body = (0, utils_2.parseBody)(validators_1.UpdateCouponVariantConfigBody, req.body);
22
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
23
+ await assertSellerOwnsVariantConfig(req, service, id, variantConfigId);
24
+ const config = await service.updateVariantConfig(variantConfigId, body);
25
+ res.json({ coupon_product_variant_config: config });
26
+ };
27
+ exports.POST = POST;
28
+ const DELETE = async (req, res) => {
29
+ const id = (0, utils_2.readStringParam)(req.params, "id");
30
+ const variantConfigId = (0, utils_2.readStringParam)(req.params, "variant_config_id");
31
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
32
+ await assertSellerOwnsVariantConfig(req, service, id, variantConfigId);
33
+ await service.deleteCouponProductVariantConfigs(variantConfigId);
34
+ res.json({
35
+ id: variantConfigId,
36
+ object: "coupon_product_variant_config",
37
+ deleted: true,
38
+ });
39
+ };
40
+ exports.DELETE = DELETE;
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3ZlbmRvci9jb3Vwb24tcHJvZHVjdHMvY29uZmlncy9baWRdL3ZhcmlhbnRzL1t2YXJpYW50X2NvbmZpZ19pZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EscURBQXVEO0FBQ3ZELGdFQUFtRTtBQUVuRSw2REFBNEU7QUFDNUUsbURBQW9FO0FBQ3BFLGlFQUF1RTtBQUV2RSxLQUFLLFVBQVUsNkJBQTZCLENBQzFDLEdBQWtCLEVBQ2xCLE9BQTRCLEVBQzVCLGVBQXVCLEVBQ3ZCLGVBQXVCO0lBRXZCLE1BQU0sYUFBYSxHQUFHLE1BQU0sT0FBTyxDQUFDLDJCQUEyQixDQUFDLGVBQWUsQ0FBQyxDQUFBO0lBQ2hGLE1BQU0sSUFBQSxxQ0FBc0IsRUFBQyxHQUFVLEVBQUUsYUFBYSxDQUFDLENBQUE7SUFDdkQsTUFBTSxhQUFhLEdBQ2pCLE1BQU0sT0FBTyxDQUFDLGtDQUFrQyxDQUFDLGVBQWUsQ0FBQyxDQUFBO0lBRW5FLElBQUksYUFBYSxDQUFDLGlCQUFpQixLQUFLLGVBQWUsRUFBRSxDQUFDO1FBQ3hELE1BQU0sSUFBSSxtQkFBVyxDQUNuQixtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQzNCLDZDQUE2QyxDQUM5QyxDQUFBO0lBQ0gsQ0FBQztJQUVELE9BQU8sYUFBYSxDQUFBO0FBQ3RCLENBQUM7QUFFTSxNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDcEUsTUFBTSxFQUFFLEdBQUcsSUFBQSx1QkFBZSxFQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDNUMsTUFBTSxlQUFlLEdBQUcsSUFBQSx1QkFBZSxFQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsbUJBQW1CLENBQUMsQ0FBQTtJQUN4RSxNQUFNLElBQUksR0FBRyxJQUFBLGlCQUFTLEVBQUMsMENBQTZCLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9ELE1BQU0sT0FBTyxHQUF3QixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxzQkFBYSxDQUFDLENBQUE7SUFDckUsTUFBTSw2QkFBNkIsQ0FBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQTtJQUV0RSxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFFdkUsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUE7QUFDckQsQ0FBQyxDQUFBO0FBVlksUUFBQSxJQUFJLFFBVWhCO0FBRU0sTUFBTSxNQUFNLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ3RFLE1BQU0sRUFBRSxHQUFHLElBQUEsdUJBQWUsRUFBQyxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQzVDLE1BQU0sZUFBZSxHQUFHLElBQUEsdUJBQWUsRUFBQyxHQUFHLENBQUMsTUFBTSxFQUFFLG1CQUFtQixDQUFDLENBQUE7SUFDeEUsTUFBTSxPQUFPLEdBQXdCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHNCQUFhLENBQUMsQ0FBQTtJQUNyRSxNQUFNLDZCQUE2QixDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLGVBQWUsQ0FBQyxDQUFBO0lBQ3RFLE1BQU0sT0FBTyxDQUFDLGlDQUFpQyxDQUFDLGVBQWUsQ0FBQyxDQUFBO0lBRWhFLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDUCxFQUFFLEVBQUUsZUFBZTtRQUNuQixNQUFNLEVBQUUsK0JBQStCO1FBQ3ZDLE9BQU8sRUFBRSxJQUFJO0tBQ2QsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBWlksUUFBQSxNQUFNLFVBWWxCIn0=
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = exports.GET = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const coupon_1 = require("../../../../../../modules/coupon");
6
+ const product_utils_1 = require("../../../../../product-utils");
7
+ const validators_1 = require("../../../../../validators");
8
+ const utils_2 = require("../../../../../utils");
9
+ const seller_utils_1 = require("../../../../../seller-utils");
10
+ async function assertVariantBelongsToConfigProduct(req, productId, variantId) {
11
+ const products = await (0, product_utils_1.listProductPickerOptions)(req, {
12
+ productIds: [productId],
13
+ limit: 1,
14
+ });
15
+ const variant = products[0]?.variants?.find((candidate) => candidate.id === variantId);
16
+ if (!variant) {
17
+ throw new utils_1.MedusaError(utils_1.MedusaError.Types.NOT_FOUND, `Product variant with id: ${variantId} was not found`);
18
+ }
19
+ }
20
+ const GET = async (req, res) => {
21
+ const id = (0, utils_2.readStringParam)(req.params, "id");
22
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
23
+ const config = await service.retrieveCouponProductConfig(id);
24
+ await (0, seller_utils_1.assertSellerOwnsConfig)(req, config);
25
+ const configs = await service.listCouponProductVariantConfigs({
26
+ product_config_id: id,
27
+ });
28
+ res.json({
29
+ coupon_product_variant_configs: configs,
30
+ count: configs.length,
31
+ });
32
+ };
33
+ exports.GET = GET;
34
+ const POST = async (req, res) => {
35
+ const id = (0, utils_2.readStringParam)(req.params, "id");
36
+ const body = (0, utils_2.parseBody)(validators_1.CreateCouponVariantConfigBody, req.body);
37
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
38
+ const config = await service.retrieveCouponProductConfig(id);
39
+ await (0, seller_utils_1.assertSellerOwnsConfig)(req, config);
40
+ await assertVariantBelongsToConfigProduct(req, config.product_id, body.variant_id);
41
+ const variantConfig = await service.createVariantConfig(id, body);
42
+ res.status(201).json({ coupon_product_variant_config: variantConfig });
43
+ };
44
+ exports.POST = POST;
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3ZlbmRvci9jb3Vwb24tcHJvZHVjdHMvY29uZmlncy9baWRdL3ZhcmlhbnRzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFEQUF1RDtBQUN2RCw2REFBZ0U7QUFFaEUsZ0VBQXVFO0FBQ3ZFLDBEQUF5RTtBQUN6RSxnREFBaUU7QUFDakUsOERBQW9FO0FBRXBFLEtBQUssVUFBVSxtQ0FBbUMsQ0FDaEQsR0FBa0IsRUFDbEIsU0FBaUIsRUFDakIsU0FBaUI7SUFFakIsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLHdDQUF3QixFQUFDLEdBQUcsRUFBRTtRQUNuRCxVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUM7UUFDdkIsS0FBSyxFQUFFLENBQUM7S0FDVCxDQUFDLENBQUE7SUFDRixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FDekMsQ0FBQyxTQUFjLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUMvQyxDQUFBO0lBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDM0IsNEJBQTRCLFNBQVMsZ0JBQWdCLENBQ3RELENBQUE7SUFDSCxDQUFDO0FBQ0gsQ0FBQztBQUVNLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNuRSxNQUFNLEVBQUUsR0FBRyxJQUFBLHVCQUFlLEVBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUM1QyxNQUFNLE9BQU8sR0FBd0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsc0JBQWEsQ0FBQyxDQUFBO0lBQ3JFLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLDJCQUEyQixDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQzVELE1BQU0sSUFBQSxxQ0FBc0IsRUFBQyxHQUFVLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFFaEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFPLENBQUMsK0JBQStCLENBQUM7UUFDNUQsaUJBQWlCLEVBQUUsRUFBRTtLQUNmLENBQUMsQ0FBQTtJQUVULEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDUCw4QkFBOEIsRUFBRSxPQUFPO1FBQ3ZDLEtBQUssRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN0QixDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFkWSxRQUFBLEdBQUcsT0FjZjtBQUVNLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNwRSxNQUFNLEVBQUUsR0FBRyxJQUFBLHVCQUFlLEVBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUM1QyxNQUFNLElBQUksR0FBRyxJQUFBLGlCQUFTLEVBQUMsMENBQTZCLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9ELE1BQU0sT0FBTyxHQUF3QixHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxzQkFBYSxDQUFDLENBQUE7SUFDckUsTUFBTSxNQUFNLEdBQUcsTUFBTSxPQUFPLENBQUMsMkJBQTJCLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDNUQsTUFBTSxJQUFBLHFDQUFzQixFQUFDLEdBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUNoRCxNQUFNLG1DQUFtQyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUVsRixNQUFNLGFBQWEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFFakUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSw2QkFBNkIsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFBO0FBQ3hFLENBQUMsQ0FBQTtBQVhZLFFBQUEsSUFBSSxRQVdoQiJ9
@@ -0,0 +1,51 @@
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 seller_utils_1 = require("../../../seller-utils");
8
+ const product_utils_1 = require("../../../product-utils");
9
+ const GET = async (req, res) => {
10
+ const query = validators_1.ListCouponConfigQuery.parse(req.query);
11
+ const productIds = await (0, seller_utils_1.listSellerProductIds)(req);
12
+ if (!productIds.length) {
13
+ res.json({
14
+ coupon_product_configs: [],
15
+ count: 0,
16
+ });
17
+ return;
18
+ }
19
+ if (query.product_id) {
20
+ await (0, seller_utils_1.assertSellerOwnsProduct)(req, query.product_id);
21
+ }
22
+ const filters = {
23
+ product_id: query.product_id || productIds,
24
+ };
25
+ if (typeof query.enabled === "boolean")
26
+ filters.enabled = query.enabled;
27
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
28
+ const configs = await service.listCouponProductConfigs(filters);
29
+ res.json({
30
+ coupon_product_configs: configs,
31
+ count: configs.length,
32
+ });
33
+ };
34
+ exports.GET = GET;
35
+ const POST = async (req, res) => {
36
+ const body = (0, utils_1.parseBody)(validators_1.CreateCouponProductConfigBody, req.body);
37
+ await (0, seller_utils_1.assertSellerOwnsProduct)(req, body.product_id);
38
+ const sellerId = (0, seller_utils_1.getSellerId)(req);
39
+ const productIds = await (0, seller_utils_1.listSellerProductIds)(req);
40
+ const options = await (0, product_utils_1.listCouponProductOptions)(req, productIds, sellerId);
41
+ const conditions = (0, product_utils_1.validateCouponPurchaseOptions)(body, options);
42
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
43
+ const config = await service.createProductConfig({
44
+ ...body,
45
+ purchase_conditions: conditions,
46
+ });
47
+ await (0, product_utils_1.synchronizeCouponProductSalesChannels)(req, body.product_id, (0, product_utils_1.resolveCouponSalesChannelIds)(conditions, options), sellerId);
48
+ res.status(201).json({ coupon_product_config: config });
49
+ };
50
+ exports.POST = POST;
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3ZlbmRvci9jb3Vwb24tcHJvZHVjdHMvY29uZmlncy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx1REFBMEQ7QUFFMUQsb0RBRzRCO0FBQzVCLDBDQUEwQztBQUMxQyx3REFJOEI7QUFDOUIsMERBSytCO0FBRXhCLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNuRSxNQUFNLEtBQUssR0FBRyxrQ0FBcUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ3BELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBQSxtQ0FBb0IsRUFBQyxHQUFVLENBQUMsQ0FBQTtJQUV6RCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3ZCLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDUCxzQkFBc0IsRUFBRSxFQUFFO1lBQzFCLEtBQUssRUFBRSxDQUFDO1NBQ1QsQ0FBQyxDQUFBO1FBQ0YsT0FBTTtJQUNSLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNyQixNQUFNLElBQUEsc0NBQXVCLEVBQUMsR0FBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUM3RCxDQUFDO0lBRUQsTUFBTSxPQUFPLEdBQTRCO1FBQ3ZDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVSxJQUFJLFVBQVU7S0FDM0MsQ0FBQTtJQUNELElBQUksT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFNBQVM7UUFBRSxPQUFPLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUE7SUFFdkUsTUFBTSxPQUFPLEdBQXdCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHNCQUFhLENBQUMsQ0FBQTtJQUNyRSxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyx3QkFBd0IsQ0FBQyxPQUFjLENBQUMsQ0FBQTtJQUV0RSxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1Asc0JBQXNCLEVBQUUsT0FBTztRQUMvQixLQUFLLEVBQUUsT0FBTyxDQUFDLE1BQU07S0FDdEIsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBNUJZLFFBQUEsR0FBRyxPQTRCZjtBQUVNLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNwRSxNQUFNLElBQUksR0FBRyxJQUFBLGlCQUFTLEVBQUMsMENBQTZCLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQy9ELE1BQU0sSUFBQSxzQ0FBdUIsRUFBQyxHQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQzFELE1BQU0sUUFBUSxHQUFHLElBQUEsMEJBQVcsRUFBQyxHQUFVLENBQUMsQ0FBQTtJQUN4QyxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUEsbUNBQW9CLEVBQUMsR0FBVSxDQUFDLENBQUE7SUFDekQsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFBLHdDQUF3QixFQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDekUsTUFBTSxVQUFVLEdBQUcsSUFBQSw2Q0FBNkIsRUFBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFFL0QsTUFBTSxPQUFPLEdBQXdCLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHNCQUFhLENBQUMsQ0FBQTtJQUNyRSxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQztRQUMvQyxHQUFHLElBQUk7UUFDUCxtQkFBbUIsRUFBRSxVQUFVO0tBQ2hDLENBQUMsQ0FBQTtJQUNGLE1BQU0sSUFBQSxxREFBcUMsRUFDekMsR0FBRyxFQUNILElBQUksQ0FBQyxVQUFVLEVBQ2YsSUFBQSw0Q0FBNEIsRUFBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLEVBQ2pELFFBQVEsQ0FDVCxDQUFBO0lBRUQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFBO0FBQ3pELENBQUMsQ0FBQTtBQXJCWSxRQUFBLElBQUksUUFxQmhCIn0=
@@ -0,0 +1,25 @@
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 seller_utils_1 = require("../../../../seller-utils");
7
+ const utils_1 = require("../../../../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 detail = await (0, entitlement_utils_1.retrieveCouponEntitlementDetail)(service, id);
12
+ const entitlement = detail.customer_coupon_entitlement;
13
+ const sellerId = (0, seller_utils_1.getSellerId)(req);
14
+ const links = await service.listCouponEntitlementSellers({
15
+ entitlement_id: entitlement.id,
16
+ seller_id: sellerId,
17
+ });
18
+ if (!links?.length) {
19
+ await (0, seller_utils_1.assertSellerOwnsProduct)(req, entitlement.product_id);
20
+ }
21
+ detail.order = await (0, entitlement_utils_1.retrieveCouponOrderSummary)(req.scope, entitlement.order_id);
22
+ res.json(detail);
23
+ };
24
+ exports.GET = GET;
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3ZlbmRvci9jb3Vwb24tcHJvZHVjdHMvZW50aXRsZW1lbnRzL1tpZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMERBQTZEO0FBRTdELHFFQUdzQztBQUN0QywyREFHaUM7QUFDakMsNkNBQW1EO0FBRTVDLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNuRSxNQUFNLEVBQUUsR0FBRyxJQUFBLHVCQUFlLEVBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUM1QyxNQUFNLE9BQU8sR0FBd0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsc0JBQWEsQ0FBQyxDQUFBO0lBQ3JFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxtREFBK0IsRUFBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDakUsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLDJCQUFrQyxDQUFBO0lBRTdELE1BQU0sUUFBUSxHQUFHLElBQUEsMEJBQVcsRUFBQyxHQUFVLENBQUMsQ0FBQTtJQUN4QyxNQUFNLEtBQUssR0FBRyxNQUFNLE9BQU8sQ0FBQyw0QkFBNEIsQ0FBQztRQUN2RCxjQUFjLEVBQUUsV0FBVyxDQUFDLEVBQUU7UUFDOUIsU0FBUyxFQUFFLFFBQVE7S0FDYixDQUFDLENBQUE7SUFDVCxJQUFJLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBQ25CLE1BQU0sSUFBQSxzQ0FBdUIsRUFBQyxHQUFVLEVBQUUsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQ25FLENBQUM7SUFDRCxNQUFNLENBQUMsS0FBSyxHQUFHLE1BQU0sSUFBQSw4Q0FBMEIsRUFBQyxHQUFHLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQTtJQUVoRixHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0FBQ2xCLENBQUMsQ0FBQTtBQWpCWSxRQUFBLEdBQUcsT0FpQmYifQ==
@@ -0,0 +1,45 @@
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 seller_utils_1 = require("../../../seller-utils");
7
+ const GET = async (req, res) => {
8
+ const service = req.scope.resolve(coupon_1.COUPON_MODULE);
9
+ const productIds = await (0, seller_utils_1.listSellerProductIds)(req);
10
+ const sellerId = (0, seller_utils_1.getSellerId)(req);
11
+ const sellerLinks = await service.listCouponEntitlementSellers({
12
+ seller_id: sellerId,
13
+ });
14
+ const directIds = (sellerLinks || [])
15
+ .map((row) => row.entitlement_id)
16
+ .filter(Boolean);
17
+ const filters = {};
18
+ if (typeof req.query.status === "string" && req.query.status) {
19
+ filters.status = req.query.status;
20
+ }
21
+ const purchased = productIds.length
22
+ ? await (0, entitlement_utils_1.listCouponEntitlements)(service, {
23
+ ...filters,
24
+ product_id: productIds,
25
+ })
26
+ : [];
27
+ const direct = directIds.length
28
+ ? await (0, entitlement_utils_1.listCouponEntitlements)(service, { ...filters, id: directIds })
29
+ : [];
30
+ const byId = new Map([...purchased, ...direct].map((item) => [String(item.id), item]));
31
+ const combined = [...byId.values()].sort((left, right) => new Date(right.created_at || 0).getTime() -
32
+ new Date(left.created_at || 0).getTime());
33
+ const offset = Math.max(0, Number.parseInt(String(req.query.offset || "0"), 10) || 0);
34
+ const requestedLimit = Number.parseInt(String(req.query.limit || ""), 10);
35
+ const paged = Number.isFinite(requestedLimit) && requestedLimit > 0
36
+ ? combined.slice(offset, offset + requestedLimit)
37
+ : combined.slice(offset);
38
+ const entitlements = await (0, entitlement_utils_1.attachEntitlementSellerTargets)(service, paged);
39
+ res.json({
40
+ customer_coupon_entitlements: entitlements,
41
+ count: combined.length,
42
+ });
43
+ };
44
+ exports.GET = GET;
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3ZlbmRvci9jb3Vwb24tcHJvZHVjdHMvZW50aXRsZW1lbnRzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHVEQUEwRDtBQUUxRCxrRUFHbUM7QUFDbkMsd0RBQXlFO0FBRWxFLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNuRSxNQUFNLE9BQU8sR0FBd0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsc0JBQWEsQ0FBQyxDQUFBO0lBQ3JFLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBQSxtQ0FBb0IsRUFBQyxHQUFVLENBQUMsQ0FBQTtJQUN6RCxNQUFNLFFBQVEsR0FBRyxJQUFBLDBCQUFXLEVBQUMsR0FBVSxDQUFDLENBQUE7SUFDeEMsTUFBTSxXQUFXLEdBQUcsTUFBTSxPQUFPLENBQUMsNEJBQTRCLENBQUM7UUFDN0QsU0FBUyxFQUFFLFFBQVE7S0FDYixDQUFDLENBQUE7SUFDVCxNQUFNLFNBQVMsR0FBRyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7U0FDbEMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDO1NBQ3JDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNsQixNQUFNLE9BQU8sR0FBNEIsRUFBRSxDQUFBO0lBQzNDLElBQUksT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxRQUFRLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM3RCxPQUFPLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFBO0lBQ25DLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxVQUFVLENBQUMsTUFBTTtRQUNqQyxDQUFDLENBQUMsTUFBTSxJQUFBLDBDQUFzQixFQUFDLE9BQU8sRUFBRTtZQUNwQyxHQUFHLE9BQU87WUFDVixVQUFVLEVBQUUsVUFBVTtTQUN2QixDQUFDO1FBQ0osQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNOLE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNO1FBQzdCLENBQUMsQ0FBQyxNQUFNLElBQUEsMENBQXNCLEVBQUMsT0FBTyxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDTixNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FDbEIsQ0FBQyxHQUFHLFNBQVMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQ3RFLENBQUE7SUFDRCxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBUyxFQUFFLEtBQVUsRUFBRSxFQUFFLENBQ2pFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFO1FBQ3pDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQ3pDLENBQUE7SUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtJQUNyRixNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUN6RSxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLGNBQWMsR0FBRyxDQUFDO1FBQ2pFLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsY0FBYyxDQUFDO1FBQ2pELENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQzFCLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBQSxrREFBOEIsRUFDdkQsT0FBTyxFQUNQLEtBQUssQ0FDTixDQUFBO0lBRUQsR0FBRyxDQUFDLElBQUksQ0FBQztRQUNQLDRCQUE0QixFQUFFLFlBQVk7UUFDMUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxNQUFNO0tBQ3ZCLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQTtBQTdDWSxRQUFBLEdBQUcsT0E2Q2YifQ==
@@ -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, "vendor");
7
+ };
8
+ exports.GET = GET;
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3ZlbmRvci9jb3Vwb24tcHJvZHVjdHMvb3B0aW9ucy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwwRUFBeUU7QUFFbEUsTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUFFLEdBQWtCLEVBQUUsR0FBbUIsRUFBRSxFQUFFO0lBQ25FLE9BQU8sSUFBQSxnREFBd0IsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBQ3JELENBQUMsQ0FBQTtBQUZZLFFBQUEsR0FBRyxPQUVmIn0=
@@ -0,0 +1,19 @@
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 seller_utils_1 = require("../../../seller-utils");
6
+ const GET = async (req, res) => {
7
+ const productIds = await (0, seller_utils_1.listSellerProductIds)(req);
8
+ const products = await (0, product_utils_1.listProductPickerOptions)(req, {
9
+ productIds,
10
+ q: req.query.q,
11
+ limit: req.query.limit,
12
+ });
13
+ res.json({
14
+ products,
15
+ count: products.length,
16
+ });
17
+ };
18
+ exports.GET = GET;
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3ZlbmRvci9jb3Vwb24tcHJvZHVjdHMvcHJvZHVjdHMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMERBQWlFO0FBQ2pFLHdEQUE0RDtBQUVyRCxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBa0IsRUFBRSxHQUFtQixFQUFFLEVBQUU7SUFDbkUsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFBLG1DQUFvQixFQUFDLEdBQVUsQ0FBQyxDQUFBO0lBQ3pELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSx3Q0FBd0IsRUFBQyxHQUFHLEVBQUU7UUFDbkQsVUFBVTtRQUNWLENBQUMsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDZCxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLO0tBQ3ZCLENBQUMsQ0FBQTtJQUVGLEdBQUcsQ0FBQyxJQUFJLENBQUM7UUFDUCxRQUFRO1FBQ1IsS0FBSyxFQUFFLFFBQVEsQ0FBQyxNQUFNO0tBQ3ZCLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQTtBQVpZLFFBQUEsR0FBRyxPQVlmIn0=
@@ -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, "vendor");
7
+ };
8
+ exports.GET = GET;
9
+ const POST = async (req, res) => {
10
+ return (0, coupon_product_routes_1.createCouponProduct)(req, res, "vendor");
11
+ };
12
+ exports.POST = POST;
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3ZlbmRvci9jb3Vwb24tcHJvZHVjdHMvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsdUVBR29DO0FBRTdCLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNuRSxPQUFPLElBQUEsMENBQWtCLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQTtBQUMvQyxDQUFDLENBQUE7QUFGWSxRQUFBLEdBQUcsT0FFZjtBQUVNLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRTtJQUNwRSxPQUFPLElBQUEsMkNBQW1CLEVBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQTtBQUNoRCxDQUFDLENBQUE7QUFGWSxRQUFBLElBQUksUUFFaEIifQ==
@@ -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, "vendor");
6
+ exports.POST = POST;
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3ZlbmRvci9jb3Vwb24tcHJvZHVjdHMvdXBsb2Fkcy9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx3REFBeUQ7QUFFbEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFrQixFQUFFLEdBQW1CLEVBQUUsRUFBRSxDQUM5RCxJQUFBLGdDQUFpQixFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFEMUIsUUFBQSxJQUFJLFFBQ3NCIn0=
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.config = void 0;
4
+ exports.default = retryCouponMediaDeletes;
5
+ const coupon_1 = require("../modules/coupon");
6
+ async function retryCouponMediaDeletes(container) {
7
+ const service = container.resolve(coupon_1.COUPON_MODULE);
8
+ await service.retryPendingMediaDeletes();
9
+ }
10
+ exports.config = {
11
+ name: "retry-coupon-media-deletes",
12
+ schedule: "*/15 * * * *",
13
+ };
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cnktY291cG9uLW1lZGlhLWRlbGV0ZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvam9icy9yZXRyeS1jb3Vwb24tbWVkaWEtZGVsZXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSwwQ0FLQztBQVJELDhDQUFpRDtBQUdsQyxLQUFLLFVBQVUsdUJBQXVCLENBQ25ELFNBQTBCO0lBRTFCLE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQXNCLHNCQUFhLENBQUMsQ0FBQTtJQUNyRSxNQUFNLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxDQUFBO0FBQzFDLENBQUM7QUFFWSxRQUFBLE1BQU0sR0FBRztJQUNwQixJQUFJLEVBQUUsNEJBQTRCO0lBQ2xDLFFBQVEsRUFBRSxjQUFjO0NBQ3pCLENBQUEifQ==
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const order_1 = __importDefault(require("@medusajs/medusa/order"));
8
+ const coupon_1 = __importDefault(require("../modules/coupon"));
9
+ exports.default = (0, utils_1.defineLink)({
10
+ linkable: coupon_1.default.linkable.couponIssuance,
11
+ field: "line_item_id",
12
+ isList: false,
13
+ }, order_1.default.linkable.orderLineItem, {
14
+ readOnly: true,
15
+ isList: false,
16
+ });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLWlzc3VhbmNlLW9yZGVyLWxpbmUtaXRlbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW5rcy9jb3Vwb24taXNzdWFuY2Utb3JkZXItbGluZS1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBQXNEO0FBQ3RELG1FQUFnRDtBQUNoRCwrREFBNEM7QUFFNUMsa0JBQWUsSUFBQSxrQkFBVSxFQUN2QjtJQUNFLFFBQVEsRUFBRSxnQkFBWSxDQUFDLFFBQVEsQ0FBQyxjQUFjO0lBQzlDLEtBQUssRUFBRSxjQUFjO0lBQ3JCLE1BQU0sRUFBRSxLQUFLO0NBQ2QsRUFDRCxlQUFXLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFDbEM7SUFDRSxRQUFRLEVBQUUsSUFBSTtJQUNkLE1BQU0sRUFBRSxLQUFLO0NBQ2QsQ0FDRixDQUFBIn0=
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const order_1 = __importDefault(require("@medusajs/medusa/order"));
8
+ const coupon_1 = __importDefault(require("../modules/coupon"));
9
+ exports.default = (0, utils_1.defineLink)({
10
+ linkable: coupon_1.default.linkable.couponIssuance,
11
+ field: "order_id",
12
+ }, order_1.default.linkable.order, {
13
+ readOnly: true,
14
+ });
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLWlzc3VhbmNlLW9yZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpbmtzL2NvdXBvbi1pc3N1YW5jZS1vcmRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUFzRDtBQUN0RCxtRUFBZ0Q7QUFDaEQsK0RBQTRDO0FBRTVDLGtCQUFlLElBQUEsa0JBQVUsRUFDdkI7SUFDRSxRQUFRLEVBQUUsZ0JBQVksQ0FBQyxRQUFRLENBQUMsY0FBYztJQUM5QyxLQUFLLEVBQUUsVUFBVTtDQUNsQixFQUNELGVBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUMxQjtJQUNFLFFBQVEsRUFBRSxJQUFJO0NBQ2YsQ0FDRixDQUFBIn0=
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const product_1 = __importDefault(require("@medusajs/medusa/product"));
8
+ const coupon_1 = __importDefault(require("../modules/coupon"));
9
+ exports.default = (0, utils_1.defineLink)({
10
+ linkable: coupon_1.default.linkable.couponProductConfig,
11
+ field: "product_id",
12
+ isList: false,
13
+ }, product_1.default.linkable.product, {
14
+ readOnly: true,
15
+ isList: false,
16
+ });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLXByb2R1Y3QtY29uZmlnLXByb2R1Y3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGlua3MvY291cG9uLXByb2R1Y3QtY29uZmlnLXByb2R1Y3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxREFBc0Q7QUFDdEQsdUVBQW9EO0FBQ3BELCtEQUE0QztBQUU1QyxrQkFBZSxJQUFBLGtCQUFVLEVBQ3ZCO0lBQ0UsUUFBUSxFQUFFLGdCQUFZLENBQUMsUUFBUSxDQUFDLG1CQUFtQjtJQUNuRCxLQUFLLEVBQUUsWUFBWTtJQUNuQixNQUFNLEVBQUUsS0FBSztDQUNkLEVBQ0QsaUJBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUM5QjtJQUNFLFFBQVEsRUFBRSxJQUFJO0lBQ2QsTUFBTSxFQUFFLEtBQUs7Q0FDZCxDQUNGLENBQUEifQ==
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const product_1 = __importDefault(require("@medusajs/medusa/product"));
8
+ const coupon_1 = __importDefault(require("../modules/coupon"));
9
+ exports.default = (0, utils_1.defineLink)({
10
+ linkable: coupon_1.default.linkable.couponProductVariantConfig,
11
+ field: "variant_id",
12
+ isList: false,
13
+ }, product_1.default.linkable.productVariant, {
14
+ readOnly: true,
15
+ isList: false,
16
+ });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLXByb2R1Y3QtdmFyaWFudC1jb25maWctdmFyaWFudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saW5rcy9jb3Vwb24tcHJvZHVjdC12YXJpYW50LWNvbmZpZy12YXJpYW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscURBQXNEO0FBQ3RELHVFQUFvRDtBQUNwRCwrREFBNEM7QUFFNUMsa0JBQWUsSUFBQSxrQkFBVSxFQUN2QjtJQUNFLFFBQVEsRUFBRSxnQkFBWSxDQUFDLFFBQVEsQ0FBQywwQkFBMEI7SUFDMUQsS0FBSyxFQUFFLFlBQVk7SUFDbkIsTUFBTSxFQUFFLEtBQUs7Q0FDZCxFQUNELGlCQUFhLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFDckM7SUFDRSxRQUFRLEVBQUUsSUFBSTtJQUNkLE1BQU0sRUFBRSxLQUFLO0NBQ2QsQ0FDRixDQUFBIn0=
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const promotion_1 = __importDefault(require("@medusajs/medusa/promotion"));
8
+ const coupon_1 = __importDefault(require("../modules/coupon"));
9
+ exports.default = (0, utils_1.defineLink)({
10
+ linkable: coupon_1.default.linkable.couponPromotionMirror,
11
+ field: "promotion_id",
12
+ isList: false,
13
+ }, promotion_1.default.linkable.promotion, {
14
+ readOnly: true,
15
+ isList: false,
16
+ });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY291cG9uLXByb21vdGlvbi1taXJyb3ItcHJvbW90aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpbmtzL2NvdXBvbi1wcm9tb3Rpb24tbWlycm9yLXByb21vdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUFzRDtBQUN0RCwyRUFBd0Q7QUFDeEQsK0RBQTRDO0FBRTVDLGtCQUFlLElBQUEsa0JBQVUsRUFDdkI7SUFDRSxRQUFRLEVBQUUsZ0JBQVksQ0FBQyxRQUFRLENBQUMscUJBQXFCO0lBQ3JELEtBQUssRUFBRSxjQUFjO0lBQ3JCLE1BQU0sRUFBRSxLQUFLO0NBQ2QsRUFDRCxtQkFBZSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQ2xDO0lBQ0UsUUFBUSxFQUFFLElBQUk7SUFDZCxNQUFNLEVBQUUsS0FBSztDQUNkLENBQ0YsQ0FBQSJ9
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const utils_1 = require("@medusajs/framework/utils");
7
+ const customer_1 = __importDefault(require("@medusajs/medusa/customer"));
8
+ const coupon_1 = __importDefault(require("../modules/coupon"));
9
+ exports.default = (0, utils_1.defineLink)({
10
+ linkable: coupon_1.default.linkable.customerCouponEntitlement,
11
+ field: "customer_id",
12
+ }, customer_1.default.linkable.customer, {
13
+ readOnly: true,
14
+ });
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItY291cG9uLWVudGl0bGVtZW50LWN1c3RvbWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpbmtzL2N1c3RvbWVyLWNvdXBvbi1lbnRpdGxlbWVudC1jdXN0b21lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFEQUFzRDtBQUN0RCx5RUFBc0Q7QUFDdEQsK0RBQTRDO0FBRTVDLGtCQUFlLElBQUEsa0JBQVUsRUFDdkI7SUFDRSxRQUFRLEVBQUUsZ0JBQVksQ0FBQyxRQUFRLENBQUMseUJBQXlCO0lBQ3pELEtBQUssRUFBRSxhQUFhO0NBQ3JCLEVBQ0Qsa0JBQWMsQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUNoQztJQUNFLFFBQVEsRUFBRSxJQUFJO0NBQ2YsQ0FDRixDQUFBIn0=
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PROMOTION_MIRROR_STATUSES = exports.ISSUANCE_STATUSES = exports.ENTITLEMENT_ORIGINS = exports.ENTITLEMENT_STATUSES = exports.CAMPAIGN_MODES = exports.PROMOTION_STATUSES = exports.PROMOTION_MIRROR_MODES = exports.CODE_STRATEGIES = exports.BENEFIT_TYPES = exports.COUPON_METADATA_KEY = exports.COUPON_EVENTS = exports.COUPON_MODULE = void 0;
4
+ exports.COUPON_MODULE = "coupon";
5
+ exports.COUPON_EVENTS = {
6
+ CONFIG_CREATED: "coupon_product_config.created",
7
+ CONFIG_UPDATED: "coupon_product_config.updated",
8
+ CONFIG_DELETED: "coupon_product_config.deleted",
9
+ COUPON_PRODUCT_CREATED: "coupon_product.created",
10
+ COUPON_PRODUCT_UPDATED: "coupon_product.updated",
11
+ COUPON_PRODUCT_DELETED: "coupon_product.deleted",
12
+ PRODUCT_PURCHASED: "coupon_product.purchased",
13
+ ISSUANCE_CREATED: "coupon_issuance.created",
14
+ ENTITLEMENT_ISSUED: "customer_coupon_entitlement.issued",
15
+ ENTITLEMENT_REDEEMED: "customer_coupon_entitlement.redeemed",
16
+ ENTITLEMENT_CANCELED: "customer_coupon_entitlement.canceled",
17
+ PROMOTION_MIRROR_CREATED: "coupon_promotion_mirror.created",
18
+ PROMOTION_MIRROR_FAILED: "coupon_promotion_mirror.failed",
19
+ };
20
+ exports.COUPON_METADATA_KEY = "medusa_coupons";
21
+ exports.BENEFIT_TYPES = [
22
+ "fixed_amount",
23
+ "percentage",
24
+ "free_shipping",
25
+ "buy_get",
26
+ ];
27
+ exports.CODE_STRATEGIES = ["unique_code", "shared_code"];
28
+ exports.PROMOTION_MIRROR_MODES = ["none", "manual", "auto"];
29
+ exports.PROMOTION_STATUSES = ["draft", "active", "inactive"];
30
+ exports.CAMPAIGN_MODES = ["none", "existing", "new"];
31
+ exports.ENTITLEMENT_STATUSES = [
32
+ "pending",
33
+ "issued",
34
+ "redeemed",
35
+ "expired",
36
+ "canceled",
37
+ ];
38
+ exports.ENTITLEMENT_ORIGINS = ["purchase", "external"];
39
+ exports.ISSUANCE_STATUSES = ["pending", "issued", "failed"];
40
+ exports.PROMOTION_MIRROR_STATUSES = [
41
+ "pending",
42
+ "created",
43
+ "updated",
44
+ "failed",
45
+ ];
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvY291cG9uL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLGFBQWEsR0FBRyxRQUFRLENBQUE7QUFFeEIsUUFBQSxhQUFhLEdBQUc7SUFDM0IsY0FBYyxFQUFFLCtCQUErQjtJQUMvQyxjQUFjLEVBQUUsK0JBQStCO0lBQy9DLGNBQWMsRUFBRSwrQkFBK0I7SUFDL0Msc0JBQXNCLEVBQUUsd0JBQXdCO0lBQ2hELHNCQUFzQixFQUFFLHdCQUF3QjtJQUNoRCxzQkFBc0IsRUFBRSx3QkFBd0I7SUFDaEQsaUJBQWlCLEVBQUUsMEJBQTBCO0lBQzdDLGdCQUFnQixFQUFFLHlCQUF5QjtJQUMzQyxrQkFBa0IsRUFBRSxvQ0FBb0M7SUFDeEQsb0JBQW9CLEVBQUUsc0NBQXNDO0lBQzVELG9CQUFvQixFQUFFLHNDQUFzQztJQUM1RCx3QkFBd0IsRUFBRSxpQ0FBaUM7SUFDM0QsdUJBQXVCLEVBQUUsZ0NBQWdDO0NBQ2pELENBQUE7QUFFRyxRQUFBLG1CQUFtQixHQUFHLGdCQUFnQixDQUFBO0FBRXRDLFFBQUEsYUFBYSxHQUFHO0lBQzNCLGNBQWM7SUFDZCxZQUFZO0lBQ1osZUFBZTtJQUNmLFNBQVM7Q0FDRCxDQUFBO0FBRUcsUUFBQSxlQUFlLEdBQUcsQ0FBQyxhQUFhLEVBQUUsYUFBYSxDQUFVLENBQUE7QUFDekQsUUFBQSxzQkFBc0IsR0FBRyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFVLENBQUE7QUFDNUQsUUFBQSxrQkFBa0IsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFVLENBQUE7QUFDN0QsUUFBQSxjQUFjLEdBQUcsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLEtBQUssQ0FBVSxDQUFBO0FBQ3JELFFBQUEsb0JBQW9CLEdBQUc7SUFDbEMsU0FBUztJQUNULFFBQVE7SUFDUixVQUFVO0lBQ1YsU0FBUztJQUNULFVBQVU7Q0FDRixDQUFBO0FBQ0csUUFBQSxtQkFBbUIsR0FBRyxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQVUsQ0FBQTtBQUN2RCxRQUFBLGlCQUFpQixHQUFHLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQVUsQ0FBQTtBQUM1RCxRQUFBLHlCQUF5QixHQUFHO0lBQ3ZDLFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFFBQVE7Q0FDQSxDQUFBIn0=
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.COUPON_MODULE = void 0;
7
+ const utils_1 = require("@medusajs/framework/utils");
8
+ const constants_1 = require("./constants");
9
+ Object.defineProperty(exports, "COUPON_MODULE", { enumerable: true, get: function () { return constants_1.COUPON_MODULE; } });
10
+ const reconcile_coupon_products_1 = __importDefault(require("./loaders/reconcile-coupon-products"));
11
+ const service_1 = __importDefault(require("./service"));
12
+ exports.default = (0, utils_1.Module)(constants_1.COUPON_MODULE, {
13
+ service: service_1.default,
14
+ loaders: [reconcile_coupon_products_1.default],
15
+ });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9jb3Vwb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEscURBQWtEO0FBQ2xELDJDQUEyQztBQUlsQyw4RkFKQSx5QkFBYSxPQUlBO0FBSHRCLG9HQUF5RTtBQUN6RSx3REFBMkM7QUFHM0Msa0JBQWUsSUFBQSxjQUFNLEVBQUMseUJBQWEsRUFBRTtJQUNuQyxPQUFPLEVBQUUsaUJBQW1CO0lBQzVCLE9BQU8sRUFBRSxDQUFDLG1DQUF1QixDQUFDO0NBQ25DLENBQUMsQ0FBQSJ9