@forklaunch/implementation-billing-base 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/__test__/schemaEquality.test.js +35 -14
- package/lib/eject/domain/schemas/billingPortal.schema.ts +1 -7
- package/lib/eject/domain/schemas/checkoutSession.schema.ts +24 -4
- package/lib/eject/domain/schemas/paymentLink.schema.ts +24 -4
- package/lib/eject/services/billingPortal.service.ts +97 -25
- package/lib/eject/services/checkoutSession.service.ts +106 -23
- package/lib/eject/services/paymentLink.service.ts +104 -25
- package/lib/eject/services/plan.service.ts +41 -5
- package/lib/eject/services/subscription.service.ts +56 -3
- package/lib/schemas/checkoutSession.schema.d.ts +97 -11
- package/lib/schemas/checkoutSession.schema.d.ts.map +1 -1
- package/lib/schemas/paymentLink.schema.d.ts +101 -12
- package/lib/schemas/paymentLink.schema.d.ts.map +1 -1
- package/lib/schemas/typebox/checkoutSession.schema.d.ts +130 -10
- package/lib/schemas/typebox/checkoutSession.schema.d.ts.map +1 -1
- package/lib/schemas/typebox/checkoutSession.schema.js +9 -3
- package/lib/schemas/typebox/paymentLink.schema.d.ts +144 -12
- package/lib/schemas/typebox/paymentLink.schema.d.ts.map +1 -1
- package/lib/schemas/typebox/paymentLink.schema.js +9 -3
- package/lib/schemas/zod/checkoutSession.schema.d.ts +66 -12
- package/lib/schemas/zod/checkoutSession.schema.d.ts.map +1 -1
- package/lib/schemas/zod/checkoutSession.schema.js +9 -3
- package/lib/schemas/zod/paymentLink.schema.d.ts +66 -12
- package/lib/schemas/zod/paymentLink.schema.d.ts.map +1 -1
- package/lib/schemas/zod/paymentLink.schema.js +9 -3
- package/lib/services/billingPortal.service.d.ts +20 -2
- package/lib/services/billingPortal.service.d.ts.map +1 -1
- package/lib/services/billingPortal.service.js +83 -25
- package/lib/services/checkoutSession.service.d.ts +58 -15
- package/lib/services/checkoutSession.service.d.ts.map +1 -1
- package/lib/services/checkoutSession.service.js +61 -10
- package/lib/services/paymentLink.service.d.ts +34 -15
- package/lib/services/paymentLink.service.d.ts.map +1 -1
- package/lib/services/paymentLink.service.js +79 -11
- package/lib/services/plan.service.d.ts +14 -2
- package/lib/services/plan.service.d.ts.map +1 -1
- package/lib/services/plan.service.js +35 -5
- package/lib/services/subscription.service.d.ts +16 -2
- package/lib/services/subscription.service.d.ts.map +1 -1
- package/lib/services/subscription.service.js +49 -3
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.service.d.ts","sourceRoot":"","sources":["../../services/plan.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAsB,MAAM,oBAAoB,CAAC;AACvE,OAAO,
|
|
1
|
+
{"version":3,"file":"plan.service.d.ts","sourceRoot":"","sources":["../../services/plan.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,32 @@
|
|
|
1
|
+
import { evaluateTelemetryOptions } from '@forklaunch/core/http';
|
|
1
2
|
import { transformIntoInternalDtoMapper } from '@forklaunch/core/mappers';
|
|
2
3
|
export class BasePlanService {
|
|
3
4
|
em;
|
|
4
5
|
openTelemetryCollector;
|
|
5
6
|
schemaValidator;
|
|
6
7
|
mappers;
|
|
8
|
+
options;
|
|
7
9
|
#mappers;
|
|
8
|
-
|
|
10
|
+
evaluatedTelemetryOptions;
|
|
11
|
+
constructor(em, openTelemetryCollector, schemaValidator, mappers, options) {
|
|
9
12
|
this.em = em;
|
|
10
13
|
this.openTelemetryCollector = openTelemetryCollector;
|
|
11
14
|
this.schemaValidator = schemaValidator;
|
|
12
15
|
this.mappers = mappers;
|
|
16
|
+
this.options = options;
|
|
13
17
|
this.#mappers = transformIntoInternalDtoMapper(mappers, schemaValidator);
|
|
18
|
+
this.evaluatedTelemetryOptions = options?.telemetry
|
|
19
|
+
? evaluateTelemetryOptions(options.telemetry).enabled
|
|
20
|
+
: {
|
|
21
|
+
logging: false,
|
|
22
|
+
metrics: false,
|
|
23
|
+
tracing: false
|
|
24
|
+
};
|
|
14
25
|
}
|
|
15
26
|
async listPlans(idsDto, em) {
|
|
27
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
28
|
+
this.openTelemetryCollector.info('Listing plans', idsDto);
|
|
29
|
+
}
|
|
16
30
|
return Promise.all(
|
|
17
31
|
(
|
|
18
32
|
await (em ?? this.em).findAll('Plan', {
|
|
@@ -22,20 +36,33 @@ export class BasePlanService {
|
|
|
22
36
|
);
|
|
23
37
|
}
|
|
24
38
|
async createPlan(planDto, em) {
|
|
25
|
-
|
|
26
|
-
|
|
39
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
40
|
+
this.openTelemetryCollector.info('Creating plan', planDto);
|
|
41
|
+
}
|
|
42
|
+
const plan = await this.#mappers.CreatePlanDtoMapper.deserializeDtoToEntity(
|
|
43
|
+
planDto,
|
|
44
|
+
em ?? this.em
|
|
45
|
+
);
|
|
27
46
|
await (em ?? this.em).transactional(async (innerEm) => {
|
|
28
47
|
await innerEm.persist(plan);
|
|
29
48
|
});
|
|
30
49
|
return this.#mappers.PlanDtoMapper.serializeEntityToDto(plan);
|
|
31
50
|
}
|
|
32
51
|
async getPlan(idDto, em) {
|
|
52
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
53
|
+
this.openTelemetryCollector.info('Getting plan', idDto);
|
|
54
|
+
}
|
|
33
55
|
const plan = await (em ?? this.em).findOneOrFail('Plan', idDto);
|
|
34
56
|
return this.#mappers.PlanDtoMapper.serializeEntityToDto(plan);
|
|
35
57
|
}
|
|
36
58
|
async updatePlan(planDto, em) {
|
|
37
|
-
|
|
38
|
-
|
|
59
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
60
|
+
this.openTelemetryCollector.info('Updating plan', planDto);
|
|
61
|
+
}
|
|
62
|
+
const plan = await this.#mappers.UpdatePlanDtoMapper.deserializeDtoToEntity(
|
|
63
|
+
planDto,
|
|
64
|
+
em ?? this.em
|
|
65
|
+
);
|
|
39
66
|
const updatedPlan = await (em ?? this.em).upsert(plan);
|
|
40
67
|
await (em ?? this.em).transactional(async (innerEm) => {
|
|
41
68
|
await innerEm.persist(plan);
|
|
@@ -45,6 +72,9 @@ export class BasePlanService {
|
|
|
45
72
|
return updatedPlanDto;
|
|
46
73
|
}
|
|
47
74
|
async deletePlan(idDto, em) {
|
|
75
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
76
|
+
this.openTelemetryCollector.info('Deleting plan', idDto);
|
|
77
|
+
}
|
|
48
78
|
await (em ?? this.em).nativeDelete('Plan', idDto);
|
|
49
79
|
}
|
|
50
80
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { IdDto } from '@forklaunch/common';
|
|
2
2
|
import {
|
|
3
3
|
MetricsDefinition,
|
|
4
|
-
OpenTelemetryCollector
|
|
4
|
+
OpenTelemetryCollector,
|
|
5
|
+
TelemetryOptions
|
|
5
6
|
} from '@forklaunch/core/http';
|
|
6
7
|
import {
|
|
7
8
|
RequestDtoMapperConstructor,
|
|
@@ -85,6 +86,13 @@ export declare class BaseSubscriptionService<
|
|
|
85
86
|
Entities['UpdateSubscriptionDtoMapper']
|
|
86
87
|
>;
|
|
87
88
|
};
|
|
89
|
+
readonly options?:
|
|
90
|
+
| {
|
|
91
|
+
enableDatabaseBackup?: boolean;
|
|
92
|
+
telemetry?: TelemetryOptions;
|
|
93
|
+
}
|
|
94
|
+
| undefined;
|
|
95
|
+
private evaluatedTelemetryOptions;
|
|
88
96
|
constructor(
|
|
89
97
|
em: EntityManager,
|
|
90
98
|
openTelemetryCollector: OpenTelemetryCollector<Metrics>,
|
|
@@ -105,7 +113,13 @@ export declare class BaseSubscriptionService<
|
|
|
105
113
|
Dto['UpdateSubscriptionDtoMapper'],
|
|
106
114
|
Entities['UpdateSubscriptionDtoMapper']
|
|
107
115
|
>;
|
|
108
|
-
}
|
|
116
|
+
},
|
|
117
|
+
options?:
|
|
118
|
+
| {
|
|
119
|
+
enableDatabaseBackup?: boolean;
|
|
120
|
+
telemetry?: TelemetryOptions;
|
|
121
|
+
}
|
|
122
|
+
| undefined
|
|
109
123
|
);
|
|
110
124
|
createSubscription(
|
|
111
125
|
subscriptionDto: Dto['CreateSubscriptionDtoMapper'],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription.service.d.ts","sourceRoot":"","sources":["../../services/subscription.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAsB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,
|
|
1
|
+
{"version":3,"file":"subscription.service.d.ts","sourceRoot":"","sources":["../../services/subscription.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,42 @@
|
|
|
1
|
+
import { evaluateTelemetryOptions } from '@forklaunch/core/http';
|
|
1
2
|
import { transformIntoInternalDtoMapper } from '@forklaunch/core/mappers';
|
|
2
3
|
export class BaseSubscriptionService {
|
|
3
4
|
em;
|
|
4
5
|
openTelemetryCollector;
|
|
5
6
|
schemaValidator;
|
|
6
7
|
mappers;
|
|
8
|
+
options;
|
|
7
9
|
#mappers;
|
|
8
|
-
|
|
10
|
+
evaluatedTelemetryOptions;
|
|
11
|
+
constructor(em, openTelemetryCollector, schemaValidator, mappers, options) {
|
|
9
12
|
this.em = em;
|
|
10
13
|
this.openTelemetryCollector = openTelemetryCollector;
|
|
11
14
|
this.schemaValidator = schemaValidator;
|
|
12
15
|
this.mappers = mappers;
|
|
16
|
+
this.options = options;
|
|
13
17
|
this.#mappers = transformIntoInternalDtoMapper(
|
|
14
18
|
mappers,
|
|
15
19
|
this.schemaValidator
|
|
16
20
|
);
|
|
21
|
+
this.evaluatedTelemetryOptions = options?.telemetry
|
|
22
|
+
? evaluateTelemetryOptions(options.telemetry).enabled
|
|
23
|
+
: {
|
|
24
|
+
logging: false,
|
|
25
|
+
metrics: false,
|
|
26
|
+
tracing: false
|
|
27
|
+
};
|
|
17
28
|
}
|
|
18
29
|
async createSubscription(subscriptionDto, em) {
|
|
30
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
31
|
+
this.openTelemetryCollector.info(
|
|
32
|
+
'Creating subscription',
|
|
33
|
+
subscriptionDto
|
|
34
|
+
);
|
|
35
|
+
}
|
|
19
36
|
const subscription =
|
|
20
37
|
await this.#mappers.CreateSubscriptionDtoMapper.deserializeDtoToEntity(
|
|
21
|
-
subscriptionDto
|
|
38
|
+
subscriptionDto,
|
|
39
|
+
em ?? this.em
|
|
22
40
|
);
|
|
23
41
|
await (em ?? this.em).transactional(async (innerEm) => {
|
|
24
42
|
await innerEm.persist(subscription);
|
|
@@ -30,6 +48,9 @@ export class BaseSubscriptionService {
|
|
|
30
48
|
return createdSubscriptionDto;
|
|
31
49
|
}
|
|
32
50
|
async getSubscription(idDto, em) {
|
|
51
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
52
|
+
this.openTelemetryCollector.info('Getting subscription', idDto);
|
|
53
|
+
}
|
|
33
54
|
const subscription = await (em ?? this.em).findOneOrFail(
|
|
34
55
|
'Subscription',
|
|
35
56
|
idDto
|
|
@@ -39,6 +60,9 @@ export class BaseSubscriptionService {
|
|
|
39
60
|
);
|
|
40
61
|
}
|
|
41
62
|
async getUserSubscription({ id }, em) {
|
|
63
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
64
|
+
this.openTelemetryCollector.info('Getting user subscription', id);
|
|
65
|
+
}
|
|
42
66
|
const subscription = await (em ?? this.em).findOneOrFail('Subscription', {
|
|
43
67
|
partyId: id,
|
|
44
68
|
partyType: 'USER',
|
|
@@ -49,6 +73,9 @@ export class BaseSubscriptionService {
|
|
|
49
73
|
);
|
|
50
74
|
}
|
|
51
75
|
async getOrganizationSubscription({ id }, em) {
|
|
76
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
77
|
+
this.openTelemetryCollector.info('Getting organization subscription', id);
|
|
78
|
+
}
|
|
52
79
|
const subscription = await (em ?? this.em).findOneOrFail('Subscription', {
|
|
53
80
|
partyId: id,
|
|
54
81
|
partyType: 'ORGANIZATION',
|
|
@@ -59,9 +86,16 @@ export class BaseSubscriptionService {
|
|
|
59
86
|
);
|
|
60
87
|
}
|
|
61
88
|
async updateSubscription(subscriptionDto, em) {
|
|
89
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
90
|
+
this.openTelemetryCollector.info(
|
|
91
|
+
'Updating subscription',
|
|
92
|
+
subscriptionDto
|
|
93
|
+
);
|
|
94
|
+
}
|
|
62
95
|
const subscription =
|
|
63
96
|
this.#mappers.UpdateSubscriptionDtoMapper.deserializeDtoToEntity(
|
|
64
|
-
subscriptionDto
|
|
97
|
+
subscriptionDto,
|
|
98
|
+
em ?? this.em
|
|
65
99
|
);
|
|
66
100
|
const updatedSubscription = await (em ?? this.em).upsert(subscription);
|
|
67
101
|
await (em ?? this.em).transactional(async (innerEm) => {
|
|
@@ -74,6 +108,9 @@ export class BaseSubscriptionService {
|
|
|
74
108
|
return updatedSubscriptionDto;
|
|
75
109
|
}
|
|
76
110
|
async deleteSubscription(idDto, em) {
|
|
111
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
112
|
+
this.openTelemetryCollector.info('Deleting subscription', idDto);
|
|
113
|
+
}
|
|
77
114
|
const subscription = await (em ?? this.em).findOne('Subscription', idDto);
|
|
78
115
|
if (!subscription) {
|
|
79
116
|
throw new Error('Subscription not found');
|
|
@@ -81,6 +118,9 @@ export class BaseSubscriptionService {
|
|
|
81
118
|
await (em ?? this.em).removeAndFlush(subscription);
|
|
82
119
|
}
|
|
83
120
|
async listSubscriptions(idsDto, em) {
|
|
121
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
122
|
+
this.openTelemetryCollector.info('Listing subscriptions', idsDto);
|
|
123
|
+
}
|
|
84
124
|
const subscriptions = await (em ?? this.em).findAll('Subscription', {
|
|
85
125
|
where: idsDto.ids
|
|
86
126
|
? {
|
|
@@ -101,6 +141,9 @@ export class BaseSubscriptionService {
|
|
|
101
141
|
);
|
|
102
142
|
}
|
|
103
143
|
async cancelSubscription(idDto, em) {
|
|
144
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
145
|
+
this.openTelemetryCollector.info('Canceling subscription', idDto);
|
|
146
|
+
}
|
|
104
147
|
const subscription = await (em ?? this.em).findOne('Subscription', idDto);
|
|
105
148
|
if (!subscription) {
|
|
106
149
|
throw new Error('Subscription not found');
|
|
@@ -111,6 +154,9 @@ export class BaseSubscriptionService {
|
|
|
111
154
|
});
|
|
112
155
|
}
|
|
113
156
|
async resumeSubscription(idDto, em) {
|
|
157
|
+
if (this.evaluatedTelemetryOptions.logging) {
|
|
158
|
+
this.openTelemetryCollector.info('Resuming subscription', idDto);
|
|
159
|
+
}
|
|
114
160
|
const subscription = await (em ?? this.em).findOne('Subscription', idDto);
|
|
115
161
|
if (!subscription) {
|
|
116
162
|
throw new Error('Subscription not found');
|