@abyss-project/main 20.1.0 → 21.0.0
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/dist/api/billing-account.admin.api.d.ts +9 -0
- package/dist/api/billing-account.admin.api.js +21 -1
- package/dist/api/billing-account.admin.api.js.map +1 -1
- package/dist/api/organization-billing.api.d.ts +15 -2
- package/dist/api/organization-billing.api.js +38 -1
- package/dist/api/organization-billing.api.js.map +1 -1
- package/dist/api/user-billing.api.d.ts +15 -2
- package/dist/api/user-billing.api.js +45 -1
- package/dist/api/user-billing.api.js.map +1 -1
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/index.js +1 -0
- package/dist/constants/index.js.map +1 -1
- package/dist/constants/public-plans.constants.js +8 -0
- package/dist/constants/public-plans.constants.js.map +1 -1
- package/dist/constants/unpaid-invoice.constants.d.ts +1 -0
- package/dist/constants/unpaid-invoice.constants.js +5 -0
- package/dist/constants/unpaid-invoice.constants.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -1
- package/dist/translate/en.translate.d.ts +24 -0
- package/dist/translate/en.translate.js +24 -0
- package/dist/translate/en.translate.js.map +1 -1
- package/dist/translate/fr.translate.d.ts +24 -0
- package/dist/translate/fr.translate.js +24 -0
- package/dist/translate/fr.translate.js.map +1 -1
- package/dist/types/enum/api-error.enum.d.ts +3 -0
- package/dist/types/enum/api-error.enum.js +3 -0
- package/dist/types/enum/api-error.enum.js.map +1 -1
- package/dist/types/enum/billing-interval.enum.d.ts +8 -0
- package/dist/types/enum/billing-interval.enum.js +14 -0
- package/dist/types/enum/billing-interval.enum.js.map +1 -0
- package/dist/types/enum/billing-subscription-event.enum.d.ts +27 -0
- package/dist/types/enum/billing-subscription-event.enum.js +34 -0
- package/dist/types/enum/billing-subscription-event.enum.js.map +1 -0
- package/dist/types/enum/email-type.enum.d.ts +6 -0
- package/dist/types/enum/email-type.enum.js +6 -0
- package/dist/types/enum/email-type.enum.js.map +1 -1
- package/dist/types/enum/index.d.ts +4 -0
- package/dist/types/enum/index.js +4 -0
- package/dist/types/enum/index.js.map +1 -1
- package/dist/types/enum/loyalty-grant-mode.enum.d.ts +4 -0
- package/dist/types/enum/loyalty-grant-mode.enum.js +9 -0
- package/dist/types/enum/loyalty-grant-mode.enum.js.map +1 -0
- package/dist/types/enum/subscription-pause.enum.d.ts +6 -0
- package/dist/types/enum/subscription-pause.enum.js +11 -0
- package/dist/types/enum/subscription-pause.enum.js.map +1 -0
- package/dist/types/enum/user-notification-category.enum.js +6 -0
- package/dist/types/enum/user-notification-category.enum.js.map +1 -1
- package/dist/types/enum/user-notification-content-type.enum.d.ts +30 -0
- package/dist/types/enum/user-notification-content-type.enum.js +7 -1
- package/dist/types/enum/user-notification-content-type.enum.js.map +1 -1
- package/dist/types/interface/api/index.d.ts +8 -0
- package/dist/types/interface/api/index.js +8 -0
- package/dist/types/interface/api/index.js.map +1 -1
- package/dist/types/interface/api/requests/loyalty-rule.admin.request.d.ts +16 -0
- package/dist/types/interface/api/requests/loyalty-rule.admin.request.js +3 -0
- package/dist/types/interface/api/requests/loyalty-rule.admin.request.js.map +1 -0
- package/dist/types/interface/api/requests/organization-billing.request.d.ts +15 -1
- package/dist/types/interface/api/requests/retention-metrics.admin.request.d.ts +4 -0
- package/dist/types/interface/api/requests/retention-metrics.admin.request.js +3 -0
- package/dist/types/interface/api/requests/retention-metrics.admin.request.js.map +1 -0
- package/dist/types/interface/api/requests/subscription-retention.request.d.ts +34 -0
- package/dist/types/interface/api/requests/subscription-retention.request.js +3 -0
- package/dist/types/interface/api/requests/subscription-retention.request.js.map +1 -0
- package/dist/types/interface/api/requests/user-billing.request.d.ts +12 -1
- package/dist/types/interface/api/responses/billing-module.response.d.ts +1 -0
- package/dist/types/interface/api/responses/billing-plan.response.d.ts +1 -0
- package/dist/types/interface/api/responses/loyalty-bonus.response.d.ts +16 -0
- package/dist/types/interface/api/responses/loyalty-bonus.response.js +3 -0
- package/dist/types/interface/api/responses/loyalty-bonus.response.js.map +1 -0
- package/dist/types/interface/api/responses/loyalty-rule.admin.response.d.ts +12 -0
- package/dist/types/interface/api/responses/loyalty-rule.admin.response.js +3 -0
- package/dist/types/interface/api/responses/loyalty-rule.admin.response.js.map +1 -0
- package/dist/types/interface/api/responses/organization-billing.response.d.ts +3 -1
- package/dist/types/interface/api/responses/retention-metrics.admin.response.d.ts +29 -0
- package/dist/types/interface/api/responses/retention-metrics.admin.response.js +3 -0
- package/dist/types/interface/api/responses/retention-metrics.admin.response.js.map +1 -0
- package/dist/types/interface/api/responses/subscription-retention.response.d.ts +11 -0
- package/dist/types/interface/api/responses/subscription-retention.response.js +3 -0
- package/dist/types/interface/api/responses/subscription-retention.response.js.map +1 -0
- package/dist/types/interface/api/responses/unpaid-amount.response.d.ts +9 -0
- package/dist/types/interface/api/responses/unpaid-amount.response.js +3 -0
- package/dist/types/interface/api/responses/unpaid-amount.response.js.map +1 -0
- package/dist/types/interface/api/responses/user-billing.response.d.ts +14 -1
- package/dist/types/interface/index.d.ts +2 -0
- package/dist/types/interface/index.js +2 -0
- package/dist/types/interface/index.js.map +1 -1
- package/dist/types/interface/models/billing-account.model.d.ts +22 -1
- package/dist/types/interface/models/billing-subscription-event.model.d.ts +17 -0
- package/dist/types/interface/models/billing-subscription-event.model.js +3 -0
- package/dist/types/interface/models/billing-subscription-event.model.js.map +1 -0
- package/dist/types/interface/models/index.d.ts +2 -0
- package/dist/types/interface/models/index.js +2 -0
- package/dist/types/interface/models/index.js.map +1 -1
- package/dist/types/interface/models/loyalty-rule.model.d.ts +12 -0
- package/dist/types/interface/models/loyalty-rule.model.js +3 -0
- package/dist/types/interface/models/loyalty-rule.model.js.map +1 -0
- package/dist/types/interface/models/plan-template.model.d.ts +1 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/pricing.utils.d.ts +11 -1
- package/dist/utils/pricing.utils.js +55 -8
- package/dist/utils/pricing.utils.js.map +1 -1
- package/dist/utils/subscription-retention.utils.d.ts +12 -0
- package/dist/utils/subscription-retention.utils.js +40 -0
- package/dist/utils/subscription-retention.utils.js.map +1 -0
- package/dist/utils/tests/annual-price.utils.spec.d.ts +1 -0
- package/dist/utils/tests/annual-price.utils.spec.js +50 -0
- package/dist/utils/tests/annual-price.utils.spec.js.map +1 -0
- package/dist/utils/tests/pricing-calculator.utils.spec.js +1 -0
- package/dist/utils/tests/pricing-calculator.utils.spec.js.map +1 -1
- package/dist/utils/tests/subscription-retention.utils.spec.d.ts +1 -0
- package/dist/utils/tests/subscription-retention.utils.spec.js +80 -0
- package/dist/utils/tests/subscription-retention.utils.spec.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/interface/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,yDAAuC;AACvC,gEAA8C;AAC9C,4EAA0D;AAC1D,6DAA2C;AAC3C,mEAAiD;AACjD,yEAAuD;AACvD,+DAA6C;AAC7C,+DAA6C;AAC7C,8DAA4C;AAC5C,mEAAiD;AACjD,oEAAkD;AAGlD,2DAAyC;AACzC,sEAAoD;AAGpD,wCAAsB;AAGtB,uDAAqC;AAGrC,wDAAsC;AACtC,gEAA8C;AAC9C,8DAA4C;AAC5C,oEAAkD;AAClD,oEAAkD;AAClD,qEAAmD;AACnD,8EAA4D;AAC5D,kFAAgE;AAGhE,8DAA4C;AAC5C,0EAAwD;AACxD,qEAAmD;AACnD,gFAA8D;AAC9D,mEAAiD;AAGjD,+DAA6C;AAC7C,iEAA+C;AAC/C,uEAAqD;AACrD,4EAA0D;AAC1D,4EAA0D;AAC1D,8DAA4C;AAC5C,yDAAuC;AACvC,8DAA4C;AAC5C,oEAAkD;AAClD,6DAA2C;AAC3C,oEAAkD;AAClD,iEAA+C;AAC/C,0EAAwD;AACxD,6DAA2C;AAC3C,sEAAoD;AACpD,mEAAiD;AACjD,mEAAiD;AACjD,kEAAgD;AAChD,qEAAmD;AACnD,wEAAsD;AACtD,+DAA6C;AAC7C,8DAA4C;AAC5C,qEAAmD;AACnD,sDAAoC;AACpC,6DAA2C;AAC3C,qEAAmD;AACnD,iFAA+D;AAC/D,iEAA+C;AAC/C,oFAAkE;AAGlE,kEAAgD;AAGhD,mEAAiD;AAGjD,+DAA6C;AAO7C,gEAA8C;AAG9C,gEAA8C;AAC9C,wEAAsD;AACtD,2EAAyD;AACzD,oEAAkD;AAClD,yEAAuD;AAGvD,4DAA0C;AAG1C,4DAA0C;AAG1C,qEAAmD;AAKnD,kEAAgD;AAGhD,iEAA+C;AAC/C,4DAA0C;AAG1C,yDAAuC;AACvC,yDAAuC;AAGvC,gEAA8C;AAC9C,qEAAmD;AACnD,wCAAsB;AAGtB,0DAAwC;AAGxC,+DAA6C;AAG7C,yDAAuC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/interface/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,yDAAuC;AACvC,gEAA8C;AAC9C,4EAA0D;AAC1D,6DAA2C;AAC3C,mEAAiD;AACjD,yEAAuD;AACvD,+DAA6C;AAC7C,+DAA6C;AAC7C,8DAA4C;AAC5C,mEAAiD;AACjD,oEAAkD;AAGlD,2DAAyC;AACzC,sEAAoD;AAGpD,wCAAsB;AAGtB,uDAAqC;AAGrC,wDAAsC;AACtC,gEAA8C;AAC9C,8DAA4C;AAC5C,oEAAkD;AAClD,oEAAkD;AAClD,qEAAmD;AACnD,8EAA4D;AAC5D,kFAAgE;AAGhE,8DAA4C;AAC5C,0EAAwD;AACxD,qEAAmD;AACnD,gFAA8D;AAC9D,mEAAiD;AAGjD,+DAA6C;AAC7C,iEAA+C;AAC/C,uEAAqD;AACrD,4EAA0D;AAC1D,4EAA0D;AAC1D,8DAA4C;AAC5C,yDAAuC;AACvC,8DAA4C;AAC5C,oEAAkD;AAClD,6DAA2C;AAC3C,oEAAkD;AAClD,iEAA+C;AAC/C,0EAAwD;AACxD,6DAA2C;AAC3C,sEAAoD;AACpD,mEAAiD;AACjD,mEAAiD;AACjD,kEAAgD;AAChD,qEAAmD;AACnD,wEAAsD;AACtD,+DAA6C;AAC7C,8DAA4C;AAC5C,qEAAmD;AACnD,sDAAoC;AACpC,6DAA2C;AAC3C,qEAAmD;AACnD,iFAA+D;AAC/D,iEAA+C;AAC/C,oFAAkE;AAGlE,kEAAgD;AAGhD,mEAAiD;AAGjD,+DAA6C;AAO7C,gEAA8C;AAG9C,gEAA8C;AAC9C,wEAAsD;AACtD,2EAAyD;AACzD,oEAAkD;AAClD,yEAAuD;AAGvD,4DAA0C;AAG1C,4DAA0C;AAG1C,qEAAmD;AAKnD,kEAAgD;AAGhD,iEAA+C;AAC/C,4DAA0C;AAG1C,yDAAuC;AACvC,yDAAuC;AAGvC,gEAA8C;AAC9C,qEAAmD;AACnD,wCAAsB;AAGtB,0DAAwC;AAGxC,+DAA6C;AAG7C,yDAAuC;AAGvC,4EAA0D;AAC1D,8DAA4C"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { BillingAccountStatus } from '../../enum';
|
|
1
|
+
import { BillingAccountStatus, BillingAddonStatus, BillingInterval } from '../../enum';
|
|
2
|
+
import { BillingModuleId } from '../../../constants/module-catalog.constants';
|
|
2
3
|
import { IOrganization } from './organization.model';
|
|
3
4
|
import { IUser } from './user.model';
|
|
4
5
|
import { IPlanTemplate } from './plan-template.model';
|
|
@@ -13,6 +14,17 @@ export interface IBillingAddress {
|
|
|
13
14
|
postalCode: string;
|
|
14
15
|
country: string;
|
|
15
16
|
}
|
|
17
|
+
export interface IPausedSubscriptionModule {
|
|
18
|
+
moduleId: BillingModuleId;
|
|
19
|
+
quantity: number;
|
|
20
|
+
status: BillingAddonStatus.ACTIVE | BillingAddonStatus.SUSPENDED_BY_PLAN;
|
|
21
|
+
}
|
|
22
|
+
export interface IPausedSubscriptionSnapshot {
|
|
23
|
+
planTemplateId: string;
|
|
24
|
+
interval: BillingInterval;
|
|
25
|
+
modules: IPausedSubscriptionModule[];
|
|
26
|
+
pausedAt: string;
|
|
27
|
+
}
|
|
16
28
|
export interface IBillingAccount {
|
|
17
29
|
id?: string;
|
|
18
30
|
userId: string | null;
|
|
@@ -36,6 +48,15 @@ export interface IBillingAccount {
|
|
|
36
48
|
currentPeriodEnd: Date;
|
|
37
49
|
billingAnchorDay: number | null;
|
|
38
50
|
trialEndsAt: Date | null;
|
|
51
|
+
paidSince: Date | null;
|
|
52
|
+
billingInterval: BillingInterval;
|
|
53
|
+
pendingBillingInterval: BillingInterval | null;
|
|
54
|
+
annualPeriodStart: Date | null;
|
|
55
|
+
annualPeriodEnd: Date | null;
|
|
56
|
+
pauseStartsAt: Date | null;
|
|
57
|
+
pauseEndsAt: Date | null;
|
|
58
|
+
pausedSnapshot: IPausedSubscriptionSnapshot | null;
|
|
59
|
+
pauseResumeFailedAt: Date | null;
|
|
39
60
|
unpaidStripeInvoiceIds: string[];
|
|
40
61
|
openStripeDisputeIds: string[];
|
|
41
62
|
billingEmail: string | null;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BillingInterval, BillingSubscriptionEventType } from '../../enum';
|
|
2
|
+
export interface IBillingSubscriptionEvent {
|
|
3
|
+
id: string;
|
|
4
|
+
billingAccountId: string;
|
|
5
|
+
type: BillingSubscriptionEventType;
|
|
6
|
+
occurredAt: Date;
|
|
7
|
+
planBefore: string | null;
|
|
8
|
+
planAfter: string | null;
|
|
9
|
+
intervalBefore: BillingInterval | null;
|
|
10
|
+
intervalAfter: BillingInterval | null;
|
|
11
|
+
mrrCentsBefore: number | null;
|
|
12
|
+
mrrCentsAfter: number | null;
|
|
13
|
+
payload: Record<string, unknown>;
|
|
14
|
+
stripeEventId: string | null;
|
|
15
|
+
createdAt: Date;
|
|
16
|
+
updatedAt: Date;
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"billing-subscription-event.model.js","sourceRoot":"","sources":["../../../../src/types/interface/models/billing-subscription-event.model.ts"],"names":[],"mappings":""}
|
|
@@ -35,6 +35,8 @@ export * from './billing-quota-cap.model';
|
|
|
35
35
|
export * from './quota-reservation.model';
|
|
36
36
|
export * from './storage-subtotal.model';
|
|
37
37
|
export * from './billing-trial-grant.model';
|
|
38
|
+
export * from './billing-subscription-event.model';
|
|
39
|
+
export * from './loyalty-rule.model';
|
|
38
40
|
export * from './billing-daily-snapshot.model';
|
|
39
41
|
export * from './webhook-event.model';
|
|
40
42
|
export * from './ledger-entry.model';
|
|
@@ -51,6 +51,8 @@ __exportStar(require("./billing-quota-cap.model"), exports);
|
|
|
51
51
|
__exportStar(require("./quota-reservation.model"), exports);
|
|
52
52
|
__exportStar(require("./storage-subtotal.model"), exports);
|
|
53
53
|
__exportStar(require("./billing-trial-grant.model"), exports);
|
|
54
|
+
__exportStar(require("./billing-subscription-event.model"), exports);
|
|
55
|
+
__exportStar(require("./loyalty-rule.model"), exports);
|
|
54
56
|
__exportStar(require("./billing-daily-snapshot.model"), exports);
|
|
55
57
|
__exportStar(require("./webhook-event.model"), exports);
|
|
56
58
|
__exportStar(require("./ledger-entry.model"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/types/interface/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,kDAAgC;AAChC,yDAAuC;AACvC,qEAAmD;AACnD,sDAAoC;AACpC,4DAA0C;AAC1C,wDAAsC;AACtC,wDAAsC;AACtC,uDAAqC;AACrC,4DAA0C;AAC1C,6DAA2C;AAG3C,oDAAkC;AAClC,+DAA6C;AAG7C,gDAA8B;AAG9B,iDAA+B;AAG/B,uDAAqC;AACrC,mEAAiD;AACjD,8DAA4C;AAG5C,wDAAsC;AACtC,0DAAwC;AACxC,gEAA8C;AAC9C,qEAAmD;AACnD,qEAAmD;AACnD,uDAAqC;AACrC,kDAAgC;AAChC,uDAAqC;AACrC,6DAA2C;AAC3C,sDAAoC;AACpC,6DAA2C;AAC3C,0DAAwC;AACxC,mEAAiD;AACjD,sDAAoC;AACpC,+DAA6C;AAC7C,4DAA0C;AAC1C,4DAA0C;AAC1C,2DAAyC;AACzC,8DAA4C;AAC5C,iEAA+C;AAC/C,wDAAsC;AACtC,uDAAqC;AACrC,8DAA4C;AAC5C,+CAA6B;AAC7B,sDAAoC;AACpC,8DAA4C;AAC5C,0EAAwD;AACxD,0DAAwC;AACxC,6EAA2D;AAG3D,2DAAyC;AAGzC,4DAA0C;AAG1C,wDAAsC;AAGtC,yDAAuC;AACvC,iEAA+C;AAC/C,oEAAkD;AAClD,yDAAuC;AACvC,6DAA2C;AAC3C,kEAAgD;AAGhD,qDAAmC;AAGnC,qDAAmC;AAGnC,8DAA4C;AAK5C,2DAAyC;AAGzC,0DAAwC;AAGxC,kDAAgC;AAChC,kDAAgC;AAGhC,yDAAuC;AACvC,8DAA4C;AAG5C,mDAAiC;AAGjC,wDAAsC;AAGtC,kDAAgC;AAEhC,6DAA2C;AAC3C,8DAA4C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/types/interface/models/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,kDAAgC;AAChC,yDAAuC;AACvC,qEAAmD;AACnD,sDAAoC;AACpC,4DAA0C;AAC1C,wDAAsC;AACtC,wDAAsC;AACtC,uDAAqC;AACrC,4DAA0C;AAC1C,6DAA2C;AAG3C,oDAAkC;AAClC,+DAA6C;AAG7C,gDAA8B;AAG9B,iDAA+B;AAG/B,uDAAqC;AACrC,mEAAiD;AACjD,8DAA4C;AAG5C,wDAAsC;AACtC,0DAAwC;AACxC,gEAA8C;AAC9C,qEAAmD;AACnD,qEAAmD;AACnD,uDAAqC;AACrC,kDAAgC;AAChC,uDAAqC;AACrC,6DAA2C;AAC3C,sDAAoC;AACpC,6DAA2C;AAC3C,0DAAwC;AACxC,mEAAiD;AACjD,sDAAoC;AACpC,+DAA6C;AAC7C,4DAA0C;AAC1C,4DAA0C;AAC1C,2DAAyC;AACzC,8DAA4C;AAC5C,qEAAmD;AACnD,uDAAqC;AACrC,iEAA+C;AAC/C,wDAAsC;AACtC,uDAAqC;AACrC,8DAA4C;AAC5C,+CAA6B;AAC7B,sDAAoC;AACpC,8DAA4C;AAC5C,0EAAwD;AACxD,0DAAwC;AACxC,6EAA2D;AAG3D,2DAAyC;AAGzC,4DAA0C;AAG1C,wDAAsC;AAGtC,yDAAuC;AACvC,iEAA+C;AAC/C,oEAAkD;AAClD,yDAAuC;AACvC,6DAA2C;AAC3C,kEAAgD;AAGhD,qDAAmC;AAGnC,qDAAmC;AAGnC,8DAA4C;AAK5C,2DAAyC;AAGzC,0DAAwC;AAGxC,kDAAgC;AAChC,kDAAgC;AAGhC,yDAAuC;AACvC,8DAA4C;AAG5C,mDAAiC;AAGjC,wDAAsC;AAGtC,kDAAgC;AAEhC,6DAA2C;AAC3C,8DAA4C"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BillingMetric, LoyaltyGrantMode, PlanAccountType } from '../../enum';
|
|
2
|
+
export interface ILoyaltyRule {
|
|
3
|
+
id: string;
|
|
4
|
+
metric: BillingMetric;
|
|
5
|
+
minTenureMonths: number;
|
|
6
|
+
mode: LoyaltyGrantMode;
|
|
7
|
+
value: number;
|
|
8
|
+
scopes: PlanAccountType[];
|
|
9
|
+
active: boolean;
|
|
10
|
+
createdAt: Date;
|
|
11
|
+
updatedAt: Date;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loyalty-rule.model.js","sourceRoot":"","sources":["../../../../src/types/interface/models/loyalty-rule.model.ts"],"names":[],"mappings":""}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ export * from './invoice-amounts.utils';
|
|
|
25
25
|
export * from './invoice-line-label.utils';
|
|
26
26
|
export * from './resolve-user.utils';
|
|
27
27
|
export * from './record-presence.utils';
|
|
28
|
+
export * from './subscription-retention.utils';
|
|
28
29
|
export * from './pricing.utils';
|
|
29
30
|
export * from './plan-capacity.utils';
|
|
30
31
|
export * from './billing-deep-link.utils';
|
package/dist/utils/index.js
CHANGED
|
@@ -41,6 +41,7 @@ __exportStar(require("./invoice-amounts.utils"), exports);
|
|
|
41
41
|
__exportStar(require("./invoice-line-label.utils"), exports);
|
|
42
42
|
__exportStar(require("./resolve-user.utils"), exports);
|
|
43
43
|
__exportStar(require("./record-presence.utils"), exports);
|
|
44
|
+
__exportStar(require("./subscription-retention.utils"), exports);
|
|
44
45
|
__exportStar(require("./pricing.utils"), exports);
|
|
45
46
|
__exportStar(require("./plan-capacity.utils"), exports);
|
|
46
47
|
__exportStar(require("./billing-deep-link.utils"), exports);
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,gDAA8B;AAC9B,0DAAwC;AACxC,+CAA6B;AAC7B,iDAA+B;AAC/B,uDAAqC;AACrC,gDAA8B;AAC9B,gDAA8B;AAC9B,gDAA8B;AAC9B,gDAA8B;AAC9B,+CAA6B;AAC7B,sDAAoC;AACpC,iDAA+B;AAC/B,mDAAiC;AACjC,mDAAiC;AACjC,sDAAoC;AACpC,kDAAgC;AAChC,wDAAsC;AACtC,wDAAsC;AACtC,wDAAsC;AACtC,6DAA2C;AAC3C,8DAA4C;AAC5C,qDAAmC;AACnC,0DAAwC;AACxC,6DAA2C;AAC3C,uDAAqC;AACrC,0DAAwC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC;AACtC,gDAA8B;AAC9B,0DAAwC;AACxC,+CAA6B;AAC7B,iDAA+B;AAC/B,uDAAqC;AACrC,gDAA8B;AAC9B,gDAA8B;AAC9B,gDAA8B;AAC9B,gDAA8B;AAC9B,+CAA6B;AAC7B,sDAAoC;AACpC,iDAA+B;AAC/B,mDAAiC;AACjC,mDAAiC;AACjC,sDAAoC;AACpC,kDAAgC;AAChC,wDAAsC;AACtC,wDAAsC;AACtC,wDAAsC;AACtC,6DAA2C;AAC3C,8DAA4C;AAC5C,qDAAmC;AACnC,0DAAwC;AACxC,6DAA2C;AAC3C,uDAAqC;AACrC,0DAAwC;AACxC,iEAA+C;AAI/C,kDAAgC;AAChC,wDAAsC;AACtC,4DAA0C"}
|
|
@@ -2,6 +2,7 @@ import { BillingPackId } from '../constants/pack-catalog.constants';
|
|
|
2
2
|
import { BillingModuleId } from '../constants/module-catalog.constants';
|
|
3
3
|
import { PriceTranche } from '../constants/metric-price-scale.constants';
|
|
4
4
|
import { BillingMetric } from '../types/enum/organization-billing.enum';
|
|
5
|
+
import { BillingInterval } from '../types/enum/billing-interval.enum';
|
|
5
6
|
export declare const priceForQuantity: (scale: PriceTranche[], quantity: number) => number;
|
|
6
7
|
export declare const quantityForBudget: (scale: PriceTranche[], budgetCents: number) => number;
|
|
7
8
|
export declare const overageNanocentsPerUnit: (scale: PriceTranche[]) => number;
|
|
@@ -37,8 +38,17 @@ export interface StripePriceTier {
|
|
|
37
38
|
}
|
|
38
39
|
export declare const shiftedTiersForModule: (scale: PriceTranche[], includedQuantity: number) => StripePriceTier[];
|
|
39
40
|
export declare const modulePriceCentsFor: (scale: PriceTranche[], includedQuantity: number, quantity: number) => number;
|
|
41
|
+
export declare const moduleExactPriceCentsFor: (scale: PriceTranche[], includedQuantity: number, quantity: number) => number;
|
|
40
42
|
export declare const moduleMonthlyPriceCents: (moduleId: BillingModuleId, includedQuantity: number, quantity: number) => number;
|
|
43
|
+
export declare const moduleExactMonthlyPriceCents: (moduleId: BillingModuleId, includedQuantity: number, quantity: number) => number;
|
|
44
|
+
export declare const moduleIntervalPriceCents: (moduleId: BillingModuleId, includedQuantity: number, quantity: number, interval: BillingInterval) => number;
|
|
41
45
|
export declare const moduleMetricUnits: (moduleId: BillingModuleId, lots: number) => number;
|
|
42
46
|
export declare const remainingPeriodShare: (now: Date, periodStart: Date, periodEnd: Date) => number;
|
|
43
|
-
export declare const moduleProratedPriceCents: (moduleId: BillingModuleId, includedQuantity: number, quantity: number, now: Date, periodStart: Date, periodEnd: Date) => number;
|
|
47
|
+
export declare const moduleProratedPriceCents: (moduleId: BillingModuleId, includedQuantity: number, quantity: number, now: Date, periodStart: Date, periodEnd: Date, interval?: BillingInterval) => number;
|
|
44
48
|
export declare const packMonthlyPriceCents: (packId: BillingPackId, includedByModule: Partial<Record<BillingModuleId, number>>) => number;
|
|
49
|
+
export declare const ANNUAL_MONTHS_CHARGED = 10;
|
|
50
|
+
export declare const annualPriceCents: (monthlyCents: number) => number;
|
|
51
|
+
export declare const intervalPriceCents: (monthlyCents: number, interval: BillingInterval) => number;
|
|
52
|
+
export declare const monthlyEquivalentCents: (priceCents: number, interval: BillingInterval) => number;
|
|
53
|
+
export declare const decimalTimesTen: (decimal: string) => string;
|
|
54
|
+
export declare const annualTiersForModule: (tiers: StripePriceTier[]) => StripePriceTier[];
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.packMonthlyPriceCents = exports.moduleProratedPriceCents = exports.remainingPeriodShare = exports.moduleMetricUnits = exports.moduleMonthlyPriceCents = exports.modulePriceCentsFor = exports.shiftedTiersForModule = exports.quoteOverageRate = exports.OVERAGE_QUOTE_QUANTITIES = exports.formatNanoCentsAsEur = exports.planCapacityShare = exports.planCapacityValueCents = exports.overagePriceCents = exports.overageAmountCents = exports.resolveOverageNanocentsPerUnit = exports.resolveOverageRate = exports.OverageRateSource = exports.overageNanocentsPerUnit = exports.quantityForBudget = exports.priceForQuantity = void 0;
|
|
3
|
+
exports.annualTiersForModule = exports.decimalTimesTen = exports.monthlyEquivalentCents = exports.intervalPriceCents = exports.annualPriceCents = exports.ANNUAL_MONTHS_CHARGED = exports.packMonthlyPriceCents = exports.moduleProratedPriceCents = exports.remainingPeriodShare = exports.moduleMetricUnits = exports.moduleIntervalPriceCents = exports.moduleExactMonthlyPriceCents = exports.moduleMonthlyPriceCents = exports.moduleExactPriceCentsFor = exports.modulePriceCentsFor = exports.shiftedTiersForModule = exports.quoteOverageRate = exports.OVERAGE_QUOTE_QUANTITIES = exports.formatNanoCentsAsEur = exports.planCapacityShare = exports.planCapacityValueCents = exports.overagePriceCents = exports.overageAmountCents = exports.resolveOverageNanocentsPerUnit = exports.resolveOverageRate = exports.OverageRateSource = exports.overageNanocentsPerUnit = exports.quantityForBudget = exports.priceForQuantity = void 0;
|
|
4
4
|
const pack_catalog_constants_1 = require("../constants/pack-catalog.constants");
|
|
5
5
|
const overage_base_rates_constants_1 = require("../constants/overage-base-rates.constants");
|
|
6
6
|
const module_catalog_constants_1 = require("../constants/module-catalog.constants");
|
|
7
7
|
const metric_price_scale_constants_1 = require("../constants/metric-price-scale.constants");
|
|
8
|
+
const billing_interval_enum_1 = require("../types/enum/billing-interval.enum");
|
|
8
9
|
const priceForQuantity = (scale, quantity) => {
|
|
9
10
|
if (!Number.isFinite(quantity) || quantity <= 0) {
|
|
10
11
|
return 0;
|
|
@@ -170,7 +171,9 @@ const shiftedTiersForModule = (scale, includedQuantity) => {
|
|
|
170
171
|
return tiers;
|
|
171
172
|
};
|
|
172
173
|
exports.shiftedTiersForModule = shiftedTiersForModule;
|
|
173
|
-
const modulePriceCentsFor = (scale, includedQuantity, quantity) =>
|
|
174
|
+
const modulePriceCentsFor = (scale, includedQuantity, quantity) => Math.round((0, exports.moduleExactPriceCentsFor)(scale, includedQuantity, quantity));
|
|
175
|
+
exports.modulePriceCentsFor = modulePriceCentsFor;
|
|
176
|
+
const moduleExactPriceCentsFor = (scale, includedQuantity, quantity) => {
|
|
174
177
|
if (!Number.isFinite(quantity) || quantity <= 0) {
|
|
175
178
|
return 0;
|
|
176
179
|
}
|
|
@@ -190,10 +193,12 @@ const modulePriceCentsFor = (scale, includedQuantity, quantity) => {
|
|
|
190
193
|
break;
|
|
191
194
|
}
|
|
192
195
|
}
|
|
193
|
-
return
|
|
196
|
+
return centimes;
|
|
194
197
|
};
|
|
195
|
-
exports.
|
|
196
|
-
const moduleMonthlyPriceCents = (moduleId, includedQuantity, quantity) =>
|
|
198
|
+
exports.moduleExactPriceCentsFor = moduleExactPriceCentsFor;
|
|
199
|
+
const moduleMonthlyPriceCents = (moduleId, includedQuantity, quantity) => Math.round((0, exports.moduleExactMonthlyPriceCents)(moduleId, includedQuantity, quantity));
|
|
200
|
+
exports.moduleMonthlyPriceCents = moduleMonthlyPriceCents;
|
|
201
|
+
const moduleExactMonthlyPriceCents = (moduleId, includedQuantity, quantity) => {
|
|
197
202
|
const module = (0, module_catalog_constants_1.moduleById)(moduleId);
|
|
198
203
|
if (!module || !Number.isFinite(quantity) || quantity <= 0) {
|
|
199
204
|
return 0;
|
|
@@ -205,9 +210,11 @@ const moduleMonthlyPriceCents = (moduleId, includedQuantity, quantity) => {
|
|
|
205
210
|
if (!scale) {
|
|
206
211
|
return 0;
|
|
207
212
|
}
|
|
208
|
-
return (0, exports.
|
|
213
|
+
return (0, exports.moduleExactPriceCentsFor)(scale, includedQuantity, (0, exports.moduleMetricUnits)(module.id, quantity));
|
|
209
214
|
};
|
|
210
|
-
exports.
|
|
215
|
+
exports.moduleExactMonthlyPriceCents = moduleExactMonthlyPriceCents;
|
|
216
|
+
const moduleIntervalPriceCents = (moduleId, includedQuantity, quantity, interval) => (0, exports.intervalPriceCents)((0, exports.moduleExactMonthlyPriceCents)(moduleId, includedQuantity, quantity), interval);
|
|
217
|
+
exports.moduleIntervalPriceCents = moduleIntervalPriceCents;
|
|
211
218
|
const moduleMetricUnits = (moduleId, lots) => {
|
|
212
219
|
const module = (0, module_catalog_constants_1.moduleById)(moduleId);
|
|
213
220
|
if (!module || !Number.isFinite(lots) || lots <= 0) {
|
|
@@ -234,7 +241,7 @@ const remainingPeriodShare = (now, periodStart, periodEnd) => {
|
|
|
234
241
|
return Math.min(1, restant / duree);
|
|
235
242
|
};
|
|
236
243
|
exports.remainingPeriodShare = remainingPeriodShare;
|
|
237
|
-
const moduleProratedPriceCents = (moduleId, includedQuantity, quantity, now, periodStart, periodEnd) => Math.floor((0, exports.
|
|
244
|
+
const moduleProratedPriceCents = (moduleId, includedQuantity, quantity, now, periodStart, periodEnd, interval = billing_interval_enum_1.BillingInterval.MONTH) => Math.floor((0, exports.moduleIntervalPriceCents)(moduleId, includedQuantity, quantity, interval) *
|
|
238
245
|
(0, exports.remainingPeriodShare)(now, periodStart, periodEnd));
|
|
239
246
|
exports.moduleProratedPriceCents = moduleProratedPriceCents;
|
|
240
247
|
const packMonthlyPriceCents = (packId, includedByModule) => {
|
|
@@ -246,4 +253,44 @@ const packMonthlyPriceCents = (packId, includedByModule) => {
|
|
|
246
253
|
return Math.round(somme * (1 - pack_catalog_constants_1.PACK_DISCOUNT_RATE));
|
|
247
254
|
};
|
|
248
255
|
exports.packMonthlyPriceCents = packMonthlyPriceCents;
|
|
256
|
+
exports.ANNUAL_MONTHS_CHARGED = 10;
|
|
257
|
+
const MONTHS_PER_YEAR = 12;
|
|
258
|
+
const annualPriceCents = (monthlyCents) => {
|
|
259
|
+
if (!Number.isFinite(monthlyCents) || monthlyCents <= 0) {
|
|
260
|
+
return 0;
|
|
261
|
+
}
|
|
262
|
+
return Math.round(monthlyCents * exports.ANNUAL_MONTHS_CHARGED);
|
|
263
|
+
};
|
|
264
|
+
exports.annualPriceCents = annualPriceCents;
|
|
265
|
+
const intervalPriceCents = (monthlyCents, interval) => {
|
|
266
|
+
if (interval === billing_interval_enum_1.BillingInterval.YEAR) {
|
|
267
|
+
return (0, exports.annualPriceCents)(monthlyCents);
|
|
268
|
+
}
|
|
269
|
+
if (!Number.isFinite(monthlyCents) || monthlyCents <= 0) {
|
|
270
|
+
return 0;
|
|
271
|
+
}
|
|
272
|
+
return Math.round(monthlyCents);
|
|
273
|
+
};
|
|
274
|
+
exports.intervalPriceCents = intervalPriceCents;
|
|
275
|
+
const monthlyEquivalentCents = (priceCents, interval) => interval === billing_interval_enum_1.BillingInterval.YEAR ? Math.round(priceCents / MONTHS_PER_YEAR) : priceCents;
|
|
276
|
+
exports.monthlyEquivalentCents = monthlyEquivalentCents;
|
|
277
|
+
const decimalTimesTen = (decimal) => {
|
|
278
|
+
const [mantissa, exponentText = '0'] = decimal.toLowerCase().split('e');
|
|
279
|
+
const [integerPart, fractionPart = ''] = mantissa.split('.');
|
|
280
|
+
const digits = `${integerPart}${fractionPart}`;
|
|
281
|
+
const pointIndex = integerPart.length + Number(exponentText) + 1;
|
|
282
|
+
const padded = pointIndex <= 0
|
|
283
|
+
? `${'0'.repeat(1 - pointIndex)}${digits}`
|
|
284
|
+
: digits.padEnd(Math.max(digits.length, pointIndex), '0');
|
|
285
|
+
const at = Math.max(pointIndex, 1);
|
|
286
|
+
const whole = padded.slice(0, at).replace(/^0+(?=\d)/, '');
|
|
287
|
+
const fraction = padded.slice(at).replace(/0+$/, '');
|
|
288
|
+
return fraction.length > 0 ? `${whole}.${fraction}` : whole;
|
|
289
|
+
};
|
|
290
|
+
exports.decimalTimesTen = decimalTimesTen;
|
|
291
|
+
const annualTiersForModule = (tiers) => tiers.map((tier) => ({
|
|
292
|
+
upTo: tier.upTo,
|
|
293
|
+
unitAmountDecimal: (0, exports.decimalTimesTen)(tier.unitAmountDecimal),
|
|
294
|
+
}));
|
|
295
|
+
exports.annualTiersForModule = annualTiersForModule;
|
|
249
296
|
//# sourceMappingURL=pricing.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pricing.utils.js","sourceRoot":"","sources":["../../src/utils/pricing.utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pricing.utils.js","sourceRoot":"","sources":["../../src/utils/pricing.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CancellationReason, RetentionOffer } from '../types/enum/billing-subscription-event.enum';
|
|
2
|
+
import { SubscriptionPauseState } from '../types/enum/subscription-pause.enum';
|
|
3
|
+
import type { IBillingAccount } from '../types/interface/models/billing-account.model';
|
|
4
|
+
export declare const SUBSCRIPTION_PAUSE_MONTHS: readonly [1, 2, 3];
|
|
5
|
+
export type SubscriptionPauseMonths = typeof SUBSCRIPTION_PAUSE_MONTHS[number];
|
|
6
|
+
export declare const SUBSCRIPTION_PAUSE_WINDOW_MONTHS = 12;
|
|
7
|
+
export declare const SUBSCRIPTION_RESUME_REMINDER_DAYS = 7;
|
|
8
|
+
export declare const CANCELLATION_REASON_TEXT_MAX_LENGTH = 500;
|
|
9
|
+
export declare const subscriptionPauseStateOf: (account: Pick<IBillingAccount, "pauseStartsAt" | "pausedSnapshot" | "pauseResumeFailedAt">) => SubscriptionPauseState;
|
|
10
|
+
export declare const retentionOffersFor: (reason?: CancellationReason | null) => RetentionOffer[];
|
|
11
|
+
export declare const RETENTION_OFFERS_SHOWN_MAX = 2;
|
|
12
|
+
export declare const retentionOffersShownMax: (reason?: CancellationReason | null) => number;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.retentionOffersShownMax = exports.RETENTION_OFFERS_SHOWN_MAX = exports.retentionOffersFor = exports.subscriptionPauseStateOf = exports.CANCELLATION_REASON_TEXT_MAX_LENGTH = exports.SUBSCRIPTION_RESUME_REMINDER_DAYS = exports.SUBSCRIPTION_PAUSE_WINDOW_MONTHS = exports.SUBSCRIPTION_PAUSE_MONTHS = void 0;
|
|
4
|
+
const billing_subscription_event_enum_1 = require("../types/enum/billing-subscription-event.enum");
|
|
5
|
+
const subscription_pause_enum_1 = require("../types/enum/subscription-pause.enum");
|
|
6
|
+
exports.SUBSCRIPTION_PAUSE_MONTHS = [1, 2, 3];
|
|
7
|
+
exports.SUBSCRIPTION_PAUSE_WINDOW_MONTHS = 12;
|
|
8
|
+
exports.SUBSCRIPTION_RESUME_REMINDER_DAYS = 7;
|
|
9
|
+
exports.CANCELLATION_REASON_TEXT_MAX_LENGTH = 500;
|
|
10
|
+
const subscriptionPauseStateOf = (account) => {
|
|
11
|
+
if (account.pausedSnapshot !== null) {
|
|
12
|
+
return account.pauseResumeFailedAt !== null
|
|
13
|
+
? subscription_pause_enum_1.SubscriptionPauseState.RESUME_FAILED
|
|
14
|
+
: subscription_pause_enum_1.SubscriptionPauseState.ACTIVE;
|
|
15
|
+
}
|
|
16
|
+
return account.pauseStartsAt !== null
|
|
17
|
+
? subscription_pause_enum_1.SubscriptionPauseState.SCHEDULED
|
|
18
|
+
: subscription_pause_enum_1.SubscriptionPauseState.NONE;
|
|
19
|
+
};
|
|
20
|
+
exports.subscriptionPauseStateOf = subscriptionPauseStateOf;
|
|
21
|
+
const retentionOffersFor = (reason) => {
|
|
22
|
+
switch (reason) {
|
|
23
|
+
case billing_subscription_event_enum_1.CancellationReason.TOO_EXPENSIVE:
|
|
24
|
+
return [billing_subscription_event_enum_1.RetentionOffer.SWITCH_TO_ANNUAL, billing_subscription_event_enum_1.RetentionOffer.DOWNGRADE_PLAN, billing_subscription_event_enum_1.RetentionOffer.PAUSE];
|
|
25
|
+
case billing_subscription_event_enum_1.CancellationReason.NOT_USING_ENOUGH:
|
|
26
|
+
case billing_subscription_event_enum_1.CancellationReason.TEMPORARY_NEED:
|
|
27
|
+
return [billing_subscription_event_enum_1.RetentionOffer.PAUSE];
|
|
28
|
+
case billing_subscription_event_enum_1.CancellationReason.MISSING_FEATURE:
|
|
29
|
+
case billing_subscription_event_enum_1.CancellationReason.SWITCHING:
|
|
30
|
+
case billing_subscription_event_enum_1.CancellationReason.OTHER:
|
|
31
|
+
return [];
|
|
32
|
+
default:
|
|
33
|
+
return [billing_subscription_event_enum_1.RetentionOffer.SWITCH_TO_ANNUAL, billing_subscription_event_enum_1.RetentionOffer.PAUSE];
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
exports.retentionOffersFor = retentionOffersFor;
|
|
37
|
+
exports.RETENTION_OFFERS_SHOWN_MAX = 2;
|
|
38
|
+
const retentionOffersShownMax = (reason) => reason ? exports.RETENTION_OFFERS_SHOWN_MAX : 1;
|
|
39
|
+
exports.retentionOffersShownMax = retentionOffersShownMax;
|
|
40
|
+
//# sourceMappingURL=subscription-retention.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription-retention.utils.js","sourceRoot":"","sources":["../../src/utils/subscription-retention.utils.ts"],"names":[],"mappings":";;;AAAA,mGAAmG;AACnG,mFAA+E;AAIlE,QAAA,yBAAyB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAU,CAAC;AAK/C,QAAA,gCAAgC,GAAG,EAAE,CAAC;AAGtC,QAAA,iCAAiC,GAAG,CAAC,CAAC;AAGtC,QAAA,mCAAmC,GAAG,GAAG,CAAC;AAOhD,MAAM,wBAAwB,GAAG,CACtC,OAA0F,EAClE,EAAE;IAC1B,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;QACpC,OAAO,OAAO,CAAC,mBAAmB,KAAK,IAAI;YACzC,CAAC,CAAC,gDAAsB,CAAC,aAAa;YACtC,CAAC,CAAC,gDAAsB,CAAC,MAAM,CAAC;IACpC,CAAC;IACD,OAAO,OAAO,CAAC,aAAa,KAAK,IAAI;QACnC,CAAC,CAAC,gDAAsB,CAAC,SAAS;QAClC,CAAC,CAAC,gDAAsB,CAAC,IAAI,CAAC;AAClC,CAAC,CAAC;AAXW,QAAA,wBAAwB,4BAWnC;AASK,MAAM,kBAAkB,GAAG,CAAC,MAAkC,EAAoB,EAAE;IACzF,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,oDAAkB,CAAC,aAAa;YACnC,OAAO,CAAC,gDAAc,CAAC,gBAAgB,EAAE,gDAAc,CAAC,cAAc,EAAE,gDAAc,CAAC,KAAK,CAAC,CAAC;QAChG,KAAK,oDAAkB,CAAC,gBAAgB,CAAC;QACzC,KAAK,oDAAkB,CAAC,cAAc;YACpC,OAAO,CAAC,gDAAc,CAAC,KAAK,CAAC,CAAC;QAChC,KAAK,oDAAkB,CAAC,eAAe,CAAC;QACxC,KAAK,oDAAkB,CAAC,SAAS,CAAC;QAClC,KAAK,oDAAkB,CAAC,KAAK;YAC3B,OAAO,EAAE,CAAC;QACZ;YACE,OAAO,CAAC,gDAAc,CAAC,gBAAgB,EAAE,gDAAc,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC;AACH,CAAC,CAAC;AAdW,QAAA,kBAAkB,sBAc7B;AAGW,QAAA,0BAA0B,GAAG,CAAC,CAAC;AAMrC,MAAM,uBAAuB,GAAG,CAAC,MAAkC,EAAU,EAAE,CACpF,MAAM,CAAC,CAAC,CAAC,kCAA0B,CAAC,CAAC,CAAC,CAAC,CAAC;AAD7B,QAAA,uBAAuB,2BACM"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const billing_interval_enum_1 = require("../../types/enum/billing-interval.enum");
|
|
4
|
+
const module_catalog_constants_1 = require("../../constants/module-catalog.constants");
|
|
5
|
+
const pricing_utils_1 = require("../pricing.utils");
|
|
6
|
+
describe('annual price', () => {
|
|
7
|
+
it('a plan or an unlock: exactly ten monthly prices', () => {
|
|
8
|
+
expect(pricing_utils_1.ANNUAL_MONTHS_CHARGED).toBe(10);
|
|
9
|
+
expect((0, pricing_utils_1.annualPriceCents)(900)).toBe(9000);
|
|
10
|
+
expect((0, pricing_utils_1.annualPriceCents)(2900)).toBe(29000);
|
|
11
|
+
expect((0, pricing_utils_1.annualPriceCents)(0)).toBe(0);
|
|
12
|
+
expect((0, pricing_utils_1.annualPriceCents)(-1)).toBe(0);
|
|
13
|
+
expect((0, pricing_utils_1.annualPriceCents)(Number.NaN)).toBe(0);
|
|
14
|
+
});
|
|
15
|
+
it('a fractional monthly amount is rounded once, after the ×10', () => {
|
|
16
|
+
expect((0, pricing_utils_1.annualPriceCents)(223.65)).toBe(2237);
|
|
17
|
+
expect(10 * Math.round(223.65)).toBe(2240);
|
|
18
|
+
});
|
|
19
|
+
it('per interval, and back to a monthly equivalent', () => {
|
|
20
|
+
expect((0, pricing_utils_1.intervalPriceCents)(900, billing_interval_enum_1.BillingInterval.MONTH)).toBe(900);
|
|
21
|
+
expect((0, pricing_utils_1.intervalPriceCents)(900, billing_interval_enum_1.BillingInterval.YEAR)).toBe(9000);
|
|
22
|
+
expect((0, pricing_utils_1.monthlyEquivalentCents)(9000, billing_interval_enum_1.BillingInterval.YEAR)).toBe(750);
|
|
23
|
+
expect((0, pricing_utils_1.monthlyEquivalentCents)(4990, billing_interval_enum_1.BillingInterval.YEAR)).toBe(416);
|
|
24
|
+
expect((0, pricing_utils_1.monthlyEquivalentCents)(900, billing_interval_enum_1.BillingInterval.MONTH)).toBe(900);
|
|
25
|
+
});
|
|
26
|
+
it('a module: the yearly price rounds the EXACT monthly amount once', () => {
|
|
27
|
+
const lots = 1700;
|
|
28
|
+
const exact = (0, pricing_utils_1.moduleExactMonthlyPriceCents)(module_catalog_constants_1.BillingModuleId.STORAGE, 200, lots);
|
|
29
|
+
expect((0, pricing_utils_1.moduleMonthlyPriceCents)(module_catalog_constants_1.BillingModuleId.STORAGE, 200, lots)).toBe(Math.round(exact));
|
|
30
|
+
expect((0, pricing_utils_1.moduleIntervalPriceCents)(module_catalog_constants_1.BillingModuleId.STORAGE, 200, lots, billing_interval_enum_1.BillingInterval.YEAR)).toBe(Math.round(exact * 10));
|
|
31
|
+
expect((0, pricing_utils_1.moduleIntervalPriceCents)(module_catalog_constants_1.BillingModuleId.UNLOCK_CRYPT_FILE_SIZE, 0, 1, billing_interval_enum_1.BillingInterval.YEAR)).toBe(1900);
|
|
32
|
+
});
|
|
33
|
+
it('a tier rate × 10 is exact in text, even in scientific notation', () => {
|
|
34
|
+
expect((0, pricing_utils_1.decimalTimesTen)('0.6')).toBe('6');
|
|
35
|
+
expect((0, pricing_utils_1.decimalTimesTen)('25')).toBe('250');
|
|
36
|
+
expect((0, pricing_utils_1.decimalTimesTen)('1.5')).toBe('15');
|
|
37
|
+
expect((0, pricing_utils_1.decimalTimesTen)('0.07')).toBe('0.7');
|
|
38
|
+
expect((0, pricing_utils_1.decimalTimesTen)('0.000014')).toBe('0.00014');
|
|
39
|
+
expect((0, pricing_utils_1.decimalTimesTen)('1.4e-7')).toBe('0.0000014');
|
|
40
|
+
expect((0, pricing_utils_1.decimalTimesTen)('2e-7')).toBe('0.000002');
|
|
41
|
+
expect((0, pricing_utils_1.annualTiersForModule)([
|
|
42
|
+
{ upTo: 100, unitAmountDecimal: '1.5' },
|
|
43
|
+
{ upTo: 'inf', unitAmountDecimal: '0.4' },
|
|
44
|
+
])).toStrictEqual([
|
|
45
|
+
{ upTo: 100, unitAmountDecimal: '15' },
|
|
46
|
+
{ upTo: 'inf', unitAmountDecimal: '4' },
|
|
47
|
+
]);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=annual-price.utils.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annual-price.utils.spec.js","sourceRoot":"","sources":["../../../src/utils/tests/annual-price.utils.spec.ts"],"names":[],"mappings":";;AAAA,kFAAyE;AACzE,uFAA2E;AAC3E,oDAU0B;AAM1B,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,qCAAqB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,MAAM,CAAC,IAAA,gCAAgB,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,CAAC,IAAA,gCAAgB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAA,gCAAgB,EAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,IAAA,gCAAgB,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,IAAA,gCAAgB,EAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QAEpE,MAAM,CAAC,IAAA,gCAAgB,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,IAAA,kCAAkB,EAAC,GAAG,EAAE,uCAAe,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,CAAC,IAAA,kCAAkB,EAAC,GAAG,EAAE,uCAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,MAAM,CAAC,IAAA,sCAAsB,EAAC,IAAI,EAAE,uCAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrE,MAAM,CAAC,IAAA,sCAAsB,EAAC,IAAI,EAAE,uCAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACrE,MAAM,CAAC,IAAA,sCAAsB,EAAC,GAAG,EAAE,uCAAe,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,KAAK,GAAG,IAAA,4CAA4B,EAAC,0CAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/E,MAAM,CAAC,IAAA,uCAAuB,EAAC,0CAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5F,MAAM,CAAC,IAAA,wCAAwB,EAAC,0CAAe,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,uCAAe,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC7F,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CACvB,CAAC;QACF,MAAM,CACJ,IAAA,wCAAwB,EAAC,0CAAe,CAAC,sBAAsB,EAAE,CAAC,EAAE,CAAC,EAAE,uCAAe,CAAC,IAAI,CAAC,CAC7F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,CAAC,IAAA,+BAAe,EAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,CAAC,IAAA,+BAAe,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAA,+BAAe,EAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAA,+BAAe,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAA,+BAAe,EAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,CAAC,IAAA,+BAAe,EAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,CAAC,IAAA,+BAAe,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjD,MAAM,CACJ,IAAA,oCAAoB,EAAC;YACnB,EAAE,IAAI,EAAE,GAAG,EAAE,iBAAiB,EAAE,KAAK,EAAE;YACvC,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE;SAC1C,CAAC,CACH,CAAC,aAAa,CAAC;YACd,EAAE,IAAI,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE;YACtC,EAAE,IAAI,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE;SACxC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -8,6 +8,7 @@ const plan = (catalogKey, monthlyPriceEur) => ({
|
|
|
8
8
|
tier: monthlyPriceEur === 0 ? organization_billing_enum_1.PlanTier.FREEMIUM : organization_billing_enum_1.PlanTier.DEFAULT,
|
|
9
9
|
accountType: organization_billing_enum_1.PlanAccountType.USER,
|
|
10
10
|
name: catalogKey,
|
|
11
|
+
yearlyPriceCents: Math.round(monthlyPriceEur * 100) * 10,
|
|
11
12
|
description: null,
|
|
12
13
|
isPublic: true,
|
|
13
14
|
isArchived: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pricing-calculator.utils.spec.js","sourceRoot":"","sources":["../../../src/utils/tests/pricing-calculator.utils.spec.ts"],"names":[],"mappings":";;AAAA,0EAAsE;AAEtE,0FAAuF;AACvF,oFAA0E;AAE1E,MAAM,IAAI,GAAG,CAAC,UAA2B,EAAE,eAAuB,EAAiB,EAAE,CAAC,CAAC;IACrF,EAAE,EAAE,QAAQ,UAAU,EAAE;IACxB,IAAI,EAAE,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,oCAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,oCAAQ,CAAC,OAAO;IAClE,WAAW,EAAE,2CAAe,CAAC,IAAI;IACjC,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,IAAI;IACjB,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,KAAK;IACjB,eAAe;IACf,MAAM,EAAE,EAAE;IACV,cAAc,EAAE,EAAE;IAClB,oBAAoB,EAAE,EAAE;IACxB,aAAa,EAAE,IAAI;IACnB,UAAU;CACX,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,QAAQ,GAAG,IAAA,kDAAuB,EACtC,CAAC,IAAI,CAAC,wCAAe,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,wCAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EACvE,EAAE,EACF,2CAAe,CAAC,IAAI,CACrB,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC;YACvC,EAAE,EAAE,eAAe;YACnB,UAAU,EAAE,wCAAe,CAAC,QAAQ;YACpC,IAAI,EAAE,oCAAQ,CAAC,QAAQ;YACvB,eAAe,EAAE,CAAC;SACnB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"pricing-calculator.utils.spec.js","sourceRoot":"","sources":["../../../src/utils/tests/pricing-calculator.utils.spec.ts"],"names":[],"mappings":";;AAAA,0EAAsE;AAEtE,0FAAuF;AACvF,oFAA0E;AAE1E,MAAM,IAAI,GAAG,CAAC,UAA2B,EAAE,eAAuB,EAAiB,EAAE,CAAC,CAAC;IACrF,EAAE,EAAE,QAAQ,UAAU,EAAE;IACxB,IAAI,EAAE,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,oCAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,oCAAQ,CAAC,OAAO;IAClE,WAAW,EAAE,2CAAe,CAAC,IAAI;IACjC,IAAI,EAAE,UAAU;IAChB,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,GAAG,EAAE;IACxD,WAAW,EAAE,IAAI;IACjB,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,KAAK;IACjB,eAAe;IACf,MAAM,EAAE,EAAE;IACV,cAAc,EAAE,EAAE;IAClB,oBAAoB,EAAE,EAAE;IACxB,aAAa,EAAE,IAAI;IACnB,UAAU;CACX,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,QAAQ,GAAG,IAAA,kDAAuB,EACtC,CAAC,IAAI,CAAC,wCAAe,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,wCAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EACvE,EAAE,EACF,2CAAe,CAAC,IAAI,CACrB,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC;YACvC,EAAE,EAAE,eAAe;YACnB,UAAU,EAAE,wCAAe,CAAC,QAAQ;YACpC,IAAI,EAAE,oCAAQ,CAAC,QAAQ;YACvB,eAAe,EAAE,CAAC;SACnB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const billing_subscription_event_enum_1 = require("../../types/enum/billing-subscription-event.enum");
|
|
4
|
+
const organization_billing_enum_1 = require("../../types/enum/organization-billing.enum");
|
|
5
|
+
const billing_interval_enum_1 = require("../../types/enum/billing-interval.enum");
|
|
6
|
+
const subscription_pause_enum_1 = require("../../types/enum/subscription-pause.enum");
|
|
7
|
+
const module_catalog_constants_1 = require("../../constants/module-catalog.constants");
|
|
8
|
+
const subscription_retention_utils_1 = require("../subscription-retention.utils");
|
|
9
|
+
describe('retentionOffersFor (retention spec §7)', () => {
|
|
10
|
+
it('too expensive: the yearly price, a lower plan, a pause', () => {
|
|
11
|
+
expect((0, subscription_retention_utils_1.retentionOffersFor)(billing_subscription_event_enum_1.CancellationReason.TOO_EXPENSIVE)).toEqual([
|
|
12
|
+
billing_subscription_event_enum_1.RetentionOffer.SWITCH_TO_ANNUAL,
|
|
13
|
+
billing_subscription_event_enum_1.RetentionOffer.DOWNGRADE_PLAN,
|
|
14
|
+
billing_subscription_event_enum_1.RetentionOffer.PAUSE,
|
|
15
|
+
]);
|
|
16
|
+
});
|
|
17
|
+
it.each([billing_subscription_event_enum_1.CancellationReason.NOT_USING_ENOUGH, billing_subscription_event_enum_1.CancellationReason.TEMPORARY_NEED])('%s: a pause', (reason) => {
|
|
18
|
+
expect((0, subscription_retention_utils_1.retentionOffersFor)(reason)).toEqual([billing_subscription_event_enum_1.RetentionOffer.PAUSE]);
|
|
19
|
+
});
|
|
20
|
+
it.each([
|
|
21
|
+
billing_subscription_event_enum_1.CancellationReason.MISSING_FEATURE,
|
|
22
|
+
billing_subscription_event_enum_1.CancellationReason.SWITCHING,
|
|
23
|
+
billing_subscription_event_enum_1.CancellationReason.OTHER,
|
|
24
|
+
])('%s: no offer', (reason) => {
|
|
25
|
+
expect((0, subscription_retention_utils_1.retentionOffersFor)(reason)).toEqual([]);
|
|
26
|
+
});
|
|
27
|
+
it.each([null, undefined])('no reason (%s): the yearly price, else a pause', (reason) => {
|
|
28
|
+
expect((0, subscription_retention_utils_1.retentionOffersFor)(reason)).toEqual([
|
|
29
|
+
billing_subscription_event_enum_1.RetentionOffer.SWITCH_TO_ANNUAL,
|
|
30
|
+
billing_subscription_event_enum_1.RetentionOffer.PAUSE,
|
|
31
|
+
]);
|
|
32
|
+
});
|
|
33
|
+
it('never offers the free plan: it is the cancellation itself', () => {
|
|
34
|
+
const reasons = [...Object.values(billing_subscription_event_enum_1.CancellationReason), null];
|
|
35
|
+
expect(reasons.flatMap((reason) => (0, subscription_retention_utils_1.retentionOffersFor)(reason))).not.toContain('FREE_KEEP_DATA');
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('retentionOffersShownMax', () => {
|
|
39
|
+
it('shows one offer without a reason, two at most with one', () => {
|
|
40
|
+
expect((0, subscription_retention_utils_1.retentionOffersShownMax)(null)).toBe(1);
|
|
41
|
+
expect((0, subscription_retention_utils_1.retentionOffersShownMax)(undefined)).toBe(1);
|
|
42
|
+
for (const reason of Object.values(billing_subscription_event_enum_1.CancellationReason)) {
|
|
43
|
+
expect((0, subscription_retention_utils_1.retentionOffersShownMax)(reason)).toBe(subscription_retention_utils_1.RETENTION_OFFERS_SHOWN_MAX);
|
|
44
|
+
}
|
|
45
|
+
expect(subscription_retention_utils_1.RETENTION_OFFERS_SHOWN_MAX).toBe(2);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
describe('subscriptionPauseStateOf', () => {
|
|
49
|
+
const snapshot = {
|
|
50
|
+
planTemplateId: 'plan',
|
|
51
|
+
interval: billing_interval_enum_1.BillingInterval.MONTH,
|
|
52
|
+
modules: [
|
|
53
|
+
{ moduleId: module_catalog_constants_1.BillingModuleId.STORAGE, quantity: 1, status: organization_billing_enum_1.BillingAddonStatus.ACTIVE },
|
|
54
|
+
],
|
|
55
|
+
pausedAt: '2026-10-20T00:00:00.000Z',
|
|
56
|
+
};
|
|
57
|
+
const at = new Date('2026-11-20T00:00:00.000Z');
|
|
58
|
+
it('reads the four states from the pause columns', () => {
|
|
59
|
+
expect([
|
|
60
|
+
{ pauseStartsAt: null, pausedSnapshot: null, pauseResumeFailedAt: null },
|
|
61
|
+
{ pauseStartsAt: at, pausedSnapshot: null, pauseResumeFailedAt: null },
|
|
62
|
+
{
|
|
63
|
+
pauseStartsAt: at,
|
|
64
|
+
pausedSnapshot: { ...snapshot, modules: [...snapshot.modules] },
|
|
65
|
+
pauseResumeFailedAt: null,
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
pauseStartsAt: at,
|
|
69
|
+
pausedSnapshot: { ...snapshot, modules: [] },
|
|
70
|
+
pauseResumeFailedAt: at,
|
|
71
|
+
},
|
|
72
|
+
].map(subscription_retention_utils_1.subscriptionPauseStateOf)).toEqual([
|
|
73
|
+
subscription_pause_enum_1.SubscriptionPauseState.NONE,
|
|
74
|
+
subscription_pause_enum_1.SubscriptionPauseState.SCHEDULED,
|
|
75
|
+
subscription_pause_enum_1.SubscriptionPauseState.ACTIVE,
|
|
76
|
+
subscription_pause_enum_1.SubscriptionPauseState.RESUME_FAILED,
|
|
77
|
+
]);
|
|
78
|
+
});
|
|
79
|
+
});
|
|
80
|
+
//# sourceMappingURL=subscription-retention.utils.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscription-retention.utils.spec.js","sourceRoot":"","sources":["../../../src/utils/tests/subscription-retention.utils.spec.ts"],"names":[],"mappings":";;AAAA,sGAG0D;AAC1D,0FAAgF;AAChF,kFAAyE;AACzE,sFAAkF;AAClF,uFAA2E;AAC3E,kFAKyC;AAEzC,QAAQ,CAAC,wCAAwC,EAAE,GAAG,EAAE;IACtD,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,IAAA,iDAAkB,EAAC,oDAAkB,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC;YACnE,gDAAc,CAAC,gBAAgB;YAC/B,gDAAc,CAAC,cAAc;YAC7B,gDAAc,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC,CAAC,oDAAkB,CAAC,gBAAgB,EAAE,oDAAkB,CAAC,cAAc,CAAC,CAAC,CAC/E,aAAa,EACb,CAAC,MAAM,EAAE,EAAE;QACT,MAAM,CAAC,IAAA,iDAAkB,EAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,gDAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,CAAC,CACF,CAAC;IAEF,EAAE,CAAC,IAAI,CAAC;QACN,oDAAkB,CAAC,eAAe;QAClC,oDAAkB,CAAC,SAAS;QAC5B,oDAAkB,CAAC,KAAK;KACzB,CAAC,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,EAAE;QAC5B,MAAM,CAAC,IAAA,iDAAkB,EAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,gDAAgD,EAAE,CAAC,MAAM,EAAE,EAAE;QACtF,MAAM,CAAC,IAAA,iDAAkB,EAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YACzC,gDAAc,CAAC,gBAAgB;YAC/B,gDAAc,CAAC,KAAK;SACrB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,oDAAkB,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,iDAAkB,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAClG,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,IAAA,sDAAuB,EAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,IAAA,sDAAuB,EAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnD,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,oDAAkB,CAAC,EAAE,CAAC;YACvD,MAAM,CAAC,IAAA,sDAAuB,EAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,yDAA0B,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,CAAC,yDAA0B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,MAAM,QAAQ,GAAG;QACf,cAAc,EAAE,MAAM;QACtB,QAAQ,EAAE,uCAAe,CAAC,KAAK;QAC/B,OAAO,EAAE;YACP,EAAE,QAAQ,EAAE,0CAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,8CAAkB,CAAC,MAAM,EAAE;SACtF;QACD,QAAQ,EAAE,0BAA0B;KAC5B,CAAC;IACX,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAEhD,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CACJ;YACE,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE;YACxE,EAAE,aAAa,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE;YACtE;gBACE,aAAa,EAAE,EAAE;gBACjB,cAAc,EAAE,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE;gBAC/D,mBAAmB,EAAE,IAAI;aAC1B;YACD;gBACE,aAAa,EAAE,EAAE;gBACjB,cAAc,EAAE,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC5C,mBAAmB,EAAE,EAAE;aACxB;SACF,CAAC,GAAG,CAAC,uDAAwB,CAAC,CAChC,CAAC,OAAO,CAAC;YACR,gDAAsB,CAAC,IAAI;YAC3B,gDAAsB,CAAC,SAAS;YAChC,gDAAsB,CAAC,MAAM;YAC7B,gDAAsB,CAAC,aAAa;SACrC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|