@forklaunch/implementation-ecommerce-stripe 1.0.10 → 1.1.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.
@@ -9,6 +9,8 @@ import Stripe from 'stripe';
9
9
  */
10
10
  export type StripePaymentMappers<Entities extends BasePaymentEntities, Dto extends BasePaymentDtos> = {
11
11
  PaymentMapper: {
12
+ /** Optional authoritative local relation guard before/after secret retrieval. */
13
+ validateResume?: (payment: Dto['PaymentMapper'], em: EntityManager) => Promise<void>;
12
14
  entity: Entities['PaymentMapper'];
13
15
  toDto: (entity: InferEntity<Entities['PaymentMapper']>) => Promise<Dto['PaymentMapper']>;
14
16
  };
@@ -1 +1 @@
1
- {"version":3,"file":"payment.mapper.types.d.ts","sourceRoot":"","sources":["../../../domain/types/payment.mapper.types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,mBAAmB,EACpB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,CAC9B,QAAQ,SAAS,mBAAmB,EACpC,GAAG,SAAS,eAAe,IACzB;IACF,aAAa,EAAE;QACb,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;QAClC,KAAK,EAAE,CACL,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,KAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;KACpC,CAAC;IACF,mBAAmB,EAAE;QACnB,MAAM,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;QACxC,QAAQ,EAAE,CACR,GAAG,EAAE,GAAG,CAAC,qBAAqB,CAAC,EAC/B,EAAE,EAAE,aAAa,EACjB,aAAa,EAAE,MAAM,CAAC,aAAa,EACnC,GAAG,IAAI,EAAE,OAAO,EAAE,KACf,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;KAC5D,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"payment.mapper.types.d.ts","sourceRoot":"","sources":["../../../domain/types/payment.mapper.types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,mBAAmB,EACpB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,CAC9B,QAAQ,SAAS,mBAAmB,EACpC,GAAG,SAAS,eAAe,IACzB;IACF,aAAa,EAAE;QACb,iFAAiF;QACjF,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAErF,MAAM,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;QAClC,KAAK,EAAE,CACL,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,KAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;KACpC,CAAC;IACF,mBAAmB,EAAE;QACnB,MAAM,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;QACxC,QAAQ,EAAE,CACR,GAAG,EAAE,GAAG,CAAC,qBAAqB,CAAC,EAC/B,EAAE,EAAE,aAAa,EACjB,aAAa,EAAE,MAAM,CAAC,aAAa,EACnC,GAAG,IAAI,EAAE,OAAO,EAAE,KACf,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;KAC5D,CAAC;CACH,CAAC"}
@@ -16,6 +16,9 @@ export type StripePaymentMappers<
16
16
  Dto extends BasePaymentDtos
17
17
  > = {
18
18
  PaymentMapper: {
19
+ /** Optional authoritative local relation guard before/after secret retrieval. */
20
+ validateResume?: (payment: Dto['PaymentMapper'], em: EntityManager) => Promise<void>;
21
+
19
22
  entity: Entities['PaymentMapper'];
20
23
  toDto: (
21
24
  entity: InferEntity<Entities['PaymentMapper']>
@@ -32,6 +32,7 @@ export class StripePaymentService<
32
32
  Dto extends BasePaymentDtos = BasePaymentDtos
33
33
  > implements PaymentService {
34
34
  basePaymentService: BasePaymentService<SchemaValidator, Entities, Dto>;
35
+ private readonly validateResume?: StripePaymentMappers<Entities, Dto>['PaymentMapper']['validateResume'];
35
36
  protected readonly stripeClient: Stripe;
36
37
  protected readonly em: EntityManager;
37
38
  protected readonly openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
@@ -66,6 +67,7 @@ export class StripePaymentService<
66
67
  }
67
68
  ) {
68
69
  this.stripeClient = stripeClient;
70
+ this.validateResume = mappers.PaymentMapper.validateResume;
69
71
  this.em = em;
70
72
  this.openTelemetryCollector = openTelemetryCollector;
71
73
  if (options?.connect) {
@@ -201,6 +203,7 @@ export class StripePaymentService<
201
203
  em?: EntityManager
202
204
  ): Promise<Dto['PaymentMapper'] & { clientSecret?: string }> {
203
205
  const payment = await this.basePaymentService.getPayment(idDto, em);
206
+ await this.validateResume?.(payment, em ?? this.em);
204
207
  if (!payment.providerRef) {
205
208
  return payment;
206
209
  }
@@ -211,6 +214,10 @@ export class StripePaymentService<
211
214
  ? { stripeAccount: this.connect.connectedAccountId }
212
215
  : undefined
213
216
  );
217
+ if (paymentIntent?.id !== payment.providerRef) {
218
+ throw new Error('Stripe returned an invalid PaymentIntent response');
219
+ }
220
+ await this.validateResume?.(payment, em ?? this.em);
214
221
  return {
215
222
  ...payment,
216
223
  clientSecret: paymentIntent.client_secret ?? undefined
@@ -28,12 +28,14 @@ module.exports = __toCommonJS(services_exports);
28
28
  var import_services = require("@forklaunch/implementation-ecommerce-base/services");
29
29
  var StripePaymentService = class {
30
30
  basePaymentService;
31
+ validateResume;
31
32
  stripeClient;
32
33
  em;
33
34
  openTelemetryCollector;
34
35
  connect;
35
36
  constructor(stripeClient, em, openTelemetryCollector, schemaValidator, mappers, options) {
36
37
  this.stripeClient = stripeClient;
38
+ this.validateResume = mappers.PaymentMapper.validateResume;
37
39
  this.em = em;
38
40
  this.openTelemetryCollector = openTelemetryCollector;
39
41
  if (options?.connect) {
@@ -126,6 +128,7 @@ var StripePaymentService = class {
126
128
  */
127
129
  async resumePayment(idDto, em) {
128
130
  const payment = await this.basePaymentService.getPayment(idDto, em);
131
+ await this.validateResume?.(payment, em ?? this.em);
129
132
  if (!payment.providerRef) {
130
133
  return payment;
131
134
  }
@@ -134,6 +137,10 @@ var StripePaymentService = class {
134
137
  {},
135
138
  this.connect ? { stripeAccount: this.connect.connectedAccountId } : void 0
136
139
  );
140
+ if (paymentIntent?.id !== payment.providerRef) {
141
+ throw new Error("Stripe returned an invalid PaymentIntent response");
142
+ }
143
+ await this.validateResume?.(payment, em ?? this.em);
137
144
  return {
138
145
  ...payment,
139
146
  clientSecret: paymentIntent.client_secret ?? void 0
@@ -2,12 +2,14 @@
2
2
  import { BasePaymentService } from "@forklaunch/implementation-ecommerce-base/services";
3
3
  var StripePaymentService = class {
4
4
  basePaymentService;
5
+ validateResume;
5
6
  stripeClient;
6
7
  em;
7
8
  openTelemetryCollector;
8
9
  connect;
9
10
  constructor(stripeClient, em, openTelemetryCollector, schemaValidator, mappers, options) {
10
11
  this.stripeClient = stripeClient;
12
+ this.validateResume = mappers.PaymentMapper.validateResume;
11
13
  this.em = em;
12
14
  this.openTelemetryCollector = openTelemetryCollector;
13
15
  if (options?.connect) {
@@ -100,6 +102,7 @@ var StripePaymentService = class {
100
102
  */
101
103
  async resumePayment(idDto, em) {
102
104
  const payment = await this.basePaymentService.getPayment(idDto, em);
105
+ await this.validateResume?.(payment, em ?? this.em);
103
106
  if (!payment.providerRef) {
104
107
  return payment;
105
108
  }
@@ -108,6 +111,10 @@ var StripePaymentService = class {
108
111
  {},
109
112
  this.connect ? { stripeAccount: this.connect.connectedAccountId } : void 0
110
113
  );
114
+ if (paymentIntent?.id !== payment.providerRef) {
115
+ throw new Error("Stripe returned an invalid PaymentIntent response");
116
+ }
117
+ await this.validateResume?.(payment, em ?? this.em);
111
118
  return {
112
119
  ...payment,
113
120
  clientSecret: paymentIntent.client_secret ?? void 0
@@ -16,6 +16,7 @@ import { StripePaymentMappers } from '../domain/types/payment.mapper.types';
16
16
  */
17
17
  export declare class StripePaymentService<SchemaValidator extends AnySchemaValidator, Entities extends BasePaymentEntities, Dto extends BasePaymentDtos = BasePaymentDtos> implements PaymentService {
18
18
  basePaymentService: BasePaymentService<SchemaValidator, Entities, Dto>;
19
+ private readonly validateResume?;
19
20
  protected readonly stripeClient: Stripe;
20
21
  protected readonly em: EntityManager;
21
22
  protected readonly openTelemetryCollector: OpenTelemetryCollector<MetricsDefinition>;
@@ -1 +1 @@
1
- {"version":3,"file":"payment.service.d.ts","sourceRoot":"","sources":["../../services/payment.service.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oDAAoD,CAAC;AACxF,OAAO,EACL,eAAe,EACf,mBAAmB,EACpB,MAAM,iDAAiD,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACf,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAE5E;;;;;;GAMG;AACH,qBAAa,oBAAoB,CAC/B,eAAe,SAAS,kBAAkB,EAC1C,QAAQ,SAAS,mBAAmB,EACpC,GAAG,SAAS,eAAe,GAAG,eAAe,CAC7C,YAAW,cAAc;IACzB,kBAAkB,EAAE,kBAAkB,CAAC,eAAe,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;IACvE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;IACrF,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;QAC3B,kBAAkB,EAAE,MAAM,CAAC;QAC3B,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IAEF,YACE,YAAY,EAAE,MAAM,EACpB,EAAE,EAAE,aAAa,EACjB,sBAAsB,EAAE,sBAAsB,CAAC,iBAAiB,CAAC,EACjE,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,EAC5C,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,gBAAgB,CAAC;QAC7B;;;;;;;;;;WAUG;QACH,OAAO,CAAC,EAAE;YACR,kBAAkB,EAAE,MAAM,CAAC;YAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;SACzB,CAAC;KACH,EA4CF;IAED;;;;;;;;;;;;OAYG;IACG,aAAa,CACjB,UAAU,EAAE,gBAAgB,EAC5B,EAAE,CAAC,EAAE,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAoD3D;IAED;;;;;;;;;;;;;;;;OAgBG;IACG,aAAa,CACjB,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EACrB,EAAE,CAAC,EAAE,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAgB3D;IAEK,UAAU,CACd,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,EACrB,EAAE,CAAC,EAAE,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAE/B;IAED,8FAA8F;IACxF,cAAc,CAClB,UAAU,EAAE,iBAAiB,EAC7B,EAAE,CAAC,EAAE,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAE/B;IAED,sFAAsF;IAChF,WAAW,CACf,OAAO,EAAE,cAAc,EACvB,EAAE,CAAC,EAAE,aAAa,GACjB,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAE/B;CACF"}
1
+ {"version":3,"file":"payment.service.d.ts","sourceRoot":"","sources":["../../services/payment.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forklaunch/implementation-ecommerce-stripe",
3
- "version": "1.0.10",
3
+ "version": "1.1.0",
4
4
  "description": "Stripe implementation for forklaunch ecommerce",
5
5
  "homepage": "https://github.com/forklaunch/forklaunch-js#readme",
6
6
  "bugs": {
@@ -31,16 +31,16 @@
31
31
  ],
32
32
  "dependencies": {
33
33
  "@forklaunch/common": "^1.2.32",
34
- "@forklaunch/core": "^3.2.0",
34
+ "@forklaunch/core": "^3.3.0",
35
+ "@forklaunch/implementation-ecommerce-base": "^1.0.16",
36
+ "@forklaunch/interfaces-ecommerce": "^1.0.14",
35
37
  "@forklaunch/internal": "^1.2.35",
36
- "@forklaunch/validator": "^1.2.33",
38
+ "@forklaunch/validator": "^1.3.0",
37
39
  "@mikro-orm/core": "7.2.5",
38
40
  "@sinclair/typebox": "^0.34.52",
39
41
  "ajv": "^8.20.0",
40
42
  "stripe": "^22.6.2",
41
- "zod": "^4.6.7",
42
- "@forklaunch/implementation-ecommerce-base": "^1.0.15",
43
- "@forklaunch/interfaces-ecommerce": "^1.0.14"
43
+ "zod": "^4.6.7"
44
44
  },
45
45
  "devDependencies": {
46
46
  "depcheck": "^1.4.7",