@sponson/adapters 0.0.0-stage → 0.5.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 (132) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +4 -2
  3. package/dist/algolia.d.ts +6 -0
  4. package/dist/algolia.js +151 -0
  5. package/dist/algolia.js.map +1 -0
  6. package/dist/clerk.d.ts +8 -0
  7. package/dist/clerk.js +107 -0
  8. package/dist/clerk.js.map +1 -0
  9. package/dist/cloudflare.d.ts +25 -0
  10. package/dist/cloudflare.js +310 -0
  11. package/dist/cloudflare.js.map +1 -0
  12. package/dist/common.d.ts +73 -0
  13. package/dist/common.js +140 -0
  14. package/dist/common.js.map +1 -0
  15. package/dist/digest.d.ts +46 -0
  16. package/dist/digest.js +129 -0
  17. package/dist/digest.js.map +1 -0
  18. package/dist/digitalocean.d.ts +5 -0
  19. package/dist/digitalocean.js +243 -0
  20. package/dist/digitalocean.js.map +1 -0
  21. package/dist/http-adapter-action.d.ts +63 -0
  22. package/dist/http-adapter-action.js +369 -0
  23. package/dist/http-adapter-action.js.map +1 -0
  24. package/dist/http-adapter-auth.d.ts +88 -0
  25. package/dist/http-adapter-auth.js +437 -0
  26. package/dist/http-adapter-auth.js.map +1 -0
  27. package/dist/http-adapter-client.d.ts +51 -0
  28. package/dist/http-adapter-client.js +156 -0
  29. package/dist/http-adapter-client.js.map +1 -0
  30. package/dist/http-adapter-graphql.d.ts +39 -0
  31. package/dist/http-adapter-graphql.js +157 -0
  32. package/dist/http-adapter-graphql.js.map +1 -0
  33. package/dist/http-adapter-list.d.ts +33 -0
  34. package/dist/http-adapter-list.js +421 -0
  35. package/dist/http-adapter-list.js.map +1 -0
  36. package/dist/http-adapter-resource.d.ts +29 -0
  37. package/dist/http-adapter-resource.js +462 -0
  38. package/dist/http-adapter-resource.js.map +1 -0
  39. package/dist/http-adapter-spec.d.ts +216 -0
  40. package/dist/http-adapter-spec.js +660 -0
  41. package/dist/http-adapter-spec.js.map +1 -0
  42. package/dist/http-adapter.d.ts +16 -0
  43. package/dist/http-adapter.js +28 -0
  44. package/dist/http-adapter.js.map +1 -0
  45. package/dist/http.d.ts +179 -0
  46. package/dist/http.js +352 -0
  47. package/dist/http.js.map +1 -0
  48. package/dist/index.d.ts +28 -0
  49. package/dist/index.js +45 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/launchdarkly.d.ts +15 -0
  52. package/dist/launchdarkly.js +337 -0
  53. package/dist/launchdarkly.js.map +1 -0
  54. package/dist/manual.d.ts +13 -0
  55. package/dist/manual.js +201 -0
  56. package/dist/manual.js.map +1 -0
  57. package/dist/neon.d.ts +8 -0
  58. package/dist/neon.js +167 -0
  59. package/dist/neon.js.map +1 -0
  60. package/dist/netlify.d.ts +18 -0
  61. package/dist/netlify.js +436 -0
  62. package/dist/netlify.js.map +1 -0
  63. package/dist/planetscale.d.ts +10 -0
  64. package/dist/planetscale.js +311 -0
  65. package/dist/planetscale.js.map +1 -0
  66. package/dist/providers.d.ts +26 -0
  67. package/dist/providers.js +36 -0
  68. package/dist/providers.js.map +1 -0
  69. package/dist/recipes.d.ts +167 -0
  70. package/dist/recipes.js +246 -0
  71. package/dist/recipes.js.map +1 -0
  72. package/dist/secrets.d.ts +72 -0
  73. package/dist/secrets.js +476 -0
  74. package/dist/secrets.js.map +1 -0
  75. package/dist/sigv4.d.ts +56 -0
  76. package/dist/sigv4.js +118 -0
  77. package/dist/sigv4.js.map +1 -0
  78. package/dist/supabase.d.ts +9 -0
  79. package/dist/supabase.js +385 -0
  80. package/dist/supabase.js.map +1 -0
  81. package/dist/vercel.d.ts +8 -0
  82. package/dist/vercel.js +475 -0
  83. package/dist/vercel.js.map +1 -0
  84. package/dist/xata.d.ts +8 -0
  85. package/dist/xata.js +142 -0
  86. package/dist/xata.js.map +1 -0
  87. package/dist/xml.d.ts +25 -0
  88. package/dist/xml.js +211 -0
  89. package/dist/xml.js.map +1 -0
  90. package/package.json +58 -3
  91. package/recipes/amplify.yaml +147 -0
  92. package/recipes/auth0.yaml +178 -0
  93. package/recipes/azure_swa.yaml +116 -0
  94. package/recipes/cloud_run.yaml +97 -0
  95. package/recipes/cloudflare.yaml +108 -0
  96. package/recipes/cockroachdb.yaml +132 -0
  97. package/recipes/configcat.yaml +123 -0
  98. package/recipes/datadog.yaml +136 -0
  99. package/recipes/firebase.yaml +84 -0
  100. package/recipes/flagsmith.yaml +98 -0
  101. package/recipes/fly.yaml +97 -0
  102. package/recipes/fly_machines.yaml +67 -0
  103. package/recipes/gcs.yaml +102 -0
  104. package/recipes/github.yaml +123 -0
  105. package/recipes/growthbook.yaml +124 -0
  106. package/recipes/heroku.yaml +98 -0
  107. package/recipes/honeycomb.yaml +89 -0
  108. package/recipes/inngest.yaml +97 -0
  109. package/recipes/kinde.yaml +120 -0
  110. package/recipes/mongodb_atlas.yaml +119 -0
  111. package/recipes/okta.yaml +177 -0
  112. package/recipes/posthog.yaml +127 -0
  113. package/recipes/postmark.yaml +105 -0
  114. package/recipes/postmark_server.yaml +93 -0
  115. package/recipes/prisma.yaml +150 -0
  116. package/recipes/qstash.yaml +134 -0
  117. package/recipes/railway.yaml +130 -0
  118. package/recipes/render.yaml +103 -0
  119. package/recipes/resend.yaml +130 -0
  120. package/recipes/s3.yaml +108 -0
  121. package/recipes/sendgrid.yaml +165 -0
  122. package/recipes/sentry.yaml +158 -0
  123. package/recipes/split.yaml +121 -0
  124. package/recipes/statsig.yaml +124 -0
  125. package/recipes/stripe.yaml +310 -0
  126. package/recipes/stytch.yaml +113 -0
  127. package/recipes/svix.yaml +109 -0
  128. package/recipes/turso.yaml +98 -0
  129. package/recipes/unleash.yaml +149 -0
  130. package/recipes/upstash.yaml +130 -0
  131. package/recipes/vercel.yaml +116 -0
  132. package/recipes/workos.yaml +70 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-adapter-spec.js","sourceRoot":"","sources":["../src/http-adapter-spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { ResourceAdapter } from "@sponson/core";
2
+ import { type AuthDeps } from "./http-adapter-auth.js";
3
+ /**
4
+ * The generic adapter with its run-time dependencies (how `auth.command` runs a CLI, the clock for token expiry and
5
+ * request signatures) replaced: for tests. Everything else uses `httpAdapter`.
6
+ */
7
+ export declare function createHttpAdapter(deps?: Partial<AuthDeps>): ResourceAdapter;
8
+ /**
9
+ * The generic `http` adapter: any JSON (or form, or XML) REST API, or a GraphQL one, described in the plan instead of
10
+ * in TypeScript (ADR 0017). Op `resource` manages one object per item (a feature flag, a webhook endpoint, a
11
+ * variable); op `list_item` keeps one value in a list on a parent object (an allowed origin, a callback URL). Each
12
+ * op `action` sends one request when the line's trigger changes (an Inngest sync, a cache purge; ADR 0022). Each
13
+ * line names an API configured under `providers.http.<api>` (`base_url`, how it authenticates, optional static
14
+ * headers).
15
+ */
16
+ export declare const httpAdapter: ResourceAdapter;
@@ -0,0 +1,28 @@
1
+ import { action } from "./http-adapter-action.js";
2
+ import { DEFAULT_AUTH_DEPS } from "./http-adapter-auth.js";
3
+ import { withDeps } from "./http-adapter-client.js";
4
+ import { listItem } from "./http-adapter-list.js";
5
+ import { resource } from "./http-adapter-resource.js";
6
+ /**
7
+ * Where the generic adapter's credential and base URL override are configured: in the plan, per API, rather than
8
+ * in fixed variables. Declared for the generated docs.
9
+ */
10
+ const ABOUT = { credentialEnv: "providers.http.<api>.auth", baseUrlEnv: "providers.http.<api>.base_url_env" };
11
+ /**
12
+ * The generic adapter with its run-time dependencies (how `auth.command` runs a CLI, the clock for token expiry and
13
+ * request signatures) replaced: for tests. Everything else uses `httpAdapter`.
14
+ */
15
+ export function createHttpAdapter(deps = {}) {
16
+ const all = { ...DEFAULT_AUTH_DEPS, ...deps };
17
+ return { name: "http", ops: { resource: withDeps(resource, all), list_item: withDeps(listItem, all), action: withDeps(action, all) }, about: ABOUT };
18
+ }
19
+ /**
20
+ * The generic `http` adapter: any JSON (or form, or XML) REST API, or a GraphQL one, described in the plan instead of
21
+ * in TypeScript (ADR 0017). Op `resource` manages one object per item (a feature flag, a webhook endpoint, a
22
+ * variable); op `list_item` keeps one value in a list on a parent object (an allowed origin, a callback URL). Each
23
+ * op `action` sends one request when the line's trigger changes (an Inngest sync, a cache purge; ADR 0022). Each
24
+ * line names an API configured under `providers.http.<api>` (`base_url`, how it authenticates, optional static
25
+ * headers).
26
+ */
27
+ export const httpAdapter = { name: "http", ops: { resource, list_item: listItem, action }, about: ABOUT };
28
+ //# sourceMappingURL=http-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-adapter.js","sourceRoot":"","sources":["../src/http-adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAiB,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD;;;GAGG;AACH,MAAM,KAAK,GAAG,EAAE,aAAa,EAAE,2BAA2B,EAAE,UAAU,EAAE,mCAAmC,EAAW,CAAC;AAEvH;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAA0B,EAAE;IAC5D,MAAM,GAAG,GAAG,EAAE,GAAG,iBAAiB,EAAE,GAAG,IAAI,EAAE,CAAC;IAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACvJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAoB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC"}
package/dist/http.d.ts ADDED
@@ -0,0 +1,179 @@
1
+ import { SponsonError, type ErrorCode } from "@sponson/core";
2
+ /** Longest response excerpt an error carries. Error pages can be megabytes; receipts and PR comments must not. */
3
+ export declare const HTTP_ERROR_BODY_LIMIT = 500;
4
+ /** Per-request timeout unless SPONSON_HTTP_TIMEOUT_MS says otherwise. */
5
+ export declare const DEFAULT_TIMEOUT_MS = 30000;
6
+ /** Retries of a retryable failure unless SPONSON_HTTP_RETRIES says otherwise. */
7
+ export declare const DEFAULT_RETRIES = 4;
8
+ /** First backoff step (doubling, jittered) unless SPONSON_HTTP_RETRY_BASE_MS says otherwise. */
9
+ export declare const DEFAULT_RETRY_BASE_MS = 500;
10
+ /** No single wait is longer than this, whatever Retry-After says. */
11
+ export declare const MAX_RETRY_WAIT_MS = 30000;
12
+ /** The error codes the HTTP client classifies provider failures into; match on them with `isProviderError`. */
13
+ export type ProviderErrorCode = Extract<ErrorCode, `PROVIDER_${string}`>;
14
+ /** Details carried by every provider error. Never the request body. */
15
+ export interface ProviderErrorDetails {
16
+ adapter: string;
17
+ method: string;
18
+ path: string;
19
+ /** HTTP status, when a response arrived. */
20
+ status?: number;
21
+ [k: string]: unknown;
22
+ }
23
+ /**
24
+ * True when `e` is a provider failure, optionally of the given code(s). Adapters use it to branch on "already
25
+ * exists" or "not found" instead of reading HTTP statuses. Stable authoring API.
26
+ */
27
+ export declare function isProviderError(e: unknown, code?: ProviderErrorCode | ProviderErrorCode[]): e is SponsonError & {
28
+ details: ProviderErrorDetails;
29
+ };
30
+ /** Errors that say "not now" rather than "no": a later poll or run may succeed. */
31
+ export declare function isTransient(e: unknown): boolean;
32
+ /**
33
+ * Options for `apiClient`. Adapters get one through `clientFor`, which fills `redact` and `env` from the adapter
34
+ * context.
35
+ */
36
+ export interface ApiClientOptions {
37
+ /** Adapter name, for messages and error details. */
38
+ adapter: string;
39
+ baseUrl: string;
40
+ token: string;
41
+ /**
42
+ * `bearer` sends `Authorization: Bearer <token>`; `header:<name>` sends the token in a custom header; `none` sends
43
+ * no credential (a public endpoint; `token` is ignored).
44
+ */
45
+ authHeader?: "bearer" | "none" | `header:${string}`;
46
+ /**
47
+ * Authenticates each request instead of `token` (which is then not sent): a request signature (SigV4), a token
48
+ * obtained at run time and refreshed after a 401, a Digest challenge answered.
49
+ */
50
+ signer?: RequestSigner;
51
+ /**
52
+ * Extra headers sent with every request (an API version pin). They never replace `accept`, `content-type` or the
53
+ * credential's header.
54
+ */
55
+ headers?: Record<string, string>;
56
+ /**
57
+ * How request bodies are sent: `json` (the default), `form` (`application/x-www-form-urlencoded`, nested
58
+ * fields as `a[b]=c` and list items as `a[0]=c`, as Stripe expects) or `xml` (see xml.ts; S3-style documents).
59
+ * Responses are JSON, except with `xml`, where they are XML too.
60
+ */
61
+ encoding?: "json" | "form" | "xml";
62
+ /** The request `Content-Type`, when it is not the encoding's own (a vendor media type for a patch). */
63
+ contentType?: string;
64
+ /** The `Accept` header, when it is not the encoding's own (a versioned media type). */
65
+ accept?: string;
66
+ /** Masks known secrets; applied to provider text before it is truncated into an error message. */
67
+ redact: (text: string) => string;
68
+ /** Source of SPONSON_HTTP_TIMEOUT_MS / SPONSON_HTTP_RETRIES / SPONSON_HTTP_RETRY_BASE_MS. */
69
+ env?: NodeJS.ProcessEnv;
70
+ }
71
+ /**
72
+ * Validates a parsed response body and returns it typed. Throw `ShapeError` (or return via the `shape` helpers)
73
+ * when it is not what the adapter consumes; the client turns that into PROVIDER_RESPONSE naming the endpoint.
74
+ * Stable authoring API.
75
+ */
76
+ export type Shape<T> = (body: unknown) => T;
77
+ /**
78
+ * Thrown by a `Shape` when a response body is not what the adapter expects; the client reports it as
79
+ * PROVIDER_RESPONSE. Stable authoring API.
80
+ */
81
+ export declare class ShapeError extends Error {
82
+ constructor(message: string);
83
+ }
84
+ /**
85
+ * A JSON client bound to one provider: retries, timeouts and error classification are built in. Get one from
86
+ * `clientFor`. Stable authoring API.
87
+ */
88
+ export interface ApiClient {
89
+ readonly adapter: string;
90
+ get<T = unknown>(path: string, shape?: Shape<T>): Promise<T>;
91
+ post<T = unknown>(path: string, body?: unknown, shape?: Shape<T>, opts?: WriteOptions): Promise<T>;
92
+ /** PUT replaces the target, so it is retried after a 502/503/504 or a dropped connection like GET. */
93
+ put<T = unknown>(path: string, body?: unknown, shape?: Shape<T>): Promise<T>;
94
+ patch<T = unknown>(path: string, body?: unknown, shape?: Shape<T>, opts?: WriteOptions): Promise<T>;
95
+ delete<T = unknown>(path: string, shape?: Shape<T>): Promise<T>;
96
+ }
97
+ /** One request as a `RequestSigner` sees it, right before it is sent. Stable authoring API. */
98
+ export interface SignableRequest {
99
+ method: string;
100
+ /** The absolute URL, query included. */
101
+ url: string;
102
+ /** The headers about to be sent, lower-case names. */
103
+ headers: Record<string, string>;
104
+ /** The body exactly as it will be sent; undefined when there is none. */
105
+ body: string | undefined;
106
+ }
107
+ /**
108
+ * Authenticates the requests of an `ApiClient` whose credential is not one static header: it is asked for the
109
+ * headers of every request (each attempt, so a signature or a token is always fresh), and told about a 401 so it
110
+ * can refresh a token or answer a challenge; the request is then sent once more. Errors it throws (a token
111
+ * endpoint refusing) reach the caller as they are. Stable authoring API.
112
+ */
113
+ export interface RequestSigner {
114
+ /** The headers that authenticate `req`; they override the client's own. */
115
+ sign(req: SignableRequest): Promise<Record<string, string>>;
116
+ /**
117
+ * The request was answered 401 (`challenge`: its `WWW-Authenticate`). True to send it once more (a refreshed
118
+ * token, an answered challenge); false to fail with PROVIDER_AUTH.
119
+ */
120
+ unauthorized?(req: SignableRequest, challenge: string | null): Promise<boolean>;
121
+ }
122
+ /** Options for a POST or PATCH. Stable authoring API. */
123
+ export interface WriteOptions {
124
+ /**
125
+ * The request may safely be sent twice: it sets state rather than adding to it (a PATCH that replaces a whole
126
+ * list, a POST with an idempotency key). Then a 502/503/504 or a dropped connection is retried as for GET;
127
+ * otherwise only refusals (429, 423) are, since the first attempt may have taken effect.
128
+ */
129
+ idempotent?: boolean;
130
+ /**
131
+ * The `Content-Type` of the body, instead of `application/json`. The body is still sent JSON-encoded; use it for
132
+ * a JSON dialect a provider tells apart by media type (LaunchDarkly's semantic patch:
133
+ * `application/json; domain-model=launchdarkly.semanticpatch`).
134
+ */
135
+ contentType?: string;
136
+ }
137
+ /** Redact first, then flatten and truncate: truncating first could cut a secret so the redactor no longer sees it. */
138
+ export declare function excerptOf(body: string, redact: (s: string) => string): string;
139
+ /** Retry-After as milliseconds: delta-seconds or an HTTP date. Undefined when absent or unparseable. */
140
+ export declare function retryAfterMs(header: string | null, now?: number): number | undefined;
141
+ /** Exponential backoff with jitter: attempt 1 waits base·[0.5, 1), attempt 2 base·[1, 2), … */
142
+ export declare function backoffMs(attempt: number, baseMs: number, random?: () => number): number;
143
+ /**
144
+ * The PROVIDER_* code for a non-2xx response (status and body). Exported for adapters that talk to a provider
145
+ * without `apiClient`.
146
+ */
147
+ export declare function classifyStatus(status: number, body: string): ProviderErrorCode;
148
+ /**
149
+ * Build an `ApiClient`. Adapters should call `clientFor(actx, ...)` instead, which wires redaction and the
150
+ * environment.
151
+ */
152
+ export declare function apiClient(opts: ApiClientOptions): ApiClient;
153
+ /**
154
+ * A body as `application/x-www-form-urlencoded`, bracket-nested: `{ a: { b: 1 }, c: [x, y] }` is
155
+ * `a[b]=1&c[0]=x&c[1]=y`. Null sends an empty value (how such APIs clear a field).
156
+ */
157
+ export declare function formEncode(body: unknown): string;
158
+ /** True for a plain JSON object (not null, not an array). For hand-written `Shape`s. Stable authoring API. */
159
+ export declare function isObject(v: unknown): v is Record<string, unknown>;
160
+ /** `v` must be an object; returns it. Stable authoring API. */
161
+ export declare function obj(v: unknown, what: string): Record<string, unknown>;
162
+ /** `v` must be an array of objects each having the string fields named; returns them typed. Stable authoring API. */
163
+ export declare function records<K extends string>(v: unknown, what: string, fields: readonly K[]): Array<Record<K, string> & Record<string, unknown>>;
164
+ /** One page of a list, as the `page` callback of `listAll` describes it. Stable authoring API. */
165
+ export interface Page<T> {
166
+ items: T[];
167
+ /** Query parameters for the next page, or null when this was the last one. */
168
+ next: Record<string, string> | null;
169
+ }
170
+ /** Hard stop against a provider that keeps returning a cursor. */
171
+ export declare const MAX_PAGES = 1000;
172
+ /**
173
+ * Fetch every page of a list. `page` validates one response body and says how to ask for the next page.
174
+ * Stops on a null cursor, an empty page, or a cursor seen before (a provider that repeats the last cursor).
175
+ * Stable authoring API.
176
+ */
177
+ export declare function listAll<T>(api: ApiClient, path: string, page: (body: unknown, pageNo: number) => Page<T>): Promise<T[]>;
178
+ /** `path` with `extra` appended as query parameters (after any it already has). Stable authoring API. */
179
+ export declare function withQuery(path: string, extra: Record<string, string>): string;
package/dist/http.js ADDED
@@ -0,0 +1,352 @@
1
+ /**
2
+ * The one HTTP layer every adapter uses: timeout, retry policy, failure classification, response-shape checks and
3
+ * pagination. Adapters never see a raw fetch error or a non-2xx status; they see a SponsonError with a PROVIDER_*
4
+ * code, so "already exists" (→ re-read and claim), "gone" (→ fine on delete) and "try later" are decided here once.
5
+ *
6
+ * Part of the stable adapter authoring API (see packages/adapters/src/index.ts): ApiClient, Page, Shape,
7
+ * ShapeError, isObject, obj, records, listAll, withQuery, isProviderError. The rest may change.
8
+ */
9
+ import { setTimeout as sleep } from "node:timers/promises";
10
+ import { SponsonError, isSponsonError } from "@sponson/core";
11
+ import { XmlError, xmlDecode, xmlEncode } from "./xml.js";
12
+ /** Longest response excerpt an error carries. Error pages can be megabytes; receipts and PR comments must not. */
13
+ export const HTTP_ERROR_BODY_LIMIT = 500;
14
+ /** Per-request timeout unless SPONSON_HTTP_TIMEOUT_MS says otherwise. */
15
+ export const DEFAULT_TIMEOUT_MS = 30_000;
16
+ /** Retries of a retryable failure unless SPONSON_HTTP_RETRIES says otherwise. */
17
+ export const DEFAULT_RETRIES = 4;
18
+ /** First backoff step (doubling, jittered) unless SPONSON_HTTP_RETRY_BASE_MS says otherwise. */
19
+ export const DEFAULT_RETRY_BASE_MS = 500;
20
+ /** No single wait is longer than this, whatever Retry-After says. */
21
+ export const MAX_RETRY_WAIT_MS = 30_000;
22
+ /**
23
+ * True when `e` is a provider failure, optionally of the given code(s). Adapters use it to branch on "already
24
+ * exists" or "not found" instead of reading HTTP statuses. Stable authoring API.
25
+ */
26
+ export function isProviderError(e, code) {
27
+ if (!isSponsonError(e) || !e.code.startsWith("PROVIDER_"))
28
+ return false;
29
+ if (code === undefined)
30
+ return true;
31
+ return Array.isArray(code) ? code.includes(e.code) : e.code === code;
32
+ }
33
+ /** Errors that say "not now" rather than "no": a later poll or run may succeed. */
34
+ export function isTransient(e) {
35
+ return isProviderError(e, ["PROVIDER_TRANSIENT", "PROVIDER_TIMEOUT"]);
36
+ }
37
+ /**
38
+ * Thrown by a `Shape` when a response body is not what the adapter expects; the client reports it as
39
+ * PROVIDER_RESPONSE. Stable authoring API.
40
+ */
41
+ export class ShapeError extends Error {
42
+ constructor(message) {
43
+ super(message);
44
+ this.name = "ShapeError";
45
+ }
46
+ }
47
+ /** Methods whose repetition is harmless, so 5xx and network errors are retried. */
48
+ const IDEMPOTENT = new Set(["GET", "HEAD", "DELETE", "PUT"]);
49
+ /** Retried for any method: the provider refused before doing anything (rate limit, Neon's "operation running"). */
50
+ const REFUSED_STATUSES = new Set([429, 423]);
51
+ /** Retried only for idempotent methods: the request may or may not have been executed. */
52
+ const UNAVAILABLE_STATUSES = new Set([502, 503, 504]);
53
+ function policyFrom(env = {}) {
54
+ const num = (name, fallback, min) => {
55
+ const raw = env[name];
56
+ if (raw === undefined || raw === "")
57
+ return fallback;
58
+ const n = Number(raw);
59
+ return Number.isFinite(n) && n >= min ? n : fallback;
60
+ };
61
+ return {
62
+ timeoutMs: num("SPONSON_HTTP_TIMEOUT_MS", DEFAULT_TIMEOUT_MS, 1),
63
+ retries: Math.floor(num("SPONSON_HTTP_RETRIES", DEFAULT_RETRIES, 0)),
64
+ baseMs: num("SPONSON_HTTP_RETRY_BASE_MS", DEFAULT_RETRY_BASE_MS, 0),
65
+ };
66
+ }
67
+ /** Redact first, then flatten and truncate: truncating first could cut a secret so the redactor no longer sees it. */
68
+ export function excerptOf(body, redact) {
69
+ const flat = redact(body).replace(/\s+/g, " ").trim();
70
+ return flat.length > HTTP_ERROR_BODY_LIMIT ? `${flat.slice(0, HTTP_ERROR_BODY_LIMIT)}… (${flat.length} chars)` : flat;
71
+ }
72
+ /** Retry-After as milliseconds: delta-seconds or an HTTP date. Undefined when absent or unparseable. */
73
+ export function retryAfterMs(header, now = Date.now()) {
74
+ if (!header)
75
+ return undefined;
76
+ const t = header.trim();
77
+ if (/^\d+(\.\d+)?$/.test(t))
78
+ return Number(t) * 1000;
79
+ const at = Date.parse(t);
80
+ return Number.isNaN(at) ? undefined : Math.max(0, at - now);
81
+ }
82
+ /** Exponential backoff with jitter: attempt 1 waits base·[0.5, 1), attempt 2 base·[1, 2), … */
83
+ export function backoffMs(attempt, baseMs, random = Math.random) {
84
+ const ceiling = baseMs * 2 ** (attempt - 1);
85
+ return Math.min(MAX_RETRY_WAIT_MS, ceiling / 2 + random() * (ceiling / 2));
86
+ }
87
+ /** "Already exists"-type answers. 409 always; 400/422 when the body says so (Clerk, Vercel use those statuses). */
88
+ const CONFLICT_BODY = /already[ _-]?exists|duplicate|ENV_CONFLICT|_exists\b/i;
89
+ /**
90
+ * The PROVIDER_* code for a non-2xx response (status and body). Exported for adapters that talk to a provider
91
+ * without `apiClient`.
92
+ */
93
+ export function classifyStatus(status, body) {
94
+ if (status === 401 || status === 403)
95
+ return "PROVIDER_AUTH";
96
+ if (status === 404)
97
+ return "PROVIDER_NOT_FOUND";
98
+ if (status === 409)
99
+ return "PROVIDER_CONFLICT";
100
+ if ((status === 400 || status === 422) && CONFLICT_BODY.test(body))
101
+ return "PROVIDER_CONFLICT";
102
+ if (REFUSED_STATUSES.has(status) || status >= 500)
103
+ return "PROVIDER_TRANSIENT";
104
+ return "PROVIDER_INVALID";
105
+ }
106
+ const DESCRIBE = {
107
+ PROVIDER_TRANSIENT: "temporarily unavailable",
108
+ PROVIDER_CONFLICT: "conflict",
109
+ PROVIDER_NOT_FOUND: "not found",
110
+ PROVIDER_AUTH: "not authorised",
111
+ PROVIDER_INVALID: "rejected the request",
112
+ PROVIDER_TIMEOUT: "timed out",
113
+ PROVIDER_RESPONSE: "unexpected response",
114
+ };
115
+ class Attempt {
116
+ code;
117
+ retryable;
118
+ message;
119
+ status;
120
+ waitMs;
121
+ challenge;
122
+ constructor(code, retryable, message, status, waitMs, challenge = null) {
123
+ this.code = code;
124
+ this.retryable = retryable;
125
+ this.message = message;
126
+ this.status = status;
127
+ this.waitMs = waitMs;
128
+ this.challenge = challenge;
129
+ }
130
+ }
131
+ /**
132
+ * A 2xx response body as `shape` wants it (parsed JSON when there is no shape; undefined for an empty body with no
133
+ * shape), or what is wrong with it.
134
+ */
135
+ function decode(text, shape, redact, xml) {
136
+ if (!text)
137
+ return shape ? { problem: "empty response body" } : { value: undefined };
138
+ let parsed;
139
+ try {
140
+ parsed = xml ? xmlDecode(text) : JSON.parse(text);
141
+ }
142
+ catch (e) {
143
+ const why = e instanceof XmlError ? ` (${e.message})` : "";
144
+ return { problem: `response is not ${xml ? "XML" : "JSON"}${why}: ${excerptOf(text, redact)}` };
145
+ }
146
+ if (!shape)
147
+ return { value: parsed };
148
+ try {
149
+ return { value: shape(parsed) };
150
+ }
151
+ catch (e) {
152
+ if (e instanceof ShapeError)
153
+ return { problem: e.message };
154
+ throw e;
155
+ }
156
+ }
157
+ /**
158
+ * Build an `ApiClient`. Adapters should call `clientFor(actx, ...)` instead, which wires redaction and the
159
+ * environment.
160
+ */
161
+ export function apiClient(opts) {
162
+ let base = opts.baseUrl;
163
+ while (base.endsWith("/"))
164
+ base = base.slice(0, -1);
165
+ const auth = opts.authHeader ?? "bearer";
166
+ const policy = policyFrom(opts.env);
167
+ const xml = opts.encoding === "xml";
168
+ const headers = { ...extraHeaders(opts.headers ?? {}), accept: opts.accept ?? (xml ? "application/xml" : "application/json") };
169
+ // With a signer, the signer authenticates each request itself and the static token is not sent.
170
+ if (!opts.signer && auth === "bearer")
171
+ headers.authorization = `Bearer ${opts.token}`;
172
+ else if (!opts.signer && auth !== "bearer" && auth !== "none")
173
+ headers[auth.slice("header:".length).toLowerCase()] = opts.token;
174
+ const defaultContentType = opts.contentType ?? CONTENT_TYPES[opts.encoding ?? "json"];
175
+ const encodeBody = (body) => (opts.encoding === "form" ? formEncode(body) : xml ? xmlEncode(body) : JSON.stringify(body));
176
+ const fail = (code, method, path, detail, status, extra = {}) => new SponsonError(code, `${opts.adapter}: ${method} ${path} → ${status ?? DESCRIBE[code]}${detail ? `: ${detail}` : ""}`, {
177
+ adapter: opts.adapter,
178
+ method,
179
+ path,
180
+ ...(status !== undefined ? { status } : {}),
181
+ ...extra,
182
+ });
183
+ /** The request as it will be sent, signed when the client has a signer. */
184
+ async function prepare(method, path, body, contentType) {
185
+ let text;
186
+ try {
187
+ text = body === undefined ? undefined : encodeBody(body);
188
+ }
189
+ catch (e) {
190
+ if (e instanceof XmlError)
191
+ throw fail("PROVIDER_INVALID", method, path, `the request body cannot be sent as XML: ${e.message}`);
192
+ throw e;
193
+ }
194
+ const req = { method, url: base + path, headers: text === undefined ? { ...headers } : { ...headers, "content-type": contentType }, body: text };
195
+ if (opts.signer)
196
+ Object.assign(req.headers, await opts.signer.sign(req));
197
+ return req;
198
+ }
199
+ async function once(req, idempotent) {
200
+ const { method, url } = req;
201
+ const controller = new AbortController();
202
+ const init = { method, headers: req.headers, signal: controller.signal, ...(req.body === undefined ? {} : { body: req.body }) };
203
+ const timer = setTimeout(() => controller.abort(), policy.timeoutMs);
204
+ try {
205
+ const res = await fetch(url, init);
206
+ const text = await res.text(); // the timer also bounds a body that never finishes
207
+ if (res.ok)
208
+ return { status: res.status, text };
209
+ const code = classifyStatus(res.status, text);
210
+ const retryable = REFUSED_STATUSES.has(res.status) || (idempotent && UNAVAILABLE_STATUSES.has(res.status));
211
+ return new Attempt(code, retryable, excerptOf(text, opts.redact), res.status, retryAfterMs(res.headers.get("retry-after")), res.headers.get("www-authenticate"));
212
+ }
213
+ catch (e) {
214
+ if (controller.signal.aborted)
215
+ return new Attempt("PROVIDER_TIMEOUT", false, `no response within ${policy.timeoutMs}ms (SPONSON_HTTP_TIMEOUT_MS)`);
216
+ // `fetch failed` alone says nothing; the cause (ECONNREFUSED, ECONNRESET, ENOTFOUND) does.
217
+ const cause = e.cause?.message ?? e.message;
218
+ // A write whose connection dropped may have happened; only idempotent requests are repeated.
219
+ return new Attempt("PROVIDER_TRANSIENT", idempotent, `${url}: ${opts.redact(cause)}`);
220
+ }
221
+ finally {
222
+ clearTimeout(timer);
223
+ }
224
+ }
225
+ /** A 401 the signer can answer (a refreshed token, a Digest challenge): true when the request should go again. */
226
+ async function reauthorized(r, req, used) {
227
+ if (used || r.status !== 401 || !opts.signer?.unauthorized)
228
+ return false;
229
+ return opts.signer.unauthorized(req, r.challenge);
230
+ }
231
+ async function call(method, path, body, shape, write) {
232
+ const idempotent = write?.idempotent ?? IDEMPOTENT.has(method);
233
+ let reauthed = false;
234
+ for (let attempt = 1;; attempt++) {
235
+ const req = await prepare(method, path, body, write?.contentType ?? defaultContentType);
236
+ const r = await once(req, idempotent);
237
+ if (r instanceof Attempt && (await reauthorized(r, req, reauthed))) {
238
+ // A 401 means the request was refused before anything happened, so sending it again is safe for any method.
239
+ reauthed = true;
240
+ attempt--;
241
+ continue;
242
+ }
243
+ if (r instanceof Attempt) {
244
+ if (r.retryable && attempt <= policy.retries) {
245
+ await sleep(Math.min(MAX_RETRY_WAIT_MS, r.waitMs ?? backoffMs(attempt, policy.baseMs)));
246
+ continue;
247
+ }
248
+ const note = r.retryable ? ` (after ${attempt} attempts)` : "";
249
+ throw fail(r.code, method, path, r.message + note, r.status, r.retryable ? { attempts: attempt } : {});
250
+ }
251
+ const d = decode(r.text, shape, opts.redact, xml);
252
+ if ("problem" in d)
253
+ throw fail("PROVIDER_RESPONSE", method, path, d.problem, r.status);
254
+ return d.value;
255
+ }
256
+ }
257
+ return {
258
+ adapter: opts.adapter,
259
+ get: (path, shape) => call("GET", path, undefined, shape),
260
+ post: (path, body, shape, write) => call("POST", path, body, shape, write),
261
+ put: (path, body, shape) => call("PUT", path, body, shape),
262
+ patch: (path, body, shape, write) => call("PATCH", path, body, shape, write),
263
+ delete: (path, shape) => call("DELETE", path, undefined, shape),
264
+ };
265
+ }
266
+ /** The `Content-Type` of each encoding. */
267
+ const CONTENT_TYPES = { json: "application/json", form: "application/x-www-form-urlencoded", xml: "application/xml" };
268
+ /**
269
+ * A body as `application/x-www-form-urlencoded`, bracket-nested: `{ a: { b: 1 }, c: [x, y] }` is
270
+ * `a[b]=1&c[0]=x&c[1]=y`. Null sends an empty value (how such APIs clear a field).
271
+ */
272
+ export function formEncode(body) {
273
+ const pairs = [];
274
+ const walk = (v, name) => {
275
+ if (Array.isArray(v))
276
+ v.forEach((x, i) => walk(x, `${name}[${i}]`));
277
+ else if (isObject(v))
278
+ for (const [k, x] of Object.entries(v))
279
+ walk(x, name ? `${name}[${k}]` : k);
280
+ else if (name)
281
+ pairs.push([name, v === null || v === undefined ? "" : String(v)]);
282
+ };
283
+ walk(body, "");
284
+ return new URLSearchParams(pairs).toString();
285
+ }
286
+ /** Configured headers, lower-cased (names are case-insensitive) so the credential and content type override them. */
287
+ function extraHeaders(h) {
288
+ return Object.fromEntries(Object.entries(h).filter(([k]) => k.toLowerCase() !== "content-type").map(([k, v]) => [k.toLowerCase(), v]));
289
+ }
290
+ // ---------------------------------------------------------------------------
291
+ // Shape helpers: small checks with messages that name the field, instead of a TypeError three frames later.
292
+ // ---------------------------------------------------------------------------
293
+ /** True for a plain JSON object (not null, not an array). For hand-written `Shape`s. Stable authoring API. */
294
+ export function isObject(v) {
295
+ return typeof v === "object" && v !== null && !Array.isArray(v);
296
+ }
297
+ /** `v` must be an object; returns it. Stable authoring API. */
298
+ export function obj(v, what) {
299
+ if (!isObject(v))
300
+ throw new ShapeError(`expected ${what} to be an object, got ${kindOf(v)}`);
301
+ return v;
302
+ }
303
+ /** `v` must be an array of objects each having the string fields named; returns them typed. Stable authoring API. */
304
+ export function records(v, what, fields) {
305
+ if (!Array.isArray(v))
306
+ throw new ShapeError(`expected ${what} to be an array, got ${kindOf(v)}`);
307
+ return v.map((item, i) => {
308
+ const o = obj(item, `${what}[${i}]`);
309
+ for (const f of fields)
310
+ if (typeof o[f] !== "string")
311
+ throw new ShapeError(`expected ${what}[${i}].${f} to be a string, got ${kindOf(o[f])}`);
312
+ return o;
313
+ });
314
+ }
315
+ function kindOf(v) {
316
+ return v === null ? "null" : Array.isArray(v) ? "an array" : typeof v;
317
+ }
318
+ /** Hard stop against a provider that keeps returning a cursor. */
319
+ export const MAX_PAGES = 1000;
320
+ /**
321
+ * Fetch every page of a list. `page` validates one response body and says how to ask for the next page.
322
+ * Stops on a null cursor, an empty page, or a cursor seen before (a provider that repeats the last cursor).
323
+ * Stable authoring API.
324
+ */
325
+ export async function listAll(api, path, page) {
326
+ const out = [];
327
+ const seen = new Set();
328
+ let query = {};
329
+ for (let n = 0;; n++) {
330
+ if (n >= MAX_PAGES)
331
+ throw new SponsonError("PROVIDER_RESPONSE", `${api.adapter}: GET ${path} returned more than ${MAX_PAGES} pages`, { adapter: api.adapter, method: "GET", path });
332
+ const p = await api.get(withQuery(path, query), (b) => page(b, n));
333
+ out.push(...p.items);
334
+ if (!p.next || p.items.length === 0)
335
+ break;
336
+ const key = JSON.stringify(p.next);
337
+ if (seen.has(key))
338
+ break;
339
+ seen.add(key);
340
+ query = p.next;
341
+ }
342
+ return out;
343
+ }
344
+ /** `path` with `extra` appended as query parameters (after any it already has). Stable authoring API. */
345
+ export function withQuery(path, extra) {
346
+ const entries = Object.entries(extra);
347
+ if (entries.length === 0)
348
+ return path;
349
+ const q = new URLSearchParams(entries).toString();
350
+ return path.includes("?") ? `${path}&${q}` : `${path}?${q}`;
351
+ }
352
+ //# sourceMappingURL=http.js.map