diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-05-28 00:38:50 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-05-28 00:40:43 +0200 |
commit | 7fff4499fd915bcea3fa93b1aa8b35f4fe7a6027 (patch) | |
tree | 6de9a1aebd150a23b7f8c273ec657a5d0a18fe3e /node_modules/babel-plugin-transform-es2015-spread | |
parent | 963b7a41feb29cc4be090a2446bdfe0c1f1bcd81 (diff) | |
download | wallet-core-7fff4499fd915bcea3fa93b1aa8b35f4fe7a6027.tar.xz |
add linting (and some initial fixes)
Diffstat (limited to 'node_modules/babel-plugin-transform-es2015-spread')
4 files changed, 227 insertions, 0 deletions
diff --git a/node_modules/babel-plugin-transform-es2015-spread/.npmignore b/node_modules/babel-plugin-transform-es2015-spread/.npmignore new file mode 100644 index 000000000..31852902b --- /dev/null +++ b/node_modules/babel-plugin-transform-es2015-spread/.npmignore @@ -0,0 +1,4 @@ +node_modules +*.log +src +test diff --git a/node_modules/babel-plugin-transform-es2015-spread/README.md b/node_modules/babel-plugin-transform-es2015-spread/README.md new file mode 100644 index 000000000..9d0e16629 --- /dev/null +++ b/node_modules/babel-plugin-transform-es2015-spread/README.md @@ -0,0 +1,49 @@ +# babel-plugin-transform-es2015-spread + +> Compile ES2015 spread to ES5 + +## Installation + +```sh +npm install --save-dev babel-plugin-transform-es2015-spread +``` + +## Usage + +### Via `.babelrc` (Recommended) + +**.babelrc** + +```js +// without options +{ + "plugins": ["transform-es2015-spread"] +} + +// with options +{ + "plugins": [ + ["transform-es2015-spread", { + "loose": true + }] + ] +} +``` + +### Via CLI + +```sh +babel --plugins transform-es2015-spread script.js +``` + +### Via Node API + +```javascript +require("babel-core").transform("code", { + plugins: ["transform-es2015-spread"] +}); +``` + +## Options + +* `loose` - All iterables are assumed to be arrays. diff --git a/node_modules/babel-plugin-transform-es2015-spread/lib/index.js b/node_modules/babel-plugin-transform-es2015-spread/lib/index.js new file mode 100644 index 000000000..664967771 --- /dev/null +++ b/node_modules/babel-plugin-transform-es2015-spread/lib/index.js @@ -0,0 +1,157 @@ +"use strict"; + +exports.__esModule = true; + +var _getIterator2 = require("babel-runtime/core-js/get-iterator"); + +var _getIterator3 = _interopRequireDefault(_getIterator2); + +exports.default = function (_ref) { + var t = _ref.types; + + function getSpreadLiteral(spread, scope, state) { + if (state.opts.loose && !t.isIdentifier(spread.argument, { name: "arguments" })) { + return spread.argument; + } else { + return scope.toArray(spread.argument, true); + } + } + + function hasSpread(nodes) { + for (var i = 0; i < nodes.length; i++) { + if (t.isSpreadElement(nodes[i])) { + return true; + } + } + return false; + } + + function build(props, scope, state) { + var nodes = []; + + var _props = []; + + function push() { + if (!_props.length) return; + nodes.push(t.arrayExpression(_props)); + _props = []; + } + + for (var _iterator = props, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) { + var _ref2; + + if (_isArray) { + if (_i >= _iterator.length) break; + _ref2 = _iterator[_i++]; + } else { + _i = _iterator.next(); + if (_i.done) break; + _ref2 = _i.value; + } + + var prop = _ref2; + + if (t.isSpreadElement(prop)) { + push(); + nodes.push(getSpreadLiteral(prop, scope, state)); + } else { + _props.push(prop); + } + } + + push(); + + return nodes; + } + + return { + visitor: { + ArrayExpression: function ArrayExpression(path, state) { + var node = path.node, + scope = path.scope; + + var elements = node.elements; + if (!hasSpread(elements)) return; + + var nodes = build(elements, scope, state); + var first = nodes.shift(); + + if (!t.isArrayExpression(first)) { + nodes.unshift(first); + first = t.arrayExpression([]); + } + + path.replaceWith(t.callExpression(t.memberExpression(first, t.identifier("concat")), nodes)); + }, + CallExpression: function CallExpression(path, state) { + var node = path.node, + scope = path.scope; + + + var args = node.arguments; + if (!hasSpread(args)) return; + + var calleePath = path.get("callee"); + if (calleePath.isSuper()) return; + + var contextLiteral = t.identifier("undefined"); + + node.arguments = []; + + var nodes = void 0; + if (args.length === 1 && args[0].argument.name === "arguments") { + nodes = [args[0].argument]; + } else { + nodes = build(args, scope, state); + } + + var first = nodes.shift(); + if (nodes.length) { + node.arguments.push(t.callExpression(t.memberExpression(first, t.identifier("concat")), nodes)); + } else { + node.arguments.push(first); + } + + var callee = node.callee; + + if (calleePath.isMemberExpression()) { + var temp = scope.maybeGenerateMemoised(callee.object); + if (temp) { + callee.object = t.assignmentExpression("=", temp, callee.object); + contextLiteral = temp; + } else { + contextLiteral = callee.object; + } + t.appendToMemberExpression(callee, t.identifier("apply")); + } else { + node.callee = t.memberExpression(node.callee, t.identifier("apply")); + } + + if (t.isSuper(contextLiteral)) { + contextLiteral = t.thisExpression(); + } + + node.arguments.unshift(contextLiteral); + }, + NewExpression: function NewExpression(path, state) { + var node = path.node, + scope = path.scope; + + var args = node.arguments; + if (!hasSpread(args)) return; + + var nodes = build(args, scope, state); + + var context = t.arrayExpression([t.nullLiteral()]); + + args = t.callExpression(t.memberExpression(context, t.identifier("concat")), nodes); + + path.replaceWith(t.newExpression(t.callExpression(t.memberExpression(t.memberExpression(t.memberExpression(t.identifier("Function"), t.identifier("prototype")), t.identifier("bind")), t.identifier("apply")), [node.callee, args]), [])); + } + } + }; +}; + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +module.exports = exports["default"];
\ No newline at end of file diff --git a/node_modules/babel-plugin-transform-es2015-spread/package.json b/node_modules/babel-plugin-transform-es2015-spread/package.json new file mode 100644 index 000000000..f852ac318 --- /dev/null +++ b/node_modules/babel-plugin-transform-es2015-spread/package.json @@ -0,0 +1,17 @@ +{ + "name": "babel-plugin-transform-es2015-spread", + "version": "6.22.0", + "description": "Compile ES2015 spread to ES5", + "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-spread", + "license": "MIT", + "main": "lib/index.js", + "keywords": [ + "babel-plugin" + ], + "dependencies": { + "babel-runtime": "^6.22.0" + }, + "devDependencies": { + "babel-helper-plugin-test-runner": "^6.22.0" + } +} |