@forklaunch/implementation-billing-stripe 0.6.0 → 1.0.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.
@@ -81,21 +81,21 @@ export type StripePlanEntities = {
81
81
  '~entity': (typeof Plan)['~entity'] & {
82
82
  cadence: PlanCadenceEnum[keyof PlanCadenceEnum];
83
83
  currency: CurrencyEnum[keyof CurrencyEnum];
84
- billingProvider: BillingProviderEnum[keyof BillingProviderEnum] | null;
84
+ billingProvider: BillingProviderEnum[keyof BillingProviderEnum];
85
85
  };
86
86
  };
87
87
  CreatePlanMapper: {
88
88
  '~entity': (typeof Plan)['~entity'] & {
89
89
  cadence: PlanCadenceEnum[keyof PlanCadenceEnum];
90
90
  currency: CurrencyEnum[keyof CurrencyEnum];
91
- billingProvider: BillingProviderEnum[keyof BillingProviderEnum] | null;
91
+ billingProvider: BillingProviderEnum[keyof BillingProviderEnum];
92
92
  };
93
93
  };
94
94
  UpdatePlanMapper: {
95
95
  '~entity': (typeof Plan)['~entity'] & {
96
96
  cadence: PlanCadenceEnum[keyof PlanCadenceEnum];
97
97
  currency: CurrencyEnum[keyof CurrencyEnum];
98
- billingProvider: BillingProviderEnum[keyof BillingProviderEnum] | null;
98
+ billingProvider: BillingProviderEnum[keyof BillingProviderEnum];
99
99
  };
100
100
  };
101
101
  };
@@ -105,19 +105,19 @@ export type StripeSubscriptionEntities<PartyTypeEnum> = {
105
105
  SubscriptionMapper: {
106
106
  '~entity': (typeof Subscription)['~entity'] & {
107
107
  partyType: PartyTypeEnum[keyof PartyTypeEnum];
108
- billingProvider: BillingProviderEnum[keyof BillingProviderEnum] | null;
108
+ billingProvider: BillingProviderEnum[keyof BillingProviderEnum];
109
109
  };
110
110
  };
111
111
  CreateSubscriptionMapper: {
112
112
  '~entity': (typeof Subscription)['~entity'] & {
113
113
  partyType: PartyTypeEnum[keyof PartyTypeEnum];
114
- billingProvider: BillingProviderEnum[keyof BillingProviderEnum] | null;
114
+ billingProvider: BillingProviderEnum[keyof BillingProviderEnum];
115
115
  };
116
116
  };
117
117
  UpdateSubscriptionMapper: {
118
118
  '~entity': (typeof Subscription)['~entity'] & {
119
119
  partyType: PartyTypeEnum[keyof PartyTypeEnum];
120
- billingProvider: BillingProviderEnum[keyof BillingProviderEnum] | null;
120
+ billingProvider: BillingProviderEnum[keyof BillingProviderEnum];
121
121
  };
122
122
  };
123
123
  };
@@ -24,18 +24,20 @@ export class StripeCheckoutSessionService<
24
24
  SchemaValidator extends AnySchemaValidator,
25
25
  StatusEnum,
26
26
  MapperEntities extends StripeCheckoutSessionEntities<StatusEnum>,
27
- Dto extends StripeCheckoutSessionDtos<StatusEnum> =
28
- StripeCheckoutSessionDtos<StatusEnum>
29
- > implements CheckoutSessionService<
30
- typeof PaymentMethodEnum,
31
- typeof CurrencyEnum,
32
- StatusEnum,
33
- {
34
- CreateCheckoutSessionDto: Dto['CreateCheckoutSessionMapper'];
35
- CheckoutSessionDto: Dto['CheckoutSessionMapper'];
36
- IdDto: IdDto;
37
- }
38
- > {
27
+ Dto extends
28
+ StripeCheckoutSessionDtos<StatusEnum> = StripeCheckoutSessionDtos<StatusEnum>
29
+ > implements
30
+ CheckoutSessionService<
31
+ typeof PaymentMethodEnum,
32
+ typeof CurrencyEnum,
33
+ StatusEnum,
34
+ {
35
+ CreateCheckoutSessionDto: Dto['CreateCheckoutSessionMapper'];
36
+ CheckoutSessionDto: Dto['CheckoutSessionMapper'];
37
+ IdDto: IdDto;
38
+ }
39
+ >
40
+ {
39
41
  baseCheckoutSessionService: BaseCheckoutSessionService<
40
42
  SchemaValidator,
41
43
  PaymentMethodEnum,
@@ -25,20 +25,22 @@ export class StripePaymentLinkService<
25
25
  SchemaValidator extends AnySchemaValidator,
26
26
  StatusEnum,
27
27
  Entities extends StripePaymentLinkEntities<StatusEnum>,
28
- Dto extends StripePaymentLinkDtos<StatusEnum> =
29
- StripePaymentLinkDtos<StatusEnum>
30
- > implements PaymentLinkService<
31
- PaymentMethodEnum,
32
- typeof CurrencyEnum,
33
- StatusEnum,
34
- {
35
- CreatePaymentLinkDto: StripeCreatePaymentLinkDto<StatusEnum>;
36
- UpdatePaymentLinkDto: StripeUpdatePaymentLinkDto<StatusEnum>;
37
- PaymentLinkDto: StripePaymentLinkDto<StatusEnum>;
38
- IdDto: IdDto;
39
- IdsDto: IdsDto;
40
- }
41
- > {
28
+ Dto extends
29
+ StripePaymentLinkDtos<StatusEnum> = StripePaymentLinkDtos<StatusEnum>
30
+ > implements
31
+ PaymentLinkService<
32
+ PaymentMethodEnum,
33
+ typeof CurrencyEnum,
34
+ StatusEnum,
35
+ {
36
+ CreatePaymentLinkDto: StripeCreatePaymentLinkDto<StatusEnum>;
37
+ UpdatePaymentLinkDto: StripeUpdatePaymentLinkDto<StatusEnum>;
38
+ PaymentLinkDto: StripePaymentLinkDto<StatusEnum>;
39
+ IdDto: IdDto;
40
+ IdsDto: IdsDto;
41
+ }
42
+ >
43
+ {
42
44
  basePaymentLinkService: BasePaymentLinkService<
43
45
  SchemaValidator,
44
46
  PaymentMethodEnum,
@@ -5,8 +5,7 @@ import {
5
5
  import { AnySchemaValidator } from '@forklaunch/validator';
6
6
  import { EntityManager } from '@mikro-orm/core';
7
7
  import Stripe from 'stripe';
8
- import { PartyEnum } from '../../../../billing-base/domain/enum/party.enum';
9
- import { StripeWebhookEvent } from '../../../../billing-stripe/persistence/entities/stripeWebhookEvent.entity';
8
+ import { StripeWebhookEvent } from '../persistence/entities';
10
9
  import { BillingProviderEnum } from '../domain/enum/billingProvider.enum';
11
10
  import { CurrencyEnum } from '../domain/enum/currency.enum';
12
11
  import { PaymentMethodEnum } from '../domain/enum/paymentMethod.enum';
@@ -28,16 +27,17 @@ export class StripeWebhookService<
28
27
  SchemaValidator extends AnySchemaValidator,
29
28
  StatusEnum,
30
29
  PartyEnum,
31
- BillingPortalEntities extends StripeBillingPortalEntities =
32
- StripeBillingPortalEntities,
33
- CheckoutSessionEntities extends StripeCheckoutSessionEntities<StatusEnum> =
34
- StripeCheckoutSessionEntities<StatusEnum>,
35
- PaymentLinkEntities extends StripePaymentLinkEntities<StatusEnum> =
36
- StripePaymentLinkEntities<StatusEnum>,
30
+ BillingPortalEntities extends
31
+ StripeBillingPortalEntities = StripeBillingPortalEntities,
32
+ CheckoutSessionEntities extends
33
+ StripeCheckoutSessionEntities<StatusEnum> = StripeCheckoutSessionEntities<StatusEnum>,
34
+ PaymentLinkEntities extends
35
+ StripePaymentLinkEntities<StatusEnum> = StripePaymentLinkEntities<StatusEnum>,
37
36
  PlanEntities extends StripePlanEntities = StripePlanEntities,
38
- SubscriptionEntities extends StripeSubscriptionEntities<PartyEnum> =
39
- StripeSubscriptionEntities<PartyEnum>
37
+ SubscriptionEntities extends
38
+ StripeSubscriptionEntities<PartyEnum> = StripeSubscriptionEntities<PartyEnum>
40
39
  > {
40
+ protected readonly defaultPartyType: PartyEnum[keyof PartyEnum];
41
41
  protected readonly stripeClient: Stripe;
42
42
  protected readonly em: EntityManager;
43
43
  protected readonly schemaValidator: SchemaValidator;
@@ -90,8 +90,10 @@ export class StripeWebhookService<
90
90
  SchemaValidator,
91
91
  PartyEnum,
92
92
  SubscriptionEntities
93
- >
93
+ >,
94
+ defaultPartyType: PartyEnum[keyof PartyEnum]
94
95
  ) {
96
+ this.defaultPartyType = defaultPartyType;
95
97
  this.stripeClient = stripeClient;
96
98
  this.em = em;
97
99
  this.schemaValidator = schemaValidator;
@@ -377,7 +379,7 @@ export class StripeWebhookService<
377
379
  typeof event.data.object.customer === 'string'
378
380
  ? event.data.object.customer
379
381
  : event.data.object.customer.id,
380
- partyType: PartyEnum.USER as PartyEnum[keyof PartyEnum],
382
+ partyType: this.defaultPartyType,
381
383
  description: event.data.object.description ?? undefined,
382
384
  active: true,
383
385
  productId: event.data.object.items.data[0].plan.id,
@@ -410,7 +412,7 @@ export class StripeWebhookService<
410
412
  typeof event.data.object.customer === 'string'
411
413
  ? event.data.object.customer
412
414
  : event.data.object.customer.id,
413
- partyType: PartyEnum.USER as PartyEnum[keyof PartyEnum],
415
+ partyType: this.defaultPartyType,
414
416
  description: event.data.object.description ?? undefined,
415
417
  active: true,
416
418
  externalId: event.data.object.id,
@@ -10,6 +10,7 @@ import Stripe__default from 'stripe';
10
10
  import { StripeBillingPortalEntities, StripeBillingPortalDtos, StripeBillingPortalMappers, StripeCreateBillingPortalDto, StripeUpdateBillingPortalDto, StripeCheckoutSessionEntities, StripeCheckoutSessionDtos, StripeCheckoutSessionMappers, StripeCreateCheckoutSessionDto, StripePaymentLinkEntities, StripePaymentLinkDtos, StripeCreatePaymentLinkDto, StripeUpdatePaymentLinkDto, StripePaymentLinkDto, StripePaymentLinkMappers, StripePlanEntities, StripePlanDtos, StripeCreatePlanDto, StripeUpdatePlanDto, StripePlanDto, StripePlanMappers, StripeSubscriptionEntities, StripeSubscriptionDtos, StripeCreateSubscriptionDto, StripeUpdateSubscriptionDto, StripeSubscriptionDto, StripeSubscriptionMappers } from '../domain/types/index.mjs';
11
11
  import { PaymentMethodEnum, CurrencyEnum, PlanCadenceEnum, BillingProviderEnum } from '../domain/enum/index.mjs';
12
12
  export * from '@forklaunch/interfaces-billing/types';
13
+ import '@forklaunch/core/persistence';
13
14
 
14
15
  declare class StripeBillingPortalService<SchemaValidator extends AnySchemaValidator, Entities extends StripeBillingPortalEntities, Dto extends StripeBillingPortalDtos = StripeBillingPortalDtos> implements BillingPortalService<{
15
16
  CreateBillingPortalDto: Dto['CreateBillingPortalMapper'];
@@ -158,6 +159,7 @@ declare class StripeSubscriptionService<SchemaValidator extends AnySchemaValidat
158
159
  }
159
160
 
160
161
  declare class StripeWebhookService<SchemaValidator extends AnySchemaValidator, StatusEnum, PartyEnum, BillingPortalEntities extends StripeBillingPortalEntities = StripeBillingPortalEntities, CheckoutSessionEntities extends StripeCheckoutSessionEntities<StatusEnum> = StripeCheckoutSessionEntities<StatusEnum>, PaymentLinkEntities extends StripePaymentLinkEntities<StatusEnum> = StripePaymentLinkEntities<StatusEnum>, PlanEntities extends StripePlanEntities = StripePlanEntities, SubscriptionEntities extends StripeSubscriptionEntities<PartyEnum> = StripeSubscriptionEntities<PartyEnum>> {
162
+ protected readonly defaultPartyType: PartyEnum[keyof PartyEnum];
161
163
  protected readonly stripeClient: Stripe__default;
162
164
  protected readonly em: EntityManager;
163
165
  protected readonly schemaValidator: SchemaValidator;
@@ -167,7 +169,7 @@ declare class StripeWebhookService<SchemaValidator extends AnySchemaValidator, S
167
169
  protected readonly paymentLinkService: StripePaymentLinkService<SchemaValidator, StatusEnum, PaymentLinkEntities>;
168
170
  protected readonly planService: StripePlanService<SchemaValidator, PlanEntities>;
169
171
  protected readonly subscriptionService: StripeSubscriptionService<SchemaValidator, PartyEnum, SubscriptionEntities>;
170
- constructor(stripeClient: Stripe__default, em: EntityManager, schemaValidator: SchemaValidator, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, billingPortalService: StripeBillingPortalService<SchemaValidator, BillingPortalEntities>, checkoutSessionService: StripeCheckoutSessionService<SchemaValidator, StatusEnum, CheckoutSessionEntities>, paymentLinkService: StripePaymentLinkService<SchemaValidator, StatusEnum, PaymentLinkEntities>, planService: StripePlanService<SchemaValidator, PlanEntities>, subscriptionService: StripeSubscriptionService<SchemaValidator, PartyEnum, SubscriptionEntities>);
172
+ constructor(stripeClient: Stripe__default, em: EntityManager, schemaValidator: SchemaValidator, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, billingPortalService: StripeBillingPortalService<SchemaValidator, BillingPortalEntities>, checkoutSessionService: StripeCheckoutSessionService<SchemaValidator, StatusEnum, CheckoutSessionEntities>, paymentLinkService: StripePaymentLinkService<SchemaValidator, StatusEnum, PaymentLinkEntities>, planService: StripePlanService<SchemaValidator, PlanEntities>, subscriptionService: StripeSubscriptionService<SchemaValidator, PartyEnum, SubscriptionEntities>, defaultPartyType: PartyEnum[keyof PartyEnum]);
171
173
  /**
172
174
  * Extract features from Stripe product metadata.
173
175
  * Features can be stored as:
@@ -10,6 +10,7 @@ import Stripe__default from 'stripe';
10
10
  import { StripeBillingPortalEntities, StripeBillingPortalDtos, StripeBillingPortalMappers, StripeCreateBillingPortalDto, StripeUpdateBillingPortalDto, StripeCheckoutSessionEntities, StripeCheckoutSessionDtos, StripeCheckoutSessionMappers, StripeCreateCheckoutSessionDto, StripePaymentLinkEntities, StripePaymentLinkDtos, StripeCreatePaymentLinkDto, StripeUpdatePaymentLinkDto, StripePaymentLinkDto, StripePaymentLinkMappers, StripePlanEntities, StripePlanDtos, StripeCreatePlanDto, StripeUpdatePlanDto, StripePlanDto, StripePlanMappers, StripeSubscriptionEntities, StripeSubscriptionDtos, StripeCreateSubscriptionDto, StripeUpdateSubscriptionDto, StripeSubscriptionDto, StripeSubscriptionMappers } from '../domain/types/index.js';
11
11
  import { PaymentMethodEnum, CurrencyEnum, PlanCadenceEnum, BillingProviderEnum } from '../domain/enum/index.js';
12
12
  export * from '@forklaunch/interfaces-billing/types';
13
+ import '@forklaunch/core/persistence';
13
14
 
14
15
  declare class StripeBillingPortalService<SchemaValidator extends AnySchemaValidator, Entities extends StripeBillingPortalEntities, Dto extends StripeBillingPortalDtos = StripeBillingPortalDtos> implements BillingPortalService<{
15
16
  CreateBillingPortalDto: Dto['CreateBillingPortalMapper'];
@@ -158,6 +159,7 @@ declare class StripeSubscriptionService<SchemaValidator extends AnySchemaValidat
158
159
  }
159
160
 
160
161
  declare class StripeWebhookService<SchemaValidator extends AnySchemaValidator, StatusEnum, PartyEnum, BillingPortalEntities extends StripeBillingPortalEntities = StripeBillingPortalEntities, CheckoutSessionEntities extends StripeCheckoutSessionEntities<StatusEnum> = StripeCheckoutSessionEntities<StatusEnum>, PaymentLinkEntities extends StripePaymentLinkEntities<StatusEnum> = StripePaymentLinkEntities<StatusEnum>, PlanEntities extends StripePlanEntities = StripePlanEntities, SubscriptionEntities extends StripeSubscriptionEntities<PartyEnum> = StripeSubscriptionEntities<PartyEnum>> {
162
+ protected readonly defaultPartyType: PartyEnum[keyof PartyEnum];
161
163
  protected readonly stripeClient: Stripe__default;
162
164
  protected readonly em: EntityManager;
163
165
  protected readonly schemaValidator: SchemaValidator;
@@ -167,7 +169,7 @@ declare class StripeWebhookService<SchemaValidator extends AnySchemaValidator, S
167
169
  protected readonly paymentLinkService: StripePaymentLinkService<SchemaValidator, StatusEnum, PaymentLinkEntities>;
168
170
  protected readonly planService: StripePlanService<SchemaValidator, PlanEntities>;
169
171
  protected readonly subscriptionService: StripeSubscriptionService<SchemaValidator, PartyEnum, SubscriptionEntities>;
170
- constructor(stripeClient: Stripe__default, em: EntityManager, schemaValidator: SchemaValidator, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, billingPortalService: StripeBillingPortalService<SchemaValidator, BillingPortalEntities>, checkoutSessionService: StripeCheckoutSessionService<SchemaValidator, StatusEnum, CheckoutSessionEntities>, paymentLinkService: StripePaymentLinkService<SchemaValidator, StatusEnum, PaymentLinkEntities>, planService: StripePlanService<SchemaValidator, PlanEntities>, subscriptionService: StripeSubscriptionService<SchemaValidator, PartyEnum, SubscriptionEntities>);
172
+ constructor(stripeClient: Stripe__default, em: EntityManager, schemaValidator: SchemaValidator, openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>, billingPortalService: StripeBillingPortalService<SchemaValidator, BillingPortalEntities>, checkoutSessionService: StripeCheckoutSessionService<SchemaValidator, StatusEnum, CheckoutSessionEntities>, paymentLinkService: StripePaymentLinkService<SchemaValidator, StatusEnum, PaymentLinkEntities>, planService: StripePlanService<SchemaValidator, PlanEntities>, subscriptionService: StripeSubscriptionService<SchemaValidator, PartyEnum, SubscriptionEntities>, defaultPartyType: PartyEnum[keyof PartyEnum]);
171
173
  /**
172
174
  * Extract features from Stripe product metadata.
173
175
  * Features can be stored as: