run402 1.49.0 → 1.50.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.
- package/core-dist/config.js +10 -0
- package/lib/deploy-v2.mjs +359 -0
- package/lib/deploy.mjs +14 -0
- package/package.json +1 -1
- package/sdk/core-dist/config.js +10 -0
- package/sdk/dist/errors.d.ts +41 -0
- package/sdk/dist/errors.d.ts.map +1 -1
- package/sdk/dist/errors.js +23 -0
- package/sdk/dist/errors.js.map +1 -1
- package/sdk/dist/index.d.ts +24 -1
- package/sdk/dist/index.d.ts.map +1 -1
- package/sdk/dist/index.js +24 -1
- package/sdk/dist/index.js.map +1 -1
- package/sdk/dist/namespaces/apps.d.ts +14 -0
- package/sdk/dist/namespaces/apps.d.ts.map +1 -1
- package/sdk/dist/namespaces/apps.js +162 -19
- package/sdk/dist/namespaces/apps.js.map +1 -1
- package/sdk/dist/namespaces/deploy.d.ts +116 -0
- package/sdk/dist/namespaces/deploy.d.ts.map +1 -0
- package/sdk/dist/namespaces/deploy.js +1127 -0
- package/sdk/dist/namespaces/deploy.js.map +1 -0
- package/sdk/dist/namespaces/deploy.types.d.ts +430 -0
- package/sdk/dist/namespaces/deploy.types.d.ts.map +1 -0
- package/sdk/dist/namespaces/deploy.types.js +11 -0
- package/sdk/dist/namespaces/deploy.types.js.map +1 -0
- package/sdk/dist/node/canonicalize.d.ts +12 -5
- package/sdk/dist/node/canonicalize.d.ts.map +1 -1
- package/sdk/dist/node/canonicalize.js +12 -5
- package/sdk/dist/node/canonicalize.js.map +1 -1
- package/sdk/dist/node/files.d.ts +38 -0
- package/sdk/dist/node/files.d.ts.map +1 -0
- package/sdk/dist/node/files.js +88 -0
- package/sdk/dist/node/files.js.map +1 -0
- package/sdk/dist/node/index.d.ts +5 -3
- package/sdk/dist/node/index.d.ts.map +1 -1
- package/sdk/dist/node/index.js +2 -1
- package/sdk/dist/node/index.js.map +1 -1
- package/sdk/dist/node/sites-node.d.ts +34 -107
- package/sdk/dist/node/sites-node.d.ts.map +1 -1
- package/sdk/dist/node/sites-node.js +84 -353
- package/sdk/dist/node/sites-node.js.map +1 -1
|
@@ -1,376 +1,107 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Node-only
|
|
2
|
+
* Node-only `sites.deployDir` convenience.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* **As of v1.34, this is a thin wrapper over `r.deploy.apply`** — bytes ride
|
|
5
|
+
* through the unified CAS substrate, the deploy flows through the v2 plan/
|
|
6
|
+
* commit endpoints, and the agent-observable result remains a
|
|
7
|
+
* {@link SiteDeployResult}. Existing callers keep their input shape
|
|
8
|
+
* (`{ project, dir, target?, onEvent? }`) and their legacy event consumers
|
|
9
|
+
* keep working: the wrapper synthesizes both the unified `DeployEvent`
|
|
10
|
+
* shapes (from the SDK's `deploy` namespace) and the legacy phase events
|
|
11
|
+
* (`{ phase: "plan"|"upload"|"commit"|"poll", ... }`) for the deprecation
|
|
12
|
+
* window.
|
|
7
13
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* 2. PUT each `missing` file's bytes to its presigned S3 URL(s),
|
|
11
|
-
* sending `x-amz-checksum-sha256` to satisfy the signed checksum
|
|
12
|
-
* algorithm. Single-PUT covers small files; multipart covers large
|
|
13
|
-
* files (the gateway picks per-part sizing).
|
|
14
|
-
* 3. POST /deploy/v1/commit { plan_id } — Stage 1 (DB) returns
|
|
15
|
-
* synchronously with `applied`, `noop`, `copying`, or `failed`.
|
|
16
|
-
* `copying` triggers a poll loop on `GET /deployments/v1/:id` until
|
|
17
|
-
* `ready` (or `failed`).
|
|
18
|
-
*
|
|
19
|
-
* The canonicalize used to compute `manifest_digest` MUST match the
|
|
20
|
-
* gateway's byte-for-byte (see `./canonicalize.ts`).
|
|
21
|
-
*
|
|
22
|
-
* Imports `node:fs/promises` and so cannot run in a V8 isolate. Wired into
|
|
23
|
-
* the SDK via the `@run402/sdk/node` entry point only.
|
|
14
|
+
* Imports `node:fs/promises` via `fileSetFromDir`, so this module remains
|
|
15
|
+
* Node-only — V8 isolates use `r.deploy.apply` with in-memory byte sources.
|
|
24
16
|
*/
|
|
25
|
-
import { readdir, readFile, lstat } from "node:fs/promises";
|
|
26
|
-
import { join, relative, sep } from "node:path";
|
|
27
17
|
import { Sites } from "../namespaces/sites.js";
|
|
28
|
-
import {
|
|
29
|
-
import {
|
|
30
|
-
const DEFAULT_IGNORE = new Set([".git", "node_modules", ".DS_Store"]);
|
|
31
|
-
const CONTEXT = "deploying directory";
|
|
32
|
-
/** Cap on total time spent waiting for Stage 2 copy to drain. */
|
|
33
|
-
const COPY_POLL_TIMEOUT_MS = 10 * 60 * 1000;
|
|
34
|
-
/** Initial poll interval; we hold this for ~30 s, then back off. */
|
|
35
|
-
const COPY_POLL_INITIAL_MS = 1_000;
|
|
36
|
-
const COPY_POLL_MAX_MS = 30_000;
|
|
37
|
-
/** Time after which we re-call /deploy/v1/plan to refresh presigned URLs (1 h TTL). */
|
|
38
|
-
const URL_REFRESH_AT_MS = 50 * 60 * 1000;
|
|
18
|
+
import { Deploy } from "../namespaces/deploy.js";
|
|
19
|
+
import { fileSetFromDir } from "./files.js";
|
|
39
20
|
/**
|
|
40
21
|
* Sites namespace enriched with the Node-only `deployDir` convenience.
|
|
41
22
|
* All existing `Sites` methods are inherited unchanged.
|
|
42
23
|
*/
|
|
43
24
|
export class NodeSites extends Sites {
|
|
44
25
|
/**
|
|
45
|
-
* Deploy every file under `dir` as a static site. Walks the tree
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
* Files named `.git`, `node_modules`, or `.DS_Store` are skipped at every
|
|
51
|
-
* depth. Symlinks cause a {@link LocalError} — they are not followed.
|
|
26
|
+
* Deploy every file under `dir` as a static site. Walks the tree (skipping
|
|
27
|
+
* `.git`/`node_modules`/`.DS_Store`, rejecting symlinks), produces an
|
|
28
|
+
* `FsFileSource`-backed `FileSet`, and delegates to `r.deploy.apply` —
|
|
29
|
+
* which uploads only the bytes the gateway doesn't already have, applies
|
|
30
|
+
* the new release atomically, and polls the operation until terminal.
|
|
52
31
|
*/
|
|
53
32
|
async deployDir(opts) {
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
33
|
+
const fileSet = await fileSetFromDir(opts.dir);
|
|
34
|
+
const manifestSize = Object.keys(fileSet).length;
|
|
35
|
+
const deploy = new Deploy(this.client);
|
|
36
|
+
const synth = makeLegacyEventSynth(opts.onEvent, manifestSize);
|
|
37
|
+
const result = await deploy.apply({ project: opts.project, site: { replace: fileSet } }, { onEvent: synth });
|
|
38
|
+
const out = {
|
|
39
|
+
deployment_id: pickFromUrls(result.urls, "deployment_id") ?? result.release_id,
|
|
40
|
+
url: pickFromUrls(result.urls, "site") ?? "",
|
|
63
41
|
};
|
|
64
|
-
|
|
65
|
-
if (files.length === 0) {
|
|
66
|
-
throw new LocalError(`directory ${opts.dir} contains no deployable files`, CONTEXT);
|
|
67
|
-
}
|
|
68
|
-
const manifest = buildCanonicalManifest(files.map((f) => ({
|
|
69
|
-
path: f.path,
|
|
70
|
-
sha256: f.sha256,
|
|
71
|
-
size: f.size,
|
|
72
|
-
content_type: f.content_type,
|
|
73
|
-
})));
|
|
74
|
-
const manifestDigest = await computeManifestDigest(manifest);
|
|
75
|
-
// Map sha → bytes so we can satisfy the plan response without re-walking.
|
|
76
|
-
// Multiple paths may share the same sha (identical files); any copy works.
|
|
77
|
-
const bytesBySha = new Map();
|
|
78
|
-
// Map sha → first manifest path with that content, so upload events can
|
|
79
|
-
// report a human-readable file path even when multiple paths dedupe.
|
|
80
|
-
const pathBySha = new Map();
|
|
81
|
-
for (const f of files) {
|
|
82
|
-
bytesBySha.set(f.sha256, f.bytes);
|
|
83
|
-
if (!pathBySha.has(f.sha256))
|
|
84
|
-
pathBySha.set(f.sha256, f.path);
|
|
85
|
-
}
|
|
86
|
-
// Reach through to the kernel client. `Sites.client` is `private` in TS
|
|
87
|
-
// but enumerable at runtime; the cast bypasses the visibility check.
|
|
88
|
-
const client = this.client;
|
|
89
|
-
const planClient = new ClientFromBase(client);
|
|
90
|
-
const plan = await planClient.requestPlan(opts.project, manifest, manifestDigest);
|
|
91
|
-
const planAt = Date.now();
|
|
92
|
-
emit({ phase: "plan", manifest_size: manifest.files.length });
|
|
93
|
-
const totalMissing = plan.files.filter(isMissing).length;
|
|
94
|
-
let doneCounter = 0;
|
|
95
|
-
let activePlan = plan;
|
|
96
|
-
let activePlanAt = planAt;
|
|
97
|
-
for (const entry of activePlan.files) {
|
|
98
|
-
if (!isMissing(entry))
|
|
99
|
-
continue;
|
|
100
|
-
// Refresh the plan if the URL TTL window is about to close.
|
|
101
|
-
if (Date.now() - activePlanAt > URL_REFRESH_AT_MS) {
|
|
102
|
-
activePlan = await planClient.requestPlan(opts.project, manifest, manifestDigest);
|
|
103
|
-
activePlanAt = Date.now();
|
|
104
|
-
}
|
|
105
|
-
const refreshed = activePlan.files.find((e) => e.sha256 === entry.sha256);
|
|
106
|
-
const target = refreshed && isMissing(refreshed) ? refreshed : entry;
|
|
107
|
-
const bytes = bytesBySha.get(target.sha256);
|
|
108
|
-
if (!bytes) {
|
|
109
|
-
throw new LocalError(`internal: no local bytes for sha ${target.sha256.slice(0, 12)}…`, CONTEXT);
|
|
110
|
-
}
|
|
111
|
-
try {
|
|
112
|
-
await uploadOne(client.fetch, target, bytes);
|
|
113
|
-
}
|
|
114
|
-
catch (err) {
|
|
115
|
-
// S3 returns 403 when the presigned URL has expired. Refresh once.
|
|
116
|
-
if (err instanceof ApiError && err.status === 403) {
|
|
117
|
-
activePlan = await planClient.requestPlan(opts.project, manifest, manifestDigest);
|
|
118
|
-
activePlanAt = Date.now();
|
|
119
|
-
const fresh = activePlan.files.find((e) => e.sha256 === target.sha256);
|
|
120
|
-
if (fresh && isMissing(fresh)) {
|
|
121
|
-
await uploadOne(client.fetch, fresh, bytes);
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
throw err;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
throw err;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
doneCounter += 1;
|
|
132
|
-
emit({
|
|
133
|
-
phase: "upload",
|
|
134
|
-
file: pathBySha.get(target.sha256) ?? target.sha256,
|
|
135
|
-
sha256: target.sha256,
|
|
136
|
-
done: doneCounter,
|
|
137
|
-
total: totalMissing,
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
emit({ phase: "commit" });
|
|
141
|
-
const commit = await planClient.commit(opts.project, activePlan.plan_id);
|
|
142
|
-
if (commit.status === "applied" || commit.status === "noop") {
|
|
143
|
-
return shapeResult(commit);
|
|
144
|
-
}
|
|
145
|
-
if (commit.status === "copying") {
|
|
146
|
-
const final = await pollUntilReady(this, commit.deployment_id, emit);
|
|
147
|
-
return { deployment_id: commit.deployment_id, url: commit.url, ...final };
|
|
148
|
-
}
|
|
149
|
-
// status === "failed": stage 2 exhausted retries. Surface as ApiError so
|
|
150
|
-
// callers can decide whether to re-call deployDir (which re-commits).
|
|
151
|
-
throw new ApiError(`Deploy commit failed for plan ${activePlan.plan_id} after copy retries`, 500, commit, "committing deploy");
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
class ClientFromBase {
|
|
155
|
-
client;
|
|
156
|
-
constructor(client) {
|
|
157
|
-
this.client = client;
|
|
158
|
-
}
|
|
159
|
-
async requestPlan(projectId, manifest, manifestDigest) {
|
|
160
|
-
return this.client.request("/deploy/v1/plan", {
|
|
161
|
-
method: "POST",
|
|
162
|
-
body: { project: projectId, manifest_digest: manifestDigest, manifest },
|
|
163
|
-
context: "planning deploy",
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
async commit(projectId, planId) {
|
|
167
|
-
return this.client.request("/deploy/v1/commit", {
|
|
168
|
-
method: "POST",
|
|
169
|
-
body: { project: projectId, plan_id: planId },
|
|
170
|
-
context: "committing deploy",
|
|
171
|
-
});
|
|
42
|
+
return out;
|
|
172
43
|
}
|
|
173
44
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
return out;
|
|
184
|
-
}
|
|
185
|
-
// ─── Upload ──────────────────────────────────────────────────────────────────
|
|
186
|
-
async function uploadOne(fetchFn, entry, bytes) {
|
|
187
|
-
if (entry.mode === "single") {
|
|
188
|
-
if (entry.parts.length !== 1) {
|
|
189
|
-
throw new LocalError(`internal: single-mode upload for ${entry.sha256.slice(0, 12)}… returned ${entry.parts.length} parts`, CONTEXT);
|
|
190
|
-
}
|
|
191
|
-
const part = entry.parts[0];
|
|
192
|
-
const slice = bytes.subarray(part.byte_start, part.byte_end + 1);
|
|
193
|
-
// For single-PUT, the URL pre-commits the whole-object SHA — we send
|
|
194
|
-
// the same value (in base64, not hex) on the PUT.
|
|
195
|
-
const checksum = base64FromHex(entry.sha256);
|
|
196
|
-
await putToS3(fetchFn, part.url, slice, checksum, part.part_number);
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
// multipart: each part PUT carries its own per-part SHA-256 base64.
|
|
200
|
-
for (const part of entry.parts) {
|
|
201
|
-
const slice = bytes.subarray(part.byte_start, part.byte_end + 1);
|
|
202
|
-
const checksum = await sha256Base64(slice);
|
|
203
|
-
await putToS3(fetchFn, part.url, slice, checksum, part.part_number);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
async function putToS3(fetchFn, url, body, checksumBase64, partNumber) {
|
|
207
|
-
let res;
|
|
208
|
-
try {
|
|
209
|
-
res = await fetchFn(url, {
|
|
210
|
-
method: "PUT",
|
|
211
|
-
headers: { "x-amz-checksum-sha256": checksumBase64 },
|
|
212
|
-
body: body,
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
catch (err) {
|
|
216
|
-
throw new ApiError(`S3 PUT failed for part ${partNumber}: ${err.message}`, 0, null, "uploading deploy bytes");
|
|
217
|
-
}
|
|
218
|
-
if (!res.ok) {
|
|
219
|
-
const text = await res.text().catch(() => "");
|
|
220
|
-
throw new ApiError(`S3 PUT failed for part ${partNumber} (HTTP ${res.status})${text ? ": " + text.slice(0, 200) : ""}`, res.status, text, "uploading deploy bytes");
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
async function pollUntilReady(sites, deploymentId, emit) {
|
|
224
|
-
const start = Date.now();
|
|
225
|
-
let interval = COPY_POLL_INITIAL_MS;
|
|
226
|
-
while (Date.now() - start < COPY_POLL_TIMEOUT_MS) {
|
|
227
|
-
await sleep(interval);
|
|
228
|
-
let info;
|
|
45
|
+
// ─── Legacy event synthesis ──────────────────────────────────────────────────
|
|
46
|
+
/**
|
|
47
|
+
* Build a unified-event listener that mirrors the unified events to the
|
|
48
|
+
* caller verbatim AND synthesizes the legacy phase events alongside.
|
|
49
|
+
*/
|
|
50
|
+
function makeLegacyEventSynth(consumer, manifestSize) {
|
|
51
|
+
if (!consumer)
|
|
52
|
+
return () => { };
|
|
53
|
+
const safe = (e) => {
|
|
229
54
|
try {
|
|
230
|
-
|
|
231
|
-
}
|
|
232
|
-
catch (err) {
|
|
233
|
-
// Transient lookup failure: keep polling unless we're a hard error.
|
|
234
|
-
if (err instanceof Run402Error && err.status !== null && err.status >= 500) {
|
|
235
|
-
continue;
|
|
236
|
-
}
|
|
237
|
-
throw err;
|
|
55
|
+
consumer(e);
|
|
238
56
|
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
return { status: info.status, url: info.url };
|
|
57
|
+
catch {
|
|
58
|
+
/* swallow — buggy consumer must not abort the deploy */
|
|
242
59
|
}
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
throw new LocalError(`cannot read directory ${current}: ${err.message}`, CONTEXT, err);
|
|
282
|
-
}
|
|
283
|
-
for (const entry of entries) {
|
|
284
|
-
if (DEFAULT_IGNORE.has(entry.name))
|
|
285
|
-
continue;
|
|
286
|
-
const fullPath = join(current, entry.name);
|
|
287
|
-
if (entry.isSymbolicLink()) {
|
|
288
|
-
throw new LocalError(`symlink found at ${fullPath} (following symlinks is not supported)`, CONTEXT);
|
|
289
|
-
}
|
|
290
|
-
if (entry.isDirectory()) {
|
|
291
|
-
await walkInto(root, fullPath, out);
|
|
292
|
-
continue;
|
|
293
|
-
}
|
|
294
|
-
if (entry.isFile()) {
|
|
295
|
-
let bytes;
|
|
296
|
-
try {
|
|
297
|
-
bytes = await readFile(fullPath);
|
|
298
|
-
}
|
|
299
|
-
catch (err) {
|
|
300
|
-
throw new LocalError(`cannot read file ${fullPath}: ${err.message}`, CONTEXT, err);
|
|
301
|
-
}
|
|
302
|
-
const rel = normalizeRelPath(relative(root, fullPath));
|
|
303
|
-
out.push({
|
|
304
|
-
path: rel,
|
|
305
|
-
size: bytes.byteLength,
|
|
306
|
-
sha256: await sha256Hex(bytes),
|
|
307
|
-
content_type: guessContentType(rel),
|
|
308
|
-
bytes,
|
|
309
|
-
});
|
|
60
|
+
};
|
|
61
|
+
let pollStart = null;
|
|
62
|
+
let commitEmitted = false;
|
|
63
|
+
return (event) => {
|
|
64
|
+
safe(event);
|
|
65
|
+
switch (event.type) {
|
|
66
|
+
case "plan.diff":
|
|
67
|
+
safe({ phase: "plan", manifest_size: manifestSize });
|
|
68
|
+
break;
|
|
69
|
+
case "content.upload.progress":
|
|
70
|
+
safe({
|
|
71
|
+
phase: "upload",
|
|
72
|
+
file: event.label,
|
|
73
|
+
sha256: event.sha256,
|
|
74
|
+
done: event.done,
|
|
75
|
+
total: event.total,
|
|
76
|
+
});
|
|
77
|
+
break;
|
|
78
|
+
case "commit.phase":
|
|
79
|
+
if (!commitEmitted) {
|
|
80
|
+
commitEmitted = true;
|
|
81
|
+
safe({ phase: "commit" });
|
|
82
|
+
}
|
|
83
|
+
if ((event.phase === "schema-settle" ||
|
|
84
|
+
event.phase === "activate" ||
|
|
85
|
+
event.phase === "ready") &&
|
|
86
|
+
event.status === "started") {
|
|
87
|
+
if (pollStart === null)
|
|
88
|
+
pollStart = Date.now();
|
|
89
|
+
safe({
|
|
90
|
+
phase: "poll",
|
|
91
|
+
status: event.phase,
|
|
92
|
+
elapsed_ms: Date.now() - pollStart,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
break;
|
|
96
|
+
default:
|
|
97
|
+
break;
|
|
310
98
|
}
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
/**
|
|
314
|
-
* Normalize a relative path to POSIX forward slashes. Exposed for tests;
|
|
315
|
-
* not part of the public SDK API.
|
|
316
|
-
*/
|
|
317
|
-
export function normalizeRelPath(rel) {
|
|
318
|
-
return sep === "/" ? rel : rel.split(sep).join("/");
|
|
319
|
-
}
|
|
320
|
-
async function sha256Hex(bytes) {
|
|
321
|
-
const hash = await crypto.subtle.digest("SHA-256", bytes);
|
|
322
|
-
return Array.from(new Uint8Array(hash))
|
|
323
|
-
.map((b) => b.toString(16).padStart(2, "0"))
|
|
324
|
-
.join("");
|
|
325
|
-
}
|
|
326
|
-
async function sha256Base64(bytes) {
|
|
327
|
-
const hash = await crypto.subtle.digest("SHA-256", bytes);
|
|
328
|
-
return Buffer.from(hash).toString("base64");
|
|
329
|
-
}
|
|
330
|
-
function base64FromHex(hex) {
|
|
331
|
-
if (!/^[0-9a-f]*$/i.test(hex) || hex.length % 2 !== 0) {
|
|
332
|
-
throw new LocalError(`invalid hex sha256: ${hex}`, CONTEXT);
|
|
333
|
-
}
|
|
334
|
-
return Buffer.from(hex, "hex").toString("base64");
|
|
335
|
-
}
|
|
336
|
-
const CONTENT_TYPES = {
|
|
337
|
-
html: "text/html; charset=utf-8",
|
|
338
|
-
htm: "text/html; charset=utf-8",
|
|
339
|
-
css: "text/css; charset=utf-8",
|
|
340
|
-
js: "application/javascript; charset=utf-8",
|
|
341
|
-
mjs: "application/javascript; charset=utf-8",
|
|
342
|
-
json: "application/json; charset=utf-8",
|
|
343
|
-
svg: "image/svg+xml",
|
|
344
|
-
png: "image/png",
|
|
345
|
-
jpg: "image/jpeg",
|
|
346
|
-
jpeg: "image/jpeg",
|
|
347
|
-
gif: "image/gif",
|
|
348
|
-
webp: "image/webp",
|
|
349
|
-
ico: "image/x-icon",
|
|
350
|
-
woff: "font/woff",
|
|
351
|
-
woff2: "font/woff2",
|
|
352
|
-
ttf: "font/ttf",
|
|
353
|
-
eot: "application/vnd.ms-fontobject",
|
|
354
|
-
otf: "font/otf",
|
|
355
|
-
txt: "text/plain; charset=utf-8",
|
|
356
|
-
md: "text/markdown; charset=utf-8",
|
|
357
|
-
xml: "application/xml",
|
|
358
|
-
pdf: "application/pdf",
|
|
359
|
-
wasm: "application/wasm",
|
|
360
|
-
map: "application/json; charset=utf-8",
|
|
361
|
-
};
|
|
362
|
-
function guessContentType(path) {
|
|
363
|
-
const dot = path.lastIndexOf(".");
|
|
364
|
-
if (dot === -1)
|
|
365
|
-
return "application/octet-stream";
|
|
366
|
-
const ext = path.slice(dot + 1).toLowerCase();
|
|
367
|
-
return CONTENT_TYPES[ext] ?? "application/octet-stream";
|
|
99
|
+
};
|
|
368
100
|
}
|
|
369
|
-
// ───
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
return collectFiles(root);
|
|
101
|
+
// ─── Helpers ─────────────────────────────────────────────────────────────────
|
|
102
|
+
function pickFromUrls(urls, key) {
|
|
103
|
+
if (!urls)
|
|
104
|
+
return undefined;
|
|
105
|
+
return urls[key];
|
|
375
106
|
}
|
|
376
107
|
//# sourceMappingURL=sites-node.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sites-node.js","sourceRoot":"","sources":["../../src/node/sites-node.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sites-node.js","sourceRoot":"","sources":["../../src/node/sites-node.ts"],"names":[],"mappings":"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"}
|