jotai
Version:
👻 Next gen state management that will spook you
32 lines (31 loc) • 1.09 kB
TypeScript
import type { Atom, Getter, WritableAtom } from 'jotai';
type AnyError = unknown;
declare global {
interface SymbolConstructor {
readonly observable: symbol;
}
}
type Subscription = {
unsubscribe: () => void;
};
type Observer<T> = {
next: (value: T) => void;
error: (error: AnyError) => void;
complete: () => void;
};
type ObservableLike<T> = {
[Symbol.observable]?: () => ObservableLike<T> | undefined;
} & ({
subscribe(observer: Partial<Observer<T>>): Subscription;
} | {
subscribe(observer: Partial<Observer<T>>): Subscription;
subscribe(next: (value: T) => void): Subscription;
});
type SubjectLike<T> = ObservableLike<T> & Observer<T>;
type Options<Data> = {
initialValue?: Data | (() => Data);
unstable_timeout?: number;
};
export declare function atomWithObservable<Data>(getObservable: (get: Getter) => SubjectLike<Data>, options?: Options<Data>): WritableAtom<Data, Data>;
export declare function atomWithObservable<Data>(getObservable: (get: Getter) => ObservableLike<Data>, options?: Options<Data>): Atom<Data>;
export {};