Rename all proposal plugins to -proposal- from -transform- (#6570)
This commit is contained in:
35
packages/babel-plugin-proposal-pipeline-operator/README.md
Normal file
35
packages/babel-plugin-proposal-pipeline-operator/README.md
Normal file
@@ -0,0 +1,35 @@
|
||||
# @babel/plugin-proposal-pipeline-operator
|
||||
|
||||
Transform pipeline operator `|>` into call expressions. See [the proposal](https://github.com/tc39/proposal-pipeline-operator) for details.
|
||||
|
||||
## Installation
|
||||
|
||||
```sh
|
||||
$ npm install @babel/plugin-proposal-pipeline-operator
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Via `.babelrc` (Recommended)
|
||||
|
||||
**.babelrc**
|
||||
|
||||
```json
|
||||
{
|
||||
"plugins": ["@babel/proposal-pipeline-operator"]
|
||||
}
|
||||
```
|
||||
|
||||
### Via CLI
|
||||
|
||||
```sh
|
||||
$ babel --plugins @babel/proposal-pipeline-operator script.js
|
||||
```
|
||||
|
||||
### Via Node API
|
||||
|
||||
```javascript
|
||||
require("@babel/core").transform("code", {
|
||||
plugins: ["@babel/proposal-pipeline-operator"]
|
||||
});
|
||||
```
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "@babel/plugin-proposal-pipeline-operator",
|
||||
"version": "7.0.0-beta.3",
|
||||
"description": "Transform pipeline operator into call expressions",
|
||||
"repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-proposal-pipeline-operator",
|
||||
"license": "MIT",
|
||||
"main": "lib/index.js",
|
||||
"keywords": [
|
||||
"babel-plugin"
|
||||
],
|
||||
"dependencies": {
|
||||
"@babel/plugin-syntax-pipeline-operator": "7.0.0-beta.3"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@babel/core": "7.0.0-beta.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/helper-plugin-test-runner": "7.0.0-beta.3"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
import syntaxPipelineOperator from "@babel/plugin-syntax-pipeline-operator";
|
||||
|
||||
export default function({ types: t }) {
|
||||
return {
|
||||
inherits: syntaxPipelineOperator,
|
||||
|
||||
visitor: {
|
||||
BinaryExpression(path) {
|
||||
const { scope } = path;
|
||||
const { node } = path;
|
||||
const { operator, left } = node;
|
||||
let { right } = node;
|
||||
if (operator !== "|>") return;
|
||||
|
||||
let optimizeArrow =
|
||||
t.isArrowFunctionExpression(right) && t.isExpression(right.body);
|
||||
let param;
|
||||
|
||||
if (optimizeArrow) {
|
||||
const { params } = right;
|
||||
if (params.length === 1 && t.isIdentifier(params[0])) {
|
||||
param = params[0];
|
||||
} else if (params.length > 0) {
|
||||
optimizeArrow = false;
|
||||
}
|
||||
} else if (t.isIdentifier(right, { name: "eval" })) {
|
||||
right = t.sequenceExpression([t.numericLiteral(0), right]);
|
||||
}
|
||||
|
||||
if (optimizeArrow && !param) {
|
||||
// Arrow function with 0 arguments
|
||||
path.replaceWith(t.sequenceExpression([left, right.body]));
|
||||
return;
|
||||
}
|
||||
|
||||
const placeholder = scope.generateUidIdentifierBasedOnNode(
|
||||
param || left,
|
||||
);
|
||||
scope.push({ id: placeholder });
|
||||
if (param) {
|
||||
path.get("right").scope.rename(param.name, placeholder.name);
|
||||
}
|
||||
|
||||
const call = optimizeArrow
|
||||
? right.body
|
||||
: t.callExpression(right, [placeholder]);
|
||||
path.replaceWith(
|
||||
t.sequenceExpression([
|
||||
t.assignmentExpression("=", placeholder, left),
|
||||
call,
|
||||
]),
|
||||
);
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
var result = [5,10]
|
||||
|> _ => _.map(x => x * 2)
|
||||
|> _ => _.reduce( (a,b) => a + b )
|
||||
|> sum => sum + 1
|
||||
|
||||
assert.equal(result, 31)
|
||||
|
||||
|
||||
var inc = (x) => x + 1;
|
||||
var double = (x) => x * 2;
|
||||
|
||||
var result2 = [4, 9].map( x => x |> inc |> double )
|
||||
|
||||
assert.deepEqual(result2, [10, 20])
|
||||
@@ -0,0 +1,14 @@
|
||||
var result = [5,10]
|
||||
|> _ => _.map(x => x * 2)
|
||||
|> _ => _.reduce( (a,b) => a + b )
|
||||
|> sum => sum + 1
|
||||
|
||||
assert.equal(result, 31)
|
||||
|
||||
|
||||
var inc = (x) => x + 1;
|
||||
var double = (x) => x * 2;
|
||||
|
||||
var result2 = [4, 9].map( x => x |> inc |> double )
|
||||
|
||||
assert.deepEqual(result2, [10, 20])
|
||||
@@ -0,0 +1,15 @@
|
||||
var _ref, _ref2, _sum;
|
||||
|
||||
var result = (_ref = [5, 10], (_ref2 = _ref.map(x => x * 2), (_sum = _ref2.reduce((a, b) => a + b), _sum + 1)));
|
||||
assert.equal(result, 31);
|
||||
|
||||
var inc = x => x + 1;
|
||||
|
||||
var double = x => x * 2;
|
||||
|
||||
var result2 = [4, 9].map(x => {
|
||||
var _ref3, _x;
|
||||
|
||||
return _ref3 = (_x = x, inc(_x)), double(_ref3);
|
||||
});
|
||||
assert.deepEqual(result2, [10, 20]);
|
||||
@@ -0,0 +1,3 @@
|
||||
var inc = (x) => x + 1
|
||||
|
||||
assert.equal(10 |> inc, 11);
|
||||
@@ -0,0 +1,3 @@
|
||||
var inc = (x) => x + 1
|
||||
|
||||
assert.equal(10 |> inc, 11);
|
||||
@@ -0,0 +1,5 @@
|
||||
var _;
|
||||
|
||||
var inc = x => x + 1;
|
||||
|
||||
assert.equal((_ = 10, inc(_)), 11);
|
||||
@@ -0,0 +1,4 @@
|
||||
var inc = (x) => x + 1;
|
||||
var double = (x) => x * 2;
|
||||
|
||||
assert.equal(10 |> inc |> double, 22);
|
||||
@@ -0,0 +1,4 @@
|
||||
var inc = (x) => x + 1;
|
||||
var double = (x) => x * 2;
|
||||
|
||||
assert.equal(10 |> inc |> double, 22);
|
||||
@@ -0,0 +1,7 @@
|
||||
var _ref, _;
|
||||
|
||||
var inc = x => x + 1;
|
||||
|
||||
var double = x => x * 2;
|
||||
|
||||
assert.equal((_ref = (_ = 10, inc(_)), double(_ref)), 22);
|
||||
@@ -0,0 +1,6 @@
|
||||
|
||||
var map = (fn) => (array) => array.map(fn);
|
||||
|
||||
var result = [10,20] |> map(x => x * 20);
|
||||
|
||||
assert.deepEqual(result, [200, 400])
|
||||
@@ -0,0 +1,6 @@
|
||||
|
||||
var map = (fn) => (array) => array.map(fn);
|
||||
|
||||
var result = [10,20] |> map(x => x * 20);
|
||||
|
||||
assert.deepEqual(result, [200, 400])
|
||||
@@ -0,0 +1,6 @@
|
||||
var _ref;
|
||||
|
||||
var map = fn => array => array.map(fn);
|
||||
|
||||
var result = (_ref = [10, 20], map(x => x * 20)(_ref));
|
||||
assert.deepEqual(result, [200, 400]);
|
||||
@@ -0,0 +1,8 @@
|
||||
var a = 1,
|
||||
b = 2,
|
||||
c = 3;
|
||||
var result = a
|
||||
|> (a, b) => b
|
||||
|> (a, b) => c;
|
||||
|
||||
assert.equal(result, c)
|
||||
@@ -0,0 +1,8 @@
|
||||
var a = 1,
|
||||
b = 2,
|
||||
c = 3;
|
||||
var result = a
|
||||
|> (a, b) => b
|
||||
|> (a, b) => c;
|
||||
|
||||
assert.equal(result, c)
|
||||
@@ -0,0 +1,11 @@
|
||||
var _a;
|
||||
|
||||
var a = 1,
|
||||
b = 2,
|
||||
c = 3;
|
||||
var result = (_a = a, ((a, b) => {
|
||||
var _b;
|
||||
|
||||
return _b = b, ((a, b) => c)(_b);
|
||||
})(_a));
|
||||
assert.equal(result, c);
|
||||
@@ -0,0 +1,7 @@
|
||||
// Array destructing
|
||||
const result = [0] |> ([x]) => x;
|
||||
assert.equal(result, 0);
|
||||
|
||||
// Object destructuring
|
||||
const result2 = { y: 1, z: 2 } |> ({ y, z }) => y + z;
|
||||
assert.equal(result, 3);
|
||||
@@ -0,0 +1,7 @@
|
||||
// Array destructing
|
||||
const result = [0] |> ([x]) => x;
|
||||
assert.equal(result, 0);
|
||||
|
||||
// Object destructuring
|
||||
const result2 = { y: 1, z: 2 } |> ({ y, z }) => y + z;
|
||||
assert.equal(result2, 3);
|
||||
@@ -0,0 +1,14 @@
|
||||
var _ref, _y$z;
|
||||
|
||||
// Array destructing
|
||||
const result = (_ref = [0], (([x]) => x)(_ref));
|
||||
assert.equal(result, 0); // Object destructuring
|
||||
|
||||
const result2 = (_y$z = {
|
||||
y: 1,
|
||||
z: 2
|
||||
}, (({
|
||||
y,
|
||||
z
|
||||
}) => y + z)(_y$z));
|
||||
assert.equal(result, 3);
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"minNodeVersion": "6.0.0"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
var obj = {
|
||||
get prop() {
|
||||
return this._prop = 1;
|
||||
},
|
||||
|
||||
get method() {
|
||||
if (!this._prop) throw new Error('invalid evaluation order');
|
||||
return (v) => v;
|
||||
}
|
||||
}
|
||||
|
||||
var result = obj.prop |> obj.method;
|
||||
assert.equal(result, 1);
|
||||
@@ -0,0 +1,13 @@
|
||||
var obj = {
|
||||
get prop() {
|
||||
return this._prop = 1;
|
||||
},
|
||||
|
||||
get method() {
|
||||
if (!this._prop) throw new Error('invalid evaluation order');
|
||||
return (v) => v;
|
||||
}
|
||||
}
|
||||
|
||||
var result = obj.prop |> obj.method;
|
||||
assert.equal(result, 1);
|
||||
@@ -0,0 +1,15 @@
|
||||
var _obj$prop;
|
||||
|
||||
var obj = {
|
||||
get prop() {
|
||||
return this._prop = 1;
|
||||
},
|
||||
|
||||
get method() {
|
||||
if (!this._prop) throw new Error('invalid evaluation order');
|
||||
return v => v;
|
||||
}
|
||||
|
||||
};
|
||||
var result = (_obj$prop = obj.prop, obj.method(_obj$prop));
|
||||
assert.equal(result, 1);
|
||||
@@ -0,0 +1,7 @@
|
||||
(function() {
|
||||
'use strict';
|
||||
var result = '(function() { return this; })()'
|
||||
|> eval;
|
||||
|
||||
assert.notEqual(result, undefined);
|
||||
})();
|
||||
@@ -0,0 +1,7 @@
|
||||
(function() {
|
||||
'use strict';
|
||||
var result = '(function() { return this; })()'
|
||||
|> eval;
|
||||
|
||||
assert.notEqual(result, undefined);
|
||||
})();
|
||||
@@ -0,0 +1,8 @@
|
||||
(function () {
|
||||
'use strict';
|
||||
|
||||
var _functionReturn;
|
||||
|
||||
var result = (_functionReturn = '(function() { return this; })()', (0, eval)(_functionReturn));
|
||||
assert.notEqual(result, undefined);
|
||||
})();
|
||||
@@ -0,0 +1,5 @@
|
||||
var array = [10,20,30];
|
||||
|
||||
var last = array |> a => a[a.length-1];
|
||||
|
||||
assert.equal(last, 30);
|
||||
@@ -0,0 +1,5 @@
|
||||
var array = [10,20,30];
|
||||
|
||||
var last = array |> a => a[a.length-1];
|
||||
|
||||
assert.equal(last, 30);
|
||||
@@ -0,0 +1,5 @@
|
||||
var _a;
|
||||
|
||||
var array = [10, 20, 30];
|
||||
var last = (_a = array, _a[_a.length - 1]);
|
||||
assert.equal(last, 30);
|
||||
@@ -0,0 +1,8 @@
|
||||
var a = 1,
|
||||
b = 2,
|
||||
c = 3;
|
||||
var result = a
|
||||
|> () => b
|
||||
|> () => c;
|
||||
|
||||
assert.equal(result, c)
|
||||
@@ -0,0 +1,8 @@
|
||||
var a = 1,
|
||||
b = 2,
|
||||
c = 3;
|
||||
var result = a
|
||||
|> () => b
|
||||
|> () => c;
|
||||
|
||||
assert.equal(result, c)
|
||||
@@ -0,0 +1,5 @@
|
||||
var a = 1,
|
||||
b = 2,
|
||||
c = 3;
|
||||
var result = (a, (b, c));
|
||||
assert.equal(result, c);
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"plugins": ["proposal-pipeline-operator"]
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
|
||||
var inc = (x) => x + 1;
|
||||
|
||||
var result = 4 || 9 |> inc;
|
||||
assert.equal(result, 5);
|
||||
|
||||
|
||||
var f = (x) => x + 10
|
||||
var h = (x) => x + 20
|
||||
|
||||
var result2 = 10 |> f || h |> inc;
|
||||
assert.equal(result2, 21);
|
||||
@@ -0,0 +1,12 @@
|
||||
|
||||
var inc = (x) => x + 1;
|
||||
|
||||
var result = 4 || 9 |> inc;
|
||||
assert.equal(result, 5);
|
||||
|
||||
|
||||
var f = (x) => x + 10
|
||||
var h = (x) => x + 20
|
||||
|
||||
var result2 = 10 |> f || h |> inc;
|
||||
assert.equal(result2, 21);
|
||||
@@ -0,0 +1,13 @@
|
||||
var _ref, _ref2, _;
|
||||
|
||||
var inc = x => x + 1;
|
||||
|
||||
var result = (_ref = 4 || 9, inc(_ref));
|
||||
assert.equal(result, 5);
|
||||
|
||||
var f = x => x + 10;
|
||||
|
||||
var h = x => x + 20;
|
||||
|
||||
var result2 = (_ref2 = (_ = 10, (f || h)(_)), inc(_ref2));
|
||||
assert.equal(result2, 21);
|
||||
@@ -0,0 +1,3 @@
|
||||
import runner from "@babel/helper-plugin-test-runner";
|
||||
|
||||
runner(__dirname);
|
||||
Reference in New Issue
Block a user