diff --git a/lib/6to5/detection/visitors.js b/lib/6to5/detection/visitors.js index 696f25607f..affa8b5a8f 100644 --- a/lib/6to5/detection/visitors.js +++ b/lib/6to5/detection/visitors.js @@ -1,5 +1,5 @@ var t = require("../types"); -var _ = require("lodash"); +var includes = require("lodash/collection/includes"); exports.AssignmentExpression = function (node, parent, detected) { if (node.operator === "**=") { @@ -38,7 +38,7 @@ exports.Property = function (node, parent, detected) { }; exports.AssignmentPattern = function (node, parent, detected) { - if (t.isFunction(parent) && _.contains(parent.params, node)) { + if (t.isFunction(parent) && includes(parent.params, node)) { detected("es6.parameters.default"); } }; diff --git a/lib/6to5/generation/buffer.js b/lib/6to5/generation/buffer.js index 6d731a17f0..4a99ab4894 100644 --- a/lib/6to5/generation/buffer.js +++ b/lib/6to5/generation/buffer.js @@ -3,7 +3,7 @@ module.exports = Buffer; var isBoolean = require("lodash/lang/isBoolean"); -var contains = require("lodash/collection/contains"); +var includes = require("lodash/collection/includes"); var isNumber = require("lodash/lang/isNumber"); var util = require("../util"); @@ -159,7 +159,7 @@ Buffer.prototype.isLast = function (cha, trimRight) { var last = buf[buf.length - 1]; if (Array.isArray(cha)) { - return contains(cha, last); + return includes(cha, last); } else { return cha === last; } diff --git a/lib/6to5/transformation/file.js b/lib/6to5/transformation/file.js index 87eb3f7ca1..3c1cec6ff7 100644 --- a/lib/6to5/transformation/file.js +++ b/lib/6to5/transformation/file.js @@ -8,7 +8,7 @@ var isFunction = require("lodash/lang/isFunction"); var transform = require("./index"); var generate = require("../generation"); var defaults = require("lodash/object/defaults"); -var contains = require("lodash/collection/contains"); +var includes = require("lodash/collection/includes"); var clone = require("../helpers/clone"); var parse = require("../helpers/parse"); var Scope = require("../traversal/scope"); @@ -135,7 +135,7 @@ File.prototype.normalizeOptions = function (opts) { opts.optional = util.arrayify(opts.optional); opts.loose = util.arrayify(opts.loose); - if (contains(opts.loose, "all")) { + if (includes(opts.loose, "all")) { opts.loose = Object.keys(transform.transformers); } @@ -179,7 +179,7 @@ File.prototype.normalizeOptions = function (opts) { }; File.prototype.isLoose = function (key) { - return contains(this.opts.loose, key); + return includes(this.opts.loose, key); }; File.prototype.buildTransformers = function () { @@ -302,7 +302,7 @@ File.prototype.isConsequenceExpressionStatement = function (node) { }; File.prototype.addHelper = function (name) { - if (!contains(File.helpers, name)) { + if (!includes(File.helpers, name)) { throw new ReferenceError("Unknown helper " + name); } diff --git a/lib/6to5/transformation/modules/amd.js b/lib/6to5/transformation/modules/amd.js index 3e85f202d6..dc9c8162a9 100644 --- a/lib/6to5/transformation/modules/amd.js +++ b/lib/6to5/transformation/modules/amd.js @@ -6,7 +6,7 @@ var DefaultFormatter = require("./_default"); var CommonFormatter = require("./common"); var util = require("../../util"); var t = require("../../types"); -var contains = require("lodash/collection/contains"); +var includes = require("lodash/collection/includes"); var values = require("lodash/object/values"); function AMDFormatter() { @@ -81,7 +81,7 @@ AMDFormatter.prototype.importSpecifier = function (specifier, node, nodes) { var key = t.getSpecifierName(specifier); var ref = this.getExternalReference(node); - if (contains(this.file.dynamicImported, node)) { + if (includes(this.file.dynamicImported, node)) { // Prevent unnecessary renaming of dynamic imports. this.ids[node.source.value] = ref; } else if (t.isImportBatchSpecifier(specifier)) { diff --git a/lib/6to5/transformation/modules/common.js b/lib/6to5/transformation/modules/common.js index ed1a3d3262..73d2aeac31 100644 --- a/lib/6to5/transformation/modules/common.js +++ b/lib/6to5/transformation/modules/common.js @@ -3,7 +3,7 @@ module.exports = CommonJSFormatter; var DefaultFormatter = require("./_default"); -var contains = require("lodash/collection/contains"); +var includes = require("lodash/collection/includes"); var util = require("../../util"); var t = require("../../types"); @@ -31,7 +31,7 @@ CommonJSFormatter.prototype.importSpecifier = function (specifier, node, nodes) // import foo from "foo"; if (t.isSpecifierDefault(specifier)) { - if (!contains(this.file.dynamicImported, node)) { + if (!includes(this.file.dynamicImported, node)) { if (this.noInteropRequireImport) { ref = t.memberExpression(ref, t.identifier("default")); } else { diff --git a/lib/6to5/transformation/transformer-pass.js b/lib/6to5/transformation/transformer-pass.js index 9ad470ecf0..bcfb8c6a20 100644 --- a/lib/6to5/transformation/transformer-pass.js +++ b/lib/6to5/transformation/transformer-pass.js @@ -1,6 +1,6 @@ module.exports = TransformerPass; -var contains = require("lodash/collection/contains"); +var includes = require("lodash/collection/includes"); /** * This class is responsible for traversing over the provided `File`s @@ -25,14 +25,14 @@ TransformerPass.prototype.canRun = function () { // blacklist var blacklist = opts.blacklist; - if (blacklist.length && contains(blacklist, key)) return false; + if (blacklist.length && includes(blacklist, key)) return false; // whitelist var whitelist = opts.whitelist; - if (whitelist.length) return contains(whitelist, key); + if (whitelist.length) return includes(whitelist, key); // optional - if (transformer.optional && !contains(opts.optional, key)) return false; + if (transformer.optional && !includes(opts.optional, key)) return false; // experimental if (transformer.experimental && !opts.experimental) return false; diff --git a/lib/6to5/transformation/transformers/es6/spread.js b/lib/6to5/transformation/transformers/es6/spread.js index bddb570f75..5e48723104 100644 --- a/lib/6to5/transformation/transformers/es6/spread.js +++ b/lib/6to5/transformation/transformers/es6/spread.js @@ -1,6 +1,6 @@ "use strict"; -var contains = require("lodash/collection/contains"); +var includes = require("lodash/collection/includes"); var t = require("../../../types"); exports.check = t.isSpreadElement; @@ -103,7 +103,7 @@ exports.NewExpression = function (node, parent, scope, file) { var args = node.arguments; if (!hasSpread(args)) return; - var nativeType = t.isIdentifier(node.callee) && contains(t.NATIVE_TYPE_NAMES, node.callee.name); + var nativeType = t.isIdentifier(node.callee) && includes(t.NATIVE_TYPE_NAMES, node.callee.name); var nodes = build(args, file); diff --git a/lib/6to5/transformation/transformers/es6/tail-call.js b/lib/6to5/transformation/transformers/es6/tail-call.js index 3fa4de1efa..b40757edf9 100644 --- a/lib/6to5/transformation/transformers/es6/tail-call.js +++ b/lib/6to5/transformation/transformers/es6/tail-call.js @@ -2,7 +2,9 @@ var util = require("../../../util"); var t = require("../../../types"); -var _ = require("lodash"); +var map = require("lodash/collection/map"); +var flatten = require("lodash/array/flatten"); +var reduceRight = require("lodash/collection/reduceRight"); function returnBlock(expr) { return t.blockStatement([t.returnStatement(expr)]); @@ -83,16 +85,13 @@ TailCallTransformer.prototype.run = function () { var body = t.ensureBlock(node).body; if (this.vars.length > 0) { - body.unshift(t.expressionStatement( - _(this.vars) - .map(function (decl) { - return decl.declarations; - }) - .flatten() - .reduceRight(function (expr, decl) { - return t.assignmentExpression("=", decl.id, expr); - }, t.identifier("undefined")) - )); + var declarations = flatten(map(this.vars, function (decl) { + return decl.declarations; + }, this)); + var statement = reduceRight(declarations, function (expr, decl) { + return t.assignmentExpression("=", decl.id, expr); + }, t.identifier("undefined")); + body.unshift(t.expressionStatement(statement)); } var paramDecls = this.paramDecls; @@ -332,7 +331,7 @@ var thirdPass = { if (!state.needsThis && expr.left === state.getThisId()) { this.remove(); } else if (!state.needsArguments && expr.left === state.getArgumentsId() && t.isArrayExpression(expr.right)) { - return _.map(expr.right.elements, function (elem) { + return map(expr.right.elements, function (elem) { return t.expressionStatement(elem); }); } diff --git a/lib/6to5/transformation/transformers/other/self-contained.js b/lib/6to5/transformation/transformers/other/self-contained.js index ace9c2bae5..7be61ec9e9 100644 --- a/lib/6to5/transformation/transformers/other/self-contained.js +++ b/lib/6to5/transformation/transformers/other/self-contained.js @@ -4,7 +4,7 @@ var util = require("../../../util"); var core = require("core-js/library"); var t = require("../../../types"); var has = require("lodash/object/has"); -var contains = require("lodash/collection/contains"); +var includes = require("lodash/collection/includes"); var coreHas = function (node) { return node.name !== "_" && has(core, node.name); @@ -34,7 +34,7 @@ var astVisitor = { this.skip(); return t.prependToMemberExpression(node, file.get("coreIdentifier")); } - } else if (t.isReferencedIdentifier(node, parent) && !t.isMemberExpression(parent) && contains(ALIASABLE_CONSTRUCTORS, node.name) && !scope.getBindingIdentifier(node.name)) { + } else if (t.isReferencedIdentifier(node, parent) && !t.isMemberExpression(parent) && includes(ALIASABLE_CONSTRUCTORS, node.name) && !scope.getBindingIdentifier(node.name)) { // Symbol() -> _core.Symbol(); new Promise -> new _core.Promise return t.memberExpression(file.get("coreIdentifier"), node); } else if (t.isCallExpression(node)) { diff --git a/lib/6to5/traversal/index.js b/lib/6to5/traversal/index.js index 307868fa4e..a36e41e3e9 100644 --- a/lib/6to5/traversal/index.js +++ b/lib/6to5/traversal/index.js @@ -3,7 +3,7 @@ module.exports = traverse; var TraversalContext = require("./context"); -var contains = require("lodash/collection/contains"); +var includes = require("lodash/collection/includes"); var t = require("../types"); function traverse(parent, opts, scope, state) { @@ -102,7 +102,7 @@ function hasBlacklistedType(node, parent, scope, state) { traverse.hasType = function (tree, scope, type, blacklistTypes) { // the node we're searching in is blacklisted - if (contains(blacklistTypes, tree.type)) return false; + if (includes(blacklistTypes, tree.type)) return false; // the type we're looking for is the same as the passed node if (tree.type === type) return true; diff --git a/lib/6to5/traversal/path.js b/lib/6to5/traversal/path.js index 24a009d37c..f80fda064e 100644 --- a/lib/6to5/traversal/path.js +++ b/lib/6to5/traversal/path.js @@ -5,7 +5,7 @@ module.exports = TraversalPath; /* jshint maxparams:7 */ var traverse = require("./index"); -var contains = require("lodash/collection/contains"); +var includes = require("lodash/collection/includes"); var Scope = require("./scope"); var t = require("../types"); @@ -96,7 +96,7 @@ TraversalPath.prototype.replaceNode = function (replacement) { // we're replacing a statement or block node with an array of statements so we better // ensure that it's a block if (isArray) { - if (contains(t.STATEMENT_OR_BLOCK_KEYS, this.key) && !t.isBlockStatement(this.obj)) { + if (includes(t.STATEMENT_OR_BLOCK_KEYS, this.key) && !t.isBlockStatement(this.obj)) { t.ensureBlock(this.obj, this.key); } diff --git a/lib/6to5/traversal/scope.js b/lib/6to5/traversal/scope.js index 1b3ae55158..15a3100513 100644 --- a/lib/6to5/traversal/scope.js +++ b/lib/6to5/traversal/scope.js @@ -2,7 +2,7 @@ module.exports = Scope; -var contains = require("lodash/collection/contains"); +var includes = require("lodash/collection/includes"); var traverse = require("./index"); var defaults = require("lodash/object/defaults"); var globals = require("globals"); @@ -317,7 +317,6 @@ var blockVariableVisitor = { }; Scope.prototype.crawl = function () { - var parent = this.parent; var block = this.block; var i; @@ -520,7 +519,7 @@ Scope.prototype.hasBinding = function (name) { if (!name) return false; if (this.hasOwnBinding(name)) return true; if (this.parentHasBinding(name)) return true; - if (contains(Scope.defaultDeclarations, name)) return true; + if (includes(Scope.defaultDeclarations, name)) return true; return false; }; diff --git a/lib/6to5/types/index.js b/lib/6to5/types/index.js index 63a59db517..6e21d7c50f 100644 --- a/lib/6to5/types/index.js +++ b/lib/6to5/types/index.js @@ -1,7 +1,6 @@ "use strict"; var toFastProperties = require("../helpers/to-fast-properties"); -var defaults = require("lodash/object/defaults"); var isString = require("lodash/lang/isString"); var compact = require("lodash/array/compact"); var esutils = require("esutils");