@heyditto/cli 2.33.0 → 2.35.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/README.md +99 -6
- package/dist/api.d.ts +7 -0
- package/dist/api.js +8 -1
- package/dist/api.js.map +1 -1
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +3 -0
- package/dist/commands.js +25 -2
- package/dist/commands.js.map +1 -1
- package/dist/dittoconfig/profiles.js +25 -1
- package/dist/dittoconfig/profiles.js.map +1 -1
- package/dist/entry-runner.d.ts +4 -0
- package/dist/entry-runner.js +16 -0
- package/dist/entry-runner.js.map +1 -0
- package/dist/entry.d.ts +2 -0
- package/dist/entry.js +15 -0
- package/dist/entry.js.map +1 -0
- package/dist/self-update.d.ts +62 -0
- package/dist/self-update.js +391 -0
- package/dist/self-update.js.map +1 -0
- package/dist/update-lock.json +1 -0
- package/dist/update-worker.d.ts +45 -0
- package/dist/update-worker.js +447 -0
- package/dist/update-worker.js.map +1 -0
- package/package.json +8 -5
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { link, lstat, mkdir, readFile, readdir, realpath, rename, rm, writeFile } from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { randomUUID } from "node:crypto";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
import { satisfies } from "semver";
|
|
7
|
+
import { configDir, packageName, packageVersion } from "./config.js";
|
|
8
|
+
export const UPDATE_INTERVAL_MS = 6 * 60 * 60 * 1000;
|
|
9
|
+
export const updateResultExitCode = (result) => ["current", "activated", "pinned"].includes(result.status) ? 0 : result.status === "busy" ? 75 : 1;
|
|
10
|
+
export const updateLeaseSlot = (now = Date.now()) => `${Math.floor(now / UPDATE_INTERVAL_MS)}.json`;
|
|
11
|
+
export function updateTarget(platform = process.platform, arch = process.arch, libc) {
|
|
12
|
+
const family = platform === "linux" ? libc ?? (process.report.getReport().header?.glibcVersionRuntime ? "glibc" : "musl") : "none";
|
|
13
|
+
if (!/^[a-z0-9]+$/.test(platform) || !/^[a-z0-9]+$/.test(arch) || !["none", "glibc", "musl"].includes(family))
|
|
14
|
+
throw new Error("unsupported update target");
|
|
15
|
+
return `${platform}-${arch}-${family}`;
|
|
16
|
+
}
|
|
17
|
+
export const updateRoot = (target = updateTarget()) => {
|
|
18
|
+
if (!/^[a-z0-9]+-[a-z0-9]+-(none|glibc|musl)$/.test(target))
|
|
19
|
+
throw new Error("invalid update target");
|
|
20
|
+
return path.resolve(configDir(), "updates", target);
|
|
21
|
+
};
|
|
22
|
+
export function updatePreferenceFiles(cache, target = updateTarget()) {
|
|
23
|
+
const base = path.basename(cache) === target && path.basename(path.dirname(cache)) === "updates" ? path.dirname(cache) : cache;
|
|
24
|
+
return { enabled: path.join(base, "enabled.json"), pin: path.join(base, "pins", `${target}.json`), legacy: path.join(base, "settings.json") };
|
|
25
|
+
}
|
|
26
|
+
export async function effectiveUpdatePolicy(cache, target = updateTarget()) {
|
|
27
|
+
const files = updatePreferenceFiles(cache, target);
|
|
28
|
+
let enabled = await readUpdateJSON(files.enabled, 4096);
|
|
29
|
+
let pin = await readUpdateJSON(files.pin, 4096);
|
|
30
|
+
const legacy = enabled === undefined || pin === undefined ? await readUpdateJSON(files.legacy, 4096) ?? {} : {};
|
|
31
|
+
// A current control may appear while the legacy fallback is being read.
|
|
32
|
+
enabled ??= await readUpdateJSON(files.enabled, 4096);
|
|
33
|
+
pin ??= await readUpdateJSON(files.pin, 4096);
|
|
34
|
+
if (enabled !== undefined && typeof enabled?.enabled !== "boolean")
|
|
35
|
+
throw new Error("invalid updater enable preference");
|
|
36
|
+
if (pin !== undefined && pin?.version !== null && !stableVersion(pin?.version))
|
|
37
|
+
throw new Error("invalid updater pin preference");
|
|
38
|
+
return { enabled: enabled?.enabled ?? legacy.enabled, pinnedVersion: pin !== undefined ? pin.version ?? undefined : legacy.pins?.[target] ?? legacy.pinnedVersion };
|
|
39
|
+
}
|
|
40
|
+
export const stableVersion = (value) => typeof value === "string" && /^\d{1,6}\.\d{1,6}\.\d{1,6}$/.test(value);
|
|
41
|
+
export function newerVersion(a, b) {
|
|
42
|
+
if (!stableVersion(a) || !stableVersion(b))
|
|
43
|
+
return false;
|
|
44
|
+
const left = a.split(".").map(Number), right = b.split(".").map(Number);
|
|
45
|
+
for (let i = 0; i < 3; i++)
|
|
46
|
+
if (left[i] !== right[i])
|
|
47
|
+
return left[i] > right[i];
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
export function supportsNode(range, version = process.versions.node) {
|
|
51
|
+
return typeof range === "string" && range.length <= 256 && stableVersion(version) && satisfies(version, range);
|
|
52
|
+
}
|
|
53
|
+
/** No auth file, npmrc, repository, shell, or credential environment is read. */
|
|
54
|
+
export function cleanUpdateEnvironment(env = process.env) {
|
|
55
|
+
const clean = {};
|
|
56
|
+
for (const key of ["SYSTEMROOT", "WINDIR", "TEMP", "TMP", "TMPDIR", "LANG", "LC_ALL"])
|
|
57
|
+
if (env[key])
|
|
58
|
+
clean[key] = env[key];
|
|
59
|
+
return clean;
|
|
60
|
+
}
|
|
61
|
+
export async function privateDirectory(directory) {
|
|
62
|
+
const absolute = path.resolve(directory);
|
|
63
|
+
let cursor = path.parse(absolute).root;
|
|
64
|
+
for (const part of absolute.slice(cursor.length).split(path.sep)) {
|
|
65
|
+
cursor = path.join(cursor, part);
|
|
66
|
+
try {
|
|
67
|
+
if ((await lstat(cursor)).isSymbolicLink())
|
|
68
|
+
throw new Error("updater paths cannot traverse symlinks");
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
if (error.code === "ENOENT")
|
|
72
|
+
break;
|
|
73
|
+
throw error;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
await mkdir(directory, { recursive: true, mode: 0o700 });
|
|
77
|
+
const stat = await lstat(directory);
|
|
78
|
+
if (!stat.isDirectory() || stat.isSymbolicLink() || await realpath(directory) !== absolute || (typeof process.getuid === "function" && stat.uid !== process.getuid()) || (process.platform !== "win32" && (stat.mode & 0o022) !== 0))
|
|
79
|
+
throw new Error("updater directory is not privately owned");
|
|
80
|
+
}
|
|
81
|
+
export async function readUpdateJSON(file, max = 65536) {
|
|
82
|
+
try {
|
|
83
|
+
const stat = await lstat(file);
|
|
84
|
+
if (!stat.isFile() || stat.isSymbolicLink() || stat.size > max)
|
|
85
|
+
throw new Error("invalid updater metadata");
|
|
86
|
+
return JSON.parse(await readFile(file, "utf8"));
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
if (error.code === "ENOENT")
|
|
90
|
+
return undefined;
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
export async function writeUpdateJSON(file, data, beforePublish) {
|
|
95
|
+
await privateDirectory(path.dirname(file));
|
|
96
|
+
const temporary = `${file}.${randomUUID()}.tmp`;
|
|
97
|
+
try {
|
|
98
|
+
await writeFile(temporary, JSON.stringify(data) + "\n", { flag: "wx", mode: 0o600 });
|
|
99
|
+
await beforePublish?.();
|
|
100
|
+
await rename(temporary, file);
|
|
101
|
+
}
|
|
102
|
+
finally {
|
|
103
|
+
await rm(temporary, { force: true }).catch(() => undefined);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
export function updateEligibility(root, env = process.env, args = process.argv.slice(2)) {
|
|
107
|
+
const normalized = root.replaceAll("\\", "/");
|
|
108
|
+
if (env.DITTO_CLI_PINNED === "1")
|
|
109
|
+
return "explicit installed-version pin";
|
|
110
|
+
if (env.CI || env.GITHUB_ACTIONS || env.GITLAB_CI || env.BUILD_NUMBER)
|
|
111
|
+
return "CI execution";
|
|
112
|
+
if (env.npm_lifecycle_event || env.npm_command === "exec" || env.npm_config_package || /\/(?:_npx|\.pnpm|\.yarn)\//.test(normalized))
|
|
113
|
+
return "ephemeral or package-script execution";
|
|
114
|
+
if (/\/(?:Cellar|Caskroom|nix\/store|snap)\//i.test(normalized) || /^\/(?:usr\/(?:share|lib)|nix|snap)\//.test(normalized))
|
|
115
|
+
return "package-manager-owned installation";
|
|
116
|
+
const windowsGlobal = process.platform === "win32" && env.APPDATA && normalized === path.join(env.APPDATA, "npm/node_modules/@heyditto/cli").replaceAll("\\", "/");
|
|
117
|
+
if (!normalized.endsWith("/lib/node_modules/@heyditto/cli") && !windowsGlobal)
|
|
118
|
+
return "project or unmanaged installation";
|
|
119
|
+
// Disabling checks does not grant ownership or permission to delegate. Only
|
|
120
|
+
// an otherwise eligible installation may retain its selected cached version.
|
|
121
|
+
if (env.DITTO_CLI_AUTO_UPDATE === "0" || env.DISABLE_AUTOUPDATER === "1" || args.includes("--no-auto-update"))
|
|
122
|
+
return "disabled for this invocation";
|
|
123
|
+
return undefined;
|
|
124
|
+
}
|
|
125
|
+
export async function selectCachedRelease(cache, bundledVersion, policy, nodeVersion = process.versions.node, target = updateTarget()) {
|
|
126
|
+
cache = path.resolve(cache);
|
|
127
|
+
const pointer = policy.pinnedVersion ? { version: policy.pinnedVersion } : await readUpdateJSON(path.join(cache, "current.json"), 4096);
|
|
128
|
+
if (!pointer || !stableVersion(pointer.version) || (!newerVersion(pointer.version, bundledVersion) && pointer.version !== policy.pinnedVersion) || (policy.pinnedVersion && pointer.version !== policy.pinnedVersion))
|
|
129
|
+
return undefined;
|
|
130
|
+
if ("target" in pointer && pointer.target !== target)
|
|
131
|
+
return undefined;
|
|
132
|
+
try {
|
|
133
|
+
await lstat(path.join(cache, "quarantine", `${pointer.version}.json`));
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
if (error.code !== "ENOENT")
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
const root = path.join(cache, "versions", pointer.version, "package");
|
|
141
|
+
for (const directory of [cache, path.join(cache, "versions"), path.dirname(root), root]) {
|
|
142
|
+
const stat = await lstat(directory);
|
|
143
|
+
if (!stat.isDirectory() || stat.isSymbolicLink() || (typeof process.getuid === "function" && stat.uid !== process.getuid()) || (process.platform !== "win32" && (stat.mode & 0o022)))
|
|
144
|
+
return undefined;
|
|
145
|
+
}
|
|
146
|
+
if (await realpath(root) !== root)
|
|
147
|
+
return undefined;
|
|
148
|
+
const pkg = await readUpdateJSON(path.join(root, "package.json"));
|
|
149
|
+
const lock = await readUpdateJSON(path.join(root, "dist/update-lock.json"), 1024 * 1024);
|
|
150
|
+
const receipt = await readUpdateJSON(path.join(path.dirname(root), "verified.json"), 65536);
|
|
151
|
+
if (pkg?.name !== packageName || pkg.version !== pointer.version || pkg.bin?.heyditto !== "dist/entry.js" || !supportsNode(pkg.engines?.node, nodeVersion) || lock?.bootstrap !== 1 || lock.packageVersion !== pointer.version || receipt?.version !== pointer.version || receipt.target !== target || !Array.isArray(receipt.nodeRanges) || receipt.nodeRanges.length > 257 || !receipt.nodeRanges.every(range => supportsNode(range, nodeVersion)) || !/^sha512-[A-Za-z0-9+/]{86}==$/.test(receipt?.rootIntegrity ?? ""))
|
|
152
|
+
return undefined;
|
|
153
|
+
for (const file of ["dist/cli.js", "dist/entry.js", "dist/update-worker.js"]) {
|
|
154
|
+
const absolute = path.join(root, file), stat = await lstat(absolute);
|
|
155
|
+
if (!stat.isFile() || stat.isSymbolicLink() || await realpath(absolute) !== absolute)
|
|
156
|
+
return undefined;
|
|
157
|
+
}
|
|
158
|
+
return { root, version: pointer.version };
|
|
159
|
+
}
|
|
160
|
+
/** Only a validated startup selection or an explicit manual check activates a
|
|
161
|
+
* version. Background workers publish candidates, never these markers. */
|
|
162
|
+
export async function recordCachedActivation(cache, version, target = updateTarget()) {
|
|
163
|
+
if (!stableVersion(version))
|
|
164
|
+
throw new Error("invalid activation version");
|
|
165
|
+
const directory = path.join(path.resolve(cache), "activated"), file = path.join(directory, `${version}.json`);
|
|
166
|
+
await privateDirectory(directory);
|
|
167
|
+
const existing = await readUpdateJSON(file, 4096);
|
|
168
|
+
if (existing) {
|
|
169
|
+
if (existing.version !== version || existing.target !== target)
|
|
170
|
+
throw new Error("invalid cached activation");
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
if ((await readdir(directory)).length >= 4096)
|
|
174
|
+
throw new Error("activation metadata requires manual cleanup");
|
|
175
|
+
const pending = path.join(directory, `.pending-${randomUUID()}`);
|
|
176
|
+
await writeFile(pending, JSON.stringify({ version, target }) + "\n", { flag: "wx", mode: 0o600 });
|
|
177
|
+
try {
|
|
178
|
+
await link(pending, file);
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
if (error.code !== "EEXIST")
|
|
182
|
+
throw error;
|
|
183
|
+
const winner = await readUpdateJSON(file, 4096);
|
|
184
|
+
if (winner?.version !== version || winner.target !== target)
|
|
185
|
+
throw new Error("invalid concurrent cached activation");
|
|
186
|
+
}
|
|
187
|
+
finally {
|
|
188
|
+
await rm(pending, { force: true }).catch(() => undefined);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
export async function selectActivatedRelease(cache, bundledVersion, nodeVersion = process.versions.node, target = updateTarget()) {
|
|
192
|
+
cache = path.resolve(cache);
|
|
193
|
+
const directory = path.join(cache, "activated");
|
|
194
|
+
try {
|
|
195
|
+
const stat = await lstat(directory);
|
|
196
|
+
if (!stat.isDirectory() || stat.isSymbolicLink() || await realpath(directory) !== directory || (typeof process.getuid === "function" && stat.uid !== process.getuid()) || (process.platform !== "win32" && (stat.mode & 0o022)))
|
|
197
|
+
return undefined;
|
|
198
|
+
const files = await readdir(directory);
|
|
199
|
+
if (files.length > 4096)
|
|
200
|
+
return undefined;
|
|
201
|
+
const versions = files.filter(name => name.endsWith(".json") && stableVersion(name.slice(0, -5))).map(name => name.slice(0, -5)).filter(version => newerVersion(version, bundledVersion)).sort((a, b) => newerVersion(a, b) ? -1 : newerVersion(b, a) ? 1 : 0);
|
|
202
|
+
for (const version of versions.slice(0, 16)) {
|
|
203
|
+
try {
|
|
204
|
+
const marker = await readUpdateJSON(path.join(directory, `${version}.json`), 4096);
|
|
205
|
+
if (marker?.version !== version || marker.target !== target)
|
|
206
|
+
continue;
|
|
207
|
+
const selected = await selectCachedRelease(cache, bundledVersion, { pinnedVersion: version }, nodeVersion, target);
|
|
208
|
+
if (selected)
|
|
209
|
+
return selected;
|
|
210
|
+
}
|
|
211
|
+
catch { /* invalid activation cannot grant execution permission */ }
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
if (error.code !== "ENOENT")
|
|
216
|
+
throw error;
|
|
217
|
+
}
|
|
218
|
+
return undefined;
|
|
219
|
+
}
|
|
220
|
+
export async function quarantineCachedRelease(root, cache = updateRoot()) {
|
|
221
|
+
const relative = path.relative(cache, root).split(path.sep);
|
|
222
|
+
if (relative.length !== 3 || relative[0] !== "versions" || !stableVersion(relative[1]) || relative[2] !== "package")
|
|
223
|
+
return;
|
|
224
|
+
await writeUpdateJSON(path.join(cache, "quarantine", `${relative[1]}.json`), { failedAt: Date.now(), reason: "CLI execution failed; this invocation was not retried" });
|
|
225
|
+
}
|
|
226
|
+
export async function startupUpdate(bundledRoot) {
|
|
227
|
+
const root = await realpath(bundledRoot);
|
|
228
|
+
// Explicit pins, manager ownership and ephemeral launches also suppress cache
|
|
229
|
+
// delegation, so an npx/package-manager version remains the version invoked.
|
|
230
|
+
const eligibility = updateEligibility(root);
|
|
231
|
+
if (eligibility && eligibility !== "disabled for this invocation")
|
|
232
|
+
return root;
|
|
233
|
+
const cache = updateRoot();
|
|
234
|
+
const args = process.argv.slice(2);
|
|
235
|
+
// Controls operate on the already active version. In particular status must
|
|
236
|
+
// inspect, and disable/pin must freeze, without first adopting staged code.
|
|
237
|
+
const control = args.find(arg => !arg.startsWith("-")) === "self-update";
|
|
238
|
+
const [candidate, activated, health] = await Promise.all([
|
|
239
|
+
control ? undefined : selectCachedRelease(cache, packageVersion, {}).catch(() => undefined),
|
|
240
|
+
selectActivatedRelease(cache, packageVersion).catch(() => undefined),
|
|
241
|
+
readUpdateJSON(path.join(cache, "health.json"), 4096).catch(() => undefined),
|
|
242
|
+
]);
|
|
243
|
+
let policy;
|
|
244
|
+
try {
|
|
245
|
+
// Validate the staged candidate BEFORE the final policy read. A candidate
|
|
246
|
+
// published after an acknowledged disable cannot become this selection.
|
|
247
|
+
policy = await effectiveUpdatePolicy(cache);
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
return root;
|
|
251
|
+
}
|
|
252
|
+
let selected;
|
|
253
|
+
if (policy.pinnedVersion) {
|
|
254
|
+
try {
|
|
255
|
+
selected = await selectCachedRelease(cache, packageVersion, policy);
|
|
256
|
+
}
|
|
257
|
+
catch { /* invalid pin falls back */ }
|
|
258
|
+
}
|
|
259
|
+
else if (control || eligibility || policy.enabled === false)
|
|
260
|
+
selected = activated;
|
|
261
|
+
else {
|
|
262
|
+
selected = candidate && (!activated || newerVersion(candidate.version, activated.version)) ? candidate : activated;
|
|
263
|
+
if (selected) {
|
|
264
|
+
try {
|
|
265
|
+
await recordCachedActivation(cache, selected.version);
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
selected = activated;
|
|
269
|
+
} // Never select a new version we cannot retain.
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
const active = selected ?? { root, version: packageVersion };
|
|
273
|
+
if (control || eligibility || policy.enabled === false || policy.pinnedVersion || !stableVersion(active.version) || !args.length || args[0] === "help" || args.some(a => ["--preview", "--offline", "--help", "-h", "--version", "-v"].includes(a)))
|
|
274
|
+
return active.root;
|
|
275
|
+
const last = health?.lastAttemptAt;
|
|
276
|
+
if (typeof last === "number" && Number.isFinite(last) && Date.now() - last < UPDATE_INTERVAL_MS)
|
|
277
|
+
return active.root;
|
|
278
|
+
try {
|
|
279
|
+
await privateDirectory(cache);
|
|
280
|
+
// Each time window has one immutable lease. Crashes cannot permanently
|
|
281
|
+
// block later windows, and active leases are never deleted or stolen.
|
|
282
|
+
try {
|
|
283
|
+
await lstat(path.join(cache, "leases", updateLeaseSlot()));
|
|
284
|
+
return active.root;
|
|
285
|
+
}
|
|
286
|
+
catch (error) {
|
|
287
|
+
if (error.code !== "ENOENT")
|
|
288
|
+
return active.root;
|
|
289
|
+
}
|
|
290
|
+
const child = spawn(process.execPath, [path.join(active.root, "dist/update-worker.js"), cache, active.version], { cwd: cache, detached: true, stdio: "ignore", env: cleanUpdateEnvironment() });
|
|
291
|
+
child.on("error", () => undefined);
|
|
292
|
+
child.unref();
|
|
293
|
+
}
|
|
294
|
+
catch { /* optional background update cannot affect command output */ }
|
|
295
|
+
return active.root;
|
|
296
|
+
}
|
|
297
|
+
async function manualUpdate(cache) {
|
|
298
|
+
await privateDirectory(cache);
|
|
299
|
+
return new Promise((resolve, reject) => {
|
|
300
|
+
const child = spawn(process.execPath, [fileURLToPath(new URL("./update-worker.js", import.meta.url)), cache, packageVersion, "--manual"], { cwd: cache, stdio: ["ignore", "ignore", "ignore", "ipc"], env: cleanUpdateEnvironment() });
|
|
301
|
+
let result;
|
|
302
|
+
child.on("message", message => {
|
|
303
|
+
const data = message;
|
|
304
|
+
const value = data?.result;
|
|
305
|
+
if (!result && data?.type === "manual-update-result" && value && typeof value.status === "string" && ["current", "staged", "activated", "pinned", "busy", "incomplete", "failed"].includes(value.status) && (value.detail === undefined || typeof value.detail === "string" && value.detail.length <= 180))
|
|
306
|
+
result = { status: value.status, ...(value.detail === undefined ? {} : { detail: value.detail }) };
|
|
307
|
+
});
|
|
308
|
+
const stop = () => { process.exitCode = 130; child.kill("SIGTERM"); };
|
|
309
|
+
const terminate = () => { process.exitCode = 143; child.kill("SIGTERM"); };
|
|
310
|
+
process.on("SIGINT", stop);
|
|
311
|
+
process.on("SIGTERM", terminate);
|
|
312
|
+
const timer = setTimeout(() => child.kill("SIGKILL"), 70000);
|
|
313
|
+
const cleanup = () => { clearTimeout(timer); process.removeListener("SIGINT", stop); process.removeListener("SIGTERM", terminate); };
|
|
314
|
+
child.once("error", error => { cleanup(); reject(error); });
|
|
315
|
+
child.once("close", code => {
|
|
316
|
+
cleanup();
|
|
317
|
+
const ownResult = result ?? { status: "incomplete", detail: "manual worker ended without reporting its result" };
|
|
318
|
+
resolve({ exitCode: code === null ? 1 : code || updateResultExitCode(ownResult), result: ownResult });
|
|
319
|
+
});
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
export function registerSelfUpdateCommands(program, outputOption) {
|
|
323
|
+
const group = program.command("self-update").description("inspect, disable or pin occasional background CLI updates");
|
|
324
|
+
const action = (kind) => async (options) => {
|
|
325
|
+
const cache = updateRoot();
|
|
326
|
+
const target = updateTarget(), preferences = updatePreferenceFiles(cache, target);
|
|
327
|
+
const invalidMetadata = [];
|
|
328
|
+
const safeRead = async (file, limit = 4096) => {
|
|
329
|
+
try {
|
|
330
|
+
return await readUpdateJSON(path.join(cache, file), limit);
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
invalidMetadata.push(file);
|
|
334
|
+
return undefined;
|
|
335
|
+
}
|
|
336
|
+
};
|
|
337
|
+
// Each command writes only its own intent. A stale reader cannot clobber
|
|
338
|
+
// another target's pin or an acknowledged global enable/disable.
|
|
339
|
+
if (kind === "enable" || kind === "disable")
|
|
340
|
+
await writeUpdateJSON(preferences.enabled, { enabled: kind === "enable" });
|
|
341
|
+
if (kind === "pin" || kind === "unpin")
|
|
342
|
+
await writeUpdateJSON(preferences.pin, { version: kind === "pin" ? packageVersion : null });
|
|
343
|
+
let invokedRoot = fileURLToPath(new URL("../", import.meta.url));
|
|
344
|
+
if (process.argv[1])
|
|
345
|
+
invokedRoot = await realpath(process.argv[1]).then(file => path.dirname(path.dirname(file))).catch(() => invokedRoot);
|
|
346
|
+
const eligibilityReason = updateEligibility(invokedRoot, process.env, []);
|
|
347
|
+
let manual;
|
|
348
|
+
if (kind === "check" && (!eligibilityReason || eligibilityReason === "disabled for this invocation")) {
|
|
349
|
+
manual = await manualUpdate(cache);
|
|
350
|
+
}
|
|
351
|
+
let settings;
|
|
352
|
+
try {
|
|
353
|
+
settings = await effectiveUpdatePolicy(cache, target);
|
|
354
|
+
}
|
|
355
|
+
catch {
|
|
356
|
+
invalidMetadata.push("preferences");
|
|
357
|
+
settings = { enabled: false };
|
|
358
|
+
}
|
|
359
|
+
const health = await safeRead("health.json") ?? {};
|
|
360
|
+
const leaseName = typeof health.lease === "string" && /^\d+(?:-manual-[0-9a-f-]{36})?\.json$/.test(health.lease) ? health.lease : updateLeaseSlot();
|
|
361
|
+
const lease = await safeRead(path.join("leases", leaseName));
|
|
362
|
+
let worker;
|
|
363
|
+
if (lease) {
|
|
364
|
+
worker = health.lease === leaseName && health.status && health.status !== "checking" ? "finished" : "unknown";
|
|
365
|
+
if (worker !== "finished" && Number.isSafeInteger(lease.pid) && lease.pid > 0) {
|
|
366
|
+
try {
|
|
367
|
+
process.kill(lease.pid, 0);
|
|
368
|
+
worker = "active";
|
|
369
|
+
}
|
|
370
|
+
catch (error) {
|
|
371
|
+
if (error.code === "ESRCH")
|
|
372
|
+
worker = "interrupted";
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
const bundled = await readUpdateJSON(path.join(invokedRoot, "package.json"), 65536).catch(() => undefined);
|
|
377
|
+
const pointer = await safeRead("current.json");
|
|
378
|
+
const activated = await selectActivatedRelease(cache, bundled?.version ?? packageVersion).catch(() => undefined);
|
|
379
|
+
const checkAllowed = !eligibilityReason || eligibilityReason === "disabled for this invocation";
|
|
380
|
+
const state = { version: packageVersion, bundledVersion: bundled?.version ?? packageVersion, selectedVersion: packageVersion, cachedVersion: stableVersion(pointer?.version) ? pointer.version : null, stagedVersion: stableVersion(pointer?.version) ? pointer.version : null, activatedVersion: activated?.version ?? null, target, policyFile: preferences.enabled, pinFile: preferences.pin, policyScope: "user", pinScope: "runtime_target", eligible: !eligibilityReason, eligibilityReason: eligibilityReason ?? null, checkRequested: kind === "check", checkAllowed: kind === "check" ? checkAllowed : null, manualExitCode: manual?.exitCode ?? null, manualResult: manual?.result ?? null, enabled: settings.enabled !== false, pinnedVersion: settings.pinnedVersion ?? null, checkIntervalHours: 6, health, worker: worker ?? null, cache, historicalNpmPinDetectable: false, invalidMetadata };
|
|
381
|
+
if (options.output === "json")
|
|
382
|
+
process.stdout.write(JSON.stringify(state) + "\n");
|
|
383
|
+
else
|
|
384
|
+
process.stdout.write(`CLI ${state.selectedVersion} (bundled ${state.bundledVersion}, staged ${state.stagedVersion ?? "none"}, activated ${state.activatedVersion ?? "none"}): background updates ${state.enabled ? "enabled" : "disabled"}${state.pinnedVersion ? `, pinned to ${state.pinnedVersion}` : ""}${eligibilityReason ? `\nLaunch: ${eligibilityReason}` : ""}${manual ? `\nManual check: ${manual.result.status}${manual.result.detail ? ` (${manual.result.detail})` : ""}` : ""}\nLast shared attempt: ${health.status ?? "none"}${health.detail ? ` (${health.detail})` : ""}${worker ? `\nWorker lease: ${worker} (leases are never stolen)` : ""}\n`);
|
|
385
|
+
if (kind === "check" && (!checkAllowed || manual?.exitCode))
|
|
386
|
+
process.exitCode ||= manual?.exitCode || 1;
|
|
387
|
+
};
|
|
388
|
+
for (const [kind, description] of [["status", "show update policy, installation eligibility and last attempt"], ["check", "check now and activate a verified update for the next invocation"], ["enable", "enable occasional updates for eligible global installations"], ["disable", "disable background downloads and new automatic activations"], ["pin", "keep the currently selected CLI version"], ["unpin", "resume updates after a version pin"]])
|
|
389
|
+
group.command(kind).description(description).addOption(outputOption()).action(action(kind));
|
|
390
|
+
}
|
|
391
|
+
//# sourceMappingURL=self-update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"self-update.js","sourceRoot":"","sources":["../src/self-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":1,"bootstrap":1,"name":"@heyditto/cli","packageVersion":"2.35.0","packages":[{"path":"node_modules/@hono/node-server","name":"@hono/node-server","version":"1.19.14","resolved":"https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.14.tgz","integrity":"sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw=="},{"path":"node_modules/@isaacs/fs-minipass","name":"@isaacs/fs-minipass","version":"4.0.1","resolved":"https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz","integrity":"sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="},{"path":"node_modules/@lydell/node-pty","name":"@lydell/node-pty","version":"1.2.0-beta.15","resolved":"https://registry.npmjs.org/@lydell/node-pty/-/node-pty-1.2.0-beta.15.tgz","integrity":"sha512-Br8wBxzbxFwdWgk9uQ+rdzE0xfoxOK4QuGH54swhRwc5IxP6H9Y1/bcyazRGvNUs6XkB5qNVkezuKSRxUwZe7A==","optional":true},{"path":"node_modules/@lydell/node-pty-darwin-arm64","name":"@lydell/node-pty-darwin-arm64","version":"1.2.0-beta.15","resolved":"https://registry.npmjs.org/@lydell/node-pty-darwin-arm64/-/node-pty-darwin-arm64-1.2.0-beta.15.tgz","integrity":"sha512-6TSBbzdcLiNTHl1mTuzflqXrkmcC36USVGvERoDgvHk2ItEDaMaFZuAJ1CqPmwYj0DyhCS16TVS8OGK9xZnjyQ==","optional":true,"os":["darwin"],"cpu":["arm64"]},{"path":"node_modules/@lydell/node-pty-darwin-x64","name":"@lydell/node-pty-darwin-x64","version":"1.2.0-beta.15","resolved":"https://registry.npmjs.org/@lydell/node-pty-darwin-x64/-/node-pty-darwin-x64-1.2.0-beta.15.tgz","integrity":"sha512-yDT2oqPqYMBScyuk1U9Rg5VKcrbMOD9o9jWYYamDADA3NSbUISroPChrqYRQ74Y7BQtNH4gqYAiWOZRi5uQZ0Q==","optional":true,"os":["darwin"],"cpu":["x64"]},{"path":"node_modules/@lydell/node-pty-linux-arm64","name":"@lydell/node-pty-linux-arm64","version":"1.2.0-beta.15","resolved":"https://registry.npmjs.org/@lydell/node-pty-linux-arm64/-/node-pty-linux-arm64-1.2.0-beta.15.tgz","integrity":"sha512-wkbNF7dYAmtJv+o2+iztVlNwnUB4B0uX0wh/UD+mwMcmE2gNMnW9GChXO7fEE5XJokD0vB5idiHpGegaN+G/sg==","optional":true,"os":["linux"],"cpu":["arm64"]},{"path":"node_modules/@lydell/node-pty-linux-x64","name":"@lydell/node-pty-linux-x64","version":"1.2.0-beta.15","resolved":"https://registry.npmjs.org/@lydell/node-pty-linux-x64/-/node-pty-linux-x64-1.2.0-beta.15.tgz","integrity":"sha512-+U/5AVvHT6W+8OCYcnJgN0Qgc0ycO3TfD6aaFJHK+WHij797f8gsi5dV1HEO9l6YQmWCD+VL5gaLDhx3mxHwCA==","optional":true,"os":["linux"],"cpu":["x64"]},{"path":"node_modules/@lydell/node-pty-win32-arm64","name":"@lydell/node-pty-win32-arm64","version":"1.2.0-beta.15","resolved":"https://registry.npmjs.org/@lydell/node-pty-win32-arm64/-/node-pty-win32-arm64-1.2.0-beta.15.tgz","integrity":"sha512-pyAk91w7wnnKrD4mrHXtIXRfmzSWV5bEzvRhurXcMCtCc2TJ424ciUskIgWMhAPP6y3KyUnqElj+U6kY3iOt0A==","optional":true,"os":["win32"],"cpu":["arm64"]},{"path":"node_modules/@lydell/node-pty-win32-x64","name":"@lydell/node-pty-win32-x64","version":"1.2.0-beta.15","resolved":"https://registry.npmjs.org/@lydell/node-pty-win32-x64/-/node-pty-win32-x64-1.2.0-beta.15.tgz","integrity":"sha512-2f8twEmDVxZ7drchAXjtevpmSPhFok0avAnzXro4t5gmz0xsPNKkoZvymwtuIS3xo7PzQqZOPQ/YzwEMb7oIzQ==","optional":true,"os":["win32"],"cpu":["x64"]},{"path":"node_modules/@modelcontextprotocol/sdk","name":"@modelcontextprotocol/sdk","version":"1.29.0","resolved":"https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.29.0.tgz","integrity":"sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ=="},{"path":"node_modules/accepts","name":"accepts","version":"2.0.0","resolved":"https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz","integrity":"sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="},{"path":"node_modules/ajv","name":"ajv","version":"8.20.0","resolved":"https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz","integrity":"sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="},{"path":"node_modules/ajv-formats","name":"ajv-formats","version":"3.0.1","resolved":"https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz","integrity":"sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ=="},{"path":"node_modules/body-parser","name":"body-parser","version":"2.2.2","resolved":"https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz","integrity":"sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA=="},{"path":"node_modules/bytes","name":"bytes","version":"3.1.2","resolved":"https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz","integrity":"sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg=="},{"path":"node_modules/call-bind-apply-helpers","name":"call-bind-apply-helpers","version":"1.0.2","resolved":"https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz","integrity":"sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="},{"path":"node_modules/call-bound","name":"call-bound","version":"1.0.4","resolved":"https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz","integrity":"sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="},{"path":"node_modules/chownr","name":"chownr","version":"3.0.0","resolved":"https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz","integrity":"sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="},{"path":"node_modules/commander","name":"commander","version":"15.0.0","resolved":"https://registry.npmjs.org/commander/-/commander-15.0.0.tgz","integrity":"sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg=="},{"path":"node_modules/content-disposition","name":"content-disposition","version":"1.1.0","resolved":"https://registry.npmjs.org/content-disposition/-/content-disposition-1.1.0.tgz","integrity":"sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g=="},{"path":"node_modules/content-type","name":"content-type","version":"1.0.5","resolved":"https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz","integrity":"sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="},{"path":"node_modules/cookie","name":"cookie","version":"0.7.2","resolved":"https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz","integrity":"sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="},{"path":"node_modules/cookie-signature","name":"cookie-signature","version":"1.2.2","resolved":"https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz","integrity":"sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg=="},{"path":"node_modules/cors","name":"cors","version":"2.8.6","resolved":"https://registry.npmjs.org/cors/-/cors-2.8.6.tgz","integrity":"sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw=="},{"path":"node_modules/cross-spawn","name":"cross-spawn","version":"7.0.6","resolved":"https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz","integrity":"sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="},{"path":"node_modules/debug","name":"debug","version":"4.4.3","resolved":"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz","integrity":"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="},{"path":"node_modules/depd","name":"depd","version":"2.0.0","resolved":"https://registry.npmjs.org/depd/-/depd-2.0.0.tgz","integrity":"sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="},{"path":"node_modules/dunder-proto","name":"dunder-proto","version":"1.0.1","resolved":"https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz","integrity":"sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="},{"path":"node_modules/ee-first","name":"ee-first","version":"1.1.1","resolved":"https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz","integrity":"sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="},{"path":"node_modules/encodeurl","name":"encodeurl","version":"2.0.0","resolved":"https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz","integrity":"sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="},{"path":"node_modules/es-define-property","name":"es-define-property","version":"1.0.1","resolved":"https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz","integrity":"sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="},{"path":"node_modules/es-errors","name":"es-errors","version":"1.3.0","resolved":"https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz","integrity":"sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="},{"path":"node_modules/es-object-atoms","name":"es-object-atoms","version":"1.1.2","resolved":"https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz","integrity":"sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw=="},{"path":"node_modules/escape-html","name":"escape-html","version":"1.0.3","resolved":"https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz","integrity":"sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="},{"path":"node_modules/etag","name":"etag","version":"1.8.1","resolved":"https://registry.npmjs.org/etag/-/etag-1.8.1.tgz","integrity":"sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="},{"path":"node_modules/eventsource","name":"eventsource","version":"3.0.7","resolved":"https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz","integrity":"sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA=="},{"path":"node_modules/eventsource-parser","name":"eventsource-parser","version":"3.0.8","resolved":"https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.8.tgz","integrity":"sha512-70QWGkr4snxr0OXLRWsFLeRBIRPuQOvt4s8QYjmUlmlkyTZkRqS7EDVRZtzU3TiyDbXSzaOeF0XUKy8PchzukQ=="},{"path":"node_modules/express","name":"express","version":"5.2.1","resolved":"https://registry.npmjs.org/express/-/express-5.2.1.tgz","integrity":"sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw=="},{"path":"node_modules/express-rate-limit","name":"express-rate-limit","version":"8.5.1","resolved":"https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.5.1.tgz","integrity":"sha512-5O6KYmyJEpuPJV5hNTXKbAHWRqrzyu+OI3vUnSd2kXFubIVpG7ezpgxQy76Zo5GQZtrQBg86hF+CM/NX+cioiQ=="},{"path":"node_modules/fast-deep-equal","name":"fast-deep-equal","version":"3.1.3","resolved":"https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz","integrity":"sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="},{"path":"node_modules/fast-uri","name":"fast-uri","version":"3.1.2","resolved":"https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz","integrity":"sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ=="},{"path":"node_modules/finalhandler","name":"finalhandler","version":"2.1.1","resolved":"https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz","integrity":"sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA=="},{"path":"node_modules/forwarded","name":"forwarded","version":"0.2.0","resolved":"https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz","integrity":"sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="},{"path":"node_modules/fresh","name":"fresh","version":"2.0.0","resolved":"https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz","integrity":"sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="},{"path":"node_modules/function-bind","name":"function-bind","version":"1.1.2","resolved":"https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz","integrity":"sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="},{"path":"node_modules/get-intrinsic","name":"get-intrinsic","version":"1.3.0","resolved":"https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz","integrity":"sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="},{"path":"node_modules/get-proto","name":"get-proto","version":"1.0.1","resolved":"https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz","integrity":"sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="},{"path":"node_modules/gopd","name":"gopd","version":"1.2.0","resolved":"https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz","integrity":"sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="},{"path":"node_modules/has-symbols","name":"has-symbols","version":"1.1.0","resolved":"https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz","integrity":"sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="},{"path":"node_modules/hasown","name":"hasown","version":"2.0.4","resolved":"https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz","integrity":"sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A=="},{"path":"node_modules/hono","name":"hono","version":"4.12.28","resolved":"https://registry.npmjs.org/hono/-/hono-4.12.28.tgz","integrity":"sha512-YwUvVpSF7m1yOblFPrU3Hbo8XhPheBoiyfGuII6z19LnOr6JpDnyyp7LFNrfV56wS8tpvtBFGRISHN02pDdLOA=="},{"path":"node_modules/http-errors","name":"http-errors","version":"2.0.1","resolved":"https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz","integrity":"sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ=="},{"path":"node_modules/iconv-lite","name":"iconv-lite","version":"0.7.2","resolved":"https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz","integrity":"sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw=="},{"path":"node_modules/inherits","name":"inherits","version":"2.0.4","resolved":"https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz","integrity":"sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="},{"path":"node_modules/ip-address","name":"ip-address","version":"10.2.0","resolved":"https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz","integrity":"sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA=="},{"path":"node_modules/ipaddr.js","name":"ipaddr.js","version":"1.9.1","resolved":"https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz","integrity":"sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="},{"path":"node_modules/is-promise","name":"is-promise","version":"4.0.0","resolved":"https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz","integrity":"sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="},{"path":"node_modules/isexe","name":"isexe","version":"2.0.0","resolved":"https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz","integrity":"sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="},{"path":"node_modules/jose","name":"jose","version":"6.2.3","resolved":"https://registry.npmjs.org/jose/-/jose-6.2.3.tgz","integrity":"sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw=="},{"path":"node_modules/json-schema-traverse","name":"json-schema-traverse","version":"1.0.0","resolved":"https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz","integrity":"sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="},{"path":"node_modules/json-schema-typed","name":"json-schema-typed","version":"8.0.2","resolved":"https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz","integrity":"sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA=="},{"path":"node_modules/math-intrinsics","name":"math-intrinsics","version":"1.1.0","resolved":"https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz","integrity":"sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="},{"path":"node_modules/media-typer","name":"media-typer","version":"1.1.0","resolved":"https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz","integrity":"sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="},{"path":"node_modules/merge-descriptors","name":"merge-descriptors","version":"2.0.0","resolved":"https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz","integrity":"sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="},{"path":"node_modules/mime-db","name":"mime-db","version":"1.54.0","resolved":"https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz","integrity":"sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ=="},{"path":"node_modules/mime-types","name":"mime-types","version":"3.0.2","resolved":"https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz","integrity":"sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A=="},{"path":"node_modules/minipass","name":"minipass","version":"7.1.3","resolved":"https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz","integrity":"sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A=="},{"path":"node_modules/minizlib","name":"minizlib","version":"3.1.0","resolved":"https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz","integrity":"sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw=="},{"path":"node_modules/ms","name":"ms","version":"2.1.3","resolved":"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz","integrity":"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="},{"path":"node_modules/negotiator","name":"negotiator","version":"1.0.0","resolved":"https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz","integrity":"sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="},{"path":"node_modules/object-assign","name":"object-assign","version":"4.1.1","resolved":"https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz","integrity":"sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="},{"path":"node_modules/object-inspect","name":"object-inspect","version":"1.13.4","resolved":"https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz","integrity":"sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew=="},{"path":"node_modules/on-finished","name":"on-finished","version":"2.4.1","resolved":"https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz","integrity":"sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="},{"path":"node_modules/once","name":"once","version":"1.4.0","resolved":"https://registry.npmjs.org/once/-/once-1.4.0.tgz","integrity":"sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="},{"path":"node_modules/parseurl","name":"parseurl","version":"1.3.3","resolved":"https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz","integrity":"sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="},{"path":"node_modules/path-key","name":"path-key","version":"3.1.1","resolved":"https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz","integrity":"sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="},{"path":"node_modules/path-to-regexp","name":"path-to-regexp","version":"8.4.2","resolved":"https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.4.2.tgz","integrity":"sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA=="},{"path":"node_modules/pkce-challenge","name":"pkce-challenge","version":"5.0.1","resolved":"https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz","integrity":"sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ=="},{"path":"node_modules/proxy-addr","name":"proxy-addr","version":"2.0.7","resolved":"https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz","integrity":"sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="},{"path":"node_modules/qs","name":"qs","version":"6.15.3","resolved":"https://registry.npmjs.org/qs/-/qs-6.15.3.tgz","integrity":"sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A=="},{"path":"node_modules/range-parser","name":"range-parser","version":"1.2.1","resolved":"https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz","integrity":"sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="},{"path":"node_modules/raw-body","name":"raw-body","version":"3.0.2","resolved":"https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz","integrity":"sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA=="},{"path":"node_modules/require-from-string","name":"require-from-string","version":"2.0.2","resolved":"https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz","integrity":"sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="},{"path":"node_modules/router","name":"router","version":"2.2.0","resolved":"https://registry.npmjs.org/router/-/router-2.2.0.tgz","integrity":"sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ=="},{"path":"node_modules/safer-buffer","name":"safer-buffer","version":"2.1.2","resolved":"https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz","integrity":"sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="},{"path":"node_modules/semver","name":"semver","version":"7.8.5","resolved":"https://registry.npmjs.org/semver/-/semver-7.8.5.tgz","integrity":"sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="},{"path":"node_modules/send","name":"send","version":"1.2.1","resolved":"https://registry.npmjs.org/send/-/send-1.2.1.tgz","integrity":"sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ=="},{"path":"node_modules/serve-static","name":"serve-static","version":"2.2.1","resolved":"https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz","integrity":"sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw=="},{"path":"node_modules/setprototypeof","name":"setprototypeof","version":"1.2.0","resolved":"https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz","integrity":"sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="},{"path":"node_modules/shebang-command","name":"shebang-command","version":"2.0.0","resolved":"https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz","integrity":"sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="},{"path":"node_modules/shebang-regex","name":"shebang-regex","version":"3.0.0","resolved":"https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz","integrity":"sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="},{"path":"node_modules/side-channel","name":"side-channel","version":"1.1.1","resolved":"https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz","integrity":"sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ=="},{"path":"node_modules/side-channel-list","name":"side-channel-list","version":"1.0.1","resolved":"https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz","integrity":"sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w=="},{"path":"node_modules/side-channel-map","name":"side-channel-map","version":"1.0.1","resolved":"https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz","integrity":"sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="},{"path":"node_modules/side-channel-weakmap","name":"side-channel-weakmap","version":"1.0.2","resolved":"https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz","integrity":"sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A=="},{"path":"node_modules/smol-toml","name":"smol-toml","version":"1.8.0","resolved":"https://registry.npmjs.org/smol-toml/-/smol-toml-1.8.0.tgz","integrity":"sha512-kCZr2V3ch9i00x8zXRhjUNVcjG9ijES5dDudkXvUVCT5QlJNQWElSJdZqyPemffHoLNUYwOcou0Fy+ojN0uHSQ=="},{"path":"node_modules/statuses","name":"statuses","version":"2.0.2","resolved":"https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz","integrity":"sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="},{"path":"node_modules/tar","name":"tar","version":"7.5.22","resolved":"https://registry.npmjs.org/tar/-/tar-7.5.22.tgz","integrity":"sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA=="},{"path":"node_modules/toidentifier","name":"toidentifier","version":"1.0.1","resolved":"https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz","integrity":"sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="},{"path":"node_modules/type-is","name":"type-is","version":"2.0.1","resolved":"https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz","integrity":"sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw=="},{"path":"node_modules/unpipe","name":"unpipe","version":"1.0.0","resolved":"https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz","integrity":"sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="},{"path":"node_modules/vary","name":"vary","version":"1.1.2","resolved":"https://registry.npmjs.org/vary/-/vary-1.1.2.tgz","integrity":"sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="},{"path":"node_modules/which","name":"which","version":"2.0.2","resolved":"https://registry.npmjs.org/which/-/which-2.0.2.tgz","integrity":"sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="},{"path":"node_modules/wrappy","name":"wrappy","version":"1.0.2","resolved":"https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz","integrity":"sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="},{"path":"node_modules/yallist","name":"yallist","version":"5.0.0","resolved":"https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz","integrity":"sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="},{"path":"node_modules/zod","name":"zod","version":"4.4.3","resolved":"https://registry.npmjs.org/zod/-/zod-4.4.3.tgz","integrity":"sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="},{"path":"node_modules/zod-to-json-schema","name":"zod-to-json-schema","version":"3.25.2","resolved":"https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.2.tgz","integrity":"sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA=="}]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type UpdateResult } from "./self-update.js";
|
|
2
|
+
export declare const UPDATE_LIMITS: {
|
|
3
|
+
timeoutMs: number;
|
|
4
|
+
metadataBytes: number;
|
|
5
|
+
archiveBytes: number;
|
|
6
|
+
downloadBytes: number;
|
|
7
|
+
unpackedBytes: number;
|
|
8
|
+
archiveUnpackedBytes: number;
|
|
9
|
+
cacheBytes: number;
|
|
10
|
+
files: number;
|
|
11
|
+
packages: number;
|
|
12
|
+
};
|
|
13
|
+
interface ArchiveFile {
|
|
14
|
+
data: Buffer;
|
|
15
|
+
mode: number;
|
|
16
|
+
}
|
|
17
|
+
export interface WorkerOptions {
|
|
18
|
+
cache: string;
|
|
19
|
+
currentVersion: string;
|
|
20
|
+
/** Dependency injection is available to tests, never a CLI/env registry override. */
|
|
21
|
+
fetch?: typeof fetch;
|
|
22
|
+
platform?: string;
|
|
23
|
+
arch?: string;
|
|
24
|
+
libc?: string;
|
|
25
|
+
nodeVersion?: string;
|
|
26
|
+
now?: () => number;
|
|
27
|
+
manual?: boolean;
|
|
28
|
+
limits?: Partial<typeof UPDATE_LIMITS>;
|
|
29
|
+
}
|
|
30
|
+
export declare function registryURL(value: unknown): string;
|
|
31
|
+
/** Parse into bounded memory BEFORE making any filesystem writes. No links or
|
|
32
|
+
* special files are extracted, and mode bits are reduced to 0644/0755. */
|
|
33
|
+
export declare function unpackArchive(bytes: Buffer, limits?: {
|
|
34
|
+
timeoutMs: number;
|
|
35
|
+
metadataBytes: number;
|
|
36
|
+
archiveBytes: number;
|
|
37
|
+
downloadBytes: number;
|
|
38
|
+
unpackedBytes: number;
|
|
39
|
+
archiveUnpackedBytes: number;
|
|
40
|
+
cacheBytes: number;
|
|
41
|
+
files: number;
|
|
42
|
+
packages: number;
|
|
43
|
+
}): Promise<Map<string, ArchiveFile>>;
|
|
44
|
+
export declare function runUpdate(options: WorkerOptions): Promise<UpdateResult>;
|
|
45
|
+
export {};
|