@distilled.cloud/stripe 1.0.0-rc.13 → 1.0.0-rc.14
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/credentials.d.ts +2 -2
- package/lib/credentials.d.ts.map +1 -1
- package/lib/credentials.js +2 -2
- package/lib/credentials.js.map +1 -1
- package/lib/errors.d.ts +1 -1
- package/lib/errors.d.ts.map +1 -1
- package/lib/errors.js +1 -1
- package/lib/errors.js.map +1 -1
- package/lib/protocol.d.ts +3 -3
- package/lib/protocol.d.ts.map +1 -1
- package/lib/protocol.js +13 -18
- package/lib/protocol.js.map +1 -1
- package/lib/protocol.test.d.ts +2 -0
- package/lib/protocol.test.d.ts.map +1 -0
- package/lib/protocol.test.js +353 -0
- package/lib/protocol.test.js.map +1 -0
- package/lib/retry.d.ts +1 -1
- package/lib/retry.d.ts.map +1 -1
- package/lib/retry.js +1 -1
- package/lib/retry.js.map +1 -1
- package/lib/services/stripe.d.ts +4970 -1571
- package/lib/services/stripe.d.ts.map +1 -1
- package/lib/services/stripe.js +5608 -6855
- package/lib/services/stripe.js.map +1 -1
- package/lib/traits.d.ts.map +1 -1
- package/lib/traits.js +1 -1
- package/lib/traits.js.map +1 -1
- package/lib/webhooks.d.ts.map +1 -1
- package/lib/webhooks.js +4 -4
- package/lib/webhooks.js.map +1 -1
- package/package.json +12 -10
- package/src/credentials.ts +6 -7
- package/src/errors.ts +20 -29
- package/src/protocol.test.ts +519 -0
- package/src/protocol.ts +54 -104
- package/src/retry.ts +2 -8
- package/src/services/stripe.ts +40402 -47044
- package/src/traits.ts +1 -4
- package/src/webhooks.ts +11 -30
- package/lib/response-validation.test.d.ts +0 -4
- package/lib/response-validation.test.d.ts.map +0 -1
- package/lib/response-validation.test.js +0 -38
- package/lib/response-validation.test.js.map +0 -1
- package/src/response-validation.test.ts +0 -52
package/lib/traits.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traits.d.ts","sourceRoot":"","sources":["../src/traits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"traits.d.ts","sourceRoot":"","sources":["../src/traits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAoB,KAAK,SAAS,IAAI,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEhG,OAAO,EACL,IAAI,EACJ,MAAM,EACN,KAAK,EACL,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,YAAY,EACjB,UAAU,EACV,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,WAAW,EACX,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,qCAAqC,CAAC;AAE7C;;;GAGG;AACH,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC;IACnE,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,GAAG,WAAW,CAAC;CACxD;AAED,4DAA4D;AAC5D,eAAO,MAAM,IAAI,UAAW,SAAS,qDAAqC,CAAC"}
|
package/lib/traits.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* expansion), which core's `HttpTrait` doesn't model — the Stripe protocol
|
|
9
9
|
* keys its body encoding on `contentType: "form-urlencoded"`.
|
|
10
10
|
*/
|
|
11
|
-
import { Http as CoreHttp
|
|
11
|
+
import { Http as CoreHttp } from "@distilled.cloud/core/trait";
|
|
12
12
|
export { Body, Header, Query, Label, ResponseCode, HttpBody, FormDataFile, KeyDictionary, UnionCases, applyErrorMatchers, getErrorMatchers, bodySymbol, headerSymbol, querySymbol, labelSymbol, httpSymbol, responseCodeSymbol, httpBodySymbol, formDataFileSymbol, keyDictionarySymbol, unionCasesSymbol, } from "@distilled.cloud/core/trait";
|
|
13
13
|
export { RawResponse, RawResponseRoot, SensitiveValue, rawResponseSymbol, rawResponseRootSymbol, sensitiveValueSymbol, } from "@distilled.cloud/core/protocol-rest";
|
|
14
14
|
/** Operation-level HTTP binding (see {@link HttpTrait}). */
|
package/lib/traits.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traits.js","sourceRoot":"","sources":["../src/traits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"traits.js","sourceRoot":"","sources":["../src/traits.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAmC,MAAM,6BAA6B,CAAC;AAEhG,OAAO,EACL,IAAI,EACJ,MAAM,EACN,KAAK,EACL,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAEhB,UAAU,EACV,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,WAAW,EACX,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,qCAAqC,CAAC;AAU7C,4DAA4D;AAC5D,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAsB,CAAC,CAAC"}
|
package/lib/webhooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"webhooks.d.ts","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,8BAA8B,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAC;AAE1F,eAAO,MAAM,iCAAiC,MAAM,CAAC;AAErD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;AAC/D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAE/D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChD;AAED,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB;CAAG;AAiMxE,eAAO,MAAM,eAAe,sDAKzB,sBAAsB,KAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,2BAA2B,CAqBvE,CAAC;AAKL,eAAO,MAAM,cAAc,sDAKxB,qBAAqB,KAAG,MAAM,CAAC,MAAM,CACtC,WAAW,EACX,2BAA2B,GAAG,8BAA8B,CAmB3D,CAAC"}
|
package/lib/webhooks.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as Effect from "effect/Effect";
|
|
2
2
|
import * as Redacted from "effect/Redacted";
|
|
3
|
-
import { StripeWebhookPayloadParseError, StripeWebhookSignatureError
|
|
3
|
+
import { StripeWebhookPayloadParseError, StripeWebhookSignatureError } from "./errors.js";
|
|
4
4
|
export const DEFAULT_WEBHOOK_TOLERANCE_SECONDS = 300;
|
|
5
5
|
const textEncoder = new TextEncoder();
|
|
6
6
|
const textDecoder = new TextDecoder("utf-8", { fatal: true });
|
|
@@ -19,7 +19,7 @@ const payloadToString = (payload) => {
|
|
|
19
19
|
}
|
|
20
20
|
return textDecoder.decode(payloadToBytes(payload));
|
|
21
21
|
};
|
|
22
|
-
const
|
|
22
|
+
const redactSecret = (secret) => Redacted.isRedacted(secret) ? secret : Redacted.make(secret);
|
|
23
23
|
const parseSignatureHeader = (signature) => {
|
|
24
24
|
if (signature == null || signature.trim() === "") {
|
|
25
25
|
return new StripeWebhookSignatureError({
|
|
@@ -72,7 +72,7 @@ const signedPayloadBytes = (timestamp, payload) => {
|
|
|
72
72
|
};
|
|
73
73
|
const hmacSha256 = (secret, timestamp, payload) => Effect.tryPromise({
|
|
74
74
|
try: async () => {
|
|
75
|
-
const key = await crypto.subtle.importKey("raw", textEncoder.encode(secret), { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
|
|
75
|
+
const key = await crypto.subtle.importKey("raw", textEncoder.encode(Redacted.value(secret)), { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
|
|
76
76
|
const signature = await crypto.subtle.sign("HMAC", key, signedPayloadBytes(timestamp, payload));
|
|
77
77
|
return new Uint8Array(signature);
|
|
78
78
|
},
|
|
@@ -133,7 +133,7 @@ export const verifySignature = ({ payload, signature, secret, toleranceSeconds =
|
|
|
133
133
|
if (parsed instanceof StripeWebhookSignatureError) {
|
|
134
134
|
return yield* Effect.fail(parsed);
|
|
135
135
|
}
|
|
136
|
-
const expectedSignature = yield* hmacSha256(
|
|
136
|
+
const expectedSignature = yield* hmacSha256(redactSecret(secret), parsed.timestamp, payload);
|
|
137
137
|
if (!hasMatchingSignature(expectedSignature, parsed.signatures)) {
|
|
138
138
|
return yield* Effect.fail(new StripeWebhookSignatureError({
|
|
139
139
|
message: "No v1 signature matches the expected Stripe webhook signature",
|
package/lib/webhooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@distilled.cloud/stripe",
|
|
3
|
-
"version": "1.0.0-rc.
|
|
3
|
+
"version": "1.0.0-rc.14",
|
|
4
|
+
"license": "Apache-2.0",
|
|
4
5
|
"repository": {
|
|
5
6
|
"type": "git",
|
|
6
7
|
"url": "https://github.com/alchemy-run/distilled",
|
|
7
8
|
"directory": "packages/stripe"
|
|
8
9
|
},
|
|
9
|
-
"license": "Apache-2.0",
|
|
10
|
-
"type": "module",
|
|
11
|
-
"sideEffects": false,
|
|
12
10
|
"files": [
|
|
13
11
|
"lib",
|
|
14
12
|
"src"
|
|
15
13
|
],
|
|
14
|
+
"type": "module",
|
|
15
|
+
"sideEffects": false,
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
18
18
|
"types": "./lib/index.d.ts",
|
|
@@ -70,20 +70,22 @@
|
|
|
70
70
|
}
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
|
-
"@distilled.cloud/core": "1.0.0-rc.
|
|
73
|
+
"@distilled.cloud/core": "1.0.0-rc.14"
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
|
-
"@types/
|
|
77
|
-
"@types/node": "26.2.0",
|
|
78
|
-
"@effect/platform-bun": "^4.0.0"
|
|
76
|
+
"@types/node": "26.2.0"
|
|
79
77
|
},
|
|
80
78
|
"peerDependencies": {
|
|
81
79
|
"effect": "^4.0.0"
|
|
82
80
|
},
|
|
81
|
+
"distilled": {
|
|
82
|
+
"generatedAt": "2026-10-06",
|
|
83
|
+
"specUpdatedAt": "2026-09-30"
|
|
84
|
+
},
|
|
83
85
|
"scripts": {
|
|
84
86
|
"build": "tsc -b",
|
|
85
|
-
"convert": "bun scripts/convert.ts",
|
|
86
|
-
"generate": "bun scripts/convert.ts && bun scripts/generate.ts",
|
|
87
|
+
"convert": "node --conditions=bun scripts/convert.ts",
|
|
88
|
+
"generate": "node --conditions=bun scripts/convert.ts && node --conditions=bun scripts/generate.ts",
|
|
87
89
|
"typecheck": "tsc -p tsconfig.json",
|
|
88
90
|
"specs:fetch": "git submodule update --force --init --depth=1 specs/spec-mirror-stripe",
|
|
89
91
|
"specs:update": "git submodule update --remote --force --depth=1 specs/spec-mirror-stripe"
|
package/src/credentials.ts
CHANGED
|
@@ -19,10 +19,9 @@ export interface Config {
|
|
|
19
19
|
readonly apiBaseUrl: string;
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
export class Credentials extends Context.Service<
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
>()("StripeCredentials") {}
|
|
22
|
+
export class Credentials extends Context.Service<Credentials, Effect.Effect<Config>>()(
|
|
23
|
+
"StripeCredentials",
|
|
24
|
+
) {}
|
|
26
25
|
|
|
27
26
|
const envConfig = EffectConfig.all({
|
|
28
27
|
apiKey: EffectConfig.String("STRIPE_API_KEY"),
|
|
@@ -45,15 +44,15 @@ export const CredentialsFromEnv = Layer.succeed(
|
|
|
45
44
|
),
|
|
46
45
|
);
|
|
47
46
|
|
|
48
|
-
/** Convenience layer from a
|
|
47
|
+
/** Convenience layer from a redacted API key + optional base URL. */
|
|
49
48
|
export const credentials = (config: {
|
|
50
|
-
readonly apiKey: string
|
|
49
|
+
readonly apiKey: Redacted.Redacted<string>;
|
|
51
50
|
readonly apiBaseUrl?: string;
|
|
52
51
|
}): Layer.Layer<Credentials> =>
|
|
53
52
|
Layer.succeed(
|
|
54
53
|
Credentials,
|
|
55
54
|
Effect.succeed({
|
|
56
|
-
apiKey:
|
|
55
|
+
apiKey: config.apiKey,
|
|
57
56
|
apiBaseUrl: config.apiBaseUrl ?? DEFAULT_API_BASE_URL,
|
|
58
57
|
}),
|
|
59
58
|
);
|
package/src/errors.ts
CHANGED
|
@@ -25,25 +25,22 @@ export {
|
|
|
25
25
|
} from "@distilled.cloud/core/errors";
|
|
26
26
|
export type { DefaultErrors } from "@distilled.cloud/core/errors";
|
|
27
27
|
|
|
28
|
-
import * as Schema from "effect/Schema";
|
|
29
28
|
import * as Category from "@distilled.cloud/core/category";
|
|
29
|
+
import * as Schema from "effect/Schema";
|
|
30
30
|
|
|
31
31
|
/**
|
|
32
32
|
* Payment error — returned when a payment request fails (HTTP 402).
|
|
33
33
|
* The parameters were valid but the request failed (e.g., card declined).
|
|
34
34
|
*/
|
|
35
|
-
export class PaymentError extends Schema.TaggedError<PaymentError>()(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
request_log_url: Schema.optional(Schema.String),
|
|
45
|
-
},
|
|
46
|
-
).pipe(Category.withBadRequestError) {}
|
|
35
|
+
export class PaymentError extends Schema.TaggedError<PaymentError>()("PaymentError", {
|
|
36
|
+
message: Schema.optional(Schema.String),
|
|
37
|
+
code: Schema.optional(Schema.String),
|
|
38
|
+
decline_code: Schema.optional(Schema.String),
|
|
39
|
+
charge: Schema.optional(Schema.String),
|
|
40
|
+
param: Schema.optional(Schema.String),
|
|
41
|
+
doc_url: Schema.optional(Schema.String),
|
|
42
|
+
request_log_url: Schema.optional(Schema.String),
|
|
43
|
+
}).pipe(Category.withBadRequestError) {}
|
|
47
44
|
|
|
48
45
|
/**
|
|
49
46
|
* Card error — returned when a card cannot be charged.
|
|
@@ -68,15 +65,12 @@ export class CardError extends Schema.TaggedError<CardError>()("CardError", {
|
|
|
68
65
|
* on a request that does not match the first request's API endpoint and parameters.
|
|
69
66
|
* Stripe error type: "idempotency_error"
|
|
70
67
|
*/
|
|
71
|
-
export class IdempotencyError extends Schema.TaggedError<IdempotencyError>()(
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
request_log_url: Schema.optional(Schema.String),
|
|
78
|
-
},
|
|
79
|
-
).pipe(Category.withConflictError) {}
|
|
68
|
+
export class IdempotencyError extends Schema.TaggedError<IdempotencyError>()("IdempotencyError", {
|
|
69
|
+
message: Schema.optional(Schema.String),
|
|
70
|
+
code: Schema.optional(Schema.String),
|
|
71
|
+
doc_url: Schema.optional(Schema.String),
|
|
72
|
+
request_log_url: Schema.optional(Schema.String),
|
|
73
|
+
}).pipe(Category.withConflictError) {}
|
|
80
74
|
|
|
81
75
|
/**
|
|
82
76
|
* Invalid request error — returned when the request has invalid parameters.
|
|
@@ -139,13 +133,10 @@ export class UnknownStripeError extends Schema.TaggedError<UnknownStripeError>()
|
|
|
139
133
|
).pipe(Category.withServerError) {}
|
|
140
134
|
|
|
141
135
|
// Schema parse error wrapper
|
|
142
|
-
export class StripeParseError extends Schema.TaggedError<StripeParseError>()(
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
cause: Schema.Unknown,
|
|
147
|
-
},
|
|
148
|
-
).pipe(Category.withParseError) {}
|
|
136
|
+
export class StripeParseError extends Schema.TaggedError<StripeParseError>()("StripeParseError", {
|
|
137
|
+
body: Schema.Unknown,
|
|
138
|
+
cause: Schema.Unknown,
|
|
139
|
+
}).pipe(Category.withParseError) {}
|
|
149
140
|
|
|
150
141
|
/**
|
|
151
142
|
* Stripe webhook signature verification failed.
|