Ohm-Management - Projektarbeit B-ME
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

audit.js 2.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. /** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */
  2. import * as tslib_1 from "tslib";
  3. import { OuterSubscriber } from '../OuterSubscriber';
  4. import { subscribeToResult } from '../util/subscribeToResult';
  5. export function audit(durationSelector) {
  6. return function auditOperatorFunction(source) {
  7. return source.lift(new AuditOperator(durationSelector));
  8. };
  9. }
  10. var AuditOperator = /*@__PURE__*/ (function () {
  11. function AuditOperator(durationSelector) {
  12. this.durationSelector = durationSelector;
  13. }
  14. AuditOperator.prototype.call = function (subscriber, source) {
  15. return source.subscribe(new AuditSubscriber(subscriber, this.durationSelector));
  16. };
  17. return AuditOperator;
  18. }());
  19. var AuditSubscriber = /*@__PURE__*/ (function (_super) {
  20. tslib_1.__extends(AuditSubscriber, _super);
  21. function AuditSubscriber(destination, durationSelector) {
  22. var _this = _super.call(this, destination) || this;
  23. _this.durationSelector = durationSelector;
  24. _this.hasValue = false;
  25. return _this;
  26. }
  27. AuditSubscriber.prototype._next = function (value) {
  28. this.value = value;
  29. this.hasValue = true;
  30. if (!this.throttled) {
  31. var duration = void 0;
  32. try {
  33. var durationSelector = this.durationSelector;
  34. duration = durationSelector(value);
  35. }
  36. catch (err) {
  37. return this.destination.error(err);
  38. }
  39. var innerSubscription = subscribeToResult(this, duration);
  40. if (!innerSubscription || innerSubscription.closed) {
  41. this.clearThrottle();
  42. }
  43. else {
  44. this.add(this.throttled = innerSubscription);
  45. }
  46. }
  47. };
  48. AuditSubscriber.prototype.clearThrottle = function () {
  49. var _a = this, value = _a.value, hasValue = _a.hasValue, throttled = _a.throttled;
  50. if (throttled) {
  51. this.remove(throttled);
  52. this.throttled = null;
  53. throttled.unsubscribe();
  54. }
  55. if (hasValue) {
  56. this.value = null;
  57. this.hasValue = false;
  58. this.destination.next(value);
  59. }
  60. };
  61. AuditSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex) {
  62. this.clearThrottle();
  63. };
  64. AuditSubscriber.prototype.notifyComplete = function () {
  65. this.clearThrottle();
  66. };
  67. return AuditSubscriber;
  68. }(OuterSubscriber));
  69. //# sourceMappingURL=audit.js.map