| "use strict"; |
| Object.defineProperty(exports, "__esModule", { value: true }); |
| exports.audit = void 0; |
| var lift_1 = require("../util/lift"); |
| var innerFrom_1 = require("../observable/innerFrom"); |
| var OperatorSubscriber_1 = require("./OperatorSubscriber"); |
| function audit(durationSelector) { |
| return lift_1.operate(function (source, subscriber) { |
| var hasValue = false; |
| var lastValue = null; |
| var durationSubscriber = null; |
| var isComplete = false; |
| var endDuration = function () { |
| durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe(); |
| durationSubscriber = null; |
| if (hasValue) { |
| hasValue = false; |
| var value = lastValue; |
| lastValue = null; |
| subscriber.next(value); |
| } |
| isComplete && subscriber.complete(); |
| }; |
| var cleanupDuration = function () { |
| durationSubscriber = null; |
| isComplete && subscriber.complete(); |
| }; |
| source.subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) { |
| hasValue = true; |
| lastValue = value; |
| if (!durationSubscriber) { |
| innerFrom_1.innerFrom(durationSelector(value)).subscribe((durationSubscriber = OperatorSubscriber_1.createOperatorSubscriber(subscriber, endDuration, cleanupDuration))); |
| } |
| }, function () { |
| isComplete = true; |
| (!hasValue || !durationSubscriber || durationSubscriber.closed) && subscriber.complete(); |
| })); |
| }); |
| } |
| exports.audit = audit; |
| //# sourceMappingURL=audit.js.map |