@volter/browser-runtime 0.1.84 → 0.1.86

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.
@@ -17,19 +17,75 @@ export interface ImageRanges {
17
17
  parts: ImageRange[];
18
18
  }
19
19
  export declare function validateImageRanges(candidate: unknown): ImageRanges;
20
+ /**
21
+ * A reader's line to a materializer already admitted for this exact
22
+ * generation and range table: its reads go there, settled in `state`, instead
23
+ * of to a worker of its own that must start first (ADR-0080).
24
+ */
25
+ export interface ImageRangeClient {
26
+ port: MessagePort;
27
+ state: SharedArrayBuffer;
28
+ }
20
29
  /** A dedicated trusted worker can fetch while its Node caller is blocked in a synchronous read. */
21
30
  export declare class ImageRangeReader {
22
31
  private readonly ranges;
23
32
  private readonly directory;
24
33
  private readonly identity;
34
+ readonly receiptKey?: string | undefined;
35
+ private readonly client?;
25
36
  private worker;
37
+ private port;
38
+ private prefetchers;
26
39
  private readonly state;
27
40
  private readonly completed;
41
+ /**
42
+ * Each range's first read, by any reader sharing this completion, as a
43
+ * sequence number (0: not read yet), and the sequence's counter last
44
+ * (ADR-0078): the order a boot needed its ranges, not the order they arrived.
45
+ */
46
+ private readonly firstRead;
28
47
  private closed;
29
- constructor(ranges: ImageRanges, directory: FileSystemDirectoryHandle, identity: string, completed?: SharedArrayBuffer);
48
+ private ready;
49
+ private startup;
50
+ private cancelStartup;
51
+ private readonly sharedCompletion;
52
+ private blocked;
53
+ constructor(ranges: ImageRanges, directory: FileSystemDirectoryHandle, identity: string, completed?: SharedArrayBuffer, receiptKey?: string | undefined, client?: ImageRangeClient | undefined);
30
54
  get completionBuffer(): SharedArrayBuffer;
31
- private downloader;
55
+ /** Only carried through the generation/digest-bound trusted reader seed. */
56
+ get verifiedRanges(): ImageRanges;
57
+ /** Nested-worker startup needs parent tasks; finish it before the parent can block. */
58
+ initialize(): Promise<void>;
59
+ private startMaterializer;
60
+ /** The digests of every range this generation holds verified, in image order: what boots of this image have read. */
61
+ /**
62
+ * The ranges readers sharing this completion have read, in the order each
63
+ * was first read; undefined when the completion carries no read order.
64
+ */
65
+ readDigests(): string[] | undefined;
66
+ completedDigests(): string[];
67
+ /**
68
+ * Fetch the ranges a previous boot of this image read before anything reads
69
+ * them, in the order given, so a first boot's reads find their bytes local. A digest this image
70
+ * does not hold is ignored. Returns how many ranges were queued, and when
71
+ * every helper has finished its share.
72
+ */
73
+ prefetch(digests: readonly string[], streams?: readonly string[]): {
74
+ queued: number;
75
+ done: Promise<void>;
76
+ };
77
+ /** How many reads this process blocked on a range not yet held, and for how long in all. */
78
+ get blockedReads(): {
79
+ ranges: number;
80
+ ms: number;
81
+ };
32
82
  ensure(offset: number, length: number): void;
83
+ /**
84
+ * A line for another realm's reader of this generation to the materializer
85
+ * this reader uses, so that reader starts none of its own. Undefined when
86
+ * this reader holds every range and so runs no materializer.
87
+ */
88
+ lineForReader(): ImageRangeClient | undefined;
33
89
  private fail;
34
90
  close(): void;
35
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"browser-image-ranges.d.ts","sourceRoot":"","sources":["../src/browser-image-ranges.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,eAAO,MAAM,uBAAuB,2BAA2B,CAAC;AAChE,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,CAAC,CAAC;IACX,4GAA4G;IAC5G,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,OAAO,GAAG,WAAW,CAiBnE;AAED,mGAAmG;AACnG,qBAAa,gBAAgB;IAMf,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAe,OAAO,CAAC,QAAQ,CAAC,SAAS;IAA6B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IALlI,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;IAC1D,OAAO,CAAC,MAAM,CAAS;gBAEM,MAAM,EAAE,WAAW,EAAmB,SAAS,EAAE,yBAAyB,EAAmB,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,iBAAiB;IASzK,IAAI,gBAAgB,IAAI,iBAAiB,CAAkC;IAE3E,OAAO,CAAC,UAAU;IAUlB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IA+B5C,OAAO,CAAC,IAAI;IAMZ,KAAK,IAAI,IAAI;CACd"}
1
+ {"version":3,"file":"browser-image-ranges.d.ts","sourceRoot":"","sources":["../src/browser-image-ranges.ts"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,eAAO,MAAM,uBAAuB,2BAA2B,CAAC;AAChE,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAQrD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,CAAC,CAAC;IACX,4GAA4G;IAC5G,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,OAAO,GAAG,WAAW,CAiBnE;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AAED,mGAAmG;AACnG,qBAAa,gBAAgB;IAmBf,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAe,OAAO,CAAC,QAAQ,CAAC,SAAS;IAA6B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAAyC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM;IAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAlBjO,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,IAAI,CAA0B;IACtC,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgC;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;IAC1D;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4C;IACtE,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAC3C,OAAO,CAAC,OAAO,CAAwB;gBAEV,MAAM,EAAE,WAAW,EAAmB,SAAS,EAAE,yBAAyB,EAAmB,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,iBAAiB,EAAW,UAAU,CAAC,EAAE,MAAM,YAAA,EAAmB,MAAM,CAAC,EAAE,gBAAgB,YAAA;IAqBnP,IAAI,gBAAgB,IAAI,iBAAiB,CAAkC;IAC3E,4EAA4E;IAC5E,IAAI,cAAc,IAAI,WAAW,CAAwB;IAEzD,uFAAuF;IACjF,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BjC,OAAO,CAAC,iBAAiB;IA6CzB,qHAAqH;IACrH;;;OAGG;IACH,WAAW,IAAI,MAAM,EAAE,GAAG,SAAS;IAanC,gBAAgB,IAAI,MAAM,EAAE;IAS5B;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE,SAAS,MAAM,EAAO,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE;IA0C9G,4FAA4F;IAC5F,IAAI,YAAY,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAgC;IAElF,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAsC5C;;;;OAIG;IACH,aAAa,IAAI,gBAAgB,GAAG,SAAS;IAS7C,OAAO,CAAC,IAAI;IAMZ,KAAK,IAAI,IAAI;CAed"}
@@ -1,6 +1,12 @@
1
1
  /** Immutable image bytes reserved in a package pack and materialized on first read. */
2
2
  export const IMAGE_RANGE_WORKER_PATH = "/image-range-worker.js";
3
3
  export const IMAGE_RANGES_FILE = "image-ranges.json";
4
+ /**
5
+ * Helper materializers a prefetch spreads over: inflating and verifying a
6
+ * range is a thread's CPU. Two helpers with two fetches each leave the boot's
7
+ * own requests most of the origin's six HTTP/1.1 connections.
8
+ */
9
+ const PREFETCH_WORKERS = 2;
4
10
  export function validateImageRanges(candidate) {
5
11
  const value = candidate;
6
12
  if (!value || value.version !== 1 || !Number.isSafeInteger(value.bytes) || value.bytes < 0 || !Array.isArray(value.parts)
@@ -28,36 +34,245 @@ export class ImageRangeReader {
28
34
  ranges;
29
35
  directory;
30
36
  identity;
37
+ receiptKey;
38
+ client;
31
39
  worker;
40
+ port;
41
+ prefetchers = [];
32
42
  state;
33
43
  completed;
44
+ /**
45
+ * Each range's first read, by any reader sharing this completion, as a
46
+ * sequence number (0: not read yet), and the sequence's counter last
47
+ * (ADR-0078): the order a boot needed its ranges, not the order they arrived.
48
+ */
49
+ firstRead;
34
50
  closed = false;
35
- constructor(ranges, directory, identity, completed) {
51
+ ready = false;
52
+ startup;
53
+ cancelStartup;
54
+ sharedCompletion;
55
+ blocked = { ranges: 0, ms: 0 };
56
+ constructor(ranges, directory, identity, completed, receiptKey, client) {
36
57
  this.ranges = ranges;
37
58
  this.directory = directory;
38
59
  this.identity = identity;
60
+ this.receiptKey = receiptKey;
61
+ this.client = client;
39
62
  if (typeof Worker === "undefined" || typeof SharedArrayBuffer === "undefined") {
40
63
  throw new Error("This browser cannot materialize an immutable image during a synchronous read.");
41
64
  }
42
- this.state = new Int32Array(new SharedArrayBuffer(ranges.parts.length * Int32Array.BYTES_PER_ELEMENT));
43
- this.completed = new Int32Array(completed ?? new SharedArrayBuffer(this.state.byteLength));
44
- if (this.completed.length !== ranges.parts.length)
65
+ this.state = new Int32Array(client?.state ?? new SharedArrayBuffer(ranges.parts.length * Int32Array.BYTES_PER_ELEMENT));
66
+ if (this.state.length !== ranges.parts.length)
67
+ throw new Error("The image reader's line has the wrong range count.");
68
+ const count = ranges.parts.length;
69
+ // The completion state, then each range's first-read sequence and the sequence's counter.
70
+ const shared = completed ?? new SharedArrayBuffer((2 * count + 1) * Int32Array.BYTES_PER_ELEMENT);
71
+ if (shared.byteLength !== count * Int32Array.BYTES_PER_ELEMENT && shared.byteLength !== (2 * count + 1) * Int32Array.BYTES_PER_ELEMENT) {
45
72
  throw new Error("The image completion seed has the wrong range count.");
73
+ }
74
+ this.completed = new Int32Array(shared, 0, count);
75
+ this.firstRead = shared.byteLength > count * Int32Array.BYTES_PER_ELEMENT ? new Int32Array(shared, count * Int32Array.BYTES_PER_ELEMENT, count + 1) : undefined;
76
+ this.sharedCompletion = completed !== undefined;
77
+ // Seeds retain this verified table; prevent an accidental trusted caller
78
+ // from changing the owner's snapshot after its digest was admitted.
79
+ for (const part of ranges.parts)
80
+ Object.freeze(part);
81
+ Object.freeze(ranges.parts);
82
+ Object.freeze(ranges);
46
83
  }
47
84
  get completionBuffer() { return this.completed.buffer; }
48
- downloader() {
85
+ /** Only carried through the generation/digest-bound trusted reader seed. */
86
+ get verifiedRanges() { return this.ranges; }
87
+ /** Nested-worker startup needs parent tasks; finish it before the parent can block. */
88
+ async initialize() {
49
89
  if (this.closed)
50
90
  throw new Error("This immutable image reader is closed.");
51
- if (!this.worker) {
52
- this.worker = new Worker(IMAGE_RANGE_WORKER_PATH, { type: "module" });
53
- this.worker.addEventListener("error", () => this.fail());
54
- this.worker.postMessage({ type: "init", ranges: this.ranges, directory: this.directory, identity: this.identity, state: this.state.buffer, completed: this.completed.buffer });
91
+ if (this.ready)
92
+ return;
93
+ if (this.startup)
94
+ return this.startup;
95
+ let missing = false;
96
+ for (let index = 0; index < this.completed.length; index += 1) {
97
+ if (Atomics.load(this.completed, index) !== 2) {
98
+ missing = true;
99
+ break;
100
+ }
55
101
  }
56
- return this.worker;
102
+ if (!missing) {
103
+ this.ready = true;
104
+ this.client?.port.close();
105
+ return;
106
+ }
107
+ if (this.client) {
108
+ // The materializer serving this line is already running and admitted:
109
+ // nothing starts here, so nothing is waited for (ADR-0080).
110
+ const port = this.port = this.client.port;
111
+ // The owner's generation closing ends its materializer: this reader
112
+ // starts its own while its thread is free, not at a read that waits.
113
+ port.onmessage = (event) => {
114
+ if (event.data?.type !== "closing" || this.port !== port)
115
+ return;
116
+ port.close();
117
+ this.port = undefined;
118
+ if (!this.closed)
119
+ void this.startMaterializer().catch((cause) => console.warn("This process's image reader could not start its own materializer after its line closed.", cause));
120
+ };
121
+ port.start();
122
+ this.ready = true;
123
+ return;
124
+ }
125
+ return this.startMaterializer();
57
126
  }
127
+ startMaterializer() {
128
+ const began = Date.now();
129
+ const worker = new Worker(IMAGE_RANGE_WORKER_PATH, { type: "module", name: "immutable-image-materializer" });
130
+ // A reader that read through a line keeps reading through it until its own is admitted.
131
+ const viaLine = this.ready;
132
+ if (!viaLine)
133
+ this.worker = worker;
134
+ worker.addEventListener("error", () => this.fail());
135
+ worker.addEventListener("messageerror", () => this.fail());
136
+ this.startup = new Promise((resolve, reject) => {
137
+ const cleanup = () => {
138
+ clearTimeout(timer);
139
+ worker.removeEventListener("message", acknowledge);
140
+ worker.removeEventListener("error", failed);
141
+ worker.removeEventListener("messageerror", failed);
142
+ this.cancelStartup = undefined;
143
+ };
144
+ const failed = () => cancel(new Error("The immutable image materializer could not initialize; reload to retry."));
145
+ const cancel = (cause) => {
146
+ cleanup();
147
+ worker.terminate();
148
+ if (!viaLine) {
149
+ this.closed = true;
150
+ this.fail();
151
+ }
152
+ reject(cause);
153
+ };
154
+ const acknowledge = (event) => {
155
+ if (event.data?.identity !== this.identity)
156
+ return;
157
+ if (event.data.type === "init-error") {
158
+ cancel(new Error(`The immutable image materializer could not initialize: ${String(event.data.error)}`));
159
+ return;
160
+ }
161
+ if (event.data.type !== "ready")
162
+ return;
163
+ console.log(`[boot-trace] ${JSON.stringify({ event: "materializer-ready", at: Date.now(), ms: Date.now() - began })}`);
164
+ cleanup();
165
+ this.ready = true;
166
+ this.worker = worker;
167
+ resolve();
168
+ };
169
+ const timer = setTimeout(() => cancel(new Error("The immutable image materializer did not initialize within 10 seconds; reload to retry.")), 10_000);
170
+ this.cancelStartup = cancel;
171
+ worker.addEventListener("message", acknowledge);
172
+ worker.addEventListener("error", failed);
173
+ worker.addEventListener("messageerror", failed);
174
+ try {
175
+ worker.postMessage({ type: "init", ranges: this.ranges, directory: this.directory, identity: this.identity, state: this.state.buffer, completed: this.completed.buffer,
176
+ sharedCompletion: this.sharedCompletion, ...(this.receiptKey ? { receiptKey: this.receiptKey } : {}) });
177
+ }
178
+ catch (cause) {
179
+ cancel(cause instanceof Error ? cause : new Error(String(cause)));
180
+ }
181
+ });
182
+ return this.startup;
183
+ }
184
+ /** The digests of every range this generation holds verified, in image order: what boots of this image have read. */
185
+ /**
186
+ * The ranges readers sharing this completion have read, in the order each
187
+ * was first read; undefined when the completion carries no read order.
188
+ */
189
+ readDigests() {
190
+ const order = this.firstRead;
191
+ if (!order)
192
+ return undefined;
193
+ const count = this.ranges.parts.length;
194
+ const read = [];
195
+ for (let index = 0; index < count; index += 1) {
196
+ const sequence = Atomics.load(order, index);
197
+ const part = this.ranges.parts[index];
198
+ if (sequence > 0 && part.raw > 0)
199
+ read.push([sequence, part.sha256]);
200
+ }
201
+ return read.sort((left, right) => left[0] - right[0]).map(([, digest]) => digest);
202
+ }
203
+ completedDigests() {
204
+ const held = [];
205
+ for (let index = 0; index < this.completed.length; index += 1) {
206
+ const part = this.ranges.parts[index];
207
+ if (part.raw > 0 && Atomics.load(this.completed, index) === 2)
208
+ held.push(part.sha256);
209
+ }
210
+ return held;
211
+ }
212
+ /**
213
+ * Fetch the ranges a previous boot of this image read before anything reads
214
+ * them, in the order given, so a first boot's reads find their bytes local. A digest this image
215
+ * does not hold is ignored. Returns how many ranges were queued, and when
216
+ * every helper has finished its share.
217
+ */
218
+ prefetch(digests, streams = []) {
219
+ if (this.closed || !this.ready || !this.worker)
220
+ return { queued: 0, done: Promise.resolve() };
221
+ // In the recorded order, which is the order a boot first read them.
222
+ const byDigest = new Map();
223
+ for (let index = 0; index < this.ranges.parts.length; index += 1) {
224
+ const part = this.ranges.parts[index];
225
+ if (part.raw === 0)
226
+ continue;
227
+ const held = byDigest.get(part.sha256);
228
+ if (held)
229
+ held.push(index);
230
+ else
231
+ byDigest.set(part.sha256, [index]);
232
+ }
233
+ const indices = [];
234
+ for (const digest of new Set(digests)) {
235
+ for (const index of byDigest.get(digest) ?? [])
236
+ if (Atomics.load(this.completed, index) !== 2)
237
+ indices.push(index);
238
+ }
239
+ // Each helper takes every Nth range, so each holds a share of that order;
240
+ // it shares this reader's completion and receipt ledger, and the
241
+ // part lock keeps it and any demanded read from fetching one range twice.
242
+ // With the image's streams, each helper reads one stream of those ranges
243
+ // instead of fetching its share one range at a time (ADR-0082).
244
+ const helpers = streams.length > 0 && indices.length > 0 ? Math.min(streams.length, 8) : Math.min(PREFETCH_WORKERS, Math.ceil(indices.length / 32));
245
+ const finished = [];
246
+ for (let lane = 0; lane < helpers; lane += 1) {
247
+ const share = indices.filter((_, at) => at % helpers === lane);
248
+ const helper = new Worker(IMAGE_RANGE_WORKER_PATH, { type: "module", name: "immutable-image-prefetch" });
249
+ this.prefetchers.push(helper);
250
+ let ended;
251
+ finished.push(new Promise((resolve) => { ended = resolve; }));
252
+ const retire = () => { helper.terminate(); this.prefetchers = this.prefetchers.filter((held) => held !== helper); ended(); };
253
+ helper.addEventListener("error", retire);
254
+ helper.addEventListener("messageerror", retire);
255
+ helper.addEventListener("message", (event) => {
256
+ if (event.data?.identity !== this.identity)
257
+ return;
258
+ if (event.data.type === "ready")
259
+ helper.postMessage(streams.length > 0 ? { type: "prefetch-stream", url: streams[lane] } : { type: "prefetch", indices: share });
260
+ else if (event.data.type === "prefetched" || event.data.type === "init-error")
261
+ retire();
262
+ });
263
+ helper.postMessage({ type: "init", ranges: this.ranges, directory: this.directory, identity: this.identity,
264
+ state: new SharedArrayBuffer(this.state.byteLength), completed: this.completed.buffer, sharedCompletion: true,
265
+ ...(this.receiptKey ? { receiptKey: this.receiptKey } : {}) });
266
+ }
267
+ return { queued: indices.length, done: Promise.all(finished).then(() => undefined) };
268
+ }
269
+ /** How many reads this process blocked on a range not yet held, and for how long in all. */
270
+ get blockedReads() { return { ...this.blocked }; }
58
271
  ensure(offset, length) {
59
272
  if (this.closed)
60
273
  throw new Error("This immutable image reader is closed.");
274
+ if (!this.ready)
275
+ throw new Error("This immutable image reader has not finished asynchronous initialization.");
61
276
  if (length === 0 || offset >= this.ranges.bytes)
62
277
  return;
63
278
  const end = Math.min(offset + length, this.ranges.bytes);
@@ -75,10 +290,17 @@ export class ImageRangeReader {
75
290
  const part = this.ranges.parts[index];
76
291
  if (part.offset >= end)
77
292
  break;
293
+ const order = this.firstRead;
294
+ if (order && Atomics.load(order, index) === 0)
295
+ Atomics.compareExchange(order, index, 0, Atomics.add(order, this.ranges.parts.length, 1) + 1);
78
296
  if (Atomics.load(this.completed, index) === 2)
79
297
  continue;
80
- this.downloader().postMessage({ type: "read", index });
81
- const deadline = performance.now() + 30_000;
298
+ const materializer = this.worker ?? this.port;
299
+ if (!materializer)
300
+ throw new Error("This immutable image reader's line closed and its own materializer is still starting; retry the read.");
301
+ materializer.postMessage({ type: "read", index });
302
+ const began = performance.now();
303
+ const deadline = began + 30_000;
82
304
  while (Atomics.load(this.state, index) === 0) {
83
305
  const left = deadline - performance.now();
84
306
  if (left <= 0 || Atomics.wait(this.state, index, 0, left) === "timed-out") {
@@ -86,17 +308,53 @@ export class ImageRangeReader {
86
308
  throw new Error(`The image's immutable part ${part.url} did not arrive within 30 seconds; reload to retry.`);
87
309
  }
88
310
  }
311
+ this.blocked.ranges += 1;
312
+ this.blocked.ms += performance.now() - began;
89
313
  if (Atomics.load(this.state, index) !== 2) {
90
314
  throw new Error(`The image's immutable part ${part.url} could not be verified or stored; see the worker error and reload to retry.`);
91
315
  }
92
316
  }
93
317
  }
318
+ /**
319
+ * A line for another realm's reader of this generation to the materializer
320
+ * this reader uses, so that reader starts none of its own. Undefined when
321
+ * this reader holds every range and so runs no materializer.
322
+ */
323
+ lineForReader() {
324
+ const materializer = this.worker ?? this.port;
325
+ if (this.closed || !this.ready || !materializer)
326
+ return undefined;
327
+ const channel = new MessageChannel();
328
+ const state = new SharedArrayBuffer(this.ranges.parts.length * Int32Array.BYTES_PER_ELEMENT);
329
+ materializer.postMessage({ type: "client", port: channel.port1, state }, [channel.port1]);
330
+ return { port: channel.port2, state };
331
+ }
94
332
  fail() {
95
333
  for (let index = 0; index < this.state.length; index += 1) {
96
334
  if (Atomics.compareExchange(this.state, index, 0, -1) === 0)
97
335
  Atomics.notify(this.state, index);
98
336
  }
99
337
  }
100
- close() { this.closed = true; this.fail(); this.worker?.terminate(); }
338
+ close() {
339
+ if (this.closed)
340
+ return;
341
+ this.closed = true;
342
+ if (this.cancelStartup) {
343
+ this.cancelStartup(new Error("This immutable image reader closed during initialization."));
344
+ return;
345
+ }
346
+ this.fail();
347
+ this.port?.close();
348
+ // Lines this materializer serves hear it is ending, so their readers
349
+ // start their own rather than waiting on reads it will never answer.
350
+ const worker = this.worker;
351
+ if (worker) {
352
+ worker.postMessage({ type: "closing" });
353
+ setTimeout(() => worker.terminate(), 250);
354
+ }
355
+ for (const helper of this.prefetchers)
356
+ helper.dispatchEvent(new Event("error"));
357
+ this.prefetchers = [];
358
+ }
101
359
  }
102
360
  //# sourceMappingURL=browser-image-ranges.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-image-ranges.js","sourceRoot":"","sources":["../src/browser-image-ranges.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-image-ranges.js","sourceRoot":"","sources":["../src/browser-image-ranges.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { type ImageRanges } from "./browser-image-ranges.js";
1
+ import { PACKAGES_STORE } from "./browser-store-layout.js";
2
+ import { type ImageRangeClient, type ImageRanges } from "./browser-image-ranges.js";
2
3
  import type { ImageLayerPreparedIndex, ImagePreparedProject } from "./browser-image-layers.js";
3
4
  /**
4
5
  * The workspace is stored as one packed file plus an index, not as a mirror of
@@ -81,7 +82,7 @@ export interface IndexEntry {
81
82
  capacity?: number;
82
83
  }
83
84
  /** The one shared store of an origin: every package version's files, once, under `/packages/<name>@<version>/`. */
84
- export declare const PACKAGES_STORE = "packages";
85
+ export { PACKAGES_STORE };
85
86
  export declare const PACKAGES_ROOT = "/packages";
86
87
  /**
87
88
  * A project's live-pack retention roots (W62): links that keep an installed
@@ -192,6 +193,8 @@ export interface PackStoreOpenOptions {
192
193
  seed?: PackStoreReaderSeed;
193
194
  /** With readOnly: verified image completion from the owner of this exact generation. */
194
195
  imageCompletion?: PackStoreImageCompletionSeed;
196
+ /** With `imageCompletion`: a line to the owner's running materializer, used instead of starting one (ADR-0080). */
197
+ imageLine?: ImageRangeClient;
195
198
  }
196
199
  /** A file of a batch whose bytes are one buffer: its extent of that buffer, or a directory. */
197
200
  export interface ExtentFile {
@@ -207,6 +210,11 @@ export interface PackStoreImageCompletionSeed {
207
210
  generation: string;
208
211
  rangesDigest: string;
209
212
  completed: SharedArrayBuffer;
213
+ /** Trusted owner metadata, already verified against rangesDigest in this generation. */
214
+ metadata?: {
215
+ ranges: ImageRanges;
216
+ receiptKey: string;
217
+ };
210
218
  }
211
219
  /** An owner's index at a moment, for a reader in another realm to start from. */
212
220
  export interface PackStoreReaderSeed {
@@ -280,6 +288,20 @@ export interface PackStore {
280
288
  overlays?: boolean;
281
289
  }): PackStoreReaderSeed | undefined;
282
290
  imageCompletionSeed(): PackStoreImageCompletionSeed | undefined;
291
+ /** A line to this generation's running image materializer for another realm's reader (ADR-0080). */
292
+ imageLine(): ImageRangeClient | undefined;
293
+ /** The digests of the immutable image ranges this generation holds verified: what boots of the image have read. */
294
+ imageStartupSet(): string[];
295
+ /** Fetch these image ranges ahead of their first read; returns how many were queued and when they are all done. */
296
+ prefetchImage(digests: readonly string[], streams?: readonly string[]): {
297
+ queued: number;
298
+ done: Promise<void>;
299
+ };
300
+ /** How many reads blocked on an image range not yet held, here and in the packages store this one links, and for how long in all. */
301
+ imageBlockedReads(): {
302
+ ranges: number;
303
+ ms: number;
304
+ };
283
305
  /** For a reader: whether it started from the seed it was given rather than reading the index itself. */
284
306
  seeded(): boolean;
285
307
  readonly logBytes: number;
@@ -287,9 +309,14 @@ export interface PackStore {
287
309
  /** Defer automatic maintenance through a finite bulk operation; journal writes and explicit checkpoints stay live. */
288
310
  deferMaintenance<T>(operation: () => Promise<T>): Promise<T>;
289
311
  /** Install host-prepared metadata and reserved immutable extents only into an empty shared store. */
290
- installPreparedImage(prepared: ImageLayerPreparedIndex, json: Uint8Array, binary: Uint8Array, ranges: ImageRanges): Promise<boolean>;
312
+ /** `verified`: each file's SHA-256 was already checked against the descriptor's digest where it was inflated (ADR-0084). */
313
+ installPreparedImage(prepared: ImageLayerPreparedIndex, json: Uint8Array, binary: Uint8Array, ranges: ImageRanges, verified?: boolean): Promise<boolean>;
291
314
  /** A fresh project's paths already linked to the verified shared image. Never replaces an existing workspace. */
292
- installPreparedProject(prepared: ImagePreparedProject, json: Uint8Array, binary: Uint8Array): Promise<boolean>;
315
+ /**
316
+ * `imageInstalled`, when given, is the shared store's install of the same image, still running: the project's
317
+ * files are written beside it and committed only once it has installed (ADR-0085).
318
+ */
319
+ installPreparedProject(prepared: ImagePreparedProject, json: Uint8Array, binary: Uint8Array, verified?: boolean, imageInstalled?: Promise<boolean>): Promise<boolean>;
293
320
  /** Installed deferred image, including recovery before its optional journal marker was written. */
294
321
  readonly deferredImage: string | undefined;
295
322
  /** Placement time of metadata-reserved units, whose immutable host index retains build-time mtimes. */
@@ -334,7 +361,7 @@ export declare function createPackStore(environment: PackStoreEnvironment, optio
334
361
  * the origin's packages it links, both open for reading beside their
335
362
  * owners. Undefined when the project has no store yet.
336
363
  */
337
- export declare function openPackReader(environment: PackStoreEnvironment, projectId: string, seed?: PackStoreReaderSeed): Promise<PackStore | undefined>;
364
+ export declare function openPackReader(environment: PackStoreEnvironment, projectId: string, seed?: PackStoreReaderSeed, imageLine?: ImageRangeClient): Promise<PackStore | undefined>;
338
365
  /** What a sweep of the shared store found and did. */
339
366
  export interface PackagesSweepReport {
340
367
  projects: number;
@@ -353,5 +380,4 @@ export interface PackagesSweepReport {
353
380
  * no shared store yet.
354
381
  */
355
382
  export declare function sweepSharedPackages(environment: PackStoreEnvironment, progress?: (work: string) => void): Promise<PackagesSweepReport | undefined>;
356
- export {};
357
383
  //# sourceMappingURL=browser-pack-store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-pack-store.d.ts","sourceRoot":"","sources":["../src/browser-pack-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browser-pack-store.d.ts","sourceRoot":"","sources":["../src/browser-pack-store.ts"],"names":[],"mappings":"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"}