@wavehouse/chtypes 2.0.0-dev.5 → 2.0.0-dev.7

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 (80) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/abi2/buildinfo.d.ts +1 -1
  3. package/dist/abi2/buildinfo.js +3 -3
  4. package/dist/abi2/buildinfo.js.map +1 -1
  5. package/dist/abi2/errors.d.ts +16 -38
  6. package/dist/abi2/errors.d.ts.map +1 -1
  7. package/dist/abi2/errors.js +16 -42
  8. package/dist/abi2/errors.js.map +1 -1
  9. package/dist/abi2/index.d.ts +1 -1
  10. package/dist/abi2/index.d.ts.map +1 -1
  11. package/dist/abi2/index.js +1 -1
  12. package/dist/abi2/index.js.map +1 -1
  13. package/dist/abi2/libc.gen.d.ts +2 -0
  14. package/dist/abi2/libc.gen.d.ts.map +1 -1
  15. package/dist/abi2/libc.gen.js +10 -0
  16. package/dist/abi2/libc.gen.js.map +1 -1
  17. package/dist/abi2/loader.js +2 -2
  18. package/dist/abi2/loader.js.map +1 -1
  19. package/dist/cli.d.ts +8 -3
  20. package/dist/cli.d.ts.map +1 -1
  21. package/dist/cli.js +94 -11
  22. package/dist/cli.js.map +1 -1
  23. package/dist/env.d.ts +8 -1
  24. package/dist/env.d.ts.map +1 -1
  25. package/dist/env.js +17 -8
  26. package/dist/env.js.map +1 -1
  27. package/dist/index.d.ts +5 -4
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +5 -4
  30. package/dist/index.js.map +1 -1
  31. package/dist/ocifetch/channel.d.ts +6 -0
  32. package/dist/ocifetch/channel.d.ts.map +1 -1
  33. package/dist/ocifetch/channel.js +31 -1
  34. package/dist/ocifetch/channel.js.map +1 -1
  35. package/dist/ocifetch/constants.gen.d.ts +20 -0
  36. package/dist/ocifetch/constants.gen.d.ts.map +1 -1
  37. package/dist/ocifetch/constants.gen.js +20 -1
  38. package/dist/ocifetch/constants.gen.js.map +1 -1
  39. package/dist/ocifetch/ensure.d.ts +42 -8
  40. package/dist/ocifetch/ensure.d.ts.map +1 -1
  41. package/dist/ocifetch/ensure.js +111 -41
  42. package/dist/ocifetch/ensure.js.map +1 -1
  43. package/dist/ocifetch/errors.d.ts +51 -27
  44. package/dist/ocifetch/errors.d.ts.map +1 -1
  45. package/dist/ocifetch/errors.js +49 -38
  46. package/dist/ocifetch/errors.js.map +1 -1
  47. package/dist/ocifetch/hold.d.ts +66 -0
  48. package/dist/ocifetch/hold.d.ts.map +1 -0
  49. package/dist/ocifetch/hold.js +150 -0
  50. package/dist/ocifetch/hold.js.map +1 -0
  51. package/dist/ocifetch/http.d.ts.map +1 -1
  52. package/dist/ocifetch/http.js +1 -1
  53. package/dist/ocifetch/http.js.map +1 -1
  54. package/dist/ocifetch/index.d.ts +6 -2
  55. package/dist/ocifetch/index.d.ts.map +1 -1
  56. package/dist/ocifetch/index.js +5 -1
  57. package/dist/ocifetch/index.js.map +1 -1
  58. package/dist/ocifetch/lock.d.ts +2 -1
  59. package/dist/ocifetch/lock.d.ts.map +1 -1
  60. package/dist/ocifetch/lock.js +7 -5
  61. package/dist/ocifetch/lock.js.map +1 -1
  62. package/dist/ocifetch/oci.d.ts +38 -6
  63. package/dist/ocifetch/oci.d.ts.map +1 -1
  64. package/dist/ocifetch/oci.js +48 -12
  65. package/dist/ocifetch/oci.js.map +1 -1
  66. package/dist/ocifetch/prune.d.ts +48 -0
  67. package/dist/ocifetch/prune.d.ts.map +1 -0
  68. package/dist/ocifetch/prune.js +383 -0
  69. package/dist/ocifetch/prune.js.map +1 -0
  70. package/dist/ocifetch/resolve.d.ts +37 -0
  71. package/dist/ocifetch/resolve.d.ts.map +1 -0
  72. package/dist/ocifetch/resolve.js +90 -0
  73. package/dist/ocifetch/resolve.js.map +1 -0
  74. package/dist/ocifetch/types.d.ts +1 -1
  75. package/dist/ocifetch/types.d.ts.map +1 -1
  76. package/dist/registry.d.ts +64 -3
  77. package/dist/registry.d.ts.map +1 -1
  78. package/dist/registry.js +141 -10
  79. package/dist/registry.js.map +1 -1
  80. package/package.json +1 -1
@@ -0,0 +1,383 @@
1
+ /**
2
+ * `chtypes prune` (`docs/guides/fetch-v1.md` §1, "Pruning"; public issue
3
+ * #494): remove the installed builds of a line that newer installed builds of
4
+ * the same line and platform supersede, keeping the newest N, and never one a
5
+ * live process holds (`./hold.ts`). It reads and writes the cache only, never
6
+ * a system directory, and never another fingerprint's records (§3: the dev
7
+ * channel's own-fingerprint rule).
8
+ */
9
+ import { randomBytes } from 'node:crypto';
10
+ import { mkdirSync, renameSync, rmdirSync } from 'node:fs';
11
+ import { lstat, readdir, readFile, rename, rm, unlink, writeFile } from 'node:fs/promises';
12
+ import path from 'node:path';
13
+ import { noteIgnoredOverrides, visibleToChannel } from './channel.js';
14
+ import { CACHE_UNPACKED_DIR, MANIFEST_MAX_BYTES, PLATFORMS } from './constants.gen.js';
15
+ import { probeRoots, strictMode, unwritable } from './faults.js';
16
+ import { claim } from './hold.js';
17
+ import { blobsDir, cacheRoot, listVerified } from './layout.js';
18
+ import { hexOfDigest } from './types.js';
19
+ /** A two-part line spelling, `26.8`. */
20
+ const LINE = /^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)$/;
21
+ const HEX64 = /^[0-9a-f]{64}$/;
22
+ const DIGEST = /^sha256:[0-9a-f]{64}$/;
23
+ /** How many times a fresh aside directory, or an `index.json` rewrite, is tried before the failure stands. */
24
+ const ATTEMPTS = 8;
25
+ /** Whether `s` is a two-part line spelling, such as `26.8`. */
26
+ export function isLine(s) {
27
+ return LINE.test(s);
28
+ }
29
+ /** The two-part line of a version: `26.8` for `26.8.15.10`, or `''` for anything shorter. */
30
+ export function lineOf(version) {
31
+ const parts = version.split('.');
32
+ return parts.length < 2 ? '' : parts.slice(0, 2).join('.');
33
+ }
34
+ /**
35
+ * Removes, from the cache, every installed build that at least `keep` newer
36
+ * installed builds of its own line and platform supersede, oldest first.
37
+ * Builds are ordered by (version, build), then the manifest digest, and the
38
+ * report by platform (the constants' order), then oldest first. A superseded
39
+ * build a live process holds is reported `inUse` and kept. For each build it
40
+ * removes the unpacked entry with its record, then its `index.json` entries,
41
+ * then its blobs (the manifest, its config and layer, and every referrer
42
+ * manifest of it the layout holds, with that referrer's layers), never a blob
43
+ * a remaining build names. A `keep` below 1 or a `line` that is not a two-part
44
+ * line is the caller's misuse. A write that fails under the cache is a
45
+ * `CacheUnusableError` (reason `unwritable`).
46
+ */
47
+ export async function prune(options, request) {
48
+ if (!Number.isInteger(request.keep) || request.keep < 1) {
49
+ throw new RangeError(`chtypes: --keep is at least 1 (the newest build of a line is never superseded), not ${request.keep}`);
50
+ }
51
+ const line = request.line ?? '';
52
+ if (line !== '' && !isLine(line)) {
53
+ throw new RangeError(`chtypes: --line takes a two-part line such as 26.8, not ${JSON.stringify(line)}`);
54
+ }
55
+ noteIgnoredOverrides(options);
56
+ const root = cacheRoot(options.cacheDir);
57
+ try {
58
+ return await pruneIn(root, options, line, request.keep, request.dryRun === true);
59
+ }
60
+ catch (err) {
61
+ throw await unwritable(err, root);
62
+ }
63
+ }
64
+ async function pruneIn(root, options, line, keep, dryRun) {
65
+ // Only the cache is pruned: a system directory is read-only. An unreadable
66
+ // cache holds nothing this call can prune; the default mode's warning names
67
+ // it (`missingNotes`), and strict mode's `CacheUnusableError` is thrown here.
68
+ await probeRoots([root], strictMode(options.strictCache));
69
+ const groups = new Map();
70
+ for (const { dir, record } of await listVerified(root)) {
71
+ // Another fingerprint's build: its own SDK keeps or prunes it.
72
+ if (!visibleToChannel(record.predicate))
73
+ continue;
74
+ const entryLine = lineOf(record.version);
75
+ if (line !== '' && entryLine !== line)
76
+ continue;
77
+ const key = `${record.platform} ${entryLine}`;
78
+ const entry = { dir, record, manifest: entryManifest(dir) };
79
+ const group = groups.get(key);
80
+ if (group === undefined)
81
+ groups.set(key, [entry]);
82
+ else
83
+ group.push(entry);
84
+ }
85
+ const superseded = [];
86
+ for (const members of groups.values()) {
87
+ members.sort((a, b) => compareAge(b, a)); // newest first
88
+ superseded.push(...members.slice(keep));
89
+ }
90
+ superseded.sort((a, b) => platformRank(a.record.platform) - platformRank(b.record.platform) || compareAge(a, b));
91
+ const unpackedRoot = path.join(root, CACHE_UNPACKED_DIR);
92
+ const out = [];
93
+ const removed = [];
94
+ for (const e of superseded) {
95
+ const s = {
96
+ platform: e.record.platform,
97
+ version: e.record.version,
98
+ build: e.record.build,
99
+ manifest: e.manifest,
100
+ dir: e.dir,
101
+ };
102
+ const claimed = claim(e.dir);
103
+ if (claimed.state === 'gone')
104
+ continue; // another prune removed it, or an install replaced it
105
+ if (claimed.state === 'in-use') {
106
+ out.push({ ...s, inUse: true });
107
+ continue;
108
+ }
109
+ if (dryRun) {
110
+ claimed.release();
111
+ out.push({ ...s, inUse: false });
112
+ continue;
113
+ }
114
+ // Moved aside while the exclusive lock is held, synchronously, so nothing
115
+ // else in this process runs meanwhile: once the lock drops, no lookup
116
+ // lists the entry, and a hold taken on it finds it gone.
117
+ const aside = releasing(claimed.release, () => moveAside(unpackedRoot, e.dir));
118
+ removed.push({ entry: e, aside });
119
+ out.push({ ...s, inUse: false });
120
+ }
121
+ if (removed.length === 0)
122
+ return out;
123
+ const blobs = await blobsOf(root, new Set(removed.map((r) => r.entry.manifest)));
124
+ for (const { entry } of removed) {
125
+ for (const d of [entry.record.layerDigest, entry.record.bundleDigest, entry.record.bundleManifestDigest]) {
126
+ if (d !== null && DIGEST.test(d))
127
+ blobs.add(d);
128
+ }
129
+ }
130
+ // Never a blob a remaining build names, whatever its fingerprint.
131
+ for (const { dir, record } of await listVerified(root)) {
132
+ const named = [...(await ownBlobs(root, entryManifest(dir))), record.manifestDigest, record.layerDigest, record.bundleDigest, record.bundleManifestDigest];
133
+ for (const d of named)
134
+ if (d !== null)
135
+ blobs.delete(d);
136
+ }
137
+ await removeIndexEntries(root, blobs);
138
+ for (const d of blobs) {
139
+ try {
140
+ await unlink(path.join(blobsDir(root), hexOfDigest(d)));
141
+ }
142
+ catch (err) {
143
+ if (err.code !== 'ENOENT')
144
+ throw err;
145
+ }
146
+ }
147
+ for (const { aside } of removed)
148
+ await rm(aside, { recursive: true, force: true });
149
+ return out;
150
+ }
151
+ /** `f()`, then `release()` however `f` ended. */
152
+ function releasing(release, f) {
153
+ try {
154
+ return f();
155
+ }
156
+ finally {
157
+ release();
158
+ }
159
+ }
160
+ /** Renames the entry `dir` into a fresh `unpacked/sha256/.prune-<random>` directory, as `entry`, and returns that directory. */
161
+ function moveAside(unpackedRoot, dir) {
162
+ const aside = freshPruneDir(unpackedRoot);
163
+ try {
164
+ renameSync(dir, path.join(aside, 'entry'));
165
+ }
166
+ catch (err) {
167
+ try {
168
+ rmdirSync(aside);
169
+ }
170
+ catch {
171
+ // Left empty beside the entries; no lookup reads a `.prune-` name.
172
+ }
173
+ throw err;
174
+ }
175
+ return aside;
176
+ }
177
+ /** A fresh, empty `.prune-<random>` directory under `unpackedRoot` (mode 0777 less the umask), its random bits this process's own. */
178
+ function freshPruneDir(unpackedRoot) {
179
+ for (let attempt = 1;; attempt++) {
180
+ const dir = path.join(unpackedRoot, `.prune-${process.pid}-${randomBytes(6).toString('hex')}`);
181
+ try {
182
+ mkdirSync(dir, { mode: 0o777 });
183
+ return dir;
184
+ }
185
+ catch (err) {
186
+ if (err.code !== 'EEXIST' || attempt >= ATTEMPTS)
187
+ throw err;
188
+ }
189
+ }
190
+ }
191
+ /** An installed entry's own manifest digest: its directory's name. */
192
+ function entryManifest(dir) {
193
+ return `sha256:${path.basename(dir)}`;
194
+ }
195
+ /** Orders installed builds by age: (version, numerically, part by part), then the build, then the manifest digest, so the order is total. */
196
+ function compareAge(a, b) {
197
+ if (a.record.version !== b.record.version) {
198
+ const av = a.record.version.split('.');
199
+ const bv = b.record.version.split('.');
200
+ for (let i = 0; i < Math.min(av.length, bv.length); i++) {
201
+ if (av[i] !== bv[i])
202
+ return Number(av[i]) - Number(bv[i]);
203
+ }
204
+ return av.length - bv.length;
205
+ }
206
+ if (a.record.build !== b.record.build)
207
+ return a.record.build < b.record.build ? -1 : 1;
208
+ if (a.manifest !== b.manifest)
209
+ return a.manifest < b.manifest ? -1 : 1;
210
+ return 0;
211
+ }
212
+ /** A platform key's place in the constants' platform list. */
213
+ function platformRank(key) {
214
+ const i = PLATFORMS.findIndex((p) => p.key === key);
215
+ return i < 0 ? PLATFORMS.length : i;
216
+ }
217
+ function isObject(v) {
218
+ return typeof v === 'object' && v !== null && !Array.isArray(v);
219
+ }
220
+ /** A descriptor member's digest: `''` when absent or null, `undefined` when the member is not a descriptor. */
221
+ function descriptorDigest(v) {
222
+ if (v === undefined || v === null)
223
+ return '';
224
+ if (!isObject(v))
225
+ return undefined;
226
+ const digest = v['digest'];
227
+ if (digest === undefined || digest === null)
228
+ return '';
229
+ return typeof digest === 'string' ? digest : undefined;
230
+ }
231
+ /** A manifest blob's descriptors, or `undefined` for bytes that are not one (not JSON, not an object, or a descriptor member of the wrong shape). */
232
+ function manifestDoc(bytes) {
233
+ let doc;
234
+ try {
235
+ doc = JSON.parse(bytes.toString('utf8'));
236
+ }
237
+ catch {
238
+ return undefined;
239
+ }
240
+ if (!isObject(doc))
241
+ return undefined;
242
+ const config = descriptorDigest(doc['config']);
243
+ const subject = descriptorDigest(doc['subject']);
244
+ if (config === undefined || subject === undefined)
245
+ return undefined;
246
+ const rawLayers = doc['layers'];
247
+ const layers = [];
248
+ if (rawLayers !== undefined && rawLayers !== null) {
249
+ if (!Array.isArray(rawLayers))
250
+ return undefined;
251
+ for (const layer of rawLayers) {
252
+ const digest = descriptorDigest(layer);
253
+ if (digest === undefined)
254
+ return undefined;
255
+ if (DIGEST.test(digest))
256
+ layers.push(digest);
257
+ }
258
+ }
259
+ return {
260
+ config: DIGEST.test(config) ? config : undefined,
261
+ layers,
262
+ subject: subject === '' ? undefined : subject,
263
+ };
264
+ }
265
+ /** The blobs a manifest names itself: the manifest, its config and its layers (only the manifest when its blob is absent or unreadable). */
266
+ async function ownBlobs(root, manifest) {
267
+ const out = [manifest];
268
+ let bytes;
269
+ try {
270
+ bytes = await readFile(path.join(blobsDir(root), hexOfDigest(manifest)));
271
+ }
272
+ catch {
273
+ return out;
274
+ }
275
+ const doc = manifestDoc(bytes);
276
+ if (doc === undefined)
277
+ return out;
278
+ if (doc.config !== undefined)
279
+ out.push(doc.config);
280
+ out.push(...doc.layers);
281
+ return out;
282
+ }
283
+ /**
284
+ * The blobs a prune removes with `manifests`: each one's own (`ownBlobs`), and
285
+ * every referrer manifest the layout holds whose subject is one of them (a
286
+ * signature, a goldens document), with that referrer's layers. A referrer's
287
+ * config, the empty `{}` every referrer shares, is never among them.
288
+ */
289
+ async function blobsOf(root, manifests) {
290
+ const out = new Set();
291
+ for (const d of manifests)
292
+ for (const x of await ownBlobs(root, d))
293
+ out.add(x);
294
+ const dir = blobsDir(root);
295
+ const names = await readdir(dir, { withFileTypes: true }).catch(() => undefined);
296
+ if (names === undefined)
297
+ return out;
298
+ for (const e of names) {
299
+ if (e.isDirectory() || !HEX64.test(e.name))
300
+ continue;
301
+ const file = path.join(dir, e.name);
302
+ let bytes;
303
+ try {
304
+ if ((await lstat(file)).size > MANIFEST_MAX_BYTES)
305
+ continue;
306
+ bytes = await readFile(file);
307
+ }
308
+ catch {
309
+ continue;
310
+ }
311
+ const doc = manifestDoc(bytes);
312
+ if (doc === undefined || doc.subject === undefined || !manifests.has(doc.subject))
313
+ continue;
314
+ out.add(`sha256:${e.name}`);
315
+ for (const layer of doc.layers)
316
+ out.add(layer);
317
+ }
318
+ return out;
319
+ }
320
+ /**
321
+ * Drops every `index.json` entry whose digest is in `drop`, by the same
322
+ * read, write-temp, re-read, rename loop `upsertIndexEntry` uses, so an entry
323
+ * another process adds meanwhile survives; the other entries keep their order.
324
+ * An absent or unparsable `index.json` is left as it is.
325
+ */
326
+ async function removeIndexEntries(root, drop) {
327
+ const indexPath = path.join(root, 'index.json');
328
+ for (let attempt = 0; attempt < ATTEMPTS; attempt++) {
329
+ let before;
330
+ try {
331
+ before = await readFile(indexPath, 'utf8');
332
+ }
333
+ catch (err) {
334
+ if (err.code === 'ENOENT')
335
+ return;
336
+ throw err;
337
+ }
338
+ let doc;
339
+ try {
340
+ doc = JSON.parse(before);
341
+ }
342
+ catch {
343
+ return;
344
+ }
345
+ if (!isObject(doc))
346
+ return;
347
+ const manifests = doc['manifests'];
348
+ if (!Array.isArray(manifests))
349
+ return;
350
+ const kept = manifests.filter((m) => {
351
+ if (!isObject(m))
352
+ return true;
353
+ const digest = m['digest'];
354
+ return typeof digest !== 'string' || !drop.has(digest);
355
+ });
356
+ if (kept.length === manifests.length)
357
+ return;
358
+ const tmp = `${indexPath}.tmp-${process.pid}-${randomBytes(6).toString('hex')}`;
359
+ await writeFile(tmp, JSON.stringify({ ...doc, manifests: kept }));
360
+ let current;
361
+ try {
362
+ current = await readFile(indexPath, 'utf8');
363
+ }
364
+ catch {
365
+ current = undefined;
366
+ }
367
+ if (current !== before) {
368
+ // Another process wrote it meanwhile: drop from theirs.
369
+ await unlink(tmp).catch(() => { });
370
+ continue;
371
+ }
372
+ try {
373
+ await rename(tmp, indexPath);
374
+ }
375
+ catch (err) {
376
+ await unlink(tmp).catch(() => { });
377
+ throw err;
378
+ }
379
+ return;
380
+ }
381
+ throw new Error(`chtypes: index.json at ${indexPath} would not settle after ${ATTEMPTS} attempts (sustained concurrent writers)`);
382
+ }
383
+ //# sourceMappingURL=prune.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prune.js","sourceRoot":"","sources":["../../src/ocifetch/prune.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * `chtypes resolve` (`docs/guides/fetch-v1.md` §3, "What a request resolves
3
+ * to"; public issue #493): what a line, a patch or an exact version resolves
4
+ * to on every platform the registry offers, each verified exactly as a fetch
5
+ * verifies it (§4), and never a layer downloaded. Offline it is the cache's
6
+ * answer instead, the lookup an open makes.
7
+ */
8
+ import type { FetchV1Options, PlatformKey } from './types.js';
9
+ /** What a request resolves to on one platform. */
10
+ export interface Resolution {
11
+ readonly platform: PlatformKey;
12
+ /** The signed `clickhouse_version`. */
13
+ readonly version: string;
14
+ /** The signed build id. */
15
+ readonly build: string;
16
+ /** The platform manifest's digest, `sha256:<hex>`. */
17
+ readonly manifest: string;
18
+ }
19
+ /** `resolveBuilds`' answer: one resolution per platform, in the constants' platform order, and allow-unsigned's warnings. */
20
+ export interface ResolveBuildsResult {
21
+ readonly resolutions: readonly Resolution[];
22
+ readonly warnings: readonly string[];
23
+ }
24
+ /**
25
+ * What `spelling` resolves to, one `Resolution` per platform, in the
26
+ * constants' platform order. Online it resolves the index (through the dev
27
+ * channel's alias first, §3), and for each platform the index offers it
28
+ * fetches the manifest by digest and verifies its signed statement against the
29
+ * request (§4), exactly as `ensure` does; no layer is requested and nothing is
30
+ * written. A platform the index does not offer is left out, and an index that
31
+ * offers none of them is `ArtifactUnpublishedError`. Offline it answers from
32
+ * the cache: each platform's `resolveInstalled`, and `ArtifactMissingError`
33
+ * when no platform has an installed build. A refused spelling is refused
34
+ * first, before anything is read (`SpellingRefusedError`).
35
+ */
36
+ export declare function resolveBuilds(spelling: string, options?: FetchV1Options): Promise<ResolveBuildsResult>;
37
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/ocifetch/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9D,kDAAkD;AAClD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,6HAA6H;AAC7H,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAShH"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * `chtypes resolve` (`docs/guides/fetch-v1.md` §3, "What a request resolves
3
+ * to"; public issue #493): what a line, a patch or an exact version resolves
4
+ * to on every platform the registry offers, each verified exactly as a fetch
5
+ * verifies it (§4), and never a layer downloaded. Offline it is the cache's
6
+ * answer instead, the lookup an open makes.
7
+ */
8
+ import { noteIgnoredOverrides, offlineMode } from './channel.js';
9
+ import { PLATFORMS } from './constants.gen.js';
10
+ import { missingNotes, requestOptionsFor, resolveBases, resolveInstalled, verifyManifestTrust, withNotes } from './ensure.js';
11
+ import { ArtifactMissingError, ArtifactUnpublishedError } from './errors.js';
12
+ import { unwritable } from './faults.js';
13
+ import { cacheRoot } from './layout.js';
14
+ import { checkSpelling, fetchManifestBytesByDigest, parseManifest, resolveIndex, selectPlatformDescriptor } from './oci.js';
15
+ /**
16
+ * What `spelling` resolves to, one `Resolution` per platform, in the
17
+ * constants' platform order. Online it resolves the index (through the dev
18
+ * channel's alias first, §3), and for each platform the index offers it
19
+ * fetches the manifest by digest and verifies its signed statement against the
20
+ * request (§4), exactly as `ensure` does; no layer is requested and nothing is
21
+ * written. A platform the index does not offer is left out, and an index that
22
+ * offers none of them is `ArtifactUnpublishedError`. Offline it answers from
23
+ * the cache: each platform's `resolveInstalled`, and `ArtifactMissingError`
24
+ * when no platform has an installed build. A refused spelling is refused
25
+ * first, before anything is read (`SpellingRefusedError`).
26
+ */
27
+ export async function resolveBuilds(spelling, options = {}) {
28
+ noteIgnoredOverrides(options);
29
+ try {
30
+ return await resolveIn(spelling, options);
31
+ }
32
+ catch (err) {
33
+ // An offline lookup may verify a pre-seeded entry into the cache: a write
34
+ // that failed there is one class in every mode, as for `ensure`.
35
+ throw await unwritable(err, cacheRoot(options.cacheDir));
36
+ }
37
+ }
38
+ async function resolveIn(spelling, options) {
39
+ checkSpelling(spelling);
40
+ if (offlineMode(options.offline)) {
41
+ const resolutions = [];
42
+ for (const p of PLATFORMS) {
43
+ const hit = await resolveInstalled(spelling, p.key, options);
44
+ if (hit !== undefined) {
45
+ resolutions.push({ platform: p.key, version: hit.version, build: hit.build, manifest: hit.digests.manifest });
46
+ }
47
+ }
48
+ if (resolutions.length === 0) {
49
+ throw new ArtifactMissingError(withNotes(`chtypes: no installed artifact for ${spelling} on any platform, and --offline forbids a network fetch`, await missingNotes(options)));
50
+ }
51
+ return { resolutions, warnings: [] };
52
+ }
53
+ const bases = resolveBases(options);
54
+ const baseReqOptions = requestOptionsFor(options, bases);
55
+ const reqOptions = { ...baseReqOptions, maxBytes: 0 };
56
+ const index = await resolveIndex(bases, spelling, reqOptions);
57
+ const resolutions = [];
58
+ const warnings = [];
59
+ for (const p of PLATFORMS) {
60
+ let descriptor;
61
+ try {
62
+ descriptor = selectPlatformDescriptor(index, spelling, p.key);
63
+ }
64
+ catch (err) {
65
+ if (err instanceof ArtifactUnpublishedError)
66
+ continue; // the index does not offer this platform
67
+ throw err;
68
+ }
69
+ const manifest = parseManifest(descriptor.digest, await fetchManifestBytesByDigest(bases, descriptor, reqOptions));
70
+ // Under allow-unsigned with no verified statement, the version and build
71
+ // are the config blob's, as an unsigned install records them.
72
+ const verified = await verifyManifestTrust(index.repositoryRoot, manifest, index.aliasAbsent, p.key, spelling, options, baseReqOptions);
73
+ warnings.push(...verified.warnings);
74
+ resolutions.push({
75
+ platform: p.key,
76
+ version: stringMember(verified.predicate.clickhouse_version),
77
+ build: stringMember(verified.predicate.build),
78
+ manifest: manifest.digest,
79
+ });
80
+ }
81
+ if (resolutions.length === 0) {
82
+ throw new ArtifactUnpublishedError(`chtypes: the index for ${spelling} offers no platform this SDK knows`);
83
+ }
84
+ return { resolutions, warnings };
85
+ }
86
+ /** A predicate member read as the signed statement holds it: its text, or `''` for anything that is not a string. */
87
+ function stringMember(v) {
88
+ return typeof v === 'string' ? v : '';
89
+ }
90
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/ocifetch/resolve.ts"],"names":[],"mappings":"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"}
@@ -144,7 +144,7 @@ export interface FetchV1Options {
144
144
  readonly lockPath?: string;
145
145
  /** Write (or update) the lock after a successful `ensure`. */
146
146
  readonly lockWrite?: boolean;
147
- /** Every platform the index offers, not only the host's — `lockWrite` only. */
147
+ /** Pin every platform the index offers, not only the host's (guide §6) — `lockWrite` only. On unless `false`. */
148
148
  readonly lockAllPlatforms?: boolean;
149
149
  /** Re-resolve every locked request and rewrite the lock, ignoring `frozen`. */
150
150
  readonly update?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ocifetch/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ocifetch/types.ts"],"names":[],"mappings":"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"}