@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,137 +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 { CheckoutSessionService } from '@forklaunch/interfaces-billing/interfaces';
13
- import {
14
- CheckoutSessionDto,
15
- CreateCheckoutSessionDto,
16
- UpdateCheckoutSessionDto
17
- } from '@forklaunch/interfaces-billing/types';
18
- import { AnySchemaValidator } from '@forklaunch/validator';
19
- import { EntityManager } from '@mikro-orm/core';
20
- export declare class BaseCheckoutSessionService<
21
- SchemaValidator extends AnySchemaValidator,
22
- PaymentMethodEnum,
23
- StatusEnum,
24
- Metrics extends MetricsDefinition = MetricsDefinition,
25
- Dto extends {
26
- CheckoutSessionDtoMapper: CheckoutSessionDto<PaymentMethodEnum, StatusEnum>;
27
- CreateCheckoutSessionDtoMapper: CreateCheckoutSessionDto<
28
- PaymentMethodEnum,
29
- StatusEnum
30
- >;
31
- UpdateCheckoutSessionDtoMapper: UpdateCheckoutSessionDto<
32
- PaymentMethodEnum,
33
- StatusEnum
34
- >;
35
- } = {
36
- CheckoutSessionDtoMapper: CheckoutSessionDto<PaymentMethodEnum, StatusEnum>;
37
- CreateCheckoutSessionDtoMapper: CreateCheckoutSessionDto<
38
- PaymentMethodEnum,
39
- StatusEnum
40
- >;
41
- UpdateCheckoutSessionDtoMapper: UpdateCheckoutSessionDto<
42
- PaymentMethodEnum,
43
- StatusEnum
44
- >;
45
- },
46
- Entities extends {
47
- CheckoutSessionDtoMapper: CheckoutSessionDto<PaymentMethodEnum, StatusEnum>;
48
- CreateCheckoutSessionDtoMapper: CheckoutSessionDto<
49
- PaymentMethodEnum,
50
- StatusEnum
51
- >;
52
- UpdateCheckoutSessionDtoMapper: CheckoutSessionDto<
53
- PaymentMethodEnum,
54
- StatusEnum
55
- >;
56
- } = {
57
- CheckoutSessionDtoMapper: CheckoutSessionDto<PaymentMethodEnum, StatusEnum>;
58
- CreateCheckoutSessionDtoMapper: CheckoutSessionDto<
59
- PaymentMethodEnum,
60
- StatusEnum
61
- >;
62
- UpdateCheckoutSessionDtoMapper: CheckoutSessionDto<
63
- PaymentMethodEnum,
64
- StatusEnum
65
- >;
66
- }
67
- > implements CheckoutSessionService<PaymentMethodEnum, StatusEnum>
68
- {
69
- #private;
70
- protected readonly em: EntityManager;
71
- protected readonly cache: TtlCache;
72
- protected readonly openTelemetryCollector: OpenTelemetryCollector<Metrics>;
73
- protected readonly schemaValidator: SchemaValidator;
74
- protected readonly mappers: {
75
- CheckoutSessionDtoMapper: ResponseDtoMapperConstructor<
76
- SchemaValidator,
77
- Dto['CheckoutSessionDtoMapper'],
78
- Entities['CheckoutSessionDtoMapper']
79
- >;
80
- CreateCheckoutSessionDtoMapper: RequestDtoMapperConstructor<
81
- SchemaValidator,
82
- Dto['CreateCheckoutSessionDtoMapper'],
83
- Entities['CreateCheckoutSessionDtoMapper']
84
- >;
85
- UpdateCheckoutSessionDtoMapper: RequestDtoMapperConstructor<
86
- SchemaValidator,
87
- Dto['UpdateCheckoutSessionDtoMapper'],
88
- Entities['UpdateCheckoutSessionDtoMapper']
89
- >;
90
- };
91
- readonly options?:
92
- | {
93
- enableDatabaseBackup?: boolean;
94
- telemetry?: TelemetryOptions;
95
- }
96
- | undefined;
97
- private evaluatedTelemetryOptions;
98
- private enableDatabaseBackup;
99
- constructor(
100
- em: EntityManager,
101
- cache: TtlCache,
102
- openTelemetryCollector: OpenTelemetryCollector<Metrics>,
103
- schemaValidator: SchemaValidator,
104
- mappers: {
105
- CheckoutSessionDtoMapper: ResponseDtoMapperConstructor<
106
- SchemaValidator,
107
- Dto['CheckoutSessionDtoMapper'],
108
- Entities['CheckoutSessionDtoMapper']
109
- >;
110
- CreateCheckoutSessionDtoMapper: RequestDtoMapperConstructor<
111
- SchemaValidator,
112
- Dto['CreateCheckoutSessionDtoMapper'],
113
- Entities['CreateCheckoutSessionDtoMapper']
114
- >;
115
- UpdateCheckoutSessionDtoMapper: RequestDtoMapperConstructor<
116
- SchemaValidator,
117
- Dto['UpdateCheckoutSessionDtoMapper'],
118
- Entities['UpdateCheckoutSessionDtoMapper']
119
- >;
120
- },
121
- options?:
122
- | {
123
- enableDatabaseBackup?: boolean;
124
- telemetry?: TelemetryOptions;
125
- }
126
- | undefined
127
- );
128
- protected createCacheKey: (id: string) => string;
129
- createCheckoutSession(
130
- checkoutSessionDto: Dto['CreateCheckoutSessionDtoMapper']
131
- ): Promise<Dto['CheckoutSessionDtoMapper']>;
132
- getCheckoutSession({ id }: IdDto): Promise<Dto['CheckoutSessionDtoMapper']>;
133
- expireCheckoutSession({ id }: IdDto): Promise<void>;
134
- handleCheckoutSuccess({ id }: IdDto): Promise<void>;
135
- handleCheckoutFailure({ id }: IdDto): Promise<void>;
136
- }
137
- //# sourceMappingURL=checkoutSession.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkoutSession.service.d.ts","sourceRoot":"","sources":["../../services/checkoutSession.service.ts"],"names":[],"mappings":"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"}
@@ -1,111 +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 BaseCheckoutSessionService {
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('checkout_session');
39
- async createCheckoutSession(checkoutSessionDto) {
40
- if (this.evaluatedTelemetryOptions.logging) {
41
- this.openTelemetryCollector.info(
42
- 'Creating checkout session',
43
- checkoutSessionDto
44
- );
45
- }
46
- const checkoutSession =
47
- await this.#mappers.CreateCheckoutSessionDtoMapper.deserializeDtoToEntity(
48
- checkoutSessionDto,
49
- this.em
50
- );
51
- const createdCheckoutSessionDto =
52
- await this.#mappers.CheckoutSessionDtoMapper.serializeEntityToDto(
53
- checkoutSession
54
- );
55
- if (this.enableDatabaseBackup) {
56
- await this.em.persistAndFlush(checkoutSession);
57
- }
58
- await this.cache.putRecord({
59
- key: this.createCacheKey(createdCheckoutSessionDto.id),
60
- value: createdCheckoutSessionDto,
61
- ttlMilliseconds: this.cache.getTtlMilliseconds()
62
- });
63
- return createdCheckoutSessionDto;
64
- }
65
- async getCheckoutSession({ id }) {
66
- const checkoutSessionDetails = await this.cache.readRecord(
67
- this.createCacheKey(id)
68
- );
69
- if (!checkoutSessionDetails) {
70
- throw new Error('Session not found');
71
- }
72
- return this.#mappers.CheckoutSessionDtoMapper.serializeEntityToDto(
73
- checkoutSessionDetails.value
74
- );
75
- }
76
- async expireCheckoutSession({ id }) {
77
- const checkoutSessionDetails = await this.cache.readRecord(
78
- this.createCacheKey(id)
79
- );
80
- if (!checkoutSessionDetails) {
81
- throw new Error('Session not found');
82
- }
83
- await this.cache.deleteRecord(this.createCacheKey(id));
84
- }
85
- async handleCheckoutSuccess({ id }) {
86
- if (this.evaluatedTelemetryOptions.logging) {
87
- this.openTelemetryCollector.info('Checkout success', { id });
88
- }
89
- if (this.enableDatabaseBackup) {
90
- const checkoutSession = await this.em.upsert('CheckoutSession', {
91
- id,
92
- status: 'SUCCESS'
93
- });
94
- await this.em.persistAndFlush(checkoutSession);
95
- }
96
- await this.cache.deleteRecord(this.createCacheKey(id));
97
- }
98
- async handleCheckoutFailure({ id }) {
99
- if (this.evaluatedTelemetryOptions.logging) {
100
- this.openTelemetryCollector.info('Checkout failure', { id });
101
- }
102
- if (this.enableDatabaseBackup) {
103
- const checkoutSession = await this.em.upsert('CheckoutSession', {
104
- id,
105
- status: 'FAILED'
106
- });
107
- await this.em.persistAndFlush(checkoutSession);
108
- }
109
- await this.cache.deleteRecord(this.createCacheKey(id));
110
- }
111
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../services/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,uBAAuB,CAAC;AACtC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC"}
@@ -1,118 +0,0 @@
1
- import { IdDto, IdsDto } 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 { PaymentLinkService } from '@forklaunch/interfaces-billing/interfaces';
13
- import {
14
- CreatePaymentLinkDto,
15
- PaymentLinkDto,
16
- UpdatePaymentLinkDto
17
- } from '@forklaunch/interfaces-billing/types';
18
- import { AnySchemaValidator } from '@forklaunch/validator';
19
- import { EntityManager } from '@mikro-orm/core';
20
- export declare class BasePaymentLinkService<
21
- SchemaValidator extends AnySchemaValidator,
22
- CurrencyEnum,
23
- StatusEnum,
24
- Metrics extends MetricsDefinition = MetricsDefinition,
25
- Dto extends {
26
- PaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum, StatusEnum>;
27
- CreatePaymentLinkDtoMapper: CreatePaymentLinkDto<CurrencyEnum, StatusEnum>;
28
- UpdatePaymentLinkDtoMapper: UpdatePaymentLinkDto<CurrencyEnum, StatusEnum>;
29
- } = {
30
- PaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum, StatusEnum>;
31
- CreatePaymentLinkDtoMapper: CreatePaymentLinkDto<CurrencyEnum, StatusEnum>;
32
- UpdatePaymentLinkDtoMapper: UpdatePaymentLinkDto<CurrencyEnum, StatusEnum>;
33
- },
34
- Entities extends {
35
- PaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum, StatusEnum>;
36
- CreatePaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum, StatusEnum>;
37
- UpdatePaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum, StatusEnum>;
38
- } = {
39
- PaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum, StatusEnum>;
40
- CreatePaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum, StatusEnum>;
41
- UpdatePaymentLinkDtoMapper: PaymentLinkDto<CurrencyEnum, StatusEnum>;
42
- }
43
- > implements PaymentLinkService<CurrencyEnum, StatusEnum>
44
- {
45
- #private;
46
- protected readonly em: EntityManager;
47
- protected readonly cache: TtlCache;
48
- protected readonly openTelemetryCollector: OpenTelemetryCollector<Metrics>;
49
- protected readonly schemaValidator: SchemaValidator;
50
- protected readonly mappers: {
51
- PaymentLinkDtoMapper: ResponseDtoMapperConstructor<
52
- SchemaValidator,
53
- Dto['PaymentLinkDtoMapper'],
54
- Entities['PaymentLinkDtoMapper']
55
- >;
56
- CreatePaymentLinkDtoMapper: RequestDtoMapperConstructor<
57
- SchemaValidator,
58
- Dto['CreatePaymentLinkDtoMapper'],
59
- Entities['CreatePaymentLinkDtoMapper']
60
- >;
61
- UpdatePaymentLinkDtoMapper: RequestDtoMapperConstructor<
62
- SchemaValidator,
63
- Dto['UpdatePaymentLinkDtoMapper'],
64
- Entities['UpdatePaymentLinkDtoMapper']
65
- >;
66
- };
67
- readonly options?:
68
- | {
69
- enableDatabaseBackup?: boolean;
70
- telemetry?: TelemetryOptions;
71
- }
72
- | undefined;
73
- private evaluatedTelemetryOptions;
74
- private enableDatabaseBackup;
75
- constructor(
76
- em: EntityManager,
77
- cache: TtlCache,
78
- openTelemetryCollector: OpenTelemetryCollector<Metrics>,
79
- schemaValidator: SchemaValidator,
80
- mappers: {
81
- PaymentLinkDtoMapper: ResponseDtoMapperConstructor<
82
- SchemaValidator,
83
- Dto['PaymentLinkDtoMapper'],
84
- Entities['PaymentLinkDtoMapper']
85
- >;
86
- CreatePaymentLinkDtoMapper: RequestDtoMapperConstructor<
87
- SchemaValidator,
88
- Dto['CreatePaymentLinkDtoMapper'],
89
- Entities['CreatePaymentLinkDtoMapper']
90
- >;
91
- UpdatePaymentLinkDtoMapper: RequestDtoMapperConstructor<
92
- SchemaValidator,
93
- Dto['UpdatePaymentLinkDtoMapper'],
94
- Entities['UpdatePaymentLinkDtoMapper']
95
- >;
96
- },
97
- options?:
98
- | {
99
- enableDatabaseBackup?: boolean;
100
- telemetry?: TelemetryOptions;
101
- }
102
- | undefined
103
- );
104
- protected cacheKeyPrefix: string;
105
- protected createCacheKey: (id: string) => string;
106
- createPaymentLink(
107
- paymentLinkDto: Dto['CreatePaymentLinkDtoMapper']
108
- ): Promise<Dto['PaymentLinkDtoMapper']>;
109
- updatePaymentLink(
110
- paymentLinkDto: Dto['UpdatePaymentLinkDtoMapper']
111
- ): Promise<Dto['PaymentLinkDtoMapper']>;
112
- getPaymentLink({ id }: IdDto): Promise<Dto['PaymentLinkDtoMapper']>;
113
- expirePaymentLink({ id }: IdDto): Promise<void>;
114
- handlePaymentSuccess({ id }: IdDto): Promise<void>;
115
- handlePaymentFailure({ id }: IdDto): Promise<void>;
116
- listPaymentLinks(idsDto?: IdsDto): Promise<Dto['PaymentLinkDtoMapper'][]>;
117
- }
118
- //# sourceMappingURL=paymentLink.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paymentLink.service.d.ts","sourceRoot":"","sources":["../../services/paymentLink.service.ts"],"names":[],"mappings":"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"}
@@ -1,154 +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 BasePaymentLinkService {
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
- cacheKeyPrefix = 'payment_link';
39
- createCacheKey = createCacheKey(this.cacheKeyPrefix);
40
- async createPaymentLink(paymentLinkDto) {
41
- if (this.evaluatedTelemetryOptions.logging) {
42
- this.openTelemetryCollector.info('Creating payment link', paymentLinkDto);
43
- }
44
- const paymentLink =
45
- await this.#mappers.CreatePaymentLinkDtoMapper.deserializeDtoToEntity(
46
- paymentLinkDto,
47
- this.em
48
- );
49
- if (this.enableDatabaseBackup) {
50
- await this.em.persistAndFlush(paymentLink);
51
- }
52
- const createdPaymentLinkDto =
53
- await this.#mappers.PaymentLinkDtoMapper.serializeEntityToDto(
54
- paymentLink
55
- );
56
- await this.cache.putRecord({
57
- key: this.createCacheKey(createdPaymentLinkDto.id),
58
- value: createdPaymentLinkDto,
59
- ttlMilliseconds: this.cache.getTtlMilliseconds()
60
- });
61
- return createdPaymentLinkDto;
62
- }
63
- async updatePaymentLink(paymentLinkDto) {
64
- if (this.evaluatedTelemetryOptions.logging) {
65
- this.openTelemetryCollector.info('Updating payment link', paymentLinkDto);
66
- }
67
- const cacheKey = this.createCacheKey(paymentLinkDto.id);
68
- const existingLink = (await this.cache.readRecord(cacheKey))?.value;
69
- if (!existingLink) {
70
- throw new Error('Payment link not found');
71
- }
72
- const paymentLink =
73
- await this.#mappers.UpdatePaymentLinkDtoMapper.deserializeDtoToEntity(
74
- paymentLinkDto,
75
- this.em
76
- );
77
- if (this.enableDatabaseBackup) {
78
- await this.em.persistAndFlush(paymentLink);
79
- }
80
- const updatedLinkDto = {
81
- ...existingLink,
82
- ...(await this.#mappers.PaymentLinkDtoMapper.serializeEntityToDto(
83
- paymentLink
84
- ))
85
- };
86
- await this.cache.putRecord({
87
- key: cacheKey,
88
- value: updatedLinkDto,
89
- ttlMilliseconds: this.cache.getTtlMilliseconds()
90
- });
91
- return updatedLinkDto;
92
- }
93
- async getPaymentLink({ id }) {
94
- if (this.evaluatedTelemetryOptions.logging) {
95
- this.openTelemetryCollector.info('Getting payment link', { id });
96
- }
97
- const cacheKey = this.createCacheKey(id);
98
- const paymentLink = await this.cache.readRecord(cacheKey);
99
- if (!paymentLink) {
100
- throw new Error('Payment link not found');
101
- }
102
- return this.#mappers.PaymentLinkDtoMapper.serializeEntityToDto(
103
- paymentLink.value
104
- );
105
- }
106
- async expirePaymentLink({ id }) {
107
- this.openTelemetryCollector.info('Payment link expired', { id });
108
- if (this.enableDatabaseBackup) {
109
- const paymentLink = await this.em.upsert('PaymentLink', {
110
- id,
111
- status: 'EXPIRED'
112
- });
113
- await this.em.removeAndFlush(paymentLink);
114
- }
115
- await this.cache.deleteRecord(this.createCacheKey(id));
116
- }
117
- async handlePaymentSuccess({ id }) {
118
- this.openTelemetryCollector.info('Payment link success', { id });
119
- if (this.enableDatabaseBackup) {
120
- const paymentLink = await this.em.upsert('PaymentLink', {
121
- id,
122
- status: 'COMPLETED'
123
- });
124
- await this.em.removeAndFlush(paymentLink);
125
- }
126
- await this.cache.deleteRecord(this.createCacheKey(id));
127
- }
128
- async handlePaymentFailure({ id }) {
129
- this.openTelemetryCollector.info('Payment link failure', { id });
130
- if (this.enableDatabaseBackup) {
131
- const paymentLink = await this.em.upsert('PaymentLink', {
132
- id,
133
- status: 'FAILED'
134
- });
135
- await this.em.removeAndFlush(paymentLink);
136
- }
137
- await this.cache.deleteRecord(this.createCacheKey(id));
138
- }
139
- async listPaymentLinks(idsDto) {
140
- const keys =
141
- idsDto?.ids.map((id) => this.createCacheKey(id)) ??
142
- (await this.cache.listKeys(this.cacheKeyPrefix));
143
- return Promise.all(
144
- keys.map(async (key) => {
145
- const paymentLink = await this.cache.readRecord(key);
146
- const paymentLinkDto =
147
- this.#mappers.PaymentLinkDtoMapper.serializeEntityToDto(
148
- paymentLink.value
149
- );
150
- return paymentLinkDto;
151
- })
152
- );
153
- }
154
- }
@@ -1,102 +0,0 @@
1
- import { IdDto, IdsDto } from '@forklaunch/common';
2
- import {
3
- MetricsDefinition,
4
- OpenTelemetryCollector,
5
- TelemetryOptions
6
- } from '@forklaunch/core/http';
7
- import {
8
- RequestDtoMapperConstructor,
9
- ResponseDtoMapperConstructor
10
- } from '@forklaunch/core/mappers';
11
- import { PlanService } from '@forklaunch/interfaces-billing/interfaces';
12
- import {
13
- CreatePlanDto,
14
- PlanDto,
15
- UpdatePlanDto
16
- } from '@forklaunch/interfaces-billing/types';
17
- import { AnySchemaValidator } from '@forklaunch/validator';
18
- import { EntityManager } from '@mikro-orm/core';
19
- export declare class BasePlanService<
20
- SchemaValidator extends AnySchemaValidator,
21
- PlanCadenceEnum,
22
- BillingProviderEnum,
23
- Metrics extends MetricsDefinition = MetricsDefinition,
24
- Dto extends {
25
- PlanDtoMapper: PlanDto<PlanCadenceEnum, BillingProviderEnum>;
26
- CreatePlanDtoMapper: CreatePlanDto<PlanCadenceEnum, BillingProviderEnum>;
27
- UpdatePlanDtoMapper: UpdatePlanDto<PlanCadenceEnum, BillingProviderEnum>;
28
- } = {
29
- PlanDtoMapper: PlanDto<PlanCadenceEnum, BillingProviderEnum>;
30
- CreatePlanDtoMapper: CreatePlanDto<PlanCadenceEnum, BillingProviderEnum>;
31
- UpdatePlanDtoMapper: UpdatePlanDto<PlanCadenceEnum, BillingProviderEnum>;
32
- },
33
- Entities extends {
34
- PlanDtoMapper: PlanDto<PlanCadenceEnum, BillingProviderEnum>;
35
- CreatePlanDtoMapper: PlanDto<PlanCadenceEnum, BillingProviderEnum>;
36
- UpdatePlanDtoMapper: PlanDto<PlanCadenceEnum, BillingProviderEnum>;
37
- } = {
38
- PlanDtoMapper: PlanDto<PlanCadenceEnum, BillingProviderEnum>;
39
- CreatePlanDtoMapper: PlanDto<PlanCadenceEnum, BillingProviderEnum>;
40
- UpdatePlanDtoMapper: PlanDto<PlanCadenceEnum, BillingProviderEnum>;
41
- }
42
- > implements PlanService<PlanCadenceEnum, BillingProviderEnum>
43
- {
44
- #private;
45
- private em;
46
- private readonly openTelemetryCollector;
47
- private readonly schemaValidator;
48
- private readonly mappers;
49
- readonly options?:
50
- | {
51
- telemetry?: TelemetryOptions;
52
- }
53
- | undefined;
54
- private evaluatedTelemetryOptions;
55
- constructor(
56
- em: EntityManager,
57
- openTelemetryCollector: OpenTelemetryCollector<Metrics>,
58
- schemaValidator: SchemaValidator,
59
- mappers: {
60
- PlanDtoMapper: ResponseDtoMapperConstructor<
61
- SchemaValidator,
62
- Dto['PlanDtoMapper'],
63
- Entities['PlanDtoMapper']
64
- >;
65
- CreatePlanDtoMapper: RequestDtoMapperConstructor<
66
- SchemaValidator,
67
- Dto['CreatePlanDtoMapper'],
68
- Entities['CreatePlanDtoMapper']
69
- >;
70
- UpdatePlanDtoMapper: RequestDtoMapperConstructor<
71
- SchemaValidator,
72
- Dto['UpdatePlanDtoMapper'],
73
- Entities['UpdatePlanDtoMapper']
74
- >;
75
- },
76
- options?:
77
- | {
78
- telemetry?: TelemetryOptions;
79
- }
80
- | undefined
81
- );
82
- listPlans(
83
- idsDto?: IdsDto,
84
- em?: EntityManager
85
- ): Promise<Dto['PlanDtoMapper'][]>;
86
- createPlan(
87
- planDto: Dto['CreatePlanDtoMapper'],
88
- em?: EntityManager
89
- ): Promise<Dto['PlanDtoMapper']>;
90
- getPlan(idDto: IdDto, em?: EntityManager): Promise<Dto['PlanDtoMapper']>;
91
- updatePlan(
92
- planDto: Dto['UpdatePlanDtoMapper'],
93
- em?: EntityManager
94
- ): Promise<Dto['PlanDtoMapper']>;
95
- deletePlan(
96
- idDto: {
97
- id: string;
98
- },
99
- em?: EntityManager
100
- ): Promise<void>;
101
- }
102
- //# sourceMappingURL=plan.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plan.service.d.ts","sourceRoot":"","sources":["../../services/plan.service.ts"],"names":[],"mappings":"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"}