Version 1
[yaffs-website] / node_modules / babel-runtime / helpers / asyncGeneratorDelegate.js
1 "use strict";
2
3 exports.__esModule = true;
4
5 var _iterator = require("../core-js/symbol/iterator");
6
7 var _iterator2 = _interopRequireDefault(_iterator);
8
9 var _symbol = require("../core-js/symbol");
10
11 var _symbol2 = _interopRequireDefault(_symbol);
12
13 var _promise = require("../core-js/promise");
14
15 var _promise2 = _interopRequireDefault(_promise);
16
17 function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
19 exports.default = function (inner, awaitWrap) {
20   var iter = {},
21       waiting = false;
22
23   function pump(key, value) {
24     waiting = true;
25     value = new _promise2.default(function (resolve) {
26       resolve(inner[key](value));
27     });
28     return {
29       done: false,
30       value: awaitWrap(value)
31     };
32   }
33
34   ;
35
36   if (typeof _symbol2.default === "function" && _iterator2.default) {
37     iter[_iterator2.default] = function () {
38       return this;
39     };
40   }
41
42   iter.next = function (value) {
43     if (waiting) {
44       waiting = false;
45       return value;
46     }
47
48     return pump("next", value);
49   };
50
51   if (typeof inner.throw === "function") {
52     iter.throw = function (value) {
53       if (waiting) {
54         waiting = false;
55         throw value;
56       }
57
58       return pump("throw", value);
59     };
60   }
61
62   if (typeof inner.return === "function") {
63     iter.return = function (value) {
64       return pump("return", value);
65     };
66   }
67
68   return iter;
69 };