@sponson/adapters 0.4.0 → 0.6.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 (129) hide show
  1. package/README.md +1 -1
  2. package/dist/algolia.d.ts +6 -0
  3. package/dist/algolia.js +151 -0
  4. package/dist/algolia.js.map +1 -0
  5. package/dist/clerk.js +1 -1
  6. package/dist/clerk.js.map +1 -1
  7. package/dist/cloud_run.d.ts +12 -0
  8. package/dist/cloud_run.js +469 -0
  9. package/dist/cloud_run.js.map +1 -0
  10. package/dist/cloudflare.d.ts +25 -0
  11. package/dist/cloudflare.js +310 -0
  12. package/dist/cloudflare.js.map +1 -0
  13. package/dist/common.d.ts +2 -6
  14. package/dist/common.js.map +1 -1
  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 +94 -0
  25. package/dist/http-adapter-auth.js +440 -0
  26. package/dist/http-adapter-auth.js.map +1 -0
  27. package/dist/http-adapter-client.d.ts +57 -0
  28. package/dist/http-adapter-client.js +163 -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 +61 -2
  46. package/dist/http.js +79 -18
  47. package/dist/http.js.map +1 -1
  48. package/dist/index.d.ts +13 -0
  49. package/dist/index.js +26 -2
  50. package/dist/index.js.map +1 -1
  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.js +1 -1
  58. package/dist/neon.js.map +1 -1
  59. package/dist/netlify.d.ts +18 -0
  60. package/dist/netlify.js +436 -0
  61. package/dist/netlify.js.map +1 -0
  62. package/dist/planetscale.d.ts +10 -0
  63. package/dist/planetscale.js +311 -0
  64. package/dist/planetscale.js.map +1 -0
  65. package/dist/providers.d.ts +28 -0
  66. package/dist/providers.js +41 -0
  67. package/dist/providers.js.map +1 -0
  68. package/dist/recipes.d.ts +167 -0
  69. package/dist/recipes.js +246 -0
  70. package/dist/recipes.js.map +1 -0
  71. package/dist/secrets.d.ts +44 -0
  72. package/dist/secrets.js +279 -0
  73. package/dist/secrets.js.map +1 -1
  74. package/dist/sigv4.d.ts +56 -0
  75. package/dist/sigv4.js +118 -0
  76. package/dist/sigv4.js.map +1 -0
  77. package/dist/supabase.d.ts +9 -0
  78. package/dist/supabase.js +385 -0
  79. package/dist/supabase.js.map +1 -0
  80. package/dist/vercel.js +1 -1
  81. package/dist/vercel.js.map +1 -1
  82. package/dist/xata.d.ts +8 -0
  83. package/dist/xata.js +142 -0
  84. package/dist/xata.js.map +1 -0
  85. package/dist/xml.d.ts +25 -0
  86. package/dist/xml.js +211 -0
  87. package/dist/xml.js.map +1 -0
  88. package/package.json +11 -4
  89. package/recipes/amplify.yaml +147 -0
  90. package/recipes/auth0.yaml +178 -0
  91. package/recipes/azure_swa.yaml +116 -0
  92. package/recipes/cloudflare.yaml +108 -0
  93. package/recipes/cockroachdb.yaml +132 -0
  94. package/recipes/configcat.yaml +123 -0
  95. package/recipes/datadog.yaml +136 -0
  96. package/recipes/firebase.yaml +84 -0
  97. package/recipes/flagsmith.yaml +98 -0
  98. package/recipes/fly.yaml +97 -0
  99. package/recipes/fly_machines.yaml +67 -0
  100. package/recipes/gcs.yaml +102 -0
  101. package/recipes/github.yaml +124 -0
  102. package/recipes/growthbook.yaml +124 -0
  103. package/recipes/heroku.yaml +98 -0
  104. package/recipes/honeycomb.yaml +89 -0
  105. package/recipes/inngest.yaml +97 -0
  106. package/recipes/kinde.yaml +120 -0
  107. package/recipes/mongodb_atlas.yaml +119 -0
  108. package/recipes/okta.yaml +177 -0
  109. package/recipes/posthog.yaml +127 -0
  110. package/recipes/postmark.yaml +105 -0
  111. package/recipes/postmark_server.yaml +93 -0
  112. package/recipes/prisma.yaml +150 -0
  113. package/recipes/qstash.yaml +134 -0
  114. package/recipes/railway.yaml +130 -0
  115. package/recipes/render.yaml +103 -0
  116. package/recipes/resend.yaml +130 -0
  117. package/recipes/s3.yaml +108 -0
  118. package/recipes/sendgrid.yaml +165 -0
  119. package/recipes/sentry.yaml +158 -0
  120. package/recipes/split.yaml +121 -0
  121. package/recipes/statsig.yaml +124 -0
  122. package/recipes/stripe.yaml +310 -0
  123. package/recipes/stytch.yaml +113 -0
  124. package/recipes/svix.yaml +109 -0
  125. package/recipes/turso.yaml +98 -0
  126. package/recipes/unleash.yaml +149 -0
  127. package/recipes/upstash.yaml +130 -0
  128. package/recipes/vercel.yaml +116 -0
  129. package/recipes/workos.yaml +70 -0
@@ -0,0 +1,310 @@
1
+ /**
2
+ * Cloudflare adapter. One op, `pages_env`: the variables of a Cloudflare Pages project's `preview` or `production`
3
+ * deployment config (`deployment_configs.<env>.env_vars`), plain text (`vars`) and secret (`secrets`).
4
+ *
5
+ * The variables are a map on the project, not objects of their own, so `apply` is read-modify-write: it PATCHes only
6
+ * the keys this line manages (Cloudflare merges the map; `null` deletes a key), as an idempotent PATCH, then re-reads
7
+ * the project to check that what it sent landed and that no other key went missing. API facts and their sources are
8
+ * the numbered assumptions (CF1…) at the top of packages/sim/src/routes/cloudflare.ts.
9
+ *
10
+ * Pages has one set of preview variables shared by every preview deployment (CF8): there are no per-branch values.
11
+ * A key is therefore one resource per environment, `env:<target>:<NAME>`, whatever scope wrote it; a second scope
12
+ * (another pull request) that declares the same key with another value is refused with OWNED_BY_OTHER_SCOPE.
13
+ *
14
+ * Secret values are write-only (CF3): a `secret_text` variable is compared by presence and type, never by value.
15
+ * See `secretHash` and docs/plan-format.md (`cloudflare.pages_env`).
16
+ */
17
+ import { SponsonError, canonicalJson, markerKind, sha256 } from "@sponson/core";
18
+ import { ABSENT, SENSITIVE, assertNoPending, clientFor, desiredSide, optionalEnv, paramError, requireEnv, requireProvider, stringParam } from "./common.js";
19
+ import { ShapeError, isObject, isProviderError, obj } from "./http.js";
20
+ const ADAPTER = "cloudflare";
21
+ /** The environment Cloudflare reads; declared once, used by the code below and by the generated docs (`about`). */
22
+ const ABOUT = { credentialEnv: "CLOUDFLARE_API_TOKEN", baseUrlEnv: "CLOUDFLARE_API_URL", title: "Cloudflare Pages", category: "deploy", detect: { deps: ["wrangler", "@cloudflare/next-on-pages"], env: ["CLOUDFLARE_*"], files: ["wrangler.json", "wrangler.jsonc", "wrangler.toml"] } };
23
+ /** Cloudflare's API base URL (CF1). `CLOUDFLARE_API_URL` overrides it; tests and scenarios point that at the sim. */
24
+ export const CLOUDFLARE_DEFAULT_API_URL = "https://api.cloudflare.com/client/v4";
25
+ const TARGETS = ["preview", "production"];
26
+ /** The HTTP client and the project's path, from `providers.cloudflare.{account,project}`. */
27
+ function client(actx) {
28
+ const token = requireEnv(actx.env, ABOUT.credentialEnv, ADAPTER);
29
+ const account = requireProvider(actx, "account", ADAPTER);
30
+ const project = requireProvider(actx, "project", ADAPTER);
31
+ return {
32
+ api: clientFor(actx, ADAPTER, { baseUrl: optionalEnv(actx.env, ABOUT.baseUrlEnv) ?? CLOUDFLARE_DEFAULT_API_URL, token }),
33
+ path: `/accounts/${encodeURIComponent(account)}/pages/projects/${encodeURIComponent(project)}`,
34
+ };
35
+ }
36
+ // ---------------------------------------------------------------------------
37
+ // Response shape (CF2): { success, errors, messages, result: project }
38
+ // ---------------------------------------------------------------------------
39
+ /** One environment's `env_vars` (nullable in the schema) as a map. A secret's value is dropped whatever it says. */
40
+ function parseVars(v, what) {
41
+ const out = new Map();
42
+ if (v === null || v === undefined)
43
+ return out;
44
+ for (const [name, e] of Object.entries(obj(v, what))) {
45
+ if (e === null)
46
+ continue;
47
+ const entry = obj(e, `${what}.${name}`);
48
+ if (typeof entry.type !== "string")
49
+ throw new ShapeError(`expected ${what}.${name}.type to be a string`);
50
+ const readable = entry.type === "plain_text" && typeof entry.value === "string";
51
+ out.set(name, readable ? { type: entry.type, value: entry.value } : { type: entry.type });
52
+ }
53
+ return out;
54
+ }
55
+ function parseProject(body) {
56
+ const env = obj(body, "the response");
57
+ if (env.success !== true)
58
+ throw new ShapeError("expected `success` to be true");
59
+ const configs = obj(obj(env.result, "`result`").deployment_configs, "`result.deployment_configs`");
60
+ const of = (t) => {
61
+ const c = configs[t];
62
+ return c === null || c === undefined ? new Map() : parseVars(obj(c, `\`deployment_configs.${t}\``).env_vars, `\`deployment_configs.${t}.env_vars\``);
63
+ };
64
+ return { preview: of("preview"), production: of("production") };
65
+ }
66
+ async function readVars(c, target) {
67
+ return (await c.api.get(c.path, parseProject))[target];
68
+ }
69
+ /** PATCH a partial `env_vars` map (CF4): a value sets a key, `null` deletes it, keys not named are left alone. */
70
+ async function patchVars(c, target, vars) {
71
+ // Sets state rather than adding to it, so a dropped connection or a 5xx may be retried.
72
+ await c.api.patch(c.path, { deployment_configs: { [target]: { env_vars: vars } } }, undefined, { idempotent: true });
73
+ }
74
+ // ---------------------------------------------------------------------------
75
+ // Hashes: one canonical form for read, diff and apply
76
+ // ---------------------------------------------------------------------------
77
+ /** A plain-text variable: its type and value. */
78
+ function plainHash(value) {
79
+ return sha256(canonicalJson({ type: "plain_text", value }));
80
+ }
81
+ /**
82
+ * A secret: its type only. Cloudflare never returns a secret's value (CF3) and the adapter API offers no place to
83
+ * keep a fingerprint, so a secret is equal when it exists as `secret_text`. What that means: a value changed in the
84
+ * Cloudflare dashboard is not seen as drift; a changed value in the plan is not written unless the line sets
85
+ * `rewrite_secrets: true` (then every apply sends the secrets again). Deleting it, or turning it into plain text,
86
+ * is seen.
87
+ */
88
+ function secretHash() {
89
+ return sha256(canonicalJson({ type: "secret_text" }));
90
+ }
91
+ function liveHash(v) {
92
+ if (v.type === "plain_text")
93
+ return plainHash(v.value ?? "");
94
+ if (v.type === "secret_text")
95
+ return secretHash();
96
+ return sha256(canonicalJson({ type: v.type }));
97
+ }
98
+ function mapParam(params, name) {
99
+ const v = params[name];
100
+ if (v === undefined || v === null)
101
+ return {};
102
+ if (!isObject(v))
103
+ throw paramError(ADAPTER, `param \`${name}\` must be an object of NAME → value`, name);
104
+ return v;
105
+ }
106
+ function envScope(params) {
107
+ const target = stringParam(params, "target", ADAPTER, "preview");
108
+ if (!TARGETS.includes(target))
109
+ throw paramError(ADAPTER, `param \`target\` must be one of ${TARGETS.join(", ")} (got ${JSON.stringify(target)})`, "target");
110
+ const rewrite = params.rewrite_secrets;
111
+ if (rewrite !== undefined && rewrite !== null && typeof rewrite !== "boolean")
112
+ throw paramError(ADAPTER, "param `rewrite_secrets` must be true or false", "rewrite_secrets");
113
+ const values = new Map();
114
+ for (const [name, value] of Object.entries(mapParam(params, "vars")))
115
+ values.set(name, { value, type: "plain_text" });
116
+ for (const [name, value] of Object.entries(mapParam(params, "secrets"))) {
117
+ if (values.has(name))
118
+ throw paramError(ADAPTER, `${name} is in both \`vars\` and \`secrets\`; a variable is either plain text or secret`, "secrets");
119
+ values.set(name, { value, type: "secret_text" });
120
+ }
121
+ for (const name of values.keys())
122
+ if (name === "")
123
+ throw paramError(ADAPTER, "a variable name must not be empty", "vars");
124
+ return { target: target, values, rewriteSecrets: rewrite === true };
125
+ }
126
+ /** The target a run writes by default: production under `--env production`, preview otherwise. */
127
+ function targetFor(ctx) {
128
+ return ctx.env === "production" ? "production" : "preview";
129
+ }
130
+ /**
131
+ * Pages has exactly two variable sets, so the line must write the run's own environment. Ownership between scopes
132
+ * is decided among the scopes of one Sponson environment; a `target: production` line applied under `--env preview`
133
+ * would be invisible to the production scopes' ledgers (and a preview pull request's destroy would delete it).
134
+ */
135
+ function assertRunEnvironment(scope, ctx) {
136
+ if (scope.target === ctx.env)
137
+ return;
138
+ throw paramError(ADAPTER, `this line writes the Pages \`${scope.target}\` variables but the run's environment is \`${ctx.env}\`. Pages variables are shared by every deployment of an environment, so Sponson only writes them from a run of that environment: run with \`--env ${scope.target}\`, or limit the line with \`environments: [${scope.target}]\`.`, "target");
139
+ }
140
+ /** Identity: the environment and the name. No branch or scope: every preview deployment shares the set (CF8). */
141
+ function varKey(target, name) {
142
+ return `env:${target}:${name}`;
143
+ }
144
+ /** Inverse of varKey. A target never contains `:`; a name may. */
145
+ function parseVarKey(key) {
146
+ const m = /^env:(preview|production):(.+)$/.exec(key);
147
+ if (!m)
148
+ throw new SponsonError("INTERNAL", `${ADAPTER}: \`${key}\` is not a pages_env key`, { adapter: ADAPTER, key });
149
+ return { target: m[1], name: m[2] };
150
+ }
151
+ const SECRET_LABEL = ", secret)";
152
+ function varLabel(target, name, type) {
153
+ return `${name} (Pages ${target}${type === "secret_text" ? SECRET_LABEL : ")"}`;
154
+ }
155
+ function varRecord(target, name, v) {
156
+ return { key: varKey(target, name), id: name, hash: liveHash(v), label: varLabel(target, name, v.type) };
157
+ }
158
+ /** One declared variable's diff against its live record. */
159
+ function diffVar(scope, name, desired, live) {
160
+ const key = varKey(scope.target, name);
161
+ const label = varLabel(scope.target, name, desired.type);
162
+ const secret = desired.type === "secret_text";
163
+ const marker = markerKind(desired.value);
164
+ if (marker === "keep") {
165
+ if (live)
166
+ return { key, kind: "unchanged", label };
167
+ throw paramError(ADAPTER, `${label} is declared \`{ keep: true }\` but does not exist, so there is no value to keep. Give it a value or remove it.`, secret ? "secrets" : "vars");
168
+ }
169
+ const after = desiredSide(desired.value, secret);
170
+ if (!live)
171
+ return { key, kind: "create", label, before: ABSENT, after };
172
+ if (marker === null && !(secret && scope.rewriteSecrets)) {
173
+ const want = secret ? secretHash() : plainHash(String(desired.value));
174
+ if (live.hash === want)
175
+ return { key, kind: "unchanged", label };
176
+ }
177
+ return { key, kind: "update", label, before: SENSITIVE, after };
178
+ }
179
+ /** After a write: every variable sent is there as sent, and every other variable that was there still is. */
180
+ function verifyWrite(c, target, sent, before, after) {
181
+ const wrong = [...sent].filter(([name, s]) => {
182
+ const v = after.get(name);
183
+ return !v || v.type !== s.type || (s.type === "plain_text" && v.value !== s.value);
184
+ });
185
+ const lost = [...before.keys()].filter((name) => !sent.has(name) && !after.has(name));
186
+ if (wrong.length === 0 && lost.length === 0)
187
+ return;
188
+ const parts = [
189
+ ...(wrong.length ? [`does not show ${wrong.map(([n]) => n).join(", ")} as written`] : []),
190
+ ...(lost.length ? [`no longer has ${lost.join(", ")}, which this write did not name (another writer removed them, or the PATCH replaced the map instead of merging it)`] : []),
191
+ ];
192
+ throw new SponsonError("PROVIDER_RESPONSE", `${ADAPTER}: after PATCH ${c.path}, the ${target} env_vars ${parts.join("; ")}`, { adapter: ADAPTER, method: "PATCH", path: c.path, written: wrong.map(([n]) => n), lost });
193
+ }
194
+ const pagesEnv = {
195
+ outputs: {},
196
+ defaults(params, ctx) {
197
+ return { ...params, target: params.target ?? targetFor(ctx) };
198
+ },
199
+ writesEnvironment(params, ctx) {
200
+ return typeof params.target === "string" ? params.target : targetFor(ctx);
201
+ },
202
+ /**
203
+ * The environment's `env_vars` map is read-modify-write on one project object that every scope (and a run of the
204
+ * other environment, for the other map) writes, so the engine serialises writers with a parent lock (ADR 0019).
205
+ */
206
+ lockOn(params, provider) {
207
+ const { account, project } = provider;
208
+ if (typeof account !== "string" || account === "" || typeof project !== "string" || project === "")
209
+ return null;
210
+ const target = typeof params.target === "string" && params.target !== "" ? params.target : "preview";
211
+ return `cloudflare:${account}:pages:${project}:${target}:env`;
212
+ },
213
+ async read(actx, params) {
214
+ const scope = envScope(params);
215
+ assertRunEnvironment(scope, actx.ctx);
216
+ const live = await readVars(client(actx), scope.target);
217
+ const resources = [];
218
+ for (const name of scope.values.keys()) {
219
+ const v = live.get(name);
220
+ if (v)
221
+ resources.push(varRecord(scope.target, name, v));
222
+ }
223
+ return resources.length ? { resources, outputs: {} } : null;
224
+ },
225
+ diff(live, params) {
226
+ const scope = envScope(params);
227
+ const byKey = new Map((live?.resources ?? []).map((r) => [r.key, r]));
228
+ return [...scope.values].map(([name, desired]) => diffVar(scope, name, desired, byKey.get(varKey(scope.target, name))));
229
+ },
230
+ async apply(actx, params, live) {
231
+ assertNoPending(params, ADAPTER);
232
+ const scope = envScope(params);
233
+ assertRunEnvironment(scope, actx.ctx);
234
+ const diffs = new Map(pagesEnv.diff(live, params).map((d) => [d.key, d.kind]));
235
+ const sent = new Map();
236
+ for (const [name, d] of scope.values)
237
+ if (diffs.get(varKey(scope.target, name)) !== "unchanged")
238
+ sent.set(name, { type: d.type, value: String(d.value) });
239
+ const created = [...sent.keys()].map((n) => varKey(scope.target, n)).filter((k) => diffs.get(k) === "create");
240
+ if (sent.size === 0)
241
+ return { resources: live?.resources ?? [], outputs: {}, created: [] };
242
+ const c = client(actx);
243
+ // Read-modify-write: the variables before the write, to check afterwards that no other key was lost.
244
+ const before = await readVars(c, scope.target);
245
+ if (created.length)
246
+ await actx.intend(created);
247
+ actx.log(`set ${sent.size} Pages ${scope.target} variable(s): ${[...sent.keys()].join(", ")}`);
248
+ await patchVars(c, scope.target, Object.fromEntries(sent));
249
+ const after = await readVars(c, scope.target);
250
+ verifyWrite(c, scope.target, sent, before, after);
251
+ // A declared variable missing now was not written by this call (verifyWrite checked those): it vanished meanwhile.
252
+ const resources = [...scope.values.keys()].flatMap((name) => {
253
+ const v = after.get(name);
254
+ return v ? [varRecord(scope.target, name, v)] : [];
255
+ });
256
+ return { resources, outputs: {}, created };
257
+ },
258
+ /** `null` for each key still present, per environment; a project or key already gone is success. */
259
+ async destroy(actx, resources) {
260
+ const c = client(actx);
261
+ const byTarget = new Map();
262
+ for (const r of resources) {
263
+ const { target, name } = parseVarKey(r.key);
264
+ byTarget.set(target, [...(byTarget.get(target) ?? []), name]);
265
+ }
266
+ for (const [target, names] of byTarget) {
267
+ let live;
268
+ try {
269
+ live = await readVars(c, target);
270
+ }
271
+ catch (e) {
272
+ if (isProviderError(e, "PROVIDER_NOT_FOUND"))
273
+ return;
274
+ throw e;
275
+ }
276
+ const present = names.filter((n) => live.has(n));
277
+ if (present.length)
278
+ await patchVars(c, target, Object.fromEntries(present.map((n) => [n, null])));
279
+ }
280
+ },
281
+ /** Every variable of the line's environment, for drift (`unmanaged`) and `sponson init`. */
282
+ async listScope(actx, params) {
283
+ const scope = envScope(params);
284
+ const live = await readVars(client(actx), scope.target);
285
+ return [...live].map(([name, v]) => varRecord(scope.target, name, v));
286
+ },
287
+ /** One line per environment; every variable `{ keep: true }` under `vars` or `secrets`, never its value. */
288
+ adopt(resources) {
289
+ const groups = new Map();
290
+ for (const r of resources) {
291
+ const { target, name } = parseVarKey(r.key);
292
+ const g = groups.get(target) ?? { vars: {}, secrets: {}, keys: [] };
293
+ (r.label?.endsWith(SECRET_LABEL) ? g.secrets : g.vars)[name] = { keep: true };
294
+ g.keys.push(r.key);
295
+ groups.set(target, g);
296
+ }
297
+ return [...groups].map(([target, g]) => ({
298
+ id: `pages-env-${target}`,
299
+ params: { target, ...(Object.keys(g.vars).length ? { vars: g.vars } : {}), ...(Object.keys(g.secrets).length ? { secrets: g.secrets } : {}) },
300
+ keys: g.keys,
301
+ }));
302
+ },
303
+ };
304
+ /**
305
+ * The Cloudflare adapter (`adapter: cloudflare` in a plan): op `pages_env` manages a Pages project's preview or
306
+ * production variables. Needs `CLOUDFLARE_API_TOKEN` (account permission "Cloudflare Pages Edit") and
307
+ * `providers.cloudflare.{account,project}`.
308
+ */
309
+ export const cloudflareAdapter = { name: ADAPTER, ops: { pages_env: pagesEnv }, about: ABOUT };
310
+ //# sourceMappingURL=cloudflare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare.js","sourceRoot":"","sources":["../src/cloudflare.ts"],"names":[],"mappings":"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"}
package/dist/common.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { SponsonError, type AdapterContext, type DiffSide, type ResolvedParams, type ResourceDiff, type ResourceRecord } from "@sponson/core";
2
- import { type ApiClient } from "./http.js";
2
+ import { type ApiClient, type ApiClientOptions } from "./http.js";
3
3
  /**
4
4
  * The adapter authoring API. These helpers are stable and exported from `@sponson/adapters`; third-party
5
5
  * adapters should use them rather than re-implementing the contracts they encode:
@@ -40,11 +40,7 @@ export declare function optionalProvider(actx: AdapterContext, key: string): str
40
40
  * const site = await api.get(`/sites/${stringParam(params, "name", "acme")}`);
41
41
  * ```
42
42
  */
43
- export declare function clientFor(actx: AdapterContext, adapter: string, opts: {
44
- baseUrl: string;
45
- token: string;
46
- authHeader?: "bearer" | `header:${string}`;
47
- }): ApiClient;
43
+ export declare function clientFor(actx: AdapterContext, adapter: string, opts: Pick<ApiClientOptions, "baseUrl" | "token" | "authHeader" | "headers" | "encoding" | "contentType" | "accept" | "signer">): ApiClient;
48
44
  /**
49
45
  * The PARAM_INVALID error for a bad param, prefixed with the adapter name. Throw it from `diff`/`apply`
50
46
  * validation.
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /** The hash algorithms supported, as a challenge names them. */
2
+ export type DigestAlgorithm = "MD5" | "MD5-sess" | "SHA-256" | "SHA-256-sess";
3
+ /** One `Digest` challenge of a `WWW-Authenticate` header. */
4
+ export interface DigestChallenge {
5
+ realm: string;
6
+ nonce: string;
7
+ opaque?: string;
8
+ algorithm: DigestAlgorithm;
9
+ /** The `qop` values the server offers. */
10
+ qop: string[];
11
+ /** The previous nonce was merely stale: retry with the new one, the credentials were fine. */
12
+ stale: boolean;
13
+ }
14
+ /** One auth scheme and its parameters, as written in a `WWW-Authenticate` header. */
15
+ interface RawChallenge {
16
+ scheme: string;
17
+ params: Record<string, string>;
18
+ }
19
+ /** Every challenge in a `WWW-Authenticate` value (several headers arrive joined with `, `). */
20
+ export declare function parseChallenges(header: string): RawChallenge[];
21
+ /**
22
+ * The challenge to answer: a Digest one offering `qop=auth`, SHA-256 preferred over MD5. A reason when there is
23
+ * none Sponson can answer.
24
+ */
25
+ export declare function pickChallenge(header: string | null): DigestChallenge | {
26
+ problem: string;
27
+ };
28
+ /** What an answer is computed from. `nc` counts the requests made with this nonce (1, 2, …). */
29
+ export interface DigestInput {
30
+ challenge: DigestChallenge;
31
+ username: string;
32
+ password: string;
33
+ method: string;
34
+ /** The request target as sent: path and query. */
35
+ uri: string;
36
+ nc: number;
37
+ /** The client nonce; random when absent. */
38
+ cnonce?: string;
39
+ }
40
+ /** The `response` value of RFC 7616 §3.4.1 for `qop=auth`. */
41
+ export declare function digestResponse(input: DigestInput & {
42
+ cnonce: string;
43
+ }): string;
44
+ /** The `Authorization` header value answering `challenge`. */
45
+ export declare function digestAuthorization(input: DigestInput): string;
46
+ export {};
package/dist/digest.js ADDED
@@ -0,0 +1,129 @@
1
+ /**
2
+ * HTTP Digest access authentication (RFC 7616), client side: parse a `WWW-Authenticate` challenge and compute the
3
+ * `Authorization` answer. MD5 and SHA-256 (and their `-sess` variants), `qop=auth` only: `auth-int` (a hash of the
4
+ * body) and the legacy no-qop form of RFC 2069 are refused, as is `userhash`. Pure: the client nonce is a
5
+ * parameter. Checked against the worked example of RFC 7616 §3.9.1 (digest.test.ts).
6
+ *
7
+ * Used by the generic `http` adapter for `auth: { digest: … }` (MongoDB Atlas Admin API keys).
8
+ */
9
+ import { createHash, randomBytes } from "node:crypto";
10
+ const TOKEN = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+/;
11
+ /** A quoted-string at `s[i]` (which is `"`): its unescaped value and the index after the closing quote. */
12
+ function quoted(s, i) {
13
+ let value = "";
14
+ let j = i + 1;
15
+ while (j < s.length && s[j] !== '"') {
16
+ if (s[j] === "\\" && j + 1 < s.length)
17
+ j++;
18
+ value += s[j];
19
+ j++;
20
+ }
21
+ return { value, end: j + 1 };
22
+ }
23
+ /** Skip spaces and commas. */
24
+ function skipSeparators(s, i) {
25
+ while (i < s.length && /[\s,]/.test(s[i]))
26
+ i++;
27
+ return i;
28
+ }
29
+ /** One `name=value` (token or quoted-string) at `i`, or null when what is there is not a parameter (a new scheme). */
30
+ function param(s, i) {
31
+ const name = TOKEN.exec(s.slice(i))?.[0];
32
+ if (!name)
33
+ return null;
34
+ let j = i + name.length;
35
+ while (s[j] === " ")
36
+ j++;
37
+ if (s[j] !== "=")
38
+ return null;
39
+ j++;
40
+ while (s[j] === " ")
41
+ j++;
42
+ if (s[j] === '"') {
43
+ const q = quoted(s, j);
44
+ return { name: name.toLowerCase(), value: q.value, end: q.end };
45
+ }
46
+ const value = TOKEN.exec(s.slice(j))?.[0] ?? "";
47
+ return { name: name.toLowerCase(), value, end: j + value.length };
48
+ }
49
+ /** Every challenge in a `WWW-Authenticate` value (several headers arrive joined with `, `). */
50
+ export function parseChallenges(header) {
51
+ const out = [];
52
+ let i = skipSeparators(header, 0);
53
+ while (i < header.length) {
54
+ const scheme = TOKEN.exec(header.slice(i))?.[0];
55
+ if (!scheme)
56
+ break;
57
+ const challenge = { scheme: scheme.toLowerCase(), params: {} };
58
+ out.push(challenge);
59
+ i = skipSeparators(header, i + scheme.length);
60
+ for (let p = param(header, i); p; p = param(header, i)) {
61
+ challenge.params[p.name] = p.value;
62
+ i = skipSeparators(header, p.end);
63
+ }
64
+ }
65
+ return out;
66
+ }
67
+ const ALGORITHMS = { "md5": "MD5", "md5-sess": "MD5-sess", "sha-256": "SHA-256", "sha-256-sess": "SHA-256-sess" };
68
+ function toDigest(c) {
69
+ const algorithm = ALGORITHMS[(c.params.algorithm ?? "MD5").toLowerCase()];
70
+ const { realm, nonce } = c.params;
71
+ if (c.scheme !== "digest" || !algorithm || realm === undefined || !nonce)
72
+ return null;
73
+ const qop = (c.params.qop ?? "").split(",").map((q) => q.trim().toLowerCase()).filter((q) => q !== "");
74
+ return { realm, nonce, algorithm, qop, stale: (c.params.stale ?? "").toLowerCase() === "true", ...(c.params.opaque !== undefined ? { opaque: c.params.opaque } : {}) };
75
+ }
76
+ /**
77
+ * The challenge to answer: a Digest one offering `qop=auth`, SHA-256 preferred over MD5. A reason when there is
78
+ * none Sponson can answer.
79
+ */
80
+ export function pickChallenge(header) {
81
+ if (!header)
82
+ return { problem: "the 401 carries no WWW-Authenticate challenge" };
83
+ const digests = parseChallenges(header).map(toDigest).filter((c) => c !== null);
84
+ if (digests.length === 0)
85
+ return { problem: "the server offers no Digest challenge with an MD5 or SHA-256 algorithm" };
86
+ const usable = digests.filter((c) => c.qop.includes("auth"));
87
+ if (usable.length === 0)
88
+ return { problem: "the server's Digest challenge does not offer qop=auth (auth-int and RFC 2069 digests are not supported)" };
89
+ return usable.find((c) => c.algorithm.startsWith("SHA-256")) ?? usable[0];
90
+ }
91
+ function hash(algorithm, s) {
92
+ return createHash(algorithm.startsWith("SHA-256") ? "sha256" : "md5").update(s, "utf8").digest("hex");
93
+ }
94
+ /** The `response` value of RFC 7616 §3.4.1 for `qop=auth`. */
95
+ export function digestResponse(input) {
96
+ const { challenge: c, username, password, method, uri, cnonce } = input;
97
+ const nc = ncOf(input.nc);
98
+ let ha1 = hash(c.algorithm, `${username}:${c.realm}:${password}`);
99
+ if (c.algorithm.endsWith("-sess"))
100
+ ha1 = hash(c.algorithm, `${ha1}:${c.nonce}:${cnonce}`);
101
+ const ha2 = hash(c.algorithm, `${method.toUpperCase()}:${uri}`);
102
+ return hash(c.algorithm, `${ha1}:${c.nonce}:${nc}:${cnonce}:auth:${ha2}`);
103
+ }
104
+ function ncOf(n) {
105
+ return n.toString(16).padStart(8, "0");
106
+ }
107
+ function quote(s) {
108
+ return `"${s.replace(/(["\\])/g, "\\$1")}"`;
109
+ }
110
+ /** The `Authorization` header value answering `challenge`. */
111
+ export function digestAuthorization(input) {
112
+ const cnonce = input.cnonce ?? randomBytes(16).toString("hex");
113
+ const c = input.challenge;
114
+ const response = digestResponse({ ...input, cnonce });
115
+ const parts = [
116
+ `username=${quote(input.username)}`,
117
+ `realm=${quote(c.realm)}`,
118
+ `uri=${quote(input.uri)}`,
119
+ `algorithm=${c.algorithm}`,
120
+ `nonce=${quote(c.nonce)}`,
121
+ `nc=${ncOf(input.nc)}`,
122
+ `cnonce=${quote(cnonce)}`,
123
+ "qop=auth",
124
+ `response=${quote(response)}`,
125
+ ...(c.opaque !== undefined ? [`opaque=${quote(c.opaque)}`] : []),
126
+ ];
127
+ return `Digest ${parts.join(", ")}`;
128
+ }
129
+ //# sourceMappingURL=digest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digest.js","sourceRoot":"","sources":["../src/digest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type ResourceAdapter } from "@sponson/core";
2
+ /** DigitalOcean's API base URL (DO1). `DIGITALOCEAN_API_URL` overrides it; tests point that at the sim. */
3
+ export declare const DIGITALOCEAN_DEFAULT_API_URL = "https://api.digitalocean.com";
4
+ /** The DigitalOcean adapter (`adapter: digitalocean` in a plan). Registered in `createRegistry()`; needs `DIGITALOCEAN_ACCESS_TOKEN`. */
5
+ export declare const digitaloceanAdapter: ResourceAdapter;