From 1f54d877895ea25258a941818f07c6e84d44a7a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Tue, 9 Aug 2022 21:06:01 +0200 Subject: feat: add ext/node for require support (#15362) This commit adds "ext/node" extension that implementes CommonJS module system. In the future this extension might be extended to actually contain implementation of Node compatibility layer in favor of "deno_std/node". Currently this functionality is not publicly exposed, it is available via "Deno[Deno.internal].require" namespace and is meant to be used by other functionality to be landed soon. This is a minimal first pass, things that still don't work: support for dynamic imports in CJS conditional exports --- cli/tests/testdata/commonjs/init.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 cli/tests/testdata/commonjs/init.js (limited to 'cli/tests/testdata/commonjs/init.js') diff --git a/cli/tests/testdata/commonjs/init.js b/cli/tests/testdata/commonjs/init.js new file mode 100644 index 000000000..142ae7c76 --- /dev/null +++ b/cli/tests/testdata/commonjs/init.js @@ -0,0 +1,17 @@ +import { fromFileUrl } from "../../../../test_util/std/path/mod.ts"; + +const DENO_NODE_COMPAT_URL = Deno.env.get("DENO_NODE_COMPAT_URL"); +const moduleAllUrl = `${DENO_NODE_COMPAT_URL}node/module_all.ts`; +const processUrl = `${DENO_NODE_COMPAT_URL}node/process.ts`; +let moduleName = import.meta.resolve(Deno.args[0]); +moduleName = fromFileUrl(moduleName); + +const [moduleAll, processModule] = await Promise.all([ + import(moduleAllUrl), + import(processUrl), +]); +Deno[Deno.internal].require.initializeCommonJs( + moduleAll.default, + processModule.default, +); +Deno[Deno.internal].require.Module._load(moduleName, null, true); -- cgit v1.2.3