@reorderjs/reorder 1.0.1 → 1.0.2

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 (30) hide show
  1. package/.medusa/server/src/admin/index.js +2856 -2844
  2. package/.medusa/server/src/admin/index.mjs +2856 -2844
  3. package/.medusa/server/src/api/middlewares.js +5 -9
  4. package/.medusa/server/src/api/store/customers/me/subscriptions/[id]/change-address/route.js +32 -0
  5. package/.medusa/server/src/api/store/customers/me/subscriptions/[id]/change-frequency/route.js +31 -0
  6. package/.medusa/server/src/api/store/customers/me/subscriptions/[id]/pause/route.js +23 -0
  7. package/.medusa/server/src/api/store/customers/me/subscriptions/[id]/resume/route.js +23 -0
  8. package/.medusa/server/src/api/store/customers/me/subscriptions/[id]/retry-payment/route.js +58 -0
  9. package/.medusa/server/src/api/store/customers/me/subscriptions/[id]/route.js +10 -0
  10. package/.medusa/server/src/api/store/customers/me/subscriptions/[id]/skip-next-delivery/route.js +22 -0
  11. package/.medusa/server/src/api/store/customers/me/subscriptions/[id]/swap-product/route.js +31 -0
  12. package/.medusa/server/src/api/store/customers/me/subscriptions/middlewares.js +54 -0
  13. package/.medusa/server/src/api/store/customers/me/subscriptions/utils.js +322 -1
  14. package/.medusa/server/src/api/store/customers/me/subscriptions/validators.js +38 -2
  15. package/.medusa/server/src/api/store/products/[id]/subscription-offer/route.js +10 -0
  16. package/.medusa/server/src/api/store/products/middlewares.js +18 -0
  17. package/.medusa/server/src/api/store/products/validators.js +8 -0
  18. package/.medusa/server/src/modules/activity-log/migrations/Migration20260410191100.js +16 -0
  19. package/.medusa/server/src/modules/activity-log/types/index.js +2 -1
  20. package/.medusa/server/src/modules/renewal/utils/admin-query.js +51 -9
  21. package/.medusa/server/src/modules/subscription/utils/admin-query.js +15 -1
  22. package/.medusa/server/src/modules/subscription/utils/effective-next-renewal.js +39 -0
  23. package/.medusa/server/src/workflows/index.js +5 -2
  24. package/.medusa/server/src/workflows/skip-next-delivery.js +70 -0
  25. package/.medusa/server/src/workflows/steps/pause-subscription.js +1 -1
  26. package/.medusa/server/src/workflows/steps/process-renewal-cycle.js +3 -15
  27. package/.medusa/server/src/workflows/steps/skip-next-delivery.js +43 -0
  28. package/LICENSE +1 -1
  29. package/README.md +7 -7
  30. package/package.json +1 -1
@@ -9,7 +9,8 @@ const middlewares_5 = require("./admin/cancellations/middlewares");
9
9
  const middlewares_6 = require("./admin/subscription-logs/middlewares");
10
10
  const middlewares_7 = require("./admin/subscription-analytics/middlewares");
11
11
  const middlewares_8 = require("./admin/subscription-settings/middlewares");
12
- const validators_1 = require("./store/customers/me/subscriptions/validators");
12
+ const middlewares_9 = require("./store/customers/me/subscriptions/middlewares");
13
+ const middlewares_10 = require("./store/products/middlewares");
13
14
  exports.default = (0, http_1.defineMiddlewares)({
14
15
  routes: [
15
16
  ...middlewares_1.adminSubscriptionsMiddlewares,
@@ -20,13 +21,8 @@ exports.default = (0, http_1.defineMiddlewares)({
20
21
  ...middlewares_3.adminRenewalsMiddlewares,
21
22
  ...middlewares_4.adminDunningMiddlewares,
22
23
  ...middlewares_5.adminCancellationsMiddlewares,
23
- {
24
- matcher: "/store/customers/me/subscriptions/:id/cancellation",
25
- method: "POST",
26
- middlewares: [
27
- (0, http_1.validateAndTransformBody)(validators_1.PostStoreStartCancellationSchema),
28
- ],
29
- },
24
+ ...middlewares_9.storeCustomerSubscriptionsMiddlewares,
25
+ ...middlewares_10.storeProductMiddlewares,
30
26
  ],
31
27
  });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBQXNGO0FBQ3RGLG1FQUFpRjtBQUNqRix5RUFBNEY7QUFDNUYsOERBQXVFO0FBQ3ZFLDZEQUFxRTtBQUNyRSxtRUFBaUY7QUFDakYsdUVBQXdGO0FBQ3hGLDRFQUFrRztBQUNsRywyRUFBZ0c7QUFDaEcsOEVBQWdHO0FBRWhHLGtCQUFlLElBQUEsd0JBQWlCLEVBQUM7SUFDL0IsTUFBTSxFQUFFO1FBQ04sR0FBRywyQ0FBNkI7UUFDaEMsR0FBRyxrREFBb0M7UUFDdkMsR0FBRyxtREFBcUM7UUFDeEMsR0FBRyw4Q0FBZ0M7UUFDbkMsR0FBRyxnREFBa0M7UUFDckMsR0FBRyxzQ0FBd0I7UUFDM0IsR0FBRyxxQ0FBdUI7UUFDMUIsR0FBRywyQ0FBNkI7UUFDaEM7WUFDRSxPQUFPLEVBQUUsb0RBQW9EO1lBQzdELE1BQU0sRUFBRSxNQUFNO1lBQ2QsV0FBVyxFQUFFO2dCQUNYLElBQUEsK0JBQXdCLEVBQUMsNkNBQWdDLENBQUM7YUFDM0Q7U0FDRjtLQUNGO0NBQ0YsQ0FBQyxDQUFBIn0=
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbURBQTREO0FBQzVELG1FQUFpRjtBQUNqRix5RUFBNEY7QUFDNUYsOERBQXVFO0FBQ3ZFLDZEQUFxRTtBQUNyRSxtRUFBaUY7QUFDakYsdUVBQXdGO0FBQ3hGLDRFQUFrRztBQUNsRywyRUFBZ0c7QUFDaEcsZ0ZBQXNHO0FBQ3RHLCtEQUFzRTtBQUV0RSxrQkFBZSxJQUFBLHdCQUFpQixFQUFDO0lBQy9CLE1BQU0sRUFBRTtRQUNOLEdBQUcsMkNBQTZCO1FBQ2hDLEdBQUcsa0RBQW9DO1FBQ3ZDLEdBQUcsbURBQXFDO1FBQ3hDLEdBQUcsOENBQWdDO1FBQ25DLEdBQUcsZ0RBQWtDO1FBQ3JDLEdBQUcsc0NBQXdCO1FBQzNCLEdBQUcscUNBQXVCO1FBQzFCLEdBQUcsMkNBQTZCO1FBQ2hDLEdBQUcsbURBQXFDO1FBQ3hDLEdBQUcsc0NBQXVCO0tBQzNCO0NBQ0YsQ0FBQyxDQUFBIn0=
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const workflows_1 = require("../../../../../../../workflows");
5
+ const utils_1 = require("../../utils");
6
+ const POST = async (req, res) => {
7
+ await (0, utils_1.getOwnedSubscriptionForAction)(req, req.params.id);
8
+ await (0, workflows_1.updateSubscriptionShippingAddressWorkflow)(req.scope).run({
9
+ input: {
10
+ id: req.params.id,
11
+ triggered_by: req.auth_context.actor_id,
12
+ first_name: req.validatedBody.first_name,
13
+ last_name: req.validatedBody.last_name,
14
+ company: req.validatedBody.company ?? null,
15
+ address_1: req.validatedBody.address_1,
16
+ address_2: req.validatedBody.address_2 ?? null,
17
+ city: req.validatedBody.city,
18
+ postal_code: req.validatedBody.postal_code,
19
+ province: req.validatedBody.province ?? null,
20
+ country_code: req.validatedBody.country_code,
21
+ phone: req.validatedBody.phone ?? null,
22
+ },
23
+ });
24
+ const customerId = await (0, utils_1.requireStoreCustomer)(req);
25
+ const response = await (0, utils_1.getStoreSubscriptionDetailResponse)(req.scope, {
26
+ customer_id: customerId,
27
+ subscription_id: req.params.id,
28
+ });
29
+ return (0, utils_1.sendStoreJson)(res, response);
30
+ };
31
+ exports.POST = POST;
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2N1c3RvbWVycy9tZS9zdWJzY3JpcHRpb25zL1tpZF0vY2hhbmdlLWFkZHJlc3Mvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBS0EsOERBQTBGO0FBQzFGLHVDQUtvQjtBQUViLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBNkUsRUFDN0UsR0FBbUIsRUFDbkIsRUFBRTtJQUNGLE1BQU0sSUFBQSxxQ0FBNkIsRUFBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUV2RCxNQUFNLElBQUEscURBQXlDLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUM3RCxLQUFLLEVBQUU7WUFDTCxFQUFFLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2pCLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVE7WUFDdkMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsVUFBVTtZQUN4QyxTQUFTLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxTQUFTO1lBQ3RDLE9BQU8sRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU8sSUFBSSxJQUFJO1lBQzFDLFNBQVMsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLFNBQVM7WUFDdEMsU0FBUyxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsU0FBUyxJQUFJLElBQUk7WUFDOUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSTtZQUM1QixXQUFXLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxXQUFXO1lBQzFDLFFBQVEsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLFFBQVEsSUFBSSxJQUFJO1lBQzVDLFlBQVksRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLFlBQVk7WUFDNUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLElBQUk7U0FDdkM7S0FDRixDQUFDLENBQUE7SUFFRixNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUEsNEJBQW9CLEVBQUMsR0FBRyxDQUFDLENBQUE7SUFDbEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLDBDQUFrQyxFQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUU7UUFDbkUsV0FBVyxFQUFFLFVBQVU7UUFDdkIsZUFBZSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtLQUMvQixDQUFDLENBQUE7SUFFRixPQUFPLElBQUEscUJBQWEsRUFBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFDckMsQ0FBQyxDQUFBO0FBOUJZLFFBQUEsSUFBSSxRQThCaEIifQ==
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const types_1 = require("../../../../../../../modules/subscription/types");
5
+ const workflows_1 = require("../../../../../../../workflows");
6
+ const utils_1 = require("../../utils");
7
+ const POST = async (req, res) => {
8
+ const subscription = await (0, utils_1.getOwnedSubscriptionForAction)(req, req.params.id);
9
+ await (0, workflows_1.scheduleSubscriptionPlanChangeWorkflow)(req.scope).run({
10
+ input: {
11
+ id: req.params.id,
12
+ requested_by: req.auth_context.actor_id,
13
+ variant_id: subscription.variant_id,
14
+ frequency_interval: req.validatedBody.frequency_interval === "week"
15
+ ? types_1.SubscriptionFrequencyInterval.WEEK
16
+ : req.validatedBody.frequency_interval === "month"
17
+ ? types_1.SubscriptionFrequencyInterval.MONTH
18
+ : types_1.SubscriptionFrequencyInterval.YEAR,
19
+ frequency_value: req.validatedBody.frequency_value,
20
+ effective_at: req.validatedBody.effective_at,
21
+ },
22
+ });
23
+ const customerId = await (0, utils_1.requireStoreCustomer)(req);
24
+ const response = await (0, utils_1.getStoreSubscriptionDetailResponse)(req.scope, {
25
+ customer_id: customerId,
26
+ subscription_id: req.params.id,
27
+ });
28
+ return (0, utils_1.sendStoreJson)(res, response);
29
+ };
30
+ exports.POST = POST;
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2N1c3RvbWVycy9tZS9zdWJzY3JpcHRpb25zL1tpZF0vY2hhbmdlLWZyZXF1ZW5jeS9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQSwyRUFBK0Y7QUFDL0YsOERBQXVGO0FBQ3ZGLHVDQUtvQjtBQUViLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBK0UsRUFDL0UsR0FBbUIsRUFDbkIsRUFBRTtJQUNGLE1BQU0sWUFBWSxHQUFHLE1BQU0sSUFBQSxxQ0FBNkIsRUFBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUU1RSxNQUFNLElBQUEsa0RBQXNDLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUMxRCxLQUFLLEVBQUU7WUFDTCxFQUFFLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2pCLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVE7WUFDdkMsVUFBVSxFQUFFLFlBQVksQ0FBQyxVQUFVO1lBQ25DLGtCQUFrQixFQUNoQixHQUFHLENBQUMsYUFBYSxDQUFDLGtCQUFrQixLQUFLLE1BQU07Z0JBQzdDLENBQUMsQ0FBQyxxQ0FBNkIsQ0FBQyxJQUFJO2dCQUNwQyxDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsS0FBSyxPQUFPO29CQUNoRCxDQUFDLENBQUMscUNBQTZCLENBQUMsS0FBSztvQkFDckMsQ0FBQyxDQUFDLHFDQUE2QixDQUFDLElBQUk7WUFDMUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsZUFBZTtZQUNsRCxZQUFZLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxZQUFZO1NBQzdDO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFBLDRCQUFvQixFQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2xELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSwwQ0FBa0MsRUFBQyxHQUFHLENBQUMsS0FBSyxFQUFFO1FBQ25FLFdBQVcsRUFBRSxVQUFVO1FBQ3ZCLGVBQWUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7S0FDL0IsQ0FBQyxDQUFBO0lBRUYsT0FBTyxJQUFBLHFCQUFhLEVBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBQ3JDLENBQUMsQ0FBQTtBQTdCWSxRQUFBLElBQUksUUE2QmhCIn0=
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const workflows_1 = require("../../../../../../../workflows");
5
+ const utils_1 = require("../../utils");
6
+ const POST = async (req, res) => {
7
+ await (0, utils_1.getOwnedSubscriptionForAction)(req, req.params.id);
8
+ await (0, workflows_1.pauseSubscriptionWorkflow)(req.scope).run({
9
+ input: {
10
+ id: req.params.id,
11
+ triggered_by: req.auth_context.actor_id,
12
+ ...req.validatedBody,
13
+ },
14
+ });
15
+ const customerId = await (0, utils_1.requireStoreCustomer)(req);
16
+ const response = await (0, utils_1.getStoreSubscriptionDetailResponse)(req.scope, {
17
+ customer_id: customerId,
18
+ subscription_id: req.params.id,
19
+ });
20
+ return (0, utils_1.sendStoreJson)(res, response);
21
+ };
22
+ exports.POST = POST;
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2N1c3RvbWVycy9tZS9zdWJzY3JpcHRpb25zL1tpZF0vcGF1c2Uvcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBS0EsOERBQTBFO0FBQzFFLHVDQUtvQjtBQUViLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFDdkIsR0FBcUUsRUFDckUsR0FBbUIsRUFDbkIsRUFBRTtJQUNGLE1BQU0sSUFBQSxxQ0FBNkIsRUFBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUV2RCxNQUFNLElBQUEscUNBQXlCLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUM3QyxLQUFLLEVBQUU7WUFDTCxFQUFFLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2pCLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLFFBQVE7WUFDdkMsR0FBRyxHQUFHLENBQUMsYUFBYTtTQUNyQjtLQUNGLENBQUMsQ0FBQTtJQUVGLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBQSw0QkFBb0IsRUFBQyxHQUFHLENBQUMsQ0FBQTtJQUNsRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUEsMENBQWtDLEVBQUMsR0FBRyxDQUFDLEtBQUssRUFBRTtRQUNuRSxXQUFXLEVBQUUsVUFBVTtRQUN2QixlQUFlLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0tBQy9CLENBQUMsQ0FBQTtJQUVGLE9BQU8sSUFBQSxxQkFBYSxFQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQTtBQUNyQyxDQUFDLENBQUE7QUFyQlksUUFBQSxJQUFJLFFBcUJoQiJ9
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const workflows_1 = require("../../../../../../../workflows");
5
+ const utils_1 = require("../../utils");
6
+ const POST = async (req, res) => {
7
+ await (0, utils_1.getOwnedSubscriptionForAction)(req, req.params.id);
8
+ await (0, workflows_1.resumeSubscriptionWorkflow)(req.scope).run({
9
+ input: {
10
+ id: req.params.id,
11
+ triggered_by: req.auth_context.actor_id,
12
+ ...req.validatedBody,
13
+ },
14
+ });
15
+ const customerId = await (0, utils_1.requireStoreCustomer)(req);
16
+ const response = await (0, utils_1.getStoreSubscriptionDetailResponse)(req.scope, {
17
+ customer_id: customerId,
18
+ subscription_id: req.params.id,
19
+ });
20
+ return (0, utils_1.sendStoreJson)(res, response);
21
+ };
22
+ exports.POST = POST;
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2N1c3RvbWVycy9tZS9zdWJzY3JpcHRpb25zL1tpZF0vcmVzdW1lL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUtBLDhEQUEyRTtBQUMzRSx1Q0FLb0I7QUFFYixNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQXNFLEVBQ3RFLEdBQW1CLEVBQ25CLEVBQUU7SUFDRixNQUFNLElBQUEscUNBQTZCLEVBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFdkQsTUFBTSxJQUFBLHNDQUEwQixFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDOUMsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNqQixZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRO1lBQ3ZDLEdBQUcsR0FBRyxDQUFDLGFBQWE7U0FDckI7S0FDRixDQUFDLENBQUE7SUFFRixNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUEsNEJBQW9CLEVBQUMsR0FBRyxDQUFDLENBQUE7SUFDbEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLDBDQUFrQyxFQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUU7UUFDbkUsV0FBVyxFQUFFLFVBQVU7UUFDdkIsZUFBZSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtLQUMvQixDQUFDLENBQUE7SUFFRixPQUFPLElBQUEscUJBQWEsRUFBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFDckMsQ0FBQyxDQUFBO0FBckJZLFFBQUEsSUFBSSxRQXFCaEIifQ==
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const utils_1 = require("@medusajs/framework/utils");
5
+ const workflows_1 = require("../../../../../../../workflows");
6
+ const utils_2 = require("../../utils");
7
+ function mapStoreRetryError(error) {
8
+ const message = error instanceof Error ? error.message : "Unexpected subscription retry error";
9
+ const normalized = message.toLowerCase();
10
+ if (normalized.includes("was not found")) {
11
+ return {
12
+ status: 404,
13
+ type: utils_1.MedusaError.Types.NOT_FOUND,
14
+ message,
15
+ };
16
+ }
17
+ if (normalized.includes("invalid") || normalized.includes("missing")) {
18
+ return {
19
+ status: 400,
20
+ type: utils_1.MedusaError.Types.INVALID_DATA,
21
+ message,
22
+ };
23
+ }
24
+ return {
25
+ status: 409,
26
+ type: utils_1.MedusaError.Types.CONFLICT,
27
+ message,
28
+ };
29
+ }
30
+ const POST = async (req, res) => {
31
+ await (0, utils_2.getOwnedSubscriptionForAction)(req, req.params.id);
32
+ const dunningCase = await (0, utils_2.getRetryableDunningCaseForSubscription)(req, req.params.id);
33
+ try {
34
+ await (0, workflows_1.runDunningRetryWorkflow)(req.scope).run({
35
+ input: {
36
+ dunning_case_id: dunningCase.id,
37
+ ignore_schedule: true,
38
+ triggered_by: req.auth_context.actor_id,
39
+ reason: req.validatedBody.reason,
40
+ },
41
+ });
42
+ }
43
+ catch (error) {
44
+ const mapped = mapStoreRetryError(error);
45
+ return res.status(mapped.status).json({
46
+ type: mapped.type,
47
+ message: mapped.message,
48
+ });
49
+ }
50
+ const customerId = await (0, utils_2.requireStoreCustomer)(req);
51
+ const response = await (0, utils_2.getStoreSubscriptionDetailResponse)(req.scope, {
52
+ customer_id: customerId,
53
+ subscription_id: req.params.id,
54
+ });
55
+ return (0, utils_2.sendStoreJson)(res, response);
56
+ };
57
+ exports.POST = POST;
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2N1c3RvbWVycy9tZS9zdWJzY3JpcHRpb25zL1tpZF0vcmV0cnktcGF5bWVudC9yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQSxxREFBdUQ7QUFDdkQsOERBQXdFO0FBQ3hFLHVDQU1vQjtBQUVwQixTQUFTLGtCQUFrQixDQUFDLEtBQWM7SUFDeEMsTUFBTSxPQUFPLEdBQ1gsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMscUNBQXFDLENBQUE7SUFDaEYsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBRXhDLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDO1FBQ3pDLE9BQU87WUFDTCxNQUFNLEVBQUUsR0FBRztZQUNYLElBQUksRUFBRSxtQkFBVyxDQUFDLEtBQUssQ0FBQyxTQUFTO1lBQ2pDLE9BQU87U0FDUixDQUFBO0lBQ0gsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7UUFDckUsT0FBTztZQUNMLE1BQU0sRUFBRSxHQUFHO1lBQ1gsSUFBSSxFQUFFLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVk7WUFDcEMsT0FBTztTQUNSLENBQUE7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sRUFBRSxHQUFHO1FBQ1gsSUFBSSxFQUFFLG1CQUFXLENBQUMsS0FBSyxDQUFDLFFBQVE7UUFDaEMsT0FBTztLQUNSLENBQUE7QUFDSCxDQUFDO0FBRU0sTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUN2QixHQUE0RSxFQUM1RSxHQUFtQixFQUNuQixFQUFFO0lBQ0YsTUFBTSxJQUFBLHFDQUE2QixFQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQ3ZELE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSw4Q0FBc0MsRUFDOUQsR0FBRyxFQUNILEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUNkLENBQUE7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLElBQUEsbUNBQXVCLEVBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQztZQUMzQyxLQUFLLEVBQUU7Z0JBQ0wsZUFBZSxFQUFFLFdBQVcsQ0FBQyxFQUFFO2dCQUMvQixlQUFlLEVBQUUsSUFBSTtnQkFDckIsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUTtnQkFDdkMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTTthQUNqQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFeEMsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDcEMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO1lBQ2pCLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztTQUN4QixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFBLDRCQUFvQixFQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2xELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSwwQ0FBa0MsRUFBQyxHQUFHLENBQUMsS0FBSyxFQUFFO1FBQ25FLFdBQVcsRUFBRSxVQUFVO1FBQ3ZCLGVBQWUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7S0FDL0IsQ0FBQyxDQUFBO0lBRUYsT0FBTyxJQUFBLHFCQUFhLEVBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBQ3JDLENBQUMsQ0FBQTtBQW5DWSxRQUFBLElBQUksUUFtQ2hCIn0=
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GET = void 0;
4
+ const utils_1 = require("../utils");
5
+ const GET = async (req, res) => {
6
+ const response = await (0, utils_1.retrieveOwnedSubscriptionDetail)(req, req.params.id);
7
+ return (0, utils_1.sendStoreJson)(res, response);
8
+ };
9
+ exports.GET = GET;
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2N1c3RvbWVycy9tZS9zdWJzY3JpcHRpb25zL1tpZF0vcm91dGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsb0NBQXlFO0FBRWxFLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFDdEIsR0FBK0IsRUFDL0IsR0FBbUIsRUFDbkIsRUFBRTtJQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSx1Q0FBK0IsRUFBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQTtJQUUxRSxPQUFPLElBQUEscUJBQWEsRUFBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFDckMsQ0FBQyxDQUFBO0FBUFksUUFBQSxHQUFHLE9BT2YifQ==
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const workflows_1 = require("../../../../../../../workflows");
5
+ const utils_1 = require("../../utils");
6
+ const POST = async (req, res) => {
7
+ await (0, utils_1.getOwnedSubscriptionForAction)(req, req.params.id);
8
+ await (0, workflows_1.skipNextDeliveryWorkflow)(req.scope).run({
9
+ input: {
10
+ id: req.params.id,
11
+ triggered_by: req.auth_context.actor_id,
12
+ },
13
+ });
14
+ const customerId = await (0, utils_1.requireStoreCustomer)(req);
15
+ const response = await (0, utils_1.getStoreSubscriptionDetailResponse)(req.scope, {
16
+ customer_id: customerId,
17
+ subscription_id: req.params.id,
18
+ });
19
+ return (0, utils_1.sendStoreJson)(res, response);
20
+ };
21
+ exports.POST = POST;
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2N1c3RvbWVycy9tZS9zdWJzY3JpcHRpb25zL1tpZF0vc2tpcC1uZXh0LWRlbGl2ZXJ5L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLDhEQUF5RTtBQUN6RSx1Q0FLb0I7QUFFYixNQUFNLElBQUksR0FBRyxLQUFLLEVBQ3ZCLEdBQStCLEVBQy9CLEdBQW1CLEVBQ25CLEVBQUU7SUFDRixNQUFNLElBQUEscUNBQTZCLEVBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUE7SUFFdkQsTUFBTSxJQUFBLG9DQUF3QixFQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDNUMsS0FBSyxFQUFFO1lBQ0wsRUFBRSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNqQixZQUFZLEVBQUUsR0FBRyxDQUFDLFlBQVksQ0FBQyxRQUFRO1NBQ3hDO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFBLDRCQUFvQixFQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2xELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSwwQ0FBa0MsRUFBQyxHQUFHLENBQUMsS0FBSyxFQUFFO1FBQ25FLFdBQVcsRUFBRSxVQUFVO1FBQ3ZCLGVBQWUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7S0FDL0IsQ0FBQyxDQUFBO0lBRUYsT0FBTyxJQUFBLHFCQUFhLEVBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBQ3JDLENBQUMsQ0FBQTtBQXBCWSxRQUFBLElBQUksUUFvQmhCIn0=
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.POST = void 0;
4
+ const types_1 = require("../../../../../../../modules/subscription/types");
5
+ const workflows_1 = require("../../../../../../../workflows");
6
+ const utils_1 = require("../../utils");
7
+ const POST = async (req, res) => {
8
+ await (0, utils_1.getOwnedSubscriptionForAction)(req, req.params.id);
9
+ await (0, workflows_1.scheduleSubscriptionPlanChangeWorkflow)(req.scope).run({
10
+ input: {
11
+ id: req.params.id,
12
+ requested_by: req.auth_context.actor_id,
13
+ variant_id: req.validatedBody.variant_id,
14
+ frequency_interval: req.validatedBody.frequency_interval === "week"
15
+ ? types_1.SubscriptionFrequencyInterval.WEEK
16
+ : req.validatedBody.frequency_interval === "month"
17
+ ? types_1.SubscriptionFrequencyInterval.MONTH
18
+ : types_1.SubscriptionFrequencyInterval.YEAR,
19
+ frequency_value: req.validatedBody.frequency_value,
20
+ effective_at: req.validatedBody.effective_at,
21
+ },
22
+ });
23
+ const customerId = await (0, utils_1.requireStoreCustomer)(req);
24
+ const response = await (0, utils_1.getStoreSubscriptionDetailResponse)(req.scope, {
25
+ customer_id: customerId,
26
+ subscription_id: req.params.id,
27
+ });
28
+ return (0, utils_1.sendStoreJson)(res, response);
29
+ };
30
+ exports.POST = POST;
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2N1c3RvbWVycy9tZS9zdWJzY3JpcHRpb25zL1tpZF0vc3dhcC1wcm9kdWN0L3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUtBLDJFQUErRjtBQUMvRiw4REFBdUY7QUFDdkYsdUNBS29CO0FBRWIsTUFBTSxJQUFJLEdBQUcsS0FBSyxFQUN2QixHQUEyRSxFQUMzRSxHQUFtQixFQUNuQixFQUFFO0lBQ0YsTUFBTSxJQUFBLHFDQUE2QixFQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBRXZELE1BQU0sSUFBQSxrREFBc0MsRUFBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQzFELEtBQUssRUFBRTtZQUNMLEVBQUUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDakIsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsUUFBUTtZQUN2QyxVQUFVLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxVQUFVO1lBQ3hDLGtCQUFrQixFQUNoQixHQUFHLENBQUMsYUFBYSxDQUFDLGtCQUFrQixLQUFLLE1BQU07Z0JBQzdDLENBQUMsQ0FBQyxxQ0FBNkIsQ0FBQyxJQUFJO2dCQUNwQyxDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsS0FBSyxPQUFPO29CQUNoRCxDQUFDLENBQUMscUNBQTZCLENBQUMsS0FBSztvQkFDckMsQ0FBQyxDQUFDLHFDQUE2QixDQUFDLElBQUk7WUFDMUMsZUFBZSxFQUFFLEdBQUcsQ0FBQyxhQUFhLENBQUMsZUFBZTtZQUNsRCxZQUFZLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxZQUFZO1NBQzdDO0tBQ0YsQ0FBQyxDQUFBO0lBRUYsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFBLDRCQUFvQixFQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2xELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSwwQ0FBa0MsRUFBQyxHQUFHLENBQUMsS0FBSyxFQUFFO1FBQ25FLFdBQVcsRUFBRSxVQUFVO1FBQ3ZCLGVBQWUsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7S0FDL0IsQ0FBQyxDQUFBO0lBRUYsT0FBTyxJQUFBLHFCQUFhLEVBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxDQUFBO0FBQ3JDLENBQUMsQ0FBQTtBQTdCWSxRQUFBLElBQUksUUE2QmhCIn0=
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.storeCustomerSubscriptionsMiddlewares = void 0;
4
+ const http_1 = require("@medusajs/framework/http");
5
+ const validators_1 = require("./validators");
6
+ const customerAuth = (0, http_1.authenticate)("customer", ["session", "bearer"]);
7
+ exports.storeCustomerSubscriptionsMiddlewares = [
8
+ {
9
+ matcher: "/store/customers/me/subscriptions*",
10
+ middlewares: [customerAuth],
11
+ },
12
+ {
13
+ matcher: "/store/customers/me/subscriptions/:id/cancellation",
14
+ method: "POST",
15
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.PostStoreStartCancellationSchema)],
16
+ },
17
+ {
18
+ matcher: "/store/customers/me/subscriptions/:id/pause",
19
+ method: "POST",
20
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.PostStorePauseSubscriptionSchema)],
21
+ },
22
+ {
23
+ matcher: "/store/customers/me/subscriptions/:id/resume",
24
+ method: "POST",
25
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.PostStoreResumeSubscriptionSchema)],
26
+ },
27
+ {
28
+ matcher: "/store/customers/me/subscriptions/:id/change-frequency",
29
+ method: "POST",
30
+ middlewares: [
31
+ (0, http_1.validateAndTransformBody)(validators_1.PostStoreChangeSubscriptionFrequencySchema),
32
+ ],
33
+ },
34
+ {
35
+ matcher: "/store/customers/me/subscriptions/:id/change-address",
36
+ method: "POST",
37
+ middlewares: [
38
+ (0, http_1.validateAndTransformBody)(validators_1.PostStoreChangeSubscriptionAddressSchema),
39
+ ],
40
+ },
41
+ {
42
+ matcher: "/store/customers/me/subscriptions/:id/retry-payment",
43
+ method: "POST",
44
+ middlewares: [
45
+ (0, http_1.validateAndTransformBody)(validators_1.PostStoreRetrySubscriptionPaymentSchema),
46
+ ],
47
+ },
48
+ {
49
+ matcher: "/store/customers/me/subscriptions/:id/swap-product",
50
+ method: "POST",
51
+ middlewares: [(0, http_1.validateAndTransformBody)(validators_1.PostStoreSwapSubscriptionProductSchema)],
52
+ },
53
+ ];
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2N1c3RvbWVycy9tZS9zdWJzY3JpcHRpb25zL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUlpQztBQUNqQyw2Q0FRcUI7QUFFckIsTUFBTSxZQUFZLEdBQUcsSUFBQSxtQkFBWSxFQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFBO0FBRXZELFFBQUEscUNBQXFDLEdBQXNCO0lBQ3RFO1FBQ0UsT0FBTyxFQUFFLG9DQUFvQztRQUM3QyxXQUFXLEVBQUUsQ0FBQyxZQUFZLENBQUM7S0FDNUI7SUFDRDtRQUNFLE9BQU8sRUFBRSxvREFBb0Q7UUFDN0QsTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLDZDQUFnQyxDQUFDLENBQUM7S0FDMUU7SUFDRDtRQUNFLE9BQU8sRUFBRSw2Q0FBNkM7UUFDdEQsTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLDZDQUFnQyxDQUFDLENBQUM7S0FDMUU7SUFDRDtRQUNFLE9BQU8sRUFBRSw4Q0FBOEM7UUFDdkQsTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLDhDQUFpQyxDQUFDLENBQUM7S0FDM0U7SUFDRDtRQUNFLE9BQU8sRUFBRSx3REFBd0Q7UUFDakUsTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUU7WUFDWCxJQUFBLCtCQUF3QixFQUFDLHVEQUEwQyxDQUFDO1NBQ3JFO0tBQ0Y7SUFDRDtRQUNFLE9BQU8sRUFBRSxzREFBc0Q7UUFDL0QsTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUU7WUFDWCxJQUFBLCtCQUF3QixFQUFDLHFEQUF3QyxDQUFDO1NBQ25FO0tBQ0Y7SUFDRDtRQUNFLE9BQU8sRUFBRSxxREFBcUQ7UUFDOUQsTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUU7WUFDWCxJQUFBLCtCQUF3QixFQUFDLG9EQUF1QyxDQUFDO1NBQ2xFO0tBQ0Y7SUFDRDtRQUNFLE9BQU8sRUFBRSxvREFBb0Q7UUFDN0QsTUFBTSxFQUFFLE1BQU07UUFDZCxXQUFXLEVBQUUsQ0FBQyxJQUFBLCtCQUF3QixFQUFDLG1EQUFzQyxDQUFDLENBQUM7S0FDaEY7Q0FDRixDQUFBIn0=