@distilled.cloud/stripe 1.0.0-rc.12 → 1.0.0-rc.13

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/README.md ADDED
@@ -0,0 +1,36 @@
1
+ # @distilled.cloud/stripe
2
+
3
+ Effect-native SDK for [stripe](https://www.npmjs.com/package/@distilled.cloud/stripe).
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @distilled.cloud/stripe effect
9
+ ```
10
+
11
+ ## Quick start
12
+
13
+ ```ts
14
+ import { Effect, Layer } from "effect";
15
+ import * as FetchHttpClient from "effect/http/FetchHttpClient";
16
+ import * as Stripe from "@distilled.cloud/stripe";
17
+
18
+ const program = Effect.gen(function* () {
19
+ const result = yield* Stripe.CreateCustomer({
20
+ email: "ops@example.com",
21
+ });
22
+ return result;
23
+ });
24
+
25
+ const Live = Layer.mergeAll(
26
+ FetchHttpClient.layer,
27
+ Stripe.CredentialsFromEnv,
28
+ Stripe.StripeProtocol,
29
+ );
30
+
31
+ program.pipe(Effect.provide(Live), Effect.runPromise);
32
+ ```
33
+
34
+ ## Auth
35
+
36
+ Required: `STRIPE_API_KEY`.
package/lib/protocol.d.ts CHANGED
@@ -32,8 +32,8 @@
32
32
  import * as Context from "effect/Context";
33
33
  import * as Effect from "effect/Effect";
34
34
  import * as Layer from "effect/Layer";
35
- import type * as HttpClient from "effect/unstable/http/HttpClient";
36
- import type * as HttpClientError from "effect/unstable/http/HttpClientError";
35
+ import type * as HttpClient from "effect/http/HttpClient";
36
+ import type * as HttpClientError from "effect/http/HttpClientError";
37
37
  import * as API from "@distilled.cloud/core/api";
38
38
  import { ConfigError, type DefaultErrors as CoreDefaultErrors, BadRequest, Conflict, Forbidden, Locked, NotFound, UnprocessableEntity } from "@distilled.cloud/core/errors";
39
39
  import { Credentials } from "./credentials.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,OAAO,KAAK,KAAK,UAAU,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,KAAK,eAAe,MAAM,sCAAsC,CAAC;AAI7E,OAAO,KAAK,GAAG,MAAM,2BAA2B,CAAC;AAcjD,OAAO,EACL,WAAW,EAGX,KAAK,aAAa,IAAI,iBAAiB,EACvC,UAAU,EACV,QAAQ,EACR,SAAS,EACT,MAAM,EACN,QAAQ,EACR,mBAAmB,EACpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAe,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,QAAQ,EACR,SAAS,EACT,wBAAwB,EACxB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EAEZ,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAcrB,MAAM,MAAM,2BAA2B,GACnC;IACE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC;CAChC,GACD;IACE,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C,GAAG,2BAA2B,CAAC;;AAEhC;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,mBAGT;CAAG;AAE9B;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,YAAa,oBAAoB,+FACR,CAAC;AAyBzD;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,gBAAgB,GAChB,mBAAmB,GACnB,QAAQ,GACR,YAAY,GACZ,wBAAwB,GACxB,kBAAkB,GAClB,gBAAgB,GAChB,UAAU,GACV,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,mBAAmB,GACnB,MAAM,GACN,iBAAiB,GACjB,WAAW,GACX,eAAe,CAAC,eAAe,CAAC;AAEpC,yEAAyE;AACzE,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC;AAwZlE,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAQpD,CAAC"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAItC,OAAO,KAAK,KAAK,UAAU,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,KAAK,eAAe,MAAM,6BAA6B,CAAC;AAIpE,OAAO,KAAK,GAAG,MAAM,2BAA2B,CAAC;AAcjD,OAAO,EACL,WAAW,EAGX,KAAK,aAAa,IAAI,iBAAiB,EACvC,UAAU,EACV,QAAQ,EACR,SAAS,EACT,MAAM,EACN,QAAQ,EACR,mBAAmB,EACpB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,WAAW,EAAe,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,QAAQ,EACR,SAAS,EACT,wBAAwB,EACxB,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EAEZ,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAcrB,MAAM,MAAM,2BAA2B,GACnC;IACE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC;CAChC,GACD;IACE,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEN,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1C,GAAG,2BAA2B,CAAC;;AAEhC;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,mBAGT;CAAG;AAE9B;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,YAAa,oBAAoB,+FACR,CAAC;AAyBzD;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,gBAAgB,GAChB,mBAAmB,GACnB,QAAQ,GACR,YAAY,GACZ,wBAAwB,GACxB,kBAAkB,GAClB,gBAAgB,GAChB,UAAU,GACV,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,mBAAmB,GACnB,MAAM,GACN,iBAAiB,GACjB,WAAW,GACX,eAAe,CAAC,eAAe,CAAC;AAEpC,yEAAyE;AACzE,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC;AAialE,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAQpD,CAAC"}
package/lib/protocol.js CHANGED
@@ -34,12 +34,13 @@ import * as Effect from "effect/Effect";
34
34
  import * as Layer from "effect/Layer";
35
35
  import * as Option from "effect/Option";
36
36
  import * as Redacted from "effect/Redacted";
37
- import * as HttpBody from "effect/unstable/http/HttpBody";
38
- import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";
37
+ import * as HttpBody from "effect/http/HttpBody";
38
+ import * as HttpClientRequest from "effect/http/HttpClientRequest";
39
39
  import * as API from "@distilled.cloud/core/api";
40
40
  import { buildRequest, getAnn, getProps, hasPropAnn, mapKeys, matchTypedError, nameOf, } from "@distilled.cloud/core/protocol-http";
41
41
  import { unwrapRedactedDeep, wrapSensitive, } from "@distilled.cloud/core/protocol-rest";
42
42
  import { ConfigError, HTTP_STATUS_MAP, InternalServerError, BadRequest, Conflict, Forbidden, Locked, NotFound, UnprocessableEntity, } from "@distilled.cloud/core/errors";
43
+ import { validateResponse } from "@distilled.cloud/core/response-validation";
43
44
  import { parseRetryAfterForStatus } from "@distilled.cloud/core/retry-after";
44
45
  import { Credentials } from "./credentials.js";
45
46
  import { ApiError, CardError, ExternalDependencyFailed, IdempotencyError, InvalidRequestError, PaymentError, STRIPE_HTTP_STATUS_MAP, StripeParseError, UnknownStripeError, } from "./errors.js";
@@ -380,15 +381,20 @@ const decode = ({ response, outputAst, errors: errorClasses, }) => Effect.gen(fu
380
381
  const errorBody = nonJson ? text : json;
381
382
  const message = stripeErrorMessage(errorBody) ??
382
383
  (nonJson && text.trim() ? text.trim() : `HTTP ${status}`);
383
- const typed = matchTypedError(errorClasses, status, [{ message }]);
384
+ const typed = matchTypedError(errorClasses, status, [{ message }], {
385
+ body: nonJson ? text : json,
386
+ headers,
387
+ });
384
388
  if (typed !== undefined)
385
389
  return yield* fail(typed);
386
390
  return yield* fail(matchStripeError(status, errorBody, headers));
387
391
  }
388
392
  // 2xx: the response body IS the payload (no envelope). Wire→TS key
389
393
  // mapping is schema-driven; sensitive members come back Redacted.
394
+ // Strict mode checks the mapped body against the output schema first.
390
395
  const body = nonJson ? text : (json ?? {});
391
- return wrapSensitive(outputAst, mapKeys(outputAst, body, "decode"));
396
+ const mapped = yield* validateResponse(outputAst, mapKeys(outputAst, body, "decode"), (cause) => new StripeParseError({ body: nonJson ? text : json, cause })).pipe(Effect.catch(fail));
397
+ return wrapSensitive(outputAst, mapped);
392
398
  });
393
399
  export const StripeProtocol = Layer.succeed(API.Protocol, API.Protocol.of({
394
400
  // Erase encode's Credentials requirement (see comment above).
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { StripeParseError } from "./errors.ts";
2
+ import type { StripeOpError } from "./protocol.ts";
3
+ export declare const parseErrorIsDeclared: [StripeParseError] extends [StripeOpError] ? true : false;
4
+ //# sourceMappingURL=response-validation.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-validation.test.d.ts","sourceRoot":"","sources":["../src/response-validation.test.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AA0CnD,eAAO,MAAM,oBAAoB,EAAE,CAAC,gBAAgB,CAAC,SAAS,CAAC,aAAa,CAAC,GACzE,IAAI,GACJ,KAAY,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { describe, expect, test } from "bun:test";
2
+ import { runValidationModes } from "@distilled.cloud/core/testing";
3
+ import * as Effect from "effect/Effect";
4
+ import { credentials } from "./credentials.js";
5
+ import { StripeParseError } from "./errors.js";
6
+ import * as Retry from "./retry.js";
7
+ import { GetBalance } from "./services/stripe.js";
8
+ // GetBalance declares `{ object; available; pending; livemode; … }`.
9
+ const run = (body) => runValidationModes(GetBalance({}).pipe(Retry.none, Effect.provide(credentials({ apiKey: "sk_test_123" }))), { body });
10
+ describe("Stripe response validation", () => {
11
+ test("a matching body succeeds unchanged in both modes", async () => {
12
+ const body = {
13
+ object: "balance",
14
+ available: [],
15
+ pending: [],
16
+ livemode: false,
17
+ };
18
+ const { lenient, strict } = await run(JSON.stringify(body));
19
+ expect(lenient).toMatchObject({ _tag: "Success", success: body });
20
+ expect(strict).toMatchObject({ _tag: "Success", success: body });
21
+ });
22
+ test("a body missing required members: lenient returns it, strict fails", async () => {
23
+ const body = {};
24
+ const { lenient, strict } = await run(JSON.stringify(body));
25
+ expect(lenient).toMatchObject({ _tag: "Success", success: body });
26
+ expect(strict._tag).toBe("Failure");
27
+ expect(strict.failure).toBeInstanceOf(StripeParseError);
28
+ });
29
+ test("a non-JSON body: lenient returns the text, strict fails", async () => {
30
+ const { lenient, strict } = await run("not json");
31
+ expect(lenient).toMatchObject({ _tag: "Success", success: "not json" });
32
+ expect(strict._tag).toBe("Failure");
33
+ expect(strict.failure).toBeInstanceOf(StripeParseError);
34
+ });
35
+ });
36
+ // StripeParseError is part of every operation's declared error type.
37
+ export const parseErrorIsDeclared = true;
38
+ //# sourceMappingURL=response-validation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-validation.test.js","sourceRoot":"","sources":["../src/response-validation.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAGlD,qEAAqE;AACrE,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAC3B,kBAAkB,CAChB,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,CACjB,KAAK,CAAC,IAAI,EACV,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC,CACvD,EACD,EAAE,IAAI,EAAE,CACT,CAAC;AAEJ,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,IAAI,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,IAAI,GAAG;YACX,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,EAAE;YACX,QAAQ,EAAE,KAAK;SAChB,CAAC;QACF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,IAAI,GAAG,EAAE,CAAC;QAChB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,CAAE,MAAc,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,CAAE,MAAc,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,qEAAqE;AACrE,MAAM,CAAC,MAAM,oBAAoB,GAErB,IAAI,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@distilled.cloud/stripe",
3
- "version": "1.0.0-rc.12",
3
+ "version": "1.0.0-rc.13",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/alchemy-run/distilled",
@@ -70,15 +70,15 @@
70
70
  }
71
71
  },
72
72
  "dependencies": {
73
- "@distilled.cloud/core": "1.0.0-rc.12"
73
+ "@distilled.cloud/core": "1.0.0-rc.13"
74
74
  },
75
75
  "devDependencies": {
76
76
  "@types/bun": "1.3.14",
77
77
  "@types/node": "26.2.0",
78
- "@effect/platform-bun": ">=4.0.0-rc.115 || >=4.0.0"
78
+ "@effect/platform-bun": "^4.0.0"
79
79
  },
80
80
  "peerDependencies": {
81
- "effect": ">=4.0.0-rc.115 || >=4.0.0"
81
+ "effect": "^4.0.0"
82
82
  },
83
83
  "scripts": {
84
84
  "build": "tsc -b",
package/src/protocol.ts CHANGED
@@ -35,11 +35,11 @@ import * as Layer from "effect/Layer";
35
35
  import * as Option from "effect/Option";
36
36
  import * as Redacted from "effect/Redacted";
37
37
  import type * as AST from "effect/SchemaAST";
38
- import type * as HttpClient from "effect/unstable/http/HttpClient";
39
- import type * as HttpClientError from "effect/unstable/http/HttpClientError";
40
- import * as HttpBody from "effect/unstable/http/HttpBody";
41
- import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";
42
- import type * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";
38
+ import type * as HttpClient from "effect/http/HttpClient";
39
+ import type * as HttpClientError from "effect/http/HttpClientError";
40
+ import * as HttpBody from "effect/http/HttpBody";
41
+ import * as HttpClientRequest from "effect/http/HttpClientRequest";
42
+ import type * as HttpClientResponse from "effect/http/HttpClientResponse";
43
43
  import * as API from "@distilled.cloud/core/api";
44
44
  import {
45
45
  buildRequest,
@@ -66,6 +66,7 @@ import {
66
66
  NotFound,
67
67
  UnprocessableEntity,
68
68
  } from "@distilled.cloud/core/errors";
69
+ import { validateResponse } from "@distilled.cloud/core/response-validation";
69
70
  import { parseRetryAfterForStatus } from "@distilled.cloud/core/retry-after";
70
71
  import { Credentials, type Config } from "./credentials.ts";
71
72
  import {
@@ -576,15 +577,24 @@ const decode = ({
576
577
  const message =
577
578
  stripeErrorMessage(errorBody) ??
578
579
  (nonJson && text.trim() ? text.trim() : `HTTP ${status}`);
579
- const typed = matchTypedError(errorClasses, status, [{ message }]);
580
+ const typed = matchTypedError(errorClasses, status, [{ message }], {
581
+ body: nonJson ? text : json,
582
+ headers,
583
+ });
580
584
  if (typed !== undefined) return yield* fail(typed);
581
585
  return yield* fail(matchStripeError(status, errorBody, headers));
582
586
  }
583
587
 
584
588
  // 2xx: the response body IS the payload (no envelope). Wire→TS key
585
589
  // mapping is schema-driven; sensitive members come back Redacted.
590
+ // Strict mode checks the mapped body against the output schema first.
586
591
  const body: unknown = nonJson ? text : (json ?? {});
587
- return wrapSensitive(outputAst, mapKeys(outputAst, body, "decode"));
592
+ const mapped = yield* validateResponse(
593
+ outputAst,
594
+ mapKeys(outputAst, body, "decode"),
595
+ (cause) => new StripeParseError({ body: nonJson ? text : json, cause }),
596
+ ).pipe(Effect.catch(fail));
597
+ return wrapSensitive(outputAst, mapped);
588
598
  });
589
599
 
590
600
  export const StripeProtocol: Layer.Layer<API.Protocol> = Layer.succeed(
@@ -0,0 +1,52 @@
1
+ import { describe, expect, test } from "bun:test";
2
+ import { runValidationModes } from "@distilled.cloud/core/testing";
3
+ import * as Effect from "effect/Effect";
4
+ import { credentials } from "./credentials.ts";
5
+ import { StripeParseError } from "./errors.ts";
6
+ import * as Retry from "./retry.ts";
7
+ import { GetBalance } from "./services/stripe.ts";
8
+ import type { StripeOpError } from "./protocol.ts";
9
+
10
+ // GetBalance declares `{ object; available; pending; livemode; … }`.
11
+ const run = (body: string) =>
12
+ runValidationModes(
13
+ GetBalance({}).pipe(
14
+ Retry.none,
15
+ Effect.provide(credentials({ apiKey: "sk_test_123" })),
16
+ ),
17
+ { body },
18
+ );
19
+
20
+ describe("Stripe response validation", () => {
21
+ test("a matching body succeeds unchanged in both modes", async () => {
22
+ const body = {
23
+ object: "balance",
24
+ available: [],
25
+ pending: [],
26
+ livemode: false,
27
+ };
28
+ const { lenient, strict } = await run(JSON.stringify(body));
29
+ expect(lenient).toMatchObject({ _tag: "Success", success: body });
30
+ expect(strict).toMatchObject({ _tag: "Success", success: body });
31
+ });
32
+
33
+ test("a body missing required members: lenient returns it, strict fails", async () => {
34
+ const body = {};
35
+ const { lenient, strict } = await run(JSON.stringify(body));
36
+ expect(lenient).toMatchObject({ _tag: "Success", success: body });
37
+ expect(strict._tag).toBe("Failure");
38
+ expect((strict as any).failure).toBeInstanceOf(StripeParseError);
39
+ });
40
+
41
+ test("a non-JSON body: lenient returns the text, strict fails", async () => {
42
+ const { lenient, strict } = await run("not json");
43
+ expect(lenient).toMatchObject({ _tag: "Success", success: "not json" });
44
+ expect(strict._tag).toBe("Failure");
45
+ expect((strict as any).failure).toBeInstanceOf(StripeParseError);
46
+ });
47
+ });
48
+
49
+ // StripeParseError is part of every operation's declared error type.
50
+ export const parseErrorIsDeclared: [StripeParseError] extends [StripeOpError]
51
+ ? true
52
+ : false = true;