@darraghor/nest-backend-libs 5.7.5 → 6.0.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 (134) hide show
  1. package/README.md +87 -36
  2. package/dist/exports/authorization.d.ts +14 -0
  3. package/dist/exports/authorization.js +12 -0
  4. package/dist/exports/authorization.js.map +1 -0
  5. package/dist/exports/core.d.ts +11 -0
  6. package/dist/exports/core.js +10 -0
  7. package/dist/exports/core.js.map +1 -0
  8. package/dist/exports/database.d.ts +5 -0
  9. package/dist/exports/database.js +6 -0
  10. package/dist/exports/database.js.map +1 -0
  11. package/dist/exports/email.d.ts +4 -0
  12. package/dist/exports/email.js +4 -0
  13. package/dist/exports/email.js.map +1 -0
  14. package/dist/exports/invitations.d.ts +6 -0
  15. package/dist/exports/invitations.js +6 -0
  16. package/dist/exports/invitations.js.map +1 -0
  17. package/dist/exports/organisations.d.ts +11 -0
  18. package/dist/exports/organisations.js +12 -0
  19. package/dist/exports/organisations.js.map +1 -0
  20. package/dist/exports/stripe-legacy.d.ts +6 -0
  21. package/dist/exports/stripe-legacy.js +7 -0
  22. package/dist/exports/stripe-legacy.js.map +1 -0
  23. package/dist/exports/stripe.d.ts +11 -0
  24. package/dist/exports/stripe.js +9 -0
  25. package/dist/exports/stripe.js.map +1 -0
  26. package/dist/exports/twitter.d.ts +5 -0
  27. package/dist/exports/twitter.js +5 -0
  28. package/dist/exports/twitter.js.map +1 -0
  29. package/dist/exports/users.d.ts +10 -0
  30. package/dist/exports/users.js +11 -0
  31. package/dist/exports/users.js.map +1 -0
  32. package/dist/index.d.ts +11 -0
  33. package/dist/index.js +11 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/organisation-subscriptions/entities/organisation-subscription.entity.js +2 -1
  36. package/dist/organisation-subscriptions/entities/organisation-subscription.entity.js.map +1 -1
  37. package/dist/stripe-client/StripeClientConfigurationService.js +1 -0
  38. package/dist/stripe-client/StripeClientConfigurationService.js.map +1 -1
  39. package/dist/stripe-client/controllers/stripe-checkout-controller.d.ts +1 -0
  40. package/dist/stripe-client/controllers/stripe-checkout-controller.js +1 -0
  41. package/dist/stripe-client/controllers/stripe-checkout-controller.js.map +1 -1
  42. package/dist/stripe-client/controllers/stripe-events-controller.js +1 -0
  43. package/dist/stripe-client/controllers/stripe-events-controller.js.map +1 -1
  44. package/dist/stripe-client/controllers/stripe-unauthenticated-checkout-controller.js +1 -0
  45. package/dist/stripe-client/controllers/stripe-unauthenticated-checkout-controller.js.map +1 -1
  46. package/dist/stripe-client/services/auth-stripe-checkout.service.js +1 -0
  47. package/dist/stripe-client/services/auth-stripe-checkout.service.js.map +1 -1
  48. package/dist/stripe-client/services/queued-payment-event.handler.d.ts +1 -0
  49. package/dist/stripe-client/services/queued-payment-event.handler.js +2 -0
  50. package/dist/stripe-client/services/queued-payment-event.handler.js.map +1 -1
  51. package/dist/stripe-client/services/stripe-checkout.service.d.ts +1 -0
  52. package/dist/stripe-client/services/stripe-checkout.service.js +2 -0
  53. package/dist/stripe-client/services/stripe-checkout.service.js.map +1 -1
  54. package/dist/stripe-client/stripe-account.module.d.ts +1 -0
  55. package/dist/stripe-client/stripe-account.module.js +2 -0
  56. package/dist/stripe-client/stripe-account.module.js.map +1 -1
  57. package/dist/stripe-client/stripe-account.options.d.ts +2 -0
  58. package/dist/stripe-client/stripe-account.options.js.map +1 -1
  59. package/dist/stripe-payments/controllers/secure-stripe-checkout.controller.d.ts +10 -0
  60. package/dist/stripe-payments/controllers/secure-stripe-checkout.controller.js +65 -0
  61. package/dist/stripe-payments/controllers/secure-stripe-checkout.controller.js.map +1 -0
  62. package/dist/stripe-payments/controllers/secure-stripe-events.controller.d.ts +9 -0
  63. package/dist/stripe-payments/controllers/secure-stripe-events.controller.js +65 -0
  64. package/dist/stripe-payments/controllers/secure-stripe-events.controller.js.map +1 -0
  65. package/dist/stripe-payments/controllers/secure-stripe-webhook.controller.d.ts +14 -0
  66. package/dist/stripe-payments/controllers/secure-stripe-webhook.controller.js +112 -0
  67. package/dist/stripe-payments/controllers/secure-stripe-webhook.controller.js.map +1 -0
  68. package/dist/stripe-payments/entities/stripe-checkout-attempt.entity.d.ts +15 -0
  69. package/dist/stripe-payments/entities/stripe-checkout-attempt.entity.js +88 -0
  70. package/dist/stripe-payments/entities/stripe-checkout-attempt.entity.js.map +1 -0
  71. package/dist/stripe-payments/entities/stripe-payment-event.entity.d.ts +16 -0
  72. package/dist/stripe-payments/entities/stripe-payment-event.entity.js +101 -0
  73. package/dist/stripe-payments/entities/stripe-payment-event.entity.js.map +1 -0
  74. package/dist/stripe-payments/entities/stripe-payment-state.entity.d.ts +9 -0
  75. package/dist/stripe-payments/entities/stripe-payment-state.entity.js +53 -0
  76. package/dist/stripe-payments/entities/stripe-payment-state.entity.js.map +1 -0
  77. package/dist/stripe-payments/models/secure-checkout.dto.d.ts +14 -0
  78. package/dist/stripe-payments/models/secure-checkout.dto.js +105 -0
  79. package/dist/stripe-payments/models/secure-checkout.dto.js.map +1 -0
  80. package/dist/stripe-payments/models/secure-payment-response.dto.d.ts +7 -0
  81. package/dist/stripe-payments/models/secure-payment-response.dto.js +30 -0
  82. package/dist/stripe-payments/models/secure-payment-response.dto.js.map +1 -0
  83. package/dist/stripe-payments/services/default-stripe-payments-entitlement-store.d.ts +12 -0
  84. package/dist/stripe-payments/services/default-stripe-payments-entitlement-store.js +49 -0
  85. package/dist/stripe-payments/services/default-stripe-payments-entitlement-store.js.map +1 -0
  86. package/dist/stripe-payments/services/secure-stripe-checkout.service.d.ts +24 -0
  87. package/dist/stripe-payments/services/secure-stripe-checkout.service.js +213 -0
  88. package/dist/stripe-payments/services/secure-stripe-checkout.service.js.map +1 -0
  89. package/dist/stripe-payments/services/secure-stripe-client.provider.d.ts +2 -0
  90. package/dist/stripe-payments/services/secure-stripe-client.provider.js +15 -0
  91. package/dist/stripe-payments/services/secure-stripe-client.provider.js.map +1 -0
  92. package/dist/stripe-payments/services/secure-stripe-product.service.d.ts +9 -0
  93. package/dist/stripe-payments/services/secure-stripe-product.service.js +54 -0
  94. package/dist/stripe-payments/services/secure-stripe-product.service.js.map +1 -0
  95. package/dist/stripe-payments/services/secure-stripe-webhook.service.d.ts +14 -0
  96. package/dist/stripe-payments/services/secure-stripe-webhook.service.js +58 -0
  97. package/dist/stripe-payments/services/secure-stripe-webhook.service.js.map +1 -0
  98. package/dist/stripe-payments/services/secure-subscription.service.d.ts +18 -0
  99. package/dist/stripe-payments/services/secure-subscription.service.js +217 -0
  100. package/dist/stripe-payments/services/secure-subscription.service.js.map +1 -0
  101. package/dist/stripe-payments/services/stripe-payment-event.processor.d.ts +15 -0
  102. package/dist/stripe-payments/services/stripe-payment-event.processor.js +78 -0
  103. package/dist/stripe-payments/services/stripe-payment-event.processor.js.map +1 -0
  104. package/dist/stripe-payments/services/stripe-payment-event.service.d.ts +20 -0
  105. package/dist/stripe-payments/services/stripe-payment-event.service.js +178 -0
  106. package/dist/stripe-payments/services/stripe-payment-event.service.js.map +1 -0
  107. package/dist/stripe-payments/services/stripe-payment-fulfillment.service.d.ts +31 -0
  108. package/dist/stripe-payments/services/stripe-payment-fulfillment.service.js +331 -0
  109. package/dist/stripe-payments/services/stripe-payment-fulfillment.service.js.map +1 -0
  110. package/dist/stripe-payments/services/stripe-payments-operations.service.d.ts +25 -0
  111. package/dist/stripe-payments/services/stripe-payments-operations.service.js +59 -0
  112. package/dist/stripe-payments/services/stripe-payments-operations.service.js.map +1 -0
  113. package/dist/stripe-payments/services/stripe-payments-telemetry.service.d.ts +7 -0
  114. package/dist/stripe-payments/services/stripe-payments-telemetry.service.js +40 -0
  115. package/dist/stripe-payments/services/stripe-payments-telemetry.service.js.map +1 -0
  116. package/dist/stripe-payments/stripe-payment.config.d.ts +19 -0
  117. package/dist/stripe-payments/stripe-payment.config.js +98 -0
  118. package/dist/stripe-payments/stripe-payment.config.js.map +1 -0
  119. package/dist/stripe-payments/stripe-payment.config.test.d.ts +1 -0
  120. package/dist/stripe-payments/stripe-payment.config.test.js +59 -0
  121. package/dist/stripe-payments/stripe-payment.config.test.js.map +1 -0
  122. package/dist/stripe-payments/stripe-payments.extensions.d.ts +69 -0
  123. package/dist/stripe-payments/stripe-payments.extensions.js +30 -0
  124. package/dist/stripe-payments/stripe-payments.extensions.js.map +1 -0
  125. package/dist/stripe-payments/stripe-payments.module.d.ts +12 -0
  126. package/dist/stripe-payments/stripe-payments.module.js +118 -0
  127. package/dist/stripe-payments/stripe-payments.module.js.map +1 -0
  128. package/dist/stripe-payments/stripe-payments.options.d.ts +21 -0
  129. package/dist/stripe-payments/stripe-payments.options.js +2 -0
  130. package/dist/stripe-payments/stripe-payments.options.js.map +1 -0
  131. package/dist/typeorm/entities.d.ts +15 -0
  132. package/dist/typeorm/entities.js +32 -0
  133. package/dist/typeorm/entities.js.map +1 -0
  134. package/package.json +41 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secure-stripe-checkout.service.js","sourceRoot":"","sources":["../../../src/stripe-payments/services/secure-stripe-checkout.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { Provider } from "@nestjs/common";
2
+ export declare const secureStripeClientProvider: Provider;
@@ -0,0 +1,15 @@
1
+ import Stripe from "stripe";
2
+ import { SECURE_STRIPE_CONFIGURATION, } from "../stripe-payment.config.js";
3
+ export const secureStripeClientProvider = {
4
+ provide: "SecureStripeClient",
5
+ useFactory: (configuration) => new Stripe(configuration.accessToken, {
6
+ apiVersion: Stripe.API_VERSION,
7
+ appInfo: {
8
+ name: "Miller Secure Payments",
9
+ url: "https://usemiller.dev",
10
+ },
11
+ maxNetworkRetries: 2,
12
+ }),
13
+ inject: [SECURE_STRIPE_CONFIGURATION],
14
+ };
15
+ //# sourceMappingURL=secure-stripe-client.provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secure-stripe-client.provider.js","sourceRoot":"","sources":["../../../src/stripe-payments/services/secure-stripe-client.provider.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EACH,2BAA2B,GAE9B,MAAM,6BAA6B,CAAC;AAErC,MAAM,CAAC,MAAM,0BAA0B,GAAa;IAChD,OAAO,EAAE,oBAAoB;IAC7B,UAAU,EAAE,CAAC,aAAwC,EAAU,EAAE,CAC7D,IAAI,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE;QAClC,UAAU,EAAE,MAAM,CAAC,WAAW;QAC9B,OAAO,EAAE;YACL,IAAI,EAAE,wBAAwB;YAC9B,GAAG,EAAE,uBAAuB;SAC/B;QACD,iBAAiB,EAAE,CAAC;KACvB,CAAC;IACN,MAAM,EAAE,CAAC,2BAA2B,CAAC;CACxC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { SecureStripeConfiguration, SecureStripeProduct } from "../stripe-payment.config.js";
2
+ export declare class SecureStripeProductService {
3
+ private readonly configuration;
4
+ constructor(configuration: SecureStripeConfiguration);
5
+ getByKey(productKey: string): SecureStripeProduct;
6
+ getByPriceId(priceId: string): SecureStripeProduct;
7
+ getConfiguredProducts(): readonly SecureStripeProduct[];
8
+ buildRedirectUrl(path: string): string;
9
+ }
@@ -0,0 +1,54 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { BadRequestException, Inject, Injectable } from "@nestjs/common";
14
+ import { SECURE_STRIPE_CONFIGURATION, } from "../stripe-payment.config.js";
15
+ let SecureStripeProductService = class SecureStripeProductService {
16
+ configuration;
17
+ constructor(configuration) {
18
+ this.configuration = configuration;
19
+ }
20
+ getByKey(productKey) {
21
+ const product = this.configuration.products.get(productKey);
22
+ if (!product) {
23
+ throw new BadRequestException("Unknown payment product");
24
+ }
25
+ return product;
26
+ }
27
+ getByPriceId(priceId) {
28
+ const product = [...this.configuration.products.values()].find((candidate) => candidate.priceId === priceId);
29
+ if (!product) {
30
+ throw new Error("Stripe returned a price outside the configured catalog");
31
+ }
32
+ return product;
33
+ }
34
+ getConfiguredProducts() {
35
+ return [...this.configuration.products.values()];
36
+ }
37
+ buildRedirectUrl(path) {
38
+ const url = new URL(path, `${this.configuration.redirectsBaseUrl}/`);
39
+ const baseUrl = new URL(`${this.configuration.redirectsBaseUrl}/`);
40
+ if (url.origin !== baseUrl.origin ||
41
+ !path.startsWith("/") ||
42
+ path.startsWith("//")) {
43
+ throw new BadRequestException("Redirect path must remain on the configured application origin");
44
+ }
45
+ return url.toString();
46
+ }
47
+ };
48
+ SecureStripeProductService = __decorate([
49
+ Injectable(),
50
+ __param(0, Inject(SECURE_STRIPE_CONFIGURATION)),
51
+ __metadata("design:paramtypes", [Object])
52
+ ], SecureStripeProductService);
53
+ export { SecureStripeProductService };
54
+ //# sourceMappingURL=secure-stripe-product.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secure-stripe-product.service.js","sourceRoot":"","sources":["../../../src/stripe-payments/services/secure-stripe-product.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAC,mBAAmB,EAAE,MAAM,EAAE,UAAU,EAAC,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACH,2BAA2B,GAG9B,MAAM,6BAA6B,CAAC;AAG9B,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IAGd;IAFrB,YAEqB,aAAwC;QAAxC,kBAAa,GAAb,aAAa,CAA2B;IAC1D,CAAC;IAEJ,QAAQ,CAAC,UAAkB;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,mBAAmB,CAAC,yBAAyB,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,YAAY,CAAC,OAAe;QACxB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAC1D,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,KAAK,OAAO,CAC/C,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACX,wDAAwD,CAC3D,CAAC;QACN,CAAC;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,qBAAqB;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,gBAAgB,CAAC,IAAY;QACzB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,GAAG,CAAC,CAAC;QACnE,IACI,GAAG,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;YAC7B,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EACvB,CAAC;YACC,MAAM,IAAI,mBAAmB,CACzB,gEAAgE,CACnE,CAAC;QACN,CAAC;QACD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;CACJ,CAAA;AA5CY,0BAA0B;IADtC,UAAU,EAAE;IAGJ,WAAA,MAAM,CAAC,2BAA2B,CAAC,CAAA;;GAF/B,0BAA0B,CA4CtC"}
@@ -0,0 +1,14 @@
1
+ import Stripe from "stripe";
2
+ import { SecureStripeConfiguration } from "../stripe-payment.config.js";
3
+ import { StripePaymentEventService } from "./stripe-payment-event.service.js";
4
+ export interface RawStripeWebhookRequest {
5
+ headers: Record<string, string | string[] | undefined>;
6
+ rawBody?: Buffer;
7
+ }
8
+ export declare class SecureStripeWebhookService {
9
+ private readonly stripe;
10
+ private readonly configuration;
11
+ private readonly paymentEventService;
12
+ constructor(stripe: Stripe, configuration: SecureStripeConfiguration, paymentEventService: StripePaymentEventService);
13
+ handleWebhook(request: RawStripeWebhookRequest): Promise<void>;
14
+ }
@@ -0,0 +1,58 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ import { BadRequestException, Inject, Injectable, ServiceUnavailableException, } from "@nestjs/common";
14
+ import Stripe from "stripe";
15
+ import { SECURE_STRIPE_CONFIGURATION, } from "../stripe-payment.config.js";
16
+ import { StripePaymentEventService } from "./stripe-payment-event.service.js";
17
+ let SecureStripeWebhookService = class SecureStripeWebhookService {
18
+ stripe;
19
+ configuration;
20
+ paymentEventService;
21
+ constructor(stripe, configuration, paymentEventService) {
22
+ this.stripe = stripe;
23
+ this.configuration = configuration;
24
+ this.paymentEventService = paymentEventService;
25
+ }
26
+ async handleWebhook(request) {
27
+ if (!request.rawBody) {
28
+ throw new BadRequestException("Webhook body was not received as raw bytes");
29
+ }
30
+ const signatureHeader = request.headers["stripe-signature"];
31
+ if (typeof signatureHeader !== "string") {
32
+ throw new BadRequestException("Missing Stripe webhook signature");
33
+ }
34
+ let event;
35
+ try {
36
+ event = this.stripe.webhooks.constructEvent(request.rawBody, signatureHeader, this.configuration.webhookVerificationKey);
37
+ }
38
+ catch {
39
+ throw new BadRequestException("Invalid Stripe webhook signature");
40
+ }
41
+ try {
42
+ await this.paymentEventService.receive(event);
43
+ }
44
+ catch {
45
+ // A non-2xx response tells Stripe to retry delivery. The event row is
46
+ // deliberately durable so a later delivery can enqueue it again.
47
+ throw new ServiceUnavailableException("Payment event could not be queued");
48
+ }
49
+ }
50
+ };
51
+ SecureStripeWebhookService = __decorate([
52
+ Injectable(),
53
+ __param(0, Inject("SecureStripeClient")),
54
+ __param(1, Inject(SECURE_STRIPE_CONFIGURATION)),
55
+ __metadata("design:paramtypes", [Stripe, Object, StripePaymentEventService])
56
+ ], SecureStripeWebhookService);
57
+ export { SecureStripeWebhookService };
58
+ //# sourceMappingURL=secure-stripe-webhook.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secure-stripe-webhook.service.js","sourceRoot":"","sources":["../../../src/stripe-payments/services/secure-stripe-webhook.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EACH,mBAAmB,EACnB,MAAM,EACN,UAAU,EACV,2BAA2B,GAC9B,MAAM,gBAAgB,CAAC;AACxB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EACH,2BAA2B,GAE9B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAC,yBAAyB,EAAC,MAAM,mCAAmC,CAAC;AAQrE,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IAGd;IAEA;IACA;IALrB,YAEqB,MAAc,EAEd,aAAwC,EACxC,mBAA8C;QAH9C,WAAM,GAAN,MAAM,CAAQ;QAEd,kBAAa,GAAb,aAAa,CAA2B;QACxC,wBAAmB,GAAnB,mBAAmB,CAA2B;IAChE,CAAC;IAEJ,KAAK,CAAC,aAAa,CAAC,OAAgC;QAChD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,IAAI,mBAAmB,CACzB,4CAA4C,CAC/C,CAAC;QACN,CAAC;QACD,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC5D,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;YACtC,MAAM,IAAI,mBAAmB,CAAC,kCAAkC,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,KAAmB,CAAC;QACxB,IAAI,CAAC;YACD,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CACvC,OAAO,CAAC,OAAO,EACf,eAAe,EACf,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAC5C,CAAC;QACN,CAAC;QAAC,MAAM,CAAC;YACL,MAAM,IAAI,mBAAmB,CAAC,kCAAkC,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACL,sEAAsE;YACtE,iEAAiE;YACjE,MAAM,IAAI,2BAA2B,CACjC,mCAAmC,CACtC,CAAC;QACN,CAAC;IACL,CAAC;CACJ,CAAA;AAzCY,0BAA0B;IADtC,UAAU,EAAE;IAGJ,WAAA,MAAM,CAAC,oBAAoB,CAAC,CAAA;IAE5B,WAAA,MAAM,CAAC,2BAA2B,CAAC,CAAA;qCADX,MAAM,UAGO,yBAAyB;GAN1D,0BAA0B,CAyCtC"}
@@ -0,0 +1,18 @@
1
+ import { OrganisationSubscriptionRecord } from "../../organisation-subscriptions/entities/organisation-subscription.entity.js";
2
+ import { Queue } from "bullmq";
3
+ import { Repository } from "typeorm";
4
+ import type { StripePaymentsEntitlementInput } from "../stripe-payments.extensions.js";
5
+ export type SecureSubscriptionInput = StripePaymentsEntitlementInput;
6
+ export declare class SecureSubscriptionService {
7
+ private readonly subscriptionRepository;
8
+ private readonly activationQueue;
9
+ private readonly logger;
10
+ constructor(subscriptionRepository: Repository<OrganisationSubscriptionRecord>, activationQueue: Queue);
11
+ findByUuid(uuid: string): Promise<OrganisationSubscriptionRecord>;
12
+ findByTransactionId(paymentSystemTransactionId: string): Promise<OrganisationSubscriptionRecord | null>;
13
+ findByCustomerId(paymentSystemCustomerId: string, mode?: string): Promise<OrganisationSubscriptionRecord[]>;
14
+ save(input: SecureSubscriptionInput): Promise<OrganisationSubscriptionRecord>;
15
+ revokeCustomerPayments(customerId: string, input: Pick<SecureSubscriptionInput, "stripeEventId" | "stripeEventCreatedAt" | "stripeStatus">): Promise<void>;
16
+ revokePayment(paymentSystemTransactionId: string, input: Pick<SecureSubscriptionInput, "stripeEventId" | "stripeEventCreatedAt" | "stripeStatus">): Promise<boolean>;
17
+ private saveRecord;
18
+ }
@@ -0,0 +1,217 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ var SecureSubscriptionService_1;
14
+ import { Injectable, Logger } from "@nestjs/common";
15
+ import { InjectQueue } from "@nestjs/bullmq";
16
+ import { Organisation } from "../../organisation/entities/organisation.entity.js";
17
+ import { OrganisationSubscriptionRecord } from "../../organisation-subscriptions/entities/organisation-subscription.entity.js";
18
+ import { Queue } from "bullmq";
19
+ import { InjectRepository } from "@nestjs/typeorm";
20
+ import { QueryFailedError, Repository } from "typeorm";
21
+ import { StripePaymentState } from "../entities/stripe-payment-state.entity.js";
22
+ let SecureSubscriptionService = SecureSubscriptionService_1 = class SecureSubscriptionService {
23
+ subscriptionRepository;
24
+ activationQueue;
25
+ logger = new Logger(SecureSubscriptionService_1.name);
26
+ constructor(subscriptionRepository, activationQueue) {
27
+ this.subscriptionRepository = subscriptionRepository;
28
+ this.activationQueue = activationQueue;
29
+ }
30
+ async findByUuid(uuid) {
31
+ const record = await this.subscriptionRepository.findOne({
32
+ where: { uuid },
33
+ relations: { organisation: true },
34
+ });
35
+ if (!record) {
36
+ throw new Error("Subscription record not found");
37
+ }
38
+ return record;
39
+ }
40
+ async findByTransactionId(paymentSystemTransactionId) {
41
+ return this.subscriptionRepository.findOne({
42
+ where: { paymentSystemTransactionId },
43
+ relations: { organisation: true },
44
+ });
45
+ }
46
+ async findByCustomerId(paymentSystemCustomerId, mode) {
47
+ return this.subscriptionRepository.find({
48
+ where: {
49
+ paymentSystemCustomerId,
50
+ ...(mode ? { paymentSystemMode: mode } : {}),
51
+ },
52
+ relations: { organisation: true },
53
+ });
54
+ }
55
+ async save(input) {
56
+ const { record, shouldActivate } = await this.saveRecord(input);
57
+ if (shouldActivate) {
58
+ await this.activationQueue.add("activation-changed", {
59
+ organisationUuid: record.organisation.uuid,
60
+ subscriptionUuid: record.uuid,
61
+ productKey: record.internalSku,
62
+ active: record.validUntil > new Date(),
63
+ }, {
64
+ jobId: `subscription-activation:${record.uuid}:${String(record.validUntil.getTime())}`,
65
+ attempts: 5,
66
+ backoff: { type: "exponential", delay: 2_000 },
67
+ removeOnComplete: { age: 86_400, count: 10_000 },
68
+ removeOnFail: { age: 604_800, count: 10_000 },
69
+ });
70
+ }
71
+ return record;
72
+ }
73
+ async revokeCustomerPayments(customerId, input) {
74
+ const records = await this.findByCustomerId(customerId, "payment");
75
+ for (const record of records) {
76
+ await this.save({
77
+ paymentSystemTransactionId: record.paymentSystemTransactionId,
78
+ paymentSystemProductId: record.paymentSystemProductId,
79
+ paymentSystemCustomerId: record.paymentSystemCustomerId,
80
+ paymentSystemCustomerEmail: record.paymentSystemCustomerEmail,
81
+ paymentSystemMode: "payment",
82
+ paymentSystemName: "stripe",
83
+ validUntil: new Date(),
84
+ internalSku: record.internalSku,
85
+ productDisplayName: record.productDisplayName,
86
+ organisationUuid: record.organisation.uuid,
87
+ stripeEventId: input.stripeEventId,
88
+ stripeEventCreatedAt: input.stripeEventCreatedAt,
89
+ stripeStatus: input.stripeStatus,
90
+ });
91
+ }
92
+ }
93
+ async revokePayment(paymentSystemTransactionId, input) {
94
+ const record = await this.findByTransactionId(paymentSystemTransactionId);
95
+ if (record?.paymentSystemMode !== "payment") {
96
+ return false;
97
+ }
98
+ await this.save({
99
+ paymentSystemTransactionId: record.paymentSystemTransactionId,
100
+ paymentSystemProductId: record.paymentSystemProductId,
101
+ paymentSystemCustomerId: record.paymentSystemCustomerId,
102
+ paymentSystemCustomerEmail: record.paymentSystemCustomerEmail,
103
+ paymentSystemMode: "payment",
104
+ paymentSystemName: "stripe",
105
+ validUntil: new Date(),
106
+ internalSku: record.internalSku,
107
+ productDisplayName: record.productDisplayName,
108
+ organisationUuid: record.organisation.uuid,
109
+ stripeEventId: input.stripeEventId,
110
+ stripeEventCreatedAt: input.stripeEventCreatedAt,
111
+ stripeStatus: input.stripeStatus,
112
+ });
113
+ return true;
114
+ }
115
+ async saveRecord(input) {
116
+ try {
117
+ return await this.subscriptionRepository.manager.transaction(async (manager) => {
118
+ await manager.query("SELECT pg_advisory_xact_lock(hashtext($1))", [input.paymentSystemTransactionId]);
119
+ const subscriptionRepository = manager.getRepository(OrganisationSubscriptionRecord);
120
+ const stateRepository = manager.getRepository(StripePaymentState);
121
+ const state = await stateRepository.findOne({
122
+ where: {
123
+ paymentSystemTransactionId: input.paymentSystemTransactionId,
124
+ },
125
+ });
126
+ let record = await subscriptionRepository.findOne({
127
+ where: {
128
+ paymentSystemTransactionId: input.paymentSystemTransactionId,
129
+ },
130
+ relations: { organisation: true },
131
+ });
132
+ const isDuplicateEvent = state?.lastStripeEventCreatedAt.getTime() ===
133
+ input.stripeEventCreatedAt.getTime() &&
134
+ state.lastStripeEventId === input.stripeEventId;
135
+ if (record &&
136
+ state &&
137
+ (state.lastStripeEventCreatedAt >
138
+ input.stripeEventCreatedAt ||
139
+ isDuplicateEvent)) {
140
+ return {
141
+ record,
142
+ // Retry the durable activation notification if the
143
+ // previous attempt failed after the DB commit.
144
+ shouldActivate: isDuplicateEvent,
145
+ };
146
+ }
147
+ const isNewRecord = !record;
148
+ if (!record) {
149
+ const organisation = input.organisationUuid
150
+ ? await manager
151
+ .getRepository(Organisation)
152
+ .findOne({
153
+ where: { uuid: input.organisationUuid },
154
+ })
155
+ : null;
156
+ if (!organisation) {
157
+ throw new Error("Payment could not be matched to an organisation");
158
+ }
159
+ record = subscriptionRepository.create({
160
+ organisation,
161
+ });
162
+ }
163
+ const previousValidUntil = isNewRecord
164
+ ? undefined
165
+ : record.validUntil.getTime();
166
+ record.paymentSystemTransactionId =
167
+ input.paymentSystemTransactionId;
168
+ record.paymentSystemProductId =
169
+ input.paymentSystemProductId;
170
+ record.paymentSystemCustomerId =
171
+ input.paymentSystemCustomerId;
172
+ record.paymentSystemCustomerEmail =
173
+ input.paymentSystemCustomerEmail;
174
+ record.paymentSystemMode = input.paymentSystemMode;
175
+ record.paymentSystemName = input.paymentSystemName;
176
+ record.validUntil = input.validUntil;
177
+ record.internalSku = input.internalSku;
178
+ record.productDisplayName = input.productDisplayName;
179
+ const savedRecord = await subscriptionRepository.save(record);
180
+ const shouldActivate = isNewRecord ||
181
+ state?.lastStripeEventId !== input.stripeEventId ||
182
+ previousValidUntil !== input.validUntil.getTime();
183
+ const paymentState = state ??
184
+ stateRepository.create({
185
+ paymentSystemTransactionId: input.paymentSystemTransactionId,
186
+ });
187
+ paymentState.lastStripeEventId = input.stripeEventId;
188
+ paymentState.lastStripeEventCreatedAt =
189
+ input.stripeEventCreatedAt;
190
+ paymentState.status = input.stripeStatus;
191
+ await stateRepository.save(paymentState);
192
+ return { record: savedRecord, shouldActivate };
193
+ });
194
+ }
195
+ catch (error) {
196
+ if (error instanceof QueryFailedError &&
197
+ error
198
+ .driverError.code === "23505") {
199
+ const existing = await this.findByTransactionId(input.paymentSystemTransactionId);
200
+ if (existing) {
201
+ this.logger.warn(`Ignored concurrent duplicate payment ${input.paymentSystemTransactionId}`);
202
+ return { record: existing, shouldActivate: false };
203
+ }
204
+ }
205
+ throw error;
206
+ }
207
+ }
208
+ };
209
+ SecureSubscriptionService = SecureSubscriptionService_1 = __decorate([
210
+ Injectable(),
211
+ __param(0, InjectRepository(OrganisationSubscriptionRecord)),
212
+ __param(1, InjectQueue("subscription-activation-changed")),
213
+ __metadata("design:paramtypes", [Repository,
214
+ Queue])
215
+ ], SecureSubscriptionService);
216
+ export { SecureSubscriptionService };
217
+ //# sourceMappingURL=secure-subscription.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secure-subscription.service.js","sourceRoot":"","sources":["../../../src/stripe-payments/services/secure-subscription.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Job } from "bullmq";
2
+ import { WorkerHost } from "@nestjs/bullmq";
3
+ import Stripe from "stripe";
4
+ import { StripePaymentEventService } from "./stripe-payment-event.service.js";
5
+ import { StripePaymentFulfillmentService } from "./stripe-payment-fulfillment.service.js";
6
+ import { StripePaymentsTelemetryService } from "./stripe-payments-telemetry.service.js";
7
+ export declare class StripePaymentEventProcessor extends WorkerHost {
8
+ private readonly eventService;
9
+ private readonly fulfillmentService;
10
+ private readonly telemetry;
11
+ private readonly logger;
12
+ constructor(eventService: StripePaymentEventService, fulfillmentService: StripePaymentFulfillmentService, telemetry: StripePaymentsTelemetryService);
13
+ process(job: Job<Stripe.Event>): Promise<void>;
14
+ onFailed(job: Job<Stripe.Event> | undefined, error: Error): void;
15
+ }
@@ -0,0 +1,78 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var StripePaymentEventProcessor_1;
11
+ import { Injectable, Logger } from "@nestjs/common";
12
+ import { OnWorkerEvent, Processor, WorkerHost } from "@nestjs/bullmq";
13
+ import { StripePaymentEventService } from "./stripe-payment-event.service.js";
14
+ import { StripePaymentFulfillmentService } from "./stripe-payment-fulfillment.service.js";
15
+ import { StripePaymentsTelemetryService } from "./stripe-payments-telemetry.service.js";
16
+ let StripePaymentEventProcessor = StripePaymentEventProcessor_1 = class StripePaymentEventProcessor extends WorkerHost {
17
+ eventService;
18
+ fulfillmentService;
19
+ telemetry;
20
+ logger = new Logger(StripePaymentEventProcessor_1.name);
21
+ constructor(eventService, fulfillmentService, telemetry) {
22
+ super();
23
+ this.eventService = eventService;
24
+ this.fulfillmentService = fulfillmentService;
25
+ this.telemetry = telemetry;
26
+ }
27
+ async process(job) {
28
+ const event = job.data;
29
+ const isClaimed = await this.eventService.claim(event.id);
30
+ if (!isClaimed) {
31
+ if (await this.eventService.isProcessed(event.id)) {
32
+ return;
33
+ }
34
+ throw new Error(`Stripe event ${event.id} is currently claimed by another worker`);
35
+ }
36
+ try {
37
+ await this.fulfillmentService.process(event);
38
+ await this.eventService.markProcessed(event.id);
39
+ await this.telemetry.record({
40
+ name: "webhook.processed",
41
+ stripeEventId: event.id,
42
+ eventType: event.type,
43
+ });
44
+ }
45
+ catch (error) {
46
+ await this.eventService.markFailed(event.id, error);
47
+ await this.telemetry.record({
48
+ name: "webhook.failed",
49
+ stripeEventId: event.id,
50
+ eventType: event.type,
51
+ error: error instanceof Error ? error.message : String(error),
52
+ });
53
+ throw error;
54
+ }
55
+ }
56
+ onFailed(job, error) {
57
+ this.logger.error("Stripe payment queue job failed", {
58
+ jobId: job?.id,
59
+ eventId: job?.data.id,
60
+ error: error.message,
61
+ });
62
+ }
63
+ };
64
+ __decorate([
65
+ OnWorkerEvent("failed"),
66
+ __metadata("design:type", Function),
67
+ __metadata("design:paramtypes", [Object, Error]),
68
+ __metadata("design:returntype", void 0)
69
+ ], StripePaymentEventProcessor.prototype, "onFailed", null);
70
+ StripePaymentEventProcessor = StripePaymentEventProcessor_1 = __decorate([
71
+ Injectable(),
72
+ Processor("stripe-events"),
73
+ __metadata("design:paramtypes", [StripePaymentEventService,
74
+ StripePaymentFulfillmentService,
75
+ StripePaymentsTelemetryService])
76
+ ], StripePaymentEventProcessor);
77
+ export { StripePaymentEventProcessor };
78
+ //# sourceMappingURL=stripe-payment-event.processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripe-payment-event.processor.js","sourceRoot":"","sources":["../../../src/stripe-payments/services/stripe-payment-event.processor.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,OAAO,EAAC,UAAU,EAAE,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAC,aAAa,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAC,yBAAyB,EAAC,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAC,+BAA+B,EAAC,MAAM,yCAAyC,CAAC;AACxF,OAAO,EAAC,8BAA8B,EAAC,MAAM,wCAAwC,CAAC;AAI/E,IAAM,2BAA2B,mCAAjC,MAAM,2BAA4B,SAAQ,UAAU;IAIlC;IACA;IACA;IALJ,MAAM,GAAG,IAAI,MAAM,CAAC,6BAA2B,CAAC,IAAI,CAAC,CAAC;IAEvE,YACqB,YAAuC,EACvC,kBAAmD,EACnD,SAAyC;QAE1D,KAAK,EAAE,CAAC;QAJS,iBAAY,GAAZ,YAAY,CAA2B;QACvC,uBAAkB,GAAlB,kBAAkB,CAAiC;QACnD,cAAS,GAAT,SAAS,CAAgC;IAG9D,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAsB;QAChC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC;QACvB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,IAAI,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;gBAChD,OAAO;YACX,CAAC;YACD,MAAM,IAAI,KAAK,CACX,gBAAgB,KAAK,CAAC,EAAE,yCAAyC,CACpE,CAAC;QACN,CAAC;QAED,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC7C,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBACxB,IAAI,EAAE,mBAAmB;gBACzB,aAAa,EAAE,KAAK,CAAC,EAAE;gBACvB,SAAS,EAAE,KAAK,CAAC,IAAI;aACxB,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACpD,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBACxB,IAAI,EAAE,gBAAgB;gBACtB,aAAa,EAAE,KAAK,CAAC,EAAE;gBACvB,SAAS,EAAE,KAAK,CAAC,IAAI;gBACrB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAChE,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;IAGD,QAAQ,CAAC,GAAkC,EAAE,KAAY;QACrD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE;YACjD,KAAK,EAAE,GAAG,EAAE,EAAE;YACd,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE;YACrB,KAAK,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AAPG;IADC,aAAa,CAAC,QAAQ,CAAC;;6CAC4B,KAAK;;2DAMxD;AAlDQ,2BAA2B;IAFvC,UAAU,EAAE;IACZ,SAAS,CAAC,eAAe,CAAC;qCAKY,yBAAyB;QACnB,+BAA+B;QACxC,8BAA8B;GANrD,2BAA2B,CAmDvC"}
@@ -0,0 +1,20 @@
1
+ import { Queue } from "bullmq";
2
+ import { Repository } from "typeorm";
3
+ import Stripe from "stripe";
4
+ import { StripeCheckoutEvent } from "../entities/stripe-payment-event.entity.js";
5
+ import { StripePaymentsTelemetryService } from "./stripe-payments-telemetry.service.js";
6
+ export declare class StripePaymentEventService {
7
+ private readonly eventRepository;
8
+ private readonly eventQueue;
9
+ private readonly telemetry;
10
+ private readonly logger;
11
+ constructor(eventRepository: Repository<StripeCheckoutEvent>, eventQueue: Queue, telemetry: StripePaymentsTelemetryService);
12
+ receive(event: Stripe.Event): Promise<void>;
13
+ claim(eventId: string): Promise<boolean>;
14
+ isProcessed(eventId: string): Promise<boolean>;
15
+ markProcessed(eventId: string): Promise<void>;
16
+ markFailed(eventId: string, error: unknown): Promise<void>;
17
+ list(take: number, skip: number): Promise<StripeCheckoutEvent[]>;
18
+ replay(eventId: string): Promise<void>;
19
+ private getBaseJobId;
20
+ }