asyncIterator.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = _asyncIterator;
  6. function _asyncIterator(iterable) {
  7. var method,
  8. async,
  9. sync,
  10. retry = 2;
  11. if (typeof Symbol !== "undefined") {
  12. async = Symbol.asyncIterator;
  13. sync = Symbol.iterator;
  14. }
  15. while (retry--) {
  16. if (async && (method = iterable[async]) != null) {
  17. return method.call(iterable);
  18. }
  19. if (sync && (method = iterable[sync]) != null) {
  20. return new AsyncFromSyncIterator(method.call(iterable));
  21. }
  22. async = "@@asyncIterator";
  23. sync = "@@iterator";
  24. }
  25. throw new TypeError("Object is not async iterable");
  26. }
  27. function AsyncFromSyncIterator(s) {
  28. AsyncFromSyncIterator = function (s) {
  29. this.s = s;
  30. this.n = s.next;
  31. };
  32. AsyncFromSyncIterator.prototype = {
  33. s: null,
  34. n: null,
  35. next: function () {
  36. return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));
  37. },
  38. return: function (value) {
  39. var ret = this.s.return;
  40. if (ret === undefined) {
  41. return Promise.resolve({
  42. value: value,
  43. done: true
  44. });
  45. }
  46. return AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments));
  47. },
  48. throw: function (value) {
  49. var thr = this.s.return;
  50. if (thr === undefined) return Promise.reject(value);
  51. return AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments));
  52. }
  53. };
  54. function AsyncFromSyncIteratorContinuation(r) {
  55. if (Object(r) !== r) {
  56. return Promise.reject(new TypeError(r + " is not an object."));
  57. }
  58. var done = r.done;
  59. return Promise.resolve(r.value).then(function (value) {
  60. return {
  61. value: value,
  62. done: done
  63. };
  64. });
  65. }
  66. return new AsyncFromSyncIterator(s);
  67. }
  68. //# sourceMappingURL=asyncIterator.js.map