@abyss-project/main 1.7.0 → 1.9.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/admin-audit-log.admin.api.d.ts +2 -0
- package/dist/api/admin-audit-log.admin.api.js +11 -0
- package/dist/api/admin-audit-log.admin.api.js.map +1 -0
- package/dist/api/analytics-snapshot.admin.api.d.ts +2 -1
- package/dist/api/analytics-snapshot.admin.api.js +4 -2
- package/dist/api/analytics-snapshot.admin.api.js.map +1 -1
- package/dist/api/application.admin.api.d.ts +1 -3
- package/dist/api/application.admin.api.js +1 -10
- package/dist/api/application.admin.api.js.map +1 -1
- package/dist/api/billing-account.admin.api.d.ts +5 -2
- package/dist/api/billing-account.admin.api.js +13 -1
- package/dist/api/billing-account.admin.api.js.map +1 -1
- package/dist/api/billing-plan-request.admin.api.d.ts +6 -0
- package/dist/api/billing-plan-request.admin.api.js +21 -0
- package/dist/api/billing-plan-request.admin.api.js.map +1 -0
- package/dist/api/billing-trial.admin.api.d.ts +3 -2
- package/dist/api/billing-trial.admin.api.js +5 -1
- package/dist/api/billing-trial.admin.api.js.map +1 -1
- package/dist/api/gift-code.admin.api.js +1 -1
- package/dist/api/gift-code.admin.api.js.map +1 -1
- package/dist/api/gift-code.api.d.ts +1 -2
- package/dist/api/gift-code.api.js +2 -10
- package/dist/api/gift-code.api.js.map +1 -1
- package/dist/api/index.d.ts +2 -1
- package/dist/api/index.js +2 -1
- package/dist/api/index.js.map +1 -1
- package/dist/api/organization-billing.api.d.ts +3 -2
- package/dist/api/organization-billing.api.js +5 -1
- package/dist/api/organization-billing.api.js.map +1 -1
- package/dist/api/personal-api-key.admin.api.d.ts +3 -2
- package/dist/api/personal-api-key.admin.api.js +5 -1
- package/dist/api/personal-api-key.admin.api.js.map +1 -1
- package/dist/api/project.admin.api.d.ts +1 -3
- package/dist/api/project.admin.api.js +1 -10
- package/dist/api/project.admin.api.js.map +1 -1
- package/dist/api/support-ticket.admin.api.d.ts +1 -2
- package/dist/api/support-ticket.admin.api.js +5 -5
- package/dist/api/support-ticket.admin.api.js.map +1 -1
- package/dist/api/user-billing.api.d.ts +3 -2
- package/dist/api/user-billing.api.js +5 -1
- package/dist/api/user-billing.api.js.map +1 -1
- package/dist/api/user.admin.api.d.ts +2 -2
- package/dist/api/user.admin.api.js +2 -2
- package/dist/api/user.admin.api.js.map +1 -1
- package/dist/constants/billing-catalog.constants.d.ts +14 -1
- package/dist/constants/billing-catalog.constants.js +222 -1
- package/dist/constants/billing-catalog.constants.js.map +1 -1
- package/dist/constants/enforcement-registry.constants.js +66 -0
- package/dist/constants/enforcement-registry.constants.js.map +1 -1
- package/dist/constants/public-plans.constants.js +382 -25
- package/dist/constants/public-plans.constants.js.map +1 -1
- package/dist/constants/quota-metric-kind.constants.js +15 -0
- package/dist/constants/quota-metric-kind.constants.js.map +1 -1
- package/dist/index.d.ts +20 -13
- package/dist/index.js +20 -13
- package/dist/index.js.map +1 -1
- package/dist/types/enum/abyss-application-event.enum.d.ts +38 -4
- package/dist/types/enum/abyss-application-event.enum.js +37 -3
- package/dist/types/enum/abyss-application-event.enum.js.map +1 -1
- package/dist/types/enum/admin-audit-target-type.enum.d.ts +13 -0
- package/dist/types/enum/admin-audit-target-type.enum.js +18 -0
- package/dist/types/enum/admin-audit-target-type.enum.js.map +1 -0
- package/dist/types/enum/api-error.enum.d.ts +2 -1
- package/dist/types/enum/api-error.enum.js +1 -0
- package/dist/types/enum/api-error.enum.js.map +1 -1
- package/dist/types/enum/email-type.enum.d.ts +1 -0
- package/dist/types/enum/email-type.enum.js +1 -0
- package/dist/types/enum/email-type.enum.js.map +1 -1
- package/dist/types/enum/index.d.ts +2 -0
- package/dist/types/enum/index.js +2 -0
- package/dist/types/enum/index.js.map +1 -1
- package/dist/types/enum/organization-billing.enum.d.ts +28 -4
- package/dist/types/enum/organization-billing.enum.js +26 -1
- package/dist/types/enum/organization-billing.enum.js.map +1 -1
- package/dist/types/enum/project-access-member-source.enum.d.ts +4 -0
- package/dist/types/enum/project-access-member-source.enum.js +9 -0
- package/dist/types/enum/project-access-member-source.enum.js.map +1 -0
- package/dist/types/enum/user-notification-category.enum.js +1 -0
- package/dist/types/enum/user-notification-category.enum.js.map +1 -1
- package/dist/types/enum/user-notification-content-type.enum.d.ts +11 -0
- package/dist/types/enum/user-notification-content-type.enum.js +2 -1
- package/dist/types/enum/user-notification-content-type.enum.js.map +1 -1
- package/dist/types/interface/api/index.d.ts +4 -2
- package/dist/types/interface/api/index.js +4 -2
- package/dist/types/interface/api/index.js.map +1 -1
- package/dist/types/interface/api/requests/admin-audit-log.admin.request.d.ts +10 -0
- package/dist/types/interface/api/requests/admin-audit-log.admin.request.js +3 -0
- package/dist/types/interface/api/requests/admin-audit-log.admin.request.js.map +1 -0
- package/dist/types/interface/api/requests/billing-account.admin.request.d.ts +23 -1
- package/dist/types/interface/api/requests/billing-plan-request.admin.request.d.ts +22 -0
- package/dist/types/interface/api/requests/billing-plan-request.admin.request.js +3 -0
- package/dist/types/interface/api/requests/billing-plan-request.admin.request.js.map +1 -0
- package/dist/types/interface/api/requests/billing-trial.admin.request.d.ts +3 -0
- package/dist/types/interface/api/requests/index.d.ts +2 -1
- package/dist/types/interface/api/requests/index.js +2 -1
- package/dist/types/interface/api/requests/index.js.map +1 -1
- package/dist/types/interface/api/requests/organization-billing.request.d.ts +10 -1
- package/dist/types/interface/api/requests/organization.admin.request.d.ts +3 -1
- package/dist/types/interface/api/requests/personal-api-key.request.d.ts +3 -0
- package/dist/types/interface/api/requests/support-ticket-admin.request.d.ts +0 -6
- package/dist/types/interface/api/requests/user-billing.request.d.ts +7 -1
- package/dist/types/interface/api/requests/user.admin.request.d.ts +5 -0
- package/dist/types/interface/api/responses/admin-audit-log.admin.response.d.ts +2 -0
- package/dist/types/interface/api/responses/admin-audit-log.admin.response.js +3 -0
- package/dist/types/interface/api/responses/admin-audit-log.admin.response.js.map +1 -0
- package/dist/types/interface/api/responses/analytics-snapshot.response.d.ts +28 -0
- package/dist/types/interface/api/responses/billing-account.admin.response.d.ts +27 -0
- package/dist/types/interface/api/responses/billing-plan-request.admin.response.d.ts +23 -0
- package/dist/types/interface/api/responses/billing-plan-request.admin.response.js +3 -0
- package/dist/types/interface/api/responses/billing-plan-request.admin.response.js.map +1 -0
- package/dist/types/interface/api/responses/billing-trial.admin.response.d.ts +4 -0
- package/dist/types/interface/api/responses/billing.response.d.ts +1 -0
- package/dist/types/interface/api/responses/index.d.ts +2 -1
- package/dist/types/interface/api/responses/index.js +2 -1
- package/dist/types/interface/api/responses/index.js.map +1 -1
- package/dist/types/interface/api/responses/organization-billing.response.d.ts +4 -0
- package/dist/types/interface/api/responses/personal-api-key.response.d.ts +1 -0
- package/dist/types/interface/api/responses/project-access.admin.response.d.ts +4 -1
- package/dist/types/interface/api/responses/support-ticket.response.d.ts +0 -4
- package/dist/types/interface/api/responses/user-billing.response.d.ts +4 -0
- package/dist/types/interface/index.d.ts +1 -1
- package/dist/types/interface/index.js +1 -1
- package/dist/types/interface/index.js.map +1 -1
- package/dist/types/interface/models/admin-audit-log.model.d.ts +10 -0
- package/dist/types/interface/models/admin-audit-log.model.js +3 -0
- package/dist/types/interface/models/admin-audit-log.model.js.map +1 -0
- package/dist/types/interface/models/billing-account.model.d.ts +2 -0
- package/dist/types/interface/models/index.d.ts +1 -1
- package/dist/types/interface/models/index.js +1 -1
- package/dist/types/interface/models/index.js.map +1 -1
- package/dist/types/interface/models/organization-service-quota.model.d.ts +3 -1
- package/dist/types/interface/models/plan-template.model.d.ts +2 -0
- package/dist/utils/billing.utils.d.ts +11 -0
- package/dist/utils/billing.utils.js +39 -1
- package/dist/utils/billing.utils.js.map +1 -1
- 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/quota-ceiling.utils.d.ts +16 -0
- package/dist/utils/quota-ceiling.utils.js +38 -0
- package/dist/utils/quota-ceiling.utils.js.map +1 -0
- package/dist/utils/resolve-user.utils.d.ts +0 -2
- package/dist/utils/resolve-user.utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BasePaginate } from '..';
|
|
2
|
-
import { OAuthAccountType, ProjectAccessPermission, ProjectApplicationAccessPermission } from '../../../enum';
|
|
2
|
+
import { OAuthAccountType, ProjectAccessMemberSource, ProjectAccessPermission, ProjectApplicationAccessPermission } from '../../../enum';
|
|
3
3
|
import { IProjectAccess } from '../../models/project-access.model';
|
|
4
4
|
import { IProjectApplicationAccess } from '../../models/project-application-access.model';
|
|
5
5
|
import { IUser } from '../../models/user.model';
|
|
@@ -56,6 +56,9 @@ export interface IListMembersProjectAccessAdminMember {
|
|
|
56
56
|
type: OAuthAccountType;
|
|
57
57
|
accountId: string;
|
|
58
58
|
}[];
|
|
59
|
+
source: ProjectAccessMemberSource;
|
|
60
|
+
teamId: string | null;
|
|
61
|
+
teamName: string | null;
|
|
59
62
|
}
|
|
60
63
|
export interface IListMembersProjectAccessAdminData {
|
|
61
64
|
members: IListMembersProjectAccessAdminMember[];
|
|
@@ -20,10 +20,6 @@ export interface IUpdateSupportTicketData {
|
|
|
20
20
|
supportTicket: ISupportTicket;
|
|
21
21
|
}
|
|
22
22
|
export type IUpdateSupportTicketResponse = IResponse<IUpdateSupportTicketData>;
|
|
23
|
-
export interface ICloseSupportTicketData {
|
|
24
|
-
supportTicket: ISupportTicket;
|
|
25
|
-
}
|
|
26
|
-
export type ICloseSupportTicketResponse = IResponse<ICloseSupportTicketData>;
|
|
27
23
|
export interface ICreateSupportTicketMessageData {
|
|
28
24
|
supportTicketMessage: ISupportTicketMessage;
|
|
29
25
|
}
|
|
@@ -22,6 +22,10 @@ export interface IUpdateUserBillingInfoData {
|
|
|
22
22
|
billingAccount: IBillingAccount;
|
|
23
23
|
}
|
|
24
24
|
export type IUpdateUserBillingInfoResponse = IResponse<IUpdateUserBillingInfoData>;
|
|
25
|
+
export interface ISetUserQuotaCeilingData {
|
|
26
|
+
billingAccount: IBillingAccount;
|
|
27
|
+
}
|
|
28
|
+
export type ISetUserQuotaCeilingResponse = IResponse<ISetUserQuotaCeilingData>;
|
|
25
29
|
export interface ISubscribeUserPlanData {
|
|
26
30
|
billingAccount: IBillingAccount;
|
|
27
31
|
scheduled: boolean;
|
|
@@ -33,7 +33,6 @@ export * from './models/credit-transaction.model';
|
|
|
33
33
|
export * from './models/eur-transaction.model';
|
|
34
34
|
export * from './models/organization-quota-alert.model';
|
|
35
35
|
export * from './models/quota-grant.model';
|
|
36
|
-
export * from './models/billing-addon-template.model';
|
|
37
36
|
export * from './models/billing-plan-request.model';
|
|
38
37
|
export * from './models/billing-quota-cap.model';
|
|
39
38
|
export * from './models/quota-reservation.model';
|
|
@@ -63,3 +62,4 @@ export * from './models/user-asset.model';
|
|
|
63
62
|
export * from './models/user-cookie-consent.model';
|
|
64
63
|
export * from './models/user-feedback-state.model';
|
|
65
64
|
export * from './models/user-sidebar-pin.model';
|
|
65
|
+
export * from './models/admin-audit-log.model';
|
|
@@ -49,7 +49,6 @@ __exportStar(require("./models/credit-transaction.model"), exports);
|
|
|
49
49
|
__exportStar(require("./models/eur-transaction.model"), exports);
|
|
50
50
|
__exportStar(require("./models/organization-quota-alert.model"), exports);
|
|
51
51
|
__exportStar(require("./models/quota-grant.model"), exports);
|
|
52
|
-
__exportStar(require("./models/billing-addon-template.model"), exports);
|
|
53
52
|
__exportStar(require("./models/billing-plan-request.model"), exports);
|
|
54
53
|
__exportStar(require("./models/billing-quota-cap.model"), exports);
|
|
55
54
|
__exportStar(require("./models/quota-reservation.model"), exports);
|
|
@@ -79,4 +78,5 @@ __exportStar(require("./models/user-asset.model"), exports);
|
|
|
79
78
|
__exportStar(require("./models/user-cookie-consent.model"), exports);
|
|
80
79
|
__exportStar(require("./models/user-feedback-state.model"), exports);
|
|
81
80
|
__exportStar(require("./models/user-sidebar-pin.model"), exports);
|
|
81
|
+
__exportStar(require("./models/admin-audit-log.model"), exports);
|
|
82
82
|
//# sourceMappingURL=index.js.map
|
|
@@ -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,8EAA4D;AAC5D,kFAAgE;AAGhE,8DAA4C;AAC5C,0EAAwD;AACxD,qEAAmD;AAGnD,+DAA6C;AAC7C,iEAA+C;AAC/C,4EAA0D;AAC1D,4EAA0D;AAC1D,8DAA4C;AAC5C,yDAAuC;AACvC,oEAAkD;AAClD,iEAA+C;AAC/C,0EAAwD;AACxD,6DAA2C;AAC3C,
|
|
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,8EAA4D;AAC5D,kFAAgE;AAGhE,8DAA4C;AAC5C,0EAAwD;AACxD,qEAAmD;AAGnD,+DAA6C;AAC7C,iEAA+C;AAC/C,4EAA0D;AAC1D,4EAA0D;AAC1D,8DAA4C;AAC5C,yDAAuC;AACvC,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;AAGnD,qEAAmD;AAGnD,kEAAgD;AAGhD,iEAA+C"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AbyssApplicationEvent, AdminAuditTargetType } from '../../enum';
|
|
2
|
+
export interface IAdminAuditLog {
|
|
3
|
+
id?: string;
|
|
4
|
+
adminId: string | null;
|
|
5
|
+
action: AbyssApplicationEvent;
|
|
6
|
+
targetType: AdminAuditTargetType | null;
|
|
7
|
+
targetId: string | null;
|
|
8
|
+
data: Record<string, unknown> | null;
|
|
9
|
+
createdAt?: Date;
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-audit-log.model.js","sourceRoot":"","sources":["../../../../src/types/interface/models/admin-audit-log.model.ts"],"names":[],"mappings":""}
|
|
@@ -5,6 +5,7 @@ import { IPlanTemplate } from './plan-template.model';
|
|
|
5
5
|
import { IInvoice } from './invoice.model';
|
|
6
6
|
import { ICreditTransaction } from './credit-transaction.model';
|
|
7
7
|
import { IEurTransaction } from './eur-transaction.model';
|
|
8
|
+
import { IServiceQuota } from './organization-service-quota.model';
|
|
8
9
|
export interface IBillingAddress {
|
|
9
10
|
line1: string;
|
|
10
11
|
line2: string | null;
|
|
@@ -39,6 +40,7 @@ export interface IBillingAccount {
|
|
|
39
40
|
user?: IUser | null;
|
|
40
41
|
organization?: IOrganization | null;
|
|
41
42
|
planTemplate?: IPlanTemplate;
|
|
43
|
+
serviceQuotas?: IServiceQuota[];
|
|
42
44
|
invoices?: IInvoice[];
|
|
43
45
|
creditTransactions?: ICreditTransaction[];
|
|
44
46
|
eurTransactions?: IEurTransaction[];
|
|
@@ -26,7 +26,6 @@ export * from './credit-transaction.model';
|
|
|
26
26
|
export * from './eur-transaction.model';
|
|
27
27
|
export * from './organization-quota-alert.model';
|
|
28
28
|
export * from './quota-grant.model';
|
|
29
|
-
export * from './billing-addon-template.model';
|
|
30
29
|
export * from './billing-plan-request.model';
|
|
31
30
|
export * from './billing-quota-cap.model';
|
|
32
31
|
export * from './quota-reservation.model';
|
|
@@ -56,3 +55,4 @@ export * from './user-asset.model';
|
|
|
56
55
|
export * from './user-cookie-consent.model';
|
|
57
56
|
export * from './user-feedback-state.model';
|
|
58
57
|
export * from './user-sidebar-pin.model';
|
|
58
|
+
export * from './admin-audit-log.model';
|
|
@@ -42,7 +42,6 @@ __exportStar(require("./credit-transaction.model"), exports);
|
|
|
42
42
|
__exportStar(require("./eur-transaction.model"), exports);
|
|
43
43
|
__exportStar(require("./organization-quota-alert.model"), exports);
|
|
44
44
|
__exportStar(require("./quota-grant.model"), exports);
|
|
45
|
-
__exportStar(require("./billing-addon-template.model"), exports);
|
|
46
45
|
__exportStar(require("./billing-plan-request.model"), exports);
|
|
47
46
|
__exportStar(require("./billing-quota-cap.model"), exports);
|
|
48
47
|
__exportStar(require("./quota-reservation.model"), exports);
|
|
@@ -72,4 +71,5 @@ __exportStar(require("./user-asset.model"), exports);
|
|
|
72
71
|
__exportStar(require("./user-cookie-consent.model"), exports);
|
|
73
72
|
__exportStar(require("./user-feedback-state.model"), exports);
|
|
74
73
|
__exportStar(require("./user-sidebar-pin.model"), exports);
|
|
74
|
+
__exportStar(require("./admin-audit-log.model"), exports);
|
|
75
75
|
//# sourceMappingURL=index.js.map
|
|
@@ -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,qEAAmD;AACnD,qEAAmD;AACnD,uDAAqC;AACrC,kDAAgC;AAChC,6DAA2C;AAC3C,0DAAwC;AACxC,mEAAiD;AACjD,sDAAoC;AACpC
|
|
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,qEAAmD;AACnD,qEAAmD;AACnD,uDAAqC;AACrC,kDAAgC;AAChC,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;AAG5C,8DAA4C;AAG5C,2DAAyC;AAGzC,0DAAwC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BillingMetric, BillingService } from '../../enum';
|
|
1
|
+
import { BillingMetric, BillingService, QuotaCeilingMode } from '../../enum';
|
|
2
2
|
import { IBillingAccount } from './billing-account.model';
|
|
3
3
|
export interface IServiceQuota {
|
|
4
4
|
id?: string;
|
|
@@ -7,6 +7,8 @@ export interface IServiceQuota {
|
|
|
7
7
|
metric: BillingMetric;
|
|
8
8
|
limit: number;
|
|
9
9
|
isOverridden: boolean;
|
|
10
|
+
ceilingMode: QuotaCeilingMode;
|
|
11
|
+
ceilingValue: number | null;
|
|
10
12
|
updatedAt?: Date;
|
|
11
13
|
createdAt?: Date;
|
|
12
14
|
billingAccount?: IBillingAccount;
|
|
@@ -25,6 +25,8 @@ export interface IPlanTemplate {
|
|
|
25
25
|
overagePricing: IPlanOveragePricing[];
|
|
26
26
|
quotaAlertThresholds: number[];
|
|
27
27
|
stripePriceId: string | null;
|
|
28
|
+
ownerUserId?: string | null;
|
|
29
|
+
ownerOrganizationId?: string | null;
|
|
28
30
|
updatedAt?: Date;
|
|
29
31
|
createdAt?: Date;
|
|
30
32
|
}
|
|
@@ -1,2 +1,13 @@
|
|
|
1
1
|
import { BillingAccountStatus } from '../types/enum';
|
|
2
2
|
export declare const isSubscriptionExpired: (status: BillingAccountStatus) => boolean;
|
|
3
|
+
export interface ParsedQuotaUnit {
|
|
4
|
+
multiplier: number;
|
|
5
|
+
baseUnit: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const parseQuotaUnit: (unit: string | null | undefined) => ParsedQuotaUnit;
|
|
8
|
+
export interface ResolvedQuotaAmount {
|
|
9
|
+
amount: number;
|
|
10
|
+
baseUnit: string;
|
|
11
|
+
unlimited: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare const resolveQuotaAmount: (limit: number, unit: string | null | undefined) => ResolvedQuotaAmount;
|
|
@@ -1,9 +1,47 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isSubscriptionExpired = void 0;
|
|
3
|
+
exports.resolveQuotaAmount = exports.parseQuotaUnit = exports.isSubscriptionExpired = void 0;
|
|
4
4
|
const enum_1 = require("../types/enum");
|
|
5
5
|
const isSubscriptionExpired = (status) => {
|
|
6
6
|
return status === enum_1.BillingAccountStatus.CANCELLED;
|
|
7
7
|
};
|
|
8
8
|
exports.isSubscriptionExpired = isSubscriptionExpired;
|
|
9
|
+
const parseQuotaUnit = (unit) => {
|
|
10
|
+
const raw = (unit ?? '').trim();
|
|
11
|
+
if (!raw) {
|
|
12
|
+
return { multiplier: 1, baseUnit: '' };
|
|
13
|
+
}
|
|
14
|
+
const kMatch = raw.match(/^(\d+)\s*k\s+(.+)$/i);
|
|
15
|
+
if (kMatch) {
|
|
16
|
+
return {
|
|
17
|
+
multiplier: parseInt(kMatch[1], 10) * 1_000,
|
|
18
|
+
baseUnit: kMatch[2].trim(),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const millionMatch = raw.match(/^(?:(\d+)\s+)?million\s+(.+)$/i);
|
|
22
|
+
if (millionMatch) {
|
|
23
|
+
const factor = millionMatch[1] ? parseInt(millionMatch[1], 10) : 1;
|
|
24
|
+
return {
|
|
25
|
+
multiplier: factor * 1_000_000,
|
|
26
|
+
baseUnit: millionMatch[2].trim(),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
const spacedMatch = raw.match(/^(\d{1,3}(?:\s\d{3})+)\s+(.+)$/);
|
|
30
|
+
if (spacedMatch) {
|
|
31
|
+
return {
|
|
32
|
+
multiplier: parseInt(spacedMatch[1].replace(/\s/g, ''), 10),
|
|
33
|
+
baseUnit: spacedMatch[2].trim(),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
return { multiplier: 1, baseUnit: raw };
|
|
37
|
+
};
|
|
38
|
+
exports.parseQuotaUnit = parseQuotaUnit;
|
|
39
|
+
const resolveQuotaAmount = (limit, unit) => {
|
|
40
|
+
const { multiplier, baseUnit } = (0, exports.parseQuotaUnit)(unit);
|
|
41
|
+
if (limit === -1) {
|
|
42
|
+
return { amount: -1, baseUnit, unlimited: true };
|
|
43
|
+
}
|
|
44
|
+
return { amount: limit * multiplier, baseUnit, unlimited: false };
|
|
45
|
+
};
|
|
46
|
+
exports.resolveQuotaAmount = resolveQuotaAmount;
|
|
9
47
|
//# sourceMappingURL=billing.utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.utils.js","sourceRoot":"","sources":["../../src/utils/billing.utils.ts"],"names":[],"mappings":";;;AAAA,wCAAqD;AAK9C,MAAM,qBAAqB,GAAG,CAAC,MAA4B,EAAW,EAAE;IAC7E,OAAO,MAAM,KAAK,2BAAoB,CAAC,SAAS,CAAC;AACnD,CAAC,CAAC;AAFW,QAAA,qBAAqB,yBAEhC"}
|
|
1
|
+
{"version":3,"file":"billing.utils.js","sourceRoot":"","sources":["../../src/utils/billing.utils.ts"],"names":[],"mappings":";;;AAAA,wCAAqD;AAK9C,MAAM,qBAAqB,GAAG,CAAC,MAA4B,EAAW,EAAE;IAC7E,OAAO,MAAM,KAAK,2BAAoB,CAAC,SAAS,CAAC;AACnD,CAAC,CAAC;AAFW,QAAA,qBAAqB,yBAEhC;AA8BK,MAAM,cAAc,GAAG,CAAC,IAA+B,EAAmB,EAAE;IACjF,MAAM,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACzC,CAAC;IAGD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAChD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO;YACL,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;YAC3C,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;SAC3B,CAAC;IACJ,CAAC;IAGD,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACjE,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,OAAO;YACL,UAAU,EAAE,MAAM,GAAG,SAAS;YAC9B,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;SACjC,CAAC;IACJ,CAAC;IAGD,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAChE,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO;YACL,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3D,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;SAChC,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AAC1C,CAAC,CAAC;AAnCW,QAAA,cAAc,kBAmCzB;AAmBK,MAAM,kBAAkB,GAAG,CAChC,KAAa,EACb,IAA+B,EACV,EAAE;IACvB,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,IAAA,sBAAc,EAAC,IAAI,CAAC,CAAC;IACtD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACnD,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,GAAG,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACpE,CAAC,CAAC;AATW,QAAA,kBAAkB,sBAS7B"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -15,6 +15,7 @@ export * from './tracking.utils';
|
|
|
15
15
|
export * from './duration.utils';
|
|
16
16
|
export * from './time-period.utils';
|
|
17
17
|
export * from './billing.utils';
|
|
18
|
+
export * from './quota-ceiling.utils';
|
|
18
19
|
export * from './user-language.utils';
|
|
19
20
|
export * from './pricing-calculator.utils';
|
|
20
21
|
export * from './content-share-scope.utils';
|
package/dist/utils/index.js
CHANGED
|
@@ -31,6 +31,7 @@ __exportStar(require("./tracking.utils"), exports);
|
|
|
31
31
|
__exportStar(require("./duration.utils"), exports);
|
|
32
32
|
__exportStar(require("./time-period.utils"), exports);
|
|
33
33
|
__exportStar(require("./billing.utils"), exports);
|
|
34
|
+
__exportStar(require("./quota-ceiling.utils"), exports);
|
|
34
35
|
__exportStar(require("./user-language.utils"), exports);
|
|
35
36
|
__exportStar(require("./pricing-calculator.utils"), exports);
|
|
36
37
|
__exportStar(require("./content-share-scope.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,6DAA2C;AAC3C,8DAA4C;AAC5C,qDAAmC;AACnC,uDAAqC"}
|
|
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,6DAA2C;AAC3C,8DAA4C;AAC5C,qDAAmC;AACnC,uDAAqC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { QuotaCeilingMode } from '../types/enum';
|
|
2
|
+
export interface CeilingParams {
|
|
3
|
+
ceilingMode: QuotaCeilingMode;
|
|
4
|
+
ceilingValue: number | null;
|
|
5
|
+
}
|
|
6
|
+
export declare const deriveCeilingParams: (totalReal: number | null, planLimitStored: number, scale: number, unlimited: boolean) => CeilingParams;
|
|
7
|
+
export interface EurToQuantityResult {
|
|
8
|
+
overStored: number;
|
|
9
|
+
totalStored: number;
|
|
10
|
+
totalReal: number;
|
|
11
|
+
}
|
|
12
|
+
export interface EurCeilingConverter {
|
|
13
|
+
eurToQuantity: (euroCents: number) => EurToQuantityResult;
|
|
14
|
+
quantityToEur: (totalReal: number) => number;
|
|
15
|
+
}
|
|
16
|
+
export declare const eurCeilingConversion: (planLimitStored: number, pricePerUnitCents: number, scale: number) => EurCeilingConverter;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.eurCeilingConversion = exports.deriveCeilingParams = void 0;
|
|
4
|
+
const enum_1 = require("../types/enum");
|
|
5
|
+
const deriveCeilingParams = (totalReal, planLimitStored, scale, unlimited) => {
|
|
6
|
+
if (unlimited) {
|
|
7
|
+
return { ceilingMode: enum_1.QuotaCeilingMode.OVERAGE_UNLIMITED, ceilingValue: null };
|
|
8
|
+
}
|
|
9
|
+
if (totalReal === null || totalReal <= 0) {
|
|
10
|
+
return { ceilingMode: enum_1.QuotaCeilingMode.PLAN, ceilingValue: null };
|
|
11
|
+
}
|
|
12
|
+
const stored = Math.round(totalReal / scale);
|
|
13
|
+
if (planLimitStored === -1) {
|
|
14
|
+
return { ceilingMode: enum_1.QuotaCeilingMode.BLOCK_AT, ceilingValue: stored };
|
|
15
|
+
}
|
|
16
|
+
if (stored === planLimitStored) {
|
|
17
|
+
return { ceilingMode: enum_1.QuotaCeilingMode.PLAN, ceilingValue: null };
|
|
18
|
+
}
|
|
19
|
+
if (stored < planLimitStored) {
|
|
20
|
+
return { ceilingMode: enum_1.QuotaCeilingMode.BLOCK_AT, ceilingValue: stored };
|
|
21
|
+
}
|
|
22
|
+
return { ceilingMode: enum_1.QuotaCeilingMode.OVERAGE_TO, ceilingValue: stored };
|
|
23
|
+
};
|
|
24
|
+
exports.deriveCeilingParams = deriveCeilingParams;
|
|
25
|
+
const eurCeilingConversion = (planLimitStored, pricePerUnitCents, scale) => ({
|
|
26
|
+
eurToQuantity: (euroCents) => {
|
|
27
|
+
const overStored = pricePerUnitCents > 0 ? Math.floor(euroCents / pricePerUnitCents) : 0;
|
|
28
|
+
const totalStored = planLimitStored + overStored;
|
|
29
|
+
return { overStored, totalStored, totalReal: totalStored * scale };
|
|
30
|
+
},
|
|
31
|
+
quantityToEur: (totalReal) => {
|
|
32
|
+
const totalStored = Math.round(totalReal / scale);
|
|
33
|
+
const overStored = Math.max(0, totalStored - planLimitStored);
|
|
34
|
+
return overStored * pricePerUnitCents;
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
exports.eurCeilingConversion = eurCeilingConversion;
|
|
38
|
+
//# sourceMappingURL=quota-ceiling.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quota-ceiling.utils.js","sourceRoot":"","sources":["../../src/utils/quota-ceiling.utils.ts"],"names":[],"mappings":";;;AAAA,wCAAiD;AAyC1C,MAAM,mBAAmB,GAAG,CACjC,SAAwB,EACxB,eAAuB,EACvB,KAAa,EACb,SAAkB,EACH,EAAE;IACjB,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,EAAE,WAAW,EAAE,uBAAgB,CAAC,iBAAiB,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACjF,CAAC;IACD,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACzC,OAAO,EAAE,WAAW,EAAE,uBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACpE,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;IAC7C,IAAI,eAAe,KAAK,CAAC,CAAC,EAAE,CAAC;QAE3B,OAAO,EAAE,WAAW,EAAE,uBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IAC1E,CAAC;IACD,IAAI,MAAM,KAAK,eAAe,EAAE,CAAC;QAC/B,OAAO,EAAE,WAAW,EAAE,uBAAgB,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;IACpE,CAAC;IACD,IAAI,MAAM,GAAG,eAAe,EAAE,CAAC;QAC7B,OAAO,EAAE,WAAW,EAAE,uBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;IAC1E,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,uBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;AAC5E,CAAC,CAAC;AAxBW,QAAA,mBAAmB,uBAwB9B;AAgCK,MAAM,oBAAoB,GAAG,CAClC,eAAuB,EACvB,iBAAyB,EACzB,KAAa,EACQ,EAAE,CAAC,CAAC;IACzB,aAAa,EAAE,CAAC,SAAiB,EAAuB,EAAE;QACxD,MAAM,UAAU,GAAG,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzF,MAAM,WAAW,GAAG,eAAe,GAAG,UAAU,CAAC;QACjD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,GAAG,KAAK,EAAE,CAAC;IACrE,CAAC;IACD,aAAa,EAAE,CAAC,SAAiB,EAAU,EAAE;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,eAAe,CAAC,CAAC;QAC9D,OAAO,UAAU,GAAG,iBAAiB,CAAC;IACxC,CAAC;CACF,CAAC,CAAC;AAfU,QAAA,oBAAoB,wBAe9B"}
|
|
@@ -14,8 +14,6 @@ interface IResolveUserMirror {
|
|
|
14
14
|
}
|
|
15
15
|
interface ISequelizeUserShape extends IResolveUserMirror {
|
|
16
16
|
id: string;
|
|
17
|
-
set(values: Partial<IResolveUserMirror>): any;
|
|
18
|
-
save(options?: any): Promise<any>;
|
|
19
17
|
}
|
|
20
18
|
export declare const resolveUserFromAbyssMain: <TUser extends ISequelizeUserShape>(params: IResolveUserParams) => Promise<TUser>;
|
|
21
19
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-user.utils.js","sourceRoot":"","sources":["../../src/utils/resolve-user.utils.ts"],"names":[],"mappings":";;;AAAA,0BAA+B;
|
|
1
|
+
{"version":3,"file":"resolve-user.utils.js","sourceRoot":"","sources":["../../src/utils/resolve-user.utils.ts"],"names":[],"mappings":";;;AAAA,0BAA+B;AA+CxB,MAAM,wBAAwB,GAAG,KAAK,EAC3C,MAA0B,EACV,EAAE;IAClB,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAE1D,MAAM,YAAY,GAAG,CAAC,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE;QACrD,WAAW;KACZ,CAAC,CAA+B,CAAC;IAMlC,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAqB,CAAC;IAC/B,CAAC;IAGD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,wBAAwB,GAAkB,IAAI,CAAC;IACnD,IAAI,uBAAuB,GAAgB,IAAI,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,aAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAChE,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QACrC,wBAAwB,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC;QAC/E,uBAAuB,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,CAAC,GAAG,CAAC,wBAAwB,MAAM,qDAAqD,CAAC,CAAC;IAClG,CAAC;IAED,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,SAAS,CAAC,YAAY,CAAC;QACpD,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE;QACrB,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE;QACpF,WAAW;KACZ,CAAC,CAAmC,CAAC;IAEtC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,CAAC,GAAG,CAAC,qBAAqB,MAAM,cAAc,OAAO,GAAG,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,IAAa,CAAC;AACvB,CAAC,CAAC;AAzCW,QAAA,wBAAwB,4BAyCnC"}
|