aboutsummaryrefslogtreecommitdiff
path: root/node_modules/babel-plugin-transform-es2015-spread
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-05-28 00:38:50 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-05-28 00:40:43 +0200
commit7fff4499fd915bcea3fa93b1aa8b35f4fe7a6027 (patch)
tree6de9a1aebd150a23b7f8c273ec657a5d0a18fe3e /node_modules/babel-plugin-transform-es2015-spread
parent963b7a41feb29cc4be090a2446bdfe0c1f1bcd81 (diff)
downloadwallet-core-7fff4499fd915bcea3fa93b1aa8b35f4fe7a6027.tar.xz
add linting (and some initial fixes)
Diffstat (limited to 'node_modules/babel-plugin-transform-es2015-spread')
-rw-r--r--node_modules/babel-plugin-transform-es2015-spread/.npmignore4
-rw-r--r--node_modules/babel-plugin-transform-es2015-spread/README.md49
-rw-r--r--node_modules/babel-plugin-transform-es2015-spread/lib/index.js157
-rw-r--r--node_modules/babel-plugin-transform-es2015-spread/package.json17
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"
+ }
+}