From 8b32e81de166b70b0009101c39113b0f588db23d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Wed, 6 Oct 2021 01:25:13 +0200 Subject: [PATCH] feat(compat): add support for node: prefixed built-ins (#12337) Adds support for "node:" prefix for Node built-ins in "--compat" mode. As per https://nodejs.org/api/esm.html#esm_node_imports --- cli/compat.rs | 7 ++++++- cli/tests/integration/compat_tests.rs | 5 +++++ cli/tests/testdata/compat/node_fs_promises.js | 3 +++ 3 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 cli/tests/testdata/compat/node_fs_promises.js diff --git a/cli/compat.rs b/cli/compat.rs index a3d16538dc0ca4..eb67f4d12d8bdb 100644 --- a/cli/compat.rs +++ b/cli/compat.rs @@ -53,7 +53,12 @@ pub fn get_mapped_node_builtins() -> HashMap { 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.insert(module.to_string(), module_url.clone()); + + // Support for `node:` + // https://nodejs.org/api/esm.html#esm_node_imports + let node_prefixed = format!("node:{}", module); + mappings.insert(node_prefixed, module_url); } mappings diff --git a/cli/tests/integration/compat_tests.rs b/cli/tests/integration/compat_tests.rs index 4d93d370d25abc..e1da32cafdca32 100644 --- a/cli/tests/integration/compat_tests.rs +++ b/cli/tests/integration/compat_tests.rs @@ -7,6 +7,11 @@ itest!(fs_promises { output: "compat/fs_promises.out", }); +itest!(node_prefix_fs_promises { + args: "run --compat --unstable -A compat/node_fs_promises.js", + output: "compat/fs_promises.out", +}); + itest!(existing_import_map { args: "run --compat --import-map compat/existing_import_map.json compat/fs_promises.js", output: "compat/existing_import_map.out", diff --git a/cli/tests/testdata/compat/node_fs_promises.js b/cli/tests/testdata/compat/node_fs_promises.js new file mode 100644 index 00000000000000..b2174b22bb05f5 --- /dev/null +++ b/cli/tests/testdata/compat/node_fs_promises.js @@ -0,0 +1,3 @@ +import fs from "node:fs/promises"; +const data = await fs.readFile("compat/test.txt", "utf-8"); +console.log(data);