@forklaunch/implementation-billing-stripe 1.1.31 → 1.1.33
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.
|
@@ -36,10 +36,23 @@ import { StripeSubscriptionService } from './subscription.service';
|
|
|
36
36
|
* `@forklaunch/implementation-billing-stripe/persistence`.
|
|
37
37
|
*/
|
|
38
38
|
type StripeWebhookEventEntity = InferEntity<typeof StripeWebhookEvent>;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Structural constraint for injectable webhook event entities — the fields
|
|
42
|
+
* the idempotency flow reads and writes. Applications inject their own
|
|
43
|
+
* (typically richer, sqlBaseProperties-based) entity; the generic infers
|
|
44
|
+
* from the injected schema exactly like the mapper entity generics do.
|
|
45
|
+
*/
|
|
46
|
+
export type StripeWebhookEventShape = {
|
|
47
|
+
stripeId: string;
|
|
48
|
+
idempotencyKey?: string | null;
|
|
49
|
+
eventType: string;
|
|
50
|
+
eventData: unknown;
|
|
51
|
+
};
|
|
39
52
|
// mikro-orm 7 narrowed EntityName's type to exclude strings, but the runtime
|
|
40
53
|
// resolves registered entity names as it always has — and name resolution is
|
|
41
|
-
// exactly what we need
|
|
42
|
-
const
|
|
54
|
+
// exactly what we need by default (see above).
|
|
55
|
+
const DEFAULT_STRIPE_WEBHOOK_EVENT_ENTITY =
|
|
43
56
|
'StripeWebhookEvent' as unknown as EntityName<StripeWebhookEventEntity>;
|
|
44
57
|
|
|
45
58
|
export class StripeWebhookService<
|
|
@@ -54,9 +67,11 @@ export class StripeWebhookService<
|
|
|
54
67
|
StripePaymentLinkEntities<StatusEnum> = StripePaymentLinkEntities<StatusEnum>,
|
|
55
68
|
PlanEntities extends StripePlanEntities = StripePlanEntities,
|
|
56
69
|
SubscriptionEntities extends
|
|
57
|
-
StripeSubscriptionEntities<PartyEnum> = StripeSubscriptionEntities<PartyEnum
|
|
70
|
+
StripeSubscriptionEntities<PartyEnum> = StripeSubscriptionEntities<PartyEnum>,
|
|
71
|
+
WebhookEventEntity extends StripeWebhookEventShape = StripeWebhookEventEntity
|
|
58
72
|
> {
|
|
59
73
|
protected readonly partyEnum: PartyEnum;
|
|
74
|
+
protected readonly webhookEventEntity: EntityName<WebhookEventEntity>;
|
|
60
75
|
protected readonly stripeClient: Stripe;
|
|
61
76
|
protected readonly em: EntityManager;
|
|
62
77
|
protected readonly schemaValidator: SchemaValidator;
|
|
@@ -110,8 +125,16 @@ export class StripeWebhookService<
|
|
|
110
125
|
PartyEnum,
|
|
111
126
|
SubscriptionEntities
|
|
112
127
|
>,
|
|
113
|
-
partyEnum: PartyEnum
|
|
128
|
+
partyEnum: PartyEnum,
|
|
129
|
+
/**
|
|
130
|
+
* The entity used for webhook idempotency records. Defaults to
|
|
131
|
+
* resolving the application's discovered entity named
|
|
132
|
+
* 'StripeWebhookEvent'; inject your own entity (mapper-style) to use a
|
|
133
|
+
* different one.
|
|
134
|
+
*/
|
|
135
|
+
webhookEventEntity: EntityName<WebhookEventEntity> = DEFAULT_STRIPE_WEBHOOK_EVENT_ENTITY as EntityName<WebhookEventEntity>
|
|
114
136
|
) {
|
|
137
|
+
this.webhookEventEntity = webhookEventEntity;
|
|
115
138
|
this.partyEnum = partyEnum;
|
|
116
139
|
this.stripeClient = stripeClient;
|
|
117
140
|
this.em = em;
|
|
@@ -173,8 +196,10 @@ export class StripeWebhookService<
|
|
|
173
196
|
}
|
|
174
197
|
|
|
175
198
|
if (
|
|
176
|
-
|
|
177
|
-
|
|
199
|
+
// querying through the structural shape with an internal cast, the same
|
|
200
|
+
// way the mapper services do (`mapper.entity as typeof Plan`)
|
|
201
|
+
await this.em.findOne<StripeWebhookEventShape>(
|
|
202
|
+
this.webhookEventEntity as EntityName<StripeWebhookEventShape>,
|
|
178
203
|
{
|
|
179
204
|
idempotencyKey: event.request?.idempotency_key
|
|
180
205
|
}
|
|
@@ -497,7 +522,8 @@ export class StripeWebhookService<
|
|
|
497
522
|
// em.create (not native em.insert): the app's entity generates its id and
|
|
498
523
|
// timestamps via onCreate hooks, which native inserts bypass — a native
|
|
499
524
|
// insert fails NOT NULL on id for sqlBaseProperties-style entities.
|
|
500
|
-
this.em.create<
|
|
525
|
+
this.em.create<StripeWebhookEventShape>(
|
|
526
|
+
this.webhookEventEntity as EntityName<StripeWebhookEventShape>, {
|
|
501
527
|
stripeId: event.id,
|
|
502
528
|
idempotencyKey: event.request?.idempotency_key,
|
|
503
529
|
eventType: event.type,
|
package/lib/services/index.js
CHANGED
|
@@ -627,9 +627,10 @@ var BillingProviderEnum = {
|
|
|
627
627
|
};
|
|
628
628
|
|
|
629
629
|
// services/webhook.service.ts
|
|
630
|
-
var
|
|
630
|
+
var DEFAULT_STRIPE_WEBHOOK_EVENT_ENTITY = "StripeWebhookEvent";
|
|
631
631
|
var StripeWebhookService = class {
|
|
632
632
|
partyEnum;
|
|
633
|
+
webhookEventEntity;
|
|
633
634
|
stripeClient;
|
|
634
635
|
em;
|
|
635
636
|
schemaValidator;
|
|
@@ -639,7 +640,8 @@ var StripeWebhookService = class {
|
|
|
639
640
|
paymentLinkService;
|
|
640
641
|
planService;
|
|
641
642
|
subscriptionService;
|
|
642
|
-
constructor(stripeClient, em, schemaValidator, openTelemetryCollector, billingPortalService, checkoutSessionService, paymentLinkService, planService, subscriptionService, partyEnum) {
|
|
643
|
+
constructor(stripeClient, em, schemaValidator, openTelemetryCollector, billingPortalService, checkoutSessionService, paymentLinkService, planService, subscriptionService, partyEnum, webhookEventEntity = DEFAULT_STRIPE_WEBHOOK_EVENT_ENTITY) {
|
|
644
|
+
this.webhookEventEntity = webhookEventEntity;
|
|
643
645
|
this.partyEnum = partyEnum;
|
|
644
646
|
this.stripeClient = stripeClient;
|
|
645
647
|
this.em = em;
|
|
@@ -685,12 +687,16 @@ var StripeWebhookService = class {
|
|
|
685
687
|
if (this.openTelemetryCollector) {
|
|
686
688
|
this.openTelemetryCollector.info("Handling webhook event", event);
|
|
687
689
|
}
|
|
688
|
-
if (
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
690
|
+
if (
|
|
691
|
+
// querying through the structural shape with an internal cast, the same
|
|
692
|
+
// way the mapper services do (`mapper.entity as typeof Plan`)
|
|
693
|
+
await this.em.findOne(
|
|
694
|
+
this.webhookEventEntity,
|
|
695
|
+
{
|
|
696
|
+
idempotencyKey: event.request?.idempotency_key
|
|
697
|
+
}
|
|
698
|
+
)
|
|
699
|
+
) {
|
|
694
700
|
this.openTelemetryCollector.info(
|
|
695
701
|
"Webhook event already processed",
|
|
696
702
|
event
|
|
@@ -933,12 +939,15 @@ var StripeWebhookService = class {
|
|
|
933
939
|
);
|
|
934
940
|
break;
|
|
935
941
|
}
|
|
936
|
-
this.em.create(
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
+
this.em.create(
|
|
943
|
+
this.webhookEventEntity,
|
|
944
|
+
{
|
|
945
|
+
stripeId: event.id,
|
|
946
|
+
idempotencyKey: event.request?.idempotency_key,
|
|
947
|
+
eventType: event.type,
|
|
948
|
+
eventData: event.data
|
|
949
|
+
}
|
|
950
|
+
);
|
|
942
951
|
await this.em.flush();
|
|
943
952
|
}
|
|
944
953
|
};
|
package/lib/services/index.mjs
CHANGED
|
@@ -595,9 +595,10 @@ var BillingProviderEnum = {
|
|
|
595
595
|
};
|
|
596
596
|
|
|
597
597
|
// services/webhook.service.ts
|
|
598
|
-
var
|
|
598
|
+
var DEFAULT_STRIPE_WEBHOOK_EVENT_ENTITY = "StripeWebhookEvent";
|
|
599
599
|
var StripeWebhookService = class {
|
|
600
600
|
partyEnum;
|
|
601
|
+
webhookEventEntity;
|
|
601
602
|
stripeClient;
|
|
602
603
|
em;
|
|
603
604
|
schemaValidator;
|
|
@@ -607,7 +608,8 @@ var StripeWebhookService = class {
|
|
|
607
608
|
paymentLinkService;
|
|
608
609
|
planService;
|
|
609
610
|
subscriptionService;
|
|
610
|
-
constructor(stripeClient, em, schemaValidator, openTelemetryCollector, billingPortalService, checkoutSessionService, paymentLinkService, planService, subscriptionService, partyEnum) {
|
|
611
|
+
constructor(stripeClient, em, schemaValidator, openTelemetryCollector, billingPortalService, checkoutSessionService, paymentLinkService, planService, subscriptionService, partyEnum, webhookEventEntity = DEFAULT_STRIPE_WEBHOOK_EVENT_ENTITY) {
|
|
612
|
+
this.webhookEventEntity = webhookEventEntity;
|
|
611
613
|
this.partyEnum = partyEnum;
|
|
612
614
|
this.stripeClient = stripeClient;
|
|
613
615
|
this.em = em;
|
|
@@ -653,12 +655,16 @@ var StripeWebhookService = class {
|
|
|
653
655
|
if (this.openTelemetryCollector) {
|
|
654
656
|
this.openTelemetryCollector.info("Handling webhook event", event);
|
|
655
657
|
}
|
|
656
|
-
if (
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
658
|
+
if (
|
|
659
|
+
// querying through the structural shape with an internal cast, the same
|
|
660
|
+
// way the mapper services do (`mapper.entity as typeof Plan`)
|
|
661
|
+
await this.em.findOne(
|
|
662
|
+
this.webhookEventEntity,
|
|
663
|
+
{
|
|
664
|
+
idempotencyKey: event.request?.idempotency_key
|
|
665
|
+
}
|
|
666
|
+
)
|
|
667
|
+
) {
|
|
662
668
|
this.openTelemetryCollector.info(
|
|
663
669
|
"Webhook event already processed",
|
|
664
670
|
event
|
|
@@ -901,12 +907,15 @@ var StripeWebhookService = class {
|
|
|
901
907
|
);
|
|
902
908
|
break;
|
|
903
909
|
}
|
|
904
|
-
this.em.create(
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
+
this.em.create(
|
|
911
|
+
this.webhookEventEntity,
|
|
912
|
+
{
|
|
913
|
+
stripeId: event.id,
|
|
914
|
+
idempotencyKey: event.request?.idempotency_key,
|
|
915
|
+
eventType: event.type,
|
|
916
|
+
eventData: event.data
|
|
917
|
+
}
|
|
918
|
+
);
|
|
910
919
|
await this.em.flush();
|
|
911
920
|
}
|
|
912
921
|
};
|
|
@@ -1,15 +1,41 @@
|
|
|
1
1
|
import { MetricsDefinition, OpenTelemetryCollector } from '@forklaunch/core/http';
|
|
2
2
|
import { AnySchemaValidator } from '@forklaunch/validator';
|
|
3
|
-
import { EntityManager } from '@mikro-orm/core';
|
|
3
|
+
import { EntityManager, EntityName, InferEntity } from '@mikro-orm/core';
|
|
4
4
|
import Stripe from 'stripe';
|
|
5
5
|
import { StripeBillingPortalEntities, StripeCheckoutSessionEntities, StripePaymentLinkEntities, StripePlanEntities, StripeSubscriptionEntities } from '../domain/types/stripe.entity.types';
|
|
6
|
+
import { StripeWebhookEvent } from '../persistence/entities';
|
|
6
7
|
import { StripeBillingPortalService } from './billingPortal.service';
|
|
7
8
|
import { StripeCheckoutSessionService } from './checkoutSession.service';
|
|
8
9
|
import { StripePaymentLinkService } from './paymentLink.service';
|
|
9
10
|
import { StripePlanService } from './plan.service';
|
|
10
11
|
import { StripeSubscriptionService } from './subscription.service';
|
|
11
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Webhook idempotency records are looked up and written BY NAME so they
|
|
14
|
+
* resolve against the consuming application's discovered metadata. Passing
|
|
15
|
+
* this package's internal `StripeWebhookEvent` object to the EntityManager
|
|
16
|
+
* queries an entity the app's ORM never discovered, which mikro-orm 7.1.x
|
|
17
|
+
* rejects deep in EntityLoader (`meta.relations` is undefined for
|
|
18
|
+
* undiscovered entities). Applications must discover an entity named
|
|
19
|
+
* `StripeWebhookEvent` — either their own definition (the blueprint app
|
|
20
|
+
* ships one) or this package's, importable from
|
|
21
|
+
* `@forklaunch/implementation-billing-stripe/persistence`.
|
|
22
|
+
*/
|
|
23
|
+
type StripeWebhookEventEntity = InferEntity<typeof StripeWebhookEvent>;
|
|
24
|
+
/**
|
|
25
|
+
* Structural constraint for injectable webhook event entities — the fields
|
|
26
|
+
* the idempotency flow reads and writes. Applications inject their own
|
|
27
|
+
* (typically richer, sqlBaseProperties-based) entity; the generic infers
|
|
28
|
+
* from the injected schema exactly like the mapper entity generics do.
|
|
29
|
+
*/
|
|
30
|
+
export type StripeWebhookEventShape = {
|
|
31
|
+
stripeId: string;
|
|
32
|
+
idempotencyKey?: string | null;
|
|
33
|
+
eventType: string;
|
|
34
|
+
eventData: unknown;
|
|
35
|
+
};
|
|
36
|
+
export 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>, WebhookEventEntity extends StripeWebhookEventShape = StripeWebhookEventEntity> {
|
|
12
37
|
protected readonly partyEnum: PartyEnum;
|
|
38
|
+
protected readonly webhookEventEntity: EntityName<WebhookEventEntity>;
|
|
13
39
|
protected readonly stripeClient: Stripe;
|
|
14
40
|
protected readonly em: EntityManager;
|
|
15
41
|
protected readonly schemaValidator: SchemaValidator;
|
|
@@ -19,7 +45,14 @@ export declare class StripeWebhookService<SchemaValidator extends AnySchemaValid
|
|
|
19
45
|
protected readonly paymentLinkService: StripePaymentLinkService<SchemaValidator, StatusEnum, PaymentLinkEntities>;
|
|
20
46
|
protected readonly planService: StripePlanService<SchemaValidator, PlanEntities>;
|
|
21
47
|
protected readonly subscriptionService: StripeSubscriptionService<SchemaValidator, PartyEnum, SubscriptionEntities>;
|
|
22
|
-
constructor(stripeClient: Stripe, 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>, partyEnum: PartyEnum
|
|
48
|
+
constructor(stripeClient: Stripe, 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>, partyEnum: PartyEnum,
|
|
49
|
+
/**
|
|
50
|
+
* The entity used for webhook idempotency records. Defaults to
|
|
51
|
+
* resolving the application's discovered entity named
|
|
52
|
+
* 'StripeWebhookEvent'; inject your own entity (mapper-style) to use a
|
|
53
|
+
* different one.
|
|
54
|
+
*/
|
|
55
|
+
webhookEventEntity?: EntityName<WebhookEventEntity>);
|
|
23
56
|
/**
|
|
24
57
|
* Resolve the party type for a subscription event.
|
|
25
58
|
* Stripe subscriptions are customer-scoped — customers map to users
|
|
@@ -36,4 +69,5 @@ export declare class StripeWebhookService<SchemaValidator extends AnySchemaValid
|
|
|
36
69
|
private extractFeaturesFromProduct;
|
|
37
70
|
handleWebhookEvent(event: Stripe.Event): Promise<void>;
|
|
38
71
|
}
|
|
72
|
+
export {};
|
|
39
73
|
//# sourceMappingURL=webhook.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhook.service.d.ts","sourceRoot":"","sources":["../../services/webhook.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"webhook.service.d.ts","sourceRoot":"","sources":["../../services/webhook.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED