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
This commit is contained in:
Bartek Iwańczuk 2022-08-09 21:06:01 +02:00 committed by GitHub
parent af618e3b8f
commit 1f54d87789
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 1648 additions and 0 deletions

11
cli/tests/testdata/commonjs/example.js vendored Normal file
View file

@ -0,0 +1,11 @@
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
// deno-lint-ignore no-undef
const processMod = require("process");
const osMod = require("node:os");
console.log("process.pid", processMod.pid);
console.log("os.EOL", osMod.EOL);
const leftPad = require("left-pad");
const json = require("./data");
console.log(json);
console.log(leftPad("foo", 5)); // => " foo"
console.log("main module", processMod.mainModule.filename);