@seanhogg/builderforce-webcontainers-core 2026.10.2 → 2026.10.4
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/dist/build.d.ts +42 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +65 -0
- package/dist/build.js.map +1 -0
- package/dist/buildHost.d.ts +31 -0
- package/dist/buildHost.d.ts.map +1 -0
- package/dist/buildHost.js +125 -0
- package/dist/buildHost.js.map +1 -0
- package/dist/buildHtml.d.ts +28 -0
- package/dist/buildHtml.d.ts.map +1 -0
- package/dist/buildHtml.js +74 -0
- package/dist/buildHtml.js.map +1 -0
- package/dist/bundler.d.ts +129 -0
- package/dist/bundler.d.ts.map +1 -0
- package/dist/bundler.js +79 -0
- package/dist/bundler.js.map +1 -0
- package/dist/check/acquire.d.ts +46 -0
- package/dist/check/acquire.d.ts.map +1 -0
- package/dist/check/acquire.js +179 -0
- package/dist/check/acquire.js.map +1 -0
- package/dist/check/compilerHost.d.ts +22 -0
- package/dist/check/compilerHost.d.ts.map +1 -0
- package/dist/check/compilerHost.js +128 -0
- package/dist/check/compilerHost.js.map +1 -0
- package/dist/check/diagnostics.d.ts +23 -0
- package/dist/check/diagnostics.d.ts.map +1 -0
- package/dist/check/diagnostics.js +28 -0
- package/dist/check/diagnostics.js.map +1 -0
- package/dist/check/index.d.ts +19 -0
- package/dist/check/index.d.ts.map +1 -0
- package/dist/check/index.js +13 -0
- package/dist/check/index.js.map +1 -0
- package/dist/check/projects.d.ts +26 -0
- package/dist/check/projects.d.ts.map +1 -0
- package/dist/check/projects.js +124 -0
- package/dist/check/projects.js.map +1 -0
- package/dist/check/shims.d.ts +29 -0
- package/dist/check/shims.d.ts.map +1 -0
- package/dist/check/shims.js +76 -0
- package/dist/check/shims.js.map +1 -0
- package/dist/check/typeStore.d.ts +57 -0
- package/dist/check/typeStore.d.ts.map +1 -0
- package/dist/check/typeStore.js +89 -0
- package/dist/check/typeStore.js.map +1 -0
- package/dist/check/typecheck.d.ts +29 -0
- package/dist/check/typecheck.d.ts.map +1 -0
- package/dist/check/typecheck.js +91 -0
- package/dist/check/typecheck.js.map +1 -0
- package/dist/compileComponent.d.ts +8 -0
- package/dist/compileComponent.d.ts.map +1 -0
- package/dist/compileComponent.js +22 -0
- package/dist/compileComponent.js.map +1 -0
- package/dist/compileScript.d.ts +19 -4
- package/dist/compileScript.d.ts.map +1 -1
- package/dist/compileScript.js +37 -12
- package/dist/compileScript.js.map +1 -1
- package/dist/components.d.ts +41 -0
- package/dist/components.d.ts.map +1 -0
- package/dist/components.js +14 -0
- package/dist/components.js.map +1 -0
- package/dist/detectProject.d.ts +3 -0
- package/dist/detectProject.d.ts.map +1 -1
- package/dist/detectProject.js +16 -6
- package/dist/detectProject.js.map +1 -1
- package/dist/devServer.d.ts +5 -2
- package/dist/devServer.d.ts.map +1 -1
- package/dist/devServer.js +12 -8
- package/dist/devServer.js.map +1 -1
- package/dist/hash.d.ts +2 -0
- package/dist/hash.d.ts.map +1 -0
- package/dist/hash.js +22 -0
- package/dist/hash.js.map +1 -0
- package/dist/index.d.ts +24 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -3
- package/dist/index.js.map +1 -1
- package/dist/installer/bins.d.ts +24 -0
- package/dist/installer/bins.d.ts.map +1 -0
- package/dist/installer/bins.js +56 -0
- package/dist/installer/bins.js.map +1 -0
- package/dist/installer/index.d.ts +14 -0
- package/dist/installer/index.d.ts.map +1 -0
- package/dist/installer/index.js +9 -0
- package/dist/installer/index.js.map +1 -0
- package/dist/installer/install.d.ts +46 -0
- package/dist/installer/install.d.ts.map +1 -0
- package/dist/installer/install.js +245 -0
- package/dist/installer/install.js.map +1 -0
- package/dist/installer/lockfile.d.ts +49 -0
- package/dist/installer/lockfile.d.ts.map +1 -0
- package/dist/installer/lockfile.js +110 -0
- package/dist/installer/lockfile.js.map +1 -0
- package/dist/installer/registry.d.ts +84 -0
- package/dist/installer/registry.d.ts.map +1 -0
- package/dist/installer/registry.js +130 -0
- package/dist/installer/registry.js.map +1 -0
- package/dist/installer/semver.d.ts +38 -0
- package/dist/installer/semver.d.ts.map +1 -0
- package/dist/installer/semver.js +187 -0
- package/dist/installer/semver.js.map +1 -0
- package/dist/installer/spec.d.ts +30 -0
- package/dist/installer/spec.d.ts.map +1 -0
- package/dist/installer/spec.js +30 -0
- package/dist/installer/spec.js.map +1 -0
- package/dist/installer/tar.d.ts +17 -0
- package/dist/installer/tar.d.ts.map +1 -0
- package/dist/installer/tar.js +150 -0
- package/dist/installer/tar.js.map +1 -0
- package/dist/installer/tree.d.ts +48 -0
- package/dist/installer/tree.d.ts.map +1 -0
- package/dist/installer/tree.js +179 -0
- package/dist/installer/tree.js.map +1 -0
- package/dist/node/assert.d.ts +15 -0
- package/dist/node/assert.d.ts.map +1 -0
- package/dist/node/assert.js +137 -0
- package/dist/node/assert.js.map +1 -0
- package/dist/node/buffer.d.ts +84 -0
- package/dist/node/buffer.d.ts.map +1 -0
- package/dist/node/buffer.js +304 -0
- package/dist/node/buffer.js.map +1 -0
- package/dist/node/builtins.d.ts +25 -0
- package/dist/node/builtins.d.ts.map +1 -0
- package/dist/node/builtins.js +101 -0
- package/dist/node/builtins.js.map +1 -0
- package/dist/node/callable.d.ts +13 -0
- package/dist/node/callable.d.ts.map +1 -0
- package/dist/node/callable.js +26 -0
- package/dist/node/callable.js.map +1 -0
- package/dist/node/childProcess.d.ts +13 -0
- package/dist/node/childProcess.d.ts.map +1 -0
- package/dist/node/childProcess.js +143 -0
- package/dist/node/childProcess.js.map +1 -0
- package/dist/node/crypto.d.ts +3 -0
- package/dist/node/crypto.d.ts.map +1 -0
- package/dist/node/crypto.js +180 -0
- package/dist/node/crypto.js.map +1 -0
- package/dist/node/esm.d.ts +9 -0
- package/dist/node/esm.d.ts.map +1 -0
- package/dist/node/esm.js +202 -0
- package/dist/node/esm.js.map +1 -0
- package/dist/node/events.d.ts +40 -0
- package/dist/node/events.d.ts.map +1 -0
- package/dist/node/events.js +160 -0
- package/dist/node/events.js.map +1 -0
- package/dist/node/fs/index.d.ts +7 -0
- package/dist/node/fs/index.d.ts.map +1 -0
- package/dist/node/fs/index.js +270 -0
- package/dist/node/fs/index.js.map +1 -0
- package/dist/node/fs/stats.d.ts +93 -0
- package/dist/node/fs/stats.d.ts.map +1 -0
- package/dist/node/fs/stats.js +104 -0
- package/dist/node/fs/stats.js.map +1 -0
- package/dist/node/fs/sync.d.ts +98 -0
- package/dist/node/fs/sync.d.ts.map +1 -0
- package/dist/node/fs/sync.js +348 -0
- package/dist/node/fs/sync.js.map +1 -0
- package/dist/node/hashes.d.ts +15 -0
- package/dist/node/hashes.d.ts.map +1 -0
- package/dist/node/hashes.js +195 -0
- package/dist/node/hashes.js.map +1 -0
- package/dist/node/http/client.d.ts +35 -0
- package/dist/node/http/client.d.ts.map +1 -0
- package/dist/node/http/client.js +161 -0
- package/dist/node/http/client.js.map +1 -0
- package/dist/node/http/index.d.ts +5 -0
- package/dist/node/http/index.d.ts.map +1 -0
- package/dist/node/http/index.js +125 -0
- package/dist/node/http/index.js.map +1 -0
- package/dist/node/http/server.d.ts +135 -0
- package/dist/node/http/server.d.ts.map +1 -0
- package/dist/node/http/server.js +308 -0
- package/dist/node/http/server.js.map +1 -0
- package/dist/node/http/status.d.ts +3 -0
- package/dist/node/http/status.d.ts.map +1 -0
- package/dist/node/http/status.js +13 -0
- package/dist/node/http/status.js.map +1 -0
- package/dist/node/inspect.d.ts +22 -0
- package/dist/node/inspect.d.ts.map +1 -0
- package/dist/node/inspect.js +172 -0
- package/dist/node/inspect.js.map +1 -0
- package/dist/node/loader.d.ts +91 -0
- package/dist/node/loader.d.ts.map +1 -0
- package/dist/node/loader.js +265 -0
- package/dist/node/loader.js.map +1 -0
- package/dist/node/loop.d.ts +71 -0
- package/dist/node/loop.d.ts.map +1 -0
- package/dist/node/loop.js +189 -0
- package/dist/node/loop.js.map +1 -0
- package/dist/node/misc.d.ts +10 -0
- package/dist/node/misc.d.ts.map +1 -0
- package/dist/node/misc.js +256 -0
- package/dist/node/misc.js.map +1 -0
- package/dist/node/path.d.ts +14 -0
- package/dist/node/path.d.ts.map +1 -0
- package/dist/node/path.js +128 -0
- package/dist/node/path.js.map +1 -0
- package/dist/node/process.d.ts +31 -0
- package/dist/node/process.d.ts.map +1 -0
- package/dist/node/process.js +309 -0
- package/dist/node/process.js.map +1 -0
- package/dist/node/program.d.ts +19 -0
- package/dist/node/program.d.ts.map +1 -0
- package/dist/node/program.js +165 -0
- package/dist/node/program.js.map +1 -0
- package/dist/node/readline.d.ts +2 -0
- package/dist/node/readline.d.ts.map +1 -0
- package/dist/node/readline.js +155 -0
- package/dist/node/readline.js.map +1 -0
- package/dist/node/resolve.d.ts +45 -0
- package/dist/node/resolve.d.ts.map +1 -0
- package/dist/node/resolve.js +206 -0
- package/dist/node/resolve.js.map +1 -0
- package/dist/node/runtime.d.ts +40 -0
- package/dist/node/runtime.d.ts.map +1 -0
- package/dist/node/runtime.js +149 -0
- package/dist/node/runtime.js.map +1 -0
- package/dist/node/stream/index.d.ts +52 -0
- package/dist/node/stream/index.d.ts.map +1 -0
- package/dist/node/stream/index.js +184 -0
- package/dist/node/stream/index.js.map +1 -0
- package/dist/node/stream/readable.d.ts +83 -0
- package/dist/node/stream/readable.d.ts.map +1 -0
- package/dist/node/stream/readable.js +325 -0
- package/dist/node/stream/readable.js.map +1 -0
- package/dist/node/stream/writable.d.ts +80 -0
- package/dist/node/stream/writable.d.ts.map +1 -0
- package/dist/node/stream/writable.js +224 -0
- package/dist/node/stream/writable.js.map +1 -0
- package/dist/node/urlqs.d.ts +22 -0
- package/dist/node/urlqs.d.ts.map +1 -0
- package/dist/node/urlqs.js +165 -0
- package/dist/node/urlqs.js.map +1 -0
- package/dist/node/util.d.ts +37 -0
- package/dist/node/util.d.ts.map +1 -0
- package/dist/node/util.js +160 -0
- package/dist/node/util.js.map +1 -0
- package/dist/node/zlib.d.ts +2 -0
- package/dist/node/zlib.d.ts.map +1 -0
- package/dist/node/zlib.js +133 -0
- package/dist/node/zlib.js.map +1 -0
- package/dist/packageCdn.d.ts +40 -0
- package/dist/packageCdn.d.ts.map +1 -1
- package/dist/packageCdn.js +54 -7
- package/dist/packageCdn.js.map +1 -1
- package/dist/projectConfig.d.ts +6 -2
- package/dist/projectConfig.d.ts.map +1 -1
- package/dist/projectConfig.js +32 -8
- package/dist/projectConfig.js.map +1 -1
- package/dist/shell/builtins.d.ts +23 -0
- package/dist/shell/builtins.d.ts.map +1 -0
- package/dist/shell/builtins.js +131 -0
- package/dist/shell/builtins.js.map +1 -0
- package/dist/shell/context.d.ts +41 -0
- package/dist/shell/context.d.ts.map +1 -0
- package/dist/shell/context.js +65 -0
- package/dist/shell/context.js.map +1 -0
- package/dist/shell/devHandoff.d.ts +18 -0
- package/dist/shell/devHandoff.d.ts.map +1 -0
- package/dist/shell/devHandoff.js +36 -0
- package/dist/shell/devHandoff.js.map +1 -0
- package/dist/shell/exec.d.ts +67 -0
- package/dist/shell/exec.d.ts.map +1 -0
- package/dist/shell/exec.js +247 -0
- package/dist/shell/exec.js.map +1 -0
- package/dist/shell/expand.d.ts +28 -0
- package/dist/shell/expand.d.ts.map +1 -0
- package/dist/shell/expand.js +149 -0
- package/dist/shell/expand.js.map +1 -0
- package/dist/shell/fileCommands.d.ts +10 -0
- package/dist/shell/fileCommands.d.ts.map +1 -0
- package/dist/shell/fileCommands.js +208 -0
- package/dist/shell/fileCommands.js.map +1 -0
- package/dist/shell/lineEditor.d.ts +43 -0
- package/dist/shell/lineEditor.d.ts.map +1 -0
- package/dist/shell/lineEditor.js +234 -0
- package/dist/shell/lineEditor.js.map +1 -0
- package/dist/shell/npm.d.ts +6 -0
- package/dist/shell/npm.d.ts.map +1 -0
- package/dist/shell/npm.js +234 -0
- package/dist/shell/npm.js.map +1 -0
- package/dist/shell/parse.d.ts +73 -0
- package/dist/shell/parse.d.ts.map +1 -0
- package/dist/shell/parse.js +300 -0
- package/dist/shell/parse.js.map +1 -0
- package/dist/shell/program.d.ts +12 -0
- package/dist/shell/program.d.ts.map +1 -0
- package/dist/shell/program.js +219 -0
- package/dist/shell/program.js.map +1 -0
- package/dist/shell/textCommands.d.ts +15 -0
- package/dist/shell/textCommands.d.ts.map +1 -0
- package/dist/shell/textCommands.js +185 -0
- package/dist/shell/textCommands.js.map +1 -0
- package/dist/styleModules.d.ts +6 -0
- package/dist/styleModules.d.ts.map +1 -1
- package/dist/styleModules.js +14 -4
- package/dist/styleModules.js.map +1 -1
- package/dist/svelteCompiler.d.ts +28 -0
- package/dist/svelteCompiler.d.ts.map +1 -0
- package/dist/svelteCompiler.js +13 -0
- package/dist/svelteCompiler.js.map +1 -0
- package/dist/system/commands.d.ts +26 -0
- package/dist/system/commands.d.ts.map +1 -0
- package/dist/system/commands.js +53 -0
- package/dist/system/commands.js.map +1 -0
- package/dist/system/index.d.ts +23 -0
- package/dist/system/index.d.ts.map +1 -0
- package/dist/system/index.js +16 -0
- package/dist/system/index.js.map +1 -0
- package/dist/system/kernel.d.ts +54 -0
- package/dist/system/kernel.d.ts.map +1 -0
- package/dist/system/kernel.js +81 -0
- package/dist/system/kernel.js.map +1 -0
- package/dist/system/ports.d.ts +32 -0
- package/dist/system/ports.d.ts.map +1 -0
- package/dist/system/ports.js +57 -0
- package/dist/system/ports.js.map +1 -0
- package/dist/system/process.d.ts +32 -0
- package/dist/system/process.d.ts.map +1 -0
- package/dist/system/process.js +130 -0
- package/dist/system/process.js.map +1 -0
- package/dist/system/programs.d.ts +10 -0
- package/dist/system/programs.d.ts.map +1 -0
- package/dist/system/programs.js +22 -0
- package/dist/system/programs.js.map +1 -0
- package/dist/system/terminal.d.ts +45 -0
- package/dist/system/terminal.d.ts.map +1 -0
- package/dist/system/terminal.js +127 -0
- package/dist/system/terminal.js.map +1 -0
- package/dist/system/types.d.ts +100 -0
- package/dist/system/types.d.ts.map +1 -0
- package/dist/system/types.js +2 -0
- package/dist/system/types.js.map +1 -0
- package/dist/vfs.d.ts +28 -4
- package/dist/vfs.d.ts.map +1 -1
- package/dist/vfs.js +95 -32
- package/dist/vfs.js.map +1 -1
- package/dist/vueCompiler.d.ts +75 -0
- package/dist/vueCompiler.d.ts.map +1 -0
- package/dist/vueCompiler.js +67 -0
- package/dist/vueCompiler.js.map +1 -0
- package/package.json +18 -2
- package/src/build.ts +105 -0
- package/src/buildHost.ts +154 -0
- package/src/buildHtml.ts +101 -0
- package/src/bundler.ts +190 -0
- package/src/check/acquire.ts +212 -0
- package/src/check/compilerHost.ts +138 -0
- package/src/check/diagnostics.ts +48 -0
- package/src/check/index.ts +28 -0
- package/src/check/projects.ts +149 -0
- package/src/check/shims.ts +88 -0
- package/src/check/typeStore.ts +103 -0
- package/src/check/typecheck.ts +134 -0
- package/src/compileComponent.ts +21 -0
- package/src/compileScript.ts +42 -13
- package/src/components.ts +59 -0
- package/src/detectProject.ts +18 -6
- package/src/devServer.ts +16 -11
- package/src/hash.ts +22 -0
- package/src/index.ts +35 -6
- package/src/installer/bins.ts +64 -0
- package/src/installer/index.ts +13 -0
- package/src/installer/install.ts +275 -0
- package/src/installer/lockfile.ts +146 -0
- package/src/installer/registry.ts +175 -0
- package/src/installer/semver.ts +190 -0
- package/src/installer/spec.ts +53 -0
- package/src/installer/tar.ts +155 -0
- package/src/installer/tree.ts +236 -0
- package/src/node/assert.ts +127 -0
- package/src/node/buffer.ts +304 -0
- package/src/node/builtins.ts +123 -0
- package/src/node/callable.ts +25 -0
- package/src/node/childProcess.ts +164 -0
- package/src/node/crypto.ts +187 -0
- package/src/node/esm.ts +196 -0
- package/src/node/events.ts +176 -0
- package/src/node/fs/index.ts +277 -0
- package/src/node/fs/stats.ts +110 -0
- package/src/node/fs/sync.ts +335 -0
- package/src/node/hashes.ts +171 -0
- package/src/node/http/client.ts +173 -0
- package/src/node/http/index.ts +122 -0
- package/src/node/http/server.ts +308 -0
- package/src/node/http/status.ts +13 -0
- package/src/node/inspect.ts +166 -0
- package/src/node/loader.ts +293 -0
- package/src/node/loop.ts +193 -0
- package/src/node/misc.ts +250 -0
- package/src/node/path.ts +135 -0
- package/src/node/process.ts +324 -0
- package/src/node/program.ts +170 -0
- package/src/node/readline.ts +157 -0
- package/src/node/resolve.ts +216 -0
- package/src/node/runtime.ts +184 -0
- package/src/node/stream/index.ts +196 -0
- package/src/node/stream/readable.ts +345 -0
- package/src/node/stream/writable.ts +244 -0
- package/src/node/urlqs.ts +162 -0
- package/src/node/util.ts +145 -0
- package/src/node/zlib.ts +145 -0
- package/src/packageCdn.ts +91 -7
- package/src/projectConfig.ts +34 -7
- package/src/shell/builtins.ts +141 -0
- package/src/shell/context.ts +89 -0
- package/src/shell/devHandoff.ts +49 -0
- package/src/shell/exec.ts +268 -0
- package/src/shell/expand.ts +145 -0
- package/src/shell/fileCommands.ts +206 -0
- package/src/shell/lineEditor.ts +233 -0
- package/src/shell/npm.ts +229 -0
- package/src/shell/parse.ts +295 -0
- package/src/shell/program.ts +223 -0
- package/src/shell/textCommands.ts +177 -0
- package/src/styleModules.ts +15 -4
- package/src/svelteCompiler.ts +31 -0
- package/src/system/commands.ts +72 -0
- package/src/system/index.ts +22 -0
- package/src/system/kernel.ts +106 -0
- package/src/system/ports.ts +73 -0
- package/src/system/process.ts +158 -0
- package/src/system/programs.ts +31 -0
- package/src/system/terminal.ts +135 -0
- package/src/system/types.ts +103 -0
- package/src/vfs.ts +92 -28
- package/src/vueCompiler.ts +121 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node's EventEmitter. Most of the Node API surface (streams, servers, child
|
|
3
|
+
* processes, `process` itself) is built on it, so it is written faithfully:
|
|
4
|
+
* listener order, `once` wrappers that `removeListener` can find, the throw on
|
|
5
|
+
* an unhandled `'error'`, and `newListener`/`removeListener` events.
|
|
6
|
+
*/
|
|
7
|
+
import { callable } from './callable.js';
|
|
8
|
+
/** The class itself, for subclassing inside the runtime; user code gets {@link EventEmitter}. */
|
|
9
|
+
export class EventEmitterBase {
|
|
10
|
+
static defaultMaxListeners = 10;
|
|
11
|
+
static errorMonitor = Symbol('events.errorMonitor');
|
|
12
|
+
constructor() {
|
|
13
|
+
initEmitter(this);
|
|
14
|
+
}
|
|
15
|
+
/** Resolve with the arguments of the next `event` (rejects on `'error'`). */
|
|
16
|
+
static once(emitter, event) {
|
|
17
|
+
return new Promise((resolve, reject) => {
|
|
18
|
+
const onError = (error) => {
|
|
19
|
+
emitter.removeListener(event, onEvent);
|
|
20
|
+
reject(error);
|
|
21
|
+
};
|
|
22
|
+
const onEvent = (...args) => {
|
|
23
|
+
if (event !== 'error')
|
|
24
|
+
emitter.removeListener('error', onError);
|
|
25
|
+
resolve(args);
|
|
26
|
+
};
|
|
27
|
+
emitter.once(event, onEvent);
|
|
28
|
+
if (event !== 'error')
|
|
29
|
+
emitter.once('error', onError);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
static listenerCount(emitter, event) {
|
|
33
|
+
return emitter.listenerCount(event);
|
|
34
|
+
}
|
|
35
|
+
addListener(event, listener) {
|
|
36
|
+
return this._add(event, listener, false);
|
|
37
|
+
}
|
|
38
|
+
on(event, listener) {
|
|
39
|
+
return this._add(event, listener, false);
|
|
40
|
+
}
|
|
41
|
+
prependListener(event, listener) {
|
|
42
|
+
return this._add(event, listener, true);
|
|
43
|
+
}
|
|
44
|
+
once(event, listener) {
|
|
45
|
+
return this._add(event, this._onceWrap(event, listener), false);
|
|
46
|
+
}
|
|
47
|
+
prependOnceListener(event, listener) {
|
|
48
|
+
return this._add(event, this._onceWrap(event, listener), true);
|
|
49
|
+
}
|
|
50
|
+
removeListener(event, listener) {
|
|
51
|
+
const list = this._events?.get(event);
|
|
52
|
+
if (!list)
|
|
53
|
+
return this;
|
|
54
|
+
for (let i = list.length - 1; i >= 0; i--) {
|
|
55
|
+
const entry = list[i];
|
|
56
|
+
if (entry === listener || entry.listener === listener) {
|
|
57
|
+
list.splice(i, 1);
|
|
58
|
+
if (!list.length)
|
|
59
|
+
this._events.delete(event);
|
|
60
|
+
if (this._events.has('removeListener'))
|
|
61
|
+
this.emit('removeListener', event, listener);
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return this;
|
|
66
|
+
}
|
|
67
|
+
off(event, listener) {
|
|
68
|
+
return this.removeListener(event, listener);
|
|
69
|
+
}
|
|
70
|
+
removeAllListeners(event) {
|
|
71
|
+
if (!this._events)
|
|
72
|
+
return this;
|
|
73
|
+
if (event === undefined)
|
|
74
|
+
this._events.clear();
|
|
75
|
+
else
|
|
76
|
+
this._events.delete(event);
|
|
77
|
+
return this;
|
|
78
|
+
}
|
|
79
|
+
emit(event, ...args) {
|
|
80
|
+
const list = this._events?.get(event);
|
|
81
|
+
if (event === 'error') {
|
|
82
|
+
this._events?.get(EventEmitterBase.errorMonitor)?.slice().forEach((l) => l.apply(this, args));
|
|
83
|
+
if (!list?.length) {
|
|
84
|
+
const error = args[0];
|
|
85
|
+
if (error instanceof Error)
|
|
86
|
+
throw error;
|
|
87
|
+
const wrapped = new Error(`Unhandled error. (${String(error)})`);
|
|
88
|
+
wrapped.context = error;
|
|
89
|
+
throw wrapped;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
if (!list?.length)
|
|
93
|
+
return false;
|
|
94
|
+
for (const listener of list.slice())
|
|
95
|
+
listener.apply(this, args);
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
listeners(event) {
|
|
99
|
+
return (this._events?.get(event) ?? []).map((l) => l.listener ?? l);
|
|
100
|
+
}
|
|
101
|
+
rawListeners(event) {
|
|
102
|
+
return [...(this._events?.get(event) ?? [])];
|
|
103
|
+
}
|
|
104
|
+
listenerCount(event) {
|
|
105
|
+
return this._events?.get(event)?.length ?? 0;
|
|
106
|
+
}
|
|
107
|
+
eventNames() {
|
|
108
|
+
return [...(this._events?.keys() ?? [])];
|
|
109
|
+
}
|
|
110
|
+
setMaxListeners(n) {
|
|
111
|
+
this._maxListeners = n;
|
|
112
|
+
return this;
|
|
113
|
+
}
|
|
114
|
+
getMaxListeners() {
|
|
115
|
+
return this._maxListeners ?? EventEmitterBase.defaultMaxListeners;
|
|
116
|
+
}
|
|
117
|
+
_add(event, listener, prepend) {
|
|
118
|
+
if (typeof listener !== 'function')
|
|
119
|
+
throw new TypeError('The "listener" argument must be of type function');
|
|
120
|
+
// Subclasses created with util.inherits + EventEmitter.call(this) arrive here
|
|
121
|
+
// without the constructor's field initialisers having run on them.
|
|
122
|
+
if (!this._events)
|
|
123
|
+
this._events = new Map();
|
|
124
|
+
if (this._events.has('newListener'))
|
|
125
|
+
this.emit('newListener', event, listener.listener ?? listener);
|
|
126
|
+
const list = this._events.get(event) ?? [];
|
|
127
|
+
if (prepend)
|
|
128
|
+
list.unshift(listener);
|
|
129
|
+
else
|
|
130
|
+
list.push(listener);
|
|
131
|
+
this._events.set(event, list);
|
|
132
|
+
return this;
|
|
133
|
+
}
|
|
134
|
+
_onceWrap(event, listener) {
|
|
135
|
+
let fired = false;
|
|
136
|
+
const wrapper = ((...args) => {
|
|
137
|
+
if (fired)
|
|
138
|
+
return undefined;
|
|
139
|
+
fired = true;
|
|
140
|
+
this.removeListener(event, wrapper);
|
|
141
|
+
return listener.apply(this, args);
|
|
142
|
+
});
|
|
143
|
+
wrapper.listener = listener;
|
|
144
|
+
return wrapper;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
function initEmitter(self) {
|
|
148
|
+
if (!self._events || !(self._events instanceof Map))
|
|
149
|
+
self._events = new Map();
|
|
150
|
+
}
|
|
151
|
+
export const EventEmitter = callable(EventEmitterBase, initEmitter);
|
|
152
|
+
/** The `events` module object: the class, with Node's statics hung on it. */
|
|
153
|
+
export function createEventsModule() {
|
|
154
|
+
const mod = EventEmitter;
|
|
155
|
+
mod.EventEmitter = EventEmitter;
|
|
156
|
+
mod.once = EventEmitterBase.once;
|
|
157
|
+
mod.defaultMaxListeners = EventEmitterBase.defaultMaxListeners;
|
|
158
|
+
return mod;
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/node/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type FsContext } from './sync.js';
|
|
2
|
+
export interface FsModuleContext extends FsContext {
|
|
3
|
+
/** Keep the process alive (a watcher is open); call the result to let go. */
|
|
4
|
+
hold(): () => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function createFsModule(ctx: FsModuleContext): Record<string, any>;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/node/fs/index.ts"],"names":[],"mappings":"AAaA,OAAO,EAAgB,KAAK,SAAS,EAAe,MAAM,WAAW,CAAC;AAItE,MAAM,WAAW,eAAgB,SAAQ,SAAS;IAChD,6EAA6E;IAC7E,IAAI,IAAI,MAAM,IAAI,CAAC;CACpB;AAUD,wBAAgB,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAkNxE"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `fs` module: the sync API (sync.ts) plus callback, promise and stream
|
|
3
|
+
* forms derived from it, and `watch` over the VFS's change events.
|
|
4
|
+
*
|
|
5
|
+
* Async forms complete on a microtask. That is enough to keep ordering
|
|
6
|
+
* Node-like (callbacks never run synchronously) and, because microtasks always
|
|
7
|
+
* drain before the runtime's exit check, a chain of fs callbacks can never be
|
|
8
|
+
* cut short by the process exiting.
|
|
9
|
+
*/
|
|
10
|
+
import { EventEmitterBase } from '../events.js';
|
|
11
|
+
import { Buffer } from '../buffer.js';
|
|
12
|
+
import { Readable } from '../stream/readable.js';
|
|
13
|
+
import { Writable } from '../stream/writable.js';
|
|
14
|
+
import { createSyncFs } from './sync.js';
|
|
15
|
+
import { Dirent, Stats, constants } from './stats.js';
|
|
16
|
+
import { normalizePath } from '../../paths.js';
|
|
17
|
+
const CHUNK = 64 * 1024;
|
|
18
|
+
function lastCallback(args) {
|
|
19
|
+
return typeof args[args.length - 1] === 'function' ? args.pop() : undefined;
|
|
20
|
+
}
|
|
21
|
+
export function createFsModule(ctx) {
|
|
22
|
+
const sync = createSyncFs(ctx);
|
|
23
|
+
const toCallback = (fn, shape = (r) => [r]) => (...args) => {
|
|
24
|
+
const cb = lastCallback(args);
|
|
25
|
+
queueMicrotask(() => {
|
|
26
|
+
let result;
|
|
27
|
+
try {
|
|
28
|
+
result = fn(...args);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
cb?.(error);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
cb?.(null, ...shape(result, args));
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
const toPromise = (fn) => async (...args) => fn(...args);
|
|
38
|
+
class ReadStream extends Readable {
|
|
39
|
+
bytesRead = 0;
|
|
40
|
+
path;
|
|
41
|
+
fd = null;
|
|
42
|
+
pending = true;
|
|
43
|
+
data;
|
|
44
|
+
offset;
|
|
45
|
+
endAt;
|
|
46
|
+
constructor(path, options = {}) {
|
|
47
|
+
const opts = typeof options === 'string' ? { encoding: options } : options;
|
|
48
|
+
super({ highWaterMark: opts.highWaterMark ?? CHUNK, encoding: opts.encoding });
|
|
49
|
+
this.path = typeof options === 'object' && opts.fd !== undefined ? '' : sync._resolve(path);
|
|
50
|
+
this.offset = opts.start ?? 0;
|
|
51
|
+
this.endAt = opts.end ?? Infinity;
|
|
52
|
+
queueMicrotask(() => {
|
|
53
|
+
try {
|
|
54
|
+
const contents = sync.readFileSync(this.path);
|
|
55
|
+
this.data = contents;
|
|
56
|
+
this.fd = -1;
|
|
57
|
+
this.pending = false;
|
|
58
|
+
this.emit('open', this.fd);
|
|
59
|
+
this.emit('ready');
|
|
60
|
+
this._pull();
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
this.destroy(error);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
_read() {
|
|
68
|
+
if (!this.data) {
|
|
69
|
+
this._readableState.reading = false; // retried once the file is loaded
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const end = Math.min(this.data.length, this.endAt + 1);
|
|
73
|
+
if (this.offset >= end) {
|
|
74
|
+
this.push(null);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const chunk = this.data.subarray(this.offset, Math.min(end, this.offset + this._readableState.highWaterMark));
|
|
78
|
+
this.offset += chunk.length;
|
|
79
|
+
this.bytesRead += chunk.length;
|
|
80
|
+
this.push(Buffer.from(chunk));
|
|
81
|
+
}
|
|
82
|
+
close(callback) {
|
|
83
|
+
this.destroy();
|
|
84
|
+
if (callback)
|
|
85
|
+
this.once('close', callback);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
class WriteStream extends Writable {
|
|
89
|
+
options;
|
|
90
|
+
bytesWritten = 0;
|
|
91
|
+
path;
|
|
92
|
+
pending = false;
|
|
93
|
+
started = false;
|
|
94
|
+
constructor(path, options = {}) {
|
|
95
|
+
super({ decodeStrings: true });
|
|
96
|
+
this.options = options;
|
|
97
|
+
this.path = sync._resolve(path);
|
|
98
|
+
queueMicrotask(() => {
|
|
99
|
+
try {
|
|
100
|
+
this.open();
|
|
101
|
+
this.emit('open', -1);
|
|
102
|
+
this.emit('ready');
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
this.destroy(error);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
open() {
|
|
110
|
+
if (this.started)
|
|
111
|
+
return;
|
|
112
|
+
this.started = true;
|
|
113
|
+
const flags = typeof this.options === 'object' ? this.options.flags ?? 'w' : 'w';
|
|
114
|
+
if (!flags.startsWith('a') || !ctx.vfs.isFile(this.path))
|
|
115
|
+
sync.writeFileSync(this.path, '', { flag: flags.includes('x') ? 'wx' : 'w' });
|
|
116
|
+
}
|
|
117
|
+
_write(chunk, _encoding, callback) {
|
|
118
|
+
try {
|
|
119
|
+
this.open();
|
|
120
|
+
sync.appendFileSync(this.path, chunk);
|
|
121
|
+
this.bytesWritten += chunk.length;
|
|
122
|
+
callback();
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
callback(error);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
close(callback) {
|
|
129
|
+
this.end();
|
|
130
|
+
if (callback)
|
|
131
|
+
this.once('close', callback);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
class FSWatcher extends EventEmitterBase {
|
|
135
|
+
release;
|
|
136
|
+
unwatch;
|
|
137
|
+
constructor(path, recursive, listener) {
|
|
138
|
+
super();
|
|
139
|
+
const root = normalizePath(path);
|
|
140
|
+
if (listener)
|
|
141
|
+
this.on('change', listener);
|
|
142
|
+
this.release = ctx.hold();
|
|
143
|
+
this.unwatch = ctx.vfs.watch((change) => {
|
|
144
|
+
const p = change.path;
|
|
145
|
+
const inside = p === root || p.startsWith(root === '/' ? '/' : root + '/');
|
|
146
|
+
if (!inside)
|
|
147
|
+
return;
|
|
148
|
+
const rel = p === root ? p.slice(p.lastIndexOf('/') + 1) : p.slice(root.length + (root === '/' ? 0 : 1));
|
|
149
|
+
if (!recursive && rel.includes('/'))
|
|
150
|
+
return;
|
|
151
|
+
this.emit('change', change.type === 'write' && !change.created ? 'change' : 'rename', rel);
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
close() {
|
|
155
|
+
this.unwatch();
|
|
156
|
+
this.release();
|
|
157
|
+
this.emit('close');
|
|
158
|
+
}
|
|
159
|
+
ref() { return this; }
|
|
160
|
+
unref() { return this; }
|
|
161
|
+
}
|
|
162
|
+
const watch = (path, options, listener) => {
|
|
163
|
+
if (typeof options === 'function')
|
|
164
|
+
[listener, options] = [options, undefined];
|
|
165
|
+
const resolved = sync._resolve(path);
|
|
166
|
+
if (!ctx.vfs.exists(resolved))
|
|
167
|
+
throw sync.statSync(resolved); // throws ENOENT
|
|
168
|
+
return new FSWatcher(resolved, typeof options === 'object' && !!options?.recursive, listener);
|
|
169
|
+
};
|
|
170
|
+
const fileWatchers = new Map();
|
|
171
|
+
const watchFile = (path, options, listener) => {
|
|
172
|
+
const fn = (typeof options === 'function' ? options : listener);
|
|
173
|
+
const resolved = sync._resolve(path);
|
|
174
|
+
let entry = fileWatchers.get(resolved);
|
|
175
|
+
if (!entry) {
|
|
176
|
+
const watcher = new FSWatcher(resolved, false);
|
|
177
|
+
const current = { watcher, listeners: [] };
|
|
178
|
+
let previous = sync.statSync(resolved, { throwIfNoEntry: false }) ?? new Stats(resolved, 'file', 0, 0);
|
|
179
|
+
watcher.on('change', () => {
|
|
180
|
+
const next = sync.statSync(resolved, { throwIfNoEntry: false }) ?? new Stats(resolved, 'file', 0, 0);
|
|
181
|
+
for (const l of current.listeners)
|
|
182
|
+
l(next, previous);
|
|
183
|
+
previous = next;
|
|
184
|
+
});
|
|
185
|
+
fileWatchers.set(resolved, (entry = current));
|
|
186
|
+
}
|
|
187
|
+
entry.listeners.push(fn);
|
|
188
|
+
return entry.watcher;
|
|
189
|
+
};
|
|
190
|
+
const unwatchFile = (path, listener) => {
|
|
191
|
+
const resolved = sync._resolve(path);
|
|
192
|
+
const entry = fileWatchers.get(resolved);
|
|
193
|
+
if (!entry)
|
|
194
|
+
return;
|
|
195
|
+
entry.listeners = listener ? entry.listeners.filter((l) => l !== listener) : [];
|
|
196
|
+
if (!entry.listeners.length) {
|
|
197
|
+
entry.watcher.close();
|
|
198
|
+
fileWatchers.delete(resolved);
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
const fs = { ...sync, constants, Stats, Dirent, ReadStream, WriteStream, FSWatcher, F_OK: 0, R_OK: 4, W_OK: 2, X_OK: 1 };
|
|
202
|
+
delete fs._resolve;
|
|
203
|
+
for (const name of Object.keys(sync)) {
|
|
204
|
+
if (!name.endsWith('Sync'))
|
|
205
|
+
continue;
|
|
206
|
+
const base = name.slice(0, -4);
|
|
207
|
+
const fn = sync[name];
|
|
208
|
+
if (base === 'exists')
|
|
209
|
+
fs.exists = (p, cb) => queueMicrotask(() => cb(sync.existsSync(p)));
|
|
210
|
+
else if (base === 'read')
|
|
211
|
+
fs.read = toCallback(fn, (n, args) => [n, args[1]]);
|
|
212
|
+
else if (base === 'write')
|
|
213
|
+
fs.write = toCallback(fn, (n, args) => [n, args[1]]);
|
|
214
|
+
else
|
|
215
|
+
fs[base] = toCallback(fn);
|
|
216
|
+
}
|
|
217
|
+
fs.realpath.native = fs.realpath;
|
|
218
|
+
fs.createReadStream = (path, options) => new ReadStream(path, options);
|
|
219
|
+
fs.createWriteStream = (path, options) => new WriteStream(path, options);
|
|
220
|
+
fs.watch = watch;
|
|
221
|
+
fs.watchFile = watchFile;
|
|
222
|
+
fs.unwatchFile = unwatchFile;
|
|
223
|
+
const promises = { constants };
|
|
224
|
+
for (const name of Object.keys(sync)) {
|
|
225
|
+
if (!name.endsWith('Sync') || name === 'existsSync')
|
|
226
|
+
continue;
|
|
227
|
+
promises[name.slice(0, -4)] = toPromise(sync[name]);
|
|
228
|
+
}
|
|
229
|
+
promises.open = async (path, flags) => fileHandle(sync, sync.openSync(path, flags), sync._resolve(path));
|
|
230
|
+
promises.watch = (path, options) => watchIterator(watch(path, options), options?.signal);
|
|
231
|
+
fs.promises = promises;
|
|
232
|
+
return fs;
|
|
233
|
+
}
|
|
234
|
+
function fileHandle(sync, fd, path) {
|
|
235
|
+
return {
|
|
236
|
+
fd,
|
|
237
|
+
readFile: async (options) => sync.readFileSync(fd, options),
|
|
238
|
+
writeFile: async (data) => void sync.writeFileSync(path, data),
|
|
239
|
+
appendFile: async (data) => void sync.appendFileSync(path, data),
|
|
240
|
+
read: async (buffer, offset, length, position) => ({ bytesRead: sync.readSync(fd, buffer, offset, length, position), buffer }),
|
|
241
|
+
write: async (data, ...rest) => ({ bytesWritten: sync.writeSync(fd, data, ...rest), buffer: data }),
|
|
242
|
+
stat: async () => sync.fstatSync(fd),
|
|
243
|
+
truncate: async (length) => sync.ftruncateSync(fd, length),
|
|
244
|
+
sync: async () => undefined,
|
|
245
|
+
datasync: async () => undefined,
|
|
246
|
+
chmod: async () => undefined,
|
|
247
|
+
close: async () => sync.closeSync(fd),
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
async function* watchIterator(watcher, signal) {
|
|
251
|
+
const queue = [];
|
|
252
|
+
let wake;
|
|
253
|
+
watcher.on('change', (eventType, filename) => {
|
|
254
|
+
queue.push({ eventType, filename });
|
|
255
|
+
wake?.();
|
|
256
|
+
});
|
|
257
|
+
signal?.addEventListener('abort', () => wake?.());
|
|
258
|
+
try {
|
|
259
|
+
while (!signal?.aborted) {
|
|
260
|
+
if (queue.length)
|
|
261
|
+
yield queue.shift();
|
|
262
|
+
else
|
|
263
|
+
await new Promise((resolve) => (wake = resolve));
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
finally {
|
|
267
|
+
watcher.close();
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/node/fs/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The value types of the fs module: Node-shaped errors (`code`, `errno`,
|
|
3
|
+
* `syscall`, `path` — callers branch on `code === 'ENOENT'`), `Stats`,
|
|
4
|
+
* `Dirent` and `fs.constants`.
|
|
5
|
+
*/
|
|
6
|
+
declare const ERRNO: Record<string, [number, string]>;
|
|
7
|
+
export interface FsError extends Error {
|
|
8
|
+
code: string;
|
|
9
|
+
errno: number;
|
|
10
|
+
syscall: string;
|
|
11
|
+
path?: string;
|
|
12
|
+
dest?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function fsError(code: keyof typeof ERRNO | string, syscall: string, path?: string, dest?: string): FsError;
|
|
15
|
+
export declare class Stats {
|
|
16
|
+
dev: number;
|
|
17
|
+
ino: number;
|
|
18
|
+
mode: number;
|
|
19
|
+
nlink: number;
|
|
20
|
+
uid: number;
|
|
21
|
+
gid: number;
|
|
22
|
+
rdev: number;
|
|
23
|
+
size: number;
|
|
24
|
+
blksize: number;
|
|
25
|
+
blocks: number;
|
|
26
|
+
atimeMs: number;
|
|
27
|
+
mtimeMs: number;
|
|
28
|
+
ctimeMs: number;
|
|
29
|
+
birthtimeMs: number;
|
|
30
|
+
atime: Date;
|
|
31
|
+
mtime: Date;
|
|
32
|
+
ctime: Date;
|
|
33
|
+
birthtime: Date;
|
|
34
|
+
constructor(path: string, kind: 'file' | 'directory', size: number, mtimeMs: number);
|
|
35
|
+
isFile(): boolean;
|
|
36
|
+
isDirectory(): boolean;
|
|
37
|
+
isSymbolicLink(): boolean;
|
|
38
|
+
isBlockDevice(): boolean;
|
|
39
|
+
isCharacterDevice(): boolean;
|
|
40
|
+
isFIFO(): boolean;
|
|
41
|
+
isSocket(): boolean;
|
|
42
|
+
}
|
|
43
|
+
export declare class Dirent {
|
|
44
|
+
readonly name: string;
|
|
45
|
+
readonly parentPath: string;
|
|
46
|
+
private readonly kind;
|
|
47
|
+
constructor(name: string, parentPath: string, kind: 'file' | 'directory');
|
|
48
|
+
get path(): string;
|
|
49
|
+
isFile(): boolean;
|
|
50
|
+
isDirectory(): boolean;
|
|
51
|
+
isSymbolicLink(): boolean;
|
|
52
|
+
isBlockDevice(): boolean;
|
|
53
|
+
isCharacterDevice(): boolean;
|
|
54
|
+
isFIFO(): boolean;
|
|
55
|
+
isSocket(): boolean;
|
|
56
|
+
}
|
|
57
|
+
export declare const constants: {
|
|
58
|
+
F_OK: number;
|
|
59
|
+
R_OK: number;
|
|
60
|
+
W_OK: number;
|
|
61
|
+
X_OK: number;
|
|
62
|
+
O_RDONLY: number;
|
|
63
|
+
O_WRONLY: number;
|
|
64
|
+
O_RDWR: number;
|
|
65
|
+
O_CREAT: number;
|
|
66
|
+
O_EXCL: number;
|
|
67
|
+
O_NOCTTY: number;
|
|
68
|
+
O_TRUNC: number;
|
|
69
|
+
O_APPEND: number;
|
|
70
|
+
O_DIRECTORY: number;
|
|
71
|
+
O_NOFOLLOW: number;
|
|
72
|
+
O_SYNC: number;
|
|
73
|
+
O_DSYNC: number;
|
|
74
|
+
O_NONBLOCK: number;
|
|
75
|
+
S_IFMT: number;
|
|
76
|
+
S_IFREG: number;
|
|
77
|
+
S_IFDIR: number;
|
|
78
|
+
S_IFCHR: number;
|
|
79
|
+
S_IFBLK: number;
|
|
80
|
+
S_IFIFO: number;
|
|
81
|
+
S_IFLNK: number;
|
|
82
|
+
S_IFSOCK: number;
|
|
83
|
+
S_IRWXU: number;
|
|
84
|
+
S_IRUSR: number;
|
|
85
|
+
S_IWUSR: number;
|
|
86
|
+
S_IXUSR: number;
|
|
87
|
+
COPYFILE_EXCL: number;
|
|
88
|
+
COPYFILE_FICLONE: number;
|
|
89
|
+
COPYFILE_FICLONE_FORCE: number;
|
|
90
|
+
UV_FS_COPYFILE_EXCL: number;
|
|
91
|
+
};
|
|
92
|
+
export {};
|
|
93
|
+
//# sourceMappingURL=stats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats.d.ts","sourceRoot":"","sources":["../../../src/node/fs/stats.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,QAAA,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAW3C,CAAC;AAEF,MAAM,WAAW,OAAQ,SAAQ,KAAK;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,OAAO,KAAK,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAUjH;AAWD,qBAAa,KAAK;IAChB,GAAG,SAAQ;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,SAAK;IACV,GAAG,SAAQ;IACX,GAAG,SAAQ;IACX,IAAI,SAAK;IACT,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,SAAQ;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,IAAI,CAAC;IACZ,KAAK,EAAE,IAAI,CAAC;IACZ,KAAK,EAAE,IAAI,CAAC;IACZ,SAAS,EAAE,IAAI,CAAC;gBAEJ,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAYnF,MAAM,IAAI,OAAO;IACjB,WAAW,IAAI,OAAO;IACtB,cAAc,IAAI,OAAO;IACzB,aAAa,IAAI,OAAO;IACxB,iBAAiB,IAAI,OAAO;IAC5B,MAAM,IAAI,OAAO;IACjB,QAAQ,IAAI,OAAO;CACpB;AAED,qBAAa,MAAM;IACL,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM;IAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAhE,IAAI,EAAE,MAAM,EAAW,UAAU,EAAE,MAAM,EAAmB,IAAI,EAAE,MAAM,GAAG,WAAW;IAC3G,IAAI,IAAI,IAAI,MAAM,CAA4B;IAC9C,MAAM,IAAI,OAAO;IACjB,WAAW,IAAI,OAAO;IACtB,cAAc,IAAI,OAAO;IACzB,aAAa,IAAI,OAAO;IACxB,iBAAiB,IAAI,OAAO;IAC5B,MAAM,IAAI,OAAO;IACjB,QAAQ,IAAI,OAAO;CACpB;AAED,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAQrB,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The value types of the fs module: Node-shaped errors (`code`, `errno`,
|
|
3
|
+
* `syscall`, `path` — callers branch on `code === 'ENOENT'`), `Stats`,
|
|
4
|
+
* `Dirent` and `fs.constants`.
|
|
5
|
+
*/
|
|
6
|
+
const ERRNO = {
|
|
7
|
+
ENOENT: [-2, 'no such file or directory'],
|
|
8
|
+
EEXIST: [-17, 'file already exists'],
|
|
9
|
+
EISDIR: [-21, 'illegal operation on a directory'],
|
|
10
|
+
ENOTDIR: [-20, 'not a directory'],
|
|
11
|
+
ENOTEMPTY: [-39, 'directory not empty'],
|
|
12
|
+
EBADF: [-9, 'bad file descriptor'],
|
|
13
|
+
EINVAL: [-22, 'invalid argument'],
|
|
14
|
+
EPERM: [-1, 'operation not permitted'],
|
|
15
|
+
EACCES: [-13, 'permission denied'],
|
|
16
|
+
ENOSYS: [-38, 'function not implemented'],
|
|
17
|
+
};
|
|
18
|
+
export function fsError(code, syscall, path, dest) {
|
|
19
|
+
const [errno, text] = ERRNO[code] ?? [-1, code.toLowerCase()];
|
|
20
|
+
const where = path === undefined ? '' : dest === undefined ? ` '${path}'` : ` '${path}' -> '${dest}'`;
|
|
21
|
+
const error = new Error(`${code}: ${text}, ${syscall}${where}`);
|
|
22
|
+
error.code = code;
|
|
23
|
+
error.errno = errno;
|
|
24
|
+
error.syscall = syscall;
|
|
25
|
+
if (path !== undefined)
|
|
26
|
+
error.path = path;
|
|
27
|
+
if (dest !== undefined)
|
|
28
|
+
error.dest = dest;
|
|
29
|
+
return error;
|
|
30
|
+
}
|
|
31
|
+
function inode(path) {
|
|
32
|
+
let hash = 5381;
|
|
33
|
+
for (let i = 0; i < path.length; i++)
|
|
34
|
+
hash = ((hash * 33) ^ path.charCodeAt(i)) >>> 0;
|
|
35
|
+
return hash;
|
|
36
|
+
}
|
|
37
|
+
const S_IFREG = 0o100000;
|
|
38
|
+
const S_IFDIR = 0o040000;
|
|
39
|
+
export class Stats {
|
|
40
|
+
dev = 2049;
|
|
41
|
+
ino;
|
|
42
|
+
mode;
|
|
43
|
+
nlink = 1;
|
|
44
|
+
uid = 1000;
|
|
45
|
+
gid = 1000;
|
|
46
|
+
rdev = 0;
|
|
47
|
+
size;
|
|
48
|
+
blksize = 4096;
|
|
49
|
+
blocks;
|
|
50
|
+
atimeMs;
|
|
51
|
+
mtimeMs;
|
|
52
|
+
ctimeMs;
|
|
53
|
+
birthtimeMs;
|
|
54
|
+
atime;
|
|
55
|
+
mtime;
|
|
56
|
+
ctime;
|
|
57
|
+
birthtime;
|
|
58
|
+
constructor(path, kind, size, mtimeMs) {
|
|
59
|
+
this.ino = inode(path);
|
|
60
|
+
this.mode = kind === 'file' ? S_IFREG | 0o644 : S_IFDIR | 0o755;
|
|
61
|
+
this.size = size;
|
|
62
|
+
this.blocks = Math.ceil(size / 512);
|
|
63
|
+
this.atimeMs = this.mtimeMs = this.ctimeMs = this.birthtimeMs = mtimeMs;
|
|
64
|
+
this.atime = new Date(mtimeMs);
|
|
65
|
+
this.mtime = new Date(mtimeMs);
|
|
66
|
+
this.ctime = new Date(mtimeMs);
|
|
67
|
+
this.birthtime = new Date(mtimeMs);
|
|
68
|
+
}
|
|
69
|
+
isFile() { return (this.mode & 0o170000) === S_IFREG; }
|
|
70
|
+
isDirectory() { return (this.mode & 0o170000) === S_IFDIR; }
|
|
71
|
+
isSymbolicLink() { return false; }
|
|
72
|
+
isBlockDevice() { return false; }
|
|
73
|
+
isCharacterDevice() { return false; }
|
|
74
|
+
isFIFO() { return false; }
|
|
75
|
+
isSocket() { return false; }
|
|
76
|
+
}
|
|
77
|
+
export class Dirent {
|
|
78
|
+
name;
|
|
79
|
+
parentPath;
|
|
80
|
+
kind;
|
|
81
|
+
constructor(name, parentPath, kind) {
|
|
82
|
+
this.name = name;
|
|
83
|
+
this.parentPath = parentPath;
|
|
84
|
+
this.kind = kind;
|
|
85
|
+
}
|
|
86
|
+
get path() { return this.parentPath; }
|
|
87
|
+
isFile() { return this.kind === 'file'; }
|
|
88
|
+
isDirectory() { return this.kind === 'directory'; }
|
|
89
|
+
isSymbolicLink() { return false; }
|
|
90
|
+
isBlockDevice() { return false; }
|
|
91
|
+
isCharacterDevice() { return false; }
|
|
92
|
+
isFIFO() { return false; }
|
|
93
|
+
isSocket() { return false; }
|
|
94
|
+
}
|
|
95
|
+
export const constants = {
|
|
96
|
+
F_OK: 0, R_OK: 4, W_OK: 2, X_OK: 1,
|
|
97
|
+
O_RDONLY: 0, O_WRONLY: 1, O_RDWR: 2, O_CREAT: 64, O_EXCL: 128, O_NOCTTY: 256, O_TRUNC: 512, O_APPEND: 1024,
|
|
98
|
+
O_DIRECTORY: 65536, O_NOFOLLOW: 131072, O_SYNC: 1052672, O_DSYNC: 4096, O_NONBLOCK: 2048,
|
|
99
|
+
S_IFMT: 0o170000, S_IFREG, S_IFDIR, S_IFCHR: 0o020000, S_IFBLK: 0o060000, S_IFIFO: 0o010000, S_IFLNK: 0o120000, S_IFSOCK: 0o140000,
|
|
100
|
+
S_IRWXU: 0o700, S_IRUSR: 0o400, S_IWUSR: 0o200, S_IXUSR: 0o100,
|
|
101
|
+
COPYFILE_EXCL: 1, COPYFILE_FICLONE: 2, COPYFILE_FICLONE_FORCE: 4,
|
|
102
|
+
UV_FS_COPYFILE_EXCL: 1,
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=stats.js.map
|