improve 6to5-node and fix register hook

This commit is contained in:
Sebastian McKenzie 2014-10-08 10:17:50 +11:00
parent fa86f58389
commit b194461ba3
3 changed files with 19 additions and 7 deletions

View File

@ -20,11 +20,15 @@ commander.parse(process.argv);
to5.register();
var _eval = function (code, filename) {
var mod = new Module(".");
return mod._compile(code, filename);
};
if (commander.eval) {
var code = to5.transform(commander.eval, { filename: "eval" });
var mod = new Module(".");
var result = mod._compile(code, "eval");
var result = _eval(code, "eval");
if (commander.print) console.log(result);
} else {
var filenames = commander.args;
@ -43,7 +47,8 @@ function replStart() {
prompt: "> ",
input: process.stdin,
output: process.stdout,
eval: replEval
eval: replEval,
useGlobal: true
});
}
@ -55,7 +60,7 @@ function replEval(code, context, filename, callback) {
code = code.slice(1, -2); // remove "(" and "\n)"
code = to5.transform(code, { filename: filename });
result = vm.runInContext(code, context, filename, { displayErrors: false });
result = vm.runInThisContext(code, filename);
} catch (e) {
err = e;
}

View File

@ -1,16 +1,23 @@
require("./polyfill");
var maps = {};
var node = require("./node");
var old = require.extensions[".js"];
// escodegen lazy requires source-map so we force it to load before we override
// the built-in requires
var escodegen = require("escodegen");
escodegen.generate({ type: "Program", body: [] }, { sourceMap: true });
// TODO: source maps - Error.prepareStackTrace override
require.extensions[".js"] = function (m, filename) {
require.extensions[".js"] =
require.extensions[".es6"] = function (m, filename) {
if (filename.indexOf("node_modules") >= 0) {
return old.apply(this, arguments);
}
var result = exports.transformFileSync(filename, {
var result = node.transformFileSync(filename, {
sourceMapObject: true
});

View File

@ -16,7 +16,7 @@ exports.ForStatement = function (node) {
};
_.each(node.body, function (child) {
if (child.type === "VariableDeclaration" && child.kind === "const") {
if (child && child.type === "VariableDeclaration" && child.kind === "const") {
_.each(child.declarations, function (declar) {
var name = declar.id.name;
check(declar, name);