@forklaunch/implementation-billing-stripe 0.3.4 → 0.4.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.
- package/lib/eject/services/webhook.service.ts +21 -0
- package/lib/services/index.js +16 -0
- package/lib/services/index.mjs +16 -0
- package/package.json +11 -11
|
@@ -105,6 +105,19 @@ export class StripeWebhookService<
|
|
|
105
105
|
if (this.openTelemetryCollector) {
|
|
106
106
|
this.openTelemetryCollector.info('Handling webhook event', event);
|
|
107
107
|
}
|
|
108
|
+
|
|
109
|
+
if (
|
|
110
|
+
await this.em.findOne('StripeWebhookEvent', {
|
|
111
|
+
idempotencyKey: event.request?.idempotency_key
|
|
112
|
+
})
|
|
113
|
+
) {
|
|
114
|
+
this.openTelemetryCollector.info(
|
|
115
|
+
'Webhook event already processed',
|
|
116
|
+
event
|
|
117
|
+
);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
|
|
108
121
|
const eventType = event.type;
|
|
109
122
|
|
|
110
123
|
switch (eventType) {
|
|
@@ -296,5 +309,13 @@ export class StripeWebhookService<
|
|
|
296
309
|
);
|
|
297
310
|
break;
|
|
298
311
|
}
|
|
312
|
+
|
|
313
|
+
await this.em.insert('StripeWebhookEvent', {
|
|
314
|
+
stripeId: event.id,
|
|
315
|
+
idempotencyKey: event.request?.idempotency_key,
|
|
316
|
+
eventType: event.type,
|
|
317
|
+
eventData: event.data
|
|
318
|
+
});
|
|
319
|
+
await this.em.flush();
|
|
299
320
|
}
|
|
300
321
|
}
|
package/lib/services/index.js
CHANGED
|
@@ -588,6 +588,15 @@ var StripeWebhookService = class {
|
|
|
588
588
|
if (this.openTelemetryCollector) {
|
|
589
589
|
this.openTelemetryCollector.info("Handling webhook event", event);
|
|
590
590
|
}
|
|
591
|
+
if (await this.em.findOne("StripeWebhookEvent", {
|
|
592
|
+
idempotencyKey: event.request?.idempotency_key
|
|
593
|
+
})) {
|
|
594
|
+
this.openTelemetryCollector.info(
|
|
595
|
+
"Webhook event already processed",
|
|
596
|
+
event
|
|
597
|
+
);
|
|
598
|
+
return;
|
|
599
|
+
}
|
|
591
600
|
const eventType = event.type;
|
|
592
601
|
switch (eventType) {
|
|
593
602
|
case "billing_portal.session.created": {
|
|
@@ -737,6 +746,13 @@ var StripeWebhookService = class {
|
|
|
737
746
|
);
|
|
738
747
|
break;
|
|
739
748
|
}
|
|
749
|
+
await this.em.insert("StripeWebhookEvent", {
|
|
750
|
+
stripeId: event.id,
|
|
751
|
+
idempotencyKey: event.request?.idempotency_key,
|
|
752
|
+
eventType: event.type,
|
|
753
|
+
eventData: event.data
|
|
754
|
+
});
|
|
755
|
+
await this.em.flush();
|
|
740
756
|
}
|
|
741
757
|
};
|
|
742
758
|
// Annotate the CommonJS export names for ESM import in node:
|
package/lib/services/index.mjs
CHANGED
|
@@ -557,6 +557,15 @@ var StripeWebhookService = class {
|
|
|
557
557
|
if (this.openTelemetryCollector) {
|
|
558
558
|
this.openTelemetryCollector.info("Handling webhook event", event);
|
|
559
559
|
}
|
|
560
|
+
if (await this.em.findOne("StripeWebhookEvent", {
|
|
561
|
+
idempotencyKey: event.request?.idempotency_key
|
|
562
|
+
})) {
|
|
563
|
+
this.openTelemetryCollector.info(
|
|
564
|
+
"Webhook event already processed",
|
|
565
|
+
event
|
|
566
|
+
);
|
|
567
|
+
return;
|
|
568
|
+
}
|
|
560
569
|
const eventType = event.type;
|
|
561
570
|
switch (eventType) {
|
|
562
571
|
case "billing_portal.session.created": {
|
|
@@ -706,6 +715,13 @@ var StripeWebhookService = class {
|
|
|
706
715
|
);
|
|
707
716
|
break;
|
|
708
717
|
}
|
|
718
|
+
await this.em.insert("StripeWebhookEvent", {
|
|
719
|
+
stripeId: event.id,
|
|
720
|
+
idempotencyKey: event.request?.idempotency_key,
|
|
721
|
+
eventType: event.type,
|
|
722
|
+
eventData: event.data
|
|
723
|
+
});
|
|
724
|
+
await this.em.flush();
|
|
709
725
|
}
|
|
710
726
|
};
|
|
711
727
|
export {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forklaunch/implementation-billing-stripe",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Stripe implementation for forklaunch billing",
|
|
5
5
|
"homepage": "https://github.com/forklaunch/forklaunch-js#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -42,23 +42,23 @@
|
|
|
42
42
|
"lib/**"
|
|
43
43
|
],
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@forklaunch/common": "^0.6.
|
|
46
|
-
"@forklaunch/core": "^0.
|
|
47
|
-
"@forklaunch/internal": "^0.3.
|
|
48
|
-
"@forklaunch/validator": "^0.10.
|
|
49
|
-
"@mikro-orm/core": "^6.5.
|
|
45
|
+
"@forklaunch/common": "^0.6.12",
|
|
46
|
+
"@forklaunch/core": "^0.15.1",
|
|
47
|
+
"@forklaunch/internal": "^0.3.12",
|
|
48
|
+
"@forklaunch/validator": "^0.10.12",
|
|
49
|
+
"@mikro-orm/core": "^6.5.5",
|
|
50
50
|
"@sinclair/typebox": "^0.34.41",
|
|
51
51
|
"ajv": "^8.17.1",
|
|
52
52
|
"stripe": "^18.5.0",
|
|
53
|
-
"zod": "^4.1.
|
|
54
|
-
"@forklaunch/implementation-billing-base": "0.
|
|
55
|
-
"@forklaunch/interfaces-billing": "0.
|
|
53
|
+
"zod": "^4.1.11",
|
|
54
|
+
"@forklaunch/implementation-billing-base": "0.7.0",
|
|
55
|
+
"@forklaunch/interfaces-billing": "0.7.0"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
58
|
+
"@typescript/native-preview": "7.0.0-dev.20250922.1",
|
|
59
59
|
"depcheck": "^1.4.7",
|
|
60
60
|
"prettier": "^3.6.2",
|
|
61
|
-
"typedoc": "^0.28.
|
|
61
|
+
"typedoc": "^0.28.13"
|
|
62
62
|
},
|
|
63
63
|
"scripts": {
|
|
64
64
|
"build": "tsc --noEmit && tsup domain/schemas/index.ts services/index.ts domain/enum/index.ts domain/types/index.ts --format cjs,esm --no-splitting --dts --tsconfig tsconfig.json --out-dir lib --clean && if [ -f eject-package.bash ]; then pnpm package:eject; fi",
|