recoil-toolkit
Version:
61 lines (60 loc) • 2.06 kB
TypeScript
import type { CallbackInterface, Loadable, RecoilValue, Snapshot } from 'recoil';
export declare type Cancelled = () => boolean;
export declare type WaitFor = <T>(promiseOrMs: Promise<T> | number) => Promise<T | void>;
export declare type Fork = <Args extends readonly unknown[], Return = void>(taskCreator: (recoilTask: RecoilTaskInterface) => (...args: Args) => Return, executeArgs: Args, debugKey?: string) => {
id: number;
cancel: () => void;
task: Promise<Return | undefined>;
getTaskState: () => Task<Return> | undefined;
};
export declare type RecoilTaskInterface = CallbackInterface & {
getSnapshot: RecoilGetSnapshot;
getLoadable: Snapshot['getLoadable'];
cancelled: Cancelled;
waitFor: WaitFor;
fork: Fork;
};
export declare type RecoilGetPromise = <T>(recoilValue: RecoilValue<T>) => Promise<T>;
export declare type RecoilGetLoadable = <T>(recoilValue: RecoilValue<T>) => Loadable<T>;
export declare type RecoilGetSnapshot = () => Snapshot;
export declare type RecoilStore = {
set: CallbackInterface['set'];
reset: CallbackInterface['reset'];
refresh: CallbackInterface['refresh'];
gotoSnapshot: CallbackInterface['gotoSnapshot'];
getSnapshot: RecoilGetSnapshot;
getPromise: Snapshot['getPromise'];
getLoadable: Snapshot['getLoadable'];
};
export declare enum TaskStatus {
Running = 0,
Error = 1,
Done = 2
}
export declare type TaskOptions<Data = unknown, Args = unknown> = {
key?: string;
errorStack?: boolean;
loaderStack?: string | boolean;
exclusive?: boolean;
dataSelector?: RecoilValue<Data>;
autoStart?: Args;
cancelOnUnmount?: boolean;
};
export declare type Task<Data = unknown, Error = unknown> = {
parentId?: number;
id: number;
status: TaskStatus;
args: ReadonlyArray<unknown>;
startedAt: Date;
endAt?: Date;
error?: Error;
data?: Data;
options?: TaskOptions;
extra?: unknown;
};
export declare type ErrorAtom = {
id: number;
key?: string;
error?: unknown;
taskId?: number;
};