Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / rxjs / _esm2015 / internal / operators / shareReplay.js
1 import { ReplaySubject } from '../ReplaySubject';
2 export function shareReplay(configOrBufferSize, windowTime, scheduler) {
3     let config;
4     if (configOrBufferSize && typeof configOrBufferSize === 'object') {
5         config = configOrBufferSize;
6     }
7     else {
8         config = {
9             bufferSize: configOrBufferSize,
10             windowTime,
11             refCount: false,
12             scheduler
13         };
14     }
15     return (source) => source.lift(shareReplayOperator(config));
16 }
17 function shareReplayOperator({ bufferSize = Number.POSITIVE_INFINITY, windowTime = Number.POSITIVE_INFINITY, refCount: useRefCount, scheduler }) {
18     let subject;
19     let refCount = 0;
20     let subscription;
21     let hasError = false;
22     let isComplete = false;
23     return function shareReplayOperation(source) {
24         refCount++;
25         let innerSub;
26         if (!subject || hasError) {
27             hasError = false;
28             subject = new ReplaySubject(bufferSize, windowTime, scheduler);
29             innerSub = subject.subscribe(this);
30             subscription = source.subscribe({
31                 next(value) { subject.next(value); },
32                 error(err) {
33                     hasError = true;
34                     subject.error(err);
35                 },
36                 complete() {
37                     isComplete = true;
38                     subscription = undefined;
39                     subject.complete();
40                 },
41             });
42         }
43         else {
44             innerSub = subject.subscribe(this);
45         }
46         this.add(() => {
47             refCount--;
48             innerSub.unsubscribe();
49             if (subscription && !isComplete && useRefCount && refCount === 0) {
50                 subscription.unsubscribe();
51                 subscription = undefined;
52                 subject = undefined;
53             }
54         });
55     };
56 }
57 //# sourceMappingURL=shareReplay.js.map