From 617eeabe8369d7bfca7951d1cd55ac58ede1f9fb Mon Sep 17 00:00:00 2001 From: Bartek IwaƄczuk Date: Mon, 18 Oct 2021 19:36:28 +0200 Subject: feat(unstable): Node CJS and ESM resolvers for compat mode (#12424) This commit adds CJS and ESM Node resolvers to the "--compat" mode. The functionality is spread across "cli/compat" module and Node compatibility layer in "deno_std/node"; this stems from the fact that ES module resolution can only be implemented in Rust as it needs to directly integrated with "deno_core"; however "deno_std/node" already provided CJS module resolution. Currently this resolution is only active when running a files using "deno run --compat --unstable ", and is not available in other subcommands, which will be changed in follow up commits. --- cli/compat/testdata/conditions/main.js | 1 + .../node_modules/imports_exports/import_export.js | 6 ++++++ .../node_modules/imports_exports/import_polyfill.js | 3 +++ .../node_modules/imports_exports/package.json | 17 +++++++++++++++++ .../node_modules/imports_exports/require_export.cjs | 6 ++++++ .../node_modules/imports_exports/require_polyfill.js | 3 +++ cli/compat/testdata/conditions/package.json | 7 +++++++ 7 files changed, 43 insertions(+) create mode 100644 cli/compat/testdata/conditions/main.js create mode 100644 cli/compat/testdata/conditions/node_modules/imports_exports/import_export.js create mode 100644 cli/compat/testdata/conditions/node_modules/imports_exports/import_polyfill.js create mode 100644 cli/compat/testdata/conditions/node_modules/imports_exports/package.json create mode 100644 cli/compat/testdata/conditions/node_modules/imports_exports/require_export.cjs create mode 100644 cli/compat/testdata/conditions/node_modules/imports_exports/require_polyfill.js create mode 100644 cli/compat/testdata/conditions/package.json (limited to 'cli/compat/testdata/conditions') diff --git a/cli/compat/testdata/conditions/main.js b/cli/compat/testdata/conditions/main.js new file mode 100644 index 000000000..cafddb5d6 --- /dev/null +++ b/cli/compat/testdata/conditions/main.js @@ -0,0 +1 @@ +import "imports_exports"; diff --git a/cli/compat/testdata/conditions/node_modules/imports_exports/import_export.js b/cli/compat/testdata/conditions/node_modules/imports_exports/import_export.js new file mode 100644 index 000000000..3ebd222ea --- /dev/null +++ b/cli/compat/testdata/conditions/node_modules/imports_exports/import_export.js @@ -0,0 +1,6 @@ +import dep from "#dep"; + +export default { + bar: "bar", + dep, +}; diff --git a/cli/compat/testdata/conditions/node_modules/imports_exports/import_polyfill.js b/cli/compat/testdata/conditions/node_modules/imports_exports/import_polyfill.js new file mode 100644 index 000000000..76716a3ef --- /dev/null +++ b/cli/compat/testdata/conditions/node_modules/imports_exports/import_polyfill.js @@ -0,0 +1,3 @@ +export default { + polyfill: "import", +}; diff --git a/cli/compat/testdata/conditions/node_modules/imports_exports/package.json b/cli/compat/testdata/conditions/node_modules/imports_exports/package.json new file mode 100644 index 000000000..5d26359db --- /dev/null +++ b/cli/compat/testdata/conditions/node_modules/imports_exports/package.json @@ -0,0 +1,17 @@ +{ + "version": "1.0.0", + "name": "imports_exports", + "main": "./require_export.cjs", + "imports": { + "#dep": { + "import": "./import_polyfill.js", + "require": "./require_polyfill.js" + } + }, + "exports": { + ".": { + "import": "./import_export.js", + "require": "./require_export.cjs" + } + } +} diff --git a/cli/compat/testdata/conditions/node_modules/imports_exports/require_export.cjs b/cli/compat/testdata/conditions/node_modules/imports_exports/require_export.cjs new file mode 100644 index 000000000..11648c0d7 --- /dev/null +++ b/cli/compat/testdata/conditions/node_modules/imports_exports/require_export.cjs @@ -0,0 +1,6 @@ +const dep = require("#dep"); + +module.exports = { + foo: "foo", + dep, +}; \ No newline at end of file diff --git a/cli/compat/testdata/conditions/node_modules/imports_exports/require_polyfill.js b/cli/compat/testdata/conditions/node_modules/imports_exports/require_polyfill.js new file mode 100644 index 000000000..1023fd65c --- /dev/null +++ b/cli/compat/testdata/conditions/node_modules/imports_exports/require_polyfill.js @@ -0,0 +1,3 @@ +module.exports = { + polyfill: "require", +}; diff --git a/cli/compat/testdata/conditions/package.json b/cli/compat/testdata/conditions/package.json new file mode 100644 index 000000000..4d6d004dd --- /dev/null +++ b/cli/compat/testdata/conditions/package.json @@ -0,0 +1,7 @@ +{ + "name": "conditions", + "type": "module", + "dependencies": { + "imports_exports": "1.0.0" + } +} -- cgit v1.3