diff --git a/packages/babel-cli/src/_babel-node.js b/packages/babel-cli/src/_babel-node.js index 3a6f4e309d..8e89bf0e63 100644 --- a/packages/babel-cli/src/_babel-node.js +++ b/packages/babel-cli/src/_babel-node.js @@ -9,7 +9,7 @@ import * as babel from "babel-core"; import vm from "vm"; import _ from "lodash"; -var program = new commander.Command("babel-node"); +let program = new commander.Command("babel-node"); program.option("-e, --eval [script]", "Evaluate script"); program.option("-p, --print [code]", "Evaluate script and print result"); @@ -18,7 +18,7 @@ program.option("-x, --extensions [extensions]", "List of extensions to hook into program.option("-w, --plugins [string]", "TODO", util.list); program.option("-b, --presets [string]", "TODO", util.list); -var pkg = require("../package.json"); +let pkg = require("../package.json"); program.version(pkg.version); program.usage("[options] [ -e script | script.js ] [arguments]"); program.parse(process.argv); @@ -35,7 +35,7 @@ babel.register({ // -var replPlugin = new babel.Plugin("repl", { +let replPlugin = new babel.Plugin("repl", { visitor: { ModuleDeclaration() { throw this.errorWithNode("Modules aren't supported in the REPL"); @@ -51,7 +51,7 @@ var replPlugin = new babel.Plugin("repl", { // -var _eval = function (code, filename) { +let _eval = function (code, filename) { code = code.trim(); if (!code) return undefined; @@ -70,13 +70,13 @@ var _eval = function (code, filename) { }; if (program.eval || program.print) { - var code = program.eval; + let code = program.eval; if (!code || code === true) code = program.print; global.__filename = "[eval]"; global.__dirname = process.cwd(); - var module = new Module(global.__filename); + let module = new Module(global.__filename); module.filename = global.__filename; module.paths = Module._nodeModulePaths(global.__dirname); @@ -84,18 +84,18 @@ if (program.eval || program.print) { global.module = module; global.require = module.require.bind(module); - var result = _eval(code, global.__filename); + let result = _eval(code, global.__filename); if (program.print) { - var output = _.isString(result) ? result : inspect(result); + let output = _.isString(result) ? result : inspect(result); process.stdout.write(output + "\n"); } } else { if (program.args.length) { // slice all arguments up to the first filename since they're babel args that we handle - var args = process.argv.slice(2); + let args = process.argv.slice(2); - var i = 0; - var ignoreNext = false; + let i = 0; + let ignoreNext = false; _.each(args, function (arg, i2) { if (ignoreNext) { ignoreNext = false; @@ -103,7 +103,7 @@ if (program.eval || program.print) { } if (arg[0] === "-") { - var parsedArg = program[arg.slice(2)]; + let parsedArg = program[arg.slice(2)]; if (parsedArg && parsedArg !== true) { ignoreNext = true; } @@ -115,7 +115,7 @@ if (program.eval || program.print) { args = args.slice(i); // make the filename absolute - var filename = args[0]; + let filename = args[0]; if (!pathIsAbsolute(filename)) args[0] = path.join(process.cwd(), filename); // add back on node and concat the sliced args @@ -139,8 +139,8 @@ function replStart() { } function replEval(code, context, filename, callback) { - var err; - var result; + let err; + let result; try { if (code[0] === "(" && code[code.length - 1] === ")") { diff --git a/packages/babel-cli/src/babel-node.js b/packages/babel-cli/src/babel-node.js index fadf11fcae..603835dc91 100755 --- a/packages/babel-cli/src/babel-node.js +++ b/packages/babel-cli/src/babel-node.js @@ -3,16 +3,16 @@ * when found, before invoking the "real" _babel-node(1) executable. */ -var getV8Flags = require("v8flags"); -var path = require("path"); +let getV8Flags = require("v8flags"); +let path = require("path"); -var args = [path.join(__dirname, "_babel-node")]; +let args = [path.join(__dirname, "_babel-node")]; -var babelArgs = process.argv.slice(2); -var userArgs; +let babelArgs = process.argv.slice(2); +let userArgs; // separate node arguments from script arguments -var argSeparator = babelArgs.indexOf("--"); +let argSeparator = babelArgs.indexOf("--"); if (argSeparator > -1) { userArgs = babelArgs.slice(argSeparator); // including the -- babelArgs = babelArgs.slice(0, argSeparator); @@ -20,7 +20,7 @@ if (argSeparator > -1) { getV8Flags(function (v8Flags) { babelArgs.forEach(function(arg){ - var flag = arg.split("=")[0]; + let flag = arg.split("=")[0]; switch (flag) { case "-d": @@ -54,13 +54,13 @@ getV8Flags(function (v8Flags) { } try { - var kexec = require("kexec"); + let kexec = require("kexec"); kexec(process.argv[0], args); } catch (err) { if (err.code !== "MODULE_NOT_FOUND") throw err; - var child_process = require("child_process"); - var proc = child_process.spawn(process.argv[0], args, { stdio: "inherit" }); + let child_process = require("child_process"); + let proc = child_process.spawn(process.argv[0], args, { stdio: "inherit" }); proc.on("exit", function (code, signal) { process.on("exit", function () { if (signal) { diff --git a/packages/babel-cli/src/babel-plugin/index.js b/packages/babel-cli/src/babel-plugin/index.js index 522d2e7f40..de8d326b02 100755 --- a/packages/babel-cli/src/babel-plugin/index.js +++ b/packages/babel-cli/src/babel-plugin/index.js @@ -7,7 +7,7 @@ import fs from "fs"; function spawn(cmd, args, callback) { console.log(">", cmd, args); - var spawn = child.spawn(cmd, args, { stdio: "inherit" }); + let spawn = child.spawn(cmd, args, { stdio: "inherit" }); spawn.on("exit", function (code) { if (code === 0) { @@ -21,7 +21,7 @@ function spawn(cmd, args, callback) { function spawnMultiple(cmds) { function next() { - var cmd = cmds.shift(); + let cmd = cmds.shift(); if (cmd) { spawn(cmd.command, cmd.args, next); } else { @@ -33,7 +33,7 @@ function spawnMultiple(cmds) { } function template(name, data = {}) { - var source = fs.readFileSync(path.join(__dirname, "templates", name), "utf8"); + let source = fs.readFileSync(path.join(__dirname, "templates", name), "utf8"); source = source.replace(/[A-Z_]+/g, function (key) { return data[key] === undefined ? key : data[key]; }); @@ -53,23 +53,23 @@ function execMaybe(cmd) { } } -var rl = readline.createInterface({ +let rl = readline.createInterface({ input: process.stdin, output: process.stdout }); -var BABEL_PLUGIN_PREFIX = "babel-plugin-"; +let BABEL_PLUGIN_PREFIX = "babel-plugin-"; -var cmds = { +let cmds = { init: function () { - var name = path.basename(process.cwd()); + let name = path.basename(process.cwd()); if (name.indexOf(BABEL_PLUGIN_PREFIX) === 0) { name = name.slice(BABEL_PLUGIN_PREFIX.length); } rl.question("Description (optional): ", function (description) { - var remote = execMaybe("git config --get remote.origin.url").trim().match(/git@github.com:(.*?).git/); + let remote = execMaybe("git config --get remote.origin.url").trim().match(/git@github.com:(.*?).git/); if (remote) { build(description, remote[1]); } else { @@ -82,7 +82,7 @@ var cmds = { function build(description, repo) { rl.close(); - var templateData = { + let templateData = { DESCRIPTION: description, FULL_NAME: BABEL_PLUGIN_PREFIX + name, NAME: name @@ -133,7 +133,7 @@ var cmds = { }, publish: function () { - var pkg = require(process.cwd() + "/package.json"); + let pkg = require(process.cwd() + "/package.json"); console.log("Current version:", pkg.version); rl.question("New version (enter nothing for patch): ", function (newVersion) { @@ -153,7 +153,7 @@ var cmds = { } }; -var cmd = cmds[process.argv[2]]; +let cmd = cmds[process.argv[2]]; if (cmd) { cmd(); } else { diff --git a/packages/babel-cli/src/babel/dir.js b/packages/babel-cli/src/babel/dir.js index f5010fa571..7507a78f47 100644 --- a/packages/babel-cli/src/babel/dir.js +++ b/packages/babel-cli/src/babel/dir.js @@ -1,27 +1,27 @@ -var outputFileSync = require("output-file-sync"); -var pathExists = require("path-exists"); -var chokidar = require("chokidar"); -var slash = require("slash"); -var path = require("path"); -var util = require("./util"); -var fs = require("fs"); -var _ = require("lodash"); +let outputFileSync = require("output-file-sync"); +let pathExists = require("path-exists"); +let chokidar = require("chokidar"); +let slash = require("slash"); +let path = require("path"); +let util = require("./util"); +let fs = require("fs"); +let _ = require("lodash"); module.exports = function (commander, filenames) { function write(src, relative) { // remove extension and then append back on .js relative = relative.replace(/\.(\w*?)$/, "") + ".js"; - var dest = path.join(commander.outDir, relative); + let dest = path.join(commander.outDir, relative); - var data = util.compile(src, { + let data = util.compile(src, { sourceFileName: slash(path.relative(dest + "/..", src)), sourceMapTarget: path.basename(relative) }); if (!commander.copyFiles && data.ignored) return; if (data.map && commander.sourceMaps && commander.sourceMaps !== "inline") { - var mapLoc = dest + ".map"; + let mapLoc = dest + ".map"; data.code = util.addSourceMappingUrl(data.code, mapLoc); outputFileSync(mapLoc, JSON.stringify(data.map)); } @@ -44,13 +44,13 @@ module.exports = function (commander, filenames) { function handle(filename) { if (!pathExists.sync(filename)) return; - var stat = fs.statSync(filename); + let stat = fs.statSync(filename); if (stat.isDirectory(filename)) { - var dirname = filename; + let dirname = filename; _.each(util.readdir(dirname), function (filename) { - var src = path.join(dirname, filename); + let src = path.join(dirname, filename); handleFile(src, filename); }); } else { @@ -62,14 +62,14 @@ module.exports = function (commander, filenames) { if (commander.watch) { _.each(filenames, function (dirname) { - var watcher = chokidar.watch(dirname, { + let watcher = chokidar.watch(dirname, { persistent: true, ignoreInitial: true }); _.each(["add", "change"], function (type) { watcher.on(type, function (filename) { - var relative = path.relative(dirname, filename) || filename; + let relative = path.relative(dirname, filename) || filename; try { handleFile(filename, relative); } catch (err) { diff --git a/packages/babel-cli/src/babel/file.js b/packages/babel-cli/src/babel/file.js index 9b2f9db4a5..e7120f5af5 100644 --- a/packages/babel-cli/src/babel/file.js +++ b/packages/babel-cli/src/babel/file.js @@ -1,37 +1,37 @@ -var convertSourceMap = require("convert-source-map"); -var pathExists = require("path-exists"); -var sourceMap = require("source-map"); -var chokidar = require("chokidar"); -var slash = require("slash"); -var path = require("path"); -var util = require("./util"); -var fs = require("fs"); -var _ = require("lodash"); +let convertSourceMap = require("convert-source-map"); +let pathExists = require("path-exists"); +let sourceMap = require("source-map"); +let chokidar = require("chokidar"); +let slash = require("slash"); +let path = require("path"); +let util = require("./util"); +let fs = require("fs"); +let _ = require("lodash"); module.exports = function (commander, filenames, opts) { if (commander.sourceMaps === "inline") { opts.sourceMaps = true; } - var results = []; + let results = []; - var buildResult = function () { - var map = new sourceMap.SourceMapGenerator({ + let buildResult = function () { + let map = new sourceMap.SourceMapGenerator({ file: path.basename(commander.outFile) || "stdout", sourceRoot: opts.sourceRoot }); - var code = ""; - var offset = 0; + let code = ""; + let offset = 0; _.each(results, function (result) { - var filename = result.filename; + let filename = result.filename; code += result.code + "\n"; if (result.map) { - var consumer = new sourceMap.SourceMapConsumer(result.map); + let consumer = new sourceMap.SourceMapConsumer(result.map); - var sourceFilename = filename; + let sourceFilename = filename; if (commander.outFile) { sourceFilename = path.relative(path.dirname(commander.outFile), sourceFilename); } @@ -64,12 +64,12 @@ module.exports = function (commander, filenames, opts) { }; }; - var output = function () { - var result = buildResult(); + let output = function () { + let result = buildResult(); if (commander.outFile) { if (commander.sourceMaps && commander.sourceMaps !== "inline") { - var mapLoc = commander.outFile + ".map"; + let mapLoc = commander.outFile + ".map"; result.code = util.addSourceMappingUrl(result.code, mapLoc); fs.writeFileSync(mapLoc, JSON.stringify(result.map)); } @@ -80,13 +80,13 @@ module.exports = function (commander, filenames, opts) { } }; - var stdin = function () { - var code = ""; + let stdin = function () { + let code = ""; process.stdin.setEncoding("utf8"); process.stdin.on("readable", function () { - var chunk = process.stdin.read(); + let chunk = process.stdin.read(); if (chunk !== null) code += chunk; }); @@ -96,16 +96,16 @@ module.exports = function (commander, filenames, opts) { }); }; - var walk = function () { - var _filenames = []; + let walk = function () { + let _filenames = []; results = []; _.each(filenames, function (filename) { if (!pathExists.sync(filename)) return; - var stat = fs.statSync(filename); + let stat = fs.statSync(filename); if (stat.isDirectory()) { - var dirname = filename; + let dirname = filename; _.each(util.readdirFilter(filename), function (filename) { _filenames.push(path.join(dirname, filename)); @@ -118,7 +118,7 @@ module.exports = function (commander, filenames, opts) { _.each(_filenames, function (filename) { if (util.shouldIgnore(filename)) return; - var data = util.compile(filename); + let data = util.compile(filename); if (data.ignored) return; results.push(data); }); @@ -126,7 +126,7 @@ module.exports = function (commander, filenames, opts) { output(); }; - var files = function () { + let files = function () { walk(); if (commander.watch) { diff --git a/packages/babel-cli/src/babel/index.js b/packages/babel-cli/src/babel/index.js index 46fc228c15..ac5c856164 100755 --- a/packages/babel-cli/src/babel/index.js +++ b/packages/babel-cli/src/babel/index.js @@ -2,19 +2,19 @@ require("babel-core"); -var pathExists = require("path-exists"); -var commander = require("commander"); -var kebabCase = require("lodash/string/kebabCase"); -var options = require("babel-core").options; -var util = require("babel-core").util; -var uniq = require("lodash/array/uniq"); -var each = require("lodash/collection/each"); -var glob = require("glob"); +let pathExists = require("path-exists"); +let commander = require("commander"); +let kebabCase = require("lodash/string/kebabCase"); +let options = require("babel-core").options; +let util = require("babel-core").util; +let uniq = require("lodash/array/uniq"); +let each = require("lodash/collection/each"); +let glob = require("glob"); each(options, function (option, key) { if (option.hidden) return; - var arg = kebabCase(key); + let arg = kebabCase(key); if (option.type !== "boolean") { arg += " [" + (option.type || "string") + "]"; @@ -30,7 +30,7 @@ each(options, function (option, key) { arg = "-" + option.shorthand + ", " + arg; } - var desc = []; + let desc = []; if (option.deprecated) desc.push("[DEPRECATED] " + option.deprecated); if (option.description) desc.push(option.description); @@ -44,7 +44,7 @@ commander.option("-d, --out-dir [out]", "Compile an input directory of modules i commander.option("-D, --copy-files", "When compiling a directory copy over non-compilable files"); commander.option("-q, --quiet", "Don't log anything"); -var pkg = require("../../package.json"); +let pkg = require("../../package.json"); commander.version(pkg.version + " (babel-core " + require("babel-core").version + ")"); commander.usage("[options] "); commander.parse(process.argv); @@ -57,10 +57,10 @@ if (commander.extensions) { // -var errors = []; +let errors = []; -var filenames = commander.args.reduce(function (globbed, input) { - var files = glob.sync(input); +let filenames = commander.args.reduce(function (globbed, input) { + let files = glob.sync(input); if (!files.length) files = [input]; return globbed.concat(files); }, []); @@ -98,7 +98,7 @@ if (errors.length) { // -var opts = exports.opts = {}; +let opts = exports.opts = {}; each(options, function (opt, key) { if (commander[key] !== undefined) { @@ -112,7 +112,7 @@ if (opts.only) { opts.only = util.arrayify(opts.only, util.regexify); } -var fn; +let fn; if (commander.outDir) { fn = require("./dir"); diff --git a/packages/babel-cli/src/babel/util.js b/packages/babel-cli/src/babel/util.js index 52c0801109..e215b38b17 100644 --- a/packages/babel-cli/src/babel/util.js +++ b/packages/babel-cli/src/babel/util.js @@ -1,11 +1,11 @@ -var commander = require("commander"); -var readdir = require("fs-readdir-recursive"); -var index = require("./index"); -var babel = require("babel-core"); -var util = require("babel-core").util; -var path = require("path"); -var fs = require("fs"); -var _ = require("lodash"); +let commander = require("commander"); +let readdir = require("fs-readdir-recursive"); +let index = require("./index"); +let babel = require("babel-core"); +let util = require("babel-core").util; +let path = require("path"); +let fs = require("fs"); +let _ = require("lodash"); exports.readdirFilter = function (filename) { return readdir(filename).filter(function (filename) { @@ -35,7 +35,7 @@ exports.transform = function (filename, code, opts) { opts.ignore = null; opts.only = null; - var result = babel.transform(code, opts); + let result = babel.transform(code, opts); result.filename = filename; result.actual = code; return result; @@ -43,7 +43,7 @@ exports.transform = function (filename, code, opts) { exports.compile = function (filename, opts) { try { - var code = fs.readFileSync(filename, "utf8"); + let code = fs.readFileSync(filename, "utf8"); return exports.transform(filename, code, opts); } catch (err) { if (commander.watch) { diff --git a/packages/babel-core/src/api/browser.js b/packages/babel-core/src/api/browser.js index 68f3eaccb7..17d8883762 100644 --- a/packages/babel-core/src/api/browser.js +++ b/packages/babel-core/src/api/browser.js @@ -10,16 +10,16 @@ export function run(code, opts = {}) { export function load(url, callback, opts = {}, hold) { opts.filename = opts.filename || url; - var xhr = global.ActiveXObject ? new global.ActiveXObject("Microsoft.XMLHTTP") : new global.XMLHttpRequest(); + let xhr = global.ActiveXObject ? new global.ActiveXObject("Microsoft.XMLHTTP") : new global.XMLHttpRequest(); xhr.open("GET", url, true); if ("overrideMimeType" in xhr) xhr.overrideMimeType("text/plain"); xhr.onreadystatechange = function () { if (xhr.readyState !== 4) return; - var status = xhr.status; + let status = xhr.status; if (status === 0 || status === 200) { - var param = [xhr.responseText, opts]; + let param = [xhr.responseText, opts]; if (!hold) run(param); if (callback) callback(param); } else { @@ -31,16 +31,16 @@ export function load(url, callback, opts = {}, hold) { } function runScripts() { - var scripts = []; - var types = ["text/ecmascript-6", "text/6to5", "text/babel", "module"]; - var index = 0; + let scripts = []; + let types = ["text/ecmascript-6", "text/6to5", "text/babel", "module"]; + let index = 0; /** * Transform and execute script. Ensures correct load order. */ function exec() { - var param = scripts[index]; + let param = scripts[index]; if (param instanceof Array) { run(param); index++; @@ -53,7 +53,7 @@ function runScripts() { */ function run(script, i) { - var opts = {}; + let opts = {}; if (script.src) { load(script.src, function (param) { @@ -68,10 +68,10 @@ function runScripts() { // Collect scripts with Babel `types`. - var _scripts = global.document.getElementsByTagName("script"); + let _scripts = global.document.getElementsByTagName("script"); - for (var i = 0; i < _scripts.length; ++i) { - var _script = _scripts[i]; + for (let i = 0; i < _scripts.length; ++i) { + let _script = _scripts[i]; if (types.indexOf(_script.type) >= 0) scripts.push(_script); } diff --git a/packages/babel-core/src/api/node.js b/packages/babel-core/src/api/node.js index 6f6f6b1c11..a4630f6257 100644 --- a/packages/babel-core/src/api/node.js +++ b/packages/babel-core/src/api/node.js @@ -20,7 +20,7 @@ import * as t from "babel-types"; export { t as types }; export function register(opts?: Object) { - var callback = require("./register/node-polyfill"); + let callback = require("./register/node-polyfill"); if (opts != null) callback(opts); return callback; } @@ -36,7 +36,7 @@ export function transformFile(filename: string, opts?: Object, callback: Functio fs.readFile(filename, function (err, code) { if (err) return callback(err); - var result; + let result; try { result = transform(code, opts); @@ -63,7 +63,7 @@ export function parse(code, opts = {}) { }; opts.features = {}; - var ast = babylon.parse(code, opts); + let ast = babylon.parse(code, opts); if (opts.onToken) { opts.onToken.push(...ast.tokens); diff --git a/packages/babel-core/src/api/register/cache.js b/packages/babel-core/src/api/register/cache.js index 73ab94b175..b128ea4e47 100644 --- a/packages/babel-core/src/api/register/cache.js +++ b/packages/babel-core/src/api/register/cache.js @@ -4,7 +4,7 @@ import homeOrTmp from "home-or-tmp"; import pathExists from "path-exists"; const FILENAME = process.env.BABEL_CACHE_PATH || path.join(homeOrTmp, ".babel.json"); -var data = {}; +let data = {}; /** * Write stringified cache to disk. diff --git a/packages/babel-core/src/api/register/node.js b/packages/babel-core/src/api/register/node.js index 723fcb391a..f130596a3b 100644 --- a/packages/babel-core/src/api/register/node.js +++ b/packages/babel-core/src/api/register/node.js @@ -15,7 +15,7 @@ import path from "path"; sourceMapSupport.install({ handleUncaughtExceptions: false, retrieveSourceMap(source) { - var map = maps && maps[source]; + let map = maps && maps[source]; if (map) { return { url: null, @@ -32,27 +32,27 @@ sourceMapSupport.install({ */ registerCache.load(); -var cache = registerCache.get(); +let cache = registerCache.get(); /** * Store options. */ -var transformOpts = {}; +let transformOpts = {}; -var ignore; -var only; +let ignore; +let only; -var oldHandlers = {}; -var maps = {}; +let oldHandlers = {}; +let maps = {}; -var cwd = process.cwd(); +let cwd = process.cwd(); /** * Get path from `filename` relative to the current working directory. */ -var getRelativePath = function (filename){ +let getRelativePath = function (filename){ return path.relative(cwd, filename); }; @@ -60,7 +60,7 @@ var getRelativePath = function (filename){ * Get last modified time for a `filename`. */ -var mtime = function (filename) { +let mtime = function (filename) { return +fs.statSync(filename).mtime; }; @@ -68,22 +68,22 @@ var mtime = function (filename) { * Compile a `filename` with optional `opts`. */ -var compile = function (filename, opts = {}) { - var result; +let compile = function (filename, opts = {}) { + let result; opts.filename = filename; - var optsManager = new OptionManager; + let optsManager = new OptionManager; optsManager.mergeOptions(transformOpts); opts = optsManager.init(opts); - var cacheKey = `${JSON.stringify(opts)}:${babel.version}`; + let cacheKey = `${JSON.stringify(opts)}:${babel.version}`; - var env = process.env.BABEL_ENV || process.env.NODE_ENV; + let env = process.env.BABEL_ENV || process.env.NODE_ENV; if (env) cacheKey += `:${env}`; if (cache) { - var cached = cache[cacheKey]; + let cached = cache[cacheKey]; if (cached && cached.mtime === mtime(filename)) { result = cached; } @@ -110,7 +110,7 @@ var compile = function (filename, opts = {}) { * Test if a `filename` should be ignored by Babel. */ -var shouldIgnore = function (filename) { +let shouldIgnore = function (filename) { if (!ignore && !only) { return getRelativePath(filename).split(path.sep).indexOf("node_modules") >= 0; } else { @@ -122,17 +122,17 @@ var shouldIgnore = function (filename) { * Monkey patch istanbul if it is running so that it works properly. */ -var istanbulMonkey = {}; +let istanbulMonkey = {}; if (process.env.running_under_istanbul) { // we need to monkey patch fs.readFileSync so we can hook into // what istanbul gets, it's extremely dirty but it's the only way - var _readFileSync = fs.readFileSync; + let _readFileSync = fs.readFileSync; fs.readFileSync = function (filename) { if (istanbulMonkey[filename]) { delete istanbulMonkey[filename]; - var code = compile(filename, { + let code = compile(filename, { auxiliaryCommentBefore: "istanbul ignore next" }); istanbulMonkey[filename] = true; @@ -147,7 +147,7 @@ if (process.env.running_under_istanbul) { * Replacement for the loader for istanbul. */ -var istanbulLoader = function (m, filename, old) { +let istanbulLoader = function (m, filename, old) { istanbulMonkey[filename] = true; old(m, filename); }; @@ -156,7 +156,7 @@ var istanbulLoader = function (m, filename, old) { * Default loader. */ -var normalLoader = function (m, filename) { +let normalLoader = function (m, filename) { m._compile(compile(filename), filename); }; @@ -164,10 +164,10 @@ var normalLoader = function (m, filename) { * Register a loader for an extension. */ -var registerExtension = function (ext) { - var old = oldHandlers[ext] || oldHandlers[".js"] || require.extensions[".js"]; +let registerExtension = function (ext) { + let old = oldHandlers[ext] || oldHandlers[".js"] || require.extensions[".js"]; - var loader = normalLoader; + let loader = normalLoader; if (process.env.running_under_istanbul) loader = istanbulLoader; require.extensions[ext] = function (m, filename) { @@ -183,7 +183,7 @@ var registerExtension = function (ext) { * Register loader for given extensions. */ -var hookExtensions = function (_exts) { +let hookExtensions = function (_exts) { each(oldHandlers, function (old, ext) { if (old === undefined) { delete require.extensions[ext]; diff --git a/packages/babel-core/src/helpers/merge.js b/packages/babel-core/src/helpers/merge.js index 33f433dbd9..dbbc07d35a 100644 --- a/packages/babel-core/src/helpers/merge.js +++ b/packages/babel-core/src/helpers/merge.js @@ -9,8 +9,8 @@ export default function (dest, src) { return merge(dest, src, function (a, b) { if (b && Array.isArray(a)) { - var c = a.slice(0); - for (var v of b) { + let c = a.slice(0); + for (let v of b) { if (a.indexOf(v) < 0) { c.push(v); } diff --git a/packages/babel-core/src/helpers/parse.js b/packages/babel-core/src/helpers/parse.js index cb6eb42ba9..0e4595b551 100644 --- a/packages/babel-core/src/helpers/parse.js +++ b/packages/babel-core/src/helpers/parse.js @@ -5,7 +5,7 @@ import * as babylon from "babylon"; */ export default function (code, opts = {}) { - var parseOpts = { + let parseOpts = { allowImportExportEverywhere: opts.looseModules, allowReturnOutsideFunction: opts.looseModules, strictMode: opts.strictMode, diff --git a/packages/babel-core/src/store.js b/packages/babel-core/src/store.js index e276346bb9..d83cdd71c2 100644 --- a/packages/babel-core/src/store.js +++ b/packages/babel-core/src/store.js @@ -11,11 +11,11 @@ export default class Store { } get(key: string): any { - var data = this.data[key]; + let data = this.data[key]; if (data) { return data; } else { - var dynamic = this.dynamicData[key]; + let dynamic = this.dynamicData[key]; if (dynamic) { return this.set(key, dynamic()); } diff --git a/packages/babel-core/src/tools/build-external-helpers.js b/packages/babel-core/src/tools/build-external-helpers.js index 474da46340..d19971ac2e 100644 --- a/packages/babel-core/src/tools/build-external-helpers.js +++ b/packages/babel-core/src/tools/build-external-helpers.js @@ -6,9 +6,9 @@ import each from "lodash/collection/each"; import * as t from "babel-types"; function buildGlobal(namespace, builder) { - var body = []; - var container = t.functionExpression(null, [t.identifier("global")], t.blockStatement(body)); - var tree = t.program([t.expressionStatement(t.callExpression(container, [util.template("helper-self-global")]))]); + let body = []; + let container = t.functionExpression(null, [t.identifier("global")], t.blockStatement(body)); + let tree = t.program([t.expressionStatement(t.callExpression(container, [util.template("helper-self-global")]))]); body.push(t.variableDeclaration("var", [ t.variableDeclarator( @@ -23,14 +23,14 @@ function buildGlobal(namespace, builder) { } function buildUmd(namespace, builder) { - var body = []; + let body = []; body.push(t.variableDeclaration("var", [ t.variableDeclarator(namespace, t.identifier("global")) ])); builder(body); - var container = util.template("umd-commonjs-strict", { + let container = util.template("umd-commonjs-strict", { FACTORY_PARAMETERS: t.identifier("global"), BROWSER_ARGUMENTS: t.assignmentExpression("=", t.memberExpression(t.identifier("root"), namespace), t.objectExpression({})), COMMON_ARGUMENTS: t.identifier("exports"), @@ -42,7 +42,7 @@ function buildUmd(namespace, builder) { } function buildVar(namespace, builder) { - var body = []; + let body = []; body.push(t.variableDeclaration("var", [ t.variableDeclarator(namespace, t.objectExpression({})) ])); @@ -54,7 +54,7 @@ function buildHelpers(body, namespace, whitelist) { each(File.helpers, function (name) { if (whitelist && whitelist.indexOf(name) === -1) return; - var key = t.identifier(t.toIdentifier(name)); + let key = t.identifier(t.toIdentifier(name)); body.push(t.expressionStatement( t.assignmentExpression("=", t.memberExpression(namespace, key), util.template("helper-" + name)) )); @@ -62,15 +62,15 @@ function buildHelpers(body, namespace, whitelist) { } export default function (whitelist, outputType = "global") { - var namespace = t.identifier("babelHelpers"); + let namespace = t.identifier("babelHelpers"); - var builder = function (body) { + let builder = function (body) { return buildHelpers(body, namespace, whitelist); }; - var tree; + let tree; - var build = { + let build = { global: buildGlobal, umd: buildUmd, var: buildVar diff --git a/packages/babel-core/src/transformation/file/index.js b/packages/babel-core/src/transformation/file/index.js index 79f38de0e0..e6c69ca1cd 100644 --- a/packages/babel-core/src/transformation/file/index.js +++ b/packages/babel-core/src/transformation/file/index.js @@ -21,9 +21,9 @@ import * as util from "../../util"; import path from "path"; import * as t from "babel-types"; -var errorVisitor = { +let errorVisitor = { enter(path, state) { - var loc = path.node.loc; + let loc = path.node.loc; if (loc) { state.loc = loc; path.stop(); @@ -155,16 +155,16 @@ export default class File extends Store { } buildTransformers() { - var file = this; + let file = this; - var transformers = this.transformers = {}; + let transformers = this.transformers = {}; - var secondaryStack = []; - var stack = []; + let secondaryStack = []; + let stack = []; // build internal transformers - for (var key in this.pipeline.transformers) { - var transformer = this.pipeline.transformers[key]; + for (let key in this.pipeline.transformers) { + let transformer = this.pipeline.transformers[key]; let pass = transformers[key] = transformer.buildPass(file); if (pass.canTransform()) { @@ -181,15 +181,15 @@ export default class File extends Store { } // init plugins! - var beforePlugins = []; - var afterPlugins = []; - var pluginManager = new PluginManager({ + let beforePlugins = []; + let afterPlugins = []; + let pluginManager = new PluginManager({ file: this, transformers: this.transformers, before: beforePlugins, after: afterPlugins }); - for (var i = 0; i < file.opts.plugins.length; i++) { + for (let i = 0; i < file.opts.plugins.length; i++) { pluginManager.add(file.opts.plugins[i]); } stack = beforePlugins.concat(stack, afterPlugins); @@ -199,7 +199,7 @@ export default class File extends Store { // build dependency graph for (let pass of (stack: Array)) { - for (var dep of (pass.plugin.dependencies: Array)) { + for (let dep of (pass.plugin.dependencies: Array)) { this.transformerDependencies[dep] = pass.key; } } @@ -209,14 +209,14 @@ export default class File extends Store { } collapseStack(_stack) { - var stack = []; - var ignore = []; + let stack = []; + let ignore = []; for (let pass of (_stack: Array)) { // been merged if (ignore.indexOf(pass) >= 0) continue; - var group = pass.plugin.metadata.group; + let group = pass.plugin.metadata.group; // can't merge if (!pass.canTransform() || !group) { @@ -224,7 +224,7 @@ export default class File extends Store { continue; } - var mergeStack = []; + let mergeStack = []; for (let pass of (_stack: Array)) { if (pass.plugin.metadata.group === group) { mergeStack.push(pass); @@ -236,12 +236,12 @@ export default class File extends Store { shuffle; //mergeStack = shuffle(mergeStack); - var visitors = []; + let visitors = []; for (let pass of (mergeStack: Array)) { visitors.push(pass.plugin.visitor); } - var visitor = traverse.visitors.merge(visitors); - var mergePlugin = new Plugin(group, { visitor }); + let visitor = traverse.visitors.merge(visitors); + let mergePlugin = new Plugin(group, { visitor }); stack.push(mergePlugin.buildPass(this)); } @@ -257,11 +257,11 @@ export default class File extends Store { } get(key: string): any { - var data = this.data[key]; + let data = this.data[key]; if (data) { return data; } else { - var dynamic = this.dynamicData[key]; + let dynamic = this.dynamicData[key]; if (dynamic) { return this.set(key, dynamic()); } @@ -269,25 +269,25 @@ export default class File extends Store { } resolveModuleSource(source: string): string { - var resolveModuleSource = this.opts.resolveModuleSource; + let resolveModuleSource = this.opts.resolveModuleSource; if (resolveModuleSource) source = resolveModuleSource(source, this.opts.filename); return source; } addImport(source: string, name?: string, type?: string): Object { name = name || source; - var id = this.dynamicImportIds[name]; + let id = this.dynamicImportIds[name]; if (!id) { source = this.resolveModuleSource(source); id = this.dynamicImportIds[name] = this.scope.generateUidIdentifier(name); - var specifiers = [t.importDefaultSpecifier(id)]; - var declar = t.importDeclaration(specifiers, t.stringLiteral(source)); + let specifiers = [t.importDefaultSpecifier(id)]; + let declar = t.importDeclaration(specifiers, t.stringLiteral(source)); declar._blockHoist = 3; if (type) { - var modules = this.dynamicImportTypes[type] = this.dynamicImportTypes[type] || []; + let modules = this.dynamicImportTypes[type] = this.dynamicImportTypes[type] || []; modules.push(declar); } @@ -303,7 +303,7 @@ export default class File extends Store { } attachAuxiliaryComment(node: Object): Object { - var beforeComment = this.opts.auxiliaryCommentBefore; + let beforeComment = this.opts.auxiliaryCommentBefore; if (beforeComment) { node.leadingComments = node.leadingComments || []; node.leadingComments.push({ @@ -312,7 +312,7 @@ export default class File extends Store { }); } - var afterComment = this.opts.auxiliaryCommentAfter; + let afterComment = this.opts.auxiliaryCommentAfter; if (afterComment) { node.trailingComments = node.trailingComments || []; node.trailingComments.push({ @@ -325,31 +325,31 @@ export default class File extends Store { } addHelper(name: string): Object { - var isSolo = includes(File.soloHelpers, name); + let isSolo = includes(File.soloHelpers, name); if (!isSolo && !includes(File.helpers, name)) { throw new ReferenceError(`Unknown helper ${name}`); } - var declar = this.declarations[name]; + let declar = this.declarations[name]; if (declar) return declar; this.usedHelpers[name] = true; if (!isSolo) { - var generator = this.get("helperGenerator"); - var runtime = this.get("helpersNamespace"); + let generator = this.get("helperGenerator"); + let runtime = this.get("helpersNamespace"); if (generator) { return generator(name); } else if (runtime) { - var id = t.identifier(t.toIdentifier(name)); + let id = t.identifier(t.toIdentifier(name)); return t.memberExpression(runtime, id); } } - var ref = util.template("helper-" + name); + let ref = util.template("helper-" + name); - var uid = this.declarations[name] = this.scope.generateUidIdentifier(name); + let uid = this.declarations[name] = this.scope.generateUidIdentifier(name); if (t.isFunctionExpression(ref) && !ref.id) { ref.body._compact = true; @@ -373,18 +373,18 @@ export default class File extends Store { addTemplateObject(helperName: string, strings: Array, raw: Array): Object { // Generate a unique name based on the string literals so we dedupe // identical strings used in the program. - var stringIds = raw.elements.map(function(string) { + let stringIds = raw.elements.map(function(string) { return string.value; }); - var name = `${helperName}_${raw.elements.length}_${stringIds.join(",")}`; + let name = `${helperName}_${raw.elements.length}_${stringIds.join(",")}`; - var declar = this.declarations[name]; + let declar = this.declarations[name]; if (declar) return declar; - var uid = this.declarations[name] = this.scope.generateUidIdentifier("templateObject"); + let uid = this.declarations[name] = this.scope.generateUidIdentifier("templateObject"); - var helperId = this.addHelper(helperName); - var init = t.callExpression(helperId, [strings, raw]); + let helperId = this.addHelper(helperName); + let init = t.callExpression(helperId, [strings, raw]); init._compact = true; this.scope.push({ id: uid, @@ -395,9 +395,9 @@ export default class File extends Store { } buildCodeFrameError(node, msg, Error = SyntaxError) { - var loc = node && (node.loc || node._loc); + let loc = node && (node.loc || node._loc); - var err = new Error(msg); + let err = new Error(msg); if (loc) { err.loc = loc.start; @@ -417,19 +417,19 @@ export default class File extends Store { } mergeSourceMap(map: Object) { - var opts = this.opts; + let opts = this.opts; - var inputMap = opts.inputSourceMap; + let inputMap = opts.inputSourceMap; if (inputMap) { map.sources[0] = inputMap.file; - var inputMapConsumer = new sourceMap.SourceMapConsumer(inputMap); - var outputMapConsumer = new sourceMap.SourceMapConsumer(map); - var outputMapGenerator = sourceMap.SourceMapGenerator.fromSourceMap(outputMapConsumer); + let inputMapConsumer = new sourceMap.SourceMapConsumer(inputMap); + let outputMapConsumer = new sourceMap.SourceMapConsumer(map); + let outputMapGenerator = sourceMap.SourceMapGenerator.fromSourceMap(outputMapConsumer); outputMapGenerator.applySourceMap(inputMapConsumer); - var mergedMap = outputMapGenerator.toJSON(); + let mergedMap = outputMapGenerator.toJSON(); mergedMap.sources = inputMap.sources; mergedMap.file = inputMap.file; return mergedMap; @@ -443,10 +443,10 @@ export default class File extends Store { this.log.deprecate("Custom module formatters are deprecated and will be removed in the next major. Please use Babel plugins instead."); } - var ModuleFormatter = isFunction(type) ? type : moduleFormatters[type]; + let ModuleFormatter = isFunction(type) ? type : moduleFormatters[type]; if (!ModuleFormatter) { - var loc = resolve.relative(type); + let loc = resolve.relative(type); if (loc) ModuleFormatter = require(loc); } @@ -458,11 +458,11 @@ export default class File extends Store { } parse(code: string) { - var opts = this.opts; + let opts = this.opts; // - var parseOpts = { + let parseOpts = { highlightCode: opts.highlightCode, nonStandard: opts.nonStandard, sourceType: opts.sourceType, @@ -470,9 +470,9 @@ export default class File extends Store { plugins: {} }; - var features = parseOpts.features = {}; - for (var key in this.transformers) { - var transformer = this.transformers[key]; + let features = parseOpts.features = {}; + for (let key in this.transformers) { + let transformer = this.transformers[key]; features[key] = transformer.canRun(); } @@ -480,7 +480,7 @@ export default class File extends Store { parseOpts.strictMode = features.strict; this.log.debug("Parse start"); - var ast = parse(code, parseOpts); + let ast = parse(code, parseOpts); this.log.debug("Parse stop"); return ast; } @@ -503,7 +503,7 @@ export default class File extends Store { this.log.debug("End set AST"); this.log.debug("Start module formatter init"); - var modFormatter = this.moduleFormatter = this.getModuleFormatter(this.opts.modules); + let modFormatter = this.moduleFormatter = this.getModuleFormatter(this.opts.modules); if (modFormatter.init && this.transformers["es6.modules"].canTransform()) { modFormatter.init(); } @@ -512,7 +512,7 @@ export default class File extends Store { transform() { this.call("pre"); - for (var pass of (this.transformerStack: Array)) { + for (let pass of (this.transformerStack: Array)) { pass.transform(); } this.call("post"); @@ -536,9 +536,9 @@ export default class File extends Store { err._babel = true; } - var message = err.message = `${this.opts.filename}: ${err.message}`; + let message = err.message = `${this.opts.filename}: ${err.message}`; - var loc = err.loc; + let loc = err.loc; if (loc) { err.codeFrame = codeFrame(code, loc.line, loc.column + 1, this.opts); message += "\n" + err.codeFrame; @@ -551,7 +551,7 @@ export default class File extends Store { } if (err.stack) { - var newStack = err.stack.replace(err.message, message); + let newStack = err.stack.replace(err.message, message); try { err.stack = newStack; } catch (e) { @@ -571,27 +571,27 @@ export default class File extends Store { parseCode() { this.parseShebang(); - var ast = this.parse(this.code); + let ast = this.parse(this.code); this.addAst(ast); } shouldIgnore() { - var opts = this.opts; + let opts = this.opts; return util.shouldIgnore(opts.filename, opts.ignore, opts.only); } call(key: string) { - for (var pass of (this.uncollapsedTransformerStack: Array)) { - var fn = pass.plugin[key]; + for (let pass of (this.uncollapsedTransformerStack: Array)) { + let fn = pass.plugin[key]; if (fn) fn.call(pass, this); } } parseInputSourceMap(code: string) { - var opts = this.opts; + let opts = this.opts; if (opts.inputSourceMap !== false) { - var inputMap = convertSourceMap.fromSource(code); + let inputMap = convertSourceMap.fromSource(code); if (inputMap) { opts.inputSourceMap = inputMap.toObject(); code = convertSourceMap.removeComments(code); @@ -602,7 +602,7 @@ export default class File extends Store { } parseShebang() { - var shebangMatch = shebangRegex.exec(this.code); + let shebangMatch = shebangRegex.exec(this.code); if (shebangMatch) { this.shebang = shebangMatch[0]; this.code = this.code.replace(shebangRegex, ""); @@ -610,7 +610,7 @@ export default class File extends Store { } makeResult({ code, map = null, ast, ignored }) { - var result = { + let result = { metadata: null, ignored: !!ignored, code: null, @@ -635,15 +635,15 @@ export default class File extends Store { } generate() { - var opts = this.opts; - var ast = this.ast; + let opts = this.opts; + let ast = this.ast; - var result = { ast }; + let result = { ast }; if (!opts.code) return this.makeResult(result); this.log.debug("Generation start"); - var _result = generate(ast, opts, this.code); + let _result = generate(ast, opts, this.code); result.code = _result.code; result.map = _result.map; diff --git a/packages/babel-core/src/transformation/file/logger.js b/packages/babel-core/src/transformation/file/logger.js index 35db09efc5..39a17ddf12 100644 --- a/packages/babel-core/src/transformation/file/logger.js +++ b/packages/babel-core/src/transformation/file/logger.js @@ -1,10 +1,10 @@ import type File from "./index"; import buildDebug from "debug/node"; -var verboseDebug = buildDebug("babel:verbose"); -var generalDebug = buildDebug("babel"); +let verboseDebug = buildDebug("babel:verbose"); +let generalDebug = buildDebug("babel"); -var seenDeprecatedMessages = []; +let seenDeprecatedMessages = []; export default class Logger { constructor(file: File, filename: string) { @@ -13,7 +13,7 @@ export default class Logger { } _buildMessage(msg: string): string { - var parts = `[BABEL] ${this.filename}`; + let parts = `[BABEL] ${this.filename}`; if (msg) parts += `: ${msg}`; return parts; } diff --git a/packages/babel-core/src/transformation/file/options/index.js b/packages/babel-core/src/transformation/file/options/index.js index 513670a972..2aeb85c41c 100644 --- a/packages/babel-core/src/transformation/file/options/index.js +++ b/packages/babel-core/src/transformation/file/options/index.js @@ -8,8 +8,8 @@ export { config }; */ export function validateOption(key, val, pipeline) { - var opt = config[key]; - var parser = opt && parsers[opt.type]; + let opt = config[key]; + let parser = opt && parsers[opt.type]; if (parser && parser.validate) { return parser.validate(key, val, pipeline); } else { @@ -22,14 +22,14 @@ export function validateOption(key, val, pipeline) { */ export function normaliseOptions(options = {}) { - for (var key in options) { - var val = options[key]; + for (let key in options) { + let val = options[key]; if (val == null) continue; - var opt = config[key]; + let opt = config[key]; if (!opt) continue; - var parser = parsers[opt.type]; + let parser = parsers[opt.type]; if (parser) val = parser(val); options[key] = val; diff --git a/packages/babel-core/src/transformation/file/options/option-manager.js b/packages/babel-core/src/transformation/file/options/option-manager.js index 67eb61b44b..fd5cadc234 100644 --- a/packages/babel-core/src/transformation/file/options/option-manager.js +++ b/packages/babel-core/src/transformation/file/options/option-manager.js @@ -12,15 +12,15 @@ import config from "./config"; import path from "path"; import fs from "fs"; -var existsCache = {}; -var jsonCache = {}; +let existsCache = {}; +let jsonCache = {}; const BABELIGNORE_FILENAME = ".babelignore"; const BABELRC_FILENAME = ".babelrc"; const PACKAGE_FILENAME = "package.json"; function exists(filename) { - var cached = existsCache[filename]; + let cached = existsCache[filename]; if (cached != null) { return cached; } else { @@ -39,14 +39,14 @@ export default class OptionManager { static memoisedPlugins = []; static memoisePluginContainer(fn, loc, i) { - for (var cache of (OptionManager.memoisedPlugins: Array)) { + for (let cache of (OptionManager.memoisedPlugins: Array)) { if (cache.container === fn) return cache.plugin; } - var obj = fn(context); + let obj = fn(context); if (typeof obj === "object") { - var plugin = new Plugin(obj); + let plugin = new Plugin(obj); OptionManager.memoisedPlugins.push({ container: fn, plugin: plugin @@ -58,10 +58,10 @@ export default class OptionManager { } static createBareOptions() { - var opts = {}; + let opts = {}; - for (var key in config) { - var opt = config[key]; + for (let key in config) { + let opt = config[key]; opts[key] = clone(opt.default); } @@ -70,7 +70,7 @@ export default class OptionManager { static normalisePlugins(loc, dirname, plugins) { return plugins.map(function (val, i) { - var plugin, options; + let plugin, options; // destructure plugins if (Array.isArray(val)) { @@ -81,7 +81,7 @@ export default class OptionManager { // allow plugins to be specified as strings if (typeof plugin === "string") { - var pluginLoc = resolve(`babel-plugin-${plugin}`, dirname) || resolve(plugin, dirname); + let pluginLoc = resolve(`babel-plugin-${plugin}`, dirname) || resolve(plugin, dirname); if (pluginLoc) { plugin = require(pluginLoc); } else { @@ -106,8 +106,8 @@ export default class OptionManager { addConfig(loc, key?, json=json5) { if (this.resolvedConfigs.indexOf(loc) >= 0) return; - var content = fs.readFileSync(loc, "utf8"); - var opts; + let content = fs.readFileSync(loc, "utf8"); + let opts; try { opts = jsonCache[content] = jsonCache[content] || json.parse(content); @@ -163,8 +163,8 @@ export default class OptionManager { delete opts.presets; } - var envOpts; - var envKey = process.env.BABEL_ENV || process.env.NODE_ENV || "development"; + let envOpts; + let envKey = process.env.BABEL_ENV || process.env.NODE_ENV || "development"; if (opts.env) { envOpts = opts.env[envKey]; delete opts.env; @@ -178,11 +178,11 @@ export default class OptionManager { } mergePresets(presets: Array, dirname) { - for (var val of presets) { + for (let val of presets) { if (typeof val === "string") { - var presetLoc = resolve(`babel-preset-${val}`, dirname) || resolve(val, dirname); + let presetLoc = resolve(`babel-preset-${val}`, dirname) || resolve(val, dirname); if (presetLoc) { - var presetOpts = require(presetLoc); + let presetOpts = require(presetLoc); this.mergeOptions(presetOpts, presetLoc, presetLoc, path.dirname(presetLoc)); } else { throw new Error("todo"); @@ -196,8 +196,8 @@ export default class OptionManager { } addIgnoreConfig(loc) { - var file = fs.readFileSync(loc, "utf8"); - var lines = file.split("\n"); + let file = fs.readFileSync(loc, "utf8"); + let lines = file.split("\n"); lines = lines.map(function (line) { return line.replace(/#(.*?)$/, "").trim(); @@ -213,18 +213,18 @@ export default class OptionManager { loc = path.join(process.cwd(), loc); } - var foundConfig = false; - var foundIgnore = false; + let foundConfig = false; + let foundIgnore = false; while (loc !== (loc = path.dirname(loc))) { if (!foundConfig) { - var configLoc = path.join(loc, BABELRC_FILENAME); + let configLoc = path.join(loc, BABELRC_FILENAME); if (exists(configLoc)) { this.addConfig(configLoc); foundConfig = true; } - var pkgLoc = path.join(loc, PACKAGE_FILENAME); + let pkgLoc = path.join(loc, PACKAGE_FILENAME); if (exists(pkgLoc)) { this.addConfig(pkgLoc, "babel", JSON); foundConfig = true; @@ -232,7 +232,7 @@ export default class OptionManager { } if (!foundIgnore) { - var ignoreLoc = path.join(loc, BABELIGNORE_FILENAME); + let ignoreLoc = path.join(loc, BABELIGNORE_FILENAME); if (exists(ignoreLoc)) { this.addIgnoreConfig(ignoreLoc); foundIgnore = true; @@ -244,11 +244,11 @@ export default class OptionManager { } normaliseOptions() { - var opts = this.options; + let opts = this.options; for (let key in config) { - var option = config[key]; - var val = opts[key]; + let option = config[key]; + let val = opts[key]; // optional if (!val && option.optional) continue; diff --git a/packages/babel-core/src/transformation/file/options/parsers.js b/packages/babel-core/src/transformation/file/options/parsers.js index c6c6fd26f7..60d2752782 100644 --- a/packages/babel-core/src/transformation/file/options/parsers.js +++ b/packages/babel-core/src/transformation/file/options/parsers.js @@ -5,7 +5,7 @@ export function number(val) { return +val; } -export var filename = slash; +export let filename = slash; export function boolean(val) { return !!val; diff --git a/packages/babel-core/src/transformation/helpers/build-binary-assignment-operator-transformer.js b/packages/babel-core/src/transformation/helpers/build-binary-assignment-operator-transformer.js index 4e60a46e3d..4772176e69 100644 --- a/packages/babel-core/src/transformation/helpers/build-binary-assignment-operator-transformer.js +++ b/packages/babel-core/src/transformation/helpers/build-binary-assignment-operator-transformer.js @@ -2,13 +2,13 @@ import explode from "./explode-assignable-expression"; import * as t from "babel-types"; export default function (opts) { - var exports = {}; + let exports = {}; - var isAssignment = function (node) { + let isAssignment = function (node) { return node.operator === opts.operator + "="; }; - var buildAssignment = function (left, right) { + let buildAssignment = function (left, right) { return t.assignmentExpression("=", left, right); }; @@ -16,11 +16,11 @@ export default function (opts) { // hit the `AssignmentExpression` one below if (path.isCompletionRecord()) return; - var expr = path.node.expression; + let expr = path.node.expression; if (!isAssignment(expr)) return; - var nodes = []; - var exploded = explode(expr.left, nodes, file, path.scope, true); + let nodes = []; + let exploded = explode(expr.left, nodes, file, path.scope, true); nodes.push(t.expressionStatement( buildAssignment(exploded.ref, opts.build(exploded.uid, expr.right)) @@ -32,8 +32,8 @@ export default function (opts) { exports.AssignmentExpression = function ({ node, scope }, file) { if (!isAssignment(node)) return; - var nodes = []; - var exploded = explode(node.left, nodes, file, scope); + let nodes = []; + let exploded = explode(node.left, nodes, file, scope); nodes.push(buildAssignment(exploded.ref, opts.build(exploded.uid, node.right))); return nodes; }; diff --git a/packages/babel-core/src/transformation/helpers/build-comprehension.js b/packages/babel-core/src/transformation/helpers/build-comprehension.js index 3c491cc15c..2903f5fec4 100644 --- a/packages/babel-core/src/transformation/helpers/build-comprehension.js +++ b/packages/babel-core/src/transformation/helpers/build-comprehension.js @@ -1,10 +1,10 @@ import * as t from "babel-types"; export default function build(node, buildBody) { - var self = node.blocks.shift(); + let self = node.blocks.shift(); if (!self) return; - var child = build(node, buildBody); + let child = build(node, buildBody); if (!child) { // last item child = buildBody(); diff --git a/packages/babel-core/src/transformation/helpers/build-conditional-assignment-operator-transformer.js b/packages/babel-core/src/transformation/helpers/build-conditional-assignment-operator-transformer.js index 94ae08d7ca..70275fa570 100644 --- a/packages/babel-core/src/transformation/helpers/build-conditional-assignment-operator-transformer.js +++ b/packages/babel-core/src/transformation/helpers/build-conditional-assignment-operator-transformer.js @@ -2,7 +2,7 @@ import explode from "./explode-assignable-expression"; import * as t from "babel-types"; export default function (exports, opts) { - var buildAssignment = function (left, right) { + let buildAssignment = function (left, right) { return t.assignmentExpression("=", left, right); }; @@ -10,12 +10,12 @@ export default function (exports, opts) { // hit the `AssignmentExpression` one below if (path.isCompletionRecord()) return; - var expr = path.node.expression; + let expr = path.node.expression; if (!opts.is(expr, file)) return; - var nodes = []; + let nodes = []; - var exploded = explode(expr.left, nodes, file, path.scope); + let exploded = explode(expr.left, nodes, file, path.scope); nodes.push(t.ifStatement( opts.build(exploded.uid, file), @@ -26,11 +26,11 @@ export default function (exports, opts) { }; exports.AssignmentExpression = function (path, file) { - var node = path.node; + let node = path.node; if (!opts.is(node, file)) return; - var nodes = []; - var exploded = explode(node.left, nodes, file, path.scope); + let nodes = []; + let exploded = explode(node.left, nodes, file, path.scope); nodes.push(t.logicalExpression( "&&", diff --git a/packages/babel-core/src/transformation/helpers/build-react-transformer.js b/packages/babel-core/src/transformation/helpers/build-react-transformer.js index dc77ac2b2a..6a2c904250 100644 --- a/packages/babel-core/src/transformation/helpers/build-react-transformer.js +++ b/packages/babel-core/src/transformation/helpers/build-react-transformer.js @@ -1,4 +1,4 @@ -// Based upon the excellent jsx-transpiler by Ingvar Stepanyan (RReverser) +// Based upon the excellent jsx-transpiler by Inglet Stepanyan (RReverser) // https://github.com/RReverser/jsx-transpiler // jsx @@ -10,7 +10,7 @@ import { react } from "babel-types"; import * as t from "babel-types"; export default function (opts) { - var visitor = {}; + let visitor = {}; visitor.JSXIdentifier = function (node) { if (node.name === "this" && this.isReferenced()) { @@ -39,14 +39,14 @@ export default function (opts) { visitor.JSXAttribute = { enter(node) { - var value = node.value; + let value = node.value; if (t.isLiteral(value) && isString(value.value)) { value.value = value.value.replace(/\n\s+/g, " "); } }, exit(node) { - var value = node.value || t.booleanLiteral(true); + let value = node.value || t.booleanLiteral(true); return t.inherits(t.property("init", node.name, value), node); } }; @@ -55,17 +55,17 @@ export default function (opts) { exit(node, parent, scope, file) { parent.children = react.buildChildren(parent); - var tagExpr = node.name; - var args = []; + let tagExpr = node.name; + let args = []; - var tagName; + let tagName; if (t.isIdentifier(tagExpr)) { tagName = tagExpr.name; } else if (t.isLiteral(tagExpr)) { tagName = tagExpr.value; } - var state = { + let state = { tagExpr: tagExpr, tagName: tagName, args: args @@ -75,7 +75,7 @@ export default function (opts) { opts.pre(state, file); } - var attribs = node.attributes; + let attribs = node.attributes; if (attribs.length) { attribs = buildJSXOpeningElementAttributes(attribs, file); } else { @@ -99,11 +99,11 @@ export default function (opts) { * all prior attributes to an array for later processing. */ - var buildJSXOpeningElementAttributes = function (attribs, file) { - var _props = []; - var objs = []; + let buildJSXOpeningElementAttributes = function (attribs, file) { + let _props = []; + let objs = []; - var pushProps = function () { + let pushProps = function () { if (!_props.length) return; objs.push(t.objectExpression(_props)); @@ -111,7 +111,7 @@ export default function (opts) { }; while (attribs.length) { - var prop = attribs.shift(); + let prop = attribs.shift(); if (t.isJSXSpreadAttribute(prop)) { pushProps(); objs.push(prop.argument); @@ -143,7 +143,7 @@ export default function (opts) { visitor.JSXElement = { exit(node) { - var callExpr = node.openingElement; + let callExpr = node.openingElement; callExpr.arguments = callExpr.arguments.concat(node.children); diff --git a/packages/babel-core/src/transformation/helpers/call-delegate.js b/packages/babel-core/src/transformation/helpers/call-delegate.js index d98a4907a6..6fc6009251 100644 --- a/packages/babel-core/src/transformation/helpers/call-delegate.js +++ b/packages/babel-core/src/transformation/helpers/call-delegate.js @@ -1,6 +1,6 @@ import * as t from "babel-types"; -var visitor = { +let visitor = { enter(path, state) { if (path.isThisExpression() || path.isReferencedIdentifier({ name: "arguments" })) { state.found = true; @@ -14,19 +14,19 @@ var visitor = { }; export default function (node, scope) { - var container = t.functionExpression(null, [], node.body, node.generator, node.async); + let container = t.functionExpression(null, [], node.body, node.generator, node.async); - var callee = container; - var args = []; + let callee = container; + let args = []; - var state = { found: false }; + let state = { found: false }; scope.traverse(node, visitor, state); if (state.found) { callee = t.memberExpression(container, t.identifier("apply")); args = [t.thisExpression(), t.identifier("arguments")]; } - var call = t.callExpression(callee, args); + let call = t.callExpression(callee, args); if (node.generator) call = t.yieldExpression(call, true); return t.returnStatement(call); diff --git a/packages/babel-core/src/transformation/helpers/define-map.js b/packages/babel-core/src/transformation/helpers/define-map.js index 7f8ae70c93..4fc596a5d4 100644 --- a/packages/babel-core/src/transformation/helpers/define-map.js +++ b/packages/babel-core/src/transformation/helpers/define-map.js @@ -3,11 +3,11 @@ import has from "lodash/object/has"; import * as t from "babel-types"; export function push(mutatorMap, node, kind, file) { - var alias = t.toKeyAlias(node); + let alias = t.toKeyAlias(node); // - var map = {}; + let map = {}; if (has(mutatorMap, alias)) map = mutatorMap[alias]; mutatorMap[alias] = map; @@ -23,7 +23,7 @@ export function push(mutatorMap, node, kind, file) { } if (node.decorators) { - var decorators = map.decorators = map.decorators || t.arrayExpression([]); + let decorators = map.decorators = map.decorators || t.arrayExpression([]); decorators.elements = decorators.elements.concat(node.decorators.map(dec => dec.expression).reverse()); } @@ -44,7 +44,7 @@ export function push(mutatorMap, node, kind, file) { } export function hasComputed(mutatorMap) { - for (var key in mutatorMap) { + for (let key in mutatorMap) { if (mutatorMap[key]._computed) { return true; } @@ -53,11 +53,11 @@ export function hasComputed(mutatorMap) { } export function toComputedObjectFromClass(obj) { - var objExpr = t.arrayExpression([]); + let objExpr = t.arrayExpression([]); - for (var i = 0; i < obj.properties.length; i++) { - var prop = obj.properties[i]; - var val = prop.value; + for (let i = 0; i < obj.properties.length; i++) { + let prop = obj.properties[i]; + let val = prop.value; val.properties.unshift(t.property("init", t.identifier("key"), t.toComputedKey(prop))); objExpr.elements.push(val); } @@ -66,20 +66,20 @@ export function toComputedObjectFromClass(obj) { } export function toClassObject(mutatorMap) { - var objExpr = t.objectExpression([]); + let objExpr = t.objectExpression([]); each(mutatorMap, function (map) { - var mapNode = t.objectExpression([]); + let mapNode = t.objectExpression([]); - var propNode = t.property("init", map._key, mapNode, map._computed); + let propNode = t.property("init", map._key, mapNode, map._computed); each(map, function (node, key) { if (key[0] === "_") return; - var inheritNode = node; + let inheritNode = node; if (t.isMethodDefinition(node) || t.isClassProperty(node)) node = node.value; - var prop = t.property("init", t.identifier(key), node); + let prop = t.property("init", t.identifier(key), node); t.inheritsComments(prop, inheritNode); t.removeComments(inheritNode); diff --git a/packages/babel-core/src/transformation/helpers/explode-assignable-expression.js b/packages/babel-core/src/transformation/helpers/explode-assignable-expression.js index c89388616c..eddcc5d4c8 100644 --- a/packages/babel-core/src/transformation/helpers/explode-assignable-expression.js +++ b/packages/babel-core/src/transformation/helpers/explode-assignable-expression.js @@ -1,7 +1,7 @@ import * as t from "babel-types"; -var getObjRef = function (node, nodes, file, scope) { - var ref; +let getObjRef = function (node, nodes, file, scope) { + let ref; if (t.isIdentifier(node)) { if (scope.hasBinding(node.name)) { // this variable is declared in scope so we can be 100% sure @@ -26,19 +26,19 @@ var getObjRef = function (node, nodes, file, scope) { throw new Error(`We can't explode this node type ${node.type}`); } - var temp = scope.generateUidIdentifierBasedOnNode(ref); + let temp = scope.generateUidIdentifierBasedOnNode(ref); nodes.push(t.variableDeclaration("var", [ t.variableDeclarator(temp, ref) ])); return temp; }; -var getPropRef = function (node, nodes, file, scope) { - var prop = node.property; - var key = t.toComputedKey(node, prop); +let getPropRef = function (node, nodes, file, scope) { + let prop = node.property; + let key = t.toComputedKey(node, prop); if (t.isLiteral(key)) return key; - var temp = scope.generateUidIdentifierBasedOnNode(prop); + let temp = scope.generateUidIdentifierBasedOnNode(prop); nodes.push(t.variableDeclaration("var", [ t.variableDeclarator(temp, prop) ])); @@ -46,21 +46,21 @@ var getPropRef = function (node, nodes, file, scope) { }; export default function (node, nodes, file, scope, allowedSingleIdent) { - var obj; + let obj; if (t.isIdentifier(node) && allowedSingleIdent) { obj = node; } else { obj = getObjRef(node, nodes, file, scope); } - var ref, uid; + let ref, uid; if (t.isIdentifier(node)) { ref = node; uid = obj; } else { - var prop = getPropRef(node, nodes, file, scope); - var computed = node.computed || t.isLiteral(prop); + let prop = getPropRef(node, nodes, file, scope); + let computed = node.computed || t.isLiteral(prop); uid = ref = t.memberExpression(obj, prop, computed); } diff --git a/packages/babel-core/src/transformation/helpers/get-function-arity.js b/packages/babel-core/src/transformation/helpers/get-function-arity.js index ce66f57207..756a102d9a 100644 --- a/packages/babel-core/src/transformation/helpers/get-function-arity.js +++ b/packages/babel-core/src/transformation/helpers/get-function-arity.js @@ -1,8 +1,8 @@ import * as t from "babel-types"; export default function (node) { - for (var i = 0; i < node.params.length; i++) { - var param = node.params[i]; + for (let i = 0; i < node.params.length; i++) { + let param = node.params[i]; if (t.isAssignmentPattern(param) || t.isRestElement(param)) { return i; } diff --git a/packages/babel-core/src/transformation/helpers/memoise-decorators.js b/packages/babel-core/src/transformation/helpers/memoise-decorators.js index 1764781df9..d05d4c4e33 100644 --- a/packages/babel-core/src/transformation/helpers/memoise-decorators.js +++ b/packages/babel-core/src/transformation/helpers/memoise-decorators.js @@ -1,15 +1,15 @@ import * as t from "babel-types"; export default function (decorators, scope) { - for (var i = 0; i < decorators.length; i++) { - var decorator = decorators[i]; - var expression = decorator.expression; + for (let i = 0; i < decorators.length; i++) { + let decorator = decorators[i]; + let expression = decorator.expression; if (!t.isMemberExpression(expression)) continue; - var temp = scope.maybeGenerateMemoised(expression.object); - var ref; + let temp = scope.maybeGenerateMemoised(expression.object); + let ref; - var nodes = []; + let nodes = []; if (temp) { ref = temp; diff --git a/packages/babel-core/src/transformation/helpers/name-method.js b/packages/babel-core/src/transformation/helpers/name-method.js index 9b3fc20ebb..df1a25e88c 100644 --- a/packages/babel-core/src/transformation/helpers/name-method.js +++ b/packages/babel-core/src/transformation/helpers/name-method.js @@ -2,14 +2,14 @@ import getFunctionArity from "./get-function-arity"; import * as util from "../../util"; import * as t from "babel-types"; -var visitor = { +let visitor = { "ReferencedIdentifier|BindingIdentifier"(path, state) { // check if this node matches our function id if (path.node.name !== state.name) return; // check that we don't have a local variable declared as that removes the need // for the wrapper - var localDeclar = path.scope.getBindingIdentifier(state.name); + let localDeclar = path.scope.getBindingIdentifier(state.name); if (localDeclar !== state.outerDeclar) return; state.selfReference = true; @@ -24,9 +24,9 @@ function wrap(state, method, id, scope) { scope.rename(id.name); } else { // need to add a wrapper since we can't change the references - var templateName = "property-method-assignment-wrapper"; + let templateName = "property-method-assignment-wrapper"; if (method.generator) templateName += "-generator"; - var template = util.template(templateName, { + let template = util.template(templateName, { FUNCTION: method, FUNCTION_ID: id, FUNCTION_KEY: scope.generateUidIdentifier(id.name) @@ -35,8 +35,8 @@ function wrap(state, method, id, scope) { // shim in dummy params to retain function arity, if you try to read the // source then you'll get the original since it's proxied so it's all good - var params = template.callee.body.body[0].params; - for (var i = 0, len = getFunctionArity(method); i < len; i++) { + let params = template.callee.body.body[0].params; + for (let i = 0, len = getFunctionArity(method); i < len; i++) { params.push(scope.generateUidIdentifier("x")); } @@ -49,7 +49,7 @@ function wrap(state, method, id, scope) { } function visit(node, name, scope) { - var state = { + let state = { selfAssignment: false, selfReference: false, outerDeclar: scope.getBindingIdentifier(name), @@ -60,13 +60,13 @@ function visit(node, name, scope) { // check to see if we have a local binding of the id we're setting inside of // the function, this is important as there are caveats associated - var binding = scope.getOwnBinding(name); + let binding = scope.getOwnBinding(name); if (binding) { if (binding.kind === "param") { // safari will blow up in strict mode with code like: // - // var t = function t(t) {}; + // let t = function t(t) {}; // // with the error: // @@ -80,8 +80,8 @@ function visit(node, name, scope) { } else { // otherwise it's defined somewhere in scope like: // - // var t = function () { - // var t = 2; + // let t = function () { + // let t = 2; // }; // // so we can safely just set the id and move along as it shadows the @@ -95,19 +95,19 @@ function visit(node, name, scope) { } export function custom(node, id, scope) { - var state = visit(node, id.name, scope); + let state = visit(node, id.name, scope); return wrap(state, node, id, scope); } export function property(node, file, scope) { - var key = t.toComputedKey(node, node.key); + let key = t.toComputedKey(node, node.key); if (!t.isLiteral(key)) return; // we can't set a function id with this - var name = t.toBindingIdentifierName(key.value); - var id = t.identifier(name); + let name = t.toBindingIdentifierName(key.value); + let id = t.identifier(name); - var method = node.value; - var state = visit(method, name, scope); + let method = node.value; + let state = visit(method, name, scope); node.value = wrap(state, method, id, scope) || method; } @@ -115,16 +115,16 @@ export function bare(node, parent, scope) { // has an `id` so we don't need to infer one if (node.id) return; - var id; + let id; if (t.isProperty(parent) && parent.kind === "init" && (!parent.computed || t.isLiteral(parent.key))) { // { foo() {} }; id = parent.key; } else if (t.isVariableDeclarator(parent)) { - // var foo = function () {}; + // let foo = function () {}; id = parent.id; if (t.isIdentifier(id)) { - var binding = scope.parent.getBinding(id.name); + let binding = scope.parent.getBinding(id.name); if (binding && binding.constant && scope.getBinding(id.name) === binding) { // always going to reference this method node.id = id; @@ -135,7 +135,7 @@ export function bare(node, parent, scope) { return; } - var name; + let name; if (t.isLiteral(id)) { name = id.value; } else if (t.isIdentifier(id)) { @@ -147,6 +147,6 @@ export function bare(node, parent, scope) { name = t.toBindingIdentifierName(name); id = t.identifier(name); - var state = visit(node, name, scope); + let state = visit(node, name, scope); return wrap(state, node, id, scope); } diff --git a/packages/babel-core/src/transformation/helpers/regex.js b/packages/babel-core/src/transformation/helpers/regex.js index 012775591e..c99a183760 100644 --- a/packages/babel-core/src/transformation/helpers/regex.js +++ b/packages/babel-core/src/transformation/helpers/regex.js @@ -6,7 +6,7 @@ export function is(node, flag) { } export function pullFlag(node, flag) { - var flags = node.flags.split(""); + let flags = node.flags.split(""); if (node.flags.indexOf(flag) < 0) return; pull(flags, flag); node.flags = flags.join(""); diff --git a/packages/babel-core/src/transformation/helpers/remap-async-to-generator.js b/packages/babel-core/src/transformation/helpers/remap-async-to-generator.js index 49351fdca4..561418e44f 100644 --- a/packages/babel-core/src/transformation/helpers/remap-async-to-generator.js +++ b/packages/babel-core/src/transformation/helpers/remap-async-to-generator.js @@ -1,6 +1,6 @@ import * as t from "babel-types"; -var awaitVisitor = { +let awaitVisitor = { Function(path) { path.skip(); }, @@ -16,9 +16,9 @@ var awaitVisitor = { } }; -var referenceVisitor = { +let referenceVisitor = { ReferencedIdentifier({ node, scope }, state) { - var name = state.id.name; + let name = state.id.name; if (node.name === name && scope.bindingIdentifierEquals(name, state.id)) { return state.ref = state.ref || scope.generateUidIdentifier(name); } @@ -26,20 +26,20 @@ var referenceVisitor = { }; export default function (path, callId) { - var node = path.node; + let node = path.node; node.async = false; node.generator = true; path.traverse(awaitVisitor, state); - var call = t.callExpression(callId, [node]); + let call = t.callExpression(callId, [node]); - var id = node.id; + let id = node.id; node.id = null; if (t.isFunctionDeclaration(node)) { - var declar = t.variableDeclaration("let", [ + let declar = t.variableDeclaration("let", [ t.variableDeclarator(id, call) ]); declar._blockHoist = true; @@ -48,7 +48,7 @@ export default function (path, callId) { node.type = "FunctionExpression"; if (id) { - var state = { id }; + let state = { id }; path.traverse(referenceVisitor, state); if (state.ref) { diff --git a/packages/babel-core/src/transformation/helpers/replace-supers.js b/packages/babel-core/src/transformation/helpers/replace-supers.js index 5eb11077fc..8239e9d481 100644 --- a/packages/babel-core/src/transformation/helpers/replace-supers.js +++ b/packages/babel-core/src/transformation/helpers/replace-supers.js @@ -13,10 +13,10 @@ function isMemberExpressionSuper(node) { return t.isMemberExpression(node) && t.isSuper(node.object); } -var visitor = { +let visitor = { enter(path, state) { - var topLevel = state.topLevel; - var self = state.self; + let topLevel = state.topLevel; + let self = state.self; if (path.isFunction() && !path.isArrowFunctionExpression()) { // we need to call traverseLevel again so we're context aware @@ -29,15 +29,15 @@ var visitor = { return path.skip(); } - var getThisReference = topLevel ? + let getThisReference = topLevel ? // top level so `this` is the instance t.thisExpression : // not in the top level so we need to create a reference self.getThisReference.bind(self); - var callback = self.specHandle; + let callback = self.specHandle; if (self.isLoose) callback = self.looseHandle; - var result = callback.call(self, path, getThisReference); + let result = callback.call(self, path, getThisReference); if (result) path.hasSuper = true; if (result === true) return; return result; @@ -119,7 +119,7 @@ export default class ReplaceSupers { } traverseLevel(path: NodePath, topLevel: boolean) { - var state = { self: this, topLevel: topLevel }; + let state = { self: this, topLevel: topLevel }; path.traverse(visitor, state); } @@ -127,7 +127,7 @@ export default class ReplaceSupers { if (this.topLevelThisReference) { return this.topLevelThisReference; } else { - var ref = this.topLevelThisReference = this.scope.generateUidIdentifier("this"); + let ref = this.topLevelThisReference = this.scope.generateUidIdentifier("this"); this.methodNode.value.body.body.unshift(t.variableDeclaration("var", [ t.variableDeclarator(this.topLevelThisReference, t.thisExpression()) ])); @@ -136,9 +136,9 @@ export default class ReplaceSupers { } getLooseSuperProperty(id: Object, parent: Object) { - var methodNode = this.methodNode; - var methodName = methodNode.key; - var superRef = this.superRef || t.identifier("Function"); + let methodNode = this.methodNode; + let methodName = methodNode.key; + let superRef = this.superRef || t.identifier("Function"); if (parent.property === id) { return; @@ -175,11 +175,11 @@ export default class ReplaceSupers { } looseHandle(path: NodePath, getThisReference: Function) { - var node = path.node; + let node = path.node; if (path.isSuper()) { return this.getLooseSuperProperty(node, path.parent); } else if (path.isCallExpression()) { - var callee = node.callee; + let callee = node.callee; if (!t.isMemberExpression(callee)) return; if (!t.isSuper(callee.object)) return; @@ -195,7 +195,7 @@ export default class ReplaceSupers { // super.name = "val"; -> _set(Object.getPrototypeOf(objectRef.prototype), "name", this); return this.setSuperProperty(node.left.property, node.right, node.left.computed, getThisReference()); } else { - // super.age += 2; -> var _ref = super.age; super.age = _ref + 2; + // super.age += 2; -> let _ref = super.age; super.age = _ref + 2; ref = ref || path.scope.generateUidIdentifier("ref"); return [ t.variableDeclaration("var", [ @@ -209,21 +209,21 @@ export default class ReplaceSupers { } specHandle(path: NodePath, getThisReference: Function) { - var methodNode = this.methodNode; - var property; - var computed; - var args; - var thisReference; + let methodNode = this.methodNode; + let property; + let computed; + let args; + let thisReference; - var parent = path.parent; - var node = path.node; + let parent = path.parent; + let node = path.node; if (isIllegalBareSuper(node, parent)) { throw path.buildCodeFrameError(messages.get("classesIllegalBareSuper")); } if (t.isCallExpression(node)) { - var callee = node.callee; + let callee = node.callee; if (t.isSuper(callee)) { // super(); -> _get(Object.getPrototypeOf(objectRef), "MethodName", this).call(this); property = methodNode.key; @@ -234,7 +234,7 @@ export default class ReplaceSupers { // - https://esdiscuss.org/topic/super-call-in-methods // - https://twitter.com/wycats/status/544553184396836864 if (methodNode.key.name !== "constructor" || !this.inClass) { - var methodName = methodNode.key.name || "METHOD_NAME"; + let methodName = methodNode.key.name || "METHOD_NAME"; throw this.file.buildCodeFrameError(node, messages.get("classesIllegalSuperCall", methodName)); } } else if (isMemberExpressionSuper(callee)) { @@ -248,13 +248,13 @@ export default class ReplaceSupers { property = node.property; computed = node.computed; } else if (t.isUpdateExpression(node) && isMemberExpressionSuper(node.argument)) { - var binary = t.binaryExpression(node.operator[0], node.argument, t.numberLiteral(1)); + let binary = t.binaryExpression(node.operator[0], node.argument, t.numberLiteral(1)); if (node.prefix) { // ++super.foo; -> super.foo += 1; return this.specHandleAssignmentExpression(null, path, binary, getThisReference); } else { - // super.foo++; -> var _ref = super.foo; super.foo = _ref + 1; - var ref = path.scope.generateUidIdentifier("ref"); + // super.foo++; -> let _ref = super.foo; super.foo = _ref + 1; + let ref = path.scope.generateUidIdentifier("ref"); return this.specHandleAssignmentExpression(ref, path, binary, getThisReference).concat(t.expressionStatement(ref)); } } else if (t.isAssignmentExpression(node) && isMemberExpressionSuper(node.left)) { @@ -264,7 +264,7 @@ export default class ReplaceSupers { if (!property) return; thisReference = getThisReference(); - var superProperty = this.getSuperProperty(property, computed, thisReference); + let superProperty = this.getSuperProperty(property, computed, thisReference); if (args) { if (args.length === 1 && t.isSpreadElement(args[0])) { // super(...arguments); diff --git a/packages/babel-core/src/transformation/index.js b/packages/babel-core/src/transformation/index.js index da4c0dc0f4..3719de4bd0 100644 --- a/packages/babel-core/src/transformation/index.js +++ b/packages/babel-core/src/transformation/index.js @@ -1,7 +1,7 @@ import Pipeline from "./pipeline"; -var pipeline = new Pipeline; -var transform = pipeline.transform.bind(pipeline); +let pipeline = new Pipeline; +let transform = pipeline.transform.bind(pipeline); transform.fromAst = pipeline.transformFromAst.bind(pipeline); transform.lint = pipeline.lint.bind(pipeline); transform.pipeline = pipeline; diff --git a/packages/babel-core/src/transformation/internal-plugins/block-hoist.js b/packages/babel-core/src/transformation/internal-plugins/block-hoist.js index e033bc39f0..014b9e7711 100644 --- a/packages/babel-core/src/transformation/internal-plugins/block-hoist.js +++ b/packages/babel-core/src/transformation/internal-plugins/block-hoist.js @@ -16,9 +16,9 @@ export default new Plugin({ visitor: { Block: { exit({ node }) { - var hasChange = false; - for (var i = 0; i < node.body.length; i++) { - var bodyNode = node.body[i]; + let hasChange = false; + for (let i = 0; i < node.body.length; i++) { + let bodyNode = node.body[i]; if (bodyNode && bodyNode._blockHoist != null) { hasChange = true; break; @@ -27,7 +27,7 @@ export default new Plugin({ if (!hasChange) return; node.body = sortBy(node.body, function(bodyNode){ - var priority = bodyNode && bodyNode._blockHoist; + let priority = bodyNode && bodyNode._blockHoist; if (priority == null) priority = 1; if (priority === true) priority = 2; diff --git a/packages/babel-core/src/transformation/internal-plugins/shadow-functions.js b/packages/babel-core/src/transformation/internal-plugins/shadow-functions.js index b386a44202..397b48b67a 100644 --- a/packages/babel-core/src/transformation/internal-plugins/shadow-functions.js +++ b/packages/babel-core/src/transformation/internal-plugins/shadow-functions.js @@ -25,13 +25,13 @@ function shouldShadow(path, shadowPath) { function remap(path, key, create) { // ensure that we're shadowed - var shadowPath = path.inShadow(key); + let shadowPath = path.inShadow(key); if (!shouldShadow(path, shadowPath)) return; - var shadowFunction = path.node._shadowedFunctionLiteral; - var currentFunction; + let shadowFunction = path.node._shadowedFunctionLiteral; + let currentFunction; - var fnPath = path.findParent(function (path) { + let fnPath = path.findParent(function (path) { if (path.isProgram() || path.isFunction()) { // catch current function in case this is the shadowed one and we can ignore it currentFunction = currentFunction || path; @@ -53,11 +53,11 @@ function remap(path, key, create) { // no point in realiasing if we're in this function if (fnPath === currentFunction) return; - var cached = fnPath.getData(key); + let cached = fnPath.getData(key); if (cached) return cached; - var init = create(); - var id = path.scope.generateUidIdentifier(key); + let init = create(); + let id = path.scope.generateUidIdentifier(key); fnPath.setData(key, id); fnPath.scope.push({ id, init }); diff --git a/packages/babel-core/src/transformation/modules/_default.js b/packages/babel-core/src/transformation/modules/_default.js index 73535a5d0e..48dd52bbd0 100644 --- a/packages/babel-core/src/transformation/modules/_default.js +++ b/packages/babel-core/src/transformation/modules/_default.js @@ -32,10 +32,10 @@ export default class DefaultFormatter { } addScope(path) { - var source = path.node.source && path.node.source.value; + let source = path.node.source && path.node.source.value; if (!source) return; - var existingScope = this.sourceScopes[source]; + let existingScope = this.sourceScopes[source]; if (existingScope && existingScope !== path.scope) { throw path.buildCodeFrameError(messages.get("modulesDuplicateDeclarations")); } @@ -44,7 +44,7 @@ export default class DefaultFormatter { } isModuleType(node, type) { - var modules = this.file.dynamicImportTypes[type]; + let modules = this.file.dynamicImportTypes[type]; return modules && modules.indexOf(node) >= 0; } @@ -57,8 +57,8 @@ export default class DefaultFormatter { } getMetadata() { - var has = false; - for (var node of (this.file.ast.program.body: Array)) { + let has = false; + for (let node of (this.file.ast.program.body: Array)) { if (t.isModuleDeclaration(node)) { has = true; break; @@ -76,9 +76,9 @@ export default class DefaultFormatter { } remapExportAssignment(node, exported) { - var assign = node; + let assign = node; - for (var i = 0; i < exported.length; i++) { + for (let i = 0; i < exported.length; i++) { assign = t.assignmentExpression( "=", t.memberExpression(t.identifier("exports"), exported[i]), @@ -90,7 +90,7 @@ export default class DefaultFormatter { } _addExport(name, exported) { - var info = this.localExports[name] = this.localExports[name] || { + let info = this.localExports[name] = this.localExports[name] || { binding: this.scope.getBindingIdentifier(name), exported: [] }; @@ -100,21 +100,21 @@ export default class DefaultFormatter { getExport(node, scope) { if (!t.isIdentifier(node)) return; - var local = this.localExports[node.name]; + let local = this.localExports[node.name]; if (local && local.binding === scope.getBindingIdentifier(node.name)) { return local.exported; } } getModuleName() { - var opts = this.file.opts; + let opts = this.file.opts; // moduleId is n/a if a `getModuleId()` is provided if (opts.moduleId != null && !opts.getModuleId) { return opts.moduleId; } - var filenameRelative = opts.filenameRelative; - var moduleName = ""; + let filenameRelative = opts.filenameRelative; + let moduleName = ""; if (opts.moduleRoot != null) { moduleName = opts.moduleRoot + "/"; @@ -126,7 +126,7 @@ export default class DefaultFormatter { if (opts.sourceRoot != null) { // remove sourceRoot from filename - var sourceRootRegEx = new RegExp("^" + opts.sourceRoot + "\/?"); + let sourceRootRegEx = new RegExp("^" + opts.sourceRoot + "\/?"); filenameRelative = filenameRelative.replace(sourceRootRegEx, ""); } @@ -168,8 +168,8 @@ export default class DefaultFormatter { } getExternalReference(node, nodes) { - var ids = this.ids; - var id = node.source.value; + let ids = this.ids; + let id = node.source.value; if (ids[id]) { return ids[id]; @@ -185,7 +185,7 @@ export default class DefaultFormatter { } exportAllDeclaration(node, nodes) { - var ref = this.getExternalReference(node, nodes); + let ref = this.getExternalReference(node, nodes); nodes.push(this.buildExportsWildcard(ref, node)); } @@ -195,7 +195,7 @@ export default class DefaultFormatter { exportSpecifier(specifier, node, nodes) { if (node.source) { - var ref = this.getExternalReference(node, nodes); + let ref = this.getExternalReference(node, nodes); if (specifier.local.name === "default" && !this.noInteropRequireExport) { // importing a default so we need to normalize it @@ -244,28 +244,28 @@ export default class DefaultFormatter { } exportDeclaration(node, nodes) { - var declar = node.declaration; + let declar = node.declaration; - var id = declar.id; + let id = declar.id; if (t.isExportDefaultDeclaration(node)) { id = t.identifier("default"); } - var assign; + let assign; if (t.isVariableDeclaration(declar)) { - for (var i = 0; i < declar.declarations.length; i++) { - var decl = declar.declarations[i]; + for (let i = 0; i < declar.declarations.length; i++) { + let decl = declar.declarations[i]; decl.init = this.buildExportsAssignment(decl.id, decl.init, node).expression; - var newDeclar = t.variableDeclaration(declar.kind, [decl]); + let newDeclar = t.variableDeclaration(declar.kind, [decl]); if (i === 0) t.inherits(newDeclar, declar); nodes.push(newDeclar); } } else { - var ref = declar; + let ref = declar; if (t.isFunctionDeclaration(declar) || t.isClassDeclaration(declar)) { ref = declar.id; diff --git a/packages/babel-core/src/transformation/modules/_strict.js b/packages/babel-core/src/transformation/modules/_strict.js index 02c8aba004..2a615dfc4a 100644 --- a/packages/babel-core/src/transformation/modules/_strict.js +++ b/packages/babel-core/src/transformation/modules/_strict.js @@ -1,7 +1,7 @@ import * as util from "../../util"; export default function (Parent) { - var Constructor = function () { + let Constructor = function () { this.noInteropRequireImport = true; this.noInteropRequireExport = true; Parent.apply(this, arguments); diff --git a/packages/babel-core/src/transformation/modules/amd.js b/packages/babel-core/src/transformation/modules/amd.js index 3a5f5c4341..6f2a1319a4 100644 --- a/packages/babel-core/src/transformation/modules/amd.js +++ b/packages/babel-core/src/transformation/modules/amd.js @@ -11,8 +11,8 @@ export default class AMDFormatter extends DefaultFormatter { } buildDependencyLiterals() { - var names = []; - for (var name in this.ids) { + let names = []; + for (let name in this.ids) { names.push(t.stringLiteral(name)); } return names; @@ -25,28 +25,28 @@ export default class AMDFormatter extends DefaultFormatter { transform(program) { CommonFormatter.prototype.transform.apply(this, arguments); - var body = program.body; + let body = program.body; // build an array of module names - var names = [t.stringLiteral("exports")]; + let names = [t.stringLiteral("exports")]; if (this.passModuleArg) names.push(t.stringLiteral("module")); names = names.concat(this.buildDependencyLiterals()); names = t.arrayExpression(names); // build up define container - var params = values(this.ids); + let params = values(this.ids); if (this.passModuleArg) params.unshift(t.identifier("module")); params.unshift(t.identifier("exports")); - var container = t.functionExpression(null, params, t.blockStatement(body)); + let container = t.functionExpression(null, params, t.blockStatement(body)); - var defineArgs = [names, container]; - var moduleName = this.getModuleName(); + let defineArgs = [names, container]; + let moduleName = this.getModuleName(); if (moduleName) defineArgs.unshift(t.stringLiteral(moduleName)); - var call = t.callExpression(t.identifier("define"), defineArgs); + let call = t.callExpression(t.identifier("define"), defineArgs); program.body = [t.expressionStatement(call)]; } @@ -73,8 +73,8 @@ export default class AMDFormatter extends DefaultFormatter { } importSpecifier(specifier, node, nodes, scope) { - var key = node.source.value; - var ref = this.getExternalReference(node); + let key = node.source.value; + let ref = this.getExternalReference(node); if (t.isImportNamespaceSpecifier(specifier) || t.isImportDefaultSpecifier(specifier)) { this.defaultIds[key] = specifier.local; @@ -90,14 +90,14 @@ export default class AMDFormatter extends DefaultFormatter { // import * as bar from "foo"; } else if (!includes(this.file.dynamicImported, node) && t.isSpecifierDefault(specifier) && !this.noInteropRequireImport) { // import foo from "foo"; - var uid = scope.generateUidIdentifier(specifier.local.name); + let uid = scope.generateUidIdentifier(specifier.local.name); nodes.push(t.variableDeclaration("var", [ t.variableDeclarator(uid, t.callExpression(this.file.addHelper("interop-require-default"), [ref])) ])); ref = t.memberExpression(uid, t.identifier("default")); } else { // import { foo } from "foo"; - var imported = specifier.imported; + let imported = specifier.imported; if (t.isSpecifierDefault(specifier)) imported = t.identifier("default"); ref = t.memberExpression(ref, imported); } @@ -124,8 +124,8 @@ export default class AMDFormatter extends DefaultFormatter { if (this.doDefaultExportInterop(node)) { this.passModuleArg = true; - var declar = node.declaration; - var assign = util.template("exports-default-assign", { + let declar = node.declaration; + let assign = util.template("exports-default-assign", { VALUE: this._pushStatement(declar, nodes) }, true); diff --git a/packages/babel-core/src/transformation/modules/common.js b/packages/babel-core/src/transformation/modules/common.js index b6b18acf0c..1f81d20b68 100644 --- a/packages/babel-core/src/transformation/modules/common.js +++ b/packages/babel-core/src/transformation/modules/common.js @@ -8,16 +8,16 @@ export default class CommonJSFormatter extends DefaultFormatter { } _setup(conditional) { - var file = this.file; - var scope = file.scope; + let file = this.file; + let scope = file.scope; scope.rename("module"); scope.rename("exports"); if (!this.noInteropRequireImport && conditional) { - var templateName = "exports-module-declaration"; + let templateName = "exports-module-declaration"; if (this.file.isLoose("es6.modules")) templateName += "-loose"; - var declar = util.template(templateName, true); + let declar = util.template(templateName, true); declar._blockHoist = 3; file.path.unshiftContainer("body", [declar]); } @@ -38,9 +38,9 @@ export default class CommonJSFormatter extends DefaultFormatter { } importSpecifier(specifier, node, nodes, scope) { - var variableName = specifier.local; + let variableName = specifier.local; - var ref = this.getExternalReference(node, nodes); + let ref = this.getExternalReference(node, nodes); // import foo from "foo"; if (t.isSpecifierDefault(specifier)) { @@ -51,7 +51,7 @@ export default class CommonJSFormatter extends DefaultFormatter { } else if (this.noInteropRequireImport) { this.remaps.add(scope, variableName.name, t.memberExpression(ref, t.identifier("default"))); } else { - var uid = this.scope.generateUidIdentifierBasedOnNode(node, "import"); + let uid = this.scope.generateUidIdentifierBasedOnNode(node, "import"); nodes.push(t.variableDeclaration("var", [ t.variableDeclarator(uid, t.callExpression(this.file.addHelper("interop-require-default"), [ref])) @@ -101,8 +101,8 @@ export default class CommonJSFormatter extends DefaultFormatter { } _getExternalReference(node, nodes) { - var call = t.callExpression(t.identifier("require"), [node.source]); - var uid; + let call = t.callExpression(t.identifier("require"), [node.source]); + let uid; if (this.isModuleType(node, "absolute")) { // absolute module reference @@ -114,7 +114,7 @@ export default class CommonJSFormatter extends DefaultFormatter { uid = uid || node.specifiers[0].local; - var declar = t.variableDeclaration("var", [ + let declar = t.variableDeclaration("var", [ t.variableDeclarator(uid, call) ]); nodes.push(declar); diff --git a/packages/babel-core/src/transformation/modules/ignore.js b/packages/babel-core/src/transformation/modules/ignore.js index aaef9dfb27..98056791a7 100644 --- a/packages/babel-core/src/transformation/modules/ignore.js +++ b/packages/babel-core/src/transformation/modules/ignore.js @@ -3,7 +3,7 @@ import * as t from "babel-types"; export default class IgnoreFormatter extends DefaultFormatter { exportDeclaration(node, nodes) { - var declar = t.toStatement(node.declaration, true); + let declar = t.toStatement(node.declaration, true); if (declar) nodes.push(t.inherits(declar, node)); } diff --git a/packages/babel-core/src/transformation/modules/lib/metadata.js b/packages/babel-core/src/transformation/modules/lib/metadata.js index e22f9aa0a0..4d248ada07 100644 --- a/packages/babel-core/src/transformation/modules/lib/metadata.js +++ b/packages/babel-core/src/transformation/modules/lib/metadata.js @@ -1,7 +1,7 @@ import extend from "lodash/object/extend"; import * as t from "babel-types"; -export var ModuleDeclaration = { +export let ModuleDeclaration = { enter(node, parent, scope, formatter) { if (node.source) { node.source.value = formatter.file.resolveModuleSource(node.source.value); @@ -10,23 +10,23 @@ export var ModuleDeclaration = { } }; -export var ImportDeclaration = { +export let ImportDeclaration = { exit(node, parent, scope, formatter) { formatter.hasLocalImports = true; - var specifiers = []; - var imported = []; + let specifiers = []; + let imported = []; formatter.metadata.imports.push({ source: node.source.value, imported, specifiers }); - for (var specifier of (this.get("specifiers"): Array)) { - var ids = specifier.getBindingIdentifiers(); + for (let specifier of (this.get("specifiers"): Array)) { + let ids = specifier.getBindingIdentifiers(); extend(formatter.localImports, ids); - var local = specifier.node.local.name; + let local = specifier.node.local.name; if (specifier.isImportDefaultSpecifier()) { imported.push("default"); @@ -38,7 +38,7 @@ export var ImportDeclaration = { } if (specifier.isImportSpecifier()) { - var importedName = specifier.node.imported.name; + let importedName = specifier.node.imported.name; imported.push(importedName); specifiers.push({ kind: "named", @@ -61,17 +61,17 @@ export var ImportDeclaration = { export function ExportDeclaration(node, parent, scope, formatter) { formatter.hasLocalExports = true; - var source = node.source ? node.source.value : null; - var exports = formatter.metadata.exports; + let source = node.source ? node.source.value : null; + let exports = formatter.metadata.exports; // export function foo() {} - // export var foo = "bar"; - var declar = this.get("declaration"); + // export let foo = "bar"; + let declar = this.get("declaration"); if (declar.isStatement()) { - var bindings = declar.getBindingIdentifiers(); + let bindings = declar.getBindingIdentifiers(); - for (var name in bindings) { - var binding = bindings[name]; + for (let name in bindings) { + let binding = bindings[name]; formatter._addExport(name, binding); exports.exported.push(name); @@ -84,8 +84,8 @@ export function ExportDeclaration(node, parent, scope, formatter) { } if (this.isExportNamedDeclaration() && node.specifiers) { - for (var specifier of (node.specifiers: Array)) { - var exported = specifier.exported.name; + for (let specifier of (node.specifiers: Array)) { + let exported = specifier.exported.name; exports.exported.push(exported); // export foo from "bar"; @@ -107,7 +107,7 @@ export function ExportDeclaration(node, parent, scope, formatter) { }); } - var local = specifier.local; + let local = specifier.local; if (!local) continue; formatter._addExport(local.name, specifier.exported); @@ -144,7 +144,7 @@ export function ExportDeclaration(node, parent, scope, formatter) { } if (!t.isExportDefaultDeclaration(node) && !declar.isTypeAlias()) { - var onlyDefault = node.specifiers && node.specifiers.length === 1 && t.isSpecifierDefault(node.specifiers[0]); + let onlyDefault = node.specifiers && node.specifiers.length === 1 && t.isSpecifierDefault(node.specifiers[0]); if (!onlyDefault) { formatter.hasNonDefaultExports = true; } diff --git a/packages/babel-core/src/transformation/modules/lib/remaps.js b/packages/babel-core/src/transformation/modules/lib/remaps.js index dcd4737124..9e8ee531a3 100644 --- a/packages/babel-core/src/transformation/modules/lib/remaps.js +++ b/packages/babel-core/src/transformation/modules/lib/remaps.js @@ -1,6 +1,6 @@ import * as t from "babel-types"; -var remapVisitor = { +let remapVisitor = { enter(node) { if (node._skipModulesRemap) { return this.skip(); @@ -8,9 +8,9 @@ var remapVisitor = { }, ReferencedIdentifier(node, parent, scope, remaps) { - var { formatter } = remaps; + let { formatter } = remaps; - var remap = remaps.get(scope, node.name); + let remap = remaps.get(scope, node.name); if (!remap || node === remap) return; if (!scope.hasBinding(node.name) || @@ -26,7 +26,7 @@ var remapVisitor = { AssignmentExpression: { exit(node, parent, scope, { formatter }) { if (!node._ignoreModulesRemap) { - var exported = formatter.getExport(node.left, scope); + let exported = formatter.getExport(node.left, scope); if (exported) { return formatter.remapExportAssignment(node, exported); } @@ -35,26 +35,26 @@ var remapVisitor = { }, UpdateExpression(node, parent, scope, { formatter }) { - var exported = formatter.getExport(node.argument, scope); + let exported = formatter.getExport(node.argument, scope); if (!exported) return; this.skip(); // expand to long file assignment expression - var assign = t.assignmentExpression(node.operator[0] + "=", node.argument, t.numberLiteral(1)); + let assign = t.assignmentExpression(node.operator[0] + "=", node.argument, t.numberLiteral(1)); // remap this assignment expression - var remapped = formatter.remapExportAssignment(assign, exported); + let remapped = formatter.remapExportAssignment(assign, exported); // we don't need to change the result if (t.isExpressionStatement(parent) || node.prefix) { return remapped; } - var nodes = []; + let nodes = []; nodes.push(remapped); - var operator; + let operator; if (node.operator === "--") { operator = "+"; } else { // "++" @@ -112,7 +112,7 @@ export default class Remaps { clearAll() { if (this.all) { - for (var remap of (this.all: Array)) { + for (let remap of (this.all: Array)) { remap.scope.removeData(this._getKey(remap.name)); } } diff --git a/packages/babel-core/src/transformation/modules/system.js b/packages/babel-core/src/transformation/modules/system.js index a5b051efe3..18817b5600 100644 --- a/packages/babel-core/src/transformation/modules/system.js +++ b/packages/babel-core/src/transformation/modules/system.js @@ -5,7 +5,7 @@ import last from "lodash/array/last"; import map from "lodash/collection/map"; import * as t from "babel-types"; -var hoistVariablesVisitor = { +let hoistVariablesVisitor = { Function(path) { // nothing inside is accessible path.skip(); @@ -20,19 +20,19 @@ var hoistVariablesVisitor = { // ignore block hoisted nodes as these can be left in if (state.formatter._canHoist(node)) return; - var nodes = []; + let nodes = []; - for (var i = 0; i < node.declarations.length; i++) { - var declar = node.declarations[i]; + for (let i = 0; i < node.declarations.length; i++) { + let declar = node.declarations[i]; state.hoistDeclarators.push(t.variableDeclarator(declar.id)); if (declar.init) { // no initializer so we can just hoist it as-is - var assign = t.expressionStatement(t.assignmentExpression("=", declar.id, declar.init)); + let assign = t.expressionStatement(t.assignmentExpression("=", declar.id, declar.init)); nodes.push(assign); } } - // for (var i in test) + // for (let i in test) if (t.isFor(parent) && parent.left === node) { return node.declarations[0].id; } @@ -41,7 +41,7 @@ var hoistVariablesVisitor = { } }; -var hoistFunctionsVisitor = { +let hoistFunctionsVisitor = { Function(path) { path.skip(); }, @@ -54,13 +54,13 @@ var hoistFunctionsVisitor = { } }; -var runnerSettersVisitor = { +let runnerSettersVisitor = { enter(path, state) { - var { node } = path; + let { node } = path; if (node._importSource === state.source) { if (t.isVariableDeclaration(node)) { - for (var declar of (node.declarations: Array)) { + for (let declar of (node.declarations: Array)) { state.hoistDeclarators.push(t.variableDeclarator(declar.id)); state.nodes.push(t.expressionStatement( t.assignmentExpression("=", declar.id, declar.init) @@ -93,16 +93,16 @@ export default class SystemFormatter extends AMDFormatter { } buildExportsWildcard(objectIdentifier, node) { - var leftIdentifier = this.scope.generateUidIdentifier("key"); - var valIdentifier = t.memberExpression(objectIdentifier, leftIdentifier, true); + let leftIdentifier = this.scope.generateUidIdentifier("key"); + let valIdentifier = t.memberExpression(objectIdentifier, leftIdentifier, true); - var left = t.variableDeclaration("var", [ + let left = t.variableDeclaration("var", [ t.variableDeclarator(leftIdentifier) ]); - var right = objectIdentifier; + let right = objectIdentifier; - var block = t.blockStatement([ + let block = t.blockStatement([ t.ifStatement( t.binaryExpression("!==", leftIdentifier, t.stringLiteral("default")), t.expressionStatement(this._buildExportCall(leftIdentifier, valIdentifier)) @@ -113,7 +113,7 @@ export default class SystemFormatter extends AMDFormatter { } buildExportsAssignment(id, init, node) { - var call = this._buildExportCall(t.stringLiteral(id.name), init, true); + let call = this._buildExportCall(t.stringLiteral(id.name), init, true); return this._addImportSource(call, node); } @@ -122,9 +122,9 @@ export default class SystemFormatter extends AMDFormatter { } remapExportAssignment(node, exported) { - var assign = node; + let assign = node; - for (var i = 0; i < exported.length; i++) { + for (let i = 0; i < exported.length; i++) { assign = this._buildExportCall(t.stringLiteral(exported[i].name), assign); } @@ -132,7 +132,7 @@ export default class SystemFormatter extends AMDFormatter { } _buildExportCall(id, init, isStatement) { - var call = t.callExpression(this.exportIdentifier, [id, init]); + let call = t.callExpression(this.exportIdentifier, [id, init]); if (isStatement) { return t.expressionStatement(call); } else { @@ -143,7 +143,7 @@ export default class SystemFormatter extends AMDFormatter { importSpecifier(specifier, node, nodes) { AMDFormatter.prototype.importSpecifier.apply(this, arguments); - for (var remap of (this.remaps.getAll(): Array)) { + for (let remap of (this.remaps.getAll(): Array)) { nodes.push(t.variableDeclaration("var", [ t.variableDeclarator(t.identifier(remap.name), remap.node) ])); @@ -155,10 +155,10 @@ export default class SystemFormatter extends AMDFormatter { } _buildRunnerSetters(block, hoistDeclarators) { - var scope = this.file.scope; + let scope = this.file.scope; return t.arrayExpression(map(this.ids, function (uid, source) { - var state = { + let state = { hoistDeclarators: hoistDeclarators, source: source, nodes: [] @@ -177,16 +177,16 @@ export default class SystemFormatter extends AMDFormatter { transform(program) { DefaultFormatter.prototype.transform.apply(this, arguments); - var hoistDeclarators = []; - var moduleName = this.getModuleName(); - var moduleNameLiteral = t.stringLiteral(moduleName); + let hoistDeclarators = []; + let moduleName = this.getModuleName(); + let moduleNameLiteral = t.stringLiteral(moduleName); - var block = t.blockStatement(program.body); + let block = t.blockStatement(program.body); - var setterListNode = this._buildRunnerSetters(block, hoistDeclarators); + let setterListNode = this._buildRunnerSetters(block, hoistDeclarators); this._setters = setterListNode; - var runner = util.template("system", { + let runner = util.template("system", { MODULE_DEPENDENCIES: t.arrayExpression(this.buildDependencyLiterals()), EXPORT_IDENTIFIER: this.exportIdentifier, MODULE_NAME: moduleNameLiteral, @@ -194,10 +194,10 @@ export default class SystemFormatter extends AMDFormatter { EXECUTE: t.functionExpression(null, [], block) }, true); - var handlerBody = runner.expression.arguments[2].body.body; + let handlerBody = runner.expression.arguments[2].body.body; if (!moduleName) runner.expression.arguments.shift(); - var returnStatement = handlerBody.pop(); + let returnStatement = handlerBody.pop(); // hoist up all variable declarations this.file.scope.traverse(block, hoistVariablesVisitor, { @@ -206,7 +206,7 @@ export default class SystemFormatter extends AMDFormatter { }); if (hoistDeclarators.length) { - var hoistDeclar = t.variableDeclaration("var", hoistDeclarators); + let hoistDeclar = t.variableDeclaration("var", hoistDeclarators); hoistDeclar._blockHoist = true; handlerBody.unshift(hoistDeclar); } diff --git a/packages/babel-core/src/transformation/modules/umd.js b/packages/babel-core/src/transformation/modules/umd.js index a6f83c1911..60244a8fb2 100644 --- a/packages/babel-core/src/transformation/modules/umd.js +++ b/packages/babel-core/src/transformation/modules/umd.js @@ -9,38 +9,38 @@ export default class UMDFormatter extends AMDFormatter { transform(program) { DefaultFormatter.prototype.transform.apply(this, arguments); - var body = program.body; + let body = program.body; // build an array of module names - var names = []; + let names = []; for (let name in this.ids) { names.push(t.stringLiteral(name)); } // factory - var ids = values(this.ids); - var args = [t.identifier("exports")]; + let ids = values(this.ids); + let args = [t.identifier("exports")]; if (this.passModuleArg) args.push(t.identifier("module")); args = args.concat(ids); - var factory = t.functionExpression(null, args, t.blockStatement(body)); + let factory = t.functionExpression(null, args, t.blockStatement(body)); // amd - var defineArgs = [t.stringLiteral("exports")]; + let defineArgs = [t.stringLiteral("exports")]; if (this.passModuleArg) defineArgs.push(t.stringLiteral("module")); defineArgs = defineArgs.concat(names); defineArgs = [t.arrayExpression(defineArgs)]; // common - var testExports = util.template("test-exports"); - var testModule = util.template("test-module"); - var commonTests = this.passModuleArg ? t.logicalExpression("&&", testExports, testModule) : testExports; + let testExports = util.template("test-exports"); + let testModule = util.template("test-module"); + let commonTests = this.passModuleArg ? t.logicalExpression("&&", testExports, testModule) : testExports; - var commonArgs = [t.identifier("exports")]; + let commonArgs = [t.identifier("exports")]; if (this.passModuleArg) commonArgs.push(t.identifier("module")); commonArgs = commonArgs.concat(names.map(function (name) { return t.callExpression(t.identifier("require"), [name]); @@ -48,25 +48,25 @@ export default class UMDFormatter extends AMDFormatter { // globals - var browserArgs = []; + let browserArgs = []; if (this.passModuleArg) browserArgs.push(t.identifier("mod")); for (let name in this.ids) { - var id = this.defaultIds[name] || t.identifier(t.toIdentifier(path.basename(name, path.extname(name)))); + let id = this.defaultIds[name] || t.identifier(t.toIdentifier(path.basename(name, path.extname(name)))); browserArgs.push(t.memberExpression(t.identifier("global"), id)); } // - var moduleName = this.getModuleName(); + let moduleName = this.getModuleName(); if (moduleName) defineArgs.unshift(t.stringLiteral(moduleName)); // - var globalArg = this.file.opts.basename; + let globalArg = this.file.opts.basename; if (moduleName) globalArg = moduleName; globalArg = t.identifier(t.toIdentifier(globalArg)); - var runner = util.template("umd-runner-body", { + let runner = util.template("umd-runner-body", { AMD_ARGUMENTS: defineArgs, COMMON_TEST: commonTests, COMMON_ARGUMENTS: commonArgs, diff --git a/packages/babel-core/src/transformation/pipeline.js b/packages/babel-core/src/transformation/pipeline.js index 460861ef74..9b7abaf207 100644 --- a/packages/babel-core/src/transformation/pipeline.js +++ b/packages/babel-core/src/transformation/pipeline.js @@ -9,7 +9,7 @@ export default class Pipeline { } pretransform(code: string, opts?: Object) { - var file = new File(opts, this); + let file = new File(opts, this); return file.wrap(code, function () { file.addCode(code); file.parseCode(code); @@ -18,7 +18,7 @@ export default class Pipeline { } transform(code: string, opts?: Object) { - var file = new File(opts, this); + let file = new File(opts, this); return file.wrap(code, function () { file.addCode(code); file.parseCode(code); @@ -29,7 +29,7 @@ export default class Pipeline { transformFromAst(ast, code, opts) { ast = normalizeAst(ast); - var file = new File(opts, this); + let file = new File(opts, this); return file.wrap(code, function () { file.addCode(code); file.addAst(ast); diff --git a/packages/babel-core/src/transformation/plugin-pass.js b/packages/babel-core/src/transformation/plugin-pass.js index c1b560041c..5ef78e0a69 100644 --- a/packages/babel-core/src/transformation/plugin-pass.js +++ b/packages/babel-core/src/transformation/plugin-pass.js @@ -10,7 +10,7 @@ export default class PluginPass { } transform() { - var file = this.file; + let file = this.file; file.log.debug(`Start transformer ${this.key}`); traverse(file.ast, this.plugin.visitor, file.scope, file); file.log.debug(`Finish transformer ${this.key}`); diff --git a/packages/babel-core/src/transformation/plugin.js b/packages/babel-core/src/transformation/plugin.js index c960ffbda1..1ba7c3b135 100644 --- a/packages/babel-core/src/transformation/plugin.js +++ b/packages/babel-core/src/transformation/plugin.js @@ -8,7 +8,7 @@ export default class Plugin { plugin = this.raw = assign({}, plugin); function take(key) { - var val = plugin[key]; + let val = plugin[key]; delete plugin[key]; return val; } diff --git a/packages/babel-core/src/transformation/transformers/es5/properties.mutators.js b/packages/babel-core/src/transformation/transformers/es5/properties.mutators.js index d326bdf0b8..344e1d081b 100644 --- a/packages/babel-core/src/transformation/transformers/es5/properties.mutators.js +++ b/packages/babel-core/src/transformation/transformers/es5/properties.mutators.js @@ -8,7 +8,7 @@ import * as t from "babel-types"; * **In** * * ```javascript - * var foo = { + * let foo = { * get bar() { * return "bar"; * } @@ -18,7 +18,7 @@ import * as t from "babel-types"; * **Out** * * ```javascript - * var foo = Object.defineProperties({}, { + * let foo = Object.defineProperties({}, { * bar: { * get: function () { * return "bar"; @@ -30,7 +30,7 @@ import * as t from "babel-types"; * ``` */ -export var visitor = { +export let visitor = { /** * Look for getters and setters on an object. * Filter them out and wrap the object with an `Object.defineProperties` that @@ -38,8 +38,8 @@ export var visitor = { */ ObjectExpression(node, parent, scope, file) { - var hasAny = false; - for (var prop of (node.properties: Array)) { + let hasAny = false; + for (let prop of (node.properties: Array)) { if (prop.kind === "get" || prop.kind === "set") { hasAny = true; break; @@ -47,7 +47,7 @@ export var visitor = { } if (!hasAny) return; - var mutatorMap = {}; + let mutatorMap = {}; node.properties = node.properties.filter(function (prop) { if (prop.kind === "get" || prop.kind === "set") { diff --git a/packages/babel-core/src/transformation/transformers/es6/block-scoping/index.js b/packages/babel-core/src/transformation/transformers/es6/block-scoping/index.js index 435406b0b9..71691c584f 100644 --- a/packages/babel-core/src/transformation/transformers/es6/block-scoping/index.js +++ b/packages/babel-core/src/transformation/transformers/es6/block-scoping/index.js @@ -15,8 +15,8 @@ function isLet(node, parent) { // https://github.com/babel/babel/issues/255 if (isLetInitable(node, parent)) { - for (var i = 0; i < node.declarations.length; i++) { - var declar = node.declarations[i]; + for (let i = 0; i < node.declarations.length; i++) { + let declar = node.declarations[i]; declar.init = declar.init || scope.buildUndefinedNode(); } } @@ -35,26 +35,26 @@ function isVar(node, parent, scope) { } function standardizeLets(declars) { - for (var declar of (declars: Array)) { + for (let declar of (declars: Array)) { delete declar._let; } } -export var metadata = { +export let metadata = { group: "builtin-advanced" }; -export var visitor = { +export let visitor = { VariableDeclaration(node, parent, scope, file) { if (!isLet(node, parent, scope)) return; if (isLetInitable(node) && node._tdzThis) { - var nodes = [node]; + let nodes = [node]; - for (var i = 0; i < node.declarations.length; i++) { - var decl = node.declarations[i]; + for (let i = 0; i < node.declarations.length; i++) { + let decl = node.declarations[i]; if (decl.init) { - var assign = t.assignmentExpression("=", decl.id, decl.init); + let assign = t.assignmentExpression("=", decl.id, decl.init); assign._ignoreBlockScopingTDZ = true; nodes.push(t.expressionStatement(assign)); } @@ -74,29 +74,29 @@ export var visitor = { }, Loop(node, parent, scope, file) { - var init = node.left || node.init; + let init = node.left || node.init; if (isLet(init, node, scope)) { t.ensureBlock(node); node.body._letDeclarators = [init]; } - var blockScoping = new BlockScoping(this, this.get("body"), parent, scope, file); + let blockScoping = new BlockScoping(this, this.get("body"), parent, scope, file); return blockScoping.run(); }, "BlockStatement|Program"(block, parent, scope, file) { if (!t.isLoop(parent)) { - var blockScoping = new BlockScoping(null, this, parent, scope, file); + let blockScoping = new BlockScoping(null, this, parent, scope, file); blockScoping.run(); } } }; function replace(node, parent, scope, remaps) { - var remap = remaps[node.name]; + let remap = remaps[node.name]; if (!remap) return; - var ownBinding = scope.getBindingIdentifier(node.name); + let ownBinding = scope.getBindingIdentifier(node.name); if (ownBinding === remap.binding) { node.name = remap.uid; } else { @@ -106,12 +106,12 @@ function replace(node, parent, scope, remaps) { } } -var replaceVisitor = { +let replaceVisitor = { ReferencedIdentifier: replace, AssignmentExpression(node, parent, scope, remaps) { - var ids = this.getBindingIdentifiers(); - for (var name in ids) { + let ids = this.getBindingIdentifiers(); + for (let name in ids) { replace(ids[name], node, scope, remaps); } }, @@ -123,8 +123,8 @@ function traverseReplace(node, parent, scope, remaps) { } if (t.isAssignmentExpression(node)) { - var ids = t.getBindingIdentifiers(node); - for (var name in ids) { + let ids = t.getBindingIdentifiers(node); + for (let name in ids) { replace(ids[name], parent, scope, remaps); } } @@ -132,34 +132,34 @@ function traverseReplace(node, parent, scope, remaps) { scope.traverse(node, replaceVisitor, remaps); } -var letReferenceBlockVisitor = traverse.visitors.merge([{ +let letReferenceBlockVisitor = traverse.visitors.merge([{ Function(node, parent, scope, state) { this.traverse(letReferenceFunctionVisitor, state); return this.skip(); } }, tdzVisitor]); -var letReferenceFunctionVisitor = traverse.visitors.merge([{ +let letReferenceFunctionVisitor = traverse.visitors.merge([{ ReferencedIdentifier(node, parent, scope, state) { - var ref = state.letReferences[node.name]; + let ref = state.letReferences[node.name]; // not a part of our scope if (!ref) return; // this scope has a variable with the same name so it couldn't belong // to our let scope - var localBinding = scope.getBindingIdentifier(node.name); + let localBinding = scope.getBindingIdentifier(node.name); if (localBinding && localBinding !== ref) return; state.closurify = true; } }, tdzVisitor]); -var hoistVarDeclarationsVisitor = { +let hoistVarDeclarationsVisitor = { enter(node, parent, scope, self) { if (this.isForStatement()) { if (isVar(node.init, node, scope)) { - var nodes = self.pushDeclar(node.init); + let nodes = self.pushDeclar(node.init); if (nodes.length === 1) { node.init = nodes[0]; } else { @@ -179,17 +179,17 @@ var hoistVarDeclarationsVisitor = { } }; -var loopLabelVisitor = { +let loopLabelVisitor = { LabeledStatement(node, parent, scope, state) { state.innerLabels.push(node.label.name); } }; -var continuationVisitor = { +let continuationVisitor = { enter(node, parent, scope, state) { if (this.isAssignmentExpression() || this.isUpdateExpression()) { - var bindings = this.getBindingIdentifiers(); - for (var name in bindings) { + let bindings = this.getBindingIdentifiers(); + for (let name in bindings) { if (state.outsideReferences[name] !== scope.getBindingIdentifier(name)) continue; state.reassignments[name] = true; } @@ -205,9 +205,9 @@ function loopNodeTo(node) { } } -var loopVisitor = { +let loopVisitor = { Loop(node, parent, scope, state) { - var oldIgnoreLabeless = state.ignoreLabeless; + let oldIgnoreLabeless = state.ignoreLabeless; state.ignoreLabeless = true; this.traverse(loopVisitor, state); state.ignoreLabeless = oldIgnoreLabeless; @@ -219,7 +219,7 @@ var loopVisitor = { }, SwitchCase(node, parent, scope, state) { - var oldInSwitchCase = state.inSwitchCase; + let oldInSwitchCase = state.inSwitchCase; state.inSwitchCase = true; this.traverse(loopVisitor, state); state.inSwitchCase = oldInSwitchCase; @@ -227,8 +227,8 @@ var loopVisitor = { }, "BreakStatement|ContinueStatement|ReturnStatement"(node, parent, scope, state) { - var replace; - var loopText = loopNodeTo(node); + let replace; + let loopText = loopNodeTo(node); if (loopText) { if (node.label) { @@ -297,11 +297,11 @@ class BlockScoping { */ run() { - var block = this.block; + let block = this.block; if (block._letDone) return; block._letDone = true; - var needsClosure = this.getLetReferences(); + let needsClosure = this.getLetReferences(); // this is a block within a `Function/Program` so we can safely leave it be if (t.isFunction(this.parent) || t.isProgram(this.block)) return; @@ -321,24 +321,24 @@ class BlockScoping { } remap() { - var hasRemaps = false; - var letRefs = this.letReferences; - var scope = this.scope; + let hasRemaps = false; + let letRefs = this.letReferences; + let scope = this.scope; // alright, so since we aren't wrapping this block in a closure // we have to check if any of our let variables collide with // those in upper scopes and then if they do, generate a uid // for them and replace all references with it - var remaps = Object.create(null); + let remaps = Object.create(null); - for (var key in letRefs) { + for (let key in letRefs) { // just an Identifier node we collected in `getLetReferences` // this is the defining identifier of a declaration - var ref = letRefs[key]; + let ref = letRefs[key]; // todo: could skip this if the colliding binding is in another function if (scope.parentHasBinding(key) || scope.hasGlobal(key)) { - var uid = scope.generateUidIdentifier(ref.name).name; + let uid = scope.generateUidIdentifier(ref.name).name; ref.name = uid; hasRemaps = true; @@ -353,7 +353,7 @@ class BlockScoping { // - var loop = this.loop; + let loop = this.loop; if (loop) { traverseReplace(loop.right, loop, scope, remaps); traverseReplace(loop.test, loop, scope, remaps); @@ -364,14 +364,14 @@ class BlockScoping { } wrapClosure() { - var block = this.block; + let block = this.block; - var outsideRefs = this.outsideLetReferences; + let outsideRefs = this.outsideLetReferences; // remap loop heads with colliding variables if (this.loop) { - for (var name in outsideRefs) { - var id = outsideRefs[name]; + for (let name in outsideRefs) { + let id = outsideRefs[name]; if (this.scope.hasGlobal(id.name) || this.scope.parentHasBinding(id.name)) { delete outsideRefs[id.name]; @@ -389,15 +389,15 @@ class BlockScoping { // `break`s, `continue`s, `return`s etc this.has = this.checkLoop(); - // hoist var references to retain scope + // hoist let references to retain scope this.hoistVarDeclarations(); // turn outsideLetReferences into an array - var params = values(outsideRefs); - var args = values(outsideRefs); + let params = values(outsideRefs); + let args = values(outsideRefs); // build the closure that we're going to wrap the block with - var fn = t.functionExpression(null, params, t.blockStatement(block.body)); + let fn = t.functionExpression(null, params, t.blockStatement(block.body)); fn.shadow = true; // continuation @@ -406,7 +406,7 @@ class BlockScoping { // replace the current block body with the one we're going to build block.body = this.body; - var ref = fn; + let ref = fn; if (this.loop) { ref = this.scope.generateUidIdentifier("loop"); @@ -416,18 +416,18 @@ class BlockScoping { } // build a call and a unique id that we can assign the return value to - var call = t.callExpression(ref, args); - var ret = this.scope.generateUidIdentifier("ret"); + let call = t.callExpression(ref, args); + let ret = this.scope.generateUidIdentifier("ret"); // handle generators - var hasYield = traverse.hasType(fn.body, this.scope, "YieldExpression", t.FUNCTION_TYPES); + let hasYield = traverse.hasType(fn.body, this.scope, "YieldExpression", t.FUNCTION_TYPES); if (hasYield) { fn.generator = true; call = t.yieldExpression(call, true); } // handlers async functions - var hasAsync = traverse.hasType(fn.body, this.scope, "AwaitExpression", t.FUNCTION_TYPES); + let hasAsync = traverse.hasType(fn.body, this.scope, "AwaitExpression", t.FUNCTION_TYPES); if (hasAsync) { fn.async = true; call = t.awaitExpression(call); @@ -441,7 +441,7 @@ class BlockScoping { */ buildClosure(ret: { type: "Identifier" }, call: { type: "CallExpression" }) { - var has = this.has; + let has = this.has; if (has.hasReturn || has.hasBreakContinue) { this.buildHas(ret, call); } else { @@ -458,18 +458,18 @@ class BlockScoping { */ addContinuations(fn) { - var state = { + let state = { reassignments: {}, outsideReferences: this.outsideLetReferences }; this.scope.traverse(fn, continuationVisitor, state); - for (var i = 0; i < fn.params.length; i++) { - var param = fn.params[i]; + for (let i = 0; i < fn.params.length; i++) { + let param = fn.params[i]; if (!state.reassignments[param.name]) continue; - var newParam = this.scope.generateUidIdentifier(param.name); + let newParam = this.scope.generateUidIdentifier(param.name); fn.params[i] = newParam; this.scope.rename(param.name, newParam.name, fn); @@ -480,9 +480,9 @@ class BlockScoping { } getLetReferences() { - var block = this.block; + let block = this.block; - var declarators = block._letDeclarators || []; + let declarators = block._letDeclarators || []; // for (let i = 0; i < declarators.length; i++) { @@ -503,7 +503,7 @@ class BlockScoping { // for (let i = 0; i < declarators.length; i++) { let declar = declarators[i]; - var keys = t.getBindingIdentifiers(declar); + let keys = t.getBindingIdentifiers(declar); extend(this.letReferences, keys); this.hasLetReferences = true; } @@ -511,10 +511,10 @@ class BlockScoping { // no let references so we can just quit if (!this.hasLetReferences) return; - // set let references to plain var references + // set let references to plain let references standardizeLets(declarators); - var state = { + let state = { letReferences: this.letReferences, closurify: false, file: this.file @@ -535,7 +535,7 @@ class BlockScoping { */ checkLoop(): Object { - var state = { + let state = { hasBreakContinue: false, ignoreLabeless: false, inSwitchCase: false, @@ -552,7 +552,7 @@ class BlockScoping { } /** - * Hoist all var declarations in this block to before it so they retain scope + * Hoist all let declarations in this block to before it so they retain scope * once we wrap everything in a closure. */ @@ -566,21 +566,21 @@ class BlockScoping { */ pushDeclar(node: { type: "VariableDeclaration" }): Array { - var declars = []; - var names = t.getBindingIdentifiers(node); - for (var name in names) { + let declars = []; + let names = t.getBindingIdentifiers(node); + for (let name in names) { declars.push(t.variableDeclarator(names[name])); } this.body.push(t.variableDeclaration(node.kind, declars)); - var replace = []; + let replace = []; - for (var i = 0; i < node.declarations.length; i++) { - var declar = node.declarations[i]; + for (let i = 0; i < node.declarations.length; i++) { + let declar = node.declarations[i]; if (!declar.init) continue; - var expr = t.assignmentExpression("=", declar.id, declar.init); + let expr = t.assignmentExpression("=", declar.id, declar.init); replace.push(t.inherits(expr, declar)); } @@ -588,15 +588,15 @@ class BlockScoping { } buildHas(ret: { type: "Identifier" }, call: { type: "CallExpression" }) { - var body = this.body; + let body = this.body; body.push(t.variableDeclaration("var", [ t.variableDeclarator(ret, call) ])); - var retCheck; - var has = this.has; - var cases = []; + let retCheck; + let has = this.has; + let cases = []; if (has.hasReturn) { // typeof ret === "object" @@ -606,7 +606,7 @@ class BlockScoping { } if (has.hasBreakContinue) { - for (var key in has.map) { + for (let key in has.map) { cases.push(t.switchCase(t.stringLiteral(key), [has.map[key]])); } @@ -615,15 +615,15 @@ class BlockScoping { } if (cases.length === 1) { - var single = cases[0]; + let single = cases[0]; body.push(this.file.attachAuxiliaryComment(t.ifStatement( t.binaryExpression("===", ret, single.test), single.consequent[0] ))); } else { // https://github.com/babel/babel/issues/998 - for (var i = 0; i < cases.length; i++) { - var caseConsequent = cases[i].consequent[0]; + for (let i = 0; i < cases.length; i++) { + let caseConsequent = cases[i].consequent[0]; if (t.isBreakStatement(caseConsequent) && !caseConsequent.label) { caseConsequent.label = this.loopLabel = this.loopLabel || this.file.scope.generateUidIdentifier("loop"); } diff --git a/packages/babel-core/src/transformation/transformers/es6/block-scoping/tdz.js b/packages/babel-core/src/transformation/transformers/es6/block-scoping/tdz.js index cdd254fc62..718976b6f1 100644 --- a/packages/babel-core/src/transformation/transformers/es6/block-scoping/tdz.js +++ b/packages/babel-core/src/transformation/transformers/es6/block-scoping/tdz.js @@ -1,7 +1,7 @@ import * as t from "babel-types"; function getTDZStatus(refPath, bindingPath) { - var executionStatus = bindingPath._guessExecutionStatusRelativeTo(refPath); + let executionStatus = bindingPath._guessExecutionStatusRelativeTo(refPath); if (executionStatus === "before") { return "inside"; @@ -20,25 +20,25 @@ function buildTDZAssert(node, file) { } function isReference(node, scope, state) { - var declared = state.letReferences[node.name]; + let declared = state.letReferences[node.name]; if (!declared) return false; // declared node is different in this scope return scope.getBindingIdentifier(node.name) === declared; } -export var visitor = { +export let visitor = { ReferencedIdentifier(node, parent, scope, state) { if (t.isFor(parent, { left: node })) return; if (!isReference(node, scope, state)) return; - var bindingPath = scope.getBinding(node.name).path; + let bindingPath = scope.getBinding(node.name).path; - var status = getTDZStatus(this, bindingPath); + let status = getTDZStatus(this, bindingPath); if (status === "inside") return; if (status === "maybe") { - var assert = buildTDZAssert(node, state.file); + let assert = buildTDZAssert(node, state.file); // add tdzThis to parent variable declarator so it's exploded bindingPath.parent._tdzThis = true; @@ -65,11 +65,11 @@ export var visitor = { exit(node, parent, scope, state) { if (node._ignoreBlockScopingTDZ) return; - var nodes = []; - var ids = this.getBindingIdentifiers(); + let nodes = []; + let ids = this.getBindingIdentifiers(); - for (var name in ids) { - var id = ids[name]; + for (let name in ids) { + let id = ids[name]; if (isReference(id, scope, state)) { nodes.push(buildTDZAssert(id, state.file)); diff --git a/packages/babel-core/src/transformation/transformers/es6/classes/index.js b/packages/babel-core/src/transformation/transformers/es6/classes/index.js index 9f35895124..16b80720f9 100644 --- a/packages/babel-core/src/transformation/transformers/es6/classes/index.js +++ b/packages/babel-core/src/transformation/transformers/es6/classes/index.js @@ -3,7 +3,7 @@ import VanillaTransformer from "./vanilla"; import * as t from "babel-types"; import { bare } from "../../../helpers/name-method"; -export var visitor = { +export let visitor = { ClassDeclaration(node) { return t.variableDeclaration("var", [ t.variableDeclarator(node.id, t.toExpression(node)) @@ -11,7 +11,7 @@ export var visitor = { }, ClassExpression(node, parent, scope, file) { - var inferred = bare(node, parent, scope); + let inferred = bare(node, parent, scope); if (inferred) return inferred; if (file.isLoose("es6.classes")) { diff --git a/packages/babel-core/src/transformation/transformers/es6/classes/loose.js b/packages/babel-core/src/transformation/transformers/es6/classes/loose.js index 10f7b2e622..4af2320e6c 100644 --- a/packages/babel-core/src/transformation/transformers/es6/classes/loose.js +++ b/packages/babel-core/src/transformation/transformers/es6/classes/loose.js @@ -11,11 +11,11 @@ export default class LooseClassTransformer extends VanillaTransformer { if (!node.decorators) { // use assignments instead of define properties for loose classes - var classRef = this.classRef; + let classRef = this.classRef; if (!node.static) classRef = t.memberExpression(classRef, t.identifier("prototype")); - var methodName = t.memberExpression(classRef, node.key, node.computed || t.isLiteral(node.key)); + let methodName = t.memberExpression(classRef, node.key, node.computed || t.isLiteral(node.key)); - var expr = t.expressionStatement(t.assignmentExpression("=", methodName, node.value)); + let expr = t.expressionStatement(t.assignmentExpression("=", methodName, node.value)); t.inheritsComments(expr, node); this.body.push(expr); return true; diff --git a/packages/babel-core/src/transformation/transformers/es6/classes/vanilla.js b/packages/babel-core/src/transformation/transformers/es6/classes/vanilla.js index 6e0f4ab1b3..af8ca86023 100644 --- a/packages/babel-core/src/transformation/transformers/es6/classes/vanilla.js +++ b/packages/babel-core/src/transformation/transformers/es6/classes/vanilla.js @@ -10,7 +10,7 @@ import * as t from "babel-types"; const PROPERTY_COLLISION_METHOD_NAME = "__initializeProperties"; -var collectPropertyReferencesVisitor = { +let collectPropertyReferencesVisitor = { Identifier: { enter(node, parent, scope, state) { if (this.parentPath.isClassProperty({ key: node })) { @@ -24,7 +24,7 @@ var collectPropertyReferencesVisitor = { } }; -var verifyConstructorVisitor = { +let verifyConstructorVisitor = { MethodDefinition() { this.skip(); }, @@ -54,7 +54,7 @@ var verifyConstructorVisitor = { if (state.isDerived && !state.hasBareSuper) { if (this.inShadow()) { // https://github.com/babel/babel/issues/1920 - var thisAlias = state.constructorPath.getData("this"); + let thisAlias = state.constructorPath.getData("this"); if (!thisAlias) { thisAlias = state.constructorPath.setData( @@ -111,19 +111,19 @@ export default class ClassTransformer { } run() { - var superName = this.superName; - var file = this.file; - var body = this.body; + let superName = this.superName; + let file = this.file; + let body = this.body; // - var constructorBody = this.constructorBody = t.blockStatement([]); + let constructorBody = this.constructorBody = t.blockStatement([]); this.constructor = this.buildConstructor(); // - var closureParams = []; - var closureArgs = []; + let closureParams = []; + let closureArgs = []; // if (this.isDerived) { @@ -136,7 +136,7 @@ export default class ClassTransformer { } // - var decorators = this.node.decorators; + let decorators = this.node.decorators; if (decorators) { // this is so super calls and the decorators have access to the raw function this.directRef = this.scope.generateUidIdentifier(this.classRef); @@ -166,19 +166,19 @@ export default class ClassTransformer { // body.push(t.returnStatement(this.classRef)); - var container = t.functionExpression(null, closureParams, t.blockStatement(body)); + let container = t.functionExpression(null, closureParams, t.blockStatement(body)); container.shadow = true; return t.callExpression(container, closureArgs); } buildConstructor() { - var func = t.functionDeclaration(this.classRef, [], this.constructorBody); + let func = t.functionDeclaration(this.classRef, [], this.constructorBody); t.inherits(func, this.node); return func; } pushToMap(node, enumerable, kind = "value") { - var mutatorMap; + let mutatorMap; if (node.static) { this.hasStaticDescriptors = true; mutatorMap = this.staticMutatorMap; @@ -187,7 +187,7 @@ export default class ClassTransformer { mutatorMap = this.instanceMutatorMap; } - var map = defineMap.push(mutatorMap, node, kind, this.file); + let map = defineMap.push(mutatorMap, node, kind, this.file); if (enumerable) { map.enumerable = t.booleanLiteral(true); @@ -204,15 +204,15 @@ export default class ClassTransformer { */ constructorMeMaybe() { - var hasConstructor = false; - var paths = this.path.get("body.body"); - for (var path of (paths: Array)) { + let hasConstructor = false; + let paths = this.path.get("body.body"); + for (let path of (paths: Array)) { hasConstructor = path.equals("kind", "constructor"); if (hasConstructor) break; } if (hasConstructor) return; - var constructor; + let constructor; if (this.isDerived) { constructor = util.template("class-derived-default-constructor"); } else { @@ -232,7 +232,7 @@ export default class ClassTransformer { this.placePropertyInitializers(); if (this.userConstructor) { - var constructorBody = this.constructorBody; + let constructorBody = this.constructorBody; constructorBody.body = constructorBody.body.concat(this.userConstructor.body.body); t.inherits(this.constructor, this.userConstructor); t.inherits(constructorBody, this.userConstructor.body); @@ -242,20 +242,20 @@ export default class ClassTransformer { } pushBody() { - var classBodyPaths = this.path.get("body.body"); + let classBodyPaths = this.path.get("body.body"); - for (var path of (classBodyPaths: Array)) { - var node = path.node; + for (let path of (classBodyPaths: Array)) { + let node = path.node; if (node.decorators) { memoiseDecorators(node.decorators, this.scope); } if (t.isMethodDefinition(node)) { - var isConstructor = node.kind === "constructor"; + let isConstructor = node.kind === "constructor"; if (isConstructor) this.verifyConstructor(path); - var replaceSupers = new ReplaceSupers({ + let replaceSupers = new ReplaceSupers({ methodPath: path, methodNode: node, objectRef: this.directRef, @@ -290,11 +290,11 @@ export default class ClassTransformer { pushDescriptors() { this.pushInherits(); - var body = this.body; + let body = this.body; - var instanceProps; - var staticProps; - var classHelper = "create-class"; + let instanceProps; + let staticProps; + let classHelper = "create-class"; if (this.hasDecorators) classHelper = "create-decorated-class"; if (this.hasInstanceDescriptors) { @@ -309,10 +309,10 @@ export default class ClassTransformer { if (instanceProps) instanceProps = defineMap.toComputedObjectFromClass(instanceProps); if (staticProps) staticProps = defineMap.toComputedObjectFromClass(staticProps); - var nullNode = t.nullLiteral(); + let nullNode = t.nullLiteral(); // (Constructor, instanceDescriptors, staticDescriptors, instanceInitializers, staticInitializers) - var args = [this.classRef, nullNode, nullNode, nullNode, nullNode]; + let args = [this.classRef, nullNode, nullNode, nullNode, nullNode]; if (instanceProps) args[1] = instanceProps; if (staticProps) args[2] = staticProps; @@ -327,7 +327,7 @@ export default class ClassTransformer { body.unshift(this.buildObjectAssignment(this.staticInitializersId)); } - var lastNonNullIndex = 0; + let lastNonNullIndex = 0; for (let i = 0; i < args.length; i++) { if (args[i] !== nullNode) lastNonNullIndex = i; } @@ -349,11 +349,11 @@ export default class ClassTransformer { } placePropertyInitializers() { - var body = this.instancePropBody; + let body = this.instancePropBody; if (!body.length) return; if (this.hasPropertyCollision()) { - var call = t.expressionStatement(t.callExpression( + let call = t.expressionStatement(t.callExpression( t.memberExpression(t.thisExpression(), t.identifier(PROPERTY_COLLISION_METHOD_NAME)), [] )); @@ -379,7 +379,7 @@ export default class ClassTransformer { hasPropertyCollision(): boolean { if (this.userConstructorPath) { - for (var name in this.instancePropRefs) { + for (let name in this.instancePropRefs) { if (this.userConstructorPath.scope.hasOwnBinding(name)) { return true; } @@ -390,7 +390,7 @@ export default class ClassTransformer { } verifyConstructor(path: NodePath) { - var state = { + let state = { constructorPath: path.get("value"), hasBareSuper: false, bareSuper: null, @@ -400,7 +400,7 @@ export default class ClassTransformer { state.constructorPath.traverse(verifyConstructorVisitor, state); - var thisAlias = state.constructorPath.getData("this"); + let thisAlias = state.constructorPath.getData("this"); if (thisAlias && state.bareSuper) { state.bareSuper.insertAfter(t.variableDeclaration("var", [ t.variableDeclarator(thisAlias, t.thisExpression()) @@ -442,7 +442,7 @@ export default class ClassTransformer { }); if (node.decorators) { - var body = []; + let body = []; if (node.value) { body.push(t.returnStatement(node.value)); node.value = t.functionExpression(null, [], t.blockStatement(body)); @@ -451,8 +451,8 @@ export default class ClassTransformer { } this.pushToMap(node, true, "initializer"); - var initializers; - var target; + let initializers; + let target; if (node.static) { initializers = this.staticInitializersId = this.staticInitializersId || this.scope.generateUidIdentifier("staticInitializers"); body = this.staticPropBody; @@ -492,13 +492,13 @@ export default class ClassTransformer { pushConstructor(method: { type: "MethodDefinition" }, path: NodePath) { // https://github.com/babel/babel/issues/1077 - var fnPath = path.get("value"); + let fnPath = path.get("value"); if (fnPath.scope.hasOwnBinding(this.classRef.name)) { fnPath.scope.rename(this.classRef.name); } - var construct = this.constructor; - var fn = method.value; + let construct = this.constructor; + let fn = method.value; this.userConstructorPath = fnPath; this.userConstructor = fn; @@ -550,7 +550,7 @@ export default class ClassTransformer { */ pushDecorators() { - var decorators = this.node.decorators; + let decorators = this.node.decorators; if (!decorators) return; this.body.push(t.variableDeclaration("var", [ @@ -560,8 +560,8 @@ export default class ClassTransformer { // reverse the decorators so we execute them in the right order decorators = decorators.reverse(); - for (var decorator of (decorators: Array)) { - var decoratorNode = util.template("class-decorator", { + for (let decorator of (decorators: Array)) { + let decoratorNode = util.template("class-decorator", { DECORATOR: decorator.expression, CLASS_REF: this.classRef }, true); diff --git a/packages/babel-core/src/transformation/transformers/es6/for-of.js b/packages/babel-core/src/transformation/transformers/es6/for-of.js index fea662b0ce..de224dc727 100644 --- a/packages/babel-core/src/transformation/transformers/es6/for-of.js +++ b/packages/babel-core/src/transformation/transformers/es6/for-of.js @@ -2,19 +2,19 @@ import * as messages from "babel-messages"; import * as util from "../../../util"; import * as t from "babel-types"; -export var visitor = { +export let visitor = { ForOfStatement(node, parent, scope, file) { if (this.get("right").isArrayExpression()) { return _ForOfStatementArray.call(this, node, scope, file); } - var callback = spec; + let callback = spec; if (file.isLoose("es6.forOf")) callback = loose; - var build = callback(node, parent, scope, file); - var declar = build.declar; - var loop = build.loop; - var block = loop.body; + let build = callback(node, parent, scope, file); + let declar = build.declar; + let loop = build.loop; + let block = loop.body; // ensure that it's a block so we can take all its statements this.ensureBlock(); @@ -40,20 +40,20 @@ export var visitor = { }; export function _ForOfStatementArray(node, scope) { - var nodes = []; - var right = node.right; + let nodes = []; + let right = node.right; if (!t.isIdentifier(right) || !scope.hasBinding(right.name)) { - var uid = scope.generateUidIdentifier("arr"); + let uid = scope.generateUidIdentifier("arr"); nodes.push(t.variableDeclaration("var", [ t.variableDeclarator(uid, right) ])); right = uid; } - var iterationKey = scope.generateUidIdentifier("i"); + let iterationKey = scope.generateUidIdentifier("i"); - var loop = util.template("for-of-array", { + let loop = util.template("for-of-array", { BODY: node.body, KEY: iterationKey, ARR: right @@ -62,9 +62,9 @@ export function _ForOfStatementArray(node, scope) { t.inherits(loop, node); t.ensureBlock(loop); - var iterationValue = t.memberExpression(right, iterationKey, true); + let iterationValue = t.memberExpression(right, iterationKey, true); - var left = node.left; + let left = node.left; if (t.isVariableDeclaration(left)) { left.declarations[0].init = iterationValue; loop.body.body.unshift(left); @@ -81,15 +81,15 @@ export function _ForOfStatementArray(node, scope) { return nodes; } -var loose = function (node, parent, scope, file) { - var left = node.left; - var declar, id; +let loose = function (node, parent, scope, file) { + let left = node.left; + let declar, id; if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) { // for (i of test), for ({ i } of test) id = left; } else if (t.isVariableDeclaration(left)) { - // for (var i of test) + // for (let i of test) id = scope.generateUidIdentifier("ref"); declar = t.variableDeclaration(left.kind, [ t.variableDeclarator(left.declarations[0].id, id) @@ -98,10 +98,10 @@ var loose = function (node, parent, scope, file) { throw file.errorWithNode(left, messages.get("unknownForHead", left.type)); } - var iteratorKey = scope.generateUidIdentifier("iterator"); - var isArrayKey = scope.generateUidIdentifier("isArray"); + let iteratorKey = scope.generateUidIdentifier("iterator"); + let isArrayKey = scope.generateUidIdentifier("isArray"); - var loop = util.template("for-of-loose", { + let loop = util.template("for-of-loose", { LOOP_OBJECT: iteratorKey, IS_ARRAY: isArrayKey, OBJECT: node.right, @@ -124,18 +124,18 @@ var loose = function (node, parent, scope, file) { }; }; -var spec = function (node, parent, scope, file) { - var left = node.left; - var declar; +let spec = function (node, parent, scope, file) { + let left = node.left; + let declar; - var stepKey = scope.generateUidIdentifier("step"); - var stepValue = t.memberExpression(stepKey, t.identifier("value")); + let stepKey = scope.generateUidIdentifier("step"); + let stepValue = t.memberExpression(stepKey, t.identifier("value")); if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) { // for (i of test), for ({ i } of test) declar = t.expressionStatement(t.assignmentExpression("=", left, stepValue)); } else if (t.isVariableDeclaration(left)) { - // for (var i of test) + // for (let i of test) declar = t.variableDeclaration(left.kind, [ t.variableDeclarator(left.declarations[0].id, stepValue) ]); @@ -145,9 +145,9 @@ var spec = function (node, parent, scope, file) { // - var iteratorKey = scope.generateUidIdentifier("iterator"); + let iteratorKey = scope.generateUidIdentifier("iterator"); - var template = util.template("for-of", { + let template = util.template("for-of", { ITERATOR_HAD_ERROR_KEY: scope.generateUidIdentifier("didIteratorError"), ITERATOR_COMPLETION: scope.generateUidIdentifier("iteratorNormalCompletion"), ITERATOR_ERROR_KEY: scope.generateUidIdentifier("iteratorError"), @@ -157,10 +157,10 @@ var spec = function (node, parent, scope, file) { BODY: null }); - var isLabeledParent = t.isLabeledStatement(parent); + let isLabeledParent = t.isLabeledStatement(parent); - var tryBody = template[3].block.body; - var loop = tryBody[0]; + let tryBody = template[3].block.body; + let loop = tryBody[0]; if (isLabeledParent) { tryBody[0] = t.labeledStatement(parent.label, loop); diff --git a/packages/babel-core/src/transformation/transformers/es6/modules.js b/packages/babel-core/src/transformation/transformers/es6/modules.js index 16c5ea5b2c..afde8d1f6a 100644 --- a/packages/babel-core/src/transformation/transformers/es6/modules.js +++ b/packages/babel-core/src/transformation/transformers/es6/modules.js @@ -8,19 +8,19 @@ function keepBlockHoist(node, nodes) { } } -export var metadata = { +export let metadata = { group: "builtin-modules" }; -export var visitor = { +export let visitor = { ImportDeclaration(node, parent, scope, file) { // flow type if (node.importKind === "type" || node.importKind === "typeof") return; - var nodes = []; + let nodes = []; if (node.specifiers.length) { - for (var specifier of (node.specifiers: Array)) { + for (let specifier of (node.specifiers: Array)) { file.moduleFormatter.importSpecifier(specifier, node, nodes, scope); } } else { @@ -36,14 +36,14 @@ export var visitor = { }, ExportAllDeclaration(node, parent, scope, file) { - var nodes = []; + let nodes = []; file.moduleFormatter.exportAllDeclaration(node, nodes, scope); keepBlockHoist(node, nodes); return nodes; }, ExportDefaultDeclaration(node, parent, scope, file) { - var nodes = []; + let nodes = []; file.moduleFormatter.exportDeclaration(node, nodes, scope); keepBlockHoist(node, nodes); return nodes; @@ -53,13 +53,13 @@ export var visitor = { // flow type if (this.get("declaration").isTypeAlias()) return; - var nodes = []; + let nodes = []; if (node.declaration) { // make sure variable exports have an initializer // this is done here to avoid duplicating it in the module formatters if (t.isVariableDeclaration(node.declaration)) { - var declar = node.declaration.declarations[0]; + let declar = node.declaration.declarations[0]; declar.init = declar.init || scope.buildUndefinedNode(); } diff --git a/packages/babel-core/src/transformation/transformers/es6/object-super.js b/packages/babel-core/src/transformation/transformers/es6/object-super.js index f3afd17552..b4e6a9006c 100644 --- a/packages/babel-core/src/transformation/transformers/es6/object-super.js +++ b/packages/babel-core/src/transformation/transformers/es6/object-super.js @@ -5,7 +5,7 @@ function Property(path, node, scope, getObjectRef, file) { if (!node.method && node.kind === "init") return; if (!t.isFunction(node.value)) return; - var replaceSupers = new ReplaceSupers({ + let replaceSupers = new ReplaceSupers({ getObjectRef: getObjectRef, methodNode: node, methodPath: path, @@ -17,13 +17,13 @@ function Property(path, node, scope, getObjectRef, file) { replaceSupers.replace(); } -export var visitor = { +export let visitor = { ObjectExpression(node, parent, scope, file) { - var objectRef; - var getObjectRef = () => objectRef = objectRef || scope.generateUidIdentifier("obj"); + let objectRef; + let getObjectRef = () => objectRef = objectRef || scope.generateUidIdentifier("obj"); - var propPaths = this.get("properties"); - for (var i = 0; i < node.properties.length; i++) { + let propPaths = this.get("properties"); + for (let i = 0; i < node.properties.length; i++) { Property(propPaths[i], node.properties[i], scope, getObjectRef, file); } diff --git a/packages/babel-core/src/transformation/transformers/es6/parameters/default.js b/packages/babel-core/src/transformation/transformers/es6/parameters/default.js index cb8fabebae..4a49aee048 100644 --- a/packages/babel-core/src/transformation/transformers/es6/parameters/default.js +++ b/packages/babel-core/src/transformation/transformers/es6/parameters/default.js @@ -3,14 +3,14 @@ import getFunctionArity from "../../../helpers/get-function-arity"; import * as util from "../../../../util"; import * as t from "babel-types"; -var hasDefaults = function (node) { - for (var i = 0; i < node.params.length; i++) { +let hasDefaults = function (node) { + for (let i = 0; i < node.params.length; i++) { if (!t.isIdentifier(node.params[i])) return true; } return false; }; -var iifeVisitor = { +let iifeVisitor = { ReferencedIdentifier(node, parent, scope, state) { if (node.name !== "eval") { if (!state.scope.hasOwnBinding(node.name)) return; @@ -22,27 +22,27 @@ var iifeVisitor = { } }; -export var visitor = { +export let visitor = { Function(node, parent, scope, file) { if (!hasDefaults(node)) return; // ensure it's a block, useful for arrow functions this.ensureBlock(); - var state = { + let state = { iife: false, scope: scope }; - var body = []; + let body = []; // - var argsIdentifier = t.identifier("arguments"); + let argsIdentifier = t.identifier("arguments"); argsIdentifier._shadowedFunctionLiteral = this; // push a default parameter definition function pushDefNode(left, right, i) { - var defNode; + let defNode; if (exceedsLastNonDefault(i) || t.isPattern(left) || file.transformers["es6.spec.blockScoping"].canTransform()) { defNode = util.template("default-parameter", { VARIABLE_NAME: left, @@ -66,12 +66,12 @@ export var visitor = { } // - var lastNonDefaultParam = getFunctionArity(node); + let lastNonDefaultParam = getFunctionArity(node); // - var params = this.get("params"); - for (var i = 0; i < params.length; i++) { - var param = params[i]; + let params = this.get("params"); + for (let i = 0; i < params.length; i++) { + let param = params[i]; if (!param.isAssignmentPattern()) { if (!param.isIdentifier()) { @@ -85,11 +85,11 @@ export var visitor = { continue; } - var left = param.get("left"); - var right = param.get("right"); + let left = param.get("left"); + let right = param.get("right"); if (exceedsLastNonDefault(i) || left.isPattern()) { - var placeholder = scope.generateUidIdentifier("x"); + let placeholder = scope.generateUidIdentifier("x"); placeholder._isDefaultPlaceholder = true; node.params[i] = placeholder; } else { diff --git a/packages/babel-core/src/transformation/transformers/es6/parameters/destructuring.js b/packages/babel-core/src/transformation/transformers/es6/parameters/destructuring.js new file mode 100644 index 0000000000..da8b0de40f --- /dev/null +++ b/packages/babel-core/src/transformation/transformers/es6/parameters/destructuring.js @@ -0,0 +1,23 @@ +import * as t from "babel-types"; + +export let visitor = { + Function(path) { + let params: Array = path.get("params"); + let body = path.get("body"); + + for (let i = 0; i < params.length; i++) { + let param = params[i]; + if (param.isArrayPattern() || param.isObjectPattern()) { + let uid = path.scope.generateUidIdentifierBasedOnNode(param.node); + + let declar = t.variableDeclaration("let", [ + t.variableDeclarator(param.node, uid) + ]); + declar._blockHoist = params.length - i; + body.unshiftContainer("body", declar); + + param.replaceWith(uid); + } + } + } +}; diff --git a/packages/babel-core/src/transformation/transformers/es6/parameters/index.js b/packages/babel-core/src/transformation/transformers/es6/parameters/index.js index e1061a0b68..6e154173aa 100644 --- a/packages/babel-core/src/transformation/transformers/es6/parameters/index.js +++ b/packages/babel-core/src/transformation/transformers/es6/parameters/index.js @@ -3,8 +3,8 @@ import { visitors } from "babel-traverse"; import * as def from "./default"; import * as rest from "./rest"; -export var metadata = { +export let metadata = { group: "builtin-advanced" }; -export var visitor = visitors.merge([rest.visitor, def.visitor]); +export let visitor = visitors.merge([rest.visitor, def.visitor]); diff --git a/packages/babel-core/src/transformation/transformers/es6/parameters/rest.js b/packages/babel-core/src/transformation/transformers/es6/parameters/rest.js index 8142737a54..6eb37b76d2 100644 --- a/packages/babel-core/src/transformation/transformers/es6/parameters/rest.js +++ b/packages/babel-core/src/transformation/transformers/es6/parameters/rest.js @@ -1,7 +1,7 @@ import * as util from "../../../../util"; import * as t from "babel-types"; -var memberExpressionOptimisationVisitor = { +let memberExpressionOptimisationVisitor = { Scope(node, parent, scope, state) { // check if this scope has a local binding that will shadow the rest parameter if (!scope.bindingIdentifierEquals(state.name, state.outerBinding)) { @@ -17,7 +17,7 @@ var memberExpressionOptimisationVisitor = { Function(node, parent, scope, state) { // skip over functions as whatever `arguments` we reference inside will refer // to the wrong function - var oldNoOptimise = state.noOptimise; + let oldNoOptimise = state.noOptimise; state.noOptimise = true; this.traverse(memberExpressionOptimisationVisitor, state); state.noOptimise = oldNoOptimise; @@ -39,7 +39,7 @@ var memberExpressionOptimisationVisitor = { if (this.parentPath.isMemberExpression({ computed: true, object: node })) { // if we know that this member expression is referencing a number then we can safely // optimise it - var prop = this.parentPath.get("property"); + let prop = this.parentPath.get("property"); if (prop.isBaseType("number")) { state.candidates.push(this); return; @@ -48,7 +48,7 @@ var memberExpressionOptimisationVisitor = { // optimise single spread args in calls if (this.parentPath.isSpreadElement() && state.offset === 0) { - var call = this.parentPath.parentPath; + let call = this.parentPath.parentPath; if (call.isCallExpression() && call.node.arguments.length === 1) { state.candidates.push(this); return; @@ -75,8 +75,8 @@ var memberExpressionOptimisationVisitor = { function optimiseMemberExpression(parent, offset) { if (offset === 0) return; - var newExpr; - var prop = parent.property; + let newExpr; + let prop = parent.property; if (t.isLiteral(prop)) { prop.value += offset; @@ -91,32 +91,32 @@ function hasRest(node) { return t.isRestElement(node.params[node.params.length - 1]); } -export var visitor = { +export let visitor = { Function(node, parent, scope) { if (!hasRest(node)) return; - var restParam = node.params.pop(); - var rest = restParam.argument; + let restParam = node.params.pop(); + let rest = restParam.argument; - var argsId = t.identifier("arguments"); + let argsId = t.identifier("arguments"); // otherwise `arguments` will be remapped in arrow functions argsId._shadowedFunctionLiteral = this; // support patterns if (t.isPattern(rest)) { - var pattern = rest; + let pattern = rest; rest = scope.generateUidIdentifier("ref"); - var declar = t.variableDeclaration("let", pattern.elements.map(function (elem, index) { - var accessExpr = t.memberExpression(rest, t.numberLiteral(index), true); + let declar = t.variableDeclaration("let", pattern.elements.map(function (elem, index) { + let accessExpr = t.memberExpression(rest, t.numberLiteral(index), true); return t.variableDeclarator(elem, accessExpr); })); node.body.body.unshift(declar); } // check and optimise for extremely common cases - var state = { + let state = { references: [], offset: node.params.length, @@ -138,7 +138,7 @@ export var visitor = { if (!state.deopted && !state.references.length) { // we only have shorthands and there are no other references if (state.candidates.length) { - for (var candidate of (state.candidates: Array)) { + for (let candidate of (state.candidates: Array)) { candidate.replaceWith(argsId); if (candidate.parentPath.isMemberExpression()) { optimiseMemberExpression(candidate.parent, state.offset); @@ -155,12 +155,12 @@ export var visitor = { // - var start = t.numberLiteral(node.params.length); - var key = scope.generateUidIdentifier("key"); - var len = scope.generateUidIdentifier("len"); + let start = t.numberLiteral(node.params.length); + let key = scope.generateUidIdentifier("key"); + let len = scope.generateUidIdentifier("len"); - var arrKey = key; - var arrLen = len; + let arrKey = key; + let arrLen = len; if (node.params.length) { // this method has additional params, so we need to subtract // the index of the current argument position from the @@ -180,7 +180,7 @@ export var visitor = { ); } - var loop = util.template("rest", { + let loop = util.template("rest", { ARRAY_TYPE: restParam.typeAnnotation, ARGUMENTS: argsId, ARRAY_KEY: arrKey, @@ -198,10 +198,10 @@ export var visitor = { // perform allocation at the lowest common ancestor of all references loop._blockHoist = 1; - var target = this.getEarliestCommonAncestorFrom(state.references).getStatementParent(); + let target = this.getEarliestCommonAncestorFrom(state.references).getStatementParent(); // don't perform the allocation inside a loop - var highestLoop; + let highestLoop; target.findParent(function (path) { if (path.isLoop()) { highestLoop = path; diff --git a/packages/babel-core/src/transformation/transformers/es6/regex.sticky.js b/packages/babel-core/src/transformation/transformers/es6/regex.sticky.js index 26efd93f0d..bffc2e6dff 100644 --- a/packages/babel-core/src/transformation/transformers/es6/regex.sticky.js +++ b/packages/babel-core/src/transformation/transformers/es6/regex.sticky.js @@ -1,7 +1,7 @@ import * as regex from "../../helpers/regex"; import * as t from "babel-types"; -export var visitor = { +export let visitor = { RegexLiteral(node) { if (!regex.is(node, "y")) return; return t.newExpression(t.identifier("RegExp"), [ diff --git a/packages/babel-core/src/transformation/transformers/es6/regex.unicode.js b/packages/babel-core/src/transformation/transformers/es6/regex.unicode.js index 8bb2763c0c..cb7266940f 100644 --- a/packages/babel-core/src/transformation/transformers/es6/regex.unicode.js +++ b/packages/babel-core/src/transformation/transformers/es6/regex.unicode.js @@ -1,7 +1,7 @@ import rewritePattern from "regexpu/rewrite-pattern"; import * as regex from "../../helpers/regex"; -export var visitor = { +export let visitor = { RegexLiteral(node) { if (!regex.is(node, "u")) return; node.regex.pattern = rewritePattern(node.pattern, node.flags); diff --git a/packages/babel-core/src/transformation/transformers/es6/spec.arrow-functions.js b/packages/babel-core/src/transformation/transformers/es6/spec.arrow-functions.js index e8a70a1b6e..48acf05eca 100644 --- a/packages/babel-core/src/transformation/transformers/es6/spec.arrow-functions.js +++ b/packages/babel-core/src/transformation/transformers/es6/spec.arrow-functions.js @@ -1,16 +1,16 @@ import * as t from "babel-types"; -export var metadata = { +export let metadata = { group: "builtin-pre", optional: true }; -export var visitor = { +export let visitor = { ArrowFunctionExpression(node, parent, scope, file) { if (node.shadow) return; node.shadow = { this: false }; - var boundThis = t.thisExpression(); + let boundThis = t.thisExpression(); boundThis._forceShadow = this; // make sure that arrow function won't be instantiated diff --git a/packages/babel-core/src/transformation/transformers/es6/spec.modules.js b/packages/babel-core/src/transformation/transformers/es6/spec.modules.js index 9e3f22640f..a51e2ea9ea 100644 --- a/packages/babel-core/src/transformation/transformers/es6/spec.modules.js +++ b/packages/babel-core/src/transformation/transformers/es6/spec.modules.js @@ -1,13 +1,13 @@ import * as t from "babel-types"; -export var metadata = { +export let metadata = { group: "builtin-pre", optional: true }; -export var visitor = { +export let visitor = { Program() { - var id = this.scope.generateUidIdentifier("null"); + let id = this.scope.generateUidIdentifier("null"); this.unshiftContainer("body", [ t.variableDeclaration("var", [ t.variableDeclarator(id, t.nullLiteral()) diff --git a/packages/babel-core/src/transformation/transformers/es6/spec.symbols.js b/packages/babel-core/src/transformation/transformers/es6/spec.symbols.js index 0886017864..73826474b8 100644 --- a/packages/babel-core/src/transformation/transformers/es6/spec.symbols.js +++ b/packages/babel-core/src/transformation/transformers/es6/spec.symbols.js @@ -1,24 +1,24 @@ import * as t from "babel-types"; -export var metadata = { +export let metadata = { optional: true }; -export var visitor = { +export let visitor = { UnaryExpression(node, parent, scope, file) { if (node._ignoreSpecSymbols) return; if (this.parentPath.isBinaryExpression() && t.EQUALITY_BINARY_OPERATORS.indexOf(parent.operator) >= 0) { // optimise `typeof foo === "string"` since we can determine that they'll never need to handle symbols - var opposite = this.getOpposite(); + let opposite = this.getOpposite(); if (opposite.isLiteral() && opposite.node.value !== "symbol" && opposite.node.value !== "object") return; } if (node.operator === "typeof") { - var call = t.callExpression(file.addHelper("typeof"), [node.argument]); + let call = t.callExpression(file.addHelper("typeof"), [node.argument]); if (this.get("argument").isIdentifier()) { - var undefLiteral = t.stringLiteral("undefined"); - var unary = t.unaryExpression("typeof", node.argument); + let undefLiteral = t.stringLiteral("undefined"); + let unary = t.unaryExpression("typeof", node.argument); unary._ignoreSpecSymbols = true; return t.conditionalExpression( t.binaryExpression("===", unary, undefLiteral), diff --git a/packages/babel-core/src/transformation/transformers/es6/spec.template-literals.js b/packages/babel-core/src/transformation/transformers/es6/spec.template-literals.js index 7498b1820e..798718552b 100644 --- a/packages/babel-core/src/transformation/transformers/es6/spec.template-literals.js +++ b/packages/babel-core/src/transformation/transformers/es6/spec.template-literals.js @@ -1,15 +1,15 @@ import * as t from "babel-types"; -export var metadata = { +export let metadata = { optional: true, group: "builtin-pre" }; -export var visitor = { +export let visitor = { TemplateLiteral(node, parent) { if (t.isTaggedTemplateExpression(parent)) return; - for (var i = 0; i < node.expressions.length; i++) { + for (let i = 0; i < node.expressions.length; i++) { node.expressions[i] = t.callExpression(t.identifier("String"), [node.expressions[i]]); } } diff --git a/packages/babel-core/src/transformation/transformers/es6/tail-call.js b/packages/babel-core/src/transformation/transformers/es6/tail-call.js index efe7e7eeb7..8400873e22 100644 --- a/packages/babel-core/src/transformation/transformers/es6/tail-call.js +++ b/packages/babel-core/src/transformation/transformers/es6/tail-call.js @@ -5,14 +5,14 @@ import * as util from "../../../util"; import map from "lodash/collection/map"; import * as t from "babel-types"; -export var metadata = { +export let metadata = { group: "builtin-trailing" }; -export var visitor = { +export let visitor = { Function(node, parent, scope, file) { if (node.generator || node.async) return; - var tailCall = new TailCallTransformer(this, scope, file); + let tailCall = new TailCallTransformer(this, scope, file); tailCall.run(); } }; @@ -21,7 +21,7 @@ function returnBlock(expr) { return t.blockStatement([t.returnStatement(expr)]); } -var visitor = { +let visitor = { enter(node, parent) { if (t.isTryStatement(parent)) { if (node === parent.block) { @@ -101,14 +101,14 @@ class TailCallTransformer { } getParams() { - var params = this.params; + let params = this.params; if (!params) { params = this.node.params; this.paramDecls = []; - for (var i = 0; i < params.length; i++) { - var param = params[i]; + for (let i = 0; i < params.length; i++) { + let param = params[i]; if (!param._isDefaultPlaceholder) { this.paramDecls.push(t.variableDeclarator( param, @@ -124,16 +124,16 @@ class TailCallTransformer { hasDeopt() { // check if the ownerId has been reassigned, if it has then it's not safe to // perform optimisations - var ownerIdInfo = this.scope.getBinding(this.ownerId.name); + let ownerIdInfo = this.scope.getBinding(this.ownerId.name); return ownerIdInfo && !ownerIdInfo.constant; } run() { - var node = this.node; + let node = this.node; // only tail recursion can be optimized as for now, so we can skip anonymous // functions entirely - var ownerId = this.ownerId; + let ownerId = this.ownerId; if (!ownerId) return; // traverse the function and look for tail recursion @@ -150,10 +150,10 @@ class TailCallTransformer { // - var body = this.path.ensureBlock().body; + let body = this.path.ensureBlock().body; - for (var i = 0; i < body.length; i++) { - var bodyNode = body[i]; + for (let i = 0; i < body.length; i++) { + let bodyNode = body[i]; if (!t.isFunctionDeclaration(bodyNode)) continue; bodyNode = body[i] = t.variableDeclaration("var", [ @@ -163,22 +163,22 @@ class TailCallTransformer { } if (this.vars.length > 0) { - var declarations = flatten(map(this.vars, function (decl) { + let declarations = flatten(map(this.vars, function (decl) { return decl.declarations; })); - var assignment = reduceRight(declarations, function (expr, decl) { + let assignment = reduceRight(declarations, function (expr, decl) { return t.assignmentExpression("=", decl.id, expr); }, this.scope.buildUndefinedNode()); - var statement = t.expressionStatement(assignment); + let statement = t.expressionStatement(assignment); statement._blockHoist = Infinity; body.unshift(statement); } - var paramDecls = this.paramDecls; + let paramDecls = this.paramDecls; if (paramDecls.length > 0) { - var paramDecl = t.variableDeclaration("var", paramDecls); + let paramDecl = t.variableDeclaration("var", paramDecls); paramDecl._blockHoist = Infinity; body.unshift(paramDecl); } @@ -193,10 +193,10 @@ class TailCallTransformer { BLOCK: node.body }); - var topVars = []; + let topVars = []; if (this.needsThis) { - for (var path of (this.thisPaths: Array)) { + for (let path of (this.thisPaths: Array)) { path.replaceWith(this.getThisId()); } @@ -208,7 +208,7 @@ class TailCallTransformer { path.replaceWith(this.argumentsId); } - var decl = t.variableDeclarator(this.argumentsId); + let decl = t.variableDeclarator(this.argumentsId); if (this.argumentsId) { decl.init = t.identifier("arguments"); decl.init._shadowedFunctionLiteral = this.path; @@ -216,7 +216,7 @@ class TailCallTransformer { topVars.push(decl); } - var leftId = this.leftId; + let leftId = this.leftId; if (leftId) { topVars.push(t.variableDeclarator(leftId)); } @@ -229,13 +229,13 @@ class TailCallTransformer { subTransform(node) { if (!node) return; - var handler = this[`subTransform${node.type}`]; + let handler = this[`subTransform${node.type}`]; if (handler) return handler.call(this, node); } subTransformConditionalExpression(node) { - var callConsequent = this.subTransform(node.consequent); - var callAlternate = this.subTransform(node.alternate); + let callConsequent = this.subTransform(node.consequent); + let callAlternate = this.subTransform(node.alternate); if (!callConsequent && !callAlternate) { return; } @@ -255,12 +255,12 @@ class TailCallTransformer { subTransformLogicalExpression(node) { // only call in right-value of can be optimized - var callRight = this.subTransform(node.right); + let callRight = this.subTransform(node.right); if (!callRight) return; // cache left value as it might have side-effects - var leftId = this.getLeftId(); - var testExpr = t.assignmentExpression( + let leftId = this.getLeftId(); + let testExpr = t.assignmentExpression( "=", leftId, node.left @@ -274,10 +274,10 @@ class TailCallTransformer { } subTransformSequenceExpression(node) { - var seq = node.expressions; + let seq = node.expressions; // only last element can be optimized - var lastCall = this.subTransform(seq[seq.length - 1]); + let lastCall = this.subTransform(seq[seq.length - 1]); if (!lastCall) { return; } @@ -292,8 +292,8 @@ class TailCallTransformer { } subTransformCallExpression(node) { - var callee = node.callee; - var thisBinding, args; + let callee = node.callee; + let thisBinding, args; if (t.isMemberExpression(callee, { computed: false }) && t.isIdentifier(callee.property)) { switch (callee.property.name) { @@ -323,7 +323,7 @@ class TailCallTransformer { if (this.hasDeopt()) return; - var body = []; + let body = []; if (this.needsThis && !t.isThisExpression(thisBinding)) { body.push(t.expressionStatement(t.assignmentExpression( @@ -337,8 +337,8 @@ class TailCallTransformer { args = t.arrayExpression(node.arguments); } - var argumentsId = this.getArgumentsId(); - var params = this.getParams(); + let argumentsId = this.getArgumentsId(); + let params = this.getParams(); if (this.needsArguments) { body.push(t.expressionStatement(t.assignmentExpression( @@ -349,7 +349,7 @@ class TailCallTransformer { } if (t.isArrayExpression(args)) { - var elems = args.elements; + let elems = args.elements; // pad out the args so all the function args are reset - https://github.com/babel/babel/issues/1938 while (elems.length < params.length) { diff --git a/packages/babel-core/src/transformation/transformers/es7/async-functions.js b/packages/babel-core/src/transformation/transformers/es7/async-functions.js index 83435eaaaa..18eb858c21 100644 --- a/packages/babel-core/src/transformation/transformers/es7/async-functions.js +++ b/packages/babel-core/src/transformation/transformers/es7/async-functions.js @@ -1,3 +1,3 @@ -export var metadata = { +export let metadata = { stage: 2 }; diff --git a/packages/babel-core/src/transformation/transformers/es7/class-properties.js b/packages/babel-core/src/transformation/transformers/es7/class-properties.js index ca95104fab..6d65970ef0 100644 --- a/packages/babel-core/src/transformation/transformers/es7/class-properties.js +++ b/packages/babel-core/src/transformation/transformers/es7/class-properties.js @@ -1,4 +1,4 @@ -export var metadata = { +export let metadata = { stage: 0, dependencies: ["es6.classes"] }; diff --git a/packages/babel-core/src/transformation/transformers/es7/comprehensions.js b/packages/babel-core/src/transformation/transformers/es7/comprehensions.js index 0936429cef..b9dd2a9e8e 100644 --- a/packages/babel-core/src/transformation/transformers/es7/comprehensions.js +++ b/packages/babel-core/src/transformation/transformers/es7/comprehensions.js @@ -3,21 +3,21 @@ import traverse from "babel-traverse"; import * as util from "../../../util"; import * as t from "babel-types"; -export var metadata = { +export let metadata = { stage: 0 }; -export var visitor = { +export let visitor = { ComprehensionExpression(node, parent, scope) { - var callback = array; + let callback = array; if (node.generator) callback = generator; return callback(node, parent, scope); } }; function generator(node) { - var body = []; - var container = t.functionExpression(null, [], t.blockStatement(body), true); + let body = []; + let container = t.functionExpression(null, [], t.blockStatement(body), true); container.shadow = true; body.push(buildComprehension(node, function () { @@ -28,22 +28,22 @@ function generator(node) { } function array(node, parent, scope) { - var uid = scope.generateUidIdentifierBasedOnNode(parent); + let uid = scope.generateUidIdentifierBasedOnNode(parent); - var container = util.template("array-comprehension-container", { + let container = util.template("array-comprehension-container", { KEY: uid }); container.callee.shadow = true; - var block = container.callee.body; - var body = block.body; + let block = container.callee.body; + let body = block.body; if (traverse.hasType(node, scope, "YieldExpression", t.FUNCTION_TYPES)) { container.callee.generator = true; container = t.yieldExpression(container, true); } - var returnStatement = body.pop(); + let returnStatement = body.pop(); body.push(buildComprehension(node, function () { return util.template("array-push", { diff --git a/packages/babel-core/src/transformation/transformers/es7/decorators.js b/packages/babel-core/src/transformation/transformers/es7/decorators.js index b0fd12c146..e81465ee44 100644 --- a/packages/babel-core/src/transformation/transformers/es7/decorators.js +++ b/packages/babel-core/src/transformation/transformers/es7/decorators.js @@ -2,15 +2,15 @@ import memoiseDecorators from "../../helpers/memoise-decorators"; import * as defineMap from "../../helpers/define-map"; import * as t from "babel-types"; -export var metadata = { +export let metadata = { dependencies: ["es6.classes"], optional: true, stage: 1 }; -export var visitor = { +export let visitor = { ObjectExpression(node, parent, scope, file) { - var hasDecorators = false; + let hasDecorators = false; for (let i = 0; i < node.properties.length; i++) { let prop = node.properties[i]; if (prop.decorators) { @@ -20,7 +20,7 @@ export var visitor = { } if (!hasDecorators) return; - var mutatorMap = {}; + let mutatorMap = {}; for (let i = 0; i < node.properties.length; i++) { let prop = node.properties[i]; @@ -37,7 +37,7 @@ export var visitor = { defineMap.push(mutatorMap, prop, "initializer", file); } - var obj = defineMap.toClassObject(mutatorMap); + let obj = defineMap.toClassObject(mutatorMap); obj = defineMap.toComputedObjectFromClass(obj); return t.callExpression(file.addHelper("create-decorated-object"), [obj]); } diff --git a/packages/babel-core/src/transformation/transformers/es7/do-expressions.js b/packages/babel-core/src/transformation/transformers/es7/do-expressions.js index 3e3be4b82b..e7f01f1102 100644 --- a/packages/babel-core/src/transformation/transformers/es7/do-expressions.js +++ b/packages/babel-core/src/transformation/transformers/es7/do-expressions.js @@ -1,13 +1,13 @@ import * as t from "babel-types"; -export var metadata = { +export let metadata = { optional: true, stage: 0 }; -export var visitor = { +export let visitor = { DoExpression(node) { - var body = node.body.body; + let body = node.body.body; if (body.length) { return body; } else { diff --git a/packages/babel-core/src/transformation/transformers/es7/exponentiation-operator.js b/packages/babel-core/src/transformation/transformers/es7/exponentiation-operator.js index 6539ed6860..90e4b214c5 100644 --- a/packages/babel-core/src/transformation/transformers/es7/exponentiation-operator.js +++ b/packages/babel-core/src/transformation/transformers/es7/exponentiation-operator.js @@ -3,11 +3,11 @@ import build from "../../helpers/build-binary-assignment-operator-transformer"; import * as t from "babel-types"; -export var metadata = { +export let metadata = { stage: 2 }; -export var visitor = build({ +export let visitor = build({ operator: "**", build(left, right) { diff --git a/packages/babel-core/src/transformation/transformers/es7/export-extensions.js b/packages/babel-core/src/transformation/transformers/es7/export-extensions.js index 2e622c2d56..4cf5d4caa4 100644 --- a/packages/babel-core/src/transformation/transformers/es7/export-extensions.js +++ b/packages/babel-core/src/transformation/transformers/es7/export-extensions.js @@ -2,18 +2,18 @@ import * as t from "babel-types"; -export var metadata = { +export let metadata = { stage: 1 }; function build(node, nodes, scope) { - var first = node.specifiers[0]; + let first = node.specifiers[0]; if (!t.isExportNamespaceSpecifier(first) && !t.isExportDefaultSpecifier(first)) return; - var specifier = node.specifiers.shift(); - var uid = scope.generateUidIdentifier(specifier.exported.name); + let specifier = node.specifiers.shift(); + let uid = scope.generateUidIdentifier(specifier.exported.name); - var newSpecifier; + let newSpecifier; if (t.isExportNamespaceSpecifier(specifier)) { newSpecifier = t.importNamespaceSpecifier(uid); } else { @@ -26,9 +26,9 @@ function build(node, nodes, scope) { build(node, nodes, scope); } -export var visitor = { +export let visitor = { ExportNamedDeclaration(node, parent, scope) { - var nodes = []; + let nodes = []; build(node, nodes, scope); if (!nodes.length) return; diff --git a/packages/babel-core/src/transformation/transformers/es7/function-bind.js b/packages/babel-core/src/transformation/transformers/es7/function-bind.js index 30f9ddf621..74bf548bff 100644 --- a/packages/babel-core/src/transformation/transformers/es7/function-bind.js +++ b/packages/babel-core/src/transformation/transformers/es7/function-bind.js @@ -2,13 +2,13 @@ import * as t from "babel-types"; -export var metadata = { +export let metadata = { optional: true, stage: 0 }; function getTempId(scope) { - var id = scope.path.getData("functionBind"); + let id = scope.path.getData("functionBind"); if (id) return id; id = scope.generateDeclaredUidIdentifier("context"); @@ -16,15 +16,15 @@ function getTempId(scope) { } function getStaticContext(bind, scope) { - var object = bind.object || bind.callee.object; + let object = bind.object || bind.callee.object; return scope.isStatic(object) && object; } function inferBindContext(bind, scope) { - var staticContext = getStaticContext(bind, scope); + let staticContext = getStaticContext(bind, scope); if (staticContext) return staticContext; - var tempId = getTempId(scope); + let tempId = getTempId(scope); if (bind.object) { bind.callee = t.sequenceExpression([ t.assignmentExpression("=", tempId, bind.object), @@ -36,18 +36,18 @@ function inferBindContext(bind, scope) { return tempId; } -export var visitor = { +export let visitor = { CallExpression(node, parent, scope) { - var bind = node.callee; + let bind = node.callee; if (!t.isBindExpression(bind)) return; - var context = inferBindContext(bind, scope); + let context = inferBindContext(bind, scope); node.callee = t.memberExpression(bind.callee, t.identifier("call")); node.arguments.unshift(context); }, BindExpression(node, parent, scope) { - var context = inferBindContext(node, scope); + let context = inferBindContext(node, scope); return t.callExpression(t.memberExpression(node.callee, t.identifier("bind")), [context]); } }; diff --git a/packages/babel-core/src/transformation/transformers/es7/object-rest-spread.js b/packages/babel-core/src/transformation/transformers/es7/object-rest-spread.js index 932adb0118..ea7b9c6a31 100644 --- a/packages/babel-core/src/transformation/transformers/es7/object-rest-spread.js +++ b/packages/babel-core/src/transformation/transformers/es7/object-rest-spread.js @@ -2,13 +2,13 @@ import * as t from "babel-types"; -export var metadata = { +export let metadata = { stage: 2, dependencies: ["es6.destructuring"] }; -var hasSpread = function (node) { - for (var i = 0; i < node.properties.length; i++) { +let hasSpread = function (node) { + for (let i = 0; i < node.properties.length; i++) { if (t.isSpreadProperty(node.properties[i])) { return true; } @@ -16,21 +16,21 @@ var hasSpread = function (node) { return false; }; -export var visitor = { +export let visitor = { ObjectExpression(node, parent, scope, file) { if (!hasSpread(node)) return; - var args = []; - var props = []; + let args = []; + let props = []; - var push = function () { + let push = function () { if (!props.length) return; args.push(t.objectExpression(props)); props = []; }; - for (var i = 0; i < node.properties.length; i++) { - var prop = node.properties[i]; + for (let i = 0; i < node.properties.length; i++) { + let prop = node.properties[i]; if (t.isSpreadProperty(prop)) { push(); args.push(prop.argument); diff --git a/packages/babel-core/src/transformation/transformers/es7/trailing-function-commas.js b/packages/babel-core/src/transformation/transformers/es7/trailing-function-commas.js index 5059fdd666..e75a1bd865 100644 --- a/packages/babel-core/src/transformation/transformers/es7/trailing-function-commas.js +++ b/packages/babel-core/src/transformation/transformers/es7/trailing-function-commas.js @@ -1,3 +1,3 @@ -export var metadata = { +export let metadata = { stage: 1 }; diff --git a/packages/babel-core/src/transformation/transformers/filters.js b/packages/babel-core/src/transformation/transformers/filters.js index dff6631b9b..c34e5ea70e 100644 --- a/packages/babel-core/src/transformation/transformers/filters.js +++ b/packages/babel-core/src/transformation/transformers/filters.js @@ -5,17 +5,17 @@ export function internal(transformer) { } export function blacklist(transformer, opts) { - var blacklist = opts.blacklist; + let blacklist = opts.blacklist; if (blacklist.length && includes(blacklist, transformer.key)) return false; } export function whitelist(transformer, opts) { - var whitelist = opts.whitelist; + let whitelist = opts.whitelist; if (whitelist) return includes(whitelist, transformer.key); } export function stage(transformer, opts) { - var stage = transformer.metadata.stage; + let stage = transformer.metadata.stage; if (stage != null && stage >= opts.stage) return true; } diff --git a/packages/babel-core/src/transformation/transformers/internal/hoist-directives.js b/packages/babel-core/src/transformation/transformers/internal/hoist-directives.js index 74c9601515..dc38fc570a 100644 --- a/packages/babel-core/src/transformation/transformers/internal/hoist-directives.js +++ b/packages/babel-core/src/transformation/transformers/internal/hoist-directives.js @@ -1,14 +1,14 @@ import * as t from "babel-types"; -export var metadata = { +export let metadata = { group: "builtin-pre" }; -export var visitor = { +export let visitor = { Block: { exit(node) { - for (var i = 0; i < node.body.length; i++) { - var bodyNode = node.body[i]; + for (let i = 0; i < node.body.length; i++) { + let bodyNode = node.body[i]; if (t.isExpressionStatement(bodyNode) && t.isLiteral(bodyNode.expression)) { bodyNode._blockHoist = Infinity; } else { diff --git a/packages/babel-core/src/transformation/transformers/internal/module-formatter.js b/packages/babel-core/src/transformation/transformers/internal/module-formatter.js index d767376582..a617385915 100644 --- a/packages/babel-core/src/transformation/transformers/internal/module-formatter.js +++ b/packages/babel-core/src/transformation/transformers/internal/module-formatter.js @@ -1,12 +1,12 @@ -export var metadata = { +export let metadata = { group: "builtin-modules" }; -export var visitor = { +export let visitor = { Program: { exit(program, parent, scope, file) { // ensure that these are at the top, just like normal imports - for (var node of (file.dynamicImports: Array)) { + for (let node of (file.dynamicImports: Array)) { node._blockHoist = 3; } diff --git a/packages/babel-core/src/transformation/transformers/internal/modules.js b/packages/babel-core/src/transformation/transformers/internal/modules.js index 340cc42893..ff3867981e 100644 --- a/packages/babel-core/src/transformation/transformers/internal/modules.js +++ b/packages/babel-core/src/transformation/transformers/internal/modules.js @@ -7,7 +7,7 @@ import * as t from "babel-types"; function getDeclar(node) { - var declar = node.declaration; + let declar = node.declaration; t.inheritsComments(declar, node); t.removeComments(node); declar._ignoreUserWhitespace = true; @@ -19,18 +19,18 @@ function buildExportSpecifier(id) { } function cloneIdentifier({ name, loc }) { - var id = t.identifier(name); + let id = t.identifier(name); id._loc = loc; return id; } -export var metadata = { +export let metadata = { group: "builtin-pre" }; -export var visitor = { +export let visitor = { ExportDefaultDeclaration(node, parent, scope) { - var declar = node.declaration; + let declar = node.declaration; if (t.isClassDeclaration(declar)) { // export default class Foo {}; @@ -39,7 +39,7 @@ export var visitor = { return nodes; } else if (t.isClassExpression(declar)) { // export default class {}; - var temp = scope.generateUidIdentifier("default"); + let temp = scope.generateUidIdentifier("default"); node.declaration = t.variableDeclaration("var", [ t.variableDeclarator(temp, declar) ]); @@ -58,7 +58,7 @@ export var visitor = { }, ExportNamedDeclaration(node) { - var declar = node.declaration; + let declar = node.declaration; if (t.isClassDeclaration(declar)) { // export class Foo {} @@ -69,14 +69,14 @@ export var visitor = { return nodes; } else if (t.isFunctionDeclaration(declar)) { // export function Foo() {} - var newExport = t.exportNamedDeclaration(null, [buildExportSpecifier(declar.id)]); + let newExport = t.exportNamedDeclaration(null, [buildExportSpecifier(declar.id)]); newExport._blockHoist = 2; return [getDeclar(node), newExport]; } else if (t.isVariableDeclaration(declar)) { - // export var foo = "bar"; - var specifiers = []; - var bindings = this.get("declaration").getBindingIdentifiers(); - for (var key in bindings) { + // export let foo = "bar"; + let specifiers = []; + let bindings = this.get("declaration").getBindingIdentifiers(); + for (let key in bindings) { specifiers.push(buildExportSpecifier(bindings[key])); } return [declar, t.exportNamedDeclaration(null, specifiers)]; @@ -85,11 +85,11 @@ export var visitor = { Program: { enter(node) { - var imports = []; - var rest = []; + let imports = []; + let rest = []; - for (var i = 0; i < node.body.length; i++) { - var bodyNode = node.body[i]; + for (let i = 0; i < node.body.length; i++) { + let bodyNode = node.body[i]; if (t.isImportDeclaration(bodyNode)) { imports.push(bodyNode); } else { diff --git a/packages/babel-core/src/transformation/transformers/internal/validation.js b/packages/babel-core/src/transformation/transformers/internal/validation.js index 7704923a70..8b27442419 100644 --- a/packages/babel-core/src/transformation/transformers/internal/validation.js +++ b/packages/babel-core/src/transformation/transformers/internal/validation.js @@ -1,22 +1,22 @@ import * as messages from "babel-messages"; import * as t from "babel-types"; -export var metadata = { +export let metadata = { group: "builtin-pre" }; -export var visitor = { +export let visitor = { ForXStatement(node, parent, scope, file) { - var left = node.left; + let left = node.left; if (t.isVariableDeclaration(left)) { - var declar = left.declarations[0]; + let declar = left.declarations[0]; if (declar.init) throw file.errorWithNode(declar, messages.get("noAssignmentsInForHead")); } }, Property(node, parent, scope, file) { if (node.kind === "set") { - var first = node.value.params[0]; + let first = node.value.params[0]; if (t.isRestElement(first)) { throw file.errorWithNode(first, messages.get("settersNoRest")); } diff --git a/packages/babel-core/src/transformation/transformers/optimisation/flow.for-of.js b/packages/babel-core/src/transformation/transformers/optimisation/flow.for-of.js index b5eeba6c62..b6b78bc25f 100644 --- a/packages/babel-core/src/transformation/transformers/optimisation/flow.for-of.js +++ b/packages/babel-core/src/transformation/transformers/optimisation/flow.for-of.js @@ -1,10 +1,10 @@ import { _ForOfStatementArray } from "../es6/for-of"; -export var metadata = { +export let metadata = { optional: true }; -export var visitor = { +export let visitor = { ForOfStatement(node, parent, scope, file) { if (this.get("right").isGenericType("Array")) { return _ForOfStatementArray.call(this, node, scope, file); diff --git a/packages/babel-core/src/transformation/transformers/optimisation/modules.system.js b/packages/babel-core/src/transformation/transformers/optimisation/modules.system.js index cf60703d1e..88260235ce 100644 --- a/packages/babel-core/src/transformation/transformers/optimisation/modules.system.js +++ b/packages/babel-core/src/transformation/transformers/optimisation/modules.system.js @@ -1,11 +1,11 @@ import * as t from "babel-types"; -export var metadata = { +export let metadata = { optional: true, group: "builtin-trailing" }; -export var visitor = { +export let visitor = { Program(node, parent, scope, file){ if (file.moduleFormatter._setters){ scope.traverse(file.moduleFormatter._setters, optimizeSettersVisitor, { @@ -24,7 +24,7 @@ export var visitor = { * TODO: Ideally this would be optimized during construction of the setters, but the current * architecture of the module formatters make that difficult. */ -var optimizeSettersVisitor = { +let optimizeSettersVisitor = { FunctionExpression: { enter: (node, parent, scope, state) => { state.hasExports = false; @@ -44,7 +44,7 @@ var optimizeSettersVisitor = { if (!t.isIdentifier(node.callee, {name: state.exportFunctionIdentifier.name})) return; state.hasExports = true; - var memberNode = t.memberExpression(t.cloneDeep(state.exportObjectIdentifier), node.arguments[0], true); + let memberNode = t.memberExpression(t.cloneDeep(state.exportObjectIdentifier), node.arguments[0], true); return t.assignmentExpression("=", memberNode, node.arguments[1]); } }; diff --git a/packages/babel-core/src/transformation/transformers/optimisation/react.inline-elements.js b/packages/babel-core/src/transformation/transformers/optimisation/react.inline-elements.js index 6013f4772c..9769516a9f 100644 --- a/packages/babel-core/src/transformation/transformers/optimisation/react.inline-elements.js +++ b/packages/babel-core/src/transformation/transformers/optimisation/react.inline-elements.js @@ -1,13 +1,13 @@ import { react } from "babel-types"; import * as t from "babel-types"; -export var metadata = { +export let metadata = { optional: true }; function hasRefOrSpread(attrs) { - for (var i = 0; i < attrs.length; i++) { - var attr = attrs[i]; + for (let i = 0; i < attrs.length; i++) { + let attr = attrs[i]; if (t.isJSXSpreadAttribute(attr)) return true; if (isJSXAttributeOfName(attr, "ref")) return true; } @@ -17,18 +17,18 @@ function hasRefOrSpread(attrs) { function isJSXAttributeOfName(attr, name) { return t.isJSXAttribute(attr) && t.isJSXIdentifier(attr.name, { name: name }); } -export var visitor = { +export let visitor = { JSXElement(node, parent, scope, file) { // filter - var open = node.openingElement; + let open = node.openingElement; if (hasRefOrSpread(open.attributes)) return; // init - var isComponent = true; - var props = t.objectExpression([]); - var obj = t.objectExpression([]); - var key = t.nullLiteral(); - var type = open.name; + let isComponent = true; + let props = t.objectExpression([]); + let obj = t.objectExpression([]); + let key = t.nullLiteral(); + let type = open.name; if (t.isJSXIdentifier(type) && react.isCompatTag(type.name)) { type = t.stringLiteral(type.name); @@ -48,14 +48,14 @@ export var visitor = { pushElemProp("ref", t.nullLiteral()); if (node.children.length) { - var children = react.buildChildren(node); + let children = react.buildChildren(node); children = children.length === 1 ? children[0] : t.arrayExpression(children); pushProp(props.properties, t.identifier("children"), children); } // props - for (var i = 0; i < open.attributes.length; i++) { - var attr = open.attributes[i]; + for (let i = 0; i < open.attributes.length; i++) { + let attr = open.attributes[i]; if (isJSXAttributeOfName(attr, "key")) { key = attr.value; } else { diff --git a/packages/babel-core/src/transformation/transformers/other/async-to-generator.js b/packages/babel-core/src/transformation/transformers/other/async-to-generator.js index 844bfd0691..a1ca6f2666 100644 --- a/packages/babel-core/src/transformation/transformers/other/async-to-generator.js +++ b/packages/babel-core/src/transformation/transformers/other/async-to-generator.js @@ -2,12 +2,12 @@ import remapAsyncToGenerator from "../../helpers/remap-async-to-generator"; export { manipulateOptions } from "./bluebird-coroutines"; -export var metadata = { +export let metadata = { optional: true, dependencies: ["es7.asyncFunctions", "es6.classes"] }; -export var visitor = { +export let visitor = { Function(node, parent, scope, file) { if (!node.async || node.generator) return; diff --git a/packages/babel-core/src/transformation/transformers/other/bluebird-coroutines.js b/packages/babel-core/src/transformation/transformers/other/bluebird-coroutines.js index 52cdc1b1e7..1caf3e82cd 100644 --- a/packages/babel-core/src/transformation/transformers/other/bluebird-coroutines.js +++ b/packages/babel-core/src/transformation/transformers/other/bluebird-coroutines.js @@ -5,12 +5,12 @@ export function manipulateOptions(opts) { opts.blacklist.push("regenerator"); } -export var metadata = { +export let metadata = { optional: true, dependencies: ["es7.asyncFunctions", "es6.classes"] }; -export var visitor = { +export let visitor = { Function(node, parent, scope, file) { if (!node.async || node.generator) return; diff --git a/packages/babel-core/src/transformation/transformers/other/react-compat.js b/packages/babel-core/src/transformation/transformers/other/react-compat.js index ed065009eb..0e3be1822b 100644 --- a/packages/babel-core/src/transformation/transformers/other/react-compat.js +++ b/packages/babel-core/src/transformation/transformers/other/react-compat.js @@ -5,12 +5,12 @@ export function manipulateOptions(opts) { opts.blacklist.push("react"); } -export var metadata = { +export let metadata = { optional: true, group: "builtin-advanced" }; -export var visitor = require("../../helpers/build-react-transformer")({ +export let visitor = require("../../helpers/build-react-transformer")({ pre(state) { state.callee = state.tagExpr; }, diff --git a/packages/babel-core/src/transformation/transformers/other/react.js b/packages/babel-core/src/transformation/transformers/other/react.js index 1345f842f2..7a8267bef6 100644 --- a/packages/babel-core/src/transformation/transformers/other/react.js +++ b/packages/babel-core/src/transformation/transformers/other/react.js @@ -1,16 +1,16 @@ import { react } from "babel-types"; import * as t from "babel-types"; -var JSX_ANNOTATION_REGEX = /^\*\s*@jsx\s+([^\s]+)/; +let JSX_ANNOTATION_REGEX = /^\*\s*@jsx\s+([^\s]+)/; -export var metadata = { +export let metadata = { group: "builtin-advanced" }; -export var visitor = require("../../helpers/build-react-transformer")({ +export let visitor = require("../../helpers/build-react-transformer")({ pre(state) { - var tagName = state.tagName; - var args = state.args; + let tagName = state.tagName; + let args = state.args; if (react.isCompatTag(tagName)) { args.push(t.stringLiteral(tagName)); } else { @@ -24,11 +24,11 @@ export var visitor = require("../../helpers/build-react-transformer")({ }); visitor.Program = function (node, parent, scope, file) { - var id = file.opts.jsxPragma; + let id = file.opts.jsxPragma; - for (var i = 0; i < file.ast.comments.length; i++) { - var comment = file.ast.comments[i]; - var matches = JSX_ANNOTATION_REGEX.exec(comment.value); + for (let i = 0; i < file.ast.comments.length; i++) { + let comment = file.ast.comments[i]; + let matches = JSX_ANNOTATION_REGEX.exec(comment.value); if (matches) { id = matches[1]; if (id === "React.DOM") { diff --git a/packages/babel-core/src/transformation/transformers/other/regenerator.js b/packages/babel-core/src/transformation/transformers/other/regenerator.js index 91f91dffb8..4d051b5f00 100644 --- a/packages/babel-core/src/transformation/transformers/other/regenerator.js +++ b/packages/babel-core/src/transformation/transformers/other/regenerator.js @@ -7,11 +7,11 @@ import * as t from "babel-types"; // the version that Regenerator depends on. See for example #1958. const NodePath = regenerator.types.NodePath; -export var metadata = { +export let metadata = { group: "builtin-advanced" }; -export var visitor = { +export let visitor = { Function: { exit(node) { if (node.async || node.generator) { @@ -33,17 +33,17 @@ export var visitor = { // complicated by having to include intermediate objects like blockStatement.body // arrays, in addition to Node objects. function convertNodePath(path) { - var programNode; - var keysAlongPath = []; + let programNode; + let keysAlongPath = []; while (path) { - var pp = path.parentPath; - var parentNode = pp && pp.node; + let pp = path.parentPath; + let parentNode = pp && pp.node; if (parentNode) { keysAlongPath.push(path.key); if (parentNode !== path.container) { - var found = Object.keys(parentNode).some(listKey => { + let found = Object.keys(parentNode).some(listKey => { if (parentNode[listKey] === path.container) { keysAlongPath.push(listKey); return true; @@ -68,7 +68,7 @@ function convertNodePath(path) { throw new Error("Failed to find root Program node"); } - var nodePath = new NodePath(programNode); + let nodePath = new NodePath(programNode); while (keysAlongPath.length > 0) { nodePath = nodePath.get(keysAlongPath.pop()); diff --git a/packages/babel-core/src/transformation/transformers/other/strict.js b/packages/babel-core/src/transformation/transformers/other/strict.js index 06832f7061..0902c92fcb 100644 --- a/packages/babel-core/src/transformation/transformers/other/strict.js +++ b/packages/babel-core/src/transformation/transformers/other/strict.js @@ -1,6 +1,6 @@ import * as t from "babel-types"; -export var metadata = { +export let metadata = { group: "builtin-pre" }; @@ -16,12 +16,12 @@ function isUseStrict(node) { } } -export var visitor = { +export let visitor = { Program: { enter(program) { - var first = program.body[0]; + let first = program.body[0]; - var directive; + let directive; if (t.isExpressionStatement(first) && isUseStrict(first.expression)) { directive = first; } else { diff --git a/packages/babel-core/src/transformation/transformers/spec/function-name.js b/packages/babel-core/src/transformation/transformers/spec/function-name.js index 5b6784c0b2..a4044ce7d2 100644 --- a/packages/babel-core/src/transformation/transformers/spec/function-name.js +++ b/packages/babel-core/src/transformation/transformers/spec/function-name.js @@ -1,12 +1,12 @@ import { bare } from "../../helpers/name-method"; -export var metadata = { +export let metadata = { group: "builtin-basic" }; // visit Property functions first - https://github.com/babel/babel/issues/1860 -export var visitor = { +export let visitor = { "ArrowFunctionExpression|FunctionExpression": { exit() { if (!this.parentPath.isProperty()) { @@ -16,11 +16,11 @@ export var visitor = { }, ObjectExpression() { - var props = this.get("properties"); - for (var prop of (props: Array)) { - var value = prop.get("value"); + let props = this.get("properties"); + for (let prop of (props: Array)) { + let value = prop.get("value"); if (value.isFunction()) { - var newNode = bare(value.node, prop.node, value.scope); + let newNode = bare(value.node, prop.node, value.scope); if (newNode) value.replaceWith(newNode); } } diff --git a/packages/babel-core/src/util.js b/packages/babel-core/src/util.js index 878af6f20c..cc7fe4f303 100644 --- a/packages/babel-core/src/util.js +++ b/packages/babel-core/src/util.js @@ -24,8 +24,8 @@ export { inherits, inspect } from "util"; */ export function canCompile(filename: string, altExts?: Array) { - var exts = altExts || canCompile.EXTENSIONS; - var ext = path.extname(filename); + let exts = altExts || canCompile.EXTENSIONS; + let ext = path.extname(filename); return contains(exts, ext); } @@ -68,7 +68,7 @@ export function regexify(val: any): RegExp { if (startsWith(val, "./") || startsWith(val, "*/")) val = val.slice(2); if (startsWith(val, "**/")) val = val.slice(3); - var regex = minimatch.makeRe(val, { nocase: true }); + let regex = minimatch.makeRe(val, { nocase: true }); return new RegExp(regex.source.slice(1, -1), "i"); } @@ -142,7 +142,7 @@ function _shouldIgnore(pattern, filename) { * A visitor for Babel templates, replaces placeholder references. */ -var templateVisitor = { +let templateVisitor = { /** * 360 NoScope PWNd */ @@ -169,7 +169,7 @@ var templateVisitor = { */ export function template(name: string, nodes?: Array, keepExpression?: boolean): Object { - var ast = exports.templates[name]; + let ast = exports.templates[name]; if (!ast) throw new ReferenceError(`unknown template ${name}`); if (nodes === true) { @@ -185,7 +185,7 @@ export function template(name: string, nodes?: Array, keepExpression?: b if (ast.body.length > 1) return ast.body; - var node = ast.body[0]; + let node = ast.body[0]; if (!keepExpression && t.isExpressionStatement(node)) { return node.expression; @@ -200,7 +200,7 @@ export function template(name: string, nodes?: Array, keepExpression?: b export function parseTemplate(loc: string, code: string): Object { try { - var ast = parse(code, { filename: loc, looseModules: true }).program; + let ast = parse(code, { filename: loc, looseModules: true }).program; ast = traverse.removeProperties(ast); return ast; } catch (err) { @@ -214,19 +214,19 @@ export function parseTemplate(loc: string, code: string): Object { */ function loadTemplates(): Object { - var templates = {}; + let templates = {}; - var templatesLoc = path.join(__dirname, "transformation/templates"); + let templatesLoc = path.join(__dirname, "transformation/templates"); if (!pathExists.sync(templatesLoc)) { throw new ReferenceError(messages.get("missingTemplatesDirectory")); } - for (var name of (fs.readdirSync(templatesLoc): Array)) { + for (let name of (fs.readdirSync(templatesLoc): Array)) { if (name[0] === ".") continue; - var key = path.basename(name, path.extname(name)); - var loc = path.join(templatesLoc, name); - var code = fs.readFileSync(loc, "utf8"); + let key = path.basename(name, path.extname(name)); + let loc = path.join(templatesLoc, name); + let code = fs.readFileSync(loc, "utf8"); templates[key] = parseTemplate(loc, code); } diff --git a/packages/babel-generator/src/buffer.js b/packages/babel-generator/src/buffer.js index 1dc67227d9..8cc1760976 100644 --- a/packages/babel-generator/src/buffer.js +++ b/packages/babel-generator/src/buffer.js @@ -210,12 +210,12 @@ export default class Buffer { */ _removeSpacesAfterLastNewline() { - var lastNewlineIndex = this.buf.lastIndexOf("\n"); + let lastNewlineIndex = this.buf.lastIndexOf("\n"); if (lastNewlineIndex === -1) { return; } - var index = this.buf.length - 1; + let index = this.buf.length - 1; while (index > lastNewlineIndex) { if (this.buf[index] !== " ") { break; @@ -236,7 +236,7 @@ export default class Buffer { push(str, noIndent) { if (!this.format.compact && this._indent && !noIndent && str !== "\n") { // we have an indent level and we aren't pushing a newline - var indent = this.getIndent(); + let indent = this.getIndent(); // replace all newlines with newlines with the indentation str = str.replace(/\n/g, `\n${indent}`); @@ -254,10 +254,10 @@ export default class Buffer { _push(str) { // see startTerminatorless() instance method - var parenPushNewlineState = this.parenPushNewlineState; + let parenPushNewlineState = this.parenPushNewlineState; if (parenPushNewlineState) { - for (var i = 0; i < str.length; i++) { - var cha = str[i]; + for (let i = 0; i < str.length; i++) { + let cha = str[i]; // we can ignore spaces since they wont interupt a terminatorless separator if (cha === " ") continue; @@ -299,8 +299,8 @@ export default class Buffer { isLast(cha) { if (this.format.compact) return false; - var buf = this.buf; - var last = buf[buf.length - 1]; + let buf = this.buf; + let last = buf[buf.length - 1]; if (Array.isArray(cha)) { return includes(cha, last); diff --git a/packages/babel-generator/src/generators/expressions.js b/packages/babel-generator/src/generators/expressions.js index d1ec81fd54..598592c4c6 100644 --- a/packages/babel-generator/src/generators/expressions.js +++ b/packages/babel-generator/src/generators/expressions.js @@ -5,8 +5,8 @@ import * as t from "babel-types"; const SCIENTIFIC_NOTATION = /e/i; export function UnaryExpression(node, print) { - var needsSpace = /[a-z]$/.test(node.operator); - var arg = node.argument; + let needsSpace = /[a-z]$/.test(node.operator); + let arg = node.argument; if (t.isUpdateExpression(arg) || t.isUnaryExpression(arg)) { needsSpace = true; @@ -86,9 +86,9 @@ export function CallExpression(node, print) { this.push("("); - var isPrettyCall = node._prettyCall && !this.format.retainLines && !this.format.compact; + let isPrettyCall = node._prettyCall && !this.format.retainLines && !this.format.compact; - var separator; + let separator; if (isPrettyCall) { separator = ",\n"; this.newline(); @@ -115,15 +115,15 @@ function buildYieldAwait(keyword) { if (node.argument) { this.push(" "); - var terminatorState = this.startTerminatorless(); + let terminatorState = this.startTerminatorless(); print.plain(node.argument); this.endTerminatorless(terminatorState); } }; } -export var YieldExpression = buildYieldAwait("yield"); -export var AwaitExpression = buildYieldAwait("await"); +export let YieldExpression = buildYieldAwait("yield"); +export let AwaitExpression = buildYieldAwait("await"); export function EmptyStatement() { this.semicolon(); @@ -144,7 +144,7 @@ export function AssignmentExpression(node, print) { // todo: add cases where the spaces can be dropped when in compact mode print.plain(node.left); - var spaces = node.operator === "in" || node.operator === "instanceof"; + let spaces = node.operator === "in" || node.operator === "instanceof"; spaces = true; // todo: https://github.com/babel/babel/issues/1835 this.space(spaces); @@ -175,14 +175,14 @@ export { }; export function MemberExpression(node, print) { - var obj = node.object; + let obj = node.object; print.plain(obj); if (!node.computed && t.isMemberExpression(node.property)) { throw new TypeError("Got a MemberExpression for MemberExpression property"); } - var computed = node.computed; + let computed = node.computed; if (t.isLiteral(node.property) && isNumber(node.property.value)) { computed = true; } @@ -193,7 +193,7 @@ export function MemberExpression(node, print) { this.push("]"); } else { if (t.isLiteral(node.object)) { - var val = this._Literal(node.object); + let val = this._Literal(node.object); if (isInteger(+val) && !SCIENTIFIC_NOTATION.test(val) && !this.endsWith(".")) { this.push("."); } diff --git a/packages/babel-generator/src/generators/flow.js b/packages/babel-generator/src/generators/flow.js index 8e0e0cf832..4a42f81d04 100644 --- a/packages/babel-generator/src/generators/flow.js +++ b/packages/babel-generator/src/generators/flow.js @@ -38,7 +38,7 @@ export function DeclareModule(node, print) { } export function DeclareVariable(node, print) { - this.push("declare var "); + this.push("declare let "); print.plain(node.id); print.plain(node.id.typeAnnotation); this.semicolon(); @@ -174,7 +174,7 @@ export { TypeParameterInstantiation as TypeParameterDeclaration }; export function ObjectTypeAnnotation(node, print) { this.push("{"); - var props = node.properties.concat(node.callProperties, node.indexers); + let props = node.properties.concat(node.callProperties, node.indexers); if (props.length) { this.space(); diff --git a/packages/babel-generator/src/generators/jsx.js b/packages/babel-generator/src/generators/jsx.js index b187930a69..a89061e540 100644 --- a/packages/babel-generator/src/generators/jsx.js +++ b/packages/babel-generator/src/generators/jsx.js @@ -39,12 +39,12 @@ export function JSXText(node) { } export function JSXElement(node, print) { - var open = node.openingElement; + let open = node.openingElement; print.plain(open); if (open.selfClosing) return; this.indent(); - for (var child of (node.children: Array)) { + for (let child of (node.children: Array)) { print.plain(child); } this.dedent(); diff --git a/packages/babel-generator/src/generators/methods.js b/packages/babel-generator/src/generators/methods.js index 68f86f67dd..920235f05f 100644 --- a/packages/babel-generator/src/generators/methods.js +++ b/packages/babel-generator/src/generators/methods.js @@ -17,9 +17,9 @@ export function _params(node, print) { } export function _method(node, print) { - var value = node.value; - var kind = node.kind; - var key = node.key; + let value = node.value; + let kind = node.kind; + let key = node.key; if (kind === "method" || kind === "init") { if (value.generator) { diff --git a/packages/babel-generator/src/generators/modules.js b/packages/babel-generator/src/generators/modules.js index 951e6bb24b..0864dd58a6 100644 --- a/packages/babel-generator/src/generators/modules.js +++ b/packages/babel-generator/src/generators/modules.js @@ -51,10 +51,10 @@ export function ExportDefaultDeclaration(node, print) { } function ExportDeclaration(node, print) { - var specifiers = node.specifiers; + let specifiers = node.specifiers; if (node.declaration) { - var declar = node.declaration; + let declar = node.declaration; print.plain(declar); if (t.isStatement(declar) || t.isFunction(declar) || t.isClass(declar)) return; } else { @@ -62,8 +62,8 @@ function ExportDeclaration(node, print) { this.push("type "); } - var first = specifiers[0]; - var hasSpecial = false; + let first = specifiers[0]; + let hasSpecial = false; if (t.isExportDefaultSpecifier(first) || t.isExportNamespaceSpecifier(first)) { hasSpecial = true; print.plain(specifiers.shift()); @@ -98,9 +98,9 @@ export function ImportDeclaration(node, print) { this.push(node.importKind + " "); } - var specfiers = node.specifiers; + let specfiers = node.specifiers; if (specfiers && specfiers.length) { - var first = node.specifiers[0]; + let first = node.specifiers[0]; if (t.isImportDefaultSpecifier(first) || t.isImportNamespaceSpecifier(first)) { print.plain(node.specifiers.shift()); if (node.specifiers.length) { diff --git a/packages/babel-generator/src/generators/statements.js b/packages/babel-generator/src/generators/statements.js index d059ead64d..7a67bfdc63 100644 --- a/packages/babel-generator/src/generators/statements.js +++ b/packages/babel-generator/src/generators/statements.js @@ -55,7 +55,7 @@ export function WhileStatement(node, print) { print.block(node.body); } -var buildForXStatement = function (op) { +let buildForXStatement = function (op) { return function (node, print) { this.keyword("for"); this.push("("); @@ -67,8 +67,8 @@ var buildForXStatement = function (op) { }; }; -export var ForInStatement = buildForXStatement("in"); -export var ForOfStatement = buildForXStatement("of"); +export let ForInStatement = buildForXStatement("in"); +export let ForOfStatement = buildForXStatement("of"); export function DoWhileStatement(node, print) { this.push("do "); @@ -84,10 +84,10 @@ function buildLabelStatement(prefix, key = "label") { return function (node, print) { this.push(prefix); - var label = node[key]; + let label = node[key]; if (label) { this.push(" "); - var terminatorState = this.startTerminatorless(); + let terminatorState = this.startTerminatorless(); print.plain(label); this.endTerminatorless(terminatorState); } @@ -96,10 +96,10 @@ function buildLabelStatement(prefix, key = "label") { }; } -export var ContinueStatement = buildLabelStatement("continue"); -export var ReturnStatement = buildLabelStatement("return", "argument"); -export var BreakStatement = buildLabelStatement("break"); -export var ThrowStatement = buildLabelStatement("throw", "argument"); +export let ContinueStatement = buildLabelStatement("continue"); +export let ReturnStatement = buildLabelStatement("return", "argument"); +export let BreakStatement = buildLabelStatement("break"); +export let ThrowStatement = buildLabelStatement("throw", "argument"); export function LabeledStatement(node, print) { print.plain(node.label); @@ -176,10 +176,10 @@ export function DebuggerStatement() { export function VariableDeclaration(node, print, parent) { this.push(node.kind + " "); - var hasInits = false; + let hasInits = false; // don't add whitespace to loop heads if (!t.isFor(parent)) { - for (var declar of (node.declarations: Array)) { + for (let declar of (node.declarations: Array)) { if (declar.init) { // has an init so let's split it up over multiple lines hasInits = true; @@ -191,15 +191,15 @@ export function VariableDeclaration(node, print, parent) { // use a pretty separator when we aren't in compact mode, have initializers and don't have retainLines on // this will format declarations like: // - // var foo = "bar", bar = "foo"; + // let foo = "bar", bar = "foo"; // // into // - // var foo = "bar", + // let foo = "bar", // bar = "foo"; // - var sep; + let sep; if (!this.format.compact && !this.format.concise && hasInits && !this.format.retainLines) { sep = `,\n${repeating(" ", node.kind.length + 1)}`; } diff --git a/packages/babel-generator/src/generators/template-literals.js b/packages/babel-generator/src/generators/template-literals.js index 1bd78796dd..9d0b4e694c 100644 --- a/packages/babel-generator/src/generators/template-literals.js +++ b/packages/babel-generator/src/generators/template-literals.js @@ -10,10 +10,10 @@ export function TemplateElement(node) { export function TemplateLiteral(node, print) { this.push("`"); - var quasis = node.quasis; - var len = quasis.length; + let quasis = node.quasis; + let len = quasis.length; - for (var i = 0; i < len; i++) { + for (let i = 0; i < len; i++) { print.plain(quasis[i]); if (i + 1 < len) { diff --git a/packages/babel-generator/src/generators/types.js b/packages/babel-generator/src/generators/types.js index dc892ab8f0..d1fcfac361 100644 --- a/packages/babel-generator/src/generators/types.js +++ b/packages/babel-generator/src/generators/types.js @@ -14,7 +14,7 @@ export function RestElement(node, print) { export { RestElement as SpreadElement, RestElement as SpreadProperty }; export function ObjectExpression(node, print) { - var props = node.properties; + let props = node.properties; this.push("{"); print.printInnerComments(); @@ -65,14 +65,14 @@ export function Property(node, print) { } export function ArrayExpression(node, print) { - var elems = node.elements; - var len = elems.length; + let elems = node.elements; + let len = elems.length; this.push("["); print.printInnerComments(); - for (var i = 0; i < elems.length; i++) { - var elem = elems[i]; + for (let i = 0; i < elems.length; i++) { + let elem = elems[i]; if (elem) { if (i > 0) this.space(); print.plain(elem); diff --git a/packages/babel-generator/src/index.js b/packages/babel-generator/src/index.js index 6a7b60e748..b560b7e518 100644 --- a/packages/babel-generator/src/index.js +++ b/packages/babel-generator/src/index.js @@ -40,13 +40,13 @@ class CodeGenerator { */ static normalizeOptions(code, opts, tokens) { - var style = " "; + let style = " "; if (code) { - var indent = detectIndent(code).indent; + let indent = detectIndent(code).indent; if (indent && indent !== " ") style = indent; } - var format = { + let format = { shouldPrintComment: opts.shouldPrintComment, retainLines: opts.retainLines, comments: opts.comments == null || opts.comments, @@ -78,18 +78,18 @@ class CodeGenerator { * Determine if input code uses more single or double quotes. */ static findCommonStringDelimiter(code, tokens) { - var occurences = { + let occurences = { single: 0, double: 0 }; - var checked = 0; + let checked = 0; - for (var i = 0; i < tokens.length; i++) { - var token = tokens[i]; + for (let i = 0; i < tokens.length; i++) { + let token = tokens[i]; if (token.type.label !== "string") continue; - var raw = code.slice(token.start, token.end); + let raw = code.slice(token.start, token.end); if (raw[0] === "'") { occurences.single++; } else { @@ -131,13 +131,13 @@ class CodeGenerator { */ generate() { - var ast = this.ast; + let ast = this.ast; this.print(ast); if (ast.comments) { - var comments = []; - for (var comment of (ast.comments: Array)) { + let comments = []; + for (let comment of (ast.comments: Array)) { if (!comment._displayed) comments.push(comment); } this._printComments(comments); @@ -171,7 +171,7 @@ class CodeGenerator { return; } - var lines = 0; + let lines = 0; if (node.start != null && !node._ignoreUserWhitespace) { // user node @@ -185,7 +185,7 @@ class CodeGenerator { if (!leading) lines++; // always include at least a single line after if (opts.addNewlines) lines += opts.addNewlines(leading, node) || 0; - var needs = n.needsWhitespaceAfter; + let needs = n.needsWhitespaceAfter; if (leading) needs = n.needsWhitespaceBefore; if (needs(node, parent)) lines++; @@ -203,7 +203,7 @@ class CodeGenerator { node._compact = true; } - var oldConcise = this.format.concise; + let oldConcise = this.format.concise; if (node._compact) { this.format.concise = true; } @@ -212,7 +212,7 @@ class CodeGenerator { throw new ReferenceError(`unknown node of type ${JSON.stringify(node.type)} with constructor ${JSON.stringify(node && node.constructor.name)}`); } - var needsParens = n.needsParens(node, parent); + let needsParens = n.needsParens(node, parent); if (needsParens) this.push("("); this.printLeadingComments(node, parent); @@ -241,11 +241,11 @@ class CodeGenerator { printJoin(print, nodes, opts = {}) { if (!nodes || !nodes.length) return; - var len = nodes.length; + let len = nodes.length; if (opts.indent) this.indent(); - var printOpts = { + let printOpts = { statement: opts.statement, addNewlines: opts.addNewlines, after: () => { @@ -259,8 +259,8 @@ class CodeGenerator { } }; - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; + for (let i = 0; i < nodes.length; i++) { + let node = nodes[i]; print.plain(node, printOpts); } @@ -268,7 +268,7 @@ class CodeGenerator { } printAndIndentOnComments(print, node) { - var indent = !!node.leadingComments; + let indent = !!node.leadingComments; if (indent) this.indent(); print.plain(node); if (indent) this.dedent(); @@ -284,7 +284,7 @@ class CodeGenerator { } generateComment(comment) { - var val = comment.value; + let val = comment.value; if (comment.type === "CommentLine") { val = `//${val}`; } else { @@ -306,8 +306,8 @@ class CodeGenerator { return []; } - var comments = []; - var nodes = [node]; + let comments = []; + let nodes = [node]; if (t.isExpressionStatement(node)) { nodes.push(node.argument); @@ -339,7 +339,7 @@ class CodeGenerator { _printComments(comments) { if (!comments || !comments.length) return; - for (var comment of (comments: Array)) { + for (let comment of (comments: Array)) { if (!this.shouldPrintComment(comment)) continue; if (comment._displayed) continue; comment._displayed = true; @@ -349,8 +349,8 @@ class CodeGenerator { // whitespace before this.newline(this.whitespace.getNewlinesBefore(comment)); - var column = this.position.column; - var val = this.generateComment(comment); + let column = this.position.column; + let val = this.generateComment(comment); if (column && !this.isLast(["\n", " ", "[", "{"])) { this._push(" "); @@ -359,13 +359,13 @@ class CodeGenerator { // if (comment.type === "CommentBlock" && this.format.indent.adjustMultilineComment) { - var offset = comment.loc && comment.loc.start.column; + let offset = comment.loc && comment.loc.start.column; if (offset) { - var newlineRegex = new RegExp("\\n\\s{1," + offset + "}", "g"); + let newlineRegex = new RegExp("\\n\\s{1," + offset + "}", "g"); val = val.replace(newlineRegex, "\n"); } - var indent = Math.max(this.indentSize(), column); + let indent = Math.max(this.indentSize(), column); val = val.replace(/\n/g, `\n${repeating(" ", indent)}`); } @@ -399,7 +399,7 @@ each(CodeGenerator.generators, function (generator) { }); module.exports = function (ast, opts, code) { - var gen = new CodeGenerator(ast, opts, code); + let gen = new CodeGenerator(ast, opts, code); return gen.generate(); }; diff --git a/packages/babel-generator/src/node/index.js b/packages/babel-generator/src/node/index.js index ef60e3a2c8..b6fecc1a9f 100644 --- a/packages/babel-generator/src/node/index.js +++ b/packages/babel-generator/src/node/index.js @@ -14,16 +14,16 @@ import * as t from "babel-types"; * }, node, parent); */ -var find = function (obj, node, parent) { +let find = function (obj, node, parent) { if (!obj) return; - var result; + let result; - var types = Object.keys(obj); - for (var i = 0; i < types.length; i++) { - var type = types[i]; + let types = Object.keys(obj); + for (let i = 0; i < types.length; i++) { + let type = types[i]; if (t.is(type, node)) { - var fn = obj[type]; + let fn = obj[type]; result = fn(node, parent); if (result != null) break; } @@ -61,12 +61,12 @@ export default class Node { node = node.expression; } - var linesInfo = find(whitespace.nodes, node, parent); + let linesInfo = find(whitespace.nodes, node, parent); if (!linesInfo) { - var items = find(whitespace.list, node, parent); + let items = find(whitespace.list, node, parent); if (items) { - for (var i = 0; i < items.length; i++) { + for (let i = 0; i < items.length; i++) { linesInfo = Node.needsWhitespace(items[i], node, type); if (linesInfo) break; } @@ -102,7 +102,7 @@ export default class Node { if (t.isNewExpression(parent) && parent.callee === node) { if (t.isCallExpression(node)) return true; - var hasCall = some(node, function (val) { + let hasCall = some(node, function (val) { return t.isCallExpression(val); }); if (hasCall) return true; @@ -119,12 +119,12 @@ export default class Node { each(Node, function (fn, key) { Node.prototype[key] = function () { // Avoid leaking arguments to prevent deoptimization - var args = new Array(arguments.length + 2); + let args = new Array(arguments.length + 2); args[0] = this.node; args[1] = this.parent; - for (var i = 0; i < args.length; i++) { + for (let i = 0; i < args.length; i++) { args[i + 2] = arguments[i]; } diff --git a/packages/babel-generator/src/node/parentheses.js b/packages/babel-generator/src/node/parentheses.js index cb7642c7a1..11c8eb3502 100644 --- a/packages/babel-generator/src/node/parentheses.js +++ b/packages/babel-generator/src/node/parentheses.js @@ -62,11 +62,11 @@ export function Binary(node, parent) { } if (t.isBinary(parent)) { - var parentOp = parent.operator; - var parentPos = PRECEDENCE[parentOp]; + let parentOp = parent.operator; + let parentPos = PRECEDENCE[parentOp]; - var nodeOp = node.operator; - var nodePos = PRECEDENCE[nodeOp]; + let nodeOp = node.operator; + let nodePos = PRECEDENCE[nodeOp]; if (parentPos > nodePos) { return true; @@ -80,7 +80,7 @@ export function Binary(node, parent) { export function BinaryExpression(node, parent) { if (node.operator === "in") { - // var i = (1 in []); + // let i = (1 in []); if (t.isVariableDeclarator(parent)) { return true; } diff --git a/packages/babel-generator/src/node/printer.js b/packages/babel-generator/src/node/printer.js index ce580cae1f..5ee0f4a9a7 100644 --- a/packages/babel-generator/src/node/printer.js +++ b/packages/babel-generator/src/node/printer.js @@ -14,7 +14,7 @@ export default class NodePrinter { printInnerComments() { if (!this.parent.innerComments) return; - var gen = this.generator; + let gen = this.generator; gen.indent(); gen._printComments(this.parent.innerComments); gen.dedent(); diff --git a/packages/babel-generator/src/node/whitespace.js b/packages/babel-generator/src/node/whitespace.js index 6511c35949..2623e1a273 100644 --- a/packages/babel-generator/src/node/whitespace.js +++ b/packages/babel-generator/src/node/whitespace.js @@ -64,7 +64,7 @@ exports.nodes = { */ AssignmentExpression(node) { - var state = crawl(node.right); + let state = crawl(node.right); if ((state.hasCall && state.hasHelper) || state.hasFunction) { return { before: state.hasFunction, @@ -125,12 +125,12 @@ exports.nodes = { */ VariableDeclaration(node) { - for (var i = 0; i < node.declarations.length; i++) { - var declar = node.declarations[i]; + for (let i = 0; i < node.declarations.length; i++) { + let declar = node.declarations[i]; - var enabled = isHelper(declar.id) && !isType(declar.init); + let enabled = isHelper(declar.id) && !isType(declar.init); if (!enabled) { - var state = crawl(declar.init); + let state = crawl(declar.init); enabled = (isHelper(declar.init) && state.hasCall) || state.hasFunction; } diff --git a/packages/babel-generator/src/position.js b/packages/babel-generator/src/position.js index 9dc707b5d2..a6787fd3b2 100644 --- a/packages/babel-generator/src/position.js +++ b/packages/babel-generator/src/position.js @@ -13,7 +13,7 @@ export default class Position { */ push(str) { - for (var i = 0; i < str.length; i++) { + for (let i = 0; i < str.length; i++) { if (str[i] === "\n") { this.line++; this.column = 0; @@ -28,7 +28,7 @@ export default class Position { */ unshift(str) { - for (var i = 0; i < str.length; i++) { + for (let i = 0; i < str.length; i++) { if (str[i] === "\n") { this.line--; } else { diff --git a/packages/babel-generator/src/source-map.js b/packages/babel-generator/src/source-map.js index 51cb5665a7..f1b3ee3727 100644 --- a/packages/babel-generator/src/source-map.js +++ b/packages/babel-generator/src/source-map.js @@ -27,7 +27,7 @@ export default class SourceMap { */ get() { - var map = this.map; + let map = this.map; if (map) { return map.toJSON(); } else { @@ -40,22 +40,22 @@ export default class SourceMap { */ mark(node, type) { - var loc = node.loc; + let loc = node.loc; if (!loc) return; // no location info - var map = this.map; + let map = this.map; if (!map) return; // no source map if (t.isProgram(node) || t.isFile(node)) return; // illegal mapping nodes - var position = this.position; + let position = this.position; - var generated = { + let generated = { line: position.line, column: position.column }; - var original = loc[type]; + let original = loc[type]; map.addMapping({ source: this.opts.sourceFileName, diff --git a/packages/babel-generator/src/whitespace.js b/packages/babel-generator/src/whitespace.js index 24ff017962..05816b1b73 100644 --- a/packages/babel-generator/src/whitespace.js +++ b/packages/babel-generator/src/whitespace.js @@ -38,14 +38,14 @@ export default class Whitespace { */ getNewlinesBefore(node) { - var startToken; - var endToken; - var tokens = this.tokens; + let startToken; + let endToken; + let tokens = this.tokens; - for (var j = 0; j < tokens.length; j++) { + for (let j = 0; j < tokens.length; j++) { // optimize for forward traversal by shifting for loop index - var i = getLookupIndex(j, this._lastFoundIndex, this.tokens.length); - var token = tokens[i]; + let i = getLookupIndex(j, this._lastFoundIndex, this.tokens.length); + let token = tokens[i]; // this is the token this node starts with if (node.start === token.start) { @@ -65,14 +65,14 @@ export default class Whitespace { */ getNewlinesAfter(node) { - var startToken; - var endToken; - var tokens = this.tokens; + let startToken; + let endToken; + let tokens = this.tokens; - for (var j = 0; j < tokens.length; j++) { + for (let j = 0; j < tokens.length; j++) { // optimize for forward traversal by shifting for loop index - var i = getLookupIndex(j, this._lastFoundIndex, this.tokens.length); - var token = tokens[i]; + let i = getLookupIndex(j, this._lastFoundIndex, this.tokens.length); + let token = tokens[i]; // this is the token this node ends with if (node.end === token.end) { @@ -88,7 +88,7 @@ export default class Whitespace { if (endToken && endToken.type.label === "eof") { return 1; } else { - var lines = this.getNewlinesBetween(startToken, endToken); + let lines = this.getNewlinesBetween(startToken, endToken); if (node.type === "CommentLine" && !lines) { // line comment return 1; @@ -105,11 +105,11 @@ export default class Whitespace { getNewlinesBetween(startToken, endToken) { if (!endToken || !endToken.loc) return 0; - var start = startToken ? startToken.loc.end.line : 1; - var end = endToken.loc.start.line; - var lines = 0; + let start = startToken ? startToken.loc.end.line : 1; + let end = endToken.loc.start.line; + let lines = 0; - for (var line = start; line < end; line++) { + for (let line = start; line < end; line++) { if (typeof this.used[line] === "undefined") { this.used[line] = true; lines++;