Skip to content

Commit c2cbddd

Browse files
committed
[New] add missing core modules, and determine them dynamically by node version.
Closes #100. Closes #110. Closes #111. Fixes #112.
1 parent 1f7aa37 commit c2cbddd

File tree

3 files changed

+92
-48
lines changed

3 files changed

+92
-48
lines changed

lib/core.js

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,22 @@
1-
module.exports = require('./core.json').reduce(function (acc, x) {
2-
acc[x] = true;
3-
return acc;
4-
}, {});
1+
var current = process.versions.node.split('.');
2+
3+
function versionIncluded(version) {
4+
if (version === '*') return true;
5+
var versionParts = version.split('.');
6+
for (var i = 0; i < 3; ++i) {
7+
if ((current[i] || 0) >= (versionParts[i] || 0)) return true;
8+
}
9+
return false;
10+
}
11+
12+
var data = require('./core.json');
13+
14+
var core = {};
15+
for (var version in data) {
16+
if (Object.prototype.hasOwnProperty.call(data, version) && versionIncluded(version)) {
17+
for (var i = 0; i < data[version].length; ++i) {
18+
core[data[version][i]] = true;
19+
}
20+
}
21+
}
22+
module.exports = core;

lib/core.json

Lines changed: 47 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,47 @@
1-
[
2-
"assert",
3-
"buffer_ieee754",
4-
"buffer",
5-
"child_process",
6-
"cluster",
7-
"console",
8-
"constants",
9-
"crypto",
10-
"_debugger",
11-
"dgram",
12-
"dns",
13-
"domain",
14-
"events",
15-
"freelist",
16-
"fs",
17-
"http",
18-
"https",
19-
"_linklist",
20-
"module",
21-
"net",
22-
"os",
23-
"path",
24-
"punycode",
25-
"querystring",
26-
"readline",
27-
"repl",
28-
"stream",
29-
"string_decoder",
30-
"sys",
31-
"timers",
32-
"tls",
33-
"tty",
34-
"url",
35-
"util",
36-
"vm",
37-
"zlib"
38-
]
1+
{
2+
"*": [
3+
"assert",
4+
"buffer_ieee754",
5+
"buffer",
6+
"child_process",
7+
"cluster",
8+
"console",
9+
"constants",
10+
"crypto",
11+
"_debugger",
12+
"dgram",
13+
"dns",
14+
"domain",
15+
"events",
16+
"freelist",
17+
"fs",
18+
"http",
19+
"https",
20+
"_linklist",
21+
"module",
22+
"net",
23+
"os",
24+
"path",
25+
"punycode",
26+
"querystring",
27+
"readline",
28+
"repl",
29+
"stream",
30+
"string_decoder",
31+
"sys",
32+
"timers",
33+
"tls",
34+
"tty",
35+
"url",
36+
"util",
37+
"vm",
38+
"zlib"
39+
],
40+
"0.11": [
41+
"_http_server"
42+
],
43+
"1.0": [
44+
"process",
45+
"v8"
46+
]
47+
}

test/core.js

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,28 @@ var test = require('tape');
22
var resolve = require('../');
33

44
test('core modules', function (t) {
5-
t.ok(resolve.isCore('fs'));
6-
t.ok(resolve.isCore('net'));
7-
t.ok(resolve.isCore('http'));
8-
9-
t.ok(!resolve.isCore('seq'));
10-
t.ok(!resolve.isCore('../'));
5+
t.test('isCore()', function (st) {
6+
st.ok(resolve.isCore('fs'));
7+
st.ok(resolve.isCore('net'));
8+
st.ok(resolve.isCore('http'));
9+
10+
st.ok(!resolve.isCore('seq'));
11+
st.ok(!resolve.isCore('../'));
12+
st.end();
13+
});
14+
15+
t.test('core list', function (st) {
16+
st.plan(resolve.core.length);
17+
18+
for (var i = 0; i < resolve.core.length; ++i) {
19+
st.doesNotThrow(
20+
function () { require(resolve.core[i]); },
21+
'requiring ' + resolve.core[i] + ' does not throw'
22+
);
23+
}
24+
25+
st.end();
26+
});
27+
1128
t.end();
1229
});

0 commit comments

Comments
 (0)