Skip to content

Commit f178238

Browse files
kevinkassimory
authored andcommitted
feat(std/node) add CommonJS require (denoland/deno#3380)
1 parent 78ba823 commit f178238

File tree

11 files changed

+1409
-0
lines changed

11 files changed

+1409
-0
lines changed

node/require.ts

Lines changed: 1189 additions & 0 deletions
Large diffs are not rendered by default.

node/require_test.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { test } from "../testing/mod.ts";
2+
import { assertEquals, assert } from "../testing/asserts.ts";
3+
import { makeRequire } from "./require.ts";
4+
5+
const selfPath = window.unescape(import.meta.url.substring(7));
6+
// TS compiler would try to resolve if function named "require"
7+
// Thus suffixing it with require_ to fix this...
8+
const require_ = makeRequire(selfPath);
9+
10+
test(function requireSuccess() {
11+
const result = require_("./node/tests/cjs/cjs_a.js");
12+
assert("helloA" in result);
13+
assert("helloB" in result);
14+
assert("C" in result);
15+
assert("leftPad" in result);
16+
assertEquals(result.helloA(), "A");
17+
assertEquals(result.helloB(), "B");
18+
assertEquals(result.C, "C");
19+
assertEquals(result.leftPad("pad", 4), " pad");
20+
});
21+
22+
test(function requireCycle() {
23+
const resultA = require_("./node/tests/cjs/cjs_cycle_a");
24+
const resultB = require_("./node/tests/cjs/cjs_cycle_b");
25+
assert(resultA);
26+
assert(resultB);
27+
});

node/tests/cjs/cjs_a.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
/* eslint-disable */
2+
const { helloB } = require("./cjs_b.js");
3+
const C = require("./subdir/cjs_c");
4+
const leftPad = require("left-pad");
5+
6+
function helloA() {
7+
return "A";
8+
}
9+
10+
module.exports = { helloA, helloB, C, leftPad };

node/tests/cjs/cjs_b.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
function helloB() {
2+
return "B";
3+
}
4+
5+
module.exports = { helloB };

node/tests/cjs/cjs_cycle_a.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = false;
2+
require("./cjs_cycle_a");
3+
module.exports = true;

node/tests/cjs/cjs_cycle_b.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = false;
2+
require("./cjs_cycle_b");
3+
module.exports = true;

node/tests/cjs/subdir/cjs_c.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
module.exports = "C";

node/tests/node_modules/left-pad/README.md

Lines changed: 36 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

node/tests/node_modules/left-pad/index.js

Lines changed: 52 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

node/tests/node_modules/left-pad/package.json

Lines changed: 68 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

node/tests/package.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"name": "deno_std_node",
3+
"version": "0.0.1",
4+
"description": "",
5+
"main": "index.js",
6+
"dependencies": {
7+
"left-pad": "^1.3.0"
8+
},
9+
"devDependencies": {},
10+
"scripts": {
11+
"test": "echo \"Error: no test specified\" && exit 1"
12+
},
13+
"author": "",
14+
"license": "ISC"
15+
}

0 commit comments

Comments
 (0)