@fncts/observable 0.0.26 → 0.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Observable/api/raceWith.d.ts +0 -1
- package/Observable/api/repeatWhen.d.ts +1 -1
- package/Observable/api/share.d.ts +1 -1
- package/Observable/api.d.ts +4 -4
- package/Observable/definition.d.ts +1 -4
- package/Observable.d.ts +16 -16
- package/ObservableRef.d.ts +2 -2
- package/Operator.d.ts +3 -3
- package/Subject.d.ts +14 -5
- package/Subscriber.d.ts +23 -8
- package/Subscription.d.ts +2 -2
- package/_cjs/Action.cjs +1 -1
- package/_cjs/AnimationFrameAction.cjs +2 -2
- package/_cjs/AnimationFrameScheduler.cjs +2 -2
- package/_cjs/AsyncAction.cjs +4 -4
- package/_cjs/AsyncAction.cjs.map +1 -1
- package/_cjs/AsyncScheduler.cjs +2 -2
- package/_cjs/BehaviorSubject.cjs +2 -2
- package/_cjs/BehaviorSubject.cjs.map +1 -1
- package/_cjs/Observable/api/connect.cjs +7 -7
- package/_cjs/Observable/api/connect.cjs.map +1 -1
- package/_cjs/Observable/api/connectable.cjs +4 -4
- package/_cjs/Observable/api/connectable.cjs.map +1 -1
- package/_cjs/Observable/api/fromCallback.cjs +2 -2
- package/_cjs/Observable/api/fromEvent.cjs +1 -1
- package/_cjs/Observable/api/race.cjs +4 -4
- package/_cjs/Observable/api/race.cjs.map +1 -1
- package/_cjs/Observable/api/raceWith.cjs +3 -4
- package/_cjs/Observable/api/raceWith.cjs.map +1 -1
- package/_cjs/Observable/api/repeatWhen.cjs +9 -8
- package/_cjs/Observable/api/repeatWhen.cjs.map +1 -1
- package/_cjs/Observable/api/retryWhen.cjs +9 -8
- package/_cjs/Observable/api/retryWhen.cjs.map +1 -1
- package/_cjs/Observable/api/share.cjs +9 -9
- package/_cjs/Observable/api/share.cjs.map +1 -1
- package/_cjs/Observable/api/window.cjs +12 -11
- package/_cjs/Observable/api/window.cjs.map +1 -1
- package/_cjs/Observable/api/windowCount.cjs +12 -10
- package/_cjs/Observable/api/windowCount.cjs.map +1 -1
- package/_cjs/Observable/api/windowTime.cjs +12 -11
- package/_cjs/Observable/api/windowTime.cjs.map +1 -1
- package/_cjs/Observable/api/windowToggle.cjs +26 -24
- package/_cjs/Observable/api/windowToggle.cjs.map +1 -1
- package/_cjs/Observable/api/windowWhen.cjs +17 -15
- package/_cjs/Observable/api/windowWhen.cjs.map +1 -1
- package/_cjs/Observable/api.cjs +325 -311
- package/_cjs/Observable/api.cjs.map +1 -1
- package/_cjs/Observable/definition.cjs +7 -14
- package/_cjs/Observable/definition.cjs.map +1 -1
- package/_cjs/Observable/dom/animationFrames.cjs +3 -3
- package/_cjs/Observable/dom/animationFrames.cjs.map +1 -1
- package/_cjs/Observable.cjs +64 -64
- package/_cjs/Observable.cjs.map +1 -1
- package/_cjs/ObservableRef/api.cjs +2 -2
- package/_cjs/ObservableRef/atomic.cjs +2 -2
- package/_cjs/ObservableRef/definition.cjs +1 -1
- package/_cjs/ObservableRef.cjs +8 -8
- package/_cjs/ObservableRef.cjs.map +1 -1
- package/_cjs/Operator.cjs +9 -14
- package/_cjs/Operator.cjs.map +1 -1
- package/_cjs/Scheduler.cjs +2 -2
- package/_cjs/Subject.cjs +69 -43
- package/_cjs/Subject.cjs.map +1 -1
- package/_cjs/Subscriber.cjs +122 -70
- package/_cjs/Subscriber.cjs.map +1 -1
- package/_cjs/Subscription.cjs +7 -7
- package/_cjs/Subscription.cjs.map +1 -1
- package/_cjs/config.cjs +15 -0
- package/_cjs/config.cjs.map +1 -0
- package/_cjs/index.cjs +13 -13
- package/_cjs/internal/animationFrameProvider.cjs +1 -1
- package/_cjs/internal/args.cjs +1 -1
- package/_cjs/internal/util.cjs +2 -2
- package/_mjs/AsyncAction.mjs +3 -3
- package/_mjs/AsyncAction.mjs.map +1 -1
- package/_mjs/BehaviorSubject.mjs +1 -1
- package/_mjs/BehaviorSubject.mjs.map +1 -1
- package/_mjs/Observable/api/connect.mjs +6 -6
- package/_mjs/Observable/api/connect.mjs.map +1 -1
- package/_mjs/Observable/api/connectable.mjs +1 -1
- package/_mjs/Observable/api/connectable.mjs.map +1 -1
- package/_mjs/Observable/api/race.mjs +1 -1
- package/_mjs/Observable/api/race.mjs.map +1 -1
- package/_mjs/Observable/api/raceWith.mjs +3 -4
- package/_mjs/Observable/api/raceWith.mjs.map +1 -1
- package/_mjs/Observable/api/repeatWhen.mjs +9 -8
- package/_mjs/Observable/api/repeatWhen.mjs.map +1 -1
- package/_mjs/Observable/api/retryWhen.mjs +9 -8
- package/_mjs/Observable/api/retryWhen.mjs.map +1 -1
- package/_mjs/Observable/api/share.mjs +8 -8
- package/_mjs/Observable/api/share.mjs.map +1 -1
- package/_mjs/Observable/api/window.mjs +12 -11
- package/_mjs/Observable/api/window.mjs.map +1 -1
- package/_mjs/Observable/api/windowCount.mjs +12 -10
- package/_mjs/Observable/api/windowCount.mjs.map +1 -1
- package/_mjs/Observable/api/windowTime.mjs +11 -10
- package/_mjs/Observable/api/windowTime.mjs.map +1 -1
- package/_mjs/Observable/api/windowToggle.mjs +25 -23
- package/_mjs/Observable/api/windowToggle.mjs.map +1 -1
- package/_mjs/Observable/api/windowWhen.mjs +17 -15
- package/_mjs/Observable/api/windowWhen.mjs.map +1 -1
- package/_mjs/Observable/api.mjs +304 -290
- package/_mjs/Observable/api.mjs.map +1 -1
- package/_mjs/Observable/definition.mjs +2 -9
- package/_mjs/Observable/definition.mjs.map +1 -1
- package/_mjs/Observable/dom/animationFrames.mjs +1 -1
- package/_mjs/Observable/dom/animationFrames.mjs.map +1 -1
- package/_mjs/Observable.mjs +16 -18
- package/_mjs/Observable.mjs.map +1 -1
- package/_mjs/ObservableRef.mjs +2 -3
- package/_mjs/ObservableRef.mjs.map +1 -1
- package/_mjs/Operator.mjs +6 -11
- package/_mjs/Operator.mjs.map +1 -1
- package/_mjs/Subject.mjs +65 -39
- package/_mjs/Subject.mjs.map +1 -1
- package/_mjs/Subscriber.mjs +119 -67
- package/_mjs/Subscriber.mjs.map +1 -1
- package/_mjs/Subscription.mjs +6 -6
- package/_mjs/Subscription.mjs.map +1 -1
- package/_mjs/config.mjs +9 -0
- package/_mjs/config.mjs.map +1 -0
- package/_src/AsyncAction.ts +3 -3
- package/_src/BehaviorSubject.ts +1 -1
- package/_src/Observable/api/connect.ts +2 -2
- package/_src/Observable/api/connectable.ts +1 -1
- package/_src/Observable/api/race.ts +1 -1
- package/_src/Observable/api/raceWith.ts +2 -5
- package/_src/Observable/api/repeatWhen.ts +4 -4
- package/_src/Observable/api/retryWhen.ts +3 -3
- package/_src/Observable/api/share.ts +6 -6
- package/_src/Observable/api/window.ts +3 -3
- package/_src/Observable/api/windowCount.ts +30 -33
- package/_src/Observable/api/windowTime.ts +4 -4
- package/_src/Observable/api/windowToggle.ts +19 -21
- package/_src/Observable/api/windowWhen.ts +10 -13
- package/_src/Observable/api.ts +358 -363
- package/_src/Observable/definition.ts +2 -17
- package/_src/Observable/dom/animationFrames.ts +1 -1
- package/_src/Observable.ts +17 -18
- package/_src/ObservableRef.ts +2 -3
- package/_src/Operator.ts +9 -21
- package/_src/Subject.ts +66 -39
- package/_src/Subscriber.ts +134 -59
- package/_src/Subscription.ts +8 -8
- package/_src/config.ts +40 -0
- package/_src/global.ts +1 -1
- package/config.d.ts +36 -0
- package/global.d.ts +1 -1
- package/package.json +4 -2
|
@@ -10,7 +10,7 @@ export function race<O extends ReadonlyArray<ObservableInput<any, any>>>(
|
|
|
10
10
|
export function raceInit<R, E, A>(sources: ReadonlyArray<ObservableInput<R, E, A>>) {
|
|
11
11
|
return (subscriber: Subscriber<E, A>, environment: Environment<R>) => {
|
|
12
12
|
let subscriptions: Subscription[] = [];
|
|
13
|
-
for (let i = 0; subscriptions && !subscriber.
|
|
13
|
+
for (let i = 0; subscriptions && !subscriber._closed && i < sources.length; i++) {
|
|
14
14
|
subscriptions.push(
|
|
15
15
|
Observable.from(sources[i]!)
|
|
16
16
|
.provideEnvironment(environment)
|
|
@@ -11,10 +11,7 @@ export function raceWith<O extends ReadonlyArray<ObservableInput<any, any>>>(...
|
|
|
11
11
|
E | Observable.ErrorOf<O[number]>,
|
|
12
12
|
A | Observable.TypeOf<O[number]>
|
|
13
13
|
> => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
: fa.operate((source, subscriber, environment) => {
|
|
17
|
-
raceInit([source, ...sources])(subscriber as Subscriber<any, any>, environment);
|
|
18
|
-
});
|
|
14
|
+
// @ts-expect-error
|
|
15
|
+
return !sources.length ? fa : new Observable(raceInit([fa, ...sources]));
|
|
19
16
|
};
|
|
20
17
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @tsplus pipeable fncts.observable.Observable repeatWhen
|
|
3
3
|
*/
|
|
4
|
-
export function repeatWhen<
|
|
4
|
+
export function repeatWhen<R1, E1>(
|
|
5
5
|
notifier: (notifications: Observable<never, never, void>) => Observable<R1, E1, any>,
|
|
6
6
|
) {
|
|
7
7
|
return <R, E, A>(fa: Observable<R, E, A>): Observable<R | R1, E | E1, A> => {
|
|
8
|
-
return
|
|
8
|
+
return new Observable((subscriber, environment) => {
|
|
9
9
|
let innerSub: Subscription | null;
|
|
10
10
|
let syncResub = false;
|
|
11
11
|
let completions$: Subject<never, never, void>;
|
|
@@ -37,8 +37,8 @@ export function repeatWhen<R, E, A, R1, E1>(
|
|
|
37
37
|
};
|
|
38
38
|
const loop = () => {
|
|
39
39
|
isMainComplete = false;
|
|
40
|
-
innerSub =
|
|
41
|
-
|
|
40
|
+
innerSub = fa.provideEnvironment(environment).subscribe(
|
|
41
|
+
subscriber.operate({
|
|
42
42
|
complete: () => {
|
|
43
43
|
isMainComplete = true;
|
|
44
44
|
!checkComplete() && getCompletionSubject().next();
|
|
@@ -5,13 +5,13 @@ export function retryWhen<E, R1, E1>(
|
|
|
5
5
|
notifier: (errors: Observable<never, never, Cause<E>>) => Observable<R1, E1, any>,
|
|
6
6
|
) {
|
|
7
7
|
return <R, A>(fa: Observable<R, E, A>): Observable<R | R1, E | E1, A> => {
|
|
8
|
-
return
|
|
8
|
+
return new Observable((subscriber, environment) => {
|
|
9
9
|
let innerSub: Subscription | null;
|
|
10
10
|
let syncResub = false;
|
|
11
11
|
let defects$: Subject<never, never, any>;
|
|
12
12
|
const loop = () => {
|
|
13
|
-
innerSub =
|
|
14
|
-
|
|
13
|
+
innerSub = fa.provideEnvironment(environment).subscribe(
|
|
14
|
+
subscriber.operate({
|
|
15
15
|
error: (err) => {
|
|
16
16
|
if (!defects$) {
|
|
17
17
|
defects$ = new Subject();
|
|
@@ -18,9 +18,9 @@ export function share<R, E, A, R1 = never, E1 = never, R2 = never, E2 = never, R
|
|
|
18
18
|
resetOnComplete = true,
|
|
19
19
|
resetOnRefCountZero = true,
|
|
20
20
|
} = options;
|
|
21
|
-
let connection:
|
|
22
|
-
let resetConnection: Subscription | null
|
|
23
|
-
let subject: Subject<R, E, A> | null
|
|
21
|
+
let connection: Subscriber<E, A> | null = null;
|
|
22
|
+
let resetConnection: Subscription | null = null;
|
|
23
|
+
let subject: Subject<R, E, A> | null = null;
|
|
24
24
|
let refCount = 0;
|
|
25
25
|
let hasCompleted = false;
|
|
26
26
|
let hasErrored = false;
|
|
@@ -38,7 +38,7 @@ export function share<R, E, A, R1 = never, E1 = never, R2 = never, E2 = never, R
|
|
|
38
38
|
reset();
|
|
39
39
|
conn?.unsubscribe();
|
|
40
40
|
};
|
|
41
|
-
return
|
|
41
|
+
return new Observable((subscriber, environment) => {
|
|
42
42
|
refCount++;
|
|
43
43
|
if (!hasErrored && !hasCompleted) {
|
|
44
44
|
cancelReset();
|
|
@@ -52,7 +52,7 @@ export function share<R, E, A, R1 = never, E1 = never, R2 = never, E2 = never, R
|
|
|
52
52
|
});
|
|
53
53
|
dest.provideEnvironment(environment).subscribe(subscriber);
|
|
54
54
|
if (!connection) {
|
|
55
|
-
connection = new
|
|
55
|
+
connection = new Subscriber({
|
|
56
56
|
next: (value) => dest.next(value),
|
|
57
57
|
error: (defect) => {
|
|
58
58
|
hasErrored = true;
|
|
@@ -67,7 +67,7 @@ export function share<R, E, A, R1 = never, E1 = never, R2 = never, E2 = never, R
|
|
|
67
67
|
dest.complete();
|
|
68
68
|
},
|
|
69
69
|
});
|
|
70
|
-
Observable.from(
|
|
70
|
+
Observable.from(fa).provideEnvironment(environment).subscribe(connection);
|
|
71
71
|
}
|
|
72
72
|
});
|
|
73
73
|
};
|
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export function window(windowBoundaries: Observable<never, never, any>) {
|
|
5
5
|
return <R, E, A>(fa: Observable<R, E, A>): Observable<R, E, Observable<never, E, A>> => {
|
|
6
|
-
return
|
|
6
|
+
return new Observable((subscriber, environment) => {
|
|
7
7
|
let windowSubject: Subject<never, E, A> = new Subject();
|
|
8
8
|
subscriber.next(windowSubject.asObservable());
|
|
9
9
|
const errorHandler = (err: Cause<E>) => {
|
|
10
10
|
windowSubject.error(err);
|
|
11
11
|
subscriber.error(err);
|
|
12
12
|
};
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
fa.provideEnvironment(environment).subscribe(
|
|
14
|
+
subscriber.operate({
|
|
15
15
|
next: (value) => windowSubject.next(value),
|
|
16
16
|
error: errorHandler,
|
|
17
17
|
complete: () => {
|
|
@@ -4,45 +4,42 @@
|
|
|
4
4
|
export function windowCount(windowSize: number, startWindowEvery = 0) {
|
|
5
5
|
return <R, E, A>(fa: Observable<R, E, A>): Observable<R, E, Observable<never, E, A>> => {
|
|
6
6
|
const startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize;
|
|
7
|
-
return
|
|
7
|
+
return new Observable((subscriber, environment) => {
|
|
8
8
|
let windows = [new Subject<never, E, A>()];
|
|
9
9
|
let count = 0;
|
|
10
10
|
subscriber.next(windows[0]!.asObservable());
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
subscriber.next(window.asObservable());
|
|
27
|
-
}
|
|
28
|
-
},
|
|
29
|
-
complete: () => {
|
|
30
|
-
while (windows.length > 0) {
|
|
31
|
-
windows.shift()!.complete();
|
|
32
|
-
}
|
|
33
|
-
subscriber.complete();
|
|
34
|
-
},
|
|
35
|
-
error: (err) => {
|
|
36
|
-
while (windows.length > 0) {
|
|
37
|
-
windows.shift()!.error(err);
|
|
38
|
-
}
|
|
39
|
-
subscriber.error(err);
|
|
40
|
-
},
|
|
11
|
+
fa.provideEnvironment(environment).subscribe(
|
|
12
|
+
subscriber.operate({
|
|
13
|
+
next: (value) => {
|
|
14
|
+
for (const window of windows) {
|
|
15
|
+
window.next(value);
|
|
16
|
+
}
|
|
17
|
+
const c = count - windowSize + 1;
|
|
18
|
+
if (c >= 0 && c % startEvery === 0) {
|
|
19
|
+
windows.shift()!.complete();
|
|
20
|
+
}
|
|
21
|
+
if (++count && startEvery === 0) {
|
|
22
|
+
const window = new Subject<never, E, A>();
|
|
23
|
+
windows.push(window);
|
|
24
|
+
subscriber.next(window.asObservable());
|
|
25
|
+
}
|
|
41
26
|
},
|
|
42
|
-
() => {
|
|
27
|
+
complete: () => {
|
|
28
|
+
while (windows.length > 0) {
|
|
29
|
+
windows.shift()!.complete();
|
|
30
|
+
}
|
|
31
|
+
subscriber.complete();
|
|
32
|
+
},
|
|
33
|
+
error: (err) => {
|
|
34
|
+
while (windows.length > 0) {
|
|
35
|
+
windows.shift()!.error(err);
|
|
36
|
+
}
|
|
37
|
+
subscriber.error(err);
|
|
38
|
+
},
|
|
39
|
+
finalize: () => {
|
|
43
40
|
windows = null!;
|
|
44
41
|
},
|
|
45
|
-
),
|
|
42
|
+
}),
|
|
46
43
|
);
|
|
47
44
|
});
|
|
48
45
|
};
|
|
@@ -30,7 +30,7 @@ export function windowTime(windowTimeSpan: number, ...args: any[]) {
|
|
|
30
30
|
const scheduler = popScheduler(args) ?? asyncScheduler;
|
|
31
31
|
const windowCreationInterval: number | null = args[0] ?? null;
|
|
32
32
|
const maxWindowSize: number = args[1] || Infinity;
|
|
33
|
-
return
|
|
33
|
+
return new Observable((subscriber, environment) => {
|
|
34
34
|
let windowRecords: WindowRecord<never, E, A>[] | null = [];
|
|
35
35
|
let restartOnClose = false;
|
|
36
36
|
const closeWindow = (record: { window: Subject<never, E, A>; subs: Subscription }) => {
|
|
@@ -59,7 +59,7 @@ export function windowTime(windowTimeSpan: number, ...args: any[]) {
|
|
|
59
59
|
? subscriber.add(
|
|
60
60
|
scheduler.schedule(function () {
|
|
61
61
|
startWindow();
|
|
62
|
-
!this.
|
|
62
|
+
!this._closed && subscriber.add(this.schedule(null, windowCreationInterval));
|
|
63
63
|
}, windowCreationInterval),
|
|
64
64
|
)
|
|
65
65
|
: (restartOnClose = true);
|
|
@@ -70,8 +70,8 @@ export function windowTime(windowTimeSpan: number, ...args: any[]) {
|
|
|
70
70
|
cb(subscriber);
|
|
71
71
|
subscriber.unsubscribe();
|
|
72
72
|
};
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
fa.provideEnvironment(environment).subscribe(
|
|
74
|
+
subscriber.operate({
|
|
75
75
|
next: (value) => {
|
|
76
76
|
loop((record) => {
|
|
77
77
|
record.window.next(value);
|
|
@@ -8,7 +8,7 @@ export function windowToggle<R1, E1, B, R2, E2>(
|
|
|
8
8
|
closingSelector: (openValue: B) => ObservableInput<R2, E2, any>,
|
|
9
9
|
) {
|
|
10
10
|
return <R, E, A>(fa: Observable<R, E, A>): Observable<R | R1 | R2, E | E1 | E2, Observable<never, E, A>> => {
|
|
11
|
-
return
|
|
11
|
+
return new Observable((subscriber, environment) => {
|
|
12
12
|
const windows: Subject<never, E, A>[] = [];
|
|
13
13
|
const handleError = (err: Cause<E>) => {
|
|
14
14
|
while (0 < windows.length) {
|
|
@@ -19,7 +19,7 @@ export function windowToggle<R1, E1, B, R2, E2>(
|
|
|
19
19
|
Observable.from(openings)
|
|
20
20
|
.provideEnvironment(environment)
|
|
21
21
|
.subscribe(
|
|
22
|
-
|
|
22
|
+
subscriber.operate({
|
|
23
23
|
next: (openValue) => {
|
|
24
24
|
const window = new Subject<never, E, A>();
|
|
25
25
|
windows.push(window);
|
|
@@ -50,30 +50,28 @@ export function windowToggle<R1, E1, B, R2, E2>(
|
|
|
50
50
|
complete: noop,
|
|
51
51
|
}),
|
|
52
52
|
);
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
window.next(value);
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
error: handleError,
|
|
64
|
-
complete: () => {
|
|
65
|
-
while (0 < windows.length) {
|
|
66
|
-
windows.shift()!.complete();
|
|
67
|
-
}
|
|
68
|
-
subscriber.complete();
|
|
69
|
-
},
|
|
53
|
+
fa.provideEnvironment(environment).subscribe(
|
|
54
|
+
subscriber.operate({
|
|
55
|
+
next: (value) => {
|
|
56
|
+
const windowsCopy = windows.slice();
|
|
57
|
+
for (const window of windowsCopy) {
|
|
58
|
+
window.next(value);
|
|
59
|
+
}
|
|
70
60
|
},
|
|
71
|
-
|
|
61
|
+
error: handleError,
|
|
62
|
+
complete: () => {
|
|
63
|
+
while (0 < windows.length) {
|
|
64
|
+
windows.shift()!.complete();
|
|
65
|
+
}
|
|
66
|
+
subscriber.complete();
|
|
67
|
+
},
|
|
68
|
+
|
|
69
|
+
finalize: () => {
|
|
72
70
|
while (0 < windows.length) {
|
|
73
71
|
windows.shift()!.unsubscribe();
|
|
74
72
|
}
|
|
75
73
|
},
|
|
76
|
-
),
|
|
74
|
+
}),
|
|
77
75
|
);
|
|
78
76
|
});
|
|
79
77
|
};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export function windowWhen(closingSelector: () => ObservableInput<never, never, any>) {
|
|
5
5
|
return <R, E, A>(fa: Observable<R, E, A>): Observable<R, E, Observable<never, E, A>> => {
|
|
6
|
-
return
|
|
6
|
+
return new Observable((subscriber, environment) => {
|
|
7
7
|
let window: Subject<never, E, A> | null;
|
|
8
8
|
let closingSubscriber: Subscriber<E, any> | undefined;
|
|
9
9
|
const handleError = (err: Cause<E>) => {
|
|
@@ -31,22 +31,19 @@ export function windowWhen(closingSelector: () => ObservableInput<never, never,
|
|
|
31
31
|
);
|
|
32
32
|
};
|
|
33
33
|
openWindow();
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
complete
|
|
41
|
-
window!.complete();
|
|
42
|
-
subscriber.complete();
|
|
43
|
-
},
|
|
34
|
+
fa.provideEnvironment(environment).subscribe(
|
|
35
|
+
subscriber.operate({
|
|
36
|
+
next: (value) => window!.next(value),
|
|
37
|
+
error: handleError,
|
|
38
|
+
complete: () => {
|
|
39
|
+
window!.complete();
|
|
40
|
+
subscriber.complete();
|
|
44
41
|
},
|
|
45
|
-
() => {
|
|
42
|
+
finalize: () => {
|
|
46
43
|
closingSubscriber?.unsubscribe();
|
|
47
44
|
window = null!;
|
|
48
45
|
},
|
|
49
|
-
),
|
|
46
|
+
}),
|
|
50
47
|
);
|
|
51
48
|
});
|
|
52
49
|
};
|