| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | var AwaitValue = require("./AwaitValue.js");function AsyncGenerator(gen) {  var front, back;  function send(key, arg) {    return new Promise(function (resolve, reject) {      var request = {        key: key,        arg: arg,        resolve: resolve,        reject: reject,        next: null      };      if (back) {        back = back.next = request;      } else {        front = back = request;        resume(key, arg);      }    });  }  function resume(key, arg) {    try {      var result = gen[key](arg);      var value = result.value;      var wrappedAwait = value instanceof AwaitValue;      Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) {        if (wrappedAwait) {          resume(key === "return" ? "return" : "next", arg);          return;        }        settle(result.done ? "return" : "normal", arg);      }, function (err) {        resume("throw", err);      });    } catch (err) {      settle("throw", err);    }  }  function settle(type, value) {    switch (type) {      case "return":        front.resolve({          value: value,          done: true        });        break;      case "throw":        front.reject(value);        break;      default:        front.resolve({          value: value,          done: false        });        break;    }    front = front.next;    if (front) {      resume(front.key, front.arg);    } else {      back = null;    }  }  this._invoke = send;  if (typeof gen["return"] !== "function") {    this["return"] = undefined;  }}AsyncGenerator.prototype[typeof Symbol === "function" && Symbol.asyncIterator || "@@asyncIterator"] = function () {  return this;};AsyncGenerator.prototype.next = function (arg) {  return this._invoke("next", arg);};AsyncGenerator.prototype["throw"] = function (arg) {  return this._invoke("throw", arg);};AsyncGenerator.prototype["return"] = function (arg) {  return this._invoke("return", arg);};module.exports = AsyncGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
 |