@ai-ecoverse/slicc-kernel 1.164.0 → 1.164.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/kernel-worker.js +9 -2
- package/dist/kernel-worker.js.map +2 -2
- package/dist/node-driver-worker.js +37 -5
- package/dist/node-driver-worker.js.map +2 -2
- package/dist/node-process-worker.js +109 -101
- package/dist/node-process-worker.js.map +3 -3
- package/dist/node.js +9 -2
- package/dist/node.js.map +2 -2
- package/dist/process-worker.js +1 -1
- package/dist/types/kernel/socket.d.ts +1 -0
- package/package.json +1 -1
|
@@ -387,18 +387,18 @@ var init_changes = __esm({
|
|
|
387
387
|
renames() {
|
|
388
388
|
return this.view.length > RENAMES ? capturedAtomics.load(this.view, RENAMES) : 0;
|
|
389
389
|
}
|
|
390
|
-
awaitRename(
|
|
391
|
-
if (this.view.length > RENAMES) capturedAtomics.wait(this.view, RENAMES,
|
|
390
|
+
awaitRename(seen2, ms) {
|
|
391
|
+
if (this.view.length > RENAMES) capturedAtomics.wait(this.view, RENAMES, seen2, ms);
|
|
392
392
|
return this.renames();
|
|
393
393
|
}
|
|
394
|
-
changedSince(
|
|
394
|
+
changedSince(seen2, path) {
|
|
395
395
|
const now = capturedAtomics.load(this.view, GEN);
|
|
396
|
-
const distance = now -
|
|
396
|
+
const distance = now - seen2 >>> 0;
|
|
397
397
|
if (distance === 0) return { now, changed: false };
|
|
398
398
|
if (distance > RING_SIZE) return { now, changed: true };
|
|
399
399
|
const hash = changeHash(normal(path));
|
|
400
400
|
for (let i = 1; i <= distance; i++) {
|
|
401
|
-
const g =
|
|
401
|
+
const g = seen2 + i | 0;
|
|
402
402
|
const at = RING + (g & RING_SIZE - 1) * SLOT;
|
|
403
403
|
if (capturedAtomics.load(this.view, at) !== g) return { now, changed: true };
|
|
404
404
|
const hit = capturedAtomics.load(this.view, at + 1) === hash;
|
|
@@ -608,7 +608,7 @@ function linkedWatch(watch, st) {
|
|
|
608
608
|
watch.sig = signatureOf(st);
|
|
609
609
|
return watch;
|
|
610
610
|
}
|
|
611
|
-
function viaAlias(watch,
|
|
611
|
+
function viaAlias(watch, seen2, path) {
|
|
612
612
|
if (watch.resolved === void 0) {
|
|
613
613
|
let real;
|
|
614
614
|
try {
|
|
@@ -617,7 +617,7 @@ function viaAlias(watch, seen, path) {
|
|
|
617
617
|
}
|
|
618
618
|
watch.resolved = real && real !== path ? real : null;
|
|
619
619
|
}
|
|
620
|
-
return watch.resolved !== null && watch.view.changedSince(
|
|
620
|
+
return watch.resolved !== null && watch.view.changedSince(seen2, watch.resolved).changed;
|
|
621
621
|
}
|
|
622
622
|
function viaLink(watch, path) {
|
|
623
623
|
if (!watch.linked) return false;
|
|
@@ -631,10 +631,10 @@ function viaLink(watch, path) {
|
|
|
631
631
|
watch.sig = sig;
|
|
632
632
|
return true;
|
|
633
633
|
}
|
|
634
|
-
function watchedChange(watch,
|
|
635
|
-
const said = watch.view.changedSince(
|
|
636
|
-
if (said.changed || said.now ===
|
|
637
|
-
return { now: said.now, changed: viaAlias(watch,
|
|
634
|
+
function watchedChange(watch, seen2, path) {
|
|
635
|
+
const said = watch.view.changedSince(seen2, path);
|
|
636
|
+
if (said.changed || said.now === seen2) return said;
|
|
637
|
+
return { now: said.now, changed: viaAlias(watch, seen2, path) || viaLink(watch, path) };
|
|
638
638
|
}
|
|
639
639
|
var signatureOf, RangedFile;
|
|
640
640
|
var init_ranged = __esm({
|
|
@@ -944,23 +944,23 @@ function copying(bridge, mutating, entry) {
|
|
|
944
944
|
copy: (from, to, mode, exclusive) => mutating(() => copy2.call(bridge, from, to, mode, exclusive), ...entry(to))
|
|
945
945
|
};
|
|
946
946
|
}
|
|
947
|
-
function listed({ cache, seen, filled: filled2 }, p, list, gen, asked) {
|
|
947
|
+
function listed({ cache, seen: seen2, filled: filled2 }, p, list, gen, asked) {
|
|
948
948
|
const base = p === "/" ? "" : p;
|
|
949
949
|
for (const [name2, st] of list) {
|
|
950
950
|
if (!st) continue;
|
|
951
951
|
filled2.set(st, asked);
|
|
952
952
|
const at = `${base}/${name2}`;
|
|
953
953
|
cache.put(cache.lstats, at, st);
|
|
954
|
-
if (gen !== void 0)
|
|
954
|
+
if (gen !== void 0) seen2.saw(cache.lstats, at, gen);
|
|
955
955
|
if (st.isSymbolicLink) continue;
|
|
956
956
|
cache.put(cache.stats, at, st);
|
|
957
|
-
if (gen !== void 0)
|
|
957
|
+
if (gen !== void 0) seen2.saw(cache.stats, at, gen);
|
|
958
958
|
}
|
|
959
959
|
}
|
|
960
960
|
function fetched({
|
|
961
961
|
view,
|
|
962
962
|
now,
|
|
963
|
-
seen,
|
|
963
|
+
seen: seen2,
|
|
964
964
|
filled: filled2,
|
|
965
965
|
cache
|
|
966
966
|
}, map, path, get) {
|
|
@@ -969,7 +969,7 @@ function fetched({
|
|
|
969
969
|
let hit;
|
|
970
970
|
try {
|
|
971
971
|
hit = get();
|
|
972
|
-
if (gen !== void 0)
|
|
972
|
+
if (gen !== void 0) seen2.saw(map, path, gen);
|
|
973
973
|
} catch (e) {
|
|
974
974
|
hit = { error: e, until: asked + MISS_TTL_MS, ...gen !== void 0 ? { gen } : {} };
|
|
975
975
|
}
|
|
@@ -985,14 +985,14 @@ function cachingBridge(bridge, now = () => capturedperformance.now(), shared) {
|
|
|
985
985
|
const filled2 = new Fills(view, now);
|
|
986
986
|
const young2 = (entry2) => filled2.young(entry2);
|
|
987
987
|
const live = (miss, path) => miss.until > now() && young2(miss) && (view === void 0 || miss.gen === void 0 || !view.changedSince(miss.gen, path).changed);
|
|
988
|
-
const
|
|
989
|
-
const kept = remember(cache,
|
|
988
|
+
const seen2 = new SeenAt(view, lstats);
|
|
989
|
+
const kept = remember(cache, seen2, blind, (entry2) => filled2.set(entry2));
|
|
990
990
|
const gone2 = (path) => goneAbove([lstats, stats], live, path);
|
|
991
991
|
const usable = (map, path) => {
|
|
992
992
|
const hit = map.get(path);
|
|
993
993
|
if (hit === void 0) return void 0;
|
|
994
994
|
if ("until" in hit) return live(hit, path) ? hit : void 0;
|
|
995
|
-
return young2(hit) && !
|
|
995
|
+
return young2(hit) && !seen2.changed(map, path) ? hit : void 0;
|
|
996
996
|
};
|
|
997
997
|
const cached2 = (map, path, get) => {
|
|
998
998
|
if (blind) return get();
|
|
@@ -1001,7 +1001,7 @@ function cachingBridge(bridge, now = () => capturedperformance.now(), shared) {
|
|
|
1001
1001
|
if (hit === void 0) {
|
|
1002
1002
|
const missing2 = gone2(path);
|
|
1003
1003
|
if (missing2) throw missing2.error;
|
|
1004
|
-
hit = fetched({ view, now, seen, filled: filled2, cache }, map, path, get);
|
|
1004
|
+
hit = fetched({ view, now, seen: seen2, filled: filled2, cache }, map, path, get);
|
|
1005
1005
|
}
|
|
1006
1006
|
if ("until" in hit) throw hit.error;
|
|
1007
1007
|
return hit;
|
|
@@ -1061,12 +1061,12 @@ function cachingBridge(bridge, now = () => capturedperformance.now(), shared) {
|
|
|
1061
1061
|
const gen = view?.now();
|
|
1062
1062
|
const asked = now();
|
|
1063
1063
|
const list = bridge.readdirStat(p);
|
|
1064
|
-
if (!blind) listed({ cache, seen, filled: filled2 }, p, list, gen, asked);
|
|
1064
|
+
if (!blind) listed({ cache, seen: seen2, filled: filled2 }, p, list, gen, asked);
|
|
1065
1065
|
return list;
|
|
1066
1066
|
},
|
|
1067
1067
|
readlink: (p) => {
|
|
1068
1068
|
const known = blind ? void 0 : (cache.fresh(), lstats.get(p));
|
|
1069
|
-
const gen =
|
|
1069
|
+
const gen = seen2.lstat(p);
|
|
1070
1070
|
const current2 = view !== void 0 && gen !== void 0 && !view.changedSince(gen, p).changed;
|
|
1071
1071
|
if (known && current2 && !("until" in known) && young2(known) && !known.isSymbolicLink) {
|
|
1072
1072
|
throw syncError("EINVAL", `'${p}' is not a symbolic link`);
|
|
@@ -1559,26 +1559,26 @@ var init_wasi_files = __esm({
|
|
|
1559
1559
|
return this.links.get(path);
|
|
1560
1560
|
}
|
|
1561
1561
|
saw(map, path, gen) {
|
|
1562
|
-
const
|
|
1563
|
-
if (
|
|
1564
|
-
|
|
1562
|
+
const seen2 = this.of(map);
|
|
1563
|
+
if (seen2.size >= SEEN_CAP) seen2.clear();
|
|
1564
|
+
seen2.set(path, gen);
|
|
1565
1565
|
}
|
|
1566
1566
|
changed(map, path) {
|
|
1567
1567
|
if (this.view === void 0) return false;
|
|
1568
|
-
const
|
|
1569
|
-
const gen =
|
|
1568
|
+
const seen2 = this.of(map);
|
|
1569
|
+
const gen = seen2.get(path);
|
|
1570
1570
|
if (gen === void 0) return true;
|
|
1571
1571
|
const since = this.view.changedSince(gen, path);
|
|
1572
|
-
if (!since.changed)
|
|
1572
|
+
if (!since.changed) seen2.set(path, since.now);
|
|
1573
1573
|
return since.changed;
|
|
1574
1574
|
}
|
|
1575
1575
|
};
|
|
1576
|
-
remember = (cache,
|
|
1576
|
+
remember = (cache, seen2, blind, fill) => (path, made) => {
|
|
1577
1577
|
if (!made || blind) return made;
|
|
1578
1578
|
const { seen: at, ...st } = made;
|
|
1579
1579
|
fill(st);
|
|
1580
1580
|
cache.put(cache.stats, path, st);
|
|
1581
|
-
if (at !== void 0)
|
|
1581
|
+
if (at !== void 0) seen2.saw(cache.stats, path, at);
|
|
1582
1582
|
return made;
|
|
1583
1583
|
};
|
|
1584
1584
|
Fills = class {
|
|
@@ -2173,8 +2173,8 @@ function errnoError(code2, path, direct) {
|
|
|
2173
2173
|
const err = syncError(code2, `sync-sab bridge, '${path}'`);
|
|
2174
2174
|
return direct ? capturedObject.assign(err, { direct }) : err;
|
|
2175
2175
|
}
|
|
2176
|
-
function holdSeen(
|
|
2177
|
-
return { gen:
|
|
2176
|
+
function holdSeen(seen2) {
|
|
2177
|
+
return { gen: seen2.gen, ino: seen2.ino, ...seen2.nofollow ? { nofollow: true } : {} };
|
|
2178
2178
|
}
|
|
2179
2179
|
function createSyncFsSabBridge(transport, opts = {}) {
|
|
2180
2180
|
const direct = opts.direct ? { direct: true } : {};
|
|
@@ -2324,8 +2324,8 @@ function createSyncFsSabBridge(transport, opts = {}) {
|
|
|
2324
2324
|
if (!r.ok || r.kind !== "json") return void 0;
|
|
2325
2325
|
const st = parseSyncFsStat(r.json);
|
|
2326
2326
|
if (!st) return void 0;
|
|
2327
|
-
const { seen } = r.json;
|
|
2328
|
-
return typeof
|
|
2327
|
+
const { seen: seen2 } = r.json;
|
|
2328
|
+
return typeof seen2 === "number" ? { ...st, seen: seen2 } : st;
|
|
2329
2329
|
},
|
|
2330
2330
|
chown: (path, uid, gid, follow3, handle) => {
|
|
2331
2331
|
const ids = { ...uid !== void 0 ? { uid } : {}, ...gid !== void 0 ? { gid } : {} };
|
|
@@ -2345,10 +2345,10 @@ function createSyncFsSabBridge(transport, opts = {}) {
|
|
|
2345
2345
|
access: (path, mode, kind = "access", nofollow) => {
|
|
2346
2346
|
run({ op: "access", path, mode, arg2: kind, ...nofollow ? { nofollow } : {} }, path);
|
|
2347
2347
|
},
|
|
2348
|
-
hold: (path, held2, open, handle, want = 0,
|
|
2348
|
+
hold: (path, held2, open, handle, want = 0, seen2 = {}) => {
|
|
2349
2349
|
const mode = (held2 ? 1 : 0) | (open ? 2 : 0);
|
|
2350
2350
|
if (mode === 3) {
|
|
2351
|
-
return json2({ op: "hold", path, mode: mode | want, ...holdSeen(
|
|
2351
|
+
return json2({ op: "hold", path, mode: mode | want, ...holdSeen(seen2) }, path);
|
|
2352
2352
|
}
|
|
2353
2353
|
run({ op: "hold", path, mode, ...handle !== void 0 ? { handle } : {} }, path);
|
|
2354
2354
|
return void 0;
|
|
@@ -2382,8 +2382,8 @@ var init_sync_sab_bridge = __esm({
|
|
|
2382
2382
|
});
|
|
2383
2383
|
|
|
2384
2384
|
// src/process/js/async-sab.ts
|
|
2385
|
-
async function changed(header, index3,
|
|
2386
|
-
const waited = waitAsync(header, index3,
|
|
2385
|
+
async function changed(header, index3, seen2, waitAsync = defaultWaitAsync) {
|
|
2386
|
+
const waited = waitAsync(header, index3, seen2);
|
|
2387
2387
|
if (waited.async) await waited.value;
|
|
2388
2388
|
}
|
|
2389
2389
|
function createAsyncSabTransport(sab, port3, waitAsync = defaultWaitAsync) {
|
|
@@ -2595,14 +2595,14 @@ var init_js_kernel = __esm({
|
|
|
2595
2595
|
}
|
|
2596
2596
|
async settled(id, signal) {
|
|
2597
2597
|
for (; ; ) {
|
|
2598
|
-
const
|
|
2598
|
+
const seen2 = capturedAtomics.load(this.header, SAB_I_ASYNC);
|
|
2599
2599
|
const taken = await this.raw({ op: "async-take", id });
|
|
2600
2600
|
if (taken.ok || taken.errno !== "EAGAIN") return taken;
|
|
2601
2601
|
if (signal?.aborted) {
|
|
2602
2602
|
await this.raw({ op: "async-cancel", id });
|
|
2603
2603
|
throw signal.reason;
|
|
2604
2604
|
}
|
|
2605
|
-
await untilAborted(changed(this.header, SAB_I_ASYNC,
|
|
2605
|
+
await untilAborted(changed(this.header, SAB_I_ASYNC, seen2, this.waitAsync), signal);
|
|
2606
2606
|
}
|
|
2607
2607
|
}
|
|
2608
2608
|
deliver() {
|
|
@@ -3390,14 +3390,14 @@ var init_wasi_cred = __esm({
|
|
|
3390
3390
|
return this.cred;
|
|
3391
3391
|
}
|
|
3392
3392
|
change(apply4) {
|
|
3393
|
-
const
|
|
3393
|
+
const seen2 = this.gen();
|
|
3394
3394
|
const cred = apply4();
|
|
3395
3395
|
if (!this.shared) {
|
|
3396
3396
|
this.cred = cred;
|
|
3397
3397
|
return cred;
|
|
3398
3398
|
}
|
|
3399
3399
|
const was = capturedAtomics.add(this.shared, CRED_GEN, 1);
|
|
3400
|
-
this.cred = was ===
|
|
3400
|
+
this.cred = was === seen2 ? cred : void 0;
|
|
3401
3401
|
this.stamp = was + 1;
|
|
3402
3402
|
return cred;
|
|
3403
3403
|
}
|
|
@@ -3423,9 +3423,9 @@ var init_wasi_cred = __esm({
|
|
|
3423
3423
|
return this.mask;
|
|
3424
3424
|
}
|
|
3425
3425
|
for (; ; ) {
|
|
3426
|
-
const
|
|
3427
|
-
if (
|
|
3428
|
-
else if (
|
|
3426
|
+
const seen2 = capturedAtomics.load(shared, UMASK);
|
|
3427
|
+
if (seen2 & LOCKED) capturedAtomics.wait(shared, UMASK, seen2);
|
|
3428
|
+
else if (seen2 & KNOWN) return seen2 & 511;
|
|
3429
3429
|
else {
|
|
3430
3430
|
const mask = this.call();
|
|
3431
3431
|
if (capturedAtomics.compareExchange(shared, UMASK, 0, mask | KNOWN) === 0) return mask;
|
|
@@ -3446,8 +3446,8 @@ var init_wasi_cred = __esm({
|
|
|
3446
3446
|
this.mask = mask & 511;
|
|
3447
3447
|
return old;
|
|
3448
3448
|
}
|
|
3449
|
-
const
|
|
3450
|
-
let next2 =
|
|
3449
|
+
const seen2 = this.lock(shared);
|
|
3450
|
+
let next2 = seen2;
|
|
3451
3451
|
try {
|
|
3452
3452
|
const old = this.call(mask);
|
|
3453
3453
|
next2 = mask & 511 | KNOWN;
|
|
@@ -3459,9 +3459,9 @@ var init_wasi_cred = __esm({
|
|
|
3459
3459
|
}
|
|
3460
3460
|
lock(shared) {
|
|
3461
3461
|
for (; ; ) {
|
|
3462
|
-
const
|
|
3463
|
-
if (
|
|
3464
|
-
else if (capturedAtomics.compareExchange(shared, UMASK,
|
|
3462
|
+
const seen2 = capturedAtomics.load(shared, UMASK);
|
|
3463
|
+
if (seen2 & LOCKED) capturedAtomics.wait(shared, UMASK, seen2);
|
|
3464
|
+
else if (capturedAtomics.compareExchange(shared, UMASK, seen2, seen2 | LOCKED) === seen2) return seen2;
|
|
3465
3465
|
}
|
|
3466
3466
|
}
|
|
3467
3467
|
};
|
|
@@ -3634,8 +3634,8 @@ var init_wasi_fds = __esm({
|
|
|
3634
3634
|
this.renamesSeen = now;
|
|
3635
3635
|
return false;
|
|
3636
3636
|
}
|
|
3637
|
-
const { now:
|
|
3638
|
-
this.renamesSeen =
|
|
3637
|
+
const { now: seen2, renames } = this.fs.renames(this.renamesSeen, held2);
|
|
3638
|
+
this.renamesSeen = seen2;
|
|
3639
3639
|
for (const [from, to] of renames) this.renamed(from, to, void 0, true);
|
|
3640
3640
|
return renames.length > 0;
|
|
3641
3641
|
}
|
|
@@ -4372,7 +4372,7 @@ var init_wasi_fds = __esm({
|
|
|
4372
4372
|
this.made = void 0;
|
|
4373
4373
|
const empty = made || (oflags & OFLAGS.TRUNC) !== 0;
|
|
4374
4374
|
if (existing?.ranged) this.fs.invalidate?.();
|
|
4375
|
-
const
|
|
4375
|
+
const seen2 = reply ? reply.seen : this.fs.changes?.now();
|
|
4376
4376
|
const st = reply?.st ?? (existing?.ranged || !existing ? this.fs.stat(path) : existing);
|
|
4377
4377
|
const ranged = st.ranged ? st.size : void 0;
|
|
4378
4378
|
const asked = (want & 4 ? HOLD_READ : 0) | (want & 2 ? HOLD_WRITE : 0) | (made ? HOLD_CREATED : 0);
|
|
@@ -4387,7 +4387,7 @@ var init_wasi_fds = __esm({
|
|
|
4387
4387
|
{
|
|
4388
4388
|
view,
|
|
4389
4389
|
ino: st.ino,
|
|
4390
|
-
seen,
|
|
4390
|
+
seen: seen2,
|
|
4391
4391
|
stat: (at) => {
|
|
4392
4392
|
this.fs.invalidate?.();
|
|
4393
4393
|
return this.fs.stat(at);
|
|
@@ -4825,7 +4825,7 @@ var init_wasi_sigmask = __esm({
|
|
|
4825
4825
|
publish(set);
|
|
4826
4826
|
try {
|
|
4827
4827
|
for (; ; ) {
|
|
4828
|
-
const
|
|
4828
|
+
const seen2 = capturedAtomics.load(this.header, SAB_I_SIGNALS);
|
|
4829
4829
|
const sig = this.take(set);
|
|
4830
4830
|
if (sig !== 0) {
|
|
4831
4831
|
took(sig);
|
|
@@ -4834,7 +4834,7 @@ var init_wasi_sigmask = __esm({
|
|
|
4834
4834
|
if (entered || this.deliverUnblocked() || this.interrupted()) return E.INTR;
|
|
4835
4835
|
const left = deadline - capturedperformance.now();
|
|
4836
4836
|
if (left <= 0) return E.AGAIN;
|
|
4837
|
-
capturedAtomics.wait(this.header, SAB_I_SIGNALS,
|
|
4837
|
+
capturedAtomics.wait(this.header, SAB_I_SIGNALS, seen2, capturedMath.min(left, POLL_MS));
|
|
4838
4838
|
}
|
|
4839
4839
|
} finally {
|
|
4840
4840
|
publish(0);
|
|
@@ -7365,7 +7365,7 @@ var init_version = __esm({
|
|
|
7365
7365
|
"src/version.ts"() {
|
|
7366
7366
|
"use strict";
|
|
7367
7367
|
init_captured_globals();
|
|
7368
|
-
KERNEL_VERSION = true ? "1.164.
|
|
7368
|
+
KERNEL_VERSION = true ? "1.164.2" : "0.0.0-dev";
|
|
7369
7369
|
OS_RELEASE = "6.0.0-slicc";
|
|
7370
7370
|
}
|
|
7371
7371
|
});
|
|
@@ -8835,10 +8835,10 @@ function loadedWatch(bridge, call3, path, st) {
|
|
|
8835
8835
|
return view && linkedWatch({ view, stat: () => call3(() => bridge.stat(path())) }, st);
|
|
8836
8836
|
}
|
|
8837
8837
|
function rangedFileOf(bridge, call3, path, io) {
|
|
8838
|
-
const
|
|
8838
|
+
const seen2 = bridge.changes?.now();
|
|
8839
8839
|
const stat = () => call3(() => bridge.stat(path()));
|
|
8840
8840
|
const st = stat();
|
|
8841
|
-
const watch = bridge.changes && linkedWatch({ view: bridge.changes, ino: st.ino, seen, stat }, st);
|
|
8841
|
+
const watch = bridge.changes && linkedWatch({ view: bridge.changes, ino: st.ino, seen: seen2, stat }, st);
|
|
8842
8842
|
return new RangedFile(io, path(), st.size, st.version, watch);
|
|
8843
8843
|
}
|
|
8844
8844
|
function unlessIo(op) {
|
|
@@ -9001,18 +9001,18 @@ function relinked(Fs, moving, to) {
|
|
|
9001
9001
|
}
|
|
9002
9002
|
function renameFollower(Fs, bridgeOf, call3) {
|
|
9003
9003
|
const open = new capturedSet();
|
|
9004
|
-
const
|
|
9004
|
+
const seen2 = new capturedMap();
|
|
9005
9005
|
const follow3 = (node, missing2 = false) => {
|
|
9006
9006
|
const bridge = bridgeOf(node);
|
|
9007
9007
|
const view = bridge.changes;
|
|
9008
|
-
const since =
|
|
9008
|
+
const since = seen2.get(bridge);
|
|
9009
9009
|
let now = view?.renames() ?? 0;
|
|
9010
9010
|
if (missing2 && view && now === since) now = view.awaitRename(now, RENAME_WAIT_MS);
|
|
9011
9011
|
const ask = bridge.renames?.bind(bridge);
|
|
9012
9012
|
if (since === void 0 || now === since || !ask) return false;
|
|
9013
9013
|
const held2 = [...open].filter((n) => !n.live.orphan && bridgeOf(n) === bridge);
|
|
9014
9014
|
if (held2.length === 0) {
|
|
9015
|
-
|
|
9015
|
+
seen2.set(bridge, now);
|
|
9016
9016
|
return false;
|
|
9017
9017
|
}
|
|
9018
9018
|
const reply = call3(
|
|
@@ -9021,7 +9021,7 @@ function renameFollower(Fs, bridgeOf, call3) {
|
|
|
9021
9021
|
held2.map((n) => liveNodePath(n))
|
|
9022
9022
|
)
|
|
9023
9023
|
);
|
|
9024
|
-
|
|
9024
|
+
seen2.set(bridge, reply.now);
|
|
9025
9025
|
for (const [from, to] of reply.renames) {
|
|
9026
9026
|
for (const n of held2) {
|
|
9027
9027
|
const moving = heldUnder(n, from);
|
|
@@ -9043,12 +9043,12 @@ function renameFollower(Fs, bridgeOf, call3) {
|
|
|
9043
9043
|
open.add(node);
|
|
9044
9044
|
},
|
|
9045
9045
|
watchRenames(bridge) {
|
|
9046
|
-
if (!
|
|
9046
|
+
if (!seen2.has(bridge)) seen2.set(bridge, bridge.changes?.renames() ?? 0);
|
|
9047
9047
|
},
|
|
9048
9048
|
ownRename(bridge, seq) {
|
|
9049
|
-
const since =
|
|
9049
|
+
const since = seen2.get(bridge);
|
|
9050
9050
|
if (seq !== void 0 && since !== void 0 && seq === (since + 1 | 0))
|
|
9051
|
-
|
|
9051
|
+
seen2.set(bridge, seq);
|
|
9052
9052
|
}
|
|
9053
9053
|
};
|
|
9054
9054
|
}
|
|
@@ -9500,8 +9500,8 @@ function appendThrough(h, stream, bytes) {
|
|
|
9500
9500
|
}
|
|
9501
9501
|
function holdLive(bridge, node, on, want) {
|
|
9502
9502
|
const s = node.live;
|
|
9503
|
-
const
|
|
9504
|
-
return bridge.hold?.(liveNodePath(node), on, true, s.handle, want,
|
|
9503
|
+
const seen2 = on && s.stat ? { gen: s.stat.gen, ...s.stat.ino !== void 0 ? { ino: s.stat.ino } : {} } : void 0;
|
|
9504
|
+
return bridge.hold?.(liveNodePath(node), on, true, s.handle, want, seen2);
|
|
9505
9505
|
}
|
|
9506
9506
|
function dropOpen(s) {
|
|
9507
9507
|
if (s.openCount === 0) return false;
|
|
@@ -10437,10 +10437,10 @@ function syscallOf(glue, name2, value2) {
|
|
|
10437
10437
|
function wrapCloexecSyscalls(imports, glue, deps) {
|
|
10438
10438
|
if (!glue) return;
|
|
10439
10439
|
const factories = wrapperFactories(deps);
|
|
10440
|
-
const
|
|
10440
|
+
const seen2 = new capturedSet();
|
|
10441
10441
|
for (const namespace of capturedObject.values(imports)) {
|
|
10442
|
-
if (!namespace || typeof namespace !== "object" ||
|
|
10443
|
-
|
|
10442
|
+
if (!namespace || typeof namespace !== "object" || seen2.has(namespace)) continue;
|
|
10443
|
+
seen2.add(namespace);
|
|
10444
10444
|
for (const [name2, value2] of capturedObject.entries(namespace)) {
|
|
10445
10445
|
const key = syscallOf(glue, name2, value2);
|
|
10446
10446
|
const wrap2 = key && factories[key];
|
|
@@ -10558,11 +10558,11 @@ function persistsItself(stream) {
|
|
|
10558
10558
|
return typeof type?.syncfs === "function";
|
|
10559
10559
|
}
|
|
10560
10560
|
function namespaces(imports) {
|
|
10561
|
-
const
|
|
10561
|
+
const seen2 = new capturedSet();
|
|
10562
10562
|
for (const namespace of capturedObject.values(imports)) {
|
|
10563
|
-
if (namespace && typeof namespace === "object")
|
|
10563
|
+
if (namespace && typeof namespace === "object") seen2.add(namespace);
|
|
10564
10564
|
}
|
|
10565
|
-
return [...
|
|
10565
|
+
return [...seen2];
|
|
10566
10566
|
}
|
|
10567
10567
|
function keyOf(namespace, name2, glue) {
|
|
10568
10568
|
const own2 = glue?.[name2];
|
|
@@ -11755,13 +11755,13 @@ function frozen(bytes) {
|
|
|
11755
11755
|
}
|
|
11756
11756
|
function physicalProc(fs, now = () => capturedperformance.now()) {
|
|
11757
11757
|
const view = fs.changes;
|
|
11758
|
-
let
|
|
11758
|
+
let seen2;
|
|
11759
11759
|
return () => {
|
|
11760
|
-
if (
|
|
11761
|
-
const proc = view.changedSince(
|
|
11762
|
-
if (!proc.changed && !view.changedSince(
|
|
11763
|
-
|
|
11764
|
-
return
|
|
11760
|
+
if (seen2 && view && (!view.foreign() || now() - seen2.at < SHARED_TTL_MS)) {
|
|
11761
|
+
const proc = view.changedSince(seen2.gen, "/proc");
|
|
11762
|
+
if (!proc.changed && !view.changedSince(seen2.gen, "/").changed) {
|
|
11763
|
+
seen2.gen = proc.now;
|
|
11764
|
+
return seen2.physical;
|
|
11765
11765
|
}
|
|
11766
11766
|
}
|
|
11767
11767
|
const gen = view?.now();
|
|
@@ -11773,12 +11773,12 @@ function physicalProc(fs, now = () => capturedperformance.now()) {
|
|
|
11773
11773
|
} catch (err) {
|
|
11774
11774
|
const code2 = err.code;
|
|
11775
11775
|
if (code2 !== "ENOENT" && code2 !== "ENOTDIR") {
|
|
11776
|
-
|
|
11776
|
+
seen2 = void 0;
|
|
11777
11777
|
return false;
|
|
11778
11778
|
}
|
|
11779
11779
|
physical2 = false;
|
|
11780
11780
|
}
|
|
11781
|
-
|
|
11781
|
+
seen2 = gen === void 0 ? void 0 : { gen, physical: physical2, at };
|
|
11782
11782
|
return physical2;
|
|
11783
11783
|
};
|
|
11784
11784
|
}
|
|
@@ -11946,10 +11946,10 @@ function procfsBridge(fs, tree) {
|
|
|
11946
11946
|
],
|
|
11947
11947
|
() => fs.link(from, to, follow3)
|
|
11948
11948
|
),
|
|
11949
|
-
hold: (p, held2, open, handle, want,
|
|
11949
|
+
hold: (p, held2, open, handle, want, seen2) => {
|
|
11950
11950
|
if (handle !== void 0 && snapshots.delete(handle)) return void 0;
|
|
11951
11951
|
if (!held2) return fs.hold?.(p, held2, open, handle);
|
|
11952
|
-
return via(p, snapshot2, () => fs.hold?.(p, held2, open, void 0, want,
|
|
11952
|
+
return via(p, snapshot2, () => fs.hold?.(p, held2, open, void 0, want, seen2) ?? late(p));
|
|
11953
11953
|
},
|
|
11954
11954
|
kept: (handle) => snapshots.has(handle) || fs.kept?.(handle) === true,
|
|
11955
11955
|
escape: (p) => inProc(p) ? current(fs, tree, p) : void 0,
|
|
@@ -14033,12 +14033,12 @@ function restarted2(issue) {
|
|
|
14033
14033
|
}
|
|
14034
14034
|
function forkRestarted(deps, state, snapshotAt) {
|
|
14035
14035
|
let memory = state.memory;
|
|
14036
|
-
let
|
|
14036
|
+
let seen2 = snapshotAt;
|
|
14037
14037
|
return restarted2(() => {
|
|
14038
14038
|
const streams2 = deps.describeFork();
|
|
14039
14039
|
const now = deps.deliveries?.();
|
|
14040
|
-
if (now !==
|
|
14041
|
-
|
|
14040
|
+
if (now !== seen2) {
|
|
14041
|
+
seen2 = now;
|
|
14042
14042
|
const live = deps.memory?.();
|
|
14043
14043
|
if (live) memory = new capturedUint8Array(live.buffer).slice();
|
|
14044
14044
|
}
|
|
@@ -18236,13 +18236,13 @@ var init_wasix_linker = __esm({
|
|
|
18236
18236
|
}
|
|
18237
18237
|
return void 0;
|
|
18238
18238
|
}
|
|
18239
|
-
findIn(m, name2,
|
|
18240
|
-
if (
|
|
18241
|
-
|
|
18239
|
+
findIn(m, name2, seen2) {
|
|
18240
|
+
if (seen2.has(m.handle)) return void 0;
|
|
18241
|
+
seen2.add(m.handle);
|
|
18242
18242
|
const v = m.instance.exports[name2];
|
|
18243
18243
|
if (v !== void 0) return [m.handle, v];
|
|
18244
18244
|
for (const h of m.needed) {
|
|
18245
|
-
const found2 = this.findIn(this.module(h), name2,
|
|
18245
|
+
const found2 = this.findIn(this.module(h), name2, seen2);
|
|
18246
18246
|
if (found2) return found2;
|
|
18247
18247
|
}
|
|
18248
18248
|
return void 0;
|
|
@@ -19739,11 +19739,20 @@ function keptFrames(trace) {
|
|
|
19739
19739
|
}
|
|
19740
19740
|
var formatter = null;
|
|
19741
19741
|
var formatting = false;
|
|
19742
|
-
var
|
|
19743
|
-
function
|
|
19742
|
+
var seen = new capturedWeakMap();
|
|
19743
|
+
function positionsAt(positions, error, site) {
|
|
19744
|
+
if (positions === void 0 || !keptFrame(site)) return void 0;
|
|
19745
|
+
try {
|
|
19746
|
+
return positions(error);
|
|
19747
|
+
} catch {
|
|
19748
|
+
return void 0;
|
|
19749
|
+
}
|
|
19750
|
+
}
|
|
19751
|
+
function stackDispatcher(fallback, positions) {
|
|
19744
19752
|
return (error, trace) => {
|
|
19745
19753
|
if (typeof error === "object" && error !== null && trace.length > 0) {
|
|
19746
|
-
|
|
19754
|
+
const site = trace[0];
|
|
19755
|
+
apply(mapSet, seen, [error, { site, at: positionsAt(positions, error, site) }]);
|
|
19747
19756
|
}
|
|
19748
19757
|
const fn = formatter;
|
|
19749
19758
|
if (fn === null || formatting) return apply(fallback, void 0, [error, trace]);
|
|
@@ -19759,7 +19768,7 @@ function stackDispatcher(fallback) {
|
|
|
19759
19768
|
};
|
|
19760
19769
|
}
|
|
19761
19770
|
var found = internals();
|
|
19762
|
-
if (found) found.setInternalPrepareStackTrace(stackDispatcher(found.fallback));
|
|
19771
|
+
if (found) found.setInternalPrepareStackTrace(stackDispatcher(found.fallback, found.positions));
|
|
19763
19772
|
var nodeStackFormatter = found ? (fn) => {
|
|
19764
19773
|
if (fn !== null && typeof fn !== "function") {
|
|
19765
19774
|
throw new capturedTypeError("setStackFormatter needs a function or null");
|
|
@@ -19768,16 +19777,16 @@ var nodeStackFormatter = found ? (fn) => {
|
|
|
19768
19777
|
formatter = fn;
|
|
19769
19778
|
return previous;
|
|
19770
19779
|
} : void 0;
|
|
19771
|
-
function errorSourceOf(
|
|
19780
|
+
function errorSourceOf(error) {
|
|
19772
19781
|
if (typeof error !== "object" || error === null || !isNativeError(error)) return void 0;
|
|
19773
19782
|
try {
|
|
19774
19783
|
void error.stack;
|
|
19775
19784
|
} catch {
|
|
19776
19785
|
return void 0;
|
|
19777
19786
|
}
|
|
19778
|
-
const
|
|
19779
|
-
if (
|
|
19780
|
-
const at =
|
|
19787
|
+
const got = apply(mapGet, seen, [error]);
|
|
19788
|
+
if (got === void 0 || !keptFrame(got.site)) return void 0;
|
|
19789
|
+
const { site, at } = got;
|
|
19781
19790
|
if (!at || typeof at.sourceLine !== "string" || typeof at.lineNumber !== "number")
|
|
19782
19791
|
return void 0;
|
|
19783
19792
|
if (apply(setHas, ownNames, [at.scriptResourceName]) === true) return void 0;
|
|
@@ -19789,8 +19798,7 @@ function errorSourceOf(positions2, error) {
|
|
|
19789
19798
|
out.startColumn = typeof at.startColumn === "number" ? at.startColumn : 0;
|
|
19790
19799
|
return freeze(out);
|
|
19791
19800
|
}
|
|
19792
|
-
var
|
|
19793
|
-
var nodeErrorSource = positions ? (error) => errorSourceOf(positions, error) : void 0;
|
|
19801
|
+
var nodeErrorSource = found?.positions ? errorSourceOf : void 0;
|
|
19794
19802
|
|
|
19795
19803
|
// src/node-lockdown.ts
|
|
19796
19804
|
init_lockdown();
|