@forklaunch/implementation-billing-base 0.2.3 → 0.3.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.
Files changed (81) hide show
  1. package/lib/schemas/index.d.mts +402 -0
  2. package/lib/schemas/index.d.ts +402 -6
  3. package/lib/schemas/index.js +498 -5
  4. package/lib/schemas/index.mjs +547 -0
  5. package/lib/services/index.d.mts +255 -0
  6. package/lib/services/index.d.ts +255 -6
  7. package/lib/services/index.js +610 -5
  8. package/lib/services/index.mjs +599 -0
  9. package/package.json +6 -5
  10. package/lib/__test__/schemaEquality.test.d.ts +0 -2
  11. package/lib/__test__/schemaEquality.test.d.ts.map +0 -1
  12. package/lib/__test__/schemaEquality.test.js +0 -430
  13. package/lib/jest.config.d.ts +0 -4
  14. package/lib/jest.config.d.ts.map +0 -1
  15. package/lib/jest.config.js +0 -19
  16. package/lib/schemas/billingPortal.schema.d.ts +0 -119
  17. package/lib/schemas/billingPortal.schema.d.ts.map +0 -1
  18. package/lib/schemas/billingPortal.schema.js +0 -7
  19. package/lib/schemas/checkoutSession.schema.d.ts +0 -265
  20. package/lib/schemas/checkoutSession.schema.d.ts.map +0 -1
  21. package/lib/schemas/checkoutSession.schema.js +0 -7
  22. package/lib/schemas/index.d.ts.map +0 -1
  23. package/lib/schemas/paymentLink.schema.d.ts +0 -319
  24. package/lib/schemas/paymentLink.schema.d.ts.map +0 -1
  25. package/lib/schemas/paymentLink.schema.js +0 -7
  26. package/lib/schemas/plan.schema.d.ts +0 -338
  27. package/lib/schemas/plan.schema.d.ts.map +0 -1
  28. package/lib/schemas/plan.schema.js +0 -7
  29. package/lib/schemas/subscription.schema.d.ts +0 -366
  30. package/lib/schemas/subscription.schema.d.ts.map +0 -1
  31. package/lib/schemas/subscription.schema.js +0 -7
  32. package/lib/schemas/typebox/billingPortal.schema.d.ts +0 -161
  33. package/lib/schemas/typebox/billingPortal.schema.d.ts.map +0 -1
  34. package/lib/schemas/typebox/billingPortal.schema.js +0 -31
  35. package/lib/schemas/typebox/checkoutSession.schema.d.ts +0 -316
  36. package/lib/schemas/typebox/checkoutSession.schema.d.ts.map +0 -1
  37. package/lib/schemas/typebox/checkoutSession.schema.js +0 -50
  38. package/lib/schemas/typebox/paymentLink.schema.d.ts +0 -406
  39. package/lib/schemas/typebox/paymentLink.schema.d.ts.map +0 -1
  40. package/lib/schemas/typebox/paymentLink.schema.js +0 -55
  41. package/lib/schemas/typebox/plan.schema.d.ts +0 -408
  42. package/lib/schemas/typebox/plan.schema.d.ts.map +0 -1
  43. package/lib/schemas/typebox/plan.schema.js +0 -57
  44. package/lib/schemas/typebox/subscription.schema.d.ts +0 -456
  45. package/lib/schemas/typebox/subscription.schema.d.ts.map +0 -1
  46. package/lib/schemas/typebox/subscription.schema.js +0 -61
  47. package/lib/schemas/zod/billingPortal.schema.d.ts +0 -63
  48. package/lib/schemas/zod/billingPortal.schema.d.ts.map +0 -1
  49. package/lib/schemas/zod/billingPortal.schema.js +0 -31
  50. package/lib/schemas/zod/checkoutSession.schema.d.ts +0 -176
  51. package/lib/schemas/zod/checkoutSession.schema.d.ts.map +0 -1
  52. package/lib/schemas/zod/checkoutSession.schema.js +0 -50
  53. package/lib/schemas/zod/paymentLink.schema.d.ts +0 -172
  54. package/lib/schemas/zod/paymentLink.schema.d.ts.map +0 -1
  55. package/lib/schemas/zod/paymentLink.schema.js +0 -55
  56. package/lib/schemas/zod/plan.schema.d.ts +0 -196
  57. package/lib/schemas/zod/plan.schema.d.ts.map +0 -1
  58. package/lib/schemas/zod/plan.schema.js +0 -57
  59. package/lib/schemas/zod/subscription.schema.d.ts +0 -204
  60. package/lib/schemas/zod/subscription.schema.d.ts.map +0 -1
  61. package/lib/schemas/zod/subscription.schema.js +0 -61
  62. package/lib/services/billingPortal.service.d.ts +0 -112
  63. package/lib/services/billingPortal.service.d.ts.map +0 -1
  64. package/lib/services/billingPortal.service.js +0 -128
  65. package/lib/services/checkoutSession.service.d.ts +0 -137
  66. package/lib/services/checkoutSession.service.d.ts.map +0 -1
  67. package/lib/services/checkoutSession.service.js +0 -111
  68. package/lib/services/index.d.ts.map +0 -1
  69. package/lib/services/paymentLink.service.d.ts +0 -118
  70. package/lib/services/paymentLink.service.d.ts.map +0 -1
  71. package/lib/services/paymentLink.service.js +0 -154
  72. package/lib/services/plan.service.d.ts +0 -102
  73. package/lib/services/plan.service.d.ts.map +0 -1
  74. package/lib/services/plan.service.js +0 -80
  75. package/lib/services/subscription.service.d.ts +0 -159
  76. package/lib/services/subscription.service.d.ts.map +0 -1
  77. package/lib/services/subscription.service.js +0 -169
  78. package/lib/tsconfig.tsbuildinfo +0 -1
  79. package/lib/vitest.config.d.ts +0 -3
  80. package/lib/vitest.config.d.ts.map +0 -1
  81. package/lib/vitest.config.js +0 -7
@@ -1,57 +0,0 @@
1
- import {
2
- array,
3
- boolean,
4
- date,
5
- enum_,
6
- number,
7
- optional,
8
- string,
9
- unknown,
10
- uuid
11
- } from '@forklaunch/validator/zod';
12
- export const CreatePlanSchema = (PlanCadenceEnum, BillingProviderEnum) => ({
13
- name: string,
14
- description: optional(string),
15
- price: number,
16
- cadence: enum_(PlanCadenceEnum),
17
- features: array(string),
18
- extraFields: optional(unknown),
19
- externalId: string,
20
- billingProvider: optional(enum_(BillingProviderEnum)),
21
- active: boolean
22
- });
23
- export const UpdatePlanSchema =
24
- ({ uuidId }) =>
25
- (PlanCadenceEnum, BillingProviderEnum) => ({
26
- id: uuidId ? uuid : string,
27
- name: optional(string),
28
- description: optional(string),
29
- price: optional(number),
30
- cadence: optional(enum_(PlanCadenceEnum)),
31
- features: optional(array(string)),
32
- extraFields: optional(unknown),
33
- externalId: optional(string),
34
- billingProvider: optional(enum_(BillingProviderEnum)),
35
- active: optional(boolean)
36
- });
37
- export const PlanSchema =
38
- ({ uuidId }) =>
39
- (PlanCadenceEnum, BillingProviderEnum) => ({
40
- id: uuidId ? uuid : string,
41
- name: string,
42
- description: optional(string),
43
- price: number,
44
- cadence: enum_(PlanCadenceEnum),
45
- features: optional(array(string)),
46
- extraFields: optional(unknown),
47
- externalId: string,
48
- billingProvider: optional(enum_(BillingProviderEnum)),
49
- active: boolean,
50
- createdAt: optional(date),
51
- updatedAt: optional(date)
52
- });
53
- export const BasePlanServiceSchemas = (options) => ({
54
- CreatePlanSchema,
55
- UpdatePlanSchema: UpdatePlanSchema(options),
56
- PlanSchema: PlanSchema(options)
57
- });
@@ -1,204 +0,0 @@
1
- import { LiteralSchema } from '@forklaunch/validator';
2
- export declare const CreateSubscriptionSchema: <
3
- T extends Record<string, LiteralSchema>,
4
- U extends Record<string, LiteralSchema>
5
- >(
6
- PartyEnum: T,
7
- BillingProviderEnum: U
8
- ) => {
9
- partyId: import('zod').ZodString;
10
- partyType: import('zod').ZodUnion<
11
- [{ [K in keyof T]: import('zod').ZodLiteral<T[K]> }[keyof T]]
12
- >;
13
- productId: import('zod').ZodString;
14
- description: import('zod').ZodOptional<import('zod').ZodString>;
15
- active: import('zod').ZodEffects<import('zod').ZodBoolean, boolean, unknown>;
16
- externalId: import('zod').ZodString;
17
- startDate: import('zod').ZodEffects<import('zod').ZodDate, Date, unknown>;
18
- endDate: import('zod').ZodEffects<import('zod').ZodDate, Date, unknown>;
19
- status: import('zod').ZodString;
20
- billingProvider: import('zod').ZodOptional<
21
- import('zod').ZodUnion<
22
- [{ [K_1 in keyof U]: import('zod').ZodLiteral<U[K_1]> }[keyof U]]
23
- >
24
- >;
25
- extraFields: import('zod').ZodOptional<import('zod').ZodUnknown>;
26
- };
27
- export declare const UpdateSubscriptionSchema: ({
28
- uuidId
29
- }: {
30
- uuidId: boolean;
31
- }) => <
32
- T extends Record<string, LiteralSchema>,
33
- U extends Record<string, LiteralSchema>
34
- >(
35
- PartyEnum: T,
36
- BillingProviderEnum: U
37
- ) => {
38
- id: import('zod').ZodString;
39
- partyId: import('zod').ZodOptional<import('zod').ZodString>;
40
- partyType: import('zod').ZodOptional<
41
- import('zod').ZodUnion<
42
- [{ [K in keyof T]: import('zod').ZodLiteral<T[K]> }[keyof T]]
43
- >
44
- >;
45
- productId: import('zod').ZodOptional<import('zod').ZodString>;
46
- description: import('zod').ZodOptional<import('zod').ZodString>;
47
- active: import('zod').ZodOptional<
48
- import('zod').ZodEffects<import('zod').ZodBoolean, boolean, unknown>
49
- >;
50
- externalId: import('zod').ZodOptional<import('zod').ZodString>;
51
- startDate: import('zod').ZodOptional<
52
- import('zod').ZodEffects<import('zod').ZodDate, Date, unknown>
53
- >;
54
- endDate: import('zod').ZodOptional<
55
- import('zod').ZodEffects<import('zod').ZodDate, Date, unknown>
56
- >;
57
- status: import('zod').ZodOptional<import('zod').ZodString>;
58
- billingProvider: import('zod').ZodOptional<
59
- import('zod').ZodUnion<
60
- [{ [K_1 in keyof U]: import('zod').ZodLiteral<U[K_1]> }[keyof U]]
61
- >
62
- >;
63
- extraFields: import('zod').ZodOptional<import('zod').ZodUnknown>;
64
- };
65
- export declare const SubscriptionSchema: ({
66
- uuidId
67
- }: {
68
- uuidId: boolean;
69
- }) => <
70
- T extends Record<string, LiteralSchema>,
71
- U extends Record<string, LiteralSchema>
72
- >(
73
- PartyEnum: T,
74
- BillingProviderEnum: U
75
- ) => {
76
- id: import('zod').ZodString;
77
- partyId: import('zod').ZodString;
78
- partyType: import('zod').ZodUnion<
79
- [{ [K in keyof T]: import('zod').ZodLiteral<T[K]> }[keyof T]]
80
- >;
81
- productId: import('zod').ZodString;
82
- description: import('zod').ZodOptional<import('zod').ZodString>;
83
- active: import('zod').ZodEffects<import('zod').ZodBoolean, boolean, unknown>;
84
- externalId: import('zod').ZodString;
85
- startDate: import('zod').ZodEffects<import('zod').ZodDate, Date, unknown>;
86
- endDate: import('zod').ZodEffects<import('zod').ZodDate, Date, unknown>;
87
- status: import('zod').ZodString;
88
- billingProvider: import('zod').ZodOptional<
89
- import('zod').ZodUnion<
90
- [{ [K_1 in keyof U]: import('zod').ZodLiteral<U[K_1]> }[keyof U]]
91
- >
92
- >;
93
- extraFields: import('zod').ZodOptional<import('zod').ZodUnknown>;
94
- createdAt: import('zod').ZodOptional<
95
- import('zod').ZodEffects<import('zod').ZodDate, Date, unknown>
96
- >;
97
- updatedAt: import('zod').ZodOptional<
98
- import('zod').ZodEffects<import('zod').ZodDate, Date, unknown>
99
- >;
100
- };
101
- export declare const BaseSubscriptionServiceSchemas: (options: {
102
- uuidId: boolean;
103
- }) => {
104
- CreateSubscriptionSchema: <
105
- T extends Record<string, LiteralSchema>,
106
- U extends Record<string, LiteralSchema>
107
- >(
108
- PartyEnum: T,
109
- BillingProviderEnum: U
110
- ) => {
111
- partyId: import('zod').ZodString;
112
- partyType: import('zod').ZodUnion<
113
- [{ [K in keyof T]: import('zod').ZodLiteral<T[K]> }[keyof T]]
114
- >;
115
- productId: import('zod').ZodString;
116
- description: import('zod').ZodOptional<import('zod').ZodString>;
117
- active: import('zod').ZodEffects<
118
- import('zod').ZodBoolean,
119
- boolean,
120
- unknown
121
- >;
122
- externalId: import('zod').ZodString;
123
- startDate: import('zod').ZodEffects<import('zod').ZodDate, Date, unknown>;
124
- endDate: import('zod').ZodEffects<import('zod').ZodDate, Date, unknown>;
125
- status: import('zod').ZodString;
126
- billingProvider: import('zod').ZodOptional<
127
- import('zod').ZodUnion<
128
- [{ [K_1 in keyof U]: import('zod').ZodLiteral<U[K_1]> }[keyof U]]
129
- >
130
- >;
131
- extraFields: import('zod').ZodOptional<import('zod').ZodUnknown>;
132
- };
133
- UpdateSubscriptionSchema: <
134
- T extends Record<string, LiteralSchema>,
135
- U extends Record<string, LiteralSchema>
136
- >(
137
- PartyEnum: T,
138
- BillingProviderEnum: U
139
- ) => {
140
- id: import('zod').ZodString;
141
- partyId: import('zod').ZodOptional<import('zod').ZodString>;
142
- partyType: import('zod').ZodOptional<
143
- import('zod').ZodUnion<
144
- [{ [K in keyof T]: import('zod').ZodLiteral<T[K]> }[keyof T]]
145
- >
146
- >;
147
- productId: import('zod').ZodOptional<import('zod').ZodString>;
148
- description: import('zod').ZodOptional<import('zod').ZodString>;
149
- active: import('zod').ZodOptional<
150
- import('zod').ZodEffects<import('zod').ZodBoolean, boolean, unknown>
151
- >;
152
- externalId: import('zod').ZodOptional<import('zod').ZodString>;
153
- startDate: import('zod').ZodOptional<
154
- import('zod').ZodEffects<import('zod').ZodDate, Date, unknown>
155
- >;
156
- endDate: import('zod').ZodOptional<
157
- import('zod').ZodEffects<import('zod').ZodDate, Date, unknown>
158
- >;
159
- status: import('zod').ZodOptional<import('zod').ZodString>;
160
- billingProvider: import('zod').ZodOptional<
161
- import('zod').ZodUnion<
162
- [{ [K_1 in keyof U]: import('zod').ZodLiteral<U[K_1]> }[keyof U]]
163
- >
164
- >;
165
- extraFields: import('zod').ZodOptional<import('zod').ZodUnknown>;
166
- };
167
- SubscriptionSchema: <
168
- T extends Record<string, LiteralSchema>,
169
- U extends Record<string, LiteralSchema>
170
- >(
171
- PartyEnum: T,
172
- BillingProviderEnum: U
173
- ) => {
174
- id: import('zod').ZodString;
175
- partyId: import('zod').ZodString;
176
- partyType: import('zod').ZodUnion<
177
- [{ [K in keyof T]: import('zod').ZodLiteral<T[K]> }[keyof T]]
178
- >;
179
- productId: import('zod').ZodString;
180
- description: import('zod').ZodOptional<import('zod').ZodString>;
181
- active: import('zod').ZodEffects<
182
- import('zod').ZodBoolean,
183
- boolean,
184
- unknown
185
- >;
186
- externalId: import('zod').ZodString;
187
- startDate: import('zod').ZodEffects<import('zod').ZodDate, Date, unknown>;
188
- endDate: import('zod').ZodEffects<import('zod').ZodDate, Date, unknown>;
189
- status: import('zod').ZodString;
190
- billingProvider: import('zod').ZodOptional<
191
- import('zod').ZodUnion<
192
- [{ [K_1 in keyof U]: import('zod').ZodLiteral<U[K_1]> }[keyof U]]
193
- >
194
- >;
195
- extraFields: import('zod').ZodOptional<import('zod').ZodUnknown>;
196
- createdAt: import('zod').ZodOptional<
197
- import('zod').ZodEffects<import('zod').ZodDate, Date, unknown>
198
- >;
199
- updatedAt: import('zod').ZodOptional<
200
- import('zod').ZodEffects<import('zod').ZodDate, Date, unknown>
201
- >;
202
- };
203
- };
204
- //# sourceMappingURL=subscription.schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subscription.schema.d.ts","sourceRoot":"","sources":["../../../schemas/zod/subscription.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAWtD,eAAO,MAAM,wBAAwB,GACnC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EACvC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAEvC,WAAW,CAAC,EACZ,qBAAqB,CAAC;;;;;;;;;;;;CAatB,CAAC;AAEH,eAAO,MAAM,wBAAwB,GAClC,YAAY;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,MAE9B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EACvC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAEvC,WAAW,CAAC,EACZ,qBAAqB,CAAC;;;;;;;;;;;;;CActB,CAAC;AAEL,eAAO,MAAM,kBAAkB,GAC5B,YAAY;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,MAE9B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EACvC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAEvC,WAAW,CAAC,EACZ,qBAAqB,CAAC;;;;;;;;;;;;;;;CAgBtB,CAAC;AAEL,eAAO,MAAM,8BAA8B,GAAI,SAAS;IACtD,MAAM,EAAE,OAAO,CAAC;CACjB;+BArEC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EACvC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,aAE5B,CAAC,uBACS,CAAC;;;;;;;;;;;;;+BAkBpB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EACvC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,aAE5B,CAAC,uBACS,CAAC;;;;;;;;;;;;;;yBAmBtB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EACvC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,aAE5B,CAAC,uBACS,CAAC;;;;;;;;;;;;;;;;CAwBxB,CAAC"}
@@ -1,61 +0,0 @@
1
- import {
2
- boolean,
3
- date,
4
- enum_,
5
- optional,
6
- string,
7
- unknown,
8
- uuid
9
- } from '@forklaunch/validator/zod';
10
- export const CreateSubscriptionSchema = (PartyEnum, BillingProviderEnum) => ({
11
- partyId: string,
12
- partyType: enum_(PartyEnum),
13
- productId: string,
14
- description: optional(string),
15
- active: boolean,
16
- externalId: string,
17
- startDate: date,
18
- endDate: date,
19
- status: string,
20
- billingProvider: optional(enum_(BillingProviderEnum)),
21
- extraFields: optional(unknown)
22
- });
23
- export const UpdateSubscriptionSchema =
24
- ({ uuidId }) =>
25
- (PartyEnum, BillingProviderEnum) => ({
26
- id: uuidId ? uuid : string,
27
- partyId: optional(string),
28
- partyType: optional(enum_(PartyEnum)),
29
- productId: optional(string),
30
- description: optional(string),
31
- active: optional(boolean),
32
- externalId: optional(string),
33
- startDate: optional(date),
34
- endDate: optional(date),
35
- status: optional(string),
36
- billingProvider: optional(enum_(BillingProviderEnum)),
37
- extraFields: optional(unknown)
38
- });
39
- export const SubscriptionSchema =
40
- ({ uuidId }) =>
41
- (PartyEnum, BillingProviderEnum) => ({
42
- id: uuidId ? uuid : string,
43
- partyId: string,
44
- partyType: enum_(PartyEnum),
45
- productId: string,
46
- description: optional(string),
47
- active: boolean,
48
- externalId: string,
49
- startDate: date,
50
- endDate: date,
51
- status: string,
52
- billingProvider: optional(enum_(BillingProviderEnum)),
53
- extraFields: optional(unknown),
54
- createdAt: optional(date),
55
- updatedAt: optional(date)
56
- });
57
- export const BaseSubscriptionServiceSchemas = (options) => ({
58
- CreateSubscriptionSchema,
59
- UpdateSubscriptionSchema: UpdateSubscriptionSchema(options),
60
- SubscriptionSchema: SubscriptionSchema(options)
61
- });
@@ -1,112 +0,0 @@
1
- import { IdDto } from '@forklaunch/common';
2
- import { TtlCache } from '@forklaunch/core/cache';
3
- import {
4
- MetricsDefinition,
5
- OpenTelemetryCollector,
6
- TelemetryOptions
7
- } from '@forklaunch/core/http';
8
- import {
9
- RequestDtoMapperConstructor,
10
- ResponseDtoMapperConstructor
11
- } from '@forklaunch/core/mappers';
12
- import { BillingPortalService } from '@forklaunch/interfaces-billing/interfaces';
13
- import {
14
- BillingPortalDto,
15
- CreateBillingPortalDto,
16
- UpdateBillingPortalDto
17
- } from '@forklaunch/interfaces-billing/types';
18
- import { AnySchemaValidator } from '@forklaunch/validator';
19
- import { EntityManager } from '@mikro-orm/core';
20
- export declare class BaseBillingPortalService<
21
- SchemaValidator extends AnySchemaValidator,
22
- Metrics extends MetricsDefinition = MetricsDefinition,
23
- Dto extends {
24
- BillingPortalDtoMapper: BillingPortalDto;
25
- CreateBillingPortalDtoMapper: CreateBillingPortalDto;
26
- UpdateBillingPortalDtoMapper: UpdateBillingPortalDto;
27
- } = {
28
- BillingPortalDtoMapper: BillingPortalDto;
29
- CreateBillingPortalDtoMapper: CreateBillingPortalDto;
30
- UpdateBillingPortalDtoMapper: UpdateBillingPortalDto;
31
- },
32
- Entities extends {
33
- BillingPortalDtoMapper: BillingPortalDto;
34
- CreateBillingPortalDtoMapper: BillingPortalDto;
35
- UpdateBillingPortalDtoMapper: BillingPortalDto;
36
- } = {
37
- BillingPortalDtoMapper: BillingPortalDto;
38
- CreateBillingPortalDtoMapper: BillingPortalDto;
39
- UpdateBillingPortalDtoMapper: BillingPortalDto;
40
- }
41
- > implements BillingPortalService
42
- {
43
- #private;
44
- protected em: EntityManager;
45
- protected cache: TtlCache;
46
- protected openTelemetryCollector: OpenTelemetryCollector<Metrics>;
47
- protected schemaValidator: SchemaValidator;
48
- protected mappers: {
49
- BillingPortalDtoMapper: ResponseDtoMapperConstructor<
50
- SchemaValidator,
51
- Dto['BillingPortalDtoMapper'],
52
- Entities['BillingPortalDtoMapper']
53
- >;
54
- CreateBillingPortalDtoMapper: RequestDtoMapperConstructor<
55
- SchemaValidator,
56
- Dto['CreateBillingPortalDtoMapper'],
57
- Entities['CreateBillingPortalDtoMapper']
58
- >;
59
- UpdateBillingPortalDtoMapper: RequestDtoMapperConstructor<
60
- SchemaValidator,
61
- Dto['UpdateBillingPortalDtoMapper'],
62
- Entities['UpdateBillingPortalDtoMapper']
63
- >;
64
- };
65
- readonly options?:
66
- | {
67
- telemetry?: TelemetryOptions;
68
- enableDatabaseBackup?: boolean;
69
- }
70
- | undefined;
71
- private evaluatedTelemetryOptions;
72
- private enableDatabaseBackup;
73
- constructor(
74
- em: EntityManager,
75
- cache: TtlCache,
76
- openTelemetryCollector: OpenTelemetryCollector<Metrics>,
77
- schemaValidator: SchemaValidator,
78
- mappers: {
79
- BillingPortalDtoMapper: ResponseDtoMapperConstructor<
80
- SchemaValidator,
81
- Dto['BillingPortalDtoMapper'],
82
- Entities['BillingPortalDtoMapper']
83
- >;
84
- CreateBillingPortalDtoMapper: RequestDtoMapperConstructor<
85
- SchemaValidator,
86
- Dto['CreateBillingPortalDtoMapper'],
87
- Entities['CreateBillingPortalDtoMapper']
88
- >;
89
- UpdateBillingPortalDtoMapper: RequestDtoMapperConstructor<
90
- SchemaValidator,
91
- Dto['UpdateBillingPortalDtoMapper'],
92
- Entities['UpdateBillingPortalDtoMapper']
93
- >;
94
- },
95
- options?:
96
- | {
97
- telemetry?: TelemetryOptions;
98
- enableDatabaseBackup?: boolean;
99
- }
100
- | undefined
101
- );
102
- protected createCacheKey: (id: string) => string;
103
- createBillingPortalSession(
104
- billingPortalDto: Dto['CreateBillingPortalDtoMapper']
105
- ): Promise<Dto['BillingPortalDtoMapper']>;
106
- getBillingPortalSession(idDto: IdDto): Promise<Dto['BillingPortalDtoMapper']>;
107
- updateBillingPortalSession(
108
- billingPortalDto: UpdateBillingPortalDto
109
- ): Promise<Dto['BillingPortalDtoMapper']>;
110
- expireBillingPortalSession(idDto: IdDto): Promise<void>;
111
- }
112
- //# sourceMappingURL=billingPortal.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"billingPortal.service.d.ts","sourceRoot":"","sources":["../../services/billingPortal.service.ts"],"names":[],"mappings":"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"}
@@ -1,128 +0,0 @@
1
- import { createCacheKey } from '@forklaunch/core/cache';
2
- import { evaluateTelemetryOptions } from '@forklaunch/core/http';
3
- import { transformIntoInternalDtoMapper } from '@forklaunch/core/mappers';
4
- export class BaseBillingPortalService {
5
- em;
6
- cache;
7
- openTelemetryCollector;
8
- schemaValidator;
9
- mappers;
10
- options;
11
- #mappers;
12
- evaluatedTelemetryOptions;
13
- enableDatabaseBackup;
14
- constructor(
15
- em,
16
- cache,
17
- openTelemetryCollector,
18
- schemaValidator,
19
- mappers,
20
- options
21
- ) {
22
- this.em = em;
23
- this.cache = cache;
24
- this.openTelemetryCollector = openTelemetryCollector;
25
- this.schemaValidator = schemaValidator;
26
- this.mappers = mappers;
27
- this.options = options;
28
- this.#mappers = transformIntoInternalDtoMapper(mappers, schemaValidator);
29
- this.enableDatabaseBackup = options?.enableDatabaseBackup ?? false;
30
- this.evaluatedTelemetryOptions = options?.telemetry
31
- ? evaluateTelemetryOptions(options.telemetry).enabled
32
- : {
33
- logging: false,
34
- metrics: false,
35
- tracing: false
36
- };
37
- }
38
- createCacheKey = createCacheKey('billing_portal_session');
39
- async createBillingPortalSession(billingPortalDto) {
40
- if (this.evaluatedTelemetryOptions.logging) {
41
- this.openTelemetryCollector.info(
42
- 'Creating billing portal session',
43
- billingPortalDto
44
- );
45
- }
46
- const billingPortal =
47
- await this.#mappers.CreateBillingPortalDtoMapper.deserializeDtoToEntity(
48
- billingPortalDto,
49
- this.em
50
- );
51
- if (this.enableDatabaseBackup) {
52
- await this.em.persistAndFlush(billingPortal);
53
- }
54
- const createdBillingPortalDto =
55
- await this.#mappers.BillingPortalDtoMapper.serializeEntityToDto(
56
- billingPortal
57
- );
58
- await this.cache.putRecord({
59
- key: this.createCacheKey(createdBillingPortalDto.id),
60
- value: createdBillingPortalDto,
61
- ttlMilliseconds: this.cache.getTtlMilliseconds()
62
- });
63
- return createdBillingPortalDto;
64
- }
65
- async getBillingPortalSession(idDto) {
66
- if (this.evaluatedTelemetryOptions.logging) {
67
- this.openTelemetryCollector.info('Getting billing portal session', idDto);
68
- }
69
- const billingPortalDetails = await this.cache.readRecord(
70
- this.createCacheKey(idDto.id)
71
- );
72
- if (!billingPortalDetails) {
73
- throw new Error('Session not found');
74
- }
75
- return billingPortalDetails.value;
76
- }
77
- async updateBillingPortalSession(billingPortalDto) {
78
- if (this.evaluatedTelemetryOptions.logging) {
79
- this.openTelemetryCollector.info(
80
- 'Updating billing portal session',
81
- billingPortalDto
82
- );
83
- }
84
- const existingBillingPortal = (
85
- await this.cache.readRecord(this.createCacheKey(billingPortalDto.id))
86
- )?.value;
87
- if (!existingBillingPortal) {
88
- throw new Error('Session not found');
89
- }
90
- const billingPortal =
91
- await this.#mappers.UpdateBillingPortalDtoMapper.deserializeDtoToEntity(
92
- billingPortalDto,
93
- this.em
94
- );
95
- if (this.enableDatabaseBackup) {
96
- await this.em.persistAndFlush({
97
- billingPortal
98
- });
99
- }
100
- const updatedBillingPortalDto = {
101
- ...existingBillingPortal,
102
- ...(await this.#mappers.BillingPortalDtoMapper.serializeEntityToDto(
103
- billingPortal
104
- ))
105
- };
106
- await this.cache.putRecord({
107
- key: this.createCacheKey(updatedBillingPortalDto.id),
108
- value: updatedBillingPortalDto,
109
- ttlMilliseconds: this.cache.getTtlMilliseconds()
110
- });
111
- return updatedBillingPortalDto;
112
- }
113
- async expireBillingPortalSession(idDto) {
114
- if (this.evaluatedTelemetryOptions.logging) {
115
- this.openTelemetryCollector.info(
116
- 'Expiring billing portal session',
117
- idDto
118
- );
119
- }
120
- const sessionExists = await this.cache.readRecord(
121
- this.createCacheKey(idDto.id)
122
- );
123
- if (!sessionExists) {
124
- throw new Error('Session not found');
125
- }
126
- await this.cache.deleteRecord(this.createCacheKey(idDto.id));
127
- }
128
- }