Repositorio del curso CCOM4030 el semestre B91 del proyecto Artesanías con el Instituto de Cultura

exhaustMap.js 3.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. "use strict";
  2. var __extends = (this && this.__extends) || (function () {
  3. var extendStatics = function (d, b) {
  4. extendStatics = Object.setPrototypeOf ||
  5. ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
  6. function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
  7. return extendStatics(d, b);
  8. }
  9. return function (d, b) {
  10. extendStatics(d, b);
  11. function __() { this.constructor = d; }
  12. d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
  13. };
  14. })();
  15. Object.defineProperty(exports, "__esModule", { value: true });
  16. var map_1 = require("./map");
  17. var from_1 = require("../observable/from");
  18. var innerSubscribe_1 = require("../innerSubscribe");
  19. function exhaustMap(project, resultSelector) {
  20. if (resultSelector) {
  21. return function (source) { return source.pipe(exhaustMap(function (a, i) { return from_1.from(project(a, i)).pipe(map_1.map(function (b, ii) { return resultSelector(a, b, i, ii); })); })); };
  22. }
  23. return function (source) {
  24. return source.lift(new ExhaustMapOperator(project));
  25. };
  26. }
  27. exports.exhaustMap = exhaustMap;
  28. var ExhaustMapOperator = (function () {
  29. function ExhaustMapOperator(project) {
  30. this.project = project;
  31. }
  32. ExhaustMapOperator.prototype.call = function (subscriber, source) {
  33. return source.subscribe(new ExhaustMapSubscriber(subscriber, this.project));
  34. };
  35. return ExhaustMapOperator;
  36. }());
  37. var ExhaustMapSubscriber = (function (_super) {
  38. __extends(ExhaustMapSubscriber, _super);
  39. function ExhaustMapSubscriber(destination, project) {
  40. var _this = _super.call(this, destination) || this;
  41. _this.project = project;
  42. _this.hasSubscription = false;
  43. _this.hasCompleted = false;
  44. _this.index = 0;
  45. return _this;
  46. }
  47. ExhaustMapSubscriber.prototype._next = function (value) {
  48. if (!this.hasSubscription) {
  49. this.tryNext(value);
  50. }
  51. };
  52. ExhaustMapSubscriber.prototype.tryNext = function (value) {
  53. var result;
  54. var index = this.index++;
  55. try {
  56. result = this.project(value, index);
  57. }
  58. catch (err) {
  59. this.destination.error(err);
  60. return;
  61. }
  62. this.hasSubscription = true;
  63. this._innerSub(result);
  64. };
  65. ExhaustMapSubscriber.prototype._innerSub = function (result) {
  66. var innerSubscriber = new innerSubscribe_1.SimpleInnerSubscriber(this);
  67. var destination = this.destination;
  68. destination.add(innerSubscriber);
  69. var innerSubscription = innerSubscribe_1.innerSubscribe(result, innerSubscriber);
  70. if (innerSubscription !== innerSubscriber) {
  71. destination.add(innerSubscription);
  72. }
  73. };
  74. ExhaustMapSubscriber.prototype._complete = function () {
  75. this.hasCompleted = true;
  76. if (!this.hasSubscription) {
  77. this.destination.complete();
  78. }
  79. this.unsubscribe();
  80. };
  81. ExhaustMapSubscriber.prototype.notifyNext = function (innerValue) {
  82. this.destination.next(innerValue);
  83. };
  84. ExhaustMapSubscriber.prototype.notifyError = function (err) {
  85. this.destination.error(err);
  86. };
  87. ExhaustMapSubscriber.prototype.notifyComplete = function () {
  88. this.hasSubscription = false;
  89. if (this.hasCompleted) {
  90. this.destination.complete();
  91. }
  92. };
  93. return ExhaustMapSubscriber;
  94. }(innerSubscribe_1.SimpleOuterSubscriber));
  95. //# sourceMappingURL=exhaustMap.js.map