react-rx 3.0.0-1 → 3.0.0-2

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.
@@ -1,4 +1,4 @@
1
1
  import { Observable } from 'rxjs';
2
- export declare function useObservable<T>(observable: Observable<T>): T | undefined;
3
- export declare function useObservable<T>(observable: Observable<T>, initialValue: T): T;
4
- export declare function useObservable<T>(observable: Observable<T>, initialValue: () => T): T;
2
+ export declare function useObservable<ObservableType extends Observable<any>>(observable: ObservableType, initialValue?: UnboxObservable<ObservableType> | (() => UnboxObservable<ObservableType>)): UnboxObservable<ObservableType>;
3
+ declare type UnboxObservable<T> = T extends Observable<infer U> ? U : never;
4
+ export {};
@@ -1,4 +1,4 @@
1
1
  import { Observable } from 'rxjs';
2
- export declare function useObservable<T>(observable: Observable<T>): T | undefined;
3
- export declare function useObservable<T>(observable: Observable<T>, initialValue: T): T;
4
- export declare function useObservable<T>(observable: Observable<T>, initialValue: () => T): T;
2
+ export declare function useObservable<ObservableType extends Observable<any>>(observable: ObservableType, initialValue?: UnboxObservable<ObservableType> | (() => UnboxObservable<ObservableType>)): UnboxObservable<ObservableType>;
3
+ declare type UnboxObservable<T> = T extends Observable<infer U> ? U : never;
4
+ export {};
@@ -1,4 +1,4 @@
1
1
  import { Observable } from 'rxjs';
2
- export declare function useObservable<T>(observable: Observable<T>): T | undefined;
3
- export declare function useObservable<T>(observable: Observable<T>, initialValue: T): T;
4
- export declare function useObservable<T>(observable: Observable<T>, initialValue: () => T): T;
2
+ export declare function useObservable<ObservableType extends Observable<any>>(observable: ObservableType, initialValue?: UnboxObservable<ObservableType> | (() => UnboxObservable<ObservableType>)): UnboxObservable<ObservableType>;
3
+ declare type UnboxObservable<T> = T extends Observable<infer U> ? U : never;
4
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-rx",
3
- "version": "3.0.0-1",
3
+ "version": "3.0.0-2",
4
4
  "description": "React + RxJS = <3",
5
5
  "keywords": [
6
6
  "action",
@@ -29,10 +29,10 @@ function getOrCreateStore<T>(inputObservable: Observable<T>, initialValue: T) {
29
29
  return cache.get(inputObservable)!
30
30
  }
31
31
 
32
- export function useObservable<T>(observable: Observable<T>): T | undefined
33
- export function useObservable<T>(observable: Observable<T>, initialValue: T): T
34
- export function useObservable<T>(observable: Observable<T>, initialValue: () => T): T
35
- export function useObservable<T>(observable: Observable<T>, initialValue?: T | (() => T)) {
32
+ export function useObservable<ObservableType extends Observable<any>>(
33
+ observable: ObservableType,
34
+ initialValue?: UnboxObservable<ObservableType> | (() => UnboxObservable<ObservableType>),
35
+ ): UnboxObservable<ObservableType> {
36
36
  /**
37
37
  * Store the initialValue in a ref, as we don't want a changed `initialValue` to trigger a re-subscription.
38
38
  * But we also don't want the initialValue to be stale if the observable changes.
@@ -47,7 +47,7 @@ export function useObservable<T>(observable: Observable<T>, initialValue?: T | (
47
47
  }, [initialValue])
48
48
 
49
49
  const [getSnapshot, subscribe] = useMemo<
50
- [() => T, Parameters<typeof useSyncExternalStore>[0]]
50
+ [() => UnboxObservable<ObservableType>, Parameters<typeof useSyncExternalStore>[0]]
51
51
  >(() => {
52
52
  const store = getOrCreateStore(observable, initialValueRef.current)
53
53
  if (store.subscription.closed) {
@@ -86,5 +86,7 @@ export function useObservable<T>(observable: Observable<T>, initialValue?: T | (
86
86
  }
87
87
  }, [observable])
88
88
 
89
- return useSyncExternalStore(subscribe, getSnapshot)
89
+ return useSyncExternalStore<UnboxObservable<ObservableType>>(subscribe, getSnapshot)
90
90
  }
91
+
92
+ type UnboxObservable<T> = T extends Observable<infer U> ? U : never