@volter/tabnode 0.2.14-volter.88 → 0.3.1
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 +12 -5
- package/dist/assets/{runtime-worker-4MKaHFVb.js → runtime-worker-CUO9SNFs.js} +587 -233
- package/dist/code-transforms.d.ts +0 -1
- package/dist/config/cdn.d.ts +0 -1
- package/dist/create-runtime.d.ts +0 -1
- package/dist/host-globals.d.ts +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.mjs +51 -21
- package/dist/node-internals.d.ts +0 -1
- package/dist/node-lib/binding/blob.d.ts +0 -1
- package/dist/node-lib/binding/buffer.d.ts +0 -1
- package/dist/node-lib/binding/cares_wrap.d.ts +0 -1
- package/dist/node-lib/binding/fds.d.ts +0 -1
- package/dist/node-lib/binding/fs.d.ts +2 -3
- package/dist/node-lib/binding/handles.d.ts +0 -1
- package/dist/node-lib/binding/http_parser.d.ts +0 -1
- package/dist/node-lib/binding/index.d.ts +0 -1
- package/dist/node-lib/binding/llhttp-wasm.d.ts +0 -1
- package/dist/node-lib/binding/misc.d.ts +0 -1
- package/dist/node-lib/binding/pipe_wrap.d.ts +0 -1
- package/dist/node-lib/binding/process_wrap.d.ts +0 -1
- package/dist/node-lib/binding/spawn_sync.d.ts +0 -1
- package/dist/node-lib/binding/stream_wrap.d.ts +0 -1
- package/dist/node-lib/binding/stubs.d.ts +0 -1
- package/dist/node-lib/binding/tcp_wrap.d.ts +0 -1
- package/dist/node-lib/binding/tty_wrap.d.ts +0 -1
- package/dist/node-lib/binding/util.d.ts +0 -1
- package/dist/node-lib/binding/uv.d.ts +0 -1
- package/dist/node-lib/binding/zlib-pako.d.ts +0 -1
- package/dist/node-lib/binding/zlib.d.ts +0 -1
- package/dist/node-lib/buffer-module.d.ts +0 -1
- package/dist/node-lib/child-process-module.d.ts +0 -1
- package/dist/node-lib/events-module.d.ts +0 -1
- package/dist/node-lib/fs-module.d.ts +0 -1
- package/dist/node-lib/http-bridge.d.ts +0 -1
- package/dist/node-lib/http-module.d.ts +0 -1
- package/dist/node-lib/internals/addresses.d.ts +0 -1
- package/dist/node-lib/internals/buffer-and-streams.d.ts +0 -1
- package/dist/node-lib/internals/child-process.d.ts +0 -1
- package/dist/node-lib/internals/events-util.d.ts +0 -1
- package/dist/node-lib/internals/index.d.ts +0 -1
- package/dist/node-lib/internals/modules.d.ts +0 -1
- package/dist/node-lib/internals/readline-access.d.ts +0 -1
- package/dist/node-lib/internals/runtime.d.ts +0 -1
- package/dist/node-lib/internals/util.d.ts +0 -1
- package/dist/node-lib/lazy.d.ts +0 -1
- package/dist/node-lib/load.d.ts +0 -1
- package/dist/node-lib/module-hooks.d.ts +0 -1
- package/dist/node-lib/net-module.d.ts +0 -1
- package/dist/node-lib/node-versions.d.ts +0 -1
- package/dist/node-lib/public-modules.d.ts +0 -1
- package/dist/node-lib/require-hook.d.ts +0 -1
- package/dist/node-lib/small-modules.d.ts +0 -1
- package/dist/node-lib/sources.d.ts +1 -2
- package/dist/node-lib/stream-module.d.ts +0 -1
- package/dist/node-lib/timers.d.ts +0 -1
- package/dist/node-lib/util-module.d.ts +0 -1
- package/dist/node-resolution.d.ts +0 -1
- package/dist/node-resolver.d.ts +0 -1
- package/dist/npm/index.d.ts +0 -1
- package/dist/npm/registry.d.ts +0 -1
- package/dist/npm/resolver.d.ts +0 -1
- package/dist/npm/tarball.d.ts +0 -1
- package/dist/process-tokens.d.ts +0 -1
- package/dist/punycode-source.d.ts +0 -1
- package/dist/runtime-interface.d.ts +0 -1
- package/dist/runtime.d.ts +0 -1
- package/dist/server-bridge.d.ts +0 -1
- package/dist/shims/async_hooks.d.ts +0 -1
- package/dist/shims/child_process.d.ts +0 -1
- package/dist/shims/cluster.d.ts +0 -1
- package/dist/shims/command-line.d.ts +0 -1
- package/dist/shims/constants.d.ts +0 -1
- package/dist/shims/crypto-constants.d.ts +0 -1
- package/dist/shims/crypto.d.ts +0 -1
- package/dist/shims/dgram.d.ts +0 -1
- package/dist/shims/dns.d.ts +0 -1
- package/dist/shims/domain.d.ts +0 -1
- package/dist/shims/esbuild.d.ts +0 -1
- package/dist/shims/fs.d.ts +0 -1
- package/dist/shims/http2.d.ts +0 -1
- package/dist/shims/inspector.d.ts +0 -1
- package/dist/shims/module.d.ts +0 -1
- package/dist/shims/os.d.ts +0 -1
- package/dist/shims/path.d.ts +0 -1
- package/dist/shims/perf_hooks.d.ts +0 -1
- package/dist/shims/process.d.ts +0 -1
- package/dist/shims/rollup.d.ts +0 -1
- package/dist/shims/string_decoder.d.ts +0 -1
- package/dist/shims/sync-child.d.ts +0 -1
- package/dist/shims/tls.d.ts +0 -1
- package/dist/shims/url.d.ts +0 -1
- package/dist/shims/v8.d.ts +0 -1
- package/dist/shims/vfs-adapter.d.ts +0 -1
- package/dist/shims/vm.d.ts +0 -1
- package/dist/shims/wasi.d.ts +0 -1
- package/dist/shims/worker_threads.d.ts +0 -1
- package/dist/shims/zlib-constants.d.ts +0 -1
- package/dist/shims/zlib.d.ts +0 -1
- package/dist/transform.d.ts +0 -1
- package/dist/types/package-json.d.ts +0 -1
- package/dist/utils/binary-encoding.d.ts +0 -1
- package/dist/utils/glob.d.ts +0 -1
- package/dist/utils/hash.d.ts +0 -1
- package/dist/virtual-fs.d.ts +0 -1
- package/dist/vite-plugin.d.ts +0 -1
- package/dist/vite-plugin.mjs +0 -1
- package/dist/worker/runtime-worker.d.ts +0 -1
- package/dist/worker-runtime.d.ts +0 -1
- package/package.json +11 -24
- package/src/node-lib/binding/fs.ts +25 -13
- package/src/node-lib/binding/zlib.ts +1 -1
- package/src/node-lib/sources.ts +1 -1
- package/src/virtual-fs.ts +13 -2
- package/dist/assets/runtime-worker-4MKaHFVb.js.map +0 -1
- package/dist/code-transforms.d.ts.map +0 -1
- package/dist/config/cdn.d.ts.map +0 -1
- package/dist/create-runtime.d.ts.map +0 -1
- package/dist/host-globals.d.ts.map +0 -1
- package/dist/index.cjs +0 -36021
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/node-internals.d.ts.map +0 -1
- package/dist/node-lib/binding/blob.d.ts.map +0 -1
- package/dist/node-lib/binding/buffer.d.ts.map +0 -1
- package/dist/node-lib/binding/cares_wrap.d.ts.map +0 -1
- package/dist/node-lib/binding/fds.d.ts.map +0 -1
- package/dist/node-lib/binding/fs.d.ts.map +0 -1
- package/dist/node-lib/binding/handles.d.ts.map +0 -1
- package/dist/node-lib/binding/http_parser.d.ts.map +0 -1
- package/dist/node-lib/binding/index.d.ts.map +0 -1
- package/dist/node-lib/binding/llhttp-wasm.d.ts.map +0 -1
- package/dist/node-lib/binding/misc.d.ts.map +0 -1
- package/dist/node-lib/binding/pipe_wrap.d.ts.map +0 -1
- package/dist/node-lib/binding/process_wrap.d.ts.map +0 -1
- package/dist/node-lib/binding/spawn_sync.d.ts.map +0 -1
- package/dist/node-lib/binding/stream_wrap.d.ts.map +0 -1
- package/dist/node-lib/binding/stubs.d.ts.map +0 -1
- package/dist/node-lib/binding/tcp_wrap.d.ts.map +0 -1
- package/dist/node-lib/binding/tty_wrap.d.ts.map +0 -1
- package/dist/node-lib/binding/util.d.ts.map +0 -1
- package/dist/node-lib/binding/uv.d.ts.map +0 -1
- package/dist/node-lib/binding/zlib-pako.d.ts.map +0 -1
- package/dist/node-lib/binding/zlib.d.ts.map +0 -1
- package/dist/node-lib/buffer-module.d.ts.map +0 -1
- package/dist/node-lib/child-process-module.d.ts.map +0 -1
- package/dist/node-lib/events-module.d.ts.map +0 -1
- package/dist/node-lib/fs-module.d.ts.map +0 -1
- package/dist/node-lib/http-bridge.d.ts.map +0 -1
- package/dist/node-lib/http-module.d.ts.map +0 -1
- package/dist/node-lib/internals/addresses.d.ts.map +0 -1
- package/dist/node-lib/internals/buffer-and-streams.d.ts.map +0 -1
- package/dist/node-lib/internals/child-process.d.ts.map +0 -1
- package/dist/node-lib/internals/events-util.d.ts.map +0 -1
- package/dist/node-lib/internals/index.d.ts.map +0 -1
- package/dist/node-lib/internals/modules.d.ts.map +0 -1
- package/dist/node-lib/internals/readline-access.d.ts.map +0 -1
- package/dist/node-lib/internals/runtime.d.ts.map +0 -1
- package/dist/node-lib/internals/util.d.ts.map +0 -1
- package/dist/node-lib/lazy.d.ts.map +0 -1
- package/dist/node-lib/load.d.ts.map +0 -1
- package/dist/node-lib/module-hooks.d.ts.map +0 -1
- package/dist/node-lib/net-module.d.ts.map +0 -1
- package/dist/node-lib/node-versions.d.ts.map +0 -1
- package/dist/node-lib/public-modules.d.ts.map +0 -1
- package/dist/node-lib/require-hook.d.ts.map +0 -1
- package/dist/node-lib/small-modules.d.ts.map +0 -1
- package/dist/node-lib/sources.d.ts.map +0 -1
- package/dist/node-lib/stream-module.d.ts.map +0 -1
- package/dist/node-lib/timers.d.ts.map +0 -1
- package/dist/node-lib/util-module.d.ts.map +0 -1
- package/dist/node-resolution.d.ts.map +0 -1
- package/dist/node-resolver.d.ts.map +0 -1
- package/dist/npm/index.d.ts.map +0 -1
- package/dist/npm/registry.d.ts.map +0 -1
- package/dist/npm/resolver.d.ts.map +0 -1
- package/dist/npm/tarball.d.ts.map +0 -1
- package/dist/process-tokens.d.ts.map +0 -1
- package/dist/punycode-source.d.ts.map +0 -1
- package/dist/runtime-interface.d.ts.map +0 -1
- package/dist/runtime.d.ts.map +0 -1
- package/dist/server-bridge.d.ts.map +0 -1
- package/dist/shims/async_hooks.d.ts.map +0 -1
- package/dist/shims/child_process.d.ts.map +0 -1
- package/dist/shims/cluster.d.ts.map +0 -1
- package/dist/shims/command-line.d.ts.map +0 -1
- package/dist/shims/constants.d.ts.map +0 -1
- package/dist/shims/crypto-constants.d.ts.map +0 -1
- package/dist/shims/crypto.d.ts.map +0 -1
- package/dist/shims/dgram.d.ts.map +0 -1
- package/dist/shims/dns.d.ts.map +0 -1
- package/dist/shims/domain.d.ts.map +0 -1
- package/dist/shims/esbuild.d.ts.map +0 -1
- package/dist/shims/fs.d.ts.map +0 -1
- package/dist/shims/http2.d.ts.map +0 -1
- package/dist/shims/inspector.d.ts.map +0 -1
- package/dist/shims/module.d.ts.map +0 -1
- package/dist/shims/os.d.ts.map +0 -1
- package/dist/shims/path.d.ts.map +0 -1
- package/dist/shims/perf_hooks.d.ts.map +0 -1
- package/dist/shims/process.d.ts.map +0 -1
- package/dist/shims/rollup.d.ts.map +0 -1
- package/dist/shims/string_decoder.d.ts.map +0 -1
- package/dist/shims/sync-child.d.ts.map +0 -1
- package/dist/shims/tls.d.ts.map +0 -1
- package/dist/shims/url.d.ts.map +0 -1
- package/dist/shims/v8.d.ts.map +0 -1
- package/dist/shims/vfs-adapter.d.ts.map +0 -1
- package/dist/shims/vm.d.ts.map +0 -1
- package/dist/shims/wasi.d.ts.map +0 -1
- package/dist/shims/worker_threads.d.ts.map +0 -1
- package/dist/shims/zlib-constants.d.ts.map +0 -1
- package/dist/shims/zlib.d.ts.map +0 -1
- package/dist/transform.d.ts.map +0 -1
- package/dist/types/package-json.d.ts.map +0 -1
- package/dist/utils/binary-encoding.d.ts.map +0 -1
- package/dist/utils/glob.d.ts.map +0 -1
- package/dist/utils/hash.d.ts.map +0 -1
- package/dist/virtual-fs.d.ts.map +0 -1
- package/dist/vite-plugin.cjs +0 -50
- package/dist/vite-plugin.cjs.map +0 -1
- package/dist/vite-plugin.d.ts.map +0 -1
- package/dist/vite-plugin.mjs.map +0 -1
- package/dist/worker/runtime-worker.d.ts.map +0 -1
- package/dist/worker-runtime.d.ts.map +0 -1
package/dist/runtime.d.ts
CHANGED
package/dist/server-bridge.d.ts
CHANGED
package/dist/shims/cluster.d.ts
CHANGED
|
@@ -40,4 +40,3 @@ export declare function setProgramResolver(resolve: (file: string, cwd?: string)
|
|
|
40
40
|
* program and its words, each quoted.
|
|
41
41
|
*/
|
|
42
42
|
export declare function __substrateLineFor(file: string, argv: string[], cwd?: string): string;
|
|
43
|
-
//# sourceMappingURL=command-line.d.ts.map
|
package/dist/shims/crypto.d.ts
CHANGED
package/dist/shims/dgram.d.ts
CHANGED
package/dist/shims/dns.d.ts
CHANGED
package/dist/shims/domain.d.ts
CHANGED
package/dist/shims/esbuild.d.ts
CHANGED
package/dist/shims/fs.d.ts
CHANGED
package/dist/shims/http2.d.ts
CHANGED
package/dist/shims/module.d.ts
CHANGED
package/dist/shims/os.d.ts
CHANGED
package/dist/shims/path.d.ts
CHANGED
|
@@ -49,4 +49,3 @@ export declare const format: (pathObject: FormatInputPathObject) => string;
|
|
|
49
49
|
export declare const toNamespacedPath: <T>(path: T) => T;
|
|
50
50
|
export declare const matchesGlob: (path: string, pattern: string) => boolean;
|
|
51
51
|
export default nodePath;
|
|
52
|
-
//# sourceMappingURL=path.d.ts.map
|
package/dist/shims/process.d.ts
CHANGED
package/dist/shims/rollup.d.ts
CHANGED
package/dist/shims/tls.d.ts
CHANGED
package/dist/shims/url.d.ts
CHANGED
package/dist/shims/v8.d.ts
CHANGED
package/dist/shims/vm.d.ts
CHANGED
package/dist/shims/wasi.d.ts
CHANGED
package/dist/shims/zlib.d.ts
CHANGED
package/dist/transform.d.ts
CHANGED
|
@@ -21,4 +21,3 @@ export declare function transformFile(code: string, filename: string): Promise<s
|
|
|
21
21
|
* Transform all ESM files in a package directory to CJS
|
|
22
22
|
*/
|
|
23
23
|
export declare function transformPackage(vfs: VirtualFS, pkgPath: string, onProgress?: (msg: string) => void): Promise<number>;
|
|
24
|
-
//# sourceMappingURL=transform.d.ts.map
|
|
@@ -10,4 +10,3 @@ export declare function base64ToUint8(base64: string): Uint8Array;
|
|
|
10
10
|
export declare function uint8ToHex(bytes: Uint8Array): string;
|
|
11
11
|
/** Convert Uint8Array to binary (latin1) string */
|
|
12
12
|
export declare function uint8ToBinaryString(bytes: Uint8Array): string;
|
|
13
|
-
//# sourceMappingURL=binary-encoding.d.ts.map
|
package/dist/utils/glob.d.ts
CHANGED
package/dist/utils/hash.d.ts
CHANGED
package/dist/virtual-fs.d.ts
CHANGED
package/dist/vite-plugin.d.ts
CHANGED
package/dist/vite-plugin.mjs
CHANGED
package/dist/worker-runtime.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volter/tabnode",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Node's own library, in a browser tab.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
],
|
|
15
15
|
"repository": {
|
|
16
16
|
"type": "git",
|
|
17
|
-
"url": "https://github.com/volter-ai/tabnode.git"
|
|
17
|
+
"url": "git+https://github.com/volter-ai/tabnode.git"
|
|
18
18
|
},
|
|
19
19
|
"homepage": "https://github.com/volter-ai/tabnode#readme",
|
|
20
20
|
"bugs": {
|
|
@@ -22,31 +22,17 @@
|
|
|
22
22
|
},
|
|
23
23
|
"author": "Aaron <aaron@volter.ai>",
|
|
24
24
|
"engines": {
|
|
25
|
-
"node": ">=20.
|
|
25
|
+
"node": ">=20.19.0"
|
|
26
26
|
},
|
|
27
|
-
"main": "./dist/index.cjs",
|
|
28
|
-
"module": "./dist/index.mjs",
|
|
29
27
|
"types": "./dist/index.d.ts",
|
|
30
28
|
"exports": {
|
|
31
29
|
".": {
|
|
32
|
-
"
|
|
33
|
-
|
|
34
|
-
"default": "./dist/index.mjs"
|
|
35
|
-
},
|
|
36
|
-
"require": {
|
|
37
|
-
"types": "./dist/index.d.ts",
|
|
38
|
-
"default": "./dist/index.cjs"
|
|
39
|
-
}
|
|
30
|
+
"types": "./dist/index.d.ts",
|
|
31
|
+
"default": "./dist/index.mjs"
|
|
40
32
|
},
|
|
41
33
|
"./vite": {
|
|
42
|
-
"
|
|
43
|
-
|
|
44
|
-
"default": "./dist/vite-plugin.mjs"
|
|
45
|
-
},
|
|
46
|
-
"require": {
|
|
47
|
-
"types": "./dist/vite-plugin.d.ts",
|
|
48
|
-
"default": "./dist/vite-plugin.cjs"
|
|
49
|
-
}
|
|
34
|
+
"types": "./dist/vite-plugin.d.ts",
|
|
35
|
+
"default": "./dist/vite-plugin.mjs"
|
|
50
36
|
}
|
|
51
37
|
},
|
|
52
38
|
"files": [
|
|
@@ -59,9 +45,8 @@
|
|
|
59
45
|
"access": "public"
|
|
60
46
|
},
|
|
61
47
|
"scripts": {
|
|
62
|
-
"build:lib": "vite build --config vite.lib.config.js &&
|
|
63
|
-
"
|
|
64
|
-
"build:publish": "npm run build:lib && npm run build:types",
|
|
48
|
+
"build:lib": "vite build --config vite.lib.config.js && tsc -p tsconfig.build.json",
|
|
49
|
+
"docs:api": "typedoc",
|
|
65
50
|
"test": "vitest run",
|
|
66
51
|
"type-check": "tsc --noEmit"
|
|
67
52
|
},
|
|
@@ -81,6 +66,8 @@
|
|
|
81
66
|
"devDependencies": {
|
|
82
67
|
"@types/node": "^25.0.10",
|
|
83
68
|
"@types/pako": "^2.0.4",
|
|
69
|
+
"typedoc": "^0.28.20",
|
|
70
|
+
"typedoc-plugin-markdown": "^4.13.1",
|
|
84
71
|
"typescript": "^5.9.3",
|
|
85
72
|
"vite": "^5.4.0",
|
|
86
73
|
"vitest": "^4.0.18"
|
|
@@ -469,6 +469,9 @@ export const fsBinding = {
|
|
|
469
469
|
if ((flags & bits.excl) !== 0 && (flags & bits.create) !== 0 && exists) throw createNodeError('EEXIST', 'open', name);
|
|
470
470
|
if (!exists) {
|
|
471
471
|
if ((flags & bits.create) === 0) throw createNodeError('ENOENT', 'open', name);
|
|
472
|
+
// VirtualFS writes create parents for image loading; open(2) does not.
|
|
473
|
+
const parent = name.slice(0, name.lastIndexOf('/')) || '/';
|
|
474
|
+
if (!tree.statSync(parent).isDirectory()) throw createNodeError('ENOTDIR', 'open', name);
|
|
472
475
|
tree.writeFileSync(name, '');
|
|
473
476
|
} else if ((flags & bits.truncate) !== 0) {
|
|
474
477
|
tree.writeFileSync(name, '');
|
|
@@ -481,13 +484,14 @@ export const fsBinding = {
|
|
|
481
484
|
},
|
|
482
485
|
|
|
483
486
|
close(fd: number, req?: FSReq): undefined {
|
|
484
|
-
return answer(req, () => { openFiles.delete(fd); return undefined; });
|
|
487
|
+
return answer(req, () => { fileFor(fd); openFiles.delete(fd); return undefined; });
|
|
485
488
|
},
|
|
486
489
|
|
|
487
490
|
// ---- reading ------------------------------------------------------------
|
|
488
491
|
read(fd: number, buffer: Uint8Array, offset: number, length: number, position: number, req?: FSReq): number | undefined {
|
|
489
492
|
return answer(req, () => {
|
|
490
493
|
const file = fileFor(fd);
|
|
494
|
+
if ((file.flags & 3) === 1) throw createNodeError('EBADF', 'read', file.path);
|
|
491
495
|
if (file.cached === undefined) file.cached = file.tree.readFileSync(file.path) as Uint8Array;
|
|
492
496
|
const bytes = file.cached;
|
|
493
497
|
const from = position === null || position === undefined || position < 0 ? file.position : position;
|
|
@@ -512,18 +516,27 @@ export const fsBinding = {
|
|
|
512
516
|
},
|
|
513
517
|
|
|
514
518
|
/** Node's fast path for `readFile` with an encoding it can decode itself. */
|
|
515
|
-
readFileUtf8(path: unknown,
|
|
516
|
-
|
|
519
|
+
readFileUtf8(path: unknown, flags: number): string {
|
|
520
|
+
const owned = typeof path !== 'number';
|
|
521
|
+
const fd = owned ? fsBinding.open(path, flags, 0o666) as number : path as number;
|
|
522
|
+
try {
|
|
523
|
+
const file = fileFor(fd);
|
|
524
|
+
const bytes = new Uint8Array(file.tree.statSync(file.path).size);
|
|
525
|
+
const length = fsBinding.read(fd, bytes, 0, bytes.length, -1) as number;
|
|
526
|
+
return new TextDecoder().decode(bytes.subarray(0, length));
|
|
527
|
+
} finally { if (owned) fsBinding.close(fd); }
|
|
517
528
|
},
|
|
518
529
|
|
|
519
530
|
// ---- writing ------------------------------------------------------------
|
|
520
531
|
writeBuffer(fd: number, buffer: Uint8Array, offset: number, length: number, position: number | null, req?: FSReq): number | undefined {
|
|
521
532
|
return answer(req, () => {
|
|
522
533
|
const file = fileFor(fd);
|
|
534
|
+
if ((file.flags & 3) === 0) throw createNodeError('EBADF', 'write', file.path);
|
|
523
535
|
const tree = file.tree;
|
|
524
536
|
const slice = buffer.subarray(offset, offset + length);
|
|
525
537
|
const existing = file.cached ?? (tree.existsSync(file.path) ? tree.readFileSync(file.path) as Uint8Array : new Uint8Array(0));
|
|
526
|
-
const at =
|
|
538
|
+
const at = (file.flags & flagBits().append) !== 0 ? existing.length
|
|
539
|
+
: position === null || position === undefined || position < 0 ? file.position : position;
|
|
527
540
|
const size = Math.max(existing.length, at + slice.length);
|
|
528
541
|
const next = new Uint8Array(size);
|
|
529
542
|
next.set(existing, 0);
|
|
@@ -553,15 +566,13 @@ export const fsBinding = {
|
|
|
553
566
|
return fsBinding.writeBuffer(fd, bytes, 0, bytes.length, position ?? null, req);
|
|
554
567
|
},
|
|
555
568
|
|
|
556
|
-
writeFileUtf8(path: unknown, data: string, flags: number,
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
}
|
|
564
|
-
tree.writeFileSync(name, data);
|
|
569
|
+
writeFileUtf8(path: unknown, data: string, flags: number, mode: number): undefined {
|
|
570
|
+
// Node's UTF-8 fast path accepts a path OR an already-open descriptor.
|
|
571
|
+
// Reuse open/write so flags, offsets and errors match the buffer path.
|
|
572
|
+
const owned = typeof path !== 'number';
|
|
573
|
+
const fd = owned ? fsBinding.open(path, flags, mode) as number : path as number;
|
|
574
|
+
try { fsBinding.writeString(fd, data, null, 'utf8'); }
|
|
575
|
+
finally { if (owned) fsBinding.close(fd); }
|
|
565
576
|
return undefined;
|
|
566
577
|
},
|
|
567
578
|
|
|
@@ -843,6 +854,7 @@ export const fsBinding = {
|
|
|
843
854
|
ftruncate(fd: number, length: number, req?: FSReq): undefined {
|
|
844
855
|
return answer(req, () => {
|
|
845
856
|
const file = fileFor(fd);
|
|
857
|
+
if ((file.flags & 3) === 0) throw createNodeError('EBADF', 'ftruncate', file.path);
|
|
846
858
|
const tree = file.tree;
|
|
847
859
|
const bytes = file.cached ?? (tree.readFileSync(file.path) as Uint8Array);
|
|
848
860
|
const next = new Uint8Array(length);
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
* `http`, and there is none to vendor: no zlib wasm exists anywhere on this
|
|
26
26
|
* box, npm's `zlib-wasm` is one maintainer, two versions, and depends on pako
|
|
27
27
|
* itself, and compiling `deps/zlib` here would mean running a C toolchain,
|
|
28
|
-
* which this product does not do. The row in
|
|
28
|
+
* which this product does not do. The row in BUILTINS.md says the same.
|
|
29
29
|
*/
|
|
30
30
|
import { zstream, inflateModule, deflateModule, zlibConstants } from './zlib-pako';
|
|
31
31
|
|
package/src/node-lib/sources.ts
CHANGED
|
@@ -101,7 +101,7 @@ import INTERNAL_UTIL_COLORS from './internal/util/colors.js?raw';
|
|
|
101
101
|
import INTERNAL_FIXED_QUEUE from './internal/fixed_queue.js?raw';
|
|
102
102
|
import INTERNAL_EVENTS_SYMBOLS from './internal/events/symbols.js?raw';
|
|
103
103
|
|
|
104
|
-
/** The Node the vendored files come from, reported in `
|
|
104
|
+
/** The Node the vendored files come from, reported in `BUILTINS.md`. */
|
|
105
105
|
export const NODE_LIB_VERSION = 'v22.18.0';
|
|
106
106
|
|
|
107
107
|
export const NODE_LIB_SOURCES: Record<string, string> = {
|
package/src/virtual-fs.ts
CHANGED
|
@@ -45,6 +45,17 @@ export interface FSNode {
|
|
|
45
45
|
atime?: number;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
// Identity belongs to the node, so writes and renames preserve it while an
|
|
49
|
+
// unlink followed by recreation receives a different inode. Weak keys do not
|
|
50
|
+
// retain deleted trees, and snapshots receive new identities when restored.
|
|
51
|
+
const nodeInodes = new WeakMap<FSNode, number>();
|
|
52
|
+
let nextInode = 1;
|
|
53
|
+
function inodeFor(node: FSNode): number {
|
|
54
|
+
let inode = nodeInodes.get(node);
|
|
55
|
+
if (inode === undefined) { inode = nextInode++; nodeInodes.set(node, inode); }
|
|
56
|
+
return inode;
|
|
57
|
+
}
|
|
58
|
+
|
|
48
59
|
// Simple EventEmitter for VFS change notifications
|
|
49
60
|
type VFSChangeListener = (path: string, content: string) => void;
|
|
50
61
|
type VFSDeleteListener = (path: string) => void;
|
|
@@ -491,7 +502,7 @@ export class VirtualFS {
|
|
|
491
502
|
uid: 1000,
|
|
492
503
|
gid: 1000,
|
|
493
504
|
dev: 0,
|
|
494
|
-
ino:
|
|
505
|
+
ino: inodeFor(node),
|
|
495
506
|
rdev: 0,
|
|
496
507
|
blksize: 4096,
|
|
497
508
|
blocks: Math.ceil(size / 512),
|
|
@@ -531,7 +542,7 @@ export class VirtualFS {
|
|
|
531
542
|
uid: 1000,
|
|
532
543
|
gid: 1000,
|
|
533
544
|
dev: 0,
|
|
534
|
-
ino:
|
|
545
|
+
ino: inodeFor(node),
|
|
535
546
|
rdev: 0,
|
|
536
547
|
blksize: 4096,
|
|
537
548
|
blocks: 0
|