2 Object.defineProperty(exports, "__esModule", { value: true });
3 var ReplaySubject_1 = require("../ReplaySubject");
4 function shareReplay(configOrBufferSize, windowTime, scheduler) {
6 if (configOrBufferSize && typeof configOrBufferSize === 'object') {
7 config = configOrBufferSize;
11 bufferSize: configOrBufferSize,
12 windowTime: windowTime,
17 return function (source) { return source.lift(shareReplayOperator(config)); };
19 exports.shareReplay = shareReplay;
20 function shareReplayOperator(_a) {
21 var _b = _a.bufferSize, bufferSize = _b === void 0 ? Number.POSITIVE_INFINITY : _b, _c = _a.windowTime, windowTime = _c === void 0 ? Number.POSITIVE_INFINITY : _c, useRefCount = _a.refCount, scheduler = _a.scheduler;
26 var isComplete = false;
27 return function shareReplayOperation(source) {
30 if (!subject || hasError) {
32 subject = new ReplaySubject_1.ReplaySubject(bufferSize, windowTime, scheduler);
33 innerSub = subject.subscribe(this);
34 subscription = source.subscribe({
35 next: function (value) { subject.next(value); },
36 error: function (err) {
40 complete: function () {
42 subscription = undefined;
48 innerSub = subject.subscribe(this);
50 this.add(function () {
52 innerSub.unsubscribe();
53 if (subscription && !isComplete && useRefCount && refCount === 0) {
54 subscription.unsubscribe();
55 subscription = undefined;
61 //# sourceMappingURL=shareReplay.js.map