react-shared-states
Version:
Global state made as simple as useState, with zero config, built-in async caching, and automatic scoping.
35 lines (34 loc) • 1.9 kB
TypeScript
import { Prefix, SharedCreated, SharedValue } from '../types';
import { SharedValuesApi, SharedValuesManager } from '../SharedValuesManager';
interface SharedState<T> extends SharedValue {
value: T;
}
declare class SharedStatesManager extends SharedValuesManager<SharedState<unknown>, {
value: unknown;
}> {
defaultValue(): {
value: undefined;
};
initValue(key: string, prefix: Prefix, value: unknown, isStatic?: boolean): void;
initStatic(sharedStateCreated: SharedStateCreated<any>): void;
}
export declare class SharedStatesApi extends SharedValuesApi<SharedState<unknown>, {
value: unknown;
}, unknown> {
constructor(sharedStateManager: SharedStatesManager);
get<T, S extends string = string>(key: S, scopeName?: Prefix): T;
get<T>(sharedStateCreated: SharedStateCreated<T>): T;
set<T, S extends string = string>(key: S, value: T, scopeName?: Prefix): void;
set<T>(sharedStateCreated: SharedStateCreated<T>, value: T): void;
}
export declare const sharedStatesApi: SharedStatesApi;
export interface SharedStateCreated<T> extends SharedCreated {
initialValue: T;
}
export declare const createSharedState: <T>(initialValue: T, scopeName?: Prefix) => SharedStateCreated<T>;
export declare function useSharedState<T, S extends string>(key: S, initialValue: T, scopeName?: Prefix): readonly [T, (v: T | ((prev: T) => T)) => void];
export declare function useSharedState<T>(sharedStateCreated: SharedStateCreated<T>): readonly [T, (v: T | ((prev: T) => T)) => void];
export type SharedStateSelector<S, T = S> = (original: S) => T;
export declare function useSharedStateSelector<T, S extends string, R>(key: S, selector: SharedStateSelector<T, R>, scopeName?: Prefix): Readonly<R>;
export declare function useSharedStateSelector<T, R>(sharedStateCreated: SharedStateCreated<T>, selector: SharedStateSelector<T, R>): Readonly<R>;
export {};