react-async-states
Version:
A low-level multi paradigm state management library
22 lines (19 loc) • 1.11 kB
TypeScript
import { UseConfig } from '../types.internal.js';
import { ModernHookReturn, LegacyHookReturn } from '../hooks/types.js';
import { Source, Producer, ProducerConfig, State } from 'async-states';
type Api<TData, TArgs extends unknown[] = [], TError = Error> = {
(): Source<TData, TArgs, TError>;
source: Source<TData, TArgs, TError>;
define(fn: Producer<TData, TArgs, TError>, config?: ProducerConfig<TData, TArgs, TError>): Api<TData, TArgs, TError>;
useData<S = State<TData, TArgs, TError>>(config?: UseConfig<TData, TArgs, TError, S>, deps?: any[]): ModernHookReturn<TData, TArgs, TError, S>;
useAsync<S = State<TData, TArgs, TError>>(config?: UseConfig<TData, TArgs, TError, S>, deps?: any[]): LegacyHookReturn<TData, TArgs, TError, S>;
};
type AnyApi = Api<any, any, any>;
type AppShape = Record<string, Record<string, AnyApi>>;
type App<TApp extends AppShape> = {
[resource in keyof TApp]: Resource<TApp[resource]>;
};
type Resource<TResource extends Record<string, AnyApi>> = {
[api in keyof TResource]: TResource[api];
};
export { AnyApi, Api, App, AppShape, Resource };