6to5
Advanced tools
Comparing version 3.2.0 to 3.2.1
#!/usr/bin/env node | ||
var commander = require("commander"); | ||
var transform = require("../../lib/6to5/transformation/transform"); | ||
var transform = require("../../lib/6to5/transformation"); | ||
var util = require("../../lib/6to5/util"); | ||
@@ -6,0 +6,0 @@ var fs = require("fs"); |
"use strict"; | ||
var transform = module.exports = require("./transformation/transform"); | ||
var transform = module.exports = require("./transformation"); | ||
@@ -5,0 +5,0 @@ transform.version = require("../../package").version; |
@@ -1,7 +0,31 @@ | ||
//exports.canRun = function (ast, userAgent) { | ||
module.exports = detect; | ||
//}; | ||
//var useragent = require("useragent"); | ||
var traverse = require("../traverse"); | ||
//exports.whoCanRun = function (ast, userAgent) { | ||
var SYNTAX_KEYS = require("./syntax-keys"); | ||
var visitors = traverse.explode(require("./visitors")); | ||
//}; | ||
function detect(ast) { | ||
var stats = { | ||
syntax: {}, | ||
builtins: {} | ||
}; | ||
var detectedSyntax = function (name) { | ||
stats.syntax[name] = true; | ||
}; | ||
traverse(ast, { | ||
enter: function (node, parent) { | ||
if (SYNTAX_KEYS[node.type]) { | ||
detectedSyntax(SYNTAX_KEYS[node.type]); | ||
} | ||
var visitor = visitors[node.type]; | ||
if (visitor) visitor(node, parent, detectedSyntax); | ||
} | ||
}); | ||
return stats; | ||
} |
@@ -7,4 +7,4 @@ "use strict"; | ||
var transform = require("./transformation/transform"); | ||
var generate = require("./generation/generator"); | ||
var transform = require("./transformation"); | ||
var generate = require("./generation"); | ||
var clone = require("./helpers/clone"); | ||
@@ -11,0 +11,0 @@ var Scope = require("./traverse/scope"); |
"use strict"; | ||
var transform = require("./transformation/transform"); | ||
var transform = require("./transformation"); | ||
var util = require("./util"); | ||
@@ -5,0 +5,0 @@ var fs = require("fs"); |
@@ -6,4 +6,4 @@ "use strict"; | ||
var TransformerPass = require("./transformer-pass"); | ||
var t = require("../types"); | ||
var isFunction = require("lodash/lang/isFunction"); | ||
var traverse = require("../traverse"); | ||
var isObject = require("lodash/lang/isObject"); | ||
@@ -35,2 +35,4 @@ var each = require("lodash/collection/each"); | ||
traverse.explode(transformer); | ||
each(transformer, function (fns, type) { | ||
@@ -51,9 +53,2 @@ // hidden property | ||
transformer[type] = fns; | ||
var aliases = t.FLIPPED_ALIAS_KEYS[type]; | ||
if (aliases) { | ||
each(aliases, function (alias) { | ||
transformer[alias] = fns; | ||
}); | ||
} | ||
}); | ||
@@ -60,0 +55,0 @@ |
@@ -5,3 +5,2 @@ "use strict"; | ||
var object = require("../../../helpers/object"); | ||
var clone = require("lodash/lang/clone"); | ||
var util = require("../../../util"); | ||
@@ -315,5 +314,5 @@ var t = require("../../../types"); | ||
if (t.isLoop(node)) { | ||
state = clone(state); | ||
state.ignoreLabeless = true; | ||
traverse(node, loopVisitor, scope, state); | ||
state.ignoreLabeless = false; | ||
} | ||
@@ -329,5 +328,11 @@ | ||
if (node.label) { | ||
// we shouldn't be transforming this because it exists somewhere inside | ||
if (state.innerLabels.indexOf(node.label.name) >= 0) { | ||
return; | ||
} | ||
loopText = loopText + "|" + node.label.name; | ||
} else { | ||
// we shouldn't be dealing with this | ||
// we shouldn't be transforming these statements because | ||
// they don't refer to the actual loop we're scopifying | ||
if (state.ignoreLabeless) return; | ||
@@ -358,2 +363,10 @@ | ||
var loopLabelVisitor = { | ||
enter: function (node, parent, scope, context, state) { | ||
if (t.isLabeledStatement(node)) { | ||
state.innerLabels.push(node.label.name); | ||
} | ||
} | ||
}; | ||
/** | ||
@@ -372,2 +385,3 @@ * If we're inside of a loop then traverse it and check if it has one of | ||
ignoreLabeless: false, | ||
innerLabels: [], | ||
hasReturn: false, | ||
@@ -378,3 +392,5 @@ isLoop: !!this.loopParent, | ||
traverse(this.block, loopLabelVisitor, this.scope, state); | ||
traverse(this.block, loopVisitor, this.scope, state); | ||
return state; | ||
@@ -381,0 +397,0 @@ }; |
@@ -240,2 +240,16 @@ "use strict"; | ||
traverse.explode = function (obj) { | ||
for (var type in obj) { | ||
var fns = obj[type]; | ||
var aliases = t.FLIPPED_ALIAS_KEYS[type]; | ||
if (aliases) { | ||
for (var i = 0; i < aliases.length; i++) { | ||
obj[aliases[i]] = fns; | ||
} | ||
} | ||
} | ||
return obj; | ||
}; | ||
function hasBlacklistedType(node, parent, scope, context, state) { | ||
@@ -242,0 +256,0 @@ if (node.type === state.type) { |
{ | ||
"name": "6to5", | ||
"description": "Turn ES6 code into readable vanilla ES5 with source maps", | ||
"version": "3.2.0", | ||
"version": "3.2.1", | ||
"author": "Sebastian McKenzie <sebmck@gmail.com>", | ||
@@ -6,0 +6,0 @@ "homepage": "https://6to5.org/", |
Sorry, the diff of this file is too big to display
1379702
134
11605