/
load.js
53 lines (41 loc) · 1.16 KB
/
load.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
process.env.TZ = "America/Los_Angeles";
var smash = require("smash"),
jsdom = require("jsdom");
require("./XMLHttpRequest");
module.exports = function() {
var files = [].slice.call(arguments).map(function(d) { return "src/" + d; }),
expression = "d3",
sandbox = null;
files.unshift("src/start");
files.push("src/end");
function topic() {
smash.load(files, expression, sandbox, this.callback);
}
topic.expression = function(_) {
expression = _;
return topic;
};
topic.document = function(_) {
var document = jsdom.jsdom("<html><head></head><body></body></html>");
// Monkey-patch createRange support to JSDOM.
document.createRange = function() {
return {
selectNode: function() {},
createContextualFragment: jsdom.jsdom
};
};
sandbox = {
XMLHttpRequest: XMLHttpRequest,
document: document,
window: document.createWindow(),
setTimeout: setTimeout,
clearTimeout: clearTimeout,
Date: Date // so we can override Date.now in tests
};
return topic;
};
return topic;
};
process.on("uncaughtException", function(e) {
console.trace(e.stack);
});