summaryrefslogtreecommitdiff
path: root/cli/compat.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2021-10-05 01:35:55 +0200
committerGitHub <noreply@github.com>2021-10-05 01:35:55 +0200
commitf1d3a170430501b4fab1a2d2abb5d77528251c77 (patch)
tree4951edeccc1ef25e4dc2703a6a8e2b38a33fbb20 /cli/compat.rs
parent64a7187238c4f291f254bd6eb58138a3a6534898 (diff)
feat: add --compat flag to provide built-in Node modules (#12293)
This commit adds "--compat" flag. When the flag is passed a set of mappings for built-in Node modules is injected into the import map. If user doesn't explicitly provide an import map (using "--import-map" flag) then a map is created on the fly. If there are already existing mappings in import map that would clash with built-in Node modules a set of diagnostics is printed to the terminal with suggestions how to proceed.
Diffstat (limited to 'cli/compat.rs')
-rw-r--r--cli/compat.rs60
1 files changed, 60 insertions, 0 deletions
diff --git a/cli/compat.rs b/cli/compat.rs
new file mode 100644
index 000000000..a3d16538d
--- /dev/null
+++ b/cli/compat.rs
@@ -0,0 +1,60 @@
+// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
+
+use std::collections::HashMap;
+
+static SUPPORTED_MODULES: &[&str] = &[
+ "assert",
+ "assert/strict",
+ "async_hooks",
+ "buffer",
+ "child_process",
+ "cluster",
+ "console",
+ "constants",
+ "crypto",
+ "dgram",
+ "dns",
+ "domain",
+ "events",
+ "fs",
+ "fs/promises",
+ "http",
+ "https",
+ "module",
+ "net",
+ "os",
+ "path",
+ "path/posix",
+ "path/win32",
+ "perf_hooks",
+ "process",
+ "querystring",
+ "readline",
+ "stream",
+ "stream/promises",
+ "stream/web",
+ "string_decoder",
+ "sys",
+ "timers",
+ "timers/promises",
+ "tls",
+ "tty",
+ "url",
+ "util",
+ "util/types",
+ "v8",
+ "vm",
+ "zlib",
+];
+
+pub fn get_mapped_node_builtins() -> HashMap<String, String> {
+ let mut mappings = HashMap::new();
+
+ for module in SUPPORTED_MODULES {
+ // TODO(bartlomieju): this is unversioned, and should be fixed to use latest stable?
+ let module_url = format!("https://deno.land/std/node/{}.ts", module);
+ mappings.insert(module.to_string(), module_url);
+ }
+
+ mappings
+}