summaryrefslogtreecommitdiffstats
path: root/node_modules/babel-plugin-transform-async-generator-functions
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/babel-plugin-transform-async-generator-functions')
-rw-r--r--node_modules/babel-plugin-transform-async-generator-functions/.npmignore4
-rw-r--r--node_modules/babel-plugin-transform-async-generator-functions/README.md107
-rw-r--r--node_modules/babel-plugin-transform-async-generator-functions/lib/index.js44
-rw-r--r--node_modules/babel-plugin-transform-async-generator-functions/package.json47
4 files changed, 202 insertions, 0 deletions
diff --git a/node_modules/babel-plugin-transform-async-generator-functions/.npmignore b/node_modules/babel-plugin-transform-async-generator-functions/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-async-generator-functions/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-async-generator-functions/README.md b/node_modules/babel-plugin-transform-async-generator-functions/README.md
new file mode 100644
index 0000000..e8388bb
--- /dev/null
+++ b/node_modules/babel-plugin-transform-async-generator-functions/README.md
@@ -0,0 +1,107 @@
+# babel-plugin-transform-async-generator-functions
+
+> Turn async generator functions and for-await statements to ES2015 generators
+
+## Example
+
+**In**
+
+```javascript
+async function* agf() {
+ await 1;
+ yield 2;
+}
+```
+
+**Out**
+
+```javascript
+var _asyncGenerator = ...
+
+let agf = (() => {
+ var _ref = _asyncGenerator.wrap(function* () {
+ yield _asyncGenerator.await(1);
+ yield 2;
+ });
+
+ return function agf() {
+ return _ref.apply(this, arguments);
+ };
+})();
+```
+
+For await example
+
+```js
+async function f() {
+ for await (let x of y) {
+ g(x);
+ }
+}
+```
+
+**Example Usage**
+
+```js
+async function* genAnswers() {
+ var stream = [ Promise.resolve(4), Promise.resolve(9), Promise.resolve(12) ];
+ var total = 0;
+ for await (let val of stream) {
+ total += await val;
+ yield total;
+ }
+}
+
+function forEach(ai, fn) {
+ return ai.next().then(function (r) {
+ if (!r.done) {
+ fn(r);
+ return forEach(ai, fn);
+ }
+ });
+}
+
+var output = 0;
+forEach(genAnswers(), function(val) { output += val.value })
+.then(function () {
+ console.log(output); // 42
+});
+```
+
+[Try it Out in the REPL](https://babeljs.io/repl/#?babili=false&evaluate=true&lineWrap=false&presets=stage-3&code=async%20function*%20genAnswers()%20%7B%0A%20%20var%20stream%20%3D%20%5B%20Promise.resolve(4)%2C%20Promise.resolve(9)%2C%20Promise.resolve(12)%20%5D%3B%0A%20%20var%20total%20%3D%200%3B%0A%20%20for%20await%20(let%20val%20of%20stream)%20%7B%0A%20%20%20%20total%20%2B%3D%20await%20val%3B%0A%20%20%20%20yield%20total%3B%0A%20%20%7D%0A%7D%0A%0Afunction%20forEach(ai%2C%20fn)%20%7B%0A%20%20return%20ai.next().then(function%20(r)%20%7B%0A%20%20%20%20if%20(!r.done)%20%7B%0A%20%20%20%20%20%20fn(r)%3B%0A%20%20%20%20%20%20return%20forEach(ai%2C%20fn)%3B%0A%20%20%20%20%7D%0A%20%20%7D)%3B%0A%7D%0A%0Avar%20output%20%3D%200%3B%0AforEach(genAnswers()%2C%20function(val)%20%7B%20output%20%2B%3D%20val.value%20%7D)%0A.then(function%20()%20%7B%0A%20%20console.log(output)%3B%20%2F%2F%2042%0A%7D)%3B&experimental=true&loose=false&spec=false&playground=true&stage=0)
+
+## Installation
+
+```sh
+npm install --save-dev babel-plugin-transform-async-generator-functions
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-async-generator-functions"]
+}
+```
+
+### Via CLI
+
+```sh
+babel --plugins transform-async-generator-functions script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-async-generator-functions"]
+});
+```
+
+## References
+
+* [Proposal: Asynchronous iteration for ECMAScript](https://github.com/tc39/proposal-async-iteration)
diff --git a/node_modules/babel-plugin-transform-async-generator-functions/lib/index.js b/node_modules/babel-plugin-transform-async-generator-functions/lib/index.js
new file mode 100644
index 0000000..d003a7e
--- /dev/null
+++ b/node_modules/babel-plugin-transform-async-generator-functions/lib/index.js
@@ -0,0 +1,44 @@
+"use strict";
+
+exports.__esModule = true;
+
+exports.default = function (_ref) {
+ var t = _ref.types;
+
+ var yieldStarVisitor = {
+ Function: function Function(path) {
+ path.skip();
+ },
+ YieldExpression: function YieldExpression(_ref2, state) {
+ var node = _ref2.node;
+
+ if (!node.delegate) return;
+ var callee = state.addHelper("asyncGeneratorDelegate");
+ node.argument = t.callExpression(callee, [t.callExpression(state.addHelper("asyncIterator"), [node.argument]), t.memberExpression(state.addHelper("asyncGenerator"), t.identifier("await"))]);
+ }
+ };
+
+ return {
+ inherits: require("babel-plugin-syntax-async-generators"),
+ visitor: {
+ Function: function Function(path, state) {
+ if (!path.node.async || !path.node.generator) return;
+
+ path.traverse(yieldStarVisitor, state);
+
+ (0, _babelHelperRemapAsyncToGenerator2.default)(path, state.file, {
+ wrapAsync: t.memberExpression(state.addHelper("asyncGenerator"), t.identifier("wrap")),
+ wrapAwait: t.memberExpression(state.addHelper("asyncGenerator"), t.identifier("await"))
+ });
+ }
+ }
+ };
+};
+
+var _babelHelperRemapAsyncToGenerator = require("babel-helper-remap-async-to-generator");
+
+var _babelHelperRemapAsyncToGenerator2 = _interopRequireDefault(_babelHelperRemapAsyncToGenerator);
+
+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-async-generator-functions/package.json b/node_modules/babel-plugin-transform-async-generator-functions/package.json
new file mode 100644
index 0000000..1a4b88a
--- /dev/null
+++ b/node_modules/babel-plugin-transform-async-generator-functions/package.json
@@ -0,0 +1,47 @@
+{
+ "_from": "babel-plugin-transform-async-generator-functions@^6.24.1",
+ "_id": "babel-plugin-transform-async-generator-functions@6.24.1",
+ "_inBundle": false,
+ "_integrity": "sha1-8FiQAUX9PpkHpt3yjaWfIVJYpds=",
+ "_location": "/babel-plugin-transform-async-generator-functions",
+ "_phantomChildren": {},
+ "_requested": {
+ "type": "range",
+ "registry": true,
+ "raw": "babel-plugin-transform-async-generator-functions@^6.24.1",
+ "name": "babel-plugin-transform-async-generator-functions",
+ "escapedName": "babel-plugin-transform-async-generator-functions",
+ "rawSpec": "^6.24.1",
+ "saveSpec": null,
+ "fetchSpec": "^6.24.1"
+ },
+ "_requiredBy": [
+ "/babel-preset-stage-3"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz",
+ "_shasum": "f058900145fd3e9907a6ddf28da59f215258a5db",
+ "_spec": "babel-plugin-transform-async-generator-functions@^6.24.1",
+ "_where": "/home/pruss/Dev/3-minute-website/node_modules/babel-preset-stage-3",
+ "bundleDependencies": false,
+ "dependencies": {
+ "babel-helper-remap-async-to-generator": "^6.24.1",
+ "babel-plugin-syntax-async-generators": "^6.5.0",
+ "babel-runtime": "^6.22.0"
+ },
+ "deprecated": false,
+ "description": "Turn async generator functions into ES2015 generators",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.24.1"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "name": "babel-plugin-transform-async-generator-functions",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-async-generator-functions"
+ },
+ "version": "6.24.1"
+}