| "use strict"; |
| |
| exports.__esModule = true; |
| |
| var _iterator = require("../core-js/symbol/iterator"); |
| |
| var _iterator2 = _interopRequireDefault(_iterator); |
| |
| var _symbol = require("../core-js/symbol"); |
| |
| var _symbol2 = _interopRequireDefault(_symbol); |
| |
| var _promise = require("../core-js/promise"); |
| |
| var _promise2 = _interopRequireDefault(_promise); |
| |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } |
| |
| exports.default = function (inner, awaitWrap) { |
| var iter = {}, |
| waiting = false; |
| |
| function pump(key, value) { |
| waiting = true; |
| value = new _promise2.default(function (resolve) { |
| resolve(inner[key](value)); |
| }); |
| return { |
| done: false, |
| value: awaitWrap(value) |
| }; |
| } |
| |
| ; |
| |
| if (typeof _symbol2.default === "function" && _iterator2.default) { |
| iter[_iterator2.default] = function () { |
| return this; |
| }; |
| } |
| |
| iter.next = function (value) { |
| if (waiting) { |
| waiting = false; |
| return value; |
| } |
| |
| return pump("next", value); |
| }; |
| |
| if (typeof inner.throw === "function") { |
| iter.throw = function (value) { |
| if (waiting) { |
| waiting = false; |
| throw value; |
| } |
| |
| return pump("throw", value); |
| }; |
| } |
| |
| if (typeof inner.return === "function") { |
| iter.return = function (value) { |
| return pump("return", value); |
| }; |
| } |
| |
| return iter; |
| }; |