@fncts/observable 0.0.1 → 0.0.4

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.
Files changed (98) hide show
  1. package/BehaviorSubject.d.ts +1 -1
  2. package/Notification.d.ts +1 -1
  3. package/Observable/api/connect.d.ts +1 -1
  4. package/Observable/api/connectable.d.ts +5 -5
  5. package/Observable/api/fromCallback.d.ts +2 -2
  6. package/Observable/api/fromEvent.d.ts +1 -1
  7. package/Observable/api/race.d.ts +2 -2
  8. package/Observable/api/raceWith.d.ts +1 -1
  9. package/Observable/api/repeatWhen.d.ts +2 -2
  10. package/Observable/api/retryWhen.d.ts +3 -3
  11. package/Observable/api/share.d.ts +5 -6
  12. package/Observable/api/window.d.ts +2 -2
  13. package/Observable/api/windowCount.d.ts +1 -1
  14. package/Observable/api/windowTime.d.ts +3 -3
  15. package/Observable/api/windowToggle.d.ts +2 -2
  16. package/Observable/api/windowWhen.d.ts +2 -2
  17. package/Observable/api.d.ts +204 -164
  18. package/Observable/definition.d.ts +33 -15
  19. package/Observable/dom/animationFrames.d.ts +1 -1
  20. package/Observer.d.ts +1 -1
  21. package/Operator.d.ts +4 -3
  22. package/Subject.d.ts +10 -9
  23. package/Subscriber.d.ts +1 -1
  24. package/_cjs/BehaviorSubject.cjs.map +1 -1
  25. package/_cjs/Observable/api/connect.cjs.map +1 -1
  26. package/_cjs/Observable/api/connectable.cjs.map +1 -1
  27. package/_cjs/Observable/api/fromCallback.cjs.map +1 -1
  28. package/_cjs/Observable/api/race.cjs.map +1 -1
  29. package/_cjs/Observable/api/raceWith.cjs.map +1 -1
  30. package/_cjs/Observable/api/repeatWhen.cjs.map +1 -1
  31. package/_cjs/Observable/api/retryWhen.cjs.map +1 -1
  32. package/_cjs/Observable/api/share.cjs +2 -11
  33. package/_cjs/Observable/api/share.cjs.map +1 -1
  34. package/_cjs/Observable/api/window.cjs.map +1 -1
  35. package/_cjs/Observable/api/windowTime.cjs.map +1 -1
  36. package/_cjs/Observable/api/windowToggle.cjs.map +1 -1
  37. package/_cjs/Observable/api/windowWhen.cjs.map +1 -1
  38. package/_cjs/Observable/api.cjs +326 -309
  39. package/_cjs/Observable/api.cjs.map +1 -1
  40. package/_cjs/Observable/definition.cjs +102 -16
  41. package/_cjs/Observable/definition.cjs.map +1 -1
  42. package/_cjs/Operator.cjs.map +1 -1
  43. package/_cjs/Subject.cjs +2 -2
  44. package/_cjs/Subject.cjs.map +1 -1
  45. package/_cjs/global.cjs +3 -1
  46. package/_cjs/global.cjs.map +1 -1
  47. package/_mjs/BehaviorSubject.mjs.map +1 -1
  48. package/_mjs/Observable/api/connect.mjs.map +1 -1
  49. package/_mjs/Observable/api/connectable.mjs.map +1 -1
  50. package/_mjs/Observable/api/fromCallback.mjs.map +1 -1
  51. package/_mjs/Observable/api/race.mjs.map +1 -1
  52. package/_mjs/Observable/api/raceWith.mjs.map +1 -1
  53. package/_mjs/Observable/api/repeatWhen.mjs.map +1 -1
  54. package/_mjs/Observable/api/retryWhen.mjs.map +1 -1
  55. package/_mjs/Observable/api/share.mjs +1 -6
  56. package/_mjs/Observable/api/share.mjs.map +1 -1
  57. package/_mjs/Observable/api/window.mjs.map +1 -1
  58. package/_mjs/Observable/api/windowTime.mjs.map +1 -1
  59. package/_mjs/Observable/api/windowToggle.mjs.map +1 -1
  60. package/_mjs/Observable/api/windowWhen.mjs.map +1 -1
  61. package/_mjs/Observable/api.mjs +302 -294
  62. package/_mjs/Observable/api.mjs.map +1 -1
  63. package/_mjs/Observable/definition.mjs +97 -15
  64. package/_mjs/Observable/definition.mjs.map +1 -1
  65. package/_mjs/Operator.mjs.map +1 -1
  66. package/_mjs/Subject.mjs +2 -2
  67. package/_mjs/Subject.mjs.map +1 -1
  68. package/_mjs/global.mjs +1 -1
  69. package/_mjs/global.mjs.map +1 -1
  70. package/_src/BehaviorSubject.ts +1 -1
  71. package/_src/Observable/api/connect.ts +5 -5
  72. package/_src/Observable/api/connectable.ts +7 -7
  73. package/_src/Observable/api/fromCallback.ts +8 -5
  74. package/_src/Observable/api/fromEvent.ts +1 -1
  75. package/_src/Observable/api/race.ts +2 -2
  76. package/_src/Observable/api/raceWith.ts +7 -3
  77. package/_src/Observable/api/repeatWhen.ts +8 -8
  78. package/_src/Observable/api/retryWhen.ts +8 -8
  79. package/_src/Observable/api/share.ts +10 -16
  80. package/_src/Observable/api/window.ts +5 -5
  81. package/_src/Observable/api/windowCount.ts +5 -5
  82. package/_src/Observable/api/windowTime.ts +18 -18
  83. package/_src/Observable/api/windowToggle.ts +8 -8
  84. package/_src/Observable/api/windowWhen.ts +6 -6
  85. package/_src/Observable/api.ts +525 -430
  86. package/_src/Observable/definition.ts +94 -21
  87. package/_src/Observable/dom/animationFrames.ts +2 -2
  88. package/_src/Operator.ts +6 -6
  89. package/_src/Subject.ts +9 -9
  90. package/_src/global.ts +5 -34
  91. package/global.d.ts +5 -33
  92. package/package.json +6 -2
  93. package/_cjs/demo.cjs +0 -40
  94. package/_cjs/demo.cjs.map +0 -1
  95. package/_mjs/demo.mjs +0 -30
  96. package/_mjs/demo.mjs.map +0 -1
  97. package/_src/demo.ts +0 -29
  98. package/demo.d.ts +0 -1
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export function fromCallback<A extends ReadonlyArray<unknown>, R extends ReadonlyArray<unknown>>(
5
5
  callbackFunc: (...args: [...A, (...res: R) => void]) => void,
6
- ): (...args: A) => Observable<unknown, R> {
6
+ ): (...args: A) => Observable<never, unknown, R> {
7
7
  // @ts-expect-error
8
8
  return fromCallbackInternal(false, callbackFunc);
9
9
  }
@@ -13,14 +13,17 @@ export function fromCallback<A extends ReadonlyArray<unknown>, R extends Readonl
13
13
  */
14
14
  export function fromNodeCallback<E, A extends ReadonlyArray<unknown>, R extends ReadonlyArray<unknown>>(
15
15
  callbackFunc: (...args: [...A, (err: E, ...res: R) => void]) => void,
16
- ): (...args: A) => Observable<Exclude<E, null | undefined>, R extends [] ? void : R extends [any] ? R[0] : R> {
16
+ ): (...args: A) => Observable<never, Exclude<E, null | undefined>, R extends [] ? void : R extends [any] ? R[0] : R> {
17
17
  // @ts-expect-error
18
18
  return fromCallbackInternal(true, callbackFunc);
19
19
  }
20
20
 
21
- function fromCallbackInternal(isNodeStyle: boolean, callbackFunc: any): (...args: any[]) => Observable<unknown, any> {
22
- return function (this: any, ...args: any[]): Observable<unknown, any> {
23
- const subject = new AsyncSubject<any, any>();
21
+ function fromCallbackInternal(
22
+ isNodeStyle: boolean,
23
+ callbackFunc: any,
24
+ ): (...args: any[]) => Observable<never, unknown, any> {
25
+ return function (this: any, ...args: any[]): Observable<never, unknown, any> {
26
+ const subject = new AsyncSubject<never, any, any>();
24
27
  let uninitialized = true;
25
28
  return new Observable((subscriber) => {
26
29
  const subs = subject.subscribe(subscriber);
@@ -3,7 +3,7 @@ type EventHandler = (...args: any[]) => void;
3
3
  export function fromEvent<A extends ReadonlyArray<unknown>>(
4
4
  addHandler: (handler: (...args: A) => void) => any,
5
5
  removeHandler?: (handler: EventHandler, signal?: any) => void,
6
- ): Observable<never, A extends [infer X] ? X : A> {
6
+ ): Observable<never, never, A extends [infer X] ? X : A> {
7
7
  return new Observable((subscriber) => {
8
8
  const handler = (...e: any[]) => subscriber.next(e.length === 1 ? e[0] : e);
9
9
  const retValue = addHandler(handler as any);
@@ -3,11 +3,11 @@
3
3
  */
4
4
  export function race<O extends ReadonlyArray<ObservableInput<any, any>>>(
5
5
  ...sources: O
6
- ): Observable<Observable.ErrorOf<O[number]>, Observable.TypeOf<O[number]>> {
6
+ ): Observable<Observable.EnvironmentOf<O[number]>, Observable.ErrorOf<O[number]>, Observable.TypeOf<O[number]>> {
7
7
  return sources.length === 1 ? Observable.from(sources[0]!) : new Observable(raceInit(sources));
8
8
  }
9
9
 
10
- export function raceInit<E, A>(sources: ReadonlyArray<ObservableInput<E, A>>) {
10
+ export function raceInit<R, E, A>(sources: ReadonlyArray<ObservableInput<R, E, A>>) {
11
11
  return (subscriber: Subscriber<E, A>) => {
12
12
  let subscriptions: Subscription[] = [];
13
13
  for (let i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) {
@@ -3,10 +3,14 @@ import { raceInit } from "./race.js";
3
3
  /**
4
4
  * @tsplus fluent fncts.observable.Observablen raceWith
5
5
  */
6
- export function raceWith_<E, A, O extends ReadonlyArray<ObservableInput<any, any>>>(
7
- fa: Observable<E, A>,
6
+ export function raceWith_<R, E, A, O extends ReadonlyArray<ObservableInput<any, any>>>(
7
+ fa: Observable<R, E, A>,
8
8
  ...sources: O
9
- ): Observable<E | Observable.ErrorOf<O[number]>, A | Observable.TypeOf<O[number]>> {
9
+ ): Observable<
10
+ R | Observable.EnvironmentOf<O[number]>,
11
+ E | Observable.ErrorOf<O[number]>,
12
+ A | Observable.TypeOf<O[number]>
13
+ > {
10
14
  return !sources.length
11
15
  ? fa
12
16
  : fa.operate((source, subscriber) => {
@@ -1,11 +1,11 @@
1
- export function repeatWhen_<E, A, E1>(
2
- fa: Observable<E, A>,
3
- notifier: (notifications: Observable<never, void>) => Observable<E1, any>,
4
- ): Observable<E | E1, A> {
1
+ export function repeatWhen_<R, E, A, R1, E1>(
2
+ fa: Observable<R, E, A>,
3
+ notifier: (notifications: Observable<never, never, void>) => Observable<R1, E1, any>,
4
+ ): Observable<R | R1, E | E1, A> {
5
5
  return fa.operate((source, subscriber) => {
6
6
  let innerSub: Subscription | null;
7
7
  let syncResub = false;
8
- let completions$: Subject<never, void>;
8
+ let completions$: Subject<never, never, void>;
9
9
  let isNotifierComplete = false;
10
10
  let isMainComplete = false;
11
11
 
@@ -56,8 +56,8 @@ export function repeatWhen_<E, A, E1>(
56
56
  });
57
57
  }
58
58
 
59
- export function repeatWhen<E1>(
60
- notifier: (notifications: Observable<never, void>) => Observable<E1, any>,
61
- ): <E, A>(fa: Observable<E, A>) => Observable<E | E1, A> {
59
+ export function repeatWhen<R1, E1>(
60
+ notifier: (notifications: Observable<never, never, void>) => Observable<R1, E1, any>,
61
+ ): <R, E, A>(fa: Observable<R, E, A>) => Observable<R | R1, E | E1, A> {
62
62
  return (fa) => repeatWhen_(fa, notifier);
63
63
  }
@@ -1,14 +1,14 @@
1
1
  /**
2
2
  * @tsplus fluent fncts.observable.Observable retryWhen
3
3
  */
4
- export function retryWhen_<E, A, E1>(
5
- fa: Observable<E, A>,
6
- notifier: (errors: Observable<never, Cause<E>>) => Observable<E1, any>,
7
- ): Observable<E | E1, A> {
4
+ export function retryWhen_<R, E, A, R1, E1>(
5
+ fa: Observable<R, E, A>,
6
+ notifier: (errors: Observable<never, never, Cause<E>>) => Observable<R1, E1, any>,
7
+ ): Observable<R | R1, E | E1, A> {
8
8
  return operate_(fa, (source, subscriber) => {
9
9
  let innerSub: Subscription | null;
10
10
  let syncResub = false;
11
- let defects$: Subject<never, any>;
11
+ let defects$: Subject<never, never, any>;
12
12
 
13
13
  const loop = () => {
14
14
  innerSub = source.subscribe(
@@ -40,8 +40,8 @@ export function retryWhen_<E, A, E1>(
40
40
  });
41
41
  }
42
42
 
43
- export function retryWhen<E1>(
44
- notifier: (errors: Observable<never, any>) => Observable<E1, any>,
45
- ): <E, A>(fa: Observable<E, A>) => Observable<E | E1, A> {
43
+ export function retryWhen<R1, E1>(
44
+ notifier: (errors: Observable<never, never, any>) => Observable<R1, E1, any>,
45
+ ): <R, E, A>(fa: Observable<R, E, A>) => Observable<R | R1, E | E1, A> {
46
46
  return (fa) => retryWhen_(fa, notifier);
47
47
  }
@@ -1,19 +1,19 @@
1
- export interface ShareConfig<E, A, E1 = never, E2 = never, E3 = never> {
1
+ export interface ShareConfig<R, E, A, R1 = never, E1 = never, R2 = never, E2 = never, R3 = never, E3 = never> {
2
2
  readonly connector?: () => SubjectLike<E, A>;
3
- readonly resetOnDefect?: boolean | ((err: unknown) => Observable<E1, any>);
4
- readonly resetOnComplete?: boolean | (() => Observable<E2, any>);
5
- readonly resetOnRefCountZero?: boolean | (() => Observable<E3, any>);
3
+ readonly resetOnDefect?: boolean | ((err: unknown) => Observable<R1, E1, any>);
4
+ readonly resetOnComplete?: boolean | (() => Observable<R2, E2, any>);
5
+ readonly resetOnRefCountZero?: boolean | (() => Observable<R3, E3, any>);
6
6
  }
7
7
 
8
8
  /**
9
9
  * @tsplus fluent fncts.observable.Observable share
10
10
  */
11
- export function share_<E, A, E1 = never, E2 = never, E3 = never>(
12
- fa: Observable<E, A>,
13
- options: ShareConfig<E, A, E1, E2, E3> = {},
14
- ): Observable<E | E1 | E2 | E3, A> {
11
+ export function share_<R, E, A, R1 = never, E1 = never, R2 = never, E2 = never, R3 = never, E3 = never>(
12
+ fa: Observable<R, E, A>,
13
+ options: ShareConfig<R, E, A, R1, E1, R2, E2, R3, E3> = {},
14
+ ): Observable<R | R1 | R2, E | E1 | E2 | E3, A> {
15
15
  const {
16
- connector = () => new Subject<E, A>(),
16
+ connector = () => new Subject<R, E, A>(),
17
17
  resetOnDefect = true,
18
18
  resetOnComplete = true,
19
19
  resetOnRefCountZero = true,
@@ -81,15 +81,9 @@ export function share_<E, A, E1 = never, E2 = never, E3 = never>(
81
81
  });
82
82
  }
83
83
 
84
- export function share<E, A, E1, E2, E3>(
85
- options: ShareConfig<E, A, E1, E2, E3> = {},
86
- ): (fa: Observable<E, A>) => Observable<E | E1 | E2 | E3, A> {
87
- return (fa) => share_(fa, options);
88
- }
89
-
90
84
  function handleReset<T extends unknown[] = never[]>(
91
85
  reset: () => void,
92
- on: boolean | ((...args: T) => Observable<any, any>),
86
+ on: boolean | ((...args: T) => Observable<any, any, any>),
93
87
  ...args: T
94
88
  ): Subscription | null {
95
89
  if (on === true) {
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * @tsplus fluent fncts.observable.Observable window
3
3
  */
4
- export function window_<E, A>(
5
- fa: Observable<E, A>,
6
- windowBoundaries: Observable<never, any>,
7
- ): Observable<E, Observable<E, A>> {
4
+ export function window_<R, E, A>(
5
+ fa: Observable<R, E, A>,
6
+ windowBoundaries: Observable<never, never, any>,
7
+ ): Observable<R, E, Observable<never, E, A>> {
8
8
  return operate_(fa, (source, subscriber) => {
9
- let windowSubject: Subject<E, A> = new Subject();
9
+ let windowSubject: Subject<never, E, A> = new Subject();
10
10
  subscriber.next(windowSubject.asObservable());
11
11
 
12
12
  const errorHandler = (err: Cause<E>) => {
@@ -1,15 +1,15 @@
1
1
  /**
2
2
  * @tsplus fluent fncts.observable.Observable windowCount
3
3
  */
4
- export function windowCount_<E, A>(
5
- fa: Observable<E, A>,
4
+ export function windowCount_<R, E, A>(
5
+ fa: Observable<R, E, A>,
6
6
  windowSize: number,
7
7
  startWindowEvery = 0,
8
- ): Observable<E, Observable<E, A>> {
8
+ ): Observable<R, E, Observable<never, E, A>> {
9
9
  const startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize;
10
10
 
11
11
  return operate_(fa, (source, subscriber) => {
12
- let windows = [new Subject<E, A>()];
12
+ let windows = [new Subject<never, E, A>()];
13
13
  let count = 0;
14
14
 
15
15
  subscriber.next(windows[0]!.asObservable());
@@ -29,7 +29,7 @@ export function windowCount_<E, A>(
29
29
  }
30
30
 
31
31
  if (++count && startEvery === 0) {
32
- const window = new Subject<E, A>();
32
+ const window = new Subject<never, E, A>();
33
33
  windows.push(window);
34
34
  subscriber.next(window.asObservable());
35
35
  }
@@ -1,46 +1,46 @@
1
1
  import { popScheduler } from "@fncts/observable/internal/args";
2
2
  import { arrayRemove } from "@fncts/observable/internal/util";
3
3
 
4
- interface WindowRecord<E, A> {
4
+ interface WindowRecord<R, E, A> {
5
5
  seen: number;
6
- window: Subject<E, A>;
6
+ window: Subject<R, E, A>;
7
7
  subs: Subscription;
8
8
  }
9
9
 
10
10
  /**
11
11
  * @tsplus fluent fncts.observable.Observable windowTime
12
12
  */
13
- export function windowTime_<E, A>(
14
- fa: Observable<E, A>,
13
+ export function windowTime_<R, E, A>(
14
+ fa: Observable<R, E, A>,
15
15
  windowTimeSpan: number,
16
16
  scheduler?: SchedulerLike,
17
- ): Observable<E, Observable<E, A>>;
18
- export function windowTime_<E, A>(
19
- fa: Observable<E, A>,
17
+ ): Observable<R, E, Observable<never, E, A>>;
18
+ export function windowTime_<R, E, A>(
19
+ fa: Observable<R, E, A>,
20
20
  windowTimeSpan: number,
21
21
  windowCreationInterval: number,
22
22
  scheduler?: SchedulerLike,
23
- ): Observable<E, Observable<E, A>>;
24
- export function windowTime_<E, A>(
25
- fa: Observable<E, A>,
23
+ ): Observable<R, E, Observable<never, E, A>>;
24
+ export function windowTime_<R, E, A>(
25
+ fa: Observable<R, E, A>,
26
26
  windowTimeSpan: number,
27
27
  windowCreationInterval: number,
28
28
  maxWindowSize: number,
29
29
  scheduler?: SchedulerLike,
30
- ): Observable<E, Observable<E, A>>;
31
- export function windowTime_<E, A>(
32
- fa: Observable<E, A>,
30
+ ): Observable<R, E, Observable<never, E, A>>;
31
+ export function windowTime_<R, E, A>(
32
+ fa: Observable<R, E, A>,
33
33
  windowTimeSpan: number,
34
34
  ...args: any[]
35
- ): Observable<E, Observable<E, A>> {
35
+ ): Observable<R, E, Observable<never, E, A>> {
36
36
  const scheduler = popScheduler(args) ?? asyncScheduler;
37
37
  const windowCreationInterval: number | null = args[0] ?? null;
38
38
  const maxWindowSize: number = args[1] || Infinity;
39
39
 
40
40
  return operate_(fa, (source, subscriber) => {
41
- let windowRecords: WindowRecord<E, A>[] | null = [];
41
+ let windowRecords: WindowRecord<never, E, A>[] | null = [];
42
42
  let restartOnClose = false;
43
- const closeWindow = (record: { window: Subject<E, A>; subs: Subscription }) => {
43
+ const closeWindow = (record: { window: Subject<never, E, A>; subs: Subscription }) => {
44
44
  const { window, subs } = record;
45
45
  window.complete();
46
46
  subs.unsubscribe();
@@ -51,7 +51,7 @@ export function windowTime_<E, A>(
51
51
  if (windowRecords) {
52
52
  const subs = new Subscription();
53
53
  subscriber.add(subs);
54
- const window = new Subject<E, A>();
54
+ const window = new Subject<never, E, A>();
55
55
  const record = {
56
56
  window,
57
57
  subs,
@@ -74,7 +74,7 @@ export function windowTime_<E, A>(
74
74
 
75
75
  startWindow();
76
76
 
77
- const loop = (cb: (record: WindowRecord<E, A>) => void) => windowRecords!.slice().forEach(cb);
77
+ const loop = (cb: (record: WindowRecord<never, E, A>) => void) => windowRecords!.slice().forEach(cb);
78
78
 
79
79
  const terminate = (cb: (consumer: Observer<E, any>) => void) => {
80
80
  loop(({ window }) => cb(window));
@@ -3,13 +3,13 @@ import { arrayRemove } from "@fncts/observable/internal/util";
3
3
  /**
4
4
  * @tsplus fluent fncts.observable.Observable windowToggle
5
5
  */
6
- export function windowToggle_<E, A, E1, B, E2>(
7
- fa: Observable<E, A>,
8
- openings: ObservableInput<E1, B>,
9
- closingSelector: (openValue: B) => ObservableInput<E2, any>,
10
- ): Observable<E | E1 | E2, Observable<E, A>> {
6
+ export function windowToggle_<R, E, A, R1, E1, B, R2, E2>(
7
+ fa: Observable<R, E, A>,
8
+ openings: ObservableInput<R1, E1, B>,
9
+ closingSelector: (openValue: B) => ObservableInput<R2, E2, any>,
10
+ ): Observable<R | R1 | R2, E | E1 | E2, Observable<never, E, A>> {
11
11
  return operate_(fa, (source, subscriber) => {
12
- const windows: Subject<E, A>[] = [];
12
+ const windows: Subject<never, E, A>[] = [];
13
13
 
14
14
  const handleError = (err: Cause<E>) => {
15
15
  while (0 < windows.length) {
@@ -21,7 +21,7 @@ export function windowToggle_<E, A, E1, B, E2>(
21
21
  Observable.from(openings).subscribe(
22
22
  operatorSubscriber(subscriber, {
23
23
  next: (openValue) => {
24
- const window = new Subject<E, A>();
24
+ const window = new Subject<never, E, A>();
25
25
  windows.push(window);
26
26
  const closingSubscription = new Subscription();
27
27
  const closeWindow = () => {
@@ -30,7 +30,7 @@ export function windowToggle_<E, A, E1, B, E2>(
30
30
  closingSubscription.unsubscribe();
31
31
  };
32
32
 
33
- let closingNotifier: Observable<E2, any>;
33
+ let closingNotifier: Observable<R2, E2, any>;
34
34
 
35
35
  try {
36
36
  closingNotifier = Observable.from(closingSelector(openValue));
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * @tsplus fluent fncts.observable.Observable windowWhen
3
3
  */
4
- export function windowWhen_<E, A>(
5
- fa: Observable<E, A>,
6
- closingSelector: () => ObservableInput<never, any>,
7
- ): Observable<E, Observable<E, A>> {
4
+ export function windowWhen_<R, E, A>(
5
+ fa: Observable<R, E, A>,
6
+ closingSelector: () => ObservableInput<never, never, any>,
7
+ ): Observable<R, E, Observable<never, E, A>> {
8
8
  return operate_(fa, (source, subscriber) => {
9
- let window: Subject<E, A> | null;
9
+ let window: Subject<never, E, A> | null;
10
10
  let closingSubscriber: Subscriber<E, any> | undefined;
11
11
 
12
12
  const handleError = (err: Cause<E>) => {
@@ -19,7 +19,7 @@ export function windowWhen_<E, A>(
19
19
  window?.complete();
20
20
  window = new Subject();
21
21
  subscriber.next(window.asObservable());
22
- let closingNotifier: Observable<never, any>;
22
+ let closingNotifier: Observable<never, never, any>;
23
23
  try {
24
24
  closingNotifier = Observable.from(closingSelector());
25
25
  } catch (err) {