UNPKG

recoil-toolkit

Version:
61 lines (60 loc) 2.06 kB
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; };