1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';
- export function audit(durationSelector) {
- return function auditOperatorFunction(source) {
- return source.lift(new AuditOperator(durationSelector));
- };
- }
- class AuditOperator {
- constructor(durationSelector) {
- this.durationSelector = durationSelector;
- }
- call(subscriber, source) {
- return source.subscribe(new AuditSubscriber(subscriber, this.durationSelector));
- }
- }
- class AuditSubscriber extends SimpleOuterSubscriber {
- constructor(destination, durationSelector) {
- super(destination);
- this.durationSelector = durationSelector;
- this.hasValue = false;
- }
- _next(value) {
- this.value = value;
- this.hasValue = true;
- if (!this.throttled) {
- let duration;
- try {
- const { durationSelector } = this;
- duration = durationSelector(value);
- }
- catch (err) {
- return this.destination.error(err);
- }
- const innerSubscription = innerSubscribe(duration, new SimpleInnerSubscriber(this));
- if (!innerSubscription || innerSubscription.closed) {
- this.clearThrottle();
- }
- else {
- this.add(this.throttled = innerSubscription);
- }
- }
- }
- clearThrottle() {
- const { value, hasValue, throttled } = this;
- if (throttled) {
- this.remove(throttled);
- this.throttled = undefined;
- throttled.unsubscribe();
- }
- if (hasValue) {
- this.value = undefined;
- this.hasValue = false;
- this.destination.next(value);
- }
- }
- notifyNext() {
- this.clearThrottle();
- }
- notifyComplete() {
- this.clearThrottle();
- }
- }
- //# sourceMappingURL=audit.js.map
|