@distilled.cloud/core 0.30.3 → 1.0.0-rc.10
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/LICENSE +201 -0
- package/lib/api.d.ts +165 -0
- package/lib/api.d.ts.map +1 -0
- package/lib/api.js +190 -0
- package/lib/api.js.map +1 -0
- package/lib/category.d.ts +4 -4
- package/lib/category.js +4 -4
- package/lib/codegen/boolean-string-enums.d.ts +36 -0
- package/lib/codegen/boolean-string-enums.d.ts.map +1 -0
- package/lib/codegen/boolean-string-enums.js +94 -0
- package/lib/codegen/boolean-string-enums.js.map +1 -0
- package/lib/codegen/boolean-string-enums.test.d.ts +2 -0
- package/lib/codegen/boolean-string-enums.test.d.ts.map +1 -0
- package/lib/codegen/boolean-string-enums.test.js +147 -0
- package/lib/codegen/boolean-string-enums.test.js.map +1 -0
- package/lib/codegen/cli.d.ts +79 -0
- package/lib/codegen/cli.d.ts.map +1 -0
- package/lib/codegen/cli.js +149 -0
- package/lib/codegen/cli.js.map +1 -0
- package/lib/codegen/emit.d.ts +125 -0
- package/lib/codegen/emit.d.ts.map +1 -0
- package/lib/codegen/emit.js +101 -0
- package/lib/codegen/emit.js.map +1 -0
- package/lib/codegen/format.d.ts +23 -0
- package/lib/codegen/format.d.ts.map +1 -0
- package/lib/codegen/format.js +28 -0
- package/lib/codegen/format.js.map +1 -0
- package/lib/codegen/generator.d.ts +334 -0
- package/lib/codegen/generator.d.ts.map +1 -0
- package/lib/codegen/generator.js +813 -0
- package/lib/codegen/generator.js.map +1 -0
- package/lib/codegen/graph.d.ts +36 -0
- package/lib/codegen/graph.d.ts.map +1 -0
- package/lib/codegen/graph.js +136 -0
- package/lib/codegen/graph.js.map +1 -0
- package/lib/codegen/graphql-client.d.ts +62 -0
- package/lib/codegen/graphql-client.d.ts.map +1 -0
- package/lib/codegen/graphql-client.js +294 -0
- package/lib/codegen/graphql-client.js.map +1 -0
- package/lib/codegen/graphql-client.test.d.ts +2 -0
- package/lib/codegen/graphql-client.test.d.ts.map +1 -0
- package/lib/codegen/graphql-client.test.js +311 -0
- package/lib/codegen/graphql-client.test.js.map +1 -0
- package/lib/codegen/graphql.d.ts +207 -0
- package/lib/codegen/graphql.d.ts.map +1 -0
- package/lib/codegen/graphql.js +799 -0
- package/lib/codegen/graphql.js.map +1 -0
- package/lib/codegen/members.d.ts +25 -0
- package/lib/codegen/members.d.ts.map +1 -0
- package/lib/codegen/members.js +55 -0
- package/lib/codegen/members.js.map +1 -0
- package/lib/codegen/naming.d.ts +29 -0
- package/lib/codegen/naming.d.ts.map +1 -0
- package/lib/codegen/naming.js +74 -0
- package/lib/codegen/naming.js.map +1 -0
- package/lib/codegen/openapi-cli.d.ts +52 -0
- package/lib/codegen/openapi-cli.d.ts.map +1 -0
- package/lib/codegen/openapi-cli.js +109 -0
- package/lib/codegen/openapi-cli.js.map +1 -0
- package/lib/codegen/openapi.d.ts +178 -0
- package/lib/codegen/openapi.d.ts.map +1 -0
- package/lib/codegen/openapi.js +1377 -0
- package/lib/codegen/openapi.js.map +1 -0
- package/lib/codegen/operations.d.ts +24 -0
- package/lib/codegen/operations.d.ts.map +1 -0
- package/lib/codegen/operations.js +56 -0
- package/lib/codegen/operations.js.map +1 -0
- package/lib/codegen/pagination.d.ts +39 -0
- package/lib/codegen/pagination.d.ts.map +1 -0
- package/lib/codegen/pagination.js +33 -0
- package/lib/codegen/pagination.js.map +1 -0
- package/lib/codegen/patches.d.ts +65 -0
- package/lib/codegen/patches.d.ts.map +1 -0
- package/lib/codegen/patches.js +236 -0
- package/lib/codegen/patches.js.map +1 -0
- package/lib/codegen/patches.test.d.ts +2 -0
- package/lib/codegen/patches.test.d.ts.map +1 -0
- package/lib/codegen/patches.test.js +105 -0
- package/lib/codegen/patches.test.js.map +1 -0
- package/lib/codegen/prelude.d.ts +15 -0
- package/lib/codegen/prelude.d.ts.map +1 -0
- package/lib/codegen/prelude.js +60 -0
- package/lib/codegen/prelude.js.map +1 -0
- package/lib/codegen/proto.d.ts +121 -0
- package/lib/codegen/proto.d.ts.map +1 -0
- package/lib/codegen/proto.js +962 -0
- package/lib/codegen/proto.js.map +1 -0
- package/lib/codegen/rewrite-operation-ids.d.ts +131 -0
- package/lib/codegen/rewrite-operation-ids.d.ts.map +1 -0
- package/lib/codegen/rewrite-operation-ids.js +1079 -0
- package/lib/codegen/rewrite-operation-ids.js.map +1 -0
- package/lib/codegen/rewrite-operation-ids.test.d.ts +2 -0
- package/lib/codegen/rewrite-operation-ids.test.d.ts.map +1 -0
- package/lib/codegen/rewrite-operation-ids.test.js +533 -0
- package/lib/codegen/rewrite-operation-ids.test.js.map +1 -0
- package/lib/codegen/spec-path.d.ts +16 -0
- package/lib/codegen/spec-path.d.ts.map +1 -0
- package/lib/codegen/spec-path.js +101 -0
- package/lib/codegen/spec-path.js.map +1 -0
- package/lib/error-category.d.ts +28 -0
- package/lib/error-category.d.ts.map +1 -0
- package/lib/error-category.js +46 -0
- package/lib/error-category.js.map +1 -0
- package/lib/errors.d.ts +1 -0
- package/lib/errors.d.ts.map +1 -1
- package/lib/errors.js +18 -13
- package/lib/errors.js.map +1 -1
- package/lib/graphql.d.ts +284 -0
- package/lib/graphql.d.ts.map +1 -0
- package/lib/graphql.fixture.d.ts +249 -0
- package/lib/graphql.fixture.d.ts.map +1 -0
- package/lib/graphql.fixture.js +240 -0
- package/lib/graphql.fixture.js.map +1 -0
- package/lib/graphql.js +718 -0
- package/lib/graphql.js.map +1 -0
- package/lib/graphql.test.d.ts +2 -0
- package/lib/graphql.test.d.ts.map +1 -0
- package/lib/graphql.test.js +780 -0
- package/lib/graphql.test.js.map +1 -0
- package/lib/graphql.types.d.ts +2 -0
- package/lib/graphql.types.d.ts.map +1 -0
- package/lib/graphql.types.js +45 -0
- package/lib/graphql.types.js.map +1 -0
- package/lib/json-patch.d.ts +30 -30
- package/lib/json-patch.d.ts.map +1 -1
- package/lib/json-patch.js +73 -107
- package/lib/json-patch.js.map +1 -1
- package/lib/pagination.d.ts +77 -51
- package/lib/pagination.d.ts.map +1 -1
- package/lib/pagination.js +162 -94
- package/lib/pagination.js.map +1 -1
- package/lib/protocol-http.d.ts +74 -0
- package/lib/protocol-http.d.ts.map +1 -0
- package/lib/protocol-http.js +590 -0
- package/lib/protocol-http.js.map +1 -0
- package/lib/protocol-http.test.d.ts +2 -0
- package/lib/protocol-http.test.d.ts.map +1 -0
- package/lib/protocol-http.test.js +88 -0
- package/lib/protocol-http.test.js.map +1 -0
- package/lib/protocol-rest.d.ts +134 -0
- package/lib/protocol-rest.d.ts.map +1 -0
- package/lib/protocol-rest.js +256 -0
- package/lib/protocol-rest.js.map +1 -0
- package/lib/retry.d.ts +8 -2
- package/lib/retry.d.ts.map +1 -1
- package/lib/retry.js +22 -16
- package/lib/retry.js.map +1 -1
- package/lib/schema.d.ts +8 -9
- package/lib/schema.d.ts.map +1 -1
- package/lib/schema.js +8 -9
- package/lib/schema.js.map +1 -1
- package/lib/trait.d.ts +174 -0
- package/lib/trait.d.ts.map +1 -0
- package/lib/trait.js +123 -0
- package/lib/trait.js.map +1 -0
- package/package.json +24 -78
- package/src/api.ts +460 -0
- package/src/category.ts +4 -4
- package/src/codegen/boolean-string-enums.test.ts +168 -0
- package/src/codegen/boolean-string-enums.ts +106 -0
- package/src/codegen/cli.ts +285 -0
- package/src/codegen/emit.ts +203 -0
- package/src/codegen/format.ts +47 -0
- package/src/codegen/generator.ts +1283 -0
- package/src/codegen/graph.ts +151 -0
- package/src/codegen/graphql-client.test.ts +386 -0
- package/src/codegen/graphql-client.ts +419 -0
- package/src/codegen/graphql.ts +1217 -0
- package/src/codegen/members.ts +71 -0
- package/src/codegen/naming.ts +86 -0
- package/src/codegen/openapi-cli.ts +182 -0
- package/src/codegen/openapi.ts +1689 -0
- package/src/codegen/operations.ts +76 -0
- package/src/codegen/pagination.ts +71 -0
- package/src/codegen/patches.test.ts +130 -0
- package/src/codegen/patches.ts +291 -0
- package/src/codegen/prelude.ts +70 -0
- package/src/codegen/proto.ts +1128 -0
- package/src/codegen/rewrite-operation-ids.test.ts +563 -0
- package/src/codegen/rewrite-operation-ids.ts +1206 -0
- package/src/codegen/spec-path.ts +115 -0
- package/src/error-category.ts +84 -0
- package/src/errors.ts +22 -25
- package/src/graphql.fixture.ts +371 -0
- package/src/graphql.test.ts +974 -0
- package/src/graphql.ts +1321 -0
- package/src/graphql.types.ts +185 -0
- package/src/json-patch.ts +95 -122
- package/src/pagination.ts +217 -146
- package/src/protocol-http.test.ts +107 -0
- package/src/protocol-http.ts +735 -0
- package/src/protocol-rest.ts +391 -0
- package/src/retry.ts +21 -22
- package/src/schema.ts +9 -10
- package/src/trait.ts +274 -0
- package/README.md +0 -30
- package/lib/client.d.ts +0 -167
- package/lib/client.d.ts.map +0 -1
- package/lib/client.js +0 -659
- package/lib/client.js.map +0 -1
- package/lib/schemas.d.ts +0 -60
- package/lib/schemas.d.ts.map +0 -1
- package/lib/schemas.js +0 -79
- package/lib/schemas.js.map +0 -1
- package/lib/sensitive.d.ts +0 -71
- package/lib/sensitive.d.ts.map +0 -1
- package/lib/sensitive.js +0 -96
- package/lib/sensitive.js.map +0 -1
- package/lib/traits.d.ts +0 -421
- package/lib/traits.d.ts.map +0 -1
- package/lib/traits.js +0 -737
- package/lib/traits.js.map +0 -1
- package/src/client.ts +0 -1177
- package/src/schemas.ts +0 -128
- package/src/sensitive.ts +0 -119
- package/src/traits.ts +0 -996
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol-http.js","sourceRoot":"","sources":["../src/protocol-http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol-http.test.d.ts","sourceRoot":"","sources":["../src/protocol-http.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { describe, expect, test } from "bun:test";
|
|
2
|
+
import { buildRequest, mapKeys } from "./protocol-http.js";
|
|
3
|
+
import * as S from "./schema.js";
|
|
4
|
+
import * as T from "./trait.js";
|
|
5
|
+
/**
|
|
6
|
+
* `T.StringEncoded()`: the member's TS type stays natural (boolean) but the
|
|
7
|
+
* wire carries its string spelling, for APIs that document the field as the
|
|
8
|
+
* enum `"true" | "false"` rather than a JSON boolean.
|
|
9
|
+
*/
|
|
10
|
+
const JsonInput = S.Struct({
|
|
11
|
+
flag: S.optional(S.Boolean.pipe(T.Body("flag"), T.StringEncoded())),
|
|
12
|
+
plain: S.optional(S.Boolean.pipe(T.Body("plain"))),
|
|
13
|
+
nullable: S.optional(S.NullOr(S.Boolean).pipe(T.Body("nullable"), T.StringEncoded())),
|
|
14
|
+
flags: S.optional(S.Array(S.Boolean).pipe(T.Body("flags"), T.StringEncoded())),
|
|
15
|
+
}).pipe(T.Http({ method: "POST", uri: "/things" }));
|
|
16
|
+
const jsonBodyOf = (input) => {
|
|
17
|
+
const request = buildRequest({
|
|
18
|
+
input,
|
|
19
|
+
inputAst: JsonInput.ast,
|
|
20
|
+
baseUrl: "https://example.test",
|
|
21
|
+
});
|
|
22
|
+
const body = request.body;
|
|
23
|
+
return JSON.parse(body.body ?? "{}");
|
|
24
|
+
};
|
|
25
|
+
describe("StringEncoded members", () => {
|
|
26
|
+
test("booleans serialize as their string spelling", () => {
|
|
27
|
+
expect(jsonBodyOf({ flag: true, plain: true })).toEqual({
|
|
28
|
+
flag: "true",
|
|
29
|
+
plain: true,
|
|
30
|
+
});
|
|
31
|
+
expect(jsonBodyOf({ flag: false, plain: false })).toEqual({
|
|
32
|
+
flag: "false",
|
|
33
|
+
plain: false,
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
test("a list stringifies element-wise", () => {
|
|
37
|
+
expect(jsonBodyOf({ flags: [true, false] })).toEqual({
|
|
38
|
+
flags: ["true", "false"],
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
test("null stays null and an omitted member stays omitted", () => {
|
|
42
|
+
expect(jsonBodyOf({ nullable: null })).toEqual({ nullable: null });
|
|
43
|
+
expect(jsonBodyOf({})).toEqual({});
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
describe("UnionCases decoding", () => {
|
|
47
|
+
const cases = [
|
|
48
|
+
["id", "type", "zoneName"],
|
|
49
|
+
["id", "type", "accountName"],
|
|
50
|
+
];
|
|
51
|
+
const merged = {
|
|
52
|
+
id: "1",
|
|
53
|
+
type: "account",
|
|
54
|
+
zoneName: "zone-a",
|
|
55
|
+
accountName: "acct-a",
|
|
56
|
+
};
|
|
57
|
+
const decode = (schema, value) => mapKeys(schema.ast, value, "decode");
|
|
58
|
+
test("the discriminator picks the case key sets cannot tell apart", () => {
|
|
59
|
+
const schema = S.Unknown.pipe(T.UnionCases(cases, { key: "type", values: ["zone", "account"] }));
|
|
60
|
+
expect(decode(schema, merged)).toEqual({
|
|
61
|
+
id: "1",
|
|
62
|
+
type: "account",
|
|
63
|
+
accountName: "acct-a",
|
|
64
|
+
});
|
|
65
|
+
expect(decode(schema, { ...merged, type: "zone" })).toEqual({
|
|
66
|
+
id: "1",
|
|
67
|
+
type: "zone",
|
|
68
|
+
zoneName: "zone-a",
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
test("an unknown tag falls back to key-set scoring", () => {
|
|
72
|
+
const schema = S.Unknown.pipe(T.UnionCases(cases, { key: "type", values: ["zone", "account"] }));
|
|
73
|
+
expect(decode(schema, { ...merged, type: "other", accountName: null })).toEqual({
|
|
74
|
+
id: "1",
|
|
75
|
+
type: "other",
|
|
76
|
+
zoneName: "zone-a",
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
test("without a discriminator the best-explaining case wins", () => {
|
|
80
|
+
const schema = S.Unknown.pipe(T.UnionCases(cases));
|
|
81
|
+
expect(decode(schema, { ...merged, zoneName: null })).toEqual({
|
|
82
|
+
id: "1",
|
|
83
|
+
type: "account",
|
|
84
|
+
accountName: "acct-a",
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
//# sourceMappingURL=protocol-http.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol-http.test.js","sourceRoot":"","sources":["../src/protocol-http.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic REST protocol factory for simple bearer/header-auth JSON APIs
|
|
3
|
+
* (Neon, Fly.io, PlanetScale, Supabase, Turso, …).
|
|
4
|
+
*
|
|
5
|
+
* `makeRestProtocol(options)` builds a core {@link API.Protocol} layer:
|
|
6
|
+
*
|
|
7
|
+
* request: credentials resolved from the CALLING fiber's context on every
|
|
8
|
+
* request (the layer itself is memoized per process — see
|
|
9
|
+
* `core/api`), auth headers + base URL from the provider's
|
|
10
|
+
* options, request built by `buildRequest` from
|
|
11
|
+
* `core/protocol-http` (deep-unwrapping any `Redacted` input
|
|
12
|
+
* values first)
|
|
13
|
+
*
|
|
14
|
+
* response: 2xx JSON → optional `transformResponse` → recursive wire→TS
|
|
15
|
+
* key mapping (`mapKeys`) → `Redacted` wrapping of members
|
|
16
|
+
* marked with {@link SensitiveValue}; non-2xx → typed error:
|
|
17
|
+
* per-op matcher classes (`matchTypedError`), then the status
|
|
18
|
+
* map (default `HTTP_STATUS_MAP`), then an `InternalServerError`
|
|
19
|
+
* for unmapped 5xx, then the provider's `unknownError` fallback
|
|
20
|
+
* — with `retryAfter` durations stamped from the standard hint
|
|
21
|
+
* headers on retryable statuses.
|
|
22
|
+
*
|
|
23
|
+
* Anything provider-specific (envelope quirks, bespoke error codes) belongs
|
|
24
|
+
* in the provider package — via these options or a hand-written protocol.
|
|
25
|
+
*/
|
|
26
|
+
import * as Effect from "effect/Effect";
|
|
27
|
+
import * as Layer from "effect/Layer";
|
|
28
|
+
import type * as AST from "effect/SchemaAST";
|
|
29
|
+
import * as API from "./api.ts";
|
|
30
|
+
export declare const sensitiveValueSymbol: unique symbol;
|
|
31
|
+
/**
|
|
32
|
+
* Marks a string member as sensitive (mirrors `smithy.api#sensitive`).
|
|
33
|
+
* The REST protocol wraps decoded values in `Redacted` on the way out and
|
|
34
|
+
* accepts `string | Redacted<string>` on the way in (unwrapped before
|
|
35
|
+
* serialization). Takes an ignored argument so generators can inline the
|
|
36
|
+
* smithy trait value (`T.SensitiveValue({})`).
|
|
37
|
+
*/
|
|
38
|
+
export declare const SensitiveValue: (_value?: unknown) => import("./trait.ts").Annotation;
|
|
39
|
+
export declare const rawResponseSymbol: unique symbol;
|
|
40
|
+
/**
|
|
41
|
+
* Marks the sole output member that carries a bare (array/scalar) response
|
|
42
|
+
* body (mirrors `com.distilled.openapi#rawResponse`).
|
|
43
|
+
*/
|
|
44
|
+
export declare const RawResponse: (_value?: unknown) => import("./trait.ts").Annotation;
|
|
45
|
+
export declare const rawResponseRootSymbol: unique symbol;
|
|
46
|
+
/**
|
|
47
|
+
* Marks a response schema whose ENTIRE value is the response body (the
|
|
48
|
+
* generator's `rootPipe` for synthesized bare-payload wrappers): the emitted
|
|
49
|
+
* response type IS the payload type and the protocol returns the mapped body
|
|
50
|
+
* directly.
|
|
51
|
+
*/
|
|
52
|
+
export declare const RawResponseRoot: () => import("./trait.ts").Annotation;
|
|
53
|
+
/**
|
|
54
|
+
* Deep-unwrap `Redacted` values in an input (plain objects/arrays only —
|
|
55
|
+
* class instances, files, and binary payloads pass through untouched).
|
|
56
|
+
* Sensitive input members accept `string | Redacted<string>`; the wire wants
|
|
57
|
+
* the raw string.
|
|
58
|
+
*/
|
|
59
|
+
export declare const unwrapRedactedDeep: (value: unknown) => unknown;
|
|
60
|
+
/**
|
|
61
|
+
* Walk a decoded (TS-named) value alongside its schema AST, wrapping members
|
|
62
|
+
* marked {@link SensitiveValue} in `Redacted`. Keys the schema doesn't model
|
|
63
|
+
* pass through verbatim.
|
|
64
|
+
*/
|
|
65
|
+
export declare const wrapSensitive: (ast: AST.AST, value: unknown) => unknown;
|
|
66
|
+
/** What the wire said about a failure, for the `unknownError` fallback. */
|
|
67
|
+
export interface RestErrorInfo {
|
|
68
|
+
readonly status: number;
|
|
69
|
+
/** Error code from the envelope (services vary between string and number). */
|
|
70
|
+
readonly code?: string | number;
|
|
71
|
+
readonly message: string;
|
|
72
|
+
/** Parsed JSON body, or the raw text when the body wasn't JSON. */
|
|
73
|
+
readonly body: unknown;
|
|
74
|
+
readonly headers: Record<string, string | undefined>;
|
|
75
|
+
}
|
|
76
|
+
export interface RestErrorEnvelope {
|
|
77
|
+
readonly code?: string | number;
|
|
78
|
+
readonly message?: string;
|
|
79
|
+
}
|
|
80
|
+
export interface RestProtocolOptions<C> {
|
|
81
|
+
/**
|
|
82
|
+
* Resolve credentials ON THE CALLING FIBER — evaluated per request, never
|
|
83
|
+
* at layer build time, so context-provided credentials and token refreshes
|
|
84
|
+
* are picked up. Typically `Effect.gen(function* () { const resolve =
|
|
85
|
+
* yield* Credentials; return yield* resolve; })` for the distilled
|
|
86
|
+
* credentials-service convention. Its error/requirement channels are
|
|
87
|
+
* erased at the protocol boundary (Protocol effects carry none) and
|
|
88
|
+
* reintroduced for callers by the generated `<Sdk>OpError` /
|
|
89
|
+
* `<Sdk>OpContext` annotations.
|
|
90
|
+
*/
|
|
91
|
+
readonly credentials: Effect.Effect<C, any, any>;
|
|
92
|
+
/**
|
|
93
|
+
* API base URL from the resolved credentials. Receives the operation's
|
|
94
|
+
* route so APIs with more than one endpoint (e.g. S2's account vs
|
|
95
|
+
* per-basin hosts, chosen by path) can route per request; single-endpoint
|
|
96
|
+
* providers ignore the argument. A THROWN error (e.g. a required scope
|
|
97
|
+
* missing from the credentials) is caught and surfaced on the calling
|
|
98
|
+
* effect's error channel rather than dying as a defect.
|
|
99
|
+
*/
|
|
100
|
+
readonly baseUrl: (credentials: C, target: {
|
|
101
|
+
readonly uri: string;
|
|
102
|
+
readonly method: string;
|
|
103
|
+
}) => string;
|
|
104
|
+
/** Auth (and any fixed) headers from the resolved credentials. */
|
|
105
|
+
readonly headers: (credentials: C) => Record<string, string>;
|
|
106
|
+
/**
|
|
107
|
+
* Extract `{ code?, message? }` from a parsed non-2xx JSON body. Default:
|
|
108
|
+
* lenient `{ code?, message? | error? }` (covers the common REST error
|
|
109
|
+
* envelopes).
|
|
110
|
+
*/
|
|
111
|
+
readonly errorEnvelope?: (body: unknown) => RestErrorEnvelope | undefined;
|
|
112
|
+
/**
|
|
113
|
+
* HTTP status → error class constructed as `new Cls({ message, retryAfter
|
|
114
|
+
* })`. Default: core `HTTP_STATUS_MAP`. Consulted after per-op typed error
|
|
115
|
+
* matching; unmapped 5xx fall back to `InternalServerError`, everything
|
|
116
|
+
* else to {@link unknownError}.
|
|
117
|
+
*/
|
|
118
|
+
readonly statusMap?: Readonly<Record<number, new (args: any) => any>>;
|
|
119
|
+
/** Fallback error for failures nothing else matched. */
|
|
120
|
+
readonly unknownError: (info: RestErrorInfo) => unknown;
|
|
121
|
+
/** Transform the parsed 2xx JSON before decoding (e.g. stripNulls). */
|
|
122
|
+
readonly transformResponse?: (body: unknown) => unknown;
|
|
123
|
+
/** Passed through to `buildRequest` (member-header transforms). */
|
|
124
|
+
readonly mapMemberHeader?: (name: string, value: string) => string;
|
|
125
|
+
/** Passed through to `buildRequest` (wire names for unmodeled input keys). */
|
|
126
|
+
readonly unknownKeyToWire?: (key: string) => string;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Build a `Layer<Protocol>` for a simple REST JSON API. Assign the result to
|
|
130
|
+
* a module-level const in the provider's `protocol.ts` — `API.make` memoizes
|
|
131
|
+
* protocol layers by value identity.
|
|
132
|
+
*/
|
|
133
|
+
export declare const makeRestProtocol: <C>(options: RestProtocolOptions<C>) => Layer.Layer<API.Protocol>;
|
|
134
|
+
//# sourceMappingURL=protocol-rest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol-rest.d.ts","sourceRoot":"","sources":["../src/protocol-rest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic REST protocol factory for simple bearer/header-auth JSON APIs
|
|
3
|
+
* (Neon, Fly.io, PlanetScale, Supabase, Turso, …).
|
|
4
|
+
*
|
|
5
|
+
* `makeRestProtocol(options)` builds a core {@link API.Protocol} layer:
|
|
6
|
+
*
|
|
7
|
+
* request: credentials resolved from the CALLING fiber's context on every
|
|
8
|
+
* request (the layer itself is memoized per process — see
|
|
9
|
+
* `core/api`), auth headers + base URL from the provider's
|
|
10
|
+
* options, request built by `buildRequest` from
|
|
11
|
+
* `core/protocol-http` (deep-unwrapping any `Redacted` input
|
|
12
|
+
* values first)
|
|
13
|
+
*
|
|
14
|
+
* response: 2xx JSON → optional `transformResponse` → recursive wire→TS
|
|
15
|
+
* key mapping (`mapKeys`) → `Redacted` wrapping of members
|
|
16
|
+
* marked with {@link SensitiveValue}; non-2xx → typed error:
|
|
17
|
+
* per-op matcher classes (`matchTypedError`), then the status
|
|
18
|
+
* map (default `HTTP_STATUS_MAP`), then an `InternalServerError`
|
|
19
|
+
* for unmapped 5xx, then the provider's `unknownError` fallback
|
|
20
|
+
* — with `retryAfter` durations stamped from the standard hint
|
|
21
|
+
* headers on retryable statuses.
|
|
22
|
+
*
|
|
23
|
+
* Anything provider-specific (envelope quirks, bespoke error codes) belongs
|
|
24
|
+
* in the provider package — via these options or a hand-written protocol.
|
|
25
|
+
*/
|
|
26
|
+
import * as Effect from "effect/Effect";
|
|
27
|
+
import * as Layer from "effect/Layer";
|
|
28
|
+
import * as Redacted from "effect/Redacted";
|
|
29
|
+
import * as API from "./api.js";
|
|
30
|
+
import { httpSymbol, makeAnnotation } from "./trait.js";
|
|
31
|
+
import { buildRequest, getAnn, getPropAnn, getProps, isOpaqueValue, mapKeys, matchTypedError, resolveNode, } from "./protocol-http.js";
|
|
32
|
+
import { HTTP_STATUS_MAP, InternalServerError } from "./errors.js";
|
|
33
|
+
import { parseRetryAfterForStatus } from "./retry-after.js";
|
|
34
|
+
// =============================================================================
|
|
35
|
+
// Traits
|
|
36
|
+
// =============================================================================
|
|
37
|
+
export const sensitiveValueSymbol = Symbol.for("@distilled.cloud/core/sensitive-value");
|
|
38
|
+
/**
|
|
39
|
+
* Marks a string member as sensitive (mirrors `smithy.api#sensitive`).
|
|
40
|
+
* The REST protocol wraps decoded values in `Redacted` on the way out and
|
|
41
|
+
* accepts `string | Redacted<string>` on the way in (unwrapped before
|
|
42
|
+
* serialization). Takes an ignored argument so generators can inline the
|
|
43
|
+
* smithy trait value (`T.SensitiveValue({})`).
|
|
44
|
+
*/
|
|
45
|
+
export const SensitiveValue = (_value) => makeAnnotation(sensitiveValueSymbol, true);
|
|
46
|
+
export const rawResponseSymbol = Symbol.for("@distilled.cloud/core/raw-response");
|
|
47
|
+
/**
|
|
48
|
+
* Marks the sole output member that carries a bare (array/scalar) response
|
|
49
|
+
* body (mirrors `com.distilled.openapi#rawResponse`).
|
|
50
|
+
*/
|
|
51
|
+
export const RawResponse = (_value) => makeAnnotation(rawResponseSymbol, true);
|
|
52
|
+
export const rawResponseRootSymbol = Symbol.for("@distilled.cloud/core/raw-response-root");
|
|
53
|
+
/**
|
|
54
|
+
* Marks a response schema whose ENTIRE value is the response body (the
|
|
55
|
+
* generator's `rootPipe` for synthesized bare-payload wrappers): the emitted
|
|
56
|
+
* response type IS the payload type and the protocol returns the mapped body
|
|
57
|
+
* directly.
|
|
58
|
+
*/
|
|
59
|
+
export const RawResponseRoot = () => makeAnnotation(rawResponseRootSymbol, true);
|
|
60
|
+
// =============================================================================
|
|
61
|
+
// Value helpers
|
|
62
|
+
// =============================================================================
|
|
63
|
+
const isPlainObject = (v) => v !== null &&
|
|
64
|
+
typeof v === "object" &&
|
|
65
|
+
!Array.isArray(v) &&
|
|
66
|
+
!isOpaqueValue(v) &&
|
|
67
|
+
(Object.getPrototypeOf(v) === Object.prototype ||
|
|
68
|
+
Object.getPrototypeOf(v) === null);
|
|
69
|
+
/**
|
|
70
|
+
* Deep-unwrap `Redacted` values in an input (plain objects/arrays only —
|
|
71
|
+
* class instances, files, and binary payloads pass through untouched).
|
|
72
|
+
* Sensitive input members accept `string | Redacted<string>`; the wire wants
|
|
73
|
+
* the raw string.
|
|
74
|
+
*/
|
|
75
|
+
export const unwrapRedactedDeep = (value) => {
|
|
76
|
+
if (Redacted.isRedacted(value))
|
|
77
|
+
return Redacted.value(value);
|
|
78
|
+
if (Array.isArray(value))
|
|
79
|
+
return value.map(unwrapRedactedDeep);
|
|
80
|
+
if (isPlainObject(value)) {
|
|
81
|
+
const out = {};
|
|
82
|
+
for (const [k, v] of Object.entries(value)) {
|
|
83
|
+
if (v === undefined)
|
|
84
|
+
continue;
|
|
85
|
+
out[k] = unwrapRedactedDeep(v);
|
|
86
|
+
}
|
|
87
|
+
return out;
|
|
88
|
+
}
|
|
89
|
+
return value;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Walk a decoded (TS-named) value alongside its schema AST, wrapping members
|
|
93
|
+
* marked {@link SensitiveValue} in `Redacted`. Keys the schema doesn't model
|
|
94
|
+
* pass through verbatim.
|
|
95
|
+
*/
|
|
96
|
+
export const wrapSensitive = (ast, value) => {
|
|
97
|
+
if (value === null || typeof value !== "object" || isOpaqueValue(value)) {
|
|
98
|
+
return value;
|
|
99
|
+
}
|
|
100
|
+
const node = resolveNode(ast);
|
|
101
|
+
if (node._tag === "Arrays") {
|
|
102
|
+
if (!Array.isArray(value))
|
|
103
|
+
return value;
|
|
104
|
+
const elem = node.rest?.[0];
|
|
105
|
+
return elem ? value.map((v) => wrapSensitive(elem, v)) : value;
|
|
106
|
+
}
|
|
107
|
+
if (node._tag === "Objects" && !Array.isArray(value)) {
|
|
108
|
+
const props = getProps(node);
|
|
109
|
+
if (props.length === 0)
|
|
110
|
+
return value;
|
|
111
|
+
const byName = new Map(props.map((p) => [String(p.name), p]));
|
|
112
|
+
const out = {};
|
|
113
|
+
for (const [k, v] of Object.entries(value)) {
|
|
114
|
+
if (v === undefined)
|
|
115
|
+
continue;
|
|
116
|
+
const prop = byName.get(k);
|
|
117
|
+
if (!prop) {
|
|
118
|
+
out[k] = v;
|
|
119
|
+
}
|
|
120
|
+
else if (getPropAnn(prop, sensitiveValueSymbol) !== undefined &&
|
|
121
|
+
typeof v === "string") {
|
|
122
|
+
out[k] = Redacted.make(v);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
out[k] = wrapSensitive(prop.type, v);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return out;
|
|
129
|
+
}
|
|
130
|
+
return value;
|
|
131
|
+
};
|
|
132
|
+
const defaultErrorEnvelope = (body) => {
|
|
133
|
+
if (body === null || typeof body !== "object")
|
|
134
|
+
return undefined;
|
|
135
|
+
const b = body;
|
|
136
|
+
const code = typeof b.code === "string" || typeof b.code === "number"
|
|
137
|
+
? b.code
|
|
138
|
+
: undefined;
|
|
139
|
+
const message = typeof b.message === "string"
|
|
140
|
+
? b.message
|
|
141
|
+
: typeof b.error === "string"
|
|
142
|
+
? b.error
|
|
143
|
+
: undefined;
|
|
144
|
+
return { code, message };
|
|
145
|
+
};
|
|
146
|
+
// Bridge: Protocol.decode is typed as Effect<unknown> (no error channel),
|
|
147
|
+
// but REST failures are real typed errors that operations re-surface via
|
|
148
|
+
// their `errors: [...]` lists. Fail with the instance and erase the type
|
|
149
|
+
// here; the generated operation annotations reintroduce it for callers.
|
|
150
|
+
const fail = (e) => Effect.fail(e);
|
|
151
|
+
/**
|
|
152
|
+
* Build a `Layer<Protocol>` for a simple REST JSON API. Assign the result to
|
|
153
|
+
* a module-level const in the provider's `protocol.ts` — `API.make` memoizes
|
|
154
|
+
* protocol layers by value identity.
|
|
155
|
+
*/
|
|
156
|
+
export const makeRestProtocol = (options) => {
|
|
157
|
+
const errorEnvelope = options.errorEnvelope ?? defaultErrorEnvelope;
|
|
158
|
+
const statusMap = options.statusMap ?? HTTP_STATUS_MAP;
|
|
159
|
+
const encode = ({ input, inputAst, }) => Effect.gen(function* () {
|
|
160
|
+
const creds = yield* options.credentials;
|
|
161
|
+
const http = getAnn(inputAst, httpSymbol);
|
|
162
|
+
let baseUrl;
|
|
163
|
+
try {
|
|
164
|
+
baseUrl = options.baseUrl(creds, {
|
|
165
|
+
uri: http?.uri ?? "",
|
|
166
|
+
method: http?.method ?? "",
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
catch (e) {
|
|
170
|
+
// A baseUrl that refuses the route (missing scope in the
|
|
171
|
+
// credentials) fails the call with that error, typed for callers by
|
|
172
|
+
// the operation's declared error channel.
|
|
173
|
+
return yield* Effect.fail(e);
|
|
174
|
+
}
|
|
175
|
+
return buildRequest({
|
|
176
|
+
input: unwrapRedactedDeep(input),
|
|
177
|
+
inputAst,
|
|
178
|
+
baseUrl,
|
|
179
|
+
headers: options.headers(creds),
|
|
180
|
+
mapMemberHeader: options.mapMemberHeader,
|
|
181
|
+
unknownKeyToWire: options.unknownKeyToWire,
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
const decode = ({ response, outputAst, errors: errorClasses, }) => Effect.gen(function* () {
|
|
185
|
+
// Read as text and parse tolerantly — error pages are often non-JSON.
|
|
186
|
+
const text = (yield* response.text.pipe(Effect.orDie)) ?? "";
|
|
187
|
+
if (process.env.DISTILLED_DEBUG_HTTP) {
|
|
188
|
+
console.error(`[distilled] <- ${response.status} ${text.slice(0, 400)}`);
|
|
189
|
+
}
|
|
190
|
+
let json;
|
|
191
|
+
let nonJson = false;
|
|
192
|
+
if (text.trim().length > 0) {
|
|
193
|
+
try {
|
|
194
|
+
json = JSON.parse(text);
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
nonJson = true;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
const status = response.status;
|
|
201
|
+
const headers = response.headers;
|
|
202
|
+
if (status >= 400) {
|
|
203
|
+
const env = (nonJson ? undefined : errorEnvelope(json)) ?? {};
|
|
204
|
+
const message = env.message ??
|
|
205
|
+
(nonJson && text.trim() ? text.trim() : `HTTP ${status}`);
|
|
206
|
+
// 1. Per-operation typed error (matcher metadata on the class).
|
|
207
|
+
const typed = matchTypedError(errorClasses, status, [
|
|
208
|
+
{
|
|
209
|
+
code: typeof env.code === "number" ? env.code : undefined,
|
|
210
|
+
message,
|
|
211
|
+
},
|
|
212
|
+
]);
|
|
213
|
+
if (typed !== undefined)
|
|
214
|
+
return yield* fail(typed);
|
|
215
|
+
// 2. Status-mapped class (retryAfter only stamps on retryable
|
|
216
|
+
// statuses — parseRetryAfterForStatus gates on that).
|
|
217
|
+
const StatusErrorClass = statusMap[status];
|
|
218
|
+
if (StatusErrorClass) {
|
|
219
|
+
return yield* fail(new StatusErrorClass({
|
|
220
|
+
message,
|
|
221
|
+
retryAfter: parseRetryAfterForStatus(status, headers),
|
|
222
|
+
}));
|
|
223
|
+
}
|
|
224
|
+
// 3. Unmapped 5xx (e.g. proxy-specific statuses) → retryable server
|
|
225
|
+
// error rather than the unknown fallback.
|
|
226
|
+
if (status >= 500) {
|
|
227
|
+
return yield* fail(new InternalServerError({
|
|
228
|
+
message,
|
|
229
|
+
retryAfter: parseRetryAfterForStatus(status, headers),
|
|
230
|
+
}));
|
|
231
|
+
}
|
|
232
|
+
// 4. Provider fallback.
|
|
233
|
+
return yield* fail(options.unknownError({
|
|
234
|
+
status,
|
|
235
|
+
code: env.code,
|
|
236
|
+
message,
|
|
237
|
+
body: nonJson ? text : json,
|
|
238
|
+
headers,
|
|
239
|
+
}));
|
|
240
|
+
}
|
|
241
|
+
// 2xx: the response body IS the payload (no envelope). Wire→TS key
|
|
242
|
+
// mapping is schema-driven; `RawResponseRoot` responses are the body
|
|
243
|
+
// verbatim (mapKeys handles arrays/scalars structurally either way).
|
|
244
|
+
let body = nonJson ? text : (json ?? {});
|
|
245
|
+
if (options.transformResponse)
|
|
246
|
+
body = options.transformResponse(body);
|
|
247
|
+
return wrapSensitive(outputAst, mapKeys(outputAst, body, "decode"));
|
|
248
|
+
});
|
|
249
|
+
return Layer.succeed(API.Protocol, API.Protocol.of({
|
|
250
|
+
// Erase encode's credentials requirement (resolved on the calling
|
|
251
|
+
// fiber; see RestProtocolOptions.credentials).
|
|
252
|
+
encode: (args) => encode(args),
|
|
253
|
+
decode,
|
|
254
|
+
}));
|
|
255
|
+
};
|
|
256
|
+
//# sourceMappingURL=protocol-rest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol-rest.js","sourceRoot":"","sources":["../src/protocol-rest.ts"],"names":[],"mappings":"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"}
|
package/lib/retry.d.ts
CHANGED
|
@@ -87,10 +87,16 @@ export declare const readServerRetryHintCapMsFromEnv: () => number;
|
|
|
87
87
|
* - Honors `error.retryAfter` (server-provided hint) with precedence, capped
|
|
88
88
|
* by {@link DEFAULT_SERVER_RETRY_HINT_CAP_MS} by default; override with
|
|
89
89
|
* `DISTILLED_SERVER_RETRY_HINT_CAP_MS` or {@link ServerRetryHintCapMs}
|
|
90
|
-
* - Otherwise uses exponential backoff starting at
|
|
90
|
+
* - Otherwise uses exponential backoff starting at 250ms with a factor of 2,
|
|
91
|
+
* capped at 5s per delay
|
|
91
92
|
* - Ensures at least 500ms delay for throttling errors
|
|
92
|
-
* - Limits to
|
|
93
|
+
* - Limits to 8 retry attempts
|
|
93
94
|
* - Applies jitter to avoid thundering herd
|
|
95
|
+
*
|
|
96
|
+
* The 250ms/5s-cap/8-attempt shape (~20s of total patience) comes from
|
|
97
|
+
* alchemy's Cloudflare provider suite, where transient auth blips under
|
|
98
|
+
* high request concurrency routinely outlast a short 5-attempt/3s policy
|
|
99
|
+
* while a genuinely broken credential still fails within seconds.
|
|
94
100
|
*/
|
|
95
101
|
export declare const makeDefault: Factory;
|
|
96
102
|
/**
|
package/lib/retry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../src/retry.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAG5C,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,GAAG,MAAM,YAAY,CAAC;AAClC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAO5C;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAC7C;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;CAChD;AAED;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC;AAE/D;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAMvC;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,SAAU,MAAM,8CACP,CAAC;AAMvC;;;GAGG;AACH,eAAO,MAAM,QAAQ,wHAEpB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,QAAS,QAAQ,CAAC,QAAQ,2HAG1C,CAAC;AAMJ;;;;GAIG;AACH,eAAO,MAAM,gCAAgC,QAAS,CAAC;AAIvD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,oBAAoB,iCAEhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,UAAW,MAAM,sCACT,CAAC;AAc7C;;;;;;;GAOG;AACH,eAAO,MAAM,+BAA+B,QAAO,MAKhD,CAAC;AAwDJ;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,WAAW,EAAE,OAoBxB,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAQ9B,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,OAO/B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,OAQ7B,CAAC;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,EAAE,OAO9B,CAAC"}
|