@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.
- package/.medusa/server/src/admin/index.js +3207 -0
- package/.medusa/server/src/admin/index.mjs +3253 -0
- package/.medusa/server/src/api/admin/coupon-products/[product_id]/entitlements/route.js +9 -0
- package/.medusa/server/src/api/admin/coupon-products/[product_id]/mirror-promotion/route.js +132 -0
- package/.medusa/server/src/api/admin/coupon-products/[product_id]/preview/route.js +28 -0
- package/.medusa/server/src/api/admin/coupon-products/[product_id]/route.js +18 -0
- package/.medusa/server/src/api/admin/coupon-products/[product_id]/variants/[variant_config_id]/route.js +14 -0
- package/.medusa/server/src/api/admin/coupon-products/[product_id]/variants/route.js +14 -0
- package/.medusa/server/src/api/admin/coupon-products/configs/[id]/route.js +53 -0
- package/.medusa/server/src/api/admin/coupon-products/configs/[id]/variants/[variant_config_id]/route.js +26 -0
- package/.medusa/server/src/api/admin/coupon-products/configs/[id]/variants/route.js +27 -0
- package/.medusa/server/src/api/admin/coupon-products/configs/route.js +36 -0
- package/.medusa/server/src/api/admin/coupon-products/entitlements/[id]/cancel/route.js +15 -0
- package/.medusa/server/src/api/admin/coupon-products/entitlements/[id]/redeem/route.js +15 -0
- package/.medusa/server/src/api/admin/coupon-products/entitlements/[id]/route.js +16 -0
- package/.medusa/server/src/api/admin/coupon-products/entitlements/route.js +22 -0
- package/.medusa/server/src/api/admin/coupon-products/options/route.js +9 -0
- package/.medusa/server/src/api/admin/coupon-products/products/route.js +16 -0
- package/.medusa/server/src/api/admin/coupon-products/route.js +13 -0
- package/.medusa/server/src/api/admin/coupon-products/uploads/route.js +7 -0
- package/.medusa/server/src/api/coupon-product-routes.js +546 -0
- package/.medusa/server/src/api/entitlement-utils.js +90 -0
- package/.medusa/server/src/api/media-upload.js +57 -0
- package/.medusa/server/src/api/middlewares.js +92 -0
- package/.medusa/server/src/api/product-utils.js +304 -0
- package/.medusa/server/src/api/promotion-code-resolver.js +225 -0
- package/.medusa/server/src/api/seller-utils.js +101 -0
- package/.medusa/server/src/api/utils.js +25 -0
- package/.medusa/server/src/api/validators.js +199 -0
- package/.medusa/server/src/api/vendor/coupon-products/[product_id]/entitlements/route.js +9 -0
- package/.medusa/server/src/api/vendor/coupon-products/[product_id]/route.js +18 -0
- package/.medusa/server/src/api/vendor/coupon-products/[product_id]/variants/[variant_config_id]/route.js +14 -0
- package/.medusa/server/src/api/vendor/coupon-products/[product_id]/variants/route.js +14 -0
- package/.medusa/server/src/api/vendor/coupon-products/configs/[id]/route.js +60 -0
- package/.medusa/server/src/api/vendor/coupon-products/configs/[id]/variants/[variant_config_id]/route.js +41 -0
- package/.medusa/server/src/api/vendor/coupon-products/configs/[id]/variants/route.js +45 -0
- package/.medusa/server/src/api/vendor/coupon-products/configs/route.js +51 -0
- package/.medusa/server/src/api/vendor/coupon-products/entitlements/[id]/route.js +25 -0
- package/.medusa/server/src/api/vendor/coupon-products/entitlements/route.js +45 -0
- package/.medusa/server/src/api/vendor/coupon-products/options/route.js +9 -0
- package/.medusa/server/src/api/vendor/coupon-products/products/route.js +19 -0
- package/.medusa/server/src/api/vendor/coupon-products/route.js +13 -0
- package/.medusa/server/src/api/vendor/coupon-products/uploads/route.js +7 -0
- package/.medusa/server/src/jobs/retry-coupon-media-deletes.js +14 -0
- package/.medusa/server/src/links/coupon-issuance-order-line-item.js +17 -0
- package/.medusa/server/src/links/coupon-issuance-order.js +15 -0
- package/.medusa/server/src/links/coupon-product-config-product.js +17 -0
- package/.medusa/server/src/links/coupon-product-variant-config-variant.js +17 -0
- package/.medusa/server/src/links/coupon-promotion-mirror-promotion.js +17 -0
- package/.medusa/server/src/links/customer-coupon-entitlement-customer.js +15 -0
- package/.medusa/server/src/modules/coupon/constants.js +46 -0
- package/.medusa/server/src/modules/coupon/index.js +16 -0
- package/.medusa/server/src/modules/coupon/loaders/reconcile-coupon-products.js +65 -0
- package/.medusa/server/src/modules/coupon/migrations/Migration20260709000000.js +40 -0
- package/.medusa/server/src/modules/coupon/migrations/Migration20260710000000.js +22 -0
- package/.medusa/server/src/modules/coupon/migrations/Migration20260711000000.js +25 -0
- package/.medusa/server/src/modules/coupon/migrations/Migration20260712000000.js +78 -0
- package/.medusa/server/src/modules/coupon/migrations/Migration20260719000000.js +19 -0
- package/.medusa/server/src/modules/coupon/migrations/Migration20260722000000.js +17 -0
- package/.medusa/server/src/modules/coupon/migrations/Migration20260723000000.js +18 -0
- package/.medusa/server/src/modules/coupon/models/coupon-entitlement-promotion.js +31 -0
- package/.medusa/server/src/modules/coupon/models/coupon-entitlement-seller.js +28 -0
- package/.medusa/server/src/modules/coupon/models/coupon-issuance.js +35 -0
- package/.medusa/server/src/modules/coupon/models/coupon-media-asset.js +41 -0
- package/.medusa/server/src/modules/coupon/models/coupon-product-config.js +45 -0
- package/.medusa/server/src/modules/coupon/models/coupon-product-variant-config.js +36 -0
- package/.medusa/server/src/modules/coupon/models/coupon-promotion-mirror.js +27 -0
- package/.medusa/server/src/modules/coupon/models/customer-coupon-entitlement.js +56 -0
- package/.medusa/server/src/modules/coupon/models/index.js +23 -0
- package/.medusa/server/src/modules/coupon/payment-order-utils.js +76 -0
- package/.medusa/server/src/modules/coupon/product-metadata.js +24 -0
- package/.medusa/server/src/modules/coupon/purchase-conditions.js +138 -0
- package/.medusa/server/src/modules/coupon/service.js +628 -0
- package/.medusa/server/src/modules/coupon/types.js +3 -0
- package/.medusa/server/src/modules/coupon/utils.js +302 -0
- package/.medusa/server/src/subscribers/issue-coupons-from-order.js +88 -0
- package/.medusa/server/src/vendor/index.mjs +3237 -0
- package/.medusa/server/src/workflows/hooks/validate-coupon-add-to-cart.js +13 -0
- package/.medusa/server/src/workflows/hooks/validate-coupon-complete-cart.js +8 -0
- package/.medusa/server/src/workflows/index.js +21 -0
- package/.medusa/server/src/workflows/steps.js +27 -0
- package/.medusa/server/src/workflows/validate-coupon-purchase.js +85 -0
- package/README.md +84 -0
- 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
|