@sponson/adapters 0.4.0 → 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 (127) 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/cloudflare.d.ts +25 -0
  8. package/dist/cloudflare.js +310 -0
  9. package/dist/cloudflare.js.map +1 -0
  10. package/dist/common.d.ts +2 -6
  11. package/dist/common.js.map +1 -1
  12. package/dist/digest.d.ts +46 -0
  13. package/dist/digest.js +129 -0
  14. package/dist/digest.js.map +1 -0
  15. package/dist/digitalocean.d.ts +5 -0
  16. package/dist/digitalocean.js +243 -0
  17. package/dist/digitalocean.js.map +1 -0
  18. package/dist/http-adapter-action.d.ts +63 -0
  19. package/dist/http-adapter-action.js +369 -0
  20. package/dist/http-adapter-action.js.map +1 -0
  21. package/dist/http-adapter-auth.d.ts +88 -0
  22. package/dist/http-adapter-auth.js +437 -0
  23. package/dist/http-adapter-auth.js.map +1 -0
  24. package/dist/http-adapter-client.d.ts +51 -0
  25. package/dist/http-adapter-client.js +156 -0
  26. package/dist/http-adapter-client.js.map +1 -0
  27. package/dist/http-adapter-graphql.d.ts +39 -0
  28. package/dist/http-adapter-graphql.js +157 -0
  29. package/dist/http-adapter-graphql.js.map +1 -0
  30. package/dist/http-adapter-list.d.ts +33 -0
  31. package/dist/http-adapter-list.js +421 -0
  32. package/dist/http-adapter-list.js.map +1 -0
  33. package/dist/http-adapter-resource.d.ts +29 -0
  34. package/dist/http-adapter-resource.js +462 -0
  35. package/dist/http-adapter-resource.js.map +1 -0
  36. package/dist/http-adapter-spec.d.ts +216 -0
  37. package/dist/http-adapter-spec.js +660 -0
  38. package/dist/http-adapter-spec.js.map +1 -0
  39. package/dist/http-adapter.d.ts +16 -0
  40. package/dist/http-adapter.js +28 -0
  41. package/dist/http-adapter.js.map +1 -0
  42. package/dist/http.d.ts +61 -2
  43. package/dist/http.js +79 -18
  44. package/dist/http.js.map +1 -1
  45. package/dist/index.d.ts +12 -0
  46. package/dist/index.js +24 -2
  47. package/dist/index.js.map +1 -1
  48. package/dist/launchdarkly.d.ts +15 -0
  49. package/dist/launchdarkly.js +337 -0
  50. package/dist/launchdarkly.js.map +1 -0
  51. package/dist/manual.d.ts +13 -0
  52. package/dist/manual.js +201 -0
  53. package/dist/manual.js.map +1 -0
  54. package/dist/neon.js +1 -1
  55. package/dist/neon.js.map +1 -1
  56. package/dist/netlify.d.ts +18 -0
  57. package/dist/netlify.js +436 -0
  58. package/dist/netlify.js.map +1 -0
  59. package/dist/planetscale.d.ts +10 -0
  60. package/dist/planetscale.js +311 -0
  61. package/dist/planetscale.js.map +1 -0
  62. package/dist/providers.d.ts +26 -0
  63. package/dist/providers.js +36 -0
  64. package/dist/providers.js.map +1 -0
  65. package/dist/recipes.d.ts +167 -0
  66. package/dist/recipes.js +246 -0
  67. package/dist/recipes.js.map +1 -0
  68. package/dist/secrets.d.ts +44 -0
  69. package/dist/secrets.js +279 -0
  70. package/dist/secrets.js.map +1 -1
  71. package/dist/sigv4.d.ts +56 -0
  72. package/dist/sigv4.js +118 -0
  73. package/dist/sigv4.js.map +1 -0
  74. package/dist/supabase.d.ts +9 -0
  75. package/dist/supabase.js +385 -0
  76. package/dist/supabase.js.map +1 -0
  77. package/dist/vercel.js +1 -1
  78. package/dist/vercel.js.map +1 -1
  79. package/dist/xata.d.ts +8 -0
  80. package/dist/xata.js +142 -0
  81. package/dist/xata.js.map +1 -0
  82. package/dist/xml.d.ts +25 -0
  83. package/dist/xml.js +211 -0
  84. package/dist/xml.js.map +1 -0
  85. package/package.json +11 -4
  86. package/recipes/amplify.yaml +147 -0
  87. package/recipes/auth0.yaml +178 -0
  88. package/recipes/azure_swa.yaml +116 -0
  89. package/recipes/cloud_run.yaml +97 -0
  90. package/recipes/cloudflare.yaml +108 -0
  91. package/recipes/cockroachdb.yaml +132 -0
  92. package/recipes/configcat.yaml +123 -0
  93. package/recipes/datadog.yaml +136 -0
  94. package/recipes/firebase.yaml +84 -0
  95. package/recipes/flagsmith.yaml +98 -0
  96. package/recipes/fly.yaml +97 -0
  97. package/recipes/fly_machines.yaml +67 -0
  98. package/recipes/gcs.yaml +102 -0
  99. package/recipes/github.yaml +123 -0
  100. package/recipes/growthbook.yaml +124 -0
  101. package/recipes/heroku.yaml +98 -0
  102. package/recipes/honeycomb.yaml +89 -0
  103. package/recipes/inngest.yaml +97 -0
  104. package/recipes/kinde.yaml +120 -0
  105. package/recipes/mongodb_atlas.yaml +119 -0
  106. package/recipes/okta.yaml +177 -0
  107. package/recipes/posthog.yaml +127 -0
  108. package/recipes/postmark.yaml +105 -0
  109. package/recipes/postmark_server.yaml +93 -0
  110. package/recipes/prisma.yaml +150 -0
  111. package/recipes/qstash.yaml +134 -0
  112. package/recipes/railway.yaml +130 -0
  113. package/recipes/render.yaml +103 -0
  114. package/recipes/resend.yaml +130 -0
  115. package/recipes/s3.yaml +108 -0
  116. package/recipes/sendgrid.yaml +165 -0
  117. package/recipes/sentry.yaml +158 -0
  118. package/recipes/split.yaml +121 -0
  119. package/recipes/statsig.yaml +124 -0
  120. package/recipes/stripe.yaml +310 -0
  121. package/recipes/stytch.yaml +113 -0
  122. package/recipes/svix.yaml +109 -0
  123. package/recipes/turso.yaml +98 -0
  124. package/recipes/unleash.yaml +149 -0
  125. package/recipes/upstash.yaml +130 -0
  126. package/recipes/vercel.yaml +116 -0
  127. package/recipes/workos.yaml +70 -0
@@ -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;
@@ -0,0 +1,243 @@
1
+ /**
2
+ * DigitalOcean App Platform adapter: an app per scope, created from an app spec the plan carries whole (its
3
+ * environment variables included), and waited for until its deployment is live. App Platform has no native pull
4
+ * request previews; this is the app per pull request that DigitalOcean's GitHub action otherwise makes. The API
5
+ * assumptions it relies on are numbered DO1… at the top of packages/sim/src/routes/digitalocean.ts.
6
+ *
7
+ * - Key: `app:<spec.name>` (names are unique in an account, DO3). Id: the app's id.
8
+ * - Hash: the spec's fields the plan declares, read back from the live spec (the platform adds defaults, DO6;
9
+ * those are not the plan's), with the values of `SECRET` variables left out (they read back encrypted, DO7). A
10
+ * console edit of a declared field is `changed` drift; a secret's value edited in the console is not seen.
11
+ * - Writes: `PUT` of the whole spec (DO4), so a field set only in the console is lost on the next update. Every
12
+ * create and update starts a deployment, which `apply` waits for (`wait: false` to skip).
13
+ */
14
+ import { setTimeout as sleep } from "node:timers/promises";
15
+ import { SponsonError, canonicalJson, markerKind, sha256 } from "@sponson/core";
16
+ // Only the stable authoring API exported from `@sponson/adapters` (listed in CONTRIBUTING.md).
17
+ import { assertNoPending, clientFor, deleteIgnoringNotFound, desiredSide, optionalEnv, paramError, requireEnv } from "./common.js";
18
+ import { ShapeError, isObject, isProviderError, listAll } from "./http.js";
19
+ const ADAPTER = "digitalocean";
20
+ /** The environment DigitalOcean reads (doctl's variable); declared once, used here and by the generated docs. */
21
+ const ABOUT = { credentialEnv: "DIGITALOCEAN_ACCESS_TOKEN", baseUrlEnv: "DIGITALOCEAN_API_URL", title: "DigitalOcean App Platform", category: "deploy", detect: { env: ["DIGITALOCEAN_*"], files: [".do/app.yaml", ".do/deploy.template.yaml"] } };
22
+ /** DigitalOcean's API base URL (DO1). `DIGITALOCEAN_API_URL` overrides it; tests point that at the sim. */
23
+ export const DIGITALOCEAN_DEFAULT_API_URL = "https://api.digitalocean.com";
24
+ /** How often a deployment is polled, and for how long (milliseconds; overridable for tests). */
25
+ const POLL_MS = { env: "SPONSON_DIGITALOCEAN_POLL_MS", fallback: 5000 };
26
+ const DEPLOY_TIMEOUT_MS = { env: "SPONSON_DIGITALOCEAN_DEPLOY_TIMEOUT_MS", fallback: 20 * 60 * 1000 };
27
+ function msFromEnv(env, s) {
28
+ const raw = optionalEnv(env, s.env);
29
+ const n = Number(raw);
30
+ return raw !== undefined && Number.isFinite(n) && n >= 0 ? n : s.fallback;
31
+ }
32
+ function client(actx) {
33
+ const token = requireEnv(actx.env, ABOUT.credentialEnv, ADAPTER);
34
+ return clientFor(actx, ADAPTER, { baseUrl: optionalEnv(actx.env, ABOUT.baseUrlEnv) ?? DIGITALOCEAN_DEFAULT_API_URL, token });
35
+ }
36
+ function parseApp(v) {
37
+ if (!isObject(v) || typeof v.id !== "string" || !isObject(v.spec))
38
+ throw new ShapeError("expected an app with `id` and `spec`");
39
+ const dep = [v.pending_deployment, v.in_progress_deployment].find((d) => isObject(d) && typeof d.id === "string");
40
+ return { id: v.id, spec: v.spec, ...(typeof v.live_url === "string" && v.live_url !== "" ? { liveUrl: v.live_url } : {}), ...(dep ? { deployment: dep.id } : {}) };
41
+ }
42
+ function appOf(body) {
43
+ if (!isObject(body))
44
+ throw new ShapeError("expected `{ app }`");
45
+ return parseApp(body.app);
46
+ }
47
+ // ---------------------------------------------------------------------------
48
+ // The spec and its hash
49
+ // ---------------------------------------------------------------------------
50
+ /** The plan's spec; PARAM_INVALID unless it is a map with a `name`. */
51
+ function specParam(params) {
52
+ const spec = params.spec;
53
+ if (!isObject(spec))
54
+ throw paramError(ADAPTER, "param `spec` is required: the whole app spec, as a map", "spec");
55
+ if (markerKind(spec.name) === null && (typeof spec.name !== "string" || spec.name === ""))
56
+ throw paramError(ADAPTER, "`spec.name` is required: the app's name, unique in the account", "spec.name");
57
+ return spec;
58
+ }
59
+ /** `live` reduced to the fields `desired` declares, recursively (maps by key, lists by position). */
60
+ function projectSpec(live, desired) {
61
+ if (isObject(desired))
62
+ return Object.fromEntries(Object.entries(desired).map(([k, v]) => [k, projectSpec(isObject(live) ? live[k] : undefined, v)]));
63
+ if (Array.isArray(desired))
64
+ return desired.map((d, i) => projectSpec(Array.isArray(live) ? live[i] : undefined, d));
65
+ return live ?? null;
66
+ }
67
+ /** The spec with the value of every `type: SECRET` variable replaced by a placeholder: it reads back encrypted (DO7). */
68
+ function maskSecrets(v) {
69
+ if (Array.isArray(v))
70
+ return v.map(maskSecrets);
71
+ if (!isObject(v))
72
+ return v;
73
+ const out = Object.fromEntries(Object.entries(v).map(([k, x]) => [k, maskSecrets(x)]));
74
+ if (out.type === "SECRET" && "value" in out)
75
+ out.value = "(secret)";
76
+ return out;
77
+ }
78
+ function specHash(spec) {
79
+ return sha256(canonicalJson(maskSecrets(spec)));
80
+ }
81
+ const PREFIX = "app:";
82
+ function appRecord(name, id, hash) {
83
+ return { key: `${PREFIX}${name}`, id, hash, label: `DigitalOcean app ${name}` };
84
+ }
85
+ function outputsOf(app) {
86
+ return { app_id: app.id, ...(app.liveUrl ? { live_url: app.liveUrl } : {}) };
87
+ }
88
+ /** The first pending or secret marker anywhere in the spec. */
89
+ function firstMarker(v) {
90
+ const kind = markerKind(v);
91
+ if (kind === "pending" || kind === "secret")
92
+ return v;
93
+ const children = Array.isArray(v) ? v : isObject(v) ? Object.values(v) : [];
94
+ for (const c of children) {
95
+ const m = firstMarker(c);
96
+ if (m !== undefined)
97
+ return m;
98
+ }
99
+ return undefined;
100
+ }
101
+ // ---------------------------------------------------------------------------
102
+ // Reading, waiting
103
+ // ---------------------------------------------------------------------------
104
+ /** What `read` found, kept for `apply` of the same inspection. */
105
+ const found = new WeakMap();
106
+ /** The app named `name`, from the paged list (DO2, DO3); null when there is none. */
107
+ async function findApp(api, name) {
108
+ const apps = await listAll(api, "/v2/apps?per_page=100", (body, n) => {
109
+ if (!isObject(body))
110
+ throw new ShapeError("expected `{ apps, links }`");
111
+ const list = Array.isArray(body.apps) ? body.apps.map(parseApp) : [];
112
+ const pages = isObject(body.links) && isObject(body.links.pages) ? body.links.pages : {};
113
+ return { items: list, next: typeof pages.next === "string" ? { page: String(n + 2) } : null };
114
+ });
115
+ return apps.find((a) => a.spec.name === name) ?? null;
116
+ }
117
+ /** The phase of a deployment (DO5). */
118
+ async function phaseOf(api, app, deployment) {
119
+ return api.get(`/v2/apps/${encodeURIComponent(app)}/deployments/${encodeURIComponent(deployment)}`, (b) => {
120
+ if (!isObject(b) || !isObject(b.deployment) || typeof b.deployment.phase !== "string")
121
+ throw new ShapeError("expected `{ deployment: { phase } }`");
122
+ return b.deployment.phase;
123
+ });
124
+ }
125
+ const DONE = ["ACTIVE", "SUPERSEDED"];
126
+ const FAILED = ["ERROR", "CANCELED"];
127
+ /** Poll the deployment a write started until it is live (DO5); a failed one fails the line. */
128
+ async function waitDeployed(actx, api, name, app) {
129
+ if (!app.deployment)
130
+ return app;
131
+ const deadline = Date.now() + msFromEnv(actx.env, DEPLOY_TIMEOUT_MS);
132
+ for (;;) {
133
+ const phase = await phaseOf(api, app.id, app.deployment);
134
+ if (DONE.includes(phase))
135
+ return api.get(`/v2/apps/${encodeURIComponent(app.id)}`, appOf);
136
+ if (FAILED.includes(phase))
137
+ throw new SponsonError("PROVIDER_INVALID", `digitalocean: the deployment of app ${name} ended ${phase}; see its build and deploy logs`, { adapter: ADAPTER, app: name });
138
+ if (Date.now() > deadline) {
139
+ throw new SponsonError("WAIT_TIMEOUT", `digitalocean: app ${name} is not deployed after ${msFromEnv(actx.env, DEPLOY_TIMEOUT_MS)}ms (${DEPLOY_TIMEOUT_MS.env}); run again to keep waiting`, { adapter: ADAPTER, app: name });
140
+ }
141
+ actx.log(`app ${name}: deployment ${phase}`);
142
+ await sleep(msFromEnv(actx.env, POLL_MS));
143
+ }
144
+ }
145
+ // ---------------------------------------------------------------------------
146
+ // Writing
147
+ // ---------------------------------------------------------------------------
148
+ function waits(params) {
149
+ if (params.wait !== undefined && typeof params.wait !== "boolean")
150
+ throw paramError(ADAPTER, "param `wait` must be true or false", "wait");
151
+ return params.wait !== false;
152
+ }
153
+ async function update(actx, api, spec, existing, wait) {
154
+ const name = String(spec.name);
155
+ actx.log(`update app ${name}`);
156
+ const app = await api.put(`/v2/apps/${encodeURIComponent(existing.id)}`, { spec }, appOf);
157
+ const done = wait ? await waitDeployed(actx, api, name, app) : app;
158
+ return { resources: [appRecord(name, done.id, specHash(spec))], outputs: outputsOf(done), created: [] };
159
+ }
160
+ async function create(actx, api, spec, wait) {
161
+ const name = String(spec.name);
162
+ const key = `${PREFIX}${name}`;
163
+ await actx.intend([key]);
164
+ actx.log(`create app ${name}`);
165
+ let app;
166
+ try {
167
+ app = await api.post("/v2/apps", { spec }, appOf);
168
+ }
169
+ catch (e) {
170
+ if (!isProviderError(e, "PROVIDER_CONFLICT"))
171
+ throw e;
172
+ // It exists already (DO3): ours from a create whose answer was lost, or someone else's. Not created by this
173
+ // call; the engine claims it when an earlier intent of ours named it.
174
+ const existing = await findApp(api, name);
175
+ if (!existing)
176
+ throw e;
177
+ return update(actx, api, spec, existing, wait);
178
+ }
179
+ const done = wait ? await waitDeployed(actx, api, name, app) : app;
180
+ return { resources: [appRecord(name, done.id, specHash(spec))], outputs: outputsOf(done), created: [key] };
181
+ }
182
+ function pendingDiff(name, marker) {
183
+ const key = markerKind(name) !== null ? `${PREFIX}(pending)` : `${PREFIX}${String(name)}`;
184
+ return [{ key, kind: "create", label: `DigitalOcean app ${String(name)}`, before: { state: "absent" }, after: desiredSide(marker, false) }];
185
+ }
186
+ /** A spec shown by its hash: it may hold resolved secret values, which never belong in a diff. */
187
+ function specSide(spec) {
188
+ return { state: "literal", value: `spec ${specHash(spec).slice(0, 12)}` };
189
+ }
190
+ const app = {
191
+ outputs: { app_id: { available: "immediate" }, live_url: { available: "immediate" } },
192
+ async read(actx, params) {
193
+ const spec = specParam(params);
194
+ if (markerKind(spec.name) !== null)
195
+ return null;
196
+ const live = await findApp(client(actx), String(spec.name));
197
+ if (!live)
198
+ return null;
199
+ const state = { resources: [appRecord(String(spec.name), live.id, specHash(projectSpec(live.spec, spec)))], outputs: outputsOf(live) };
200
+ found.set(state, live);
201
+ return state;
202
+ },
203
+ diff(live, params) {
204
+ const spec = specParam(params);
205
+ const marker = firstMarker(spec);
206
+ const key = `${PREFIX}${String(spec.name)}`;
207
+ const label = `DigitalOcean app ${String(spec.name)}`;
208
+ const current = live?.resources.find((r) => r.key === key);
209
+ if (marker !== undefined && !current)
210
+ return pendingDiff(spec.name, marker);
211
+ if (!current)
212
+ return [{ key, kind: "create", label, before: { state: "absent" }, after: specSide(spec) }];
213
+ if (marker !== undefined)
214
+ return [{ key, kind: "update", label, before: { state: "literal", value: `spec ${current.hash.slice(0, 12)}` }, after: desiredSide(marker, false) }];
215
+ if (current.hash === specHash(spec))
216
+ return [{ key, kind: "unchanged", label }];
217
+ return [{ key, kind: "update", label, before: { state: "literal", value: `spec ${current.hash.slice(0, 12)}` }, after: specSide(spec) }];
218
+ },
219
+ async apply(actx, params, live) {
220
+ assertNoPending(params, ADAPTER);
221
+ const spec = specParam(params);
222
+ const wait = waits(params);
223
+ const api = client(actx);
224
+ const key = `${PREFIX}${String(spec.name)}`;
225
+ const current = live?.resources.find((r) => r.key === key);
226
+ const existing = live ? found.get(live) : undefined;
227
+ if (current && live && current.hash === specHash(spec))
228
+ return { resources: live.resources, outputs: live.outputs, created: [] };
229
+ if (existing)
230
+ return update(actx, api, spec, existing, wait);
231
+ return create(actx, api, spec, wait);
232
+ },
233
+ async destroy(actx, resources) {
234
+ const api = client(actx);
235
+ // An intent the engine could not locate has no id: nothing is deleted on a guess.
236
+ for (const r of resources)
237
+ if (r.id !== "")
238
+ await deleteIgnoringNotFound(api, `/v2/apps/${encodeURIComponent(r.id)}`);
239
+ },
240
+ };
241
+ /** The DigitalOcean adapter (`adapter: digitalocean` in a plan). Registered in `createRegistry()`; needs `DIGITALOCEAN_ACCESS_TOKEN`. */
242
+ export const digitaloceanAdapter = { name: ADAPTER, ops: { app }, about: ABOUT };
243
+ //# sourceMappingURL=digitalocean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"digitalocean.js","sourceRoot":"","sources":["../src/digitalocean.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * `http.action`: one request (or GraphQL request) sent when the line's trigger changes, for side effects with
3
+ * nothing to read back or delete: an Inngest sync of a preview deployment, a cache purge, a deploy notification.
4
+ * See ADR 0022 and docs/plan-format.md#httpaction.
5
+ *
6
+ * The engine owns the line's state (`OpSpec.action`): the ledger key is `action:<line id>`, the hash the trigger's,
7
+ * and `apply` is called only to send it. This file parses the line, sends the request and checks the answer
8
+ * (status, `expect`), takes the declared outputs, and returns the record id that says how to undo it:
9
+ *
10
+ * - `FORGET`: no `undo`; destroy forgets the record;
11
+ * - `UNDO <canonical JSON request>`: the `undo` request with every value resolved when the action ran (references
12
+ * and outputs filled in, never a secret), so destroy needs nothing but the ledger.
13
+ *
14
+ * A request goes either to the line's API (`path`, or `graphql`; the `providers.http.<api>` block's base URL,
15
+ * credential and headers) or to an absolute `url` (the app's own endpoint, such as a preview deployment's
16
+ * `/api/inngest`), which gets no credential and no API headers: a URL resolved at run time never receives the
17
+ * API's credential. A `url` line has no `api` and its provider block (ledger identity) is empty.
18
+ */
19
+ import { type OpSpec } from "@sponson/core";
20
+ import { type GraphqlSpec } from "./http-adapter-graphql.js";
21
+ /** One request of an action: to the API (`path` or `graphql`) or to an absolute `url`. */
22
+ export interface ActionRequest {
23
+ method: string;
24
+ /** Relative to the API's base URL; placeholders from `vars` (and, in `undo`, from the outputs). */
25
+ path?: string;
26
+ /** An absolute http(s) URL; a reference until it resolves. */
27
+ url?: unknown;
28
+ /** Absent: no body. */
29
+ body?: unknown;
30
+ /** Header name → value (references allowed; a `{ secret }` only in `request`, never in `undo`). */
31
+ headers: Record<string, unknown>;
32
+ contentType?: string;
33
+ graphql?: GraphqlSpec;
34
+ }
35
+ /** `http.action` params, checked. Values may still be markers. */
36
+ export interface ActionSpec {
37
+ api?: string;
38
+ vars: Record<string, unknown>;
39
+ trigger: Record<string, unknown>;
40
+ request: ActionRequest & {
41
+ idempotencyKey: boolean;
42
+ };
43
+ undo?: ActionRequest;
44
+ /** Statuses (400–499) that count as success too, with no answer to read (an "already done" 409). */
45
+ okStatus: number[];
46
+ /** JSON pointer → value the answer must hold, or the action failed. */
47
+ expect: Record<string, unknown>;
48
+ /** Output name → JSON pointer into the answer. Never sensitive: an unchanged line's outputs come from the ledger. */
49
+ outputs: Record<string, string>;
50
+ }
51
+ /** `http.action` params, checked; PARAM_INVALID naming the field otherwise. */
52
+ export declare function parseAction(line: Record<string, unknown>): ActionSpec;
53
+ /**
54
+ * What the ledger knows a line's action by, as far as the line decides it: the key is the engine's
55
+ * (`action:<line id>`), the record id `FORGET` or the undo request (its placeholders filled when it runs). The
56
+ * recipe identity lock (recipes.test.ts) pins it per recipe op.
57
+ */
58
+ export declare function actionIdentity(spec: ActionSpec): {
59
+ key: string;
60
+ id: string;
61
+ };
62
+ /** `http.action`: one request sent when the line's trigger changes; the engine records which trigger ran. */
63
+ export declare const action: OpSpec;