wrapAsyncGenerator.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. var _Promise = require("core-js-pure/features/promise/index.js");
  2. var _Symbol = require("core-js-pure/features/symbol/index.js");
  3. var _Symbol$asyncIterator = require("core-js-pure/features/symbol/async-iterator.js");
  4. var OverloadYield = require("./OverloadYield.js");
  5. function _wrapAsyncGenerator(e) {
  6. return function () {
  7. return new AsyncGenerator(e.apply(this, arguments));
  8. };
  9. }
  10. function AsyncGenerator(e) {
  11. var r, t;
  12. function resume(r, t) {
  13. try {
  14. var n = e[r](t),
  15. o = n.value,
  16. u = o instanceof OverloadYield;
  17. _Promise.resolve(u ? o.v : o).then(function (t) {
  18. if (u) {
  19. var i = "return" === r ? "return" : "next";
  20. if (!o.k || t.done) return resume(i, t);
  21. t = e[i](t).value;
  22. }
  23. settle(n.done ? "return" : "normal", t);
  24. }, function (e) {
  25. resume("throw", e);
  26. });
  27. } catch (e) {
  28. settle("throw", e);
  29. }
  30. }
  31. function settle(e, n) {
  32. switch (e) {
  33. case "return":
  34. r.resolve({
  35. value: n,
  36. done: !0
  37. });
  38. break;
  39. case "throw":
  40. r.reject(n);
  41. break;
  42. default:
  43. r.resolve({
  44. value: n,
  45. done: !1
  46. });
  47. }
  48. (r = r.next) ? resume(r.key, r.arg) : t = null;
  49. }
  50. this._invoke = function (e, n) {
  51. return new _Promise(function (o, u) {
  52. var i = {
  53. key: e,
  54. arg: n,
  55. resolve: o,
  56. reject: u,
  57. next: null
  58. };
  59. t ? t = t.next = i : (r = t = i, resume(e, n));
  60. });
  61. }, "function" != typeof e["return"] && (this["return"] = void 0);
  62. }
  63. AsyncGenerator.prototype["function" == typeof _Symbol && _Symbol$asyncIterator || "@@asyncIterator"] = function () {
  64. return this;
  65. }, AsyncGenerator.prototype.next = function (e) {
  66. return this._invoke("next", e);
  67. }, AsyncGenerator.prototype["throw"] = function (e) {
  68. return this._invoke("throw", e);
  69. }, AsyncGenerator.prototype["return"] = function (e) {
  70. return this._invoke("return", e);
  71. };
  72. module.exports = _wrapAsyncGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;