@bytecodealliance/jco 1.32.1 → 1.34.0
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 -1
- package/dist/bundle.d.ts +2 -0
- package/dist/bundle.d.ts.map +1 -1
- package/dist/bundle.js +12 -0
- package/dist/bundle.js.map +1 -1
- package/dist/cmd/componentize.d.ts +33 -0
- package/dist/cmd/componentize.d.ts.map +1 -1
- package/dist/cmd/componentize.js +92 -8
- package/dist/cmd/componentize.js.map +1 -1
- package/dist/cmd/new.js +2 -1
- package/dist/cmd/new.js.map +1 -1
- package/dist/cmd/run.d.ts.map +1 -1
- package/dist/cmd/run.js +58 -1
- package/dist/cmd/run.js.map +1 -1
- package/dist/cmd/transpile.d.ts +5 -1
- package/dist/cmd/transpile.d.ts.map +1 -1
- package/dist/cmd/transpile.js +124 -0
- package/dist/cmd/transpile.js.map +1 -1
- package/dist/engine-compat.d.ts +11 -0
- package/dist/engine-compat.d.ts.map +1 -0
- package/dist/engine-compat.js +56 -0
- package/dist/engine-compat.js.map +1 -0
- package/dist/jco.js +12 -1
- package/dist/jco.js.map +1 -1
- package/dist/node-builtins/assert.d.ts +3 -0
- package/dist/node-builtins/assert.d.ts.map +1 -0
- package/dist/node-builtins/assert.js +65 -0
- package/dist/node-builtins/assert.js.map +1 -0
- package/dist/node-builtins/async-hooks.d.ts +3 -0
- package/dist/node-builtins/async-hooks.d.ts.map +1 -0
- package/dist/node-builtins/async-hooks.js +27 -0
- package/dist/node-builtins/async-hooks.js.map +1 -0
- package/dist/node-builtins/buffer.d.ts +4 -0
- package/dist/node-builtins/buffer.d.ts.map +1 -0
- package/dist/node-builtins/buffer.js +87 -0
- package/dist/node-builtins/buffer.js.map +1 -0
- package/dist/node-builtins/child-process.d.ts +3 -0
- package/dist/node-builtins/child-process.d.ts.map +1 -0
- package/dist/node-builtins/child-process.js +23 -0
- package/dist/node-builtins/child-process.js.map +1 -0
- package/dist/node-builtins/cluster.d.ts +3 -0
- package/dist/node-builtins/cluster.d.ts.map +1 -0
- package/dist/node-builtins/cluster.js +28 -0
- package/dist/node-builtins/cluster.js.map +1 -0
- package/dist/node-builtins/console.d.ts +3 -0
- package/dist/node-builtins/console.d.ts.map +1 -0
- package/dist/node-builtins/console.js +39 -0
- package/dist/node-builtins/console.js.map +1 -0
- package/dist/node-builtins/crypto.d.ts +3 -0
- package/dist/node-builtins/crypto.d.ts.map +1 -0
- package/dist/node-builtins/crypto.js +5 -0
- package/dist/node-builtins/crypto.js.map +1 -0
- package/dist/node-builtins/dgram.d.ts +4 -0
- package/dist/node-builtins/dgram.d.ts.map +1 -0
- package/dist/node-builtins/dgram.js +13 -0
- package/dist/node-builtins/dgram.js.map +1 -0
- package/dist/node-builtins/diagnostics-channel.d.ts +3 -0
- package/dist/node-builtins/diagnostics-channel.d.ts.map +1 -0
- package/dist/node-builtins/diagnostics-channel.js +26 -0
- package/dist/node-builtins/diagnostics-channel.js.map +1 -0
- package/dist/node-builtins/dns.d.ts +3 -0
- package/dist/node-builtins/dns.d.ts.map +1 -0
- package/dist/node-builtins/dns.js +12 -0
- package/dist/node-builtins/dns.js.map +1 -0
- package/dist/node-builtins/domain.d.ts +3 -0
- package/dist/node-builtins/domain.d.ts.map +1 -0
- package/dist/node-builtins/domain.js +19 -0
- package/dist/node-builtins/domain.js.map +1 -0
- package/dist/node-builtins/events.d.ts +3 -0
- package/dist/node-builtins/events.d.ts.map +1 -0
- package/dist/node-builtins/events.js +39 -0
- package/dist/node-builtins/events.js.map +1 -0
- package/dist/node-builtins/ffi.d.ts +3 -0
- package/dist/node-builtins/ffi.d.ts.map +1 -0
- package/dist/node-builtins/ffi.js +59 -0
- package/dist/node-builtins/ffi.js.map +1 -0
- package/dist/node-builtins/fs.d.ts +3 -0
- package/dist/node-builtins/fs.d.ts.map +1 -0
- package/dist/node-builtins/fs.js +16 -0
- package/dist/node-builtins/fs.js.map +1 -0
- package/dist/node-builtins/globals.d.ts +19 -0
- package/dist/node-builtins/globals.d.ts.map +1 -0
- package/dist/node-builtins/globals.js +56 -0
- package/dist/node-builtins/globals.js.map +1 -0
- package/dist/node-builtins/http-common.d.ts +6 -0
- package/dist/node-builtins/http-common.d.ts.map +1 -0
- package/dist/node-builtins/http-common.js +111 -0
- package/dist/node-builtins/http-common.js.map +1 -0
- package/dist/node-builtins/http.d.ts +4 -0
- package/dist/node-builtins/http.d.ts.map +1 -0
- package/dist/node-builtins/http.js +15 -0
- package/dist/node-builtins/http.js.map +1 -0
- package/dist/node-builtins/http2.d.ts +4 -0
- package/dist/node-builtins/http2.d.ts.map +1 -0
- package/dist/node-builtins/http2.js +79 -0
- package/dist/node-builtins/http2.js.map +1 -0
- package/dist/node-builtins/https.d.ts +3 -0
- package/dist/node-builtins/https.d.ts.map +1 -0
- package/dist/node-builtins/https.js +5 -0
- package/dist/node-builtins/https.js.map +1 -0
- package/dist/node-builtins/index.d.ts +10 -0
- package/dist/node-builtins/index.d.ts.map +1 -0
- package/dist/node-builtins/index.js +164 -0
- package/dist/node-builtins/index.js.map +1 -0
- package/dist/node-builtins/inspector.d.ts +12 -0
- package/dist/node-builtins/inspector.d.ts.map +1 -0
- package/dist/node-builtins/inspector.js +70 -0
- package/dist/node-builtins/inspector.js.map +1 -0
- package/dist/node-builtins/module.d.ts +3 -0
- package/dist/node-builtins/module.d.ts.map +1 -0
- package/dist/node-builtins/module.js +55 -0
- package/dist/node-builtins/module.js.map +1 -0
- package/dist/node-builtins/net.d.ts +3 -0
- package/dist/node-builtins/net.d.ts.map +1 -0
- package/dist/node-builtins/net.js +46 -0
- package/dist/node-builtins/net.js.map +1 -0
- package/dist/node-builtins/os.d.ts +3 -0
- package/dist/node-builtins/os.d.ts.map +1 -0
- package/dist/node-builtins/os.js +39 -0
- package/dist/node-builtins/os.js.map +1 -0
- package/dist/node-builtins/path.d.ts +3 -0
- package/dist/node-builtins/path.d.ts.map +1 -0
- package/dist/node-builtins/path.js +91 -0
- package/dist/node-builtins/path.js.map +1 -0
- package/dist/node-builtins/perf-hooks.d.ts +3 -0
- package/dist/node-builtins/perf-hooks.d.ts.map +1 -0
- package/dist/node-builtins/perf-hooks.js +12 -0
- package/dist/node-builtins/perf-hooks.js.map +1 -0
- package/dist/node-builtins/process.d.ts +3 -0
- package/dist/node-builtins/process.d.ts.map +1 -0
- package/dist/node-builtins/process.js +9 -0
- package/dist/node-builtins/process.js.map +1 -0
- package/dist/node-builtins/querystring.d.ts +3 -0
- package/dist/node-builtins/querystring.d.ts.map +1 -0
- package/dist/node-builtins/querystring.js +18 -0
- package/dist/node-builtins/querystring.js.map +1 -0
- package/dist/node-builtins/readline.d.ts +3 -0
- package/dist/node-builtins/readline.d.ts.map +1 -0
- package/dist/node-builtins/readline.js +11 -0
- package/dist/node-builtins/readline.js.map +1 -0
- package/dist/node-builtins/repl.d.ts +9 -0
- package/dist/node-builtins/repl.d.ts.map +1 -0
- package/dist/node-builtins/repl.js +12 -0
- package/dist/node-builtins/repl.js.map +1 -0
- package/dist/node-builtins/shared.d.ts +24 -0
- package/dist/node-builtins/shared.d.ts.map +1 -0
- package/dist/node-builtins/shared.js +68 -0
- package/dist/node-builtins/shared.js.map +1 -0
- package/dist/node-builtins/sqlite.d.ts +3 -0
- package/dist/node-builtins/sqlite.d.ts.map +1 -0
- package/dist/node-builtins/sqlite.js +9 -0
- package/dist/node-builtins/sqlite.js.map +1 -0
- package/dist/node-builtins/stream.d.ts +3 -0
- package/dist/node-builtins/stream.d.ts.map +1 -0
- package/dist/node-builtins/stream.js +64 -0
- package/dist/node-builtins/stream.js.map +1 -0
- package/dist/node-builtins/string-decoder.d.ts +3 -0
- package/dist/node-builtins/string-decoder.d.ts.map +1 -0
- package/dist/node-builtins/string-decoder.js +14 -0
- package/dist/node-builtins/string-decoder.js.map +1 -0
- package/dist/node-builtins/test.d.ts +4 -0
- package/dist/node-builtins/test.d.ts.map +1 -0
- package/dist/node-builtins/test.js +8 -0
- package/dist/node-builtins/test.js.map +1 -0
- package/dist/node-builtins/timers.d.ts +4 -0
- package/dist/node-builtins/timers.d.ts.map +1 -0
- package/dist/node-builtins/timers.js +9 -0
- package/dist/node-builtins/timers.js.map +1 -0
- package/dist/node-builtins/tls.d.ts +3 -0
- package/dist/node-builtins/tls.d.ts.map +1 -0
- package/dist/node-builtins/tls.js +10 -0
- package/dist/node-builtins/tls.js.map +1 -0
- package/dist/node-builtins/trace-events.d.ts +3 -0
- package/dist/node-builtins/trace-events.d.ts.map +1 -0
- package/dist/node-builtins/trace-events.js +9 -0
- package/dist/node-builtins/trace-events.js.map +1 -0
- package/dist/node-builtins/tty.d.ts +8 -0
- package/dist/node-builtins/tty.d.ts.map +1 -0
- package/dist/node-builtins/tty.js +12 -0
- package/dist/node-builtins/tty.js.map +1 -0
- package/dist/node-builtins/types.d.ts +159 -0
- package/dist/node-builtins/types.d.ts.map +1 -0
- package/dist/node-builtins/types.js +2 -0
- package/dist/node-builtins/types.js.map +1 -0
- package/dist/node-builtins/unenv.d.ts +6 -0
- package/dist/node-builtins/unenv.d.ts.map +1 -0
- package/dist/node-builtins/unenv.js +27 -0
- package/dist/node-builtins/unenv.js.map +1 -0
- package/dist/node-builtins/url-pattern.d.ts +8 -0
- package/dist/node-builtins/url-pattern.d.ts.map +1 -0
- package/dist/node-builtins/url-pattern.js +19 -0
- package/dist/node-builtins/url-pattern.js.map +1 -0
- package/dist/node-builtins/url.d.ts +4 -0
- package/dist/node-builtins/url.d.ts.map +1 -0
- package/dist/node-builtins/url.js +100 -0
- package/dist/node-builtins/url.js.map +1 -0
- package/dist/node-builtins/util.d.ts +3 -0
- package/dist/node-builtins/util.d.ts.map +1 -0
- package/dist/node-builtins/util.js +7 -0
- package/dist/node-builtins/util.js.map +1 -0
- package/dist/node-builtins/v8.d.ts +3 -0
- package/dist/node-builtins/v8.d.ts.map +1 -0
- package/dist/node-builtins/v8.js +6 -0
- package/dist/node-builtins/v8.js.map +1 -0
- package/dist/node-builtins/vfs.d.ts +3 -0
- package/dist/node-builtins/vfs.d.ts.map +1 -0
- package/dist/node-builtins/vfs.js +42 -0
- package/dist/node-builtins/vfs.js.map +1 -0
- package/dist/node-builtins/vm.d.ts +4 -0
- package/dist/node-builtins/vm.d.ts.map +1 -0
- package/dist/node-builtins/vm.js +6 -0
- package/dist/node-builtins/vm.js.map +1 -0
- package/dist/node-builtins/wasi-sockets.d.ts +10 -0
- package/dist/node-builtins/wasi-sockets.d.ts.map +1 -0
- package/dist/node-builtins/wasi-sockets.js +25 -0
- package/dist/node-builtins/wasi-sockets.js.map +1 -0
- package/dist/node-builtins/wasi.d.ts +10 -0
- package/dist/node-builtins/wasi.d.ts.map +1 -0
- package/dist/node-builtins/wasi.js +14 -0
- package/dist/node-builtins/wasi.js.map +1 -0
- package/dist/node-builtins/worker-threads.d.ts +3 -0
- package/dist/node-builtins/worker-threads.d.ts.map +1 -0
- package/dist/node-builtins/worker-threads.js +16 -0
- package/dist/node-builtins/worker-threads.js.map +1 -0
- package/dist/node-builtins/zlib.d.ts +3 -0
- package/dist/node-builtins/zlib.d.ts.map +1 -0
- package/dist/node-builtins/zlib.js +6 -0
- package/dist/node-builtins/zlib.js.map +1 -0
- package/dist/node-wit.d.ts +102 -0
- package/dist/node-wit.d.ts.map +1 -0
- package/dist/node-wit.js +469 -0
- package/dist/node-wit.js.map +1 -0
- package/lib/wasi_snapshot_preview1.command.wasm +0 -0
- package/lib/wasi_snapshot_preview1.reactor.wasm +0 -0
- package/lib/wit/builtin/0.2.10/wasi-clocks/package.wit +35 -0
- package/lib/wit/builtin/0.2.10/wasi-io/package.wit +47 -0
- package/lib/wit/builtin/0.2.10/wasi-sockets/package.wit +168 -0
- package/lib/wit/builtin/jco-node-0.1.0/child-process.wit +42 -0
- package/lib/wit/builtin/jco-node-0.1.0/cluster.wit +112 -0
- package/lib/wit/builtin/jco-node-0.1.0/console.wit +12 -0
- package/lib/wit/builtin/jco-node-0.1.0/dgram.wit +142 -0
- package/lib/wit/builtin/jco-node-0.1.0/dns.wit +145 -0
- package/lib/wit/builtin/jco-node-0.1.0/ffi.wit +116 -0
- package/lib/wit/builtin/jco-node-0.1.0/fs.wit +208 -0
- package/lib/wit/builtin/jco-node-0.1.0/http.wit +151 -0
- package/lib/wit/builtin/jco-node-0.1.0/http2.wit +190 -0
- package/lib/wit/builtin/jco-node-0.1.0/inspector.wit +142 -0
- package/lib/wit/builtin/jco-node-0.1.0/os.wit +120 -0
- package/lib/wit/builtin/jco-node-0.1.0/process.wit +245 -0
- package/lib/wit/builtin/jco-node-0.1.0/sqlite.wit +154 -0
- package/lib/wit/builtin/jco-node-0.1.0/tls.wit +108 -0
- package/lib/wit/builtin/jco-node-0.1.0/trace-events.wit +27 -0
- package/lib/wit/builtin/jco-node-0.1.0/tty.wit +59 -0
- package/lib/wit/builtin/jco-node-0.1.0/types.wit +12 -0
- package/lib/wit/builtin/jco-node-0.1.0/v8.wit +102 -0
- package/lib/wit/builtin/jco-node-0.1.0/wasi.wit +57 -0
- package/lib/wit/builtin/jco-node-0.1.0/worker-threads.wit +67 -0
- package/lib/wit/builtin/jco-node-0.1.0/zlib.wit +77 -0
- package/lib/wit/builtin/wasi-tls-0.2.0-draft/LICENSE.md +8 -0
- package/lib/wit/builtin/wasi-tls-0.2.0-draft/README.md +25 -0
- package/lib/wit/builtin/wasi-tls-0.2.0-draft/deps/io/package.wit +66 -0
- package/lib/wit/builtin/wasi-tls-0.2.0-draft/types.wit +27 -0
- package/lib/wit/builtin/wasi-tls-0.2.0-draft/world.wit +8 -0
- package/package.json +9 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-threads.js","sourceRoot":"","sources":["../../src/node-builtins/worker-threads.ts"],"names":[],"mappings":"AAAA,OAAO,EAGH,OAAO,EACP,eAAe,EACf,SAAS,EACT,cAAc,EACd,cAAc,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAEhE,MAAM,UAAU,0BAA0B,CAAC,EAAE,OAAO,EAAkB;IAClE,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,mBAAmB,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC9F,OAAO,eAAe,CAAC;QACnB,OAAO,CACH,qBAAqB,EACrB,GAAG,EAAE,CAAC;;;;;yFAKuE,MAAM,EAAE;CAChG,EACW,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,8BAA8B,CAAC,CACnE;QACD,cAAc,CACV,mCAAmC,EACnC,GAAG,cAAc,0BAA0B,EAC3C,GAAG,EAAE,CAAC,0CAA0C,MAAM,EAAE,GAAG,CAC9D;KACJ,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zlib.d.ts","sourceRoot":"","sources":["../../src/node-builtins/zlib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAsB,MAAM,aAAa,CAAC;AAGhH,wBAAgB,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE,cAAc,GAAG,cAAc,CAM7E"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { starReexportAdapter, builtin, stdModule } from "./shared.js";
|
|
2
|
+
import { ZLIB_WIT_REQUIREMENT } from "../node-wit.js";
|
|
3
|
+
export function createZlibBuiltin({ options }) {
|
|
4
|
+
return builtin("node:zlib", () => starReexportAdapter(stdModule(options.zlibModule, "zlib"), "zlib"), () => options.onWitRequirement?.(ZLIB_WIT_REQUIREMENT));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=zlib.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zlib.js","sourceRoot":"","sources":["../../src/node-builtins/zlib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAA4C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAChH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAEtD,MAAM,UAAU,iBAAiB,CAAC,EAAE,OAAO,EAAkB;IACzD,OAAO,OAAO,CACV,WAAW,EACX,GAAG,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,EACxE,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,oBAAoB,CAAC,CACzD,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
export interface NodeWitRequirement {
|
|
2
|
+
nodeSpecifier: string;
|
|
3
|
+
witImport: string;
|
|
4
|
+
/**
|
|
5
|
+
* A WIT interface the bundled source must export, retained for requirements with one
|
|
6
|
+
* companion callback interface.
|
|
7
|
+
*
|
|
8
|
+
* Host-backed builtins whose host calls *back* into the component (`node:inspector` and
|
|
9
|
+
* `node:http` today) declare a guest-exported callbacks interface, because a component cannot
|
|
10
|
+
* implement a resource on an imported interface. Jco pairs the export injection here with a
|
|
11
|
+
* two-pass bundle that adds the matching JS export. Prefer `guestExports`, which carries the
|
|
12
|
+
* same interface together with the JS export that implements it.
|
|
13
|
+
*/
|
|
14
|
+
witExport?: string;
|
|
15
|
+
/** JavaScript exports that implement companion guest callback interfaces. */
|
|
16
|
+
guestExports?: NodeGuestExport[];
|
|
17
|
+
dependencyDirectory: string;
|
|
18
|
+
/**
|
|
19
|
+
* WIT files installed for this requirement.
|
|
20
|
+
*
|
|
21
|
+
* The interfaces live in one file each, sharing a package directory, so a world only gains the
|
|
22
|
+
* interface it uses. Anything an interface `use`s must be installed with it.
|
|
23
|
+
*/
|
|
24
|
+
dependencySources: string[];
|
|
25
|
+
/** Additional WIT dependency packages installed alongside the primary package. */
|
|
26
|
+
dependencyPackages?: WitDependencyPackage[];
|
|
27
|
+
}
|
|
28
|
+
export interface NodeGuestExport {
|
|
29
|
+
witExport: string;
|
|
30
|
+
jsExport: string;
|
|
31
|
+
moduleSpecifier: string;
|
|
32
|
+
}
|
|
33
|
+
export interface WitDependencyPackage {
|
|
34
|
+
dependencyDirectory: string;
|
|
35
|
+
dependencySources: string[];
|
|
36
|
+
}
|
|
37
|
+
/** A shared capability must retain every user's callbacks and dependency files. */
|
|
38
|
+
export declare function mergeNodeWitRequirement(previous: NodeWitRequirement | undefined, current: NodeWitRequirement): NodeWitRequirement;
|
|
39
|
+
export declare const CHILD_PROCESS_WIT_REQUIREMENT: NodeWitRequirement;
|
|
40
|
+
export declare const WORKER_THREADS_WIT_REQUIREMENT: NodeWitRequirement;
|
|
41
|
+
export declare const CLUSTER_WIT_REQUIREMENT: NodeWitRequirement;
|
|
42
|
+
export declare const TRACE_EVENTS_WIT_REQUIREMENT: NodeWitRequirement;
|
|
43
|
+
export declare const CONSOLE_WIT_REQUIREMENT: NodeWitRequirement;
|
|
44
|
+
export declare const DGRAM_WIT_REQUIREMENT: NodeWitRequirement;
|
|
45
|
+
export declare const DNS_WIT_REQUIREMENT: NodeWitRequirement;
|
|
46
|
+
export declare const DNS_PROMISES_WIT_REQUIREMENT: NodeWitRequirement;
|
|
47
|
+
export declare const FS_WIT_REQUIREMENT: NodeWitRequirement;
|
|
48
|
+
/** VFS reuses the filesystem host protocol and its deny-by-default mapping. */
|
|
49
|
+
export declare const VFS_WIT_REQUIREMENT: NodeWitRequirement;
|
|
50
|
+
export declare const PROCESS_WIT_REQUIREMENT: NodeWitRequirement;
|
|
51
|
+
export declare const SQLITE_WIT_REQUIREMENT: NodeWitRequirement;
|
|
52
|
+
export declare const TLS_WIT_REQUIREMENT: NodeWitRequirement;
|
|
53
|
+
export declare const V8_WIT_REQUIREMENT: NodeWitRequirement;
|
|
54
|
+
export declare const OS_WIT_REQUIREMENT: NodeWitRequirement;
|
|
55
|
+
export declare const ZLIB_WIT_REQUIREMENT: NodeWitRequirement;
|
|
56
|
+
export declare const TTY_WIT_REQUIREMENT: NodeWitRequirement;
|
|
57
|
+
/** The `node:wasi` builtin's host interface (initialisation only), not a `wasi:` package. */
|
|
58
|
+
export declare const WASI_WIT_REQUIREMENT: NodeWitRequirement;
|
|
59
|
+
export declare const FFI_WIT_REQUIREMENT: NodeWitRequirement;
|
|
60
|
+
export declare const INSPECTOR_WIT_REQUIREMENT: NodeWitRequirement;
|
|
61
|
+
export declare const INSPECTOR_PROMISES_WIT_REQUIREMENT: NodeWitRequirement;
|
|
62
|
+
export declare const HTTP_WIT_REQUIREMENT: NodeWitRequirement;
|
|
63
|
+
/**
|
|
64
|
+
* `node:https` is `node:http` with TLS terminated by the same host interface, so it shares the
|
|
65
|
+
* import and the callback export; only the comment naming the importing builtin differs, and
|
|
66
|
+
* injection dedupes by `witImport` when a guest uses both.
|
|
67
|
+
*/
|
|
68
|
+
export declare const HTTPS_WIT_REQUIREMENT: NodeWitRequirement;
|
|
69
|
+
export declare const HTTP2_WIT_REQUIREMENT: NodeWitRequirement;
|
|
70
|
+
export declare const VFS_WASI_FILESYSTEM_WIT_REQUIREMENTS: readonly NodeWitRequirement[];
|
|
71
|
+
export declare const HTTP_WASI_SOCKETS_WIT_REQUIREMENTS: readonly [NodeWitRequirement, NodeWitRequirement, NodeWitRequirement, NodeWitRequirement, NodeWitRequirement, NodeWitRequirement, NodeWitRequirement];
|
|
72
|
+
export declare const HTTP_WASI_SOCKETS_0_2_10_WIT_REQUIREMENTS: readonly [NodeWitRequirement, NodeWitRequirement, NodeWitRequirement, NodeWitRequirement, NodeWitRequirement, NodeWitRequirement, NodeWitRequirement];
|
|
73
|
+
/**
|
|
74
|
+
* The environment `node:path` reads the working directory from.
|
|
75
|
+
*
|
|
76
|
+
* Unlike the host-backed builtins this is a plain WASI interface, but it is injected the same
|
|
77
|
+
* way: an application that reaches `node:path` -- usually through a dependency rather than
|
|
78
|
+
* directly -- should not have to hand-write the import and vendor its WIT to build.
|
|
79
|
+
*/
|
|
80
|
+
export declare const PATH_WIT_REQUIREMENT: NodeWitRequirement;
|
|
81
|
+
export declare const HTTP_WASI_HTTP_WIT_REQUIREMENTS: readonly [NodeWitRequirement, NodeWitRequirement];
|
|
82
|
+
export declare const HTTPS_WASI_SOCKETS_0_2_10_WIT_REQUIREMENTS: readonly NodeWitRequirement[];
|
|
83
|
+
export declare const HTTPS_WASI_SOCKETS_WIT_REQUIREMENTS: NodeWitRequirement[];
|
|
84
|
+
export declare const HTTPS_WASI_HTTP_WIT_REQUIREMENTS: NodeWitRequirement[];
|
|
85
|
+
export declare const NET_WASI_SOCKETS_WIT_REQUIREMENTS: NodeWitRequirement[];
|
|
86
|
+
export declare const NET_WASI_SOCKETS_0_2_10_WIT_REQUIREMENTS: NodeWitRequirement[];
|
|
87
|
+
export interface WitInjectionResult {
|
|
88
|
+
witPath: string;
|
|
89
|
+
worldFile: string;
|
|
90
|
+
dependencyFiles: string[];
|
|
91
|
+
imports: string[];
|
|
92
|
+
exports: string[];
|
|
93
|
+
}
|
|
94
|
+
export declare function witInjectionWarnings(result: WitInjectionResult): string[];
|
|
95
|
+
/**
|
|
96
|
+
* Add Node capability imports and companion callback exports to the selected user world in place.
|
|
97
|
+
*
|
|
98
|
+
* This is intentionally visible in source control. Repeated calls are no-ops,
|
|
99
|
+
* and dependency packages supplied by the user are never overwritten.
|
|
100
|
+
*/
|
|
101
|
+
export declare function injectNodeWitImports(witPath: string, worldName: string | undefined, requirements: NodeWitRequirement[]): Promise<WitInjectionResult | undefined>;
|
|
102
|
+
//# sourceMappingURL=node-wit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-wit.d.ts","sourceRoot":"","sources":["../src/node-wit.ts"],"names":[],"mappings":"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"}
|
package/dist/node-wit.js
ADDED
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
import { mkdir, readFile, readdir, stat, writeFile } from "node:fs/promises";
|
|
2
|
+
import { basename, dirname, join, resolve } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
/** A shared capability must retain every user's callbacks and dependency files. */
|
|
5
|
+
export function mergeNodeWitRequirement(previous, current) {
|
|
6
|
+
if (!previous) {
|
|
7
|
+
return current;
|
|
8
|
+
}
|
|
9
|
+
return {
|
|
10
|
+
...previous,
|
|
11
|
+
...current,
|
|
12
|
+
witExport: current.witExport ?? previous.witExport,
|
|
13
|
+
guestExports: [
|
|
14
|
+
...new Map([...(previous.guestExports ?? []), ...(current.guestExports ?? [])].map((value) => [
|
|
15
|
+
value.jsExport,
|
|
16
|
+
value,
|
|
17
|
+
])).values(),
|
|
18
|
+
],
|
|
19
|
+
dependencySources: [...new Set([...previous.dependencySources, ...current.dependencySources])],
|
|
20
|
+
dependencyPackages: [...(previous.dependencyPackages ?? []), ...(current.dependencyPackages ?? [])],
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
/** Types the Node API interfaces share; every interface file depends on it. */
|
|
24
|
+
const SHARED_TYPES_SOURCE = fileURLToPath(new URL("../lib/wit/builtin/jco-node-0.1.0/types.wit", import.meta.url));
|
|
25
|
+
/**
|
|
26
|
+
* Build the requirement for one `jco:node/<interface>@0.1.0` import.
|
|
27
|
+
*
|
|
28
|
+
* Every Node API interface lives in `jco-node-0.1.0/<interface>.wit`; those that `use` the shared
|
|
29
|
+
* `types` interface also install `types.wit` beside it. Mirrors `wasiRequirement` below for the
|
|
30
|
+
* WASI side.
|
|
31
|
+
*/
|
|
32
|
+
function nodeRequirement(nodeSpecifier, witInterface, extra = {}) {
|
|
33
|
+
const { sharedTypes = false, ...rest } = extra;
|
|
34
|
+
const source = fileURLToPath(new URL(`../lib/wit/builtin/jco-node-0.1.0/${witInterface}.wit`, import.meta.url));
|
|
35
|
+
return {
|
|
36
|
+
nodeSpecifier,
|
|
37
|
+
witImport: `jco:node/${witInterface}@0.1.0`,
|
|
38
|
+
...rest,
|
|
39
|
+
dependencyDirectory: "jco-node-0.1.0",
|
|
40
|
+
dependencySources: sharedTypes ? [SHARED_TYPES_SOURCE, source] : [source],
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export const CHILD_PROCESS_WIT_REQUIREMENT = nodeRequirement("node:child_process", "child-process", {
|
|
44
|
+
sharedTypes: true,
|
|
45
|
+
});
|
|
46
|
+
export const WORKER_THREADS_WIT_REQUIREMENT = nodeRequirement("node:worker_threads", "worker-threads", {
|
|
47
|
+
guestExports: [
|
|
48
|
+
{
|
|
49
|
+
witExport: "jco:node/worker-threads-callbacks@0.1.0",
|
|
50
|
+
jsExport: "workerThreadsCallbacks",
|
|
51
|
+
moduleSpecifier: "jco:node-worker-threads-callbacks",
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
});
|
|
55
|
+
export const CLUSTER_WIT_REQUIREMENT = nodeRequirement("node:cluster", "cluster", { sharedTypes: true });
|
|
56
|
+
export const TRACE_EVENTS_WIT_REQUIREMENT = nodeRequirement("node:trace_events", "trace-events");
|
|
57
|
+
export const CONSOLE_WIT_REQUIREMENT = nodeRequirement("node:console", "console");
|
|
58
|
+
export const DGRAM_WIT_REQUIREMENT = nodeRequirement("node:dgram", "dgram", {
|
|
59
|
+
guestExports: [
|
|
60
|
+
{
|
|
61
|
+
witExport: "jco:node/dgram-callbacks@0.1.0",
|
|
62
|
+
jsExport: "dgramCallbacks",
|
|
63
|
+
moduleSpecifier: "jco:node-dgram-callbacks",
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
});
|
|
67
|
+
export const DNS_WIT_REQUIREMENT = nodeRequirement("node:dns", "dns");
|
|
68
|
+
export const DNS_PROMISES_WIT_REQUIREMENT = {
|
|
69
|
+
...DNS_WIT_REQUIREMENT,
|
|
70
|
+
nodeSpecifier: "node:dns/promises",
|
|
71
|
+
};
|
|
72
|
+
export const FS_WIT_REQUIREMENT = nodeRequirement("node:fs", "fs");
|
|
73
|
+
/** VFS reuses the filesystem host protocol and its deny-by-default mapping. */
|
|
74
|
+
export const VFS_WIT_REQUIREMENT = { ...FS_WIT_REQUIREMENT, nodeSpecifier: "node:vfs" };
|
|
75
|
+
export const PROCESS_WIT_REQUIREMENT = nodeRequirement("node:process", "process");
|
|
76
|
+
export const SQLITE_WIT_REQUIREMENT = nodeRequirement("node:sqlite", "sqlite");
|
|
77
|
+
export const TLS_WIT_REQUIREMENT = {
|
|
78
|
+
...nodeRequirement("node:tls", "tls", {
|
|
79
|
+
guestExports: [
|
|
80
|
+
{
|
|
81
|
+
witExport: "jco:node/tls-callbacks@0.1.0",
|
|
82
|
+
jsExport: "tlsCallbacks",
|
|
83
|
+
moduleSpecifier: "jco:node-tls-callbacks",
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
}),
|
|
87
|
+
dependencyPackages: [
|
|
88
|
+
{
|
|
89
|
+
dependencyDirectory: "wasi-io-0.2.12",
|
|
90
|
+
dependencySources: [
|
|
91
|
+
fileURLToPath(new URL("../lib/wit/builtin/0.2.12/wasi-io/package.wit", import.meta.url)),
|
|
92
|
+
],
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
dependencyDirectory: "wasi-tls-0.2.0-draft",
|
|
96
|
+
dependencySources: ["world.wit", "types.wit"].map((name) => fileURLToPath(new URL(`../lib/wit/builtin/wasi-tls-0.2.0-draft/${name}`, import.meta.url))),
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
};
|
|
100
|
+
export const V8_WIT_REQUIREMENT = nodeRequirement("node:v8", "v8");
|
|
101
|
+
export const OS_WIT_REQUIREMENT = nodeRequirement("node:os", "os");
|
|
102
|
+
export const ZLIB_WIT_REQUIREMENT = nodeRequirement("node:zlib", "zlib");
|
|
103
|
+
export const TTY_WIT_REQUIREMENT = nodeRequirement("node:tty", "tty", { sharedTypes: true });
|
|
104
|
+
/** The `node:wasi` builtin's host interface (initialisation only), not a `wasi:` package. */
|
|
105
|
+
export const WASI_WIT_REQUIREMENT = nodeRequirement("node:wasi", "wasi", { sharedTypes: true });
|
|
106
|
+
export const FFI_WIT_REQUIREMENT = nodeRequirement("node:ffi", "ffi");
|
|
107
|
+
export const INSPECTOR_WIT_REQUIREMENT = nodeRequirement("node:inspector", "inspector", {
|
|
108
|
+
witExport: "jco:node/inspector-callbacks@0.1.0",
|
|
109
|
+
guestExports: [
|
|
110
|
+
{
|
|
111
|
+
witExport: "jco:node/inspector-callbacks@0.1.0",
|
|
112
|
+
jsExport: "inspectorCallbacks",
|
|
113
|
+
moduleSpecifier: "jco:node-inspector-callbacks",
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
});
|
|
117
|
+
export const INSPECTOR_PROMISES_WIT_REQUIREMENT = {
|
|
118
|
+
...INSPECTOR_WIT_REQUIREMENT,
|
|
119
|
+
nodeSpecifier: "node:inspector/promises",
|
|
120
|
+
};
|
|
121
|
+
export const HTTP_WIT_REQUIREMENT = nodeRequirement("node:http", "http", {
|
|
122
|
+
guestExports: [
|
|
123
|
+
{
|
|
124
|
+
witExport: "jco:node/http-callbacks@0.1.0",
|
|
125
|
+
jsExport: "httpCallbacks",
|
|
126
|
+
moduleSpecifier: "jco:node-http-callbacks",
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
});
|
|
130
|
+
/**
|
|
131
|
+
* `node:https` is `node:http` with TLS terminated by the same host interface, so it shares the
|
|
132
|
+
* import and the callback export; only the comment naming the importing builtin differs, and
|
|
133
|
+
* injection dedupes by `witImport` when a guest uses both.
|
|
134
|
+
*/
|
|
135
|
+
export const HTTPS_WIT_REQUIREMENT = {
|
|
136
|
+
...HTTP_WIT_REQUIREMENT,
|
|
137
|
+
nodeSpecifier: "node:https",
|
|
138
|
+
};
|
|
139
|
+
export const HTTP2_WIT_REQUIREMENT = {
|
|
140
|
+
nodeSpecifier: "node:http2",
|
|
141
|
+
witImport: "jco:node/http2@0.1.0",
|
|
142
|
+
guestExports: [
|
|
143
|
+
{
|
|
144
|
+
witExport: "jco:node/http2-callbacks@0.1.0",
|
|
145
|
+
jsExport: "http2Callbacks",
|
|
146
|
+
moduleSpecifier: "jco:node-http2-callbacks",
|
|
147
|
+
},
|
|
148
|
+
],
|
|
149
|
+
dependencyDirectory: "jco-node-0.1.0",
|
|
150
|
+
dependencySources: [
|
|
151
|
+
SHARED_TYPES_SOURCE,
|
|
152
|
+
fileURLToPath(new URL("../lib/wit/builtin/jco-node-0.1.0/http2.wit", import.meta.url)),
|
|
153
|
+
],
|
|
154
|
+
};
|
|
155
|
+
const WASI_0_2_12_ROOT = new URL("../lib/wit/builtin/0.2.12/", import.meta.url);
|
|
156
|
+
const WASI_0_2_10_ROOT = new URL("../lib/wit/builtin/0.2.10/", import.meta.url);
|
|
157
|
+
function wasiDependency(name, version = "0.2.12") {
|
|
158
|
+
const root = version === "0.2.10" ? WASI_0_2_10_ROOT : WASI_0_2_12_ROOT;
|
|
159
|
+
return {
|
|
160
|
+
dependencyDirectory: `${name}-${version}`,
|
|
161
|
+
dependencySources: [fileURLToPath(new URL(`${name}/package.wit`, root))],
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
const WASI_IO_DEPENDENCY = wasiDependency("wasi-io");
|
|
165
|
+
const WASI_CLOCKS_DEPENDENCY = wasiDependency("wasi-clocks");
|
|
166
|
+
const WASI_SOCKETS_DEPENDENCIES = [WASI_IO_DEPENDENCY, WASI_CLOCKS_DEPENDENCY, wasiDependency("wasi-sockets")];
|
|
167
|
+
const WASI_HTTP_DEPENDENCIES = [
|
|
168
|
+
WASI_IO_DEPENDENCY,
|
|
169
|
+
WASI_CLOCKS_DEPENDENCY,
|
|
170
|
+
wasiDependency("wasi-random"),
|
|
171
|
+
wasiDependency("wasi-filesystem"),
|
|
172
|
+
wasiDependency("wasi-sockets"),
|
|
173
|
+
wasiDependency("wasi-cli"),
|
|
174
|
+
wasiDependency("wasi-http"),
|
|
175
|
+
];
|
|
176
|
+
function wasiRequirement(witImport, dependencies) {
|
|
177
|
+
const [primary, ...additional] = dependencies;
|
|
178
|
+
return {
|
|
179
|
+
nodeSpecifier: "node:http",
|
|
180
|
+
witImport,
|
|
181
|
+
dependencyDirectory: primary.dependencyDirectory,
|
|
182
|
+
dependencySources: primary.dependencySources,
|
|
183
|
+
dependencyPackages: additional,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
export const VFS_WASI_FILESYSTEM_WIT_REQUIREMENTS = [
|
|
187
|
+
"wasi:filesystem/preopens@0.2.12",
|
|
188
|
+
"wasi:filesystem/types@0.2.12",
|
|
189
|
+
].map((witImport) => ({
|
|
190
|
+
...wasiRequirement(witImport, [wasiDependency("wasi-filesystem"), WASI_IO_DEPENDENCY, WASI_CLOCKS_DEPENDENCY]),
|
|
191
|
+
nodeSpecifier: "node:vfs",
|
|
192
|
+
}));
|
|
193
|
+
export const HTTP_WASI_SOCKETS_WIT_REQUIREMENTS = [
|
|
194
|
+
wasiRequirement("wasi:sockets/instance-network@0.2.12", WASI_SOCKETS_DEPENDENCIES),
|
|
195
|
+
wasiRequirement("wasi:sockets/network@0.2.12", WASI_SOCKETS_DEPENDENCIES),
|
|
196
|
+
wasiRequirement("wasi:sockets/ip-name-lookup@0.2.12", WASI_SOCKETS_DEPENDENCIES),
|
|
197
|
+
wasiRequirement("wasi:sockets/tcp-create-socket@0.2.12", WASI_SOCKETS_DEPENDENCIES),
|
|
198
|
+
wasiRequirement("wasi:sockets/tcp@0.2.12", WASI_SOCKETS_DEPENDENCIES),
|
|
199
|
+
wasiRequirement("wasi:io/streams@0.2.12", WASI_SOCKETS_DEPENDENCIES),
|
|
200
|
+
wasiRequirement("wasi:io/poll@0.2.12", WASI_SOCKETS_DEPENDENCIES),
|
|
201
|
+
];
|
|
202
|
+
const WASI_SOCKETS_0_2_10_DEPENDENCIES = [
|
|
203
|
+
wasiDependency("wasi-io", "0.2.10"),
|
|
204
|
+
wasiDependency("wasi-clocks", "0.2.10"),
|
|
205
|
+
wasiDependency("wasi-sockets", "0.2.10"),
|
|
206
|
+
];
|
|
207
|
+
export const HTTP_WASI_SOCKETS_0_2_10_WIT_REQUIREMENTS = [
|
|
208
|
+
wasiRequirement("wasi:sockets/instance-network@0.2.10", WASI_SOCKETS_0_2_10_DEPENDENCIES),
|
|
209
|
+
wasiRequirement("wasi:sockets/network@0.2.10", WASI_SOCKETS_0_2_10_DEPENDENCIES),
|
|
210
|
+
wasiRequirement("wasi:sockets/ip-name-lookup@0.2.10", WASI_SOCKETS_0_2_10_DEPENDENCIES),
|
|
211
|
+
wasiRequirement("wasi:sockets/tcp-create-socket@0.2.10", WASI_SOCKETS_0_2_10_DEPENDENCIES),
|
|
212
|
+
wasiRequirement("wasi:sockets/tcp@0.2.10", WASI_SOCKETS_0_2_10_DEPENDENCIES),
|
|
213
|
+
wasiRequirement("wasi:io/streams@0.2.10", WASI_SOCKETS_0_2_10_DEPENDENCIES),
|
|
214
|
+
wasiRequirement("wasi:io/poll@0.2.10", WASI_SOCKETS_0_2_10_DEPENDENCIES),
|
|
215
|
+
];
|
|
216
|
+
/**
|
|
217
|
+
* The environment `node:path` reads the working directory from.
|
|
218
|
+
*
|
|
219
|
+
* Unlike the host-backed builtins this is a plain WASI interface, but it is injected the same
|
|
220
|
+
* way: an application that reaches `node:path` -- usually through a dependency rather than
|
|
221
|
+
* directly -- should not have to hand-write the import and vendor its WIT to build.
|
|
222
|
+
*/
|
|
223
|
+
export const PATH_WIT_REQUIREMENT = {
|
|
224
|
+
nodeSpecifier: "node:path",
|
|
225
|
+
witImport: "wasi:cli/environment@0.2.12",
|
|
226
|
+
dependencyDirectory: WASI_IO_DEPENDENCY.dependencyDirectory,
|
|
227
|
+
dependencySources: WASI_IO_DEPENDENCY.dependencySources,
|
|
228
|
+
dependencyPackages: [
|
|
229
|
+
WASI_CLOCKS_DEPENDENCY,
|
|
230
|
+
wasiDependency("wasi-random"),
|
|
231
|
+
wasiDependency("wasi-filesystem"),
|
|
232
|
+
wasiDependency("wasi-sockets"),
|
|
233
|
+
wasiDependency("wasi-cli"),
|
|
234
|
+
],
|
|
235
|
+
};
|
|
236
|
+
export const HTTP_WASI_HTTP_WIT_REQUIREMENTS = [
|
|
237
|
+
wasiRequirement("wasi:http/outgoing-handler@0.2.12", WASI_HTTP_DEPENDENCIES),
|
|
238
|
+
wasiRequirement("wasi:http/types@0.2.12", WASI_HTTP_DEPENDENCIES),
|
|
239
|
+
];
|
|
240
|
+
function forNodeSpecifier(requirements, nodeSpecifier) {
|
|
241
|
+
return requirements.map((requirement) => ({ ...requirement, nodeSpecifier }));
|
|
242
|
+
}
|
|
243
|
+
function tlsRequirements() {
|
|
244
|
+
return [{ ...TLS_WIT_REQUIREMENT, nodeSpecifier: "node:https", guestExports: [] }];
|
|
245
|
+
}
|
|
246
|
+
export const HTTPS_WASI_SOCKETS_0_2_10_WIT_REQUIREMENTS = [
|
|
247
|
+
...forNodeSpecifier(HTTP_WASI_SOCKETS_0_2_10_WIT_REQUIREMENTS, "node:https"),
|
|
248
|
+
...tlsRequirements(),
|
|
249
|
+
];
|
|
250
|
+
export const HTTPS_WASI_SOCKETS_WIT_REQUIREMENTS = [
|
|
251
|
+
...forNodeSpecifier(HTTP_WASI_SOCKETS_WIT_REQUIREMENTS, "node:https"),
|
|
252
|
+
...tlsRequirements(),
|
|
253
|
+
];
|
|
254
|
+
export const HTTPS_WASI_HTTP_WIT_REQUIREMENTS = forNodeSpecifier(HTTP_WASI_HTTP_WIT_REQUIREMENTS, "node:https");
|
|
255
|
+
export const NET_WASI_SOCKETS_WIT_REQUIREMENTS = forNodeSpecifier(HTTP_WASI_SOCKETS_WIT_REQUIREMENTS, "node:net");
|
|
256
|
+
export const NET_WASI_SOCKETS_0_2_10_WIT_REQUIREMENTS = forNodeSpecifier(HTTP_WASI_SOCKETS_0_2_10_WIT_REQUIREMENTS, "node:net");
|
|
257
|
+
export function witInjectionWarnings(result) {
|
|
258
|
+
const messages = [];
|
|
259
|
+
if (result.imports.length > 0) {
|
|
260
|
+
messages.push(`Jco added generated WIT import${result.imports.length === 1 ? "" : "s"} ${result.imports.join(", ")} to ${result.worldFile} because bundled source uses a host-backed Node API. Review and commit this change.`);
|
|
261
|
+
}
|
|
262
|
+
if (result.exports.length > 0) {
|
|
263
|
+
messages.push(`Jco added generated WIT export${result.exports.length === 1 ? "" : "s"} ${result.exports.join(", ")} to ${result.worldFile} because bundled source uses a host-backed Node API. Review and commit this change.`);
|
|
264
|
+
}
|
|
265
|
+
for (const dependencyFile of result.dependencyFiles) {
|
|
266
|
+
messages.push(`Jco added the required WIT dependency at ${dependencyFile}.`);
|
|
267
|
+
}
|
|
268
|
+
return messages;
|
|
269
|
+
}
|
|
270
|
+
function withoutComments(source) {
|
|
271
|
+
return source
|
|
272
|
+
.replace(/\/\*[\s\S]*?\*\//g, (comment) => " ".repeat(comment.length))
|
|
273
|
+
.replace(/\/\/[^\r\n]*/g, (comment) => " ".repeat(comment.length));
|
|
274
|
+
}
|
|
275
|
+
function matchingBrace(source, openBrace) {
|
|
276
|
+
let depth = 0;
|
|
277
|
+
let lineComment = false;
|
|
278
|
+
let blockComment = false;
|
|
279
|
+
let quote;
|
|
280
|
+
for (let index = openBrace; index < source.length; index++) {
|
|
281
|
+
const char = source[index];
|
|
282
|
+
const next = source[index + 1];
|
|
283
|
+
if (lineComment) {
|
|
284
|
+
if (char === "\n") {
|
|
285
|
+
lineComment = false;
|
|
286
|
+
}
|
|
287
|
+
continue;
|
|
288
|
+
}
|
|
289
|
+
if (blockComment) {
|
|
290
|
+
if (char === "*" && next === "/") {
|
|
291
|
+
blockComment = false;
|
|
292
|
+
index++;
|
|
293
|
+
}
|
|
294
|
+
continue;
|
|
295
|
+
}
|
|
296
|
+
if (quote) {
|
|
297
|
+
if (char === "\\") {
|
|
298
|
+
index++;
|
|
299
|
+
}
|
|
300
|
+
else if (char === quote) {
|
|
301
|
+
quote = undefined;
|
|
302
|
+
}
|
|
303
|
+
continue;
|
|
304
|
+
}
|
|
305
|
+
if (char === "/" && next === "/") {
|
|
306
|
+
lineComment = true;
|
|
307
|
+
index++;
|
|
308
|
+
}
|
|
309
|
+
else if (char === "/" && next === "*") {
|
|
310
|
+
blockComment = true;
|
|
311
|
+
index++;
|
|
312
|
+
}
|
|
313
|
+
else if (char === '"' || char === "'") {
|
|
314
|
+
quote = char;
|
|
315
|
+
}
|
|
316
|
+
else if (char === "{") {
|
|
317
|
+
depth++;
|
|
318
|
+
}
|
|
319
|
+
else if (char === "}" && --depth === 0) {
|
|
320
|
+
return index;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
throw new Error("unterminated WIT world declaration");
|
|
324
|
+
}
|
|
325
|
+
function worldsIn(file, source) {
|
|
326
|
+
const visible = withoutComments(source);
|
|
327
|
+
const worlds = [];
|
|
328
|
+
const pattern = /\bworld\s+(%?[A-Za-z][A-Za-z0-9-]*)\s*\{/g;
|
|
329
|
+
for (let match = pattern.exec(visible); match; match = pattern.exec(visible)) {
|
|
330
|
+
const openBrace = visible.indexOf("{", match.index);
|
|
331
|
+
worlds.push({
|
|
332
|
+
name: match[1],
|
|
333
|
+
file,
|
|
334
|
+
source,
|
|
335
|
+
openBrace,
|
|
336
|
+
closeBrace: matchingBrace(source, openBrace),
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
return worlds;
|
|
340
|
+
}
|
|
341
|
+
function selectedWorldName(worldName) {
|
|
342
|
+
if (!worldName) {
|
|
343
|
+
return undefined;
|
|
344
|
+
}
|
|
345
|
+
return worldName
|
|
346
|
+
.split("/")
|
|
347
|
+
.pop()
|
|
348
|
+
.replace(/@\d+(?:\.\d+)*(?:-[A-Za-z0-9.-]+)?$/, "");
|
|
349
|
+
}
|
|
350
|
+
async function rootWitFiles(witPath) {
|
|
351
|
+
const path = resolve(witPath);
|
|
352
|
+
if ((await stat(path)).isFile()) {
|
|
353
|
+
return [path];
|
|
354
|
+
}
|
|
355
|
+
const entries = await readdir(path, { withFileTypes: true });
|
|
356
|
+
return entries
|
|
357
|
+
.filter((entry) => entry.isFile() && entry.name.endsWith(".wit"))
|
|
358
|
+
.map((entry) => join(path, entry.name));
|
|
359
|
+
}
|
|
360
|
+
async function findWorld(witPath, worldName) {
|
|
361
|
+
const declarations = (await Promise.all((await rootWitFiles(witPath)).map(async (file) => worldsIn(file, await readFile(file, "utf8"))))).flat();
|
|
362
|
+
const selected = selectedWorldName(worldName);
|
|
363
|
+
if (selected) {
|
|
364
|
+
const matches = declarations.filter(({ name }) => name === selected);
|
|
365
|
+
if (matches.length !== 1) {
|
|
366
|
+
throw new Error(`unable to inject Node WIT imports: selected world ${worldName} was ${matches.length ? "ambiguous" : "not found"}`);
|
|
367
|
+
}
|
|
368
|
+
return matches[0];
|
|
369
|
+
}
|
|
370
|
+
if (declarations.length !== 1) {
|
|
371
|
+
throw new Error(`unable to inject Node WIT imports: specify --world because the WIT package defines ${declarations.length} worlds`);
|
|
372
|
+
}
|
|
373
|
+
return declarations[0];
|
|
374
|
+
}
|
|
375
|
+
function worldHasDeclaration(world, declaration, witName) {
|
|
376
|
+
const body = withoutComments(world.source.slice(world.openBrace + 1, world.closeBrace));
|
|
377
|
+
const escaped = witName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
378
|
+
return new RegExp(`\\b${declaration}\\s+(?:%?[A-Za-z][A-Za-z0-9-]*\\s*:\\s*)?${escaped}\\s*;`).test(body);
|
|
379
|
+
}
|
|
380
|
+
function insertionFor(imports, exports, newline) {
|
|
381
|
+
return [
|
|
382
|
+
...imports.map(({ nodeSpecifier, witImport }) => `${newline} // Added by Jco because bundled source imports ${nodeSpecifier}.${newline} import ${witImport};`),
|
|
383
|
+
...exports.map(({ nodeSpecifier, witExport }) => `${newline} // Added by Jco so the ${nodeSpecifier} host can invoke guest callbacks.${newline} export ${witExport};`),
|
|
384
|
+
].join("");
|
|
385
|
+
}
|
|
386
|
+
function requirementWitExports(requirement) {
|
|
387
|
+
return [
|
|
388
|
+
...new Set([
|
|
389
|
+
...(requirement.witExport ? [requirement.witExport] : []),
|
|
390
|
+
...(requirement.guestExports ?? []).map(({ witExport }) => witExport),
|
|
391
|
+
]),
|
|
392
|
+
];
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Add Node capability imports and companion callback exports to the selected user world in place.
|
|
396
|
+
*
|
|
397
|
+
* This is intentionally visible in source control. Repeated calls are no-ops,
|
|
398
|
+
* and dependency packages supplied by the user are never overwritten.
|
|
399
|
+
*/
|
|
400
|
+
export async function injectNodeWitImports(witPath, worldName, requirements) {
|
|
401
|
+
if (requirements.length === 0) {
|
|
402
|
+
return undefined;
|
|
403
|
+
}
|
|
404
|
+
const world = await findWorld(witPath, worldName);
|
|
405
|
+
const merged = new Map();
|
|
406
|
+
for (const requirement of requirements) {
|
|
407
|
+
merged.set(requirement.witImport, mergeNodeWitRequirement(merged.get(requirement.witImport), requirement));
|
|
408
|
+
}
|
|
409
|
+
const uniqueRequirements = [...merged.values()];
|
|
410
|
+
const missingImports = uniqueRequirements.filter(({ witImport }) => !worldHasDeclaration(world, "import", witImport));
|
|
411
|
+
const missingExports = uniqueRequirements.flatMap((requirement) => requirementWitExports(requirement)
|
|
412
|
+
.filter((witExport) => !worldHasDeclaration(world, "export", witExport))
|
|
413
|
+
.map((witExport) => ({ nodeSpecifier: requirement.nodeSpecifier, witExport })));
|
|
414
|
+
if (missingImports.length === 0 && missingExports.length === 0) {
|
|
415
|
+
return undefined;
|
|
416
|
+
}
|
|
417
|
+
const newline = world.source.includes("\r\n") ? "\r\n" : "\n";
|
|
418
|
+
const root = (await stat(resolve(witPath))).isFile() ? dirname(resolve(witPath)) : resolve(witPath);
|
|
419
|
+
const dependencyFiles = [];
|
|
420
|
+
const dependencies = new Map();
|
|
421
|
+
const changedRequirements = uniqueRequirements.filter((requirement) => missingImports.includes(requirement) ||
|
|
422
|
+
requirementWitExports(requirement).some((witExport) => missingExports.some((missing) => missing.witExport === witExport)));
|
|
423
|
+
for (const requirement of changedRequirements) {
|
|
424
|
+
const packages = [
|
|
425
|
+
{
|
|
426
|
+
dependencyDirectory: requirement.dependencyDirectory,
|
|
427
|
+
dependencySources: requirement.dependencySources,
|
|
428
|
+
},
|
|
429
|
+
...(requirement.dependencyPackages ?? []),
|
|
430
|
+
];
|
|
431
|
+
for (const dependency of packages) {
|
|
432
|
+
const previous = dependencies.get(dependency.dependencyDirectory);
|
|
433
|
+
dependencies.set(dependency.dependencyDirectory, {
|
|
434
|
+
...dependency,
|
|
435
|
+
dependencySources: [
|
|
436
|
+
...new Set([...(previous?.dependencySources ?? []), ...dependency.dependencySources]),
|
|
437
|
+
],
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
for (const dependency of dependencies.values()) {
|
|
442
|
+
const dependencyDir = join(root, "deps", dependency.dependencyDirectory);
|
|
443
|
+
await mkdir(dependencyDir, { recursive: true });
|
|
444
|
+
for (const source of dependency.dependencySources) {
|
|
445
|
+
const destination = join(dependencyDir, basename(source));
|
|
446
|
+
try {
|
|
447
|
+
await writeFile(destination, await readFile(source), { flag: "wx" });
|
|
448
|
+
dependencyFiles.push(destination);
|
|
449
|
+
}
|
|
450
|
+
catch (error) {
|
|
451
|
+
if (error.code !== "EEXIST") {
|
|
452
|
+
throw error;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
const updated = world.source.slice(0, world.openBrace + 1) +
|
|
458
|
+
insertionFor(missingImports, missingExports, newline) +
|
|
459
|
+
world.source.slice(world.openBrace + 1);
|
|
460
|
+
await writeFile(world.file, updated);
|
|
461
|
+
return {
|
|
462
|
+
witPath: root,
|
|
463
|
+
worldFile: world.file,
|
|
464
|
+
dependencyFiles,
|
|
465
|
+
imports: missingImports.map(({ witImport }) => witImport),
|
|
466
|
+
exports: missingExports.map(({ witExport }) => witExport),
|
|
467
|
+
};
|
|
468
|
+
}
|
|
469
|
+
//# sourceMappingURL=node-wit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-wit.js","sourceRoot":"","sources":["../src/node-wit.ts"],"names":[],"mappings":"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"}
|
|
Binary file
|
|
Binary file
|