59 строки
1.4 KiB
JavaScript
59 строки
1.4 KiB
JavaScript
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 = {console: console, Date: Date}; // so we can use deepEqual in tests
|
|
|
|
files.unshift("src/start");
|
|
files.push("src/end");
|
|
|
|
function topic() {
|
|
var callback = this.callback;
|
|
smash.load(files, expression, sandbox, function(error, result) {
|
|
if (error) console.trace(error.stack);
|
|
callback(error, result);
|
|
});
|
|
}
|
|
|
|
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 = {
|
|
console: console,
|
|
XMLHttpRequest: XMLHttpRequest,
|
|
document: document,
|
|
window: document.createWindow(),
|
|
setTimeout: setTimeout,
|
|
clearTimeout: clearTimeout,
|
|
Date: Date // so we can override Date.now in tests, and use deepEqual
|
|
};
|
|
|
|
return topic;
|
|
};
|
|
|
|
return topic;
|
|
};
|
|
|
|
process.on("uncaughtException", function(e) {
|
|
console.trace(e.stack);
|
|
});
|