summaryrefslogtreecommitdiff
path: root/ext/node/lib.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2023-01-24 15:05:54 +0100
committerGitHub <noreply@github.com>2023-01-24 09:05:54 -0500
commitfc2e00152b162280e78b06028d51274e33275629 (patch)
treeee567a99cabc6633454de231939f7d898146f1d8 /ext/node/lib.rs
parentcadeaae045d2489fe125286b8c2c641c6d973c3f (diff)
feat: support node built-in module imports (#17264)
Co-authored-by: David Sherret <dsherret@gmail.com>
Diffstat (limited to 'ext/node/lib.rs')
-rw-r--r--ext/node/lib.rs194
1 files changed, 194 insertions, 0 deletions
diff --git a/ext/node/lib.rs b/ext/node/lib.rs
index 8a36e95fa..3eda18958 100644
--- a/ext/node/lib.rs
+++ b/ext/node/lib.rs
@@ -675,3 +675,197 @@ fn op_require_break_on_next_statement(state: &mut OpState) {
.borrow_mut()
.wait_for_session_and_break_on_next_statement()
}
+
+pub struct NodeModulePolyfill {
+ /// Name of the module like "assert" or "timers/promises"
+ pub name: &'static str,
+
+ /// Specifier relative to the root of `deno_std` repo, like "node/assert.ts"
+ pub specifier: &'static str,
+}
+
+pub static SUPPORTED_BUILTIN_NODE_MODULES: &[NodeModulePolyfill] = &[
+ NodeModulePolyfill {
+ name: "assert",
+ specifier: "node/assert.ts",
+ },
+ NodeModulePolyfill {
+ name: "assert/strict",
+ specifier: "node/assert/strict.ts",
+ },
+ NodeModulePolyfill {
+ name: "async_hooks",
+ specifier: "node/async_hooks.ts",
+ },
+ NodeModulePolyfill {
+ name: "buffer",
+ specifier: "node/buffer.ts",
+ },
+ NodeModulePolyfill {
+ name: "child_process",
+ specifier: "node/child_process.ts",
+ },
+ NodeModulePolyfill {
+ name: "cluster",
+ specifier: "node/cluster.ts",
+ },
+ NodeModulePolyfill {
+ name: "console",
+ specifier: "node/console.ts",
+ },
+ NodeModulePolyfill {
+ name: "constants",
+ specifier: "node/constants.ts",
+ },
+ NodeModulePolyfill {
+ name: "crypto",
+ specifier: "node/crypto.ts",
+ },
+ NodeModulePolyfill {
+ name: "dgram",
+ specifier: "node/dgram.ts",
+ },
+ NodeModulePolyfill {
+ name: "dns",
+ specifier: "node/dns.ts",
+ },
+ NodeModulePolyfill {
+ name: "dns/promises",
+ specifier: "node/dns/promises.ts",
+ },
+ NodeModulePolyfill {
+ name: "domain",
+ specifier: "node/domain.ts",
+ },
+ NodeModulePolyfill {
+ name: "events",
+ specifier: "node/events.ts",
+ },
+ NodeModulePolyfill {
+ name: "fs",
+ specifier: "node/fs.ts",
+ },
+ NodeModulePolyfill {
+ name: "fs/promises",
+ specifier: "node/fs/promises.ts",
+ },
+ NodeModulePolyfill {
+ name: "http",
+ specifier: "node/http.ts",
+ },
+ NodeModulePolyfill {
+ name: "https",
+ specifier: "node/https.ts",
+ },
+ NodeModulePolyfill {
+ name: "module",
+ // NOTE(bartlomieju): `module` is special, because we don't want to use
+ // `deno_std/node/module.ts`, but instead use a special shim that we
+ // provide in `ext/node`.
+ specifier: "[USE `deno_node::MODULE_ES_SHIM` to get this module]",
+ },
+ NodeModulePolyfill {
+ name: "net",
+ specifier: "node/net.ts",
+ },
+ NodeModulePolyfill {
+ name: "os",
+ specifier: "node/os.ts",
+ },
+ NodeModulePolyfill {
+ name: "path",
+ specifier: "node/path.ts",
+ },
+ NodeModulePolyfill {
+ name: "path/posix",
+ specifier: "node/path/posix.ts",
+ },
+ NodeModulePolyfill {
+ name: "path/win32",
+ specifier: "node/path/win32.ts",
+ },
+ NodeModulePolyfill {
+ name: "perf_hooks",
+ specifier: "node/perf_hooks.ts",
+ },
+ NodeModulePolyfill {
+ name: "process",
+ specifier: "node/process.ts",
+ },
+ NodeModulePolyfill {
+ name: "querystring",
+ specifier: "node/querystring.ts",
+ },
+ NodeModulePolyfill {
+ name: "readline",
+ specifier: "node/readline.ts",
+ },
+ NodeModulePolyfill {
+ name: "stream",
+ specifier: "node/stream.ts",
+ },
+ NodeModulePolyfill {
+ name: "stream/consumers",
+ specifier: "node/stream/consumers.mjs",
+ },
+ NodeModulePolyfill {
+ name: "stream/promises",
+ specifier: "node/stream/promises.mjs",
+ },
+ NodeModulePolyfill {
+ name: "stream/web",
+ specifier: "node/stream/web.ts",
+ },
+ NodeModulePolyfill {
+ name: "string_decoder",
+ specifier: "node/string_decoder.ts",
+ },
+ NodeModulePolyfill {
+ name: "sys",
+ specifier: "node/sys.ts",
+ },
+ NodeModulePolyfill {
+ name: "timers",
+ specifier: "node/timers.ts",
+ },
+ NodeModulePolyfill {
+ name: "timers/promises",
+ specifier: "node/timers/promises.ts",
+ },
+ NodeModulePolyfill {
+ name: "tls",
+ specifier: "node/tls.ts",
+ },
+ NodeModulePolyfill {
+ name: "tty",
+ specifier: "node/tty.ts",
+ },
+ NodeModulePolyfill {
+ name: "url",
+ specifier: "node/url.ts",
+ },
+ NodeModulePolyfill {
+ name: "util",
+ specifier: "node/util.ts",
+ },
+ NodeModulePolyfill {
+ name: "util/types",
+ specifier: "node/util/types.ts",
+ },
+ NodeModulePolyfill {
+ name: "v8",
+ specifier: "node/v8.ts",
+ },
+ NodeModulePolyfill {
+ name: "vm",
+ specifier: "node/vm.ts",
+ },
+ NodeModulePolyfill {
+ name: "worker_threads",
+ specifier: "node/worker_threads.ts",
+ },
+ NodeModulePolyfill {
+ name: "zlib",
+ specifier: "node/zlib.ts",
+ },
+];