@volter/browser-substrate 0.1.119 → 0.1.121

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 (36) hide show
  1. package/dist/cli/cache-lifetime.d.ts +8 -0
  2. package/dist/cli/cache-lifetime.d.ts.map +1 -0
  3. package/dist/cli/cache-lifetime.js +214 -0
  4. package/dist/cli/cache-lifetime.js.map +1 -0
  5. package/dist/cli/cache-root.d.ts.map +1 -1
  6. package/dist/cli/cache-root.js +5 -1
  7. package/dist/cli/cache-root.js.map +1 -1
  8. package/dist/cli/catalog-variants.d.ts.map +1 -1
  9. package/dist/cli/catalog-variants.js +27 -7
  10. package/dist/cli/catalog-variants.js.map +1 -1
  11. package/dist/cli/main.d.ts +2 -0
  12. package/dist/cli/main.d.ts.map +1 -1
  13. package/dist/cli/main.js +56 -28
  14. package/dist/cli/main.js.map +1 -1
  15. package/dist/cli/package-packs.d.ts +1 -1
  16. package/dist/cli/package-packs.d.ts.map +1 -1
  17. package/dist/cli/package-packs.js +2 -68
  18. package/dist/cli/package-packs.js.map +1 -1
  19. package/dist/cli/project-build.d.ts.map +1 -1
  20. package/dist/cli/project-build.js +2 -0
  21. package/dist/cli/project-build.js.map +1 -1
  22. package/dist/cli/provision-catalog.d.ts.map +1 -1
  23. package/dist/cli/provision-catalog.js +16 -4
  24. package/dist/cli/provision-catalog.js.map +1 -1
  25. package/dist/dependency-plan.d.ts +4 -0
  26. package/dist/dependency-plan.d.ts.map +1 -1
  27. package/dist/dependency-plan.js +8 -1
  28. package/dist/dependency-plan.js.map +1 -1
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +4 -0
  31. package/dist/index.js.map +1 -1
  32. package/dist/shell/assets/{node-execution-worker-08f9a46842d3ea2d.js → node-execution-worker-f95a35f14c4e92be.js} +3 -3
  33. package/dist/shell/assets/{shell-BchR8dEr.js → shell-kBI0ZgOO.js} +432 -432
  34. package/dist/shell/index.html +1 -1
  35. package/dist/shell/node-execution-worker.js +1 -1
  36. package/package.json +1 -1
@@ -0,0 +1,8 @@
1
+ /** Claim before mkdir/write; pre-ledger cache entries remain unknown. */
2
+ export declare function registerPreparationCacheEntry(directory: string, created?: boolean): void;
3
+ /** A complete result still holds its files until its serving/copying caller releases. */
4
+ export declare function retainPreparationCache<T>(projectDirectory: string, cacheDirectory: string, work: () => Promise<T>, report?: (text: string) => void): Promise<{
5
+ value: T;
6
+ release(): void;
7
+ }>;
8
+ //# sourceMappingURL=cache-lifetime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-lifetime.d.ts","sourceRoot":"","sources":["../../src/cli/cache-lifetime.ts"],"names":[],"mappings":"AAoFA,yEAAyE;AACzE,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,UAAQ,GAAG,IAAI,CAetF;AA6BD,yFAAyF;AACzF,wBAAsB,sBAAsB,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAyC,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,CAAC,CAAC;IAAC,OAAO,IAAI,IAAI,CAAA;CAAE,CAAC,CA6BrO"}
@@ -0,0 +1,214 @@
1
+ /** ADR-0095: creation evidence and live use, never age or logical size. */
2
+ import { AsyncLocalStorage } from "node:async_hooks";
3
+ import { randomUUID, createHash } from "node:crypto";
4
+ import { existsSync, linkSync, lstatSync, mkdirSync, readFileSync, realpathSync, renameSync, rmSync, statfsSync, unlinkSync, writeFileSync } from "node:fs";
5
+ import { dirname, join, relative, resolve, sep } from "node:path";
6
+ const invocations = new AsyncLocalStorage();
7
+ const namespaces = new Set(["built", "packs", "work"]);
8
+ const liveHolds = new Set();
9
+ process.once("exit", () => { for (const release of liveHolds)
10
+ release(); });
11
+ function alive(pid) {
12
+ if (!Number.isSafeInteger(pid) || pid < 1)
13
+ return true;
14
+ try {
15
+ process.kill(pid, 0);
16
+ return true;
17
+ }
18
+ catch (cause) {
19
+ return cause.code !== "ESRCH";
20
+ }
21
+ }
22
+ function validEntry(root, path) {
23
+ const name = relative(root, path);
24
+ return resolve(path) === path && name !== "" && !name.startsWith("..") && namespaces.has(name.split(sep)[0]) && name.split(sep).length > 1;
25
+ }
26
+ function ledger(root) { return join(root, ".lifetime", "state.json"); }
27
+ function readState(root) {
28
+ if (!existsSync(ledger(root)))
29
+ return { version: 1, entries: [], current: {}, leases: {} };
30
+ const state = JSON.parse(readFileSync(ledger(root), "utf8"));
31
+ if (state.version !== 1 || !Array.isArray(state.entries) || !state.current || !state.leases || state.entries.some(path => !validEntry(root, path))
32
+ || [...Object.values(state.current), ...Object.values(state.leases)].some(value => !Array.isArray(value.entries) || value.entries.some(path => !validEntry(root, path))))
33
+ throw new Error(`Unreadable cache ownership ledger; retained ${ledger(root)}.`);
34
+ return state;
35
+ }
36
+ /** The small synchronous mutation never holds the lock across async work. */
37
+ function mutate(root, change) {
38
+ const directory = dirname(ledger(root));
39
+ mkdirSync(directory, { recursive: true });
40
+ const lock = join(directory, "lock.json"), claim = join(directory, `claim-${randomUUID()}.json`);
41
+ const owner = JSON.stringify({ pid: process.pid, nonce: randomUUID() });
42
+ writeFileSync(claim, owner);
43
+ try {
44
+ for (;;) {
45
+ try {
46
+ linkSync(claim, lock);
47
+ break;
48
+ }
49
+ catch (cause) {
50
+ if (cause.code !== "EEXIST")
51
+ throw cause;
52
+ let prior;
53
+ try {
54
+ prior = JSON.parse(readFileSync(lock, "utf8"));
55
+ }
56
+ catch (failure) {
57
+ if (failure.code === "ENOENT")
58
+ continue;
59
+ throw failure;
60
+ }
61
+ if (!alive(prior.pid)) {
62
+ // Serialize stale-lock retirement too: a second reclaimer must never
63
+ // unlink a new writer's claim after the first reclaimer releases it.
64
+ const retiring = join(directory, "retiring.json");
65
+ try {
66
+ linkSync(claim, retiring);
67
+ try {
68
+ if (existsSync(lock) && !alive(JSON.parse(readFileSync(lock, "utf8")).pid))
69
+ unlinkSync(lock);
70
+ }
71
+ finally {
72
+ unlinkSync(retiring);
73
+ }
74
+ }
75
+ catch (failure) {
76
+ const code = failure.code;
77
+ if (code === "EEXIST") {
78
+ try {
79
+ if (!alive(JSON.parse(readFileSync(retiring, "utf8")).pid))
80
+ throw new Error(`Interrupted cache ledger recovery; ownership retained in ${retiring}.`);
81
+ }
82
+ catch (reading) {
83
+ if (reading.code !== "ENOENT")
84
+ throw reading;
85
+ }
86
+ }
87
+ else if (code !== "ENOENT")
88
+ throw failure;
89
+ }
90
+ }
91
+ // Polling interval is not a retention limit; live writers keep their lock.
92
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 10);
93
+ }
94
+ }
95
+ }
96
+ finally {
97
+ unlinkSync(claim);
98
+ }
99
+ try {
100
+ const state = readState(root), value = change(state);
101
+ const temporary = `${ledger(root)}.${randomUUID()}.tmp`;
102
+ writeFileSync(temporary, JSON.stringify(state));
103
+ renameSync(temporary, ledger(root));
104
+ return value;
105
+ }
106
+ finally {
107
+ if (existsSync(lock) && readFileSync(lock, "utf8") === owner)
108
+ unlinkSync(lock);
109
+ }
110
+ }
111
+ /** Claim before mkdir/write; pre-ledger cache entries remain unknown. */
112
+ export function registerPreparationCacheEntry(directory, created = false) {
113
+ const active = invocations.getStore();
114
+ if (!active)
115
+ return;
116
+ const path = resolve(active.root, relative(active.selected, resolve(directory)));
117
+ if (!validEntry(active.root, path))
118
+ return;
119
+ mutate(active.root, state => {
120
+ const lease = state.leases[active.id];
121
+ if (!lease.entries.includes(path))
122
+ lease.entries.push(path);
123
+ mkdirSync(dirname(path), { recursive: true });
124
+ if (realpathSync(dirname(path)) !== dirname(path))
125
+ throw new Error(`Cache entry crosses an unowned symlink: ${path}.`);
126
+ if (created || !existsSync(path)) {
127
+ mkdirSync(path, { recursive: true });
128
+ if (!state.entries.includes(path))
129
+ state.entries.push(path);
130
+ }
131
+ else if (lstatSync(path).isSymbolicLink())
132
+ throw new Error(`Cache entry is a symlink; ownership retained: ${path}.`);
133
+ });
134
+ }
135
+ function reap(root, report) {
136
+ try {
137
+ const result = mutate(root, state => {
138
+ // Completion proves World teardown; only then may caller loss retire a hold.
139
+ for (const [id, lease] of Object.entries(state.leases))
140
+ if (lease.complete && !lease.retained && !alive(lease.pid))
141
+ delete state.leases[id];
142
+ const held = [...Object.values(state.current), ...Object.values(state.leases)].flatMap(value => value.entries);
143
+ const removable = state.entries.filter(path => !held.some(use => path === use || use.startsWith(path + sep) || path.startsWith(use + sep)));
144
+ const before = statfsSync(root, { bigint: true });
145
+ let removed = 0;
146
+ const retained = [];
147
+ for (const path of removable) {
148
+ try {
149
+ if (existsSync(path)) {
150
+ if (realpathSync(dirname(path)) !== dirname(path))
151
+ throw new Error("parent directory changed to a symlink");
152
+ rmSync(path, { recursive: true });
153
+ removed++;
154
+ }
155
+ state.entries = state.entries.filter(entry => entry !== path);
156
+ }
157
+ catch (cause) {
158
+ retained.push(`${path}: ${cause instanceof Error ? cause.message : String(cause)}`);
159
+ }
160
+ }
161
+ const after = statfsSync(root, { bigint: true });
162
+ return { removed, retained, delta: after.bavail * after.bsize - before.bavail * before.bsize };
163
+ });
164
+ if (result.removed)
165
+ report(` cache: released ${result.removed} superseded entries; filesystem available-space change ${result.delta >= 0n ? "+" : ""}${result.delta} bytes\n`);
166
+ for (const entry of result.retained)
167
+ report(` cache: retained ${entry}\n`);
168
+ }
169
+ catch (cause) {
170
+ report(` cache: reclaim deferred; ownership retained: ${cause instanceof Error ? cause.message : String(cause)}\n`);
171
+ }
172
+ }
173
+ /** A complete result still holds its files until its serving/copying caller releases. */
174
+ export async function retainPreparationCache(projectDirectory, cacheDirectory, work, report = text => process.stdout.write(text)) {
175
+ mkdirSync(cacheDirectory, { recursive: true });
176
+ const root = realpathSync(cacheDirectory), project = createHash("sha256").update(realpathSync(projectDirectory)).digest("hex"), id = randomUUID();
177
+ mutate(root, state => { state.leases[id] = { project, pid: process.pid, entries: [], complete: false }; });
178
+ try {
179
+ const value = await invocations.run({ root, selected: resolve(cacheDirectory), id }, work);
180
+ mutate(root, state => {
181
+ const lease = state.leases[id];
182
+ lease.complete = true;
183
+ state.current[project] = { generation: id, entries: [...lease.entries].filter(path => existsSync(path)) };
184
+ });
185
+ let released = false;
186
+ const release = () => {
187
+ if (released)
188
+ return;
189
+ try {
190
+ mutate(root, state => { delete state.leases[id]; });
191
+ }
192
+ catch (cause) {
193
+ report(` cache: release deferred; ownership retained: ${cause instanceof Error ? cause.message : String(cause)}\n`);
194
+ return;
195
+ }
196
+ released = true;
197
+ liveHolds.delete(release);
198
+ reap(root, report);
199
+ };
200
+ liveHolds.add(release);
201
+ reap(root, report);
202
+ return { value, release };
203
+ }
204
+ catch (cause) {
205
+ try {
206
+ mutate(root, state => { if (state.leases[id])
207
+ state.leases[id].retained = true; });
208
+ }
209
+ catch { /* Preserve the original preparation failure and its active lease. */ }
210
+ report(` cache: incomplete preparation ownership retained in ${ledger(root)}\n`);
211
+ throw cause;
212
+ }
213
+ }
214
+ //# sourceMappingURL=cache-lifetime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-lifetime.js","sourceRoot":"","sources":["../../src/cli/cache-lifetime.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cache-root.d.ts","sourceRoot":"","sources":["../../src/cli/cache-root.ts"],"names":[],"mappings":"AAIA,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKnE;AAED,mEAAmE;AACnE,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAElF;AAED,uFAAuF;AACvF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAK9E"}
1
+ {"version":3,"file":"cache-root.d.ts","sourceRoot":"","sources":["../../src/cli/cache-root.ts"],"names":[],"mappings":"AAKA,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKnE;AAED,mEAAmE;AACnE,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAElF;AAED,uFAAuF;AACvF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ9E"}
@@ -1,3 +1,4 @@
1
+ import { registerPreparationCacheEntry } from "./cache-lifetime.js";
1
2
  import { mkdirSync, mkdtempSync } from "node:fs";
2
3
  import { homedir, tmpdir } from "node:os";
3
4
  import { join, resolve } from "node:path";
@@ -19,6 +20,9 @@ export function preparationWorkDirectory(prefix, root) {
19
20
  const selected = selectedCacheRoot(root);
20
21
  const parent = selected ? join(selected, "work") : tmpdir();
21
22
  mkdirSync(parent, { recursive: true });
22
- return mkdtempSync(join(parent, prefix));
23
+ const directory = mkdtempSync(join(parent, prefix));
24
+ // mkdtemp created this directory, so register creation before it is used.
25
+ registerPreparationCacheEntry(directory, true);
26
+ return directory;
23
27
  }
24
28
  //# sourceMappingURL=cache-root.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache-root.js","sourceRoot":"","sources":["../../src/cli/cache-root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,2EAA2E;AAC3E,MAAM,UAAU,iBAAiB,CAAC,IAAa;IAC7C,IAAI,IAAI,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;IAClE,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAChE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,yBAAyB,CAAC,SAAiB,EAAE,IAAa;IACxE,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,mBAAmB,CAAC,EAAE,SAAS,CAAC,CAAC;AACpG,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,wBAAwB,CAAC,MAAc,EAAE,IAAa;IACpE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5D,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"cache-root.js","sourceRoot":"","sources":["../../src/cli/cache-root.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,2EAA2E;AAC3E,MAAM,UAAU,iBAAiB,CAAC,IAAa;IAC7C,IAAI,IAAI,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;IAClE,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAChE,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,yBAAyB,CAAC,SAAiB,EAAE,IAAa;IACxE,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,mBAAmB,CAAC,EAAE,SAAS,CAAC,CAAC;AACpG,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,wBAAwB,CAAC,MAAc,EAAE,IAAa;IACpE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5D,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,0EAA0E;IAC1E,6BAA6B,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC/C,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-variants.d.ts","sourceRoot":"","sources":["../../src/cli/catalog-variants.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,OAAO,EAAoH,KAAK,uBAAuB,EAAE,KAAK,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrN,OAAO,EAAmC,KAAK,0BAA0B,EAAE,KAAK,8BAA8B,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGnK,OAAO,EAA0B,KAAK,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAGlG,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,4BAA4B,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CA2FnL;AAaD;kFACkF;AAClF,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,4BAA4B,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,qBAAqB,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,OAAO,yBAAyB,EAAE,oBAAoB,CAAA;CAAE,CAAC,CAY1Q;AAED,mFAAmF;AACnF,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,0BAA0B,EAAE,KAAK,CAAC,EAAE,4BAA4B,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,8BAA8B,CAAC;IAAC,OAAO,EAAE,uBAAuB,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,OAAO,yBAAyB,EAAE,oBAAoB,CAAA;CAAE,CAAC,CAqBxU"}
1
+ {"version":3,"file":"catalog-variants.d.ts","sourceRoot":"","sources":["../../src/cli/catalog-variants.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,OAAO,EAAoH,KAAK,uBAAuB,EAAE,KAAK,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrN,OAAO,EAAmC,KAAK,0BAA0B,EAAE,KAAK,8BAA8B,EAAE,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGnK,OAAO,EAA0B,KAAK,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAGlG,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,4BAA4B,GAAG,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CAoGnL;AAgBD;kFACkF;AAClF,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,4BAA4B,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,qBAAqB,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,OAAO,yBAAyB,EAAE,oBAAoB,CAAA;CAAE,CAAC,CAmB1Q;AAED,mFAAmF;AACnF,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,0BAA0B,EAAE,KAAK,CAAC,EAAE,4BAA4B,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,8BAA8B,CAAC;IAAC,OAAO,EAAE,uBAAuB,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,OAAO,yBAAyB,EAAE,oBAAoB,CAAA;CAAE,CAAC,CAqBxU"}
@@ -16,18 +16,26 @@ export async function placeCatalogVariants(plan, image, input) {
16
16
  const identities = [];
17
17
  if (!parents.length)
18
18
  return { files, identities };
19
- if (!input)
20
- throw new Error("Vendor WASM variants require --provision-catalog with exact parent-instance qualifications; prepare and publish their complete closures on a machine.");
19
+ if (!input) {
20
+ for (const parent of parents)
21
+ refuseModule(plan, parent.link.path, `${parent.pkg.name}@${parent.pkg.version}: missing vendor variant catalog. Prepare and publish its complete closure through publish-demand-catalog.mjs.`);
22
+ return { files, identities: [canonicalBrowserPackJson(plan.moduleRefusals)] };
23
+ }
21
24
  const requests = parents.map(({ link, pkg }) => ({ kind: "package", name: pkg.name, version: pkg.version, backend: "tab", phase: "run", abi: input.profile.abi, instance: link.path, export: "vendor-variant", features: [] }));
22
25
  const selected = await provisionCatalogClient(input).planProvisions(requests, input.profile);
23
26
  const store = new DirectoryPackPublicationStore(input.directory);
24
27
  for (let i = 0; i < parents.length; i++) {
25
28
  const parent = parents[i];
26
29
  const row = selected.rows[i];
27
- if (row.status !== "resolved" || row.provision?.disposition !== "pack" || row.provision.contract.kind !== "variant" || !row.selection)
28
- throw new Error(`${parent.pkg.name}@${parent.pkg.version} at ${parent.link.path}: ${row.reason ?? "complete vendor variant not published"}. ${row.prepare ?? "Use publish-demand-catalog.mjs."}`);
29
- if (!recipes.some(recipe => matchesVariantRecipe(recipe, parent.pkg.name, parent.pkg.version)))
30
- throw new Error(`${parent.pkg.name}@${parent.pkg.version}: native export ABI has no qualified exact recipe.`);
30
+ const unavailable = row.status !== "resolved";
31
+ if (unavailable || !recipes.some(recipe => matchesVariantRecipe(recipe, parent.pkg.name, parent.pkg.version))) {
32
+ const reason = `${parent.pkg.name}@${parent.pkg.version} at ${parent.link.path}: ${row.reason ?? "native export ABI has no qualified exact vendor variant"}. ${row.prepare ?? "Prepare and publish its closure through publish-demand-catalog.mjs."}`;
33
+ refuseModule(plan, parent.link.path, reason);
34
+ identities.push(canonicalBrowserPackJson({ request: row.request, refusal: reason }));
35
+ continue;
36
+ }
37
+ if (row.provision?.disposition !== "pack" || row.provision.contract.kind !== "variant" || !row.selection)
38
+ throw new Error("Resolved variant contract missing.");
31
39
  const { selection } = row;
32
40
  const contract = row.provision.contract;
33
41
  const roots = selection.closure.roots.filter(id => {
@@ -124,6 +132,9 @@ export async function placeCatalogVariants(plan, image, input) {
124
132
  }
125
133
  return { files, identities };
126
134
  }
135
+ function refuseModule(plan, path, reason) {
136
+ (plan.moduleRefusals ??= {})[path] = reason;
137
+ }
127
138
  function requireArchive(artifact) {
128
139
  if (!artifact.archive || artifact.parts || artifact.expandedBytes === undefined || artifact.files === undefined)
129
140
  throw new Error("Variant must provide one complete measured archive; parted variants need a qualified image assembly recipe.");
@@ -148,7 +159,16 @@ export async function projectCompilerAssets(plan, image, input) {
148
159
  demand.abi = input.profile.abi;
149
160
  const parents = plan?.links.map(link => ({ kind: "package", name: plan.packages[link.package].name, version: plan.packages[link.package].version, backend: "tab", phase: "run", abi: input.profile.abi, instance: link.path, features: [] })) ?? [];
150
161
  const requests = compilerRequests(demand, parents), selected = await provisionCatalogClient(input).planProvisions(requests, input.profile), store = new DirectoryPackPublicationStore(input.directory);
151
- const projection = compilerAssetProjection(selected, image), files = new Map();
162
+ // Runtime transforms are required by the tab itself. An installed instance's
163
+ // factory is optional until that package is loaded, like its native variant.
164
+ const rows = selected.rows.filter(row => {
165
+ if (!row.request.instance || row.status === "resolved")
166
+ return true;
167
+ if (plan)
168
+ refuseModule(plan, row.request.instance, `${row.request.name}@${row.request.version}: ${row.reason ?? "compiler closure unpublished"}. ${row.prepare ?? "Prepare and publish the exact compiler closure on a host."}`);
169
+ return false;
170
+ });
171
+ const projection = compilerAssetProjection({ ...selected, rows }, image), files = new Map();
152
172
  for (const [url, pin] of Object.entries(projection.files)) {
153
173
  const path = contentPath("artifacts", pin.digest), object = await store.read(path);
154
174
  if (!object || object.bytes.byteLength !== pin.bytes || await digestBrowserPackBytes(object.bytes) !== pin.digest)
@@ -1 +1 @@
1
- {"version":3,"file":"catalog-variants.js","sourceRoot":"","sources":["../../src/cli/catalog-variants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog-variants.js","sourceRoot":"","sources":["../../src/cli/catalog-variants.ts"],"names":[],"mappings":"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"}
@@ -89,6 +89,8 @@ export interface BuildImageOptions {
89
89
  appUrl?: string;
90
90
  };
91
91
  }
92
+ /** A serving or copying caller releases after its last read of the image's files. */
93
+ export declare function releaseImageCache(image: BuiltImage): void;
92
94
  export declare function buildImageWith(folder: string, name: string, settings: PageSettings, project: string | undefined, options: BuildImageOptions): Promise<BuiltImage>;
93
95
  /** Every file of the image and its World by the path it is served at, and where the folder holds it. */
94
96
  export declare function imageBlobs(image: BuiltImage): Map<string, string>;
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":"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"}
package/dist/cli/main.js CHANGED
@@ -5,6 +5,7 @@
5
5
  // `build` writes the same page and image to ./dist as static files. `init`
6
6
  // writes a playground: a Dockerfile whose CMD fetches what to run.
7
7
  import { createHash } from "node:crypto";
8
+ import { retainPreparationCache } from "./cache-lifetime.js";
8
9
  import { preparationCacheDirectory, selectedCacheRoot } from "./cache-root.js";
9
10
  import { preparationBounded, preparationCheckpoint, preparationMemoryLimit, preparationPhase, withPreparationMemory } from "./preparation-memory.js";
10
11
  import { existsSync, mkdirSync, readFileSync, readdirSync, realpathSync, renameSync, statSync, watch, writeFileSync } from "node:fs";
@@ -219,7 +220,15 @@ function folderProjectId(folder, name) {
219
220
  export async function buildImage(folder, name, settings, project) {
220
221
  return buildImageWith(folder, name, settings, project, {});
221
222
  }
223
+ const imageCacheHolds = new WeakMap();
224
+ /** A serving or copying caller releases after its last read of the image's files. */
225
+ export function releaseImageCache(image) { imageCacheHolds.get(image)?.(); imageCacheHolds.delete(image); }
222
226
  export async function buildImageWith(folder, name, settings, project, options) {
227
+ const held = await retainPreparationCache(folder, preparationCacheDirectory("", options.cacheRoot), () => prepareImage(folder, name, settings, project, options));
228
+ imageCacheHolds.set(held.value, held.release);
229
+ return held.value;
230
+ }
231
+ async function prepareImage(folder, name, settings, project, options) {
223
232
  assertShell();
224
233
  options = { ...options, provisionCatalog: options.provisionCatalog ?? defaultProvisionCatalog() };
225
234
  // Host program metadata translates to exact catalog requests. Its
@@ -429,7 +438,9 @@ export async function buildImageWith(folder, name, settings, project, options) {
429
438
  build: options.build ?? "", environment: digest(canonicalBrowserPackJson(options.buildEnv ?? {})),
430
439
  world: moduleWorld?.world.archive.integrity ?? "none", capture: existsSync(capturedFile) ? digest(readFileSync(capturedFile)) : "none", abi: options.provisionCatalog?.profile.abi ?? "unselected" });
431
440
  projectOutputs = await placeCatalogProjectOutputs(context, options.provisionCatalog);
432
- plan = projectOutputs.document.plan;
441
+ // The catalog document supplies authenticated output bytes; optional
442
+ // refusals selected for this invocation remain the image's loader policy.
443
+ plan = { ...projectOutputs.document.plan, moduleRefusals: { ...projectOutputs.document.plan.moduleRefusals, ...plan.moduleRefusals } };
433
444
  for (const [url, file] of projectOutputs.files)
434
445
  tarballs.set(url, file);
435
446
  for (const [integrity, file] of projectOutputs.blobs)
@@ -481,7 +492,7 @@ export async function buildImageWith(folder, name, settings, project, options) {
481
492
  settings,
482
493
  builtAt: new Date().toISOString(),
483
494
  preparation,
484
- ...(plan ? { dependencies: { url: imageDependenciesPath(name), key: plan.key, packages: plan.packages.length, links: plan.links.length, ...(plan.environment ? { environment: plan.environment } : {}), ...(plan.nativeBindings ? { nativeBindings: plan.nativeBindings } : {}) } } : {}),
495
+ ...(plan ? { dependencies: { url: imageDependenciesPath(name), key: plan.key, packages: plan.packages.length, links: plan.links.length, ...(plan.environment ? { environment: plan.environment } : {}), ...(plan.nativeBindings ? { nativeBindings: plan.nativeBindings } : {}), ...(plan.moduleRefusals ? { moduleRefusals: plan.moduleRefusals } : {}) } } : {}),
485
496
  compilers: compilers.selection,
486
497
  ...(projectOutputs ? { outputs: { request: projectOutputs.request } } : {}),
487
498
  ...(packs ? { packs: { url: imagePacksPath(name), count: packs.document.packs.length, digest: createHash("sha256").update(JSON.stringify(packs.document)).digest("hex").slice(0, 16) } } : {}),
@@ -788,6 +799,11 @@ export async function buildWorldImage(directory, imageName, cacheRoot) {
788
799
  if (resolved) {
789
800
  plan = resolved.plan;
790
801
  servePlanTarballsFromOrigin(plan, packagesDirectory);
802
+ const variants = await placeCatalogVariants(plan, imageName, defaultProvisionCatalog());
803
+ for (const [url, file] of variants.files)
804
+ tarballs.set(url, file);
805
+ if (variants.identities.length)
806
+ plan.key += `-${createHash("sha256").update(variants.identities.join("\n")).digest("hex").slice(0, 12)}`;
791
807
  process.stdout.write(` world ${name}: ${plan.packages.length} packages at ${plan.links.length} paths, resolved with ${plan.resolver}${resolved.cached ? ", from the cache" : ` in ${resolved.durationMs} ms`}\n`);
792
808
  const carried = await carryRegistryTarballs(plan, imageName, cacheRoot ? { cacheRoot } : {});
793
809
  for (const [served, source] of (await packPlan(plan, imageName, carried.files, tarballs, packagesDirectory, cacheRoot)).files)
@@ -809,7 +825,7 @@ export async function buildWorldImage(directory, imageName, cacheRoot) {
809
825
  config,
810
826
  ...(runtime ? { environmentOutputFlag: worldEnvironmentOutputFlag(runtime.version) } : {}),
811
827
  archive: { url: imageWorldArchivePath(imageName), blobs: imageBlobsPath(imageName), integrity: archive.integrity, entries: archive.entries, fileBytes: archive.fileBytes },
812
- ...(plan ? { dependencies: { url: imageWorldDependenciesPath(imageName), key: plan.key, packages: plan.packages.length, links: plan.links.length, ...(plan.environment ? { environment: plan.environment } : {}), ...(plan.nativeBindings ? { nativeBindings: plan.nativeBindings } : {}) } } : {}),
828
+ ...(plan ? { dependencies: { url: imageWorldDependenciesPath(imageName), key: plan.key, packages: plan.packages.length, links: plan.links.length, ...(plan.environment ? { environment: plan.environment } : {}), ...(plan.nativeBindings ? { nativeBindings: plan.nativeBindings } : {}), ...(plan.moduleRefusals ? { moduleRefusals: plan.moduleRefusals } : {}) } } : {}),
813
829
  },
814
830
  archive: archive.bytes,
815
831
  blobs: archive.blobs,
@@ -931,12 +947,16 @@ async function dev(cwd, args) {
931
947
  if (next.manifest.archive.integrity === image.manifest.archive.integrity
932
948
  && JSON.stringify(next.manifest.preparation) === JSON.stringify(image.manifest.preparation)
933
949
  && JSON.stringify(next.manifest.registry) === JSON.stringify(image.manifest.registry)
934
- && next.manifest.dependencies?.key === image.manifest.dependencies?.key)
950
+ && next.manifest.dependencies?.key === image.manifest.dependencies?.key) {
951
+ releaseImageCache(next);
935
952
  return;
953
+ }
954
+ const previous = image;
936
955
  image = next;
937
956
  for (const [path, bytes] of imageFiles(image))
938
957
  files.set(path, bytes);
939
958
  blobs = imageBlobs(image);
959
+ releaseImageCache(previous);
940
960
  server.broadcast({ integrity: image.manifest.archive.integrity, entries: image.manifest.archive.entries });
941
961
  process.stdout.write(` ${new Date().toLocaleTimeString()} changed: ${image.manifest.archive.entries} entries, ${formatBytes(image.manifest.archive.fileBytes)}; noticed by ${noticed}, quiet after ${quietAfter} ms, built in ${Date.now() - startedAt} ms\n`);
942
962
  }
@@ -995,7 +1015,7 @@ async function dev(cwd, args) {
995
1015
  let pollTimer = setTimeout(poll, 1000);
996
1016
  await new Promise((resolveClose) => {
997
1017
  const stop = () => { watcher.close(); if (pollTimer)
998
- clearTimeout(pollTimer); server.close(); resolveClose(); };
1018
+ clearTimeout(pollTimer); server.close(); releaseImageCache(image); resolveClose(); };
999
1019
  process.once("SIGINT", stop);
1000
1020
  process.once("SIGTERM", stop);
1001
1021
  });
@@ -1007,30 +1027,35 @@ async function build(cwd, args) {
1007
1027
  // the folder's own packages, which its install resolves as `dev`'s does.
1008
1028
  const packages = resolve(cwd, PACKAGES_DIRECTORY);
1009
1029
  const image = await buildImageWith(cwd, args.name, args.settings, args.project, imageOptions(args, packages));
1010
- const index = originRegistryIndex(packages);
1011
- if (index)
1012
- image.manifest.registry = index;
1013
- // A World the app attaches to is imaged beside it, as `dev` images it, whatever built the app
1014
- // (a Dockerfile's image too): the tab runs the World first and the image's command under it.
1015
- // build arguments are Docker's; an image Docker did not build here never read them
1016
- if (Object.keys(args.buildArgs).length > 0 && image.manifest.setup.kind !== "image") {
1017
- throw new Error(`--build-arg ${Object.keys(args.buildArgs).join(", ")} applies to a Dockerfile whose build half runs here (a RUN step); this one's setup is ${image.manifest.setup.kind}, built in the tab with its ARG defaults`);
1030
+ try {
1031
+ const index = originRegistryIndex(packages);
1032
+ if (index)
1033
+ image.manifest.registry = index;
1034
+ // A World the app attaches to is imaged beside it, as `dev` images it, whatever built the app
1035
+ // (a Dockerfile's image too): the tab runs the World first and the image's command under it.
1036
+ // build arguments are Docker's; an image Docker did not build here never read them
1037
+ if (Object.keys(args.buildArgs).length > 0 && image.manifest.setup.kind !== "image") {
1038
+ throw new Error(`--build-arg ${Object.keys(args.buildArgs).join(", ")} applies to a Dockerfile whose build half runs here (a RUN step); this one's setup is ${image.manifest.setup.kind}, built in the tab with its ARG defaults`);
1039
+ }
1040
+ if (args.world) {
1041
+ const world = await buildWorldImage(args.world, args.name, args.cacheRoot);
1042
+ image.manifest.world = world.world;
1043
+ image.world = { archive: world.archive, blobs: world.blobs, ...(world.plan ? { plan: world.plan } : {}) };
1044
+ for (const [served, source] of world.tarballs)
1045
+ image.tarballs.set(served, source);
1046
+ }
1047
+ const out = resolve(cwd, args.out);
1048
+ preparationPhase("final copy");
1049
+ const written = writeBuild({ shell: SHELL_DIRECTORY, files: imageFiles(image), blobs: imageBlobs(image), out, manifest: image.manifest });
1050
+ preparationCheckpoint();
1051
+ process.stdout.write(`\n browser-substrate build\n\n ${out}\n ${written.files} files, ${formatBytes(written.bytes)}\n ${image.manifest.setup.playground
1052
+ ? `a playground: deploy on your page's origin and on ${image.manifest.settings.sandboxOrigin ?? "a sandbox. subdomain of it"}`
1053
+ : "one origin, static; _headers carries the isolation headers"}\n\n`);
1054
+ return 0;
1018
1055
  }
1019
- if (args.world) {
1020
- const world = await buildWorldImage(args.world, args.name, args.cacheRoot);
1021
- image.manifest.world = world.world;
1022
- image.world = { archive: world.archive, blobs: world.blobs, ...(world.plan ? { plan: world.plan } : {}) };
1023
- for (const [served, source] of world.tarballs)
1024
- image.tarballs.set(served, source);
1056
+ finally {
1057
+ releaseImageCache(image);
1025
1058
  }
1026
- const out = resolve(cwd, args.out);
1027
- preparationPhase("final copy");
1028
- const written = writeBuild({ shell: SHELL_DIRECTORY, files: imageFiles(image), blobs: imageBlobs(image), out, manifest: image.manifest });
1029
- preparationCheckpoint();
1030
- process.stdout.write(`\n browser-substrate build\n\n ${out}\n ${written.files} files, ${formatBytes(written.bytes)}\n ${image.manifest.setup.playground
1031
- ? `a playground: deploy on your page's origin and on ${image.manifest.settings.sandboxOrigin ?? "a sandbox. subdomain of it"}`
1032
- : "one origin, static; _headers carries the isolation headers"}\n\n`);
1033
- return 0;
1034
1059
  }
1035
1060
  /**
1036
1061
  * The image's dry run (ADR-0043): opened once in a real browser, every
@@ -1052,10 +1077,11 @@ async function dryRunCommand(cwd, args) {
1052
1077
  for (let round = 1; round <= rounds; round += 1) {
1053
1078
  let url = args.page;
1054
1079
  let server;
1080
+ let image;
1055
1081
  if (!url) {
1056
1082
  // The image `dev` would serve: its packages answered by this origin.
1057
1083
  const packages = resolve(cwd, PACKAGES_DIRECTORY);
1058
- const image = await buildImageWith(cwd, args.name, args.settings, folderProjectId(cwd, args.name), { ...imageOptions(args, packages), capturedFile: file });
1084
+ image = await buildImageWith(cwd, args.name, args.settings, folderProjectId(cwd, args.name), { ...imageOptions(args, packages), capturedFile: file });
1059
1085
  const index = originRegistryIndex(packages);
1060
1086
  if (index)
1061
1087
  image.manifest.registry = index;
@@ -1123,6 +1149,8 @@ async function dryRunCommand(cwd, args) {
1123
1149
  }
1124
1150
  finally {
1125
1151
  server?.close();
1152
+ if (image)
1153
+ releaseImageCache(image);
1126
1154
  }
1127
1155
  }
1128
1156
  say(`\n Not sealed after ${rounds} rounds: each captured something new.\n\n`);