UNPKG

vue-concurrency

Version:

A library for encapsulating asynchronous operations and managing concurrency for Vue + Composition API

124 lines (99 loc) 4.33 kB
declare interface AbortSignalWithPromise extends AbortSignal { pr: Promise<void>; } declare type DeferredObject<T> = { promise: Promise<T>; resolve: Function; reject: Function; }; export declare function getCancelToken<T extends { CancelToken: any; }>(axios: T, signal: AbortSignalWithPromise): any; declare type onFulfilled<T> = ((value: T) => any) | null | undefined; declare type onRejected = ((reason: any) => any) | null | undefined; export declare function printTask(task: Task<any, any>): void; declare type Resolved<T> = T extends PromiseLike<infer U> ? U : T; export declare type Task<T, U extends any[]> = { isIdle: boolean; isRunning: boolean; isError: boolean; performCount: number; last: TaskInstance<T> | undefined; lastSuccessful: TaskInstance<T> | undefined; firstEnqueued: TaskInstance<T> | undefined; cancelAll: (options?: { force: boolean; }) => void; perform: (...params: U) => TaskInstance<T>; clear: () => void; destroy: () => void; restartable: () => Task<T, U>; drop: () => Task<T, U>; enqueue: () => Task<T, U>; keepLatest: () => Task<T, U>; maxConcurrency: (number: number) => Task<T, U>; _resetModifierFlags: () => void; _maxConcurrency: number; _isRestartable: boolean; _isEnqueuing: boolean; _isDropping: boolean; _isKeepingLatest: boolean; _hasConcurrency: boolean; _instances: TaskInstance<T>[]; _successfulInstances: readonly TaskInstance<T>[]; _runningInstances: readonly TaskInstance<T>[]; _activeInstances: readonly TaskInstance<T>[]; _enqueuedInstances: readonly TaskInstance<T>[]; _notDroppedInstances: readonly TaskInstance<T>[]; }; declare type TaskCb<T, U extends any[]> = (signal: AbortSignalWithPromise, ...params: U) => Generator<any, T, any>; export declare type TaskGroup<U extends Record<string, Task<any, any>>> = TaskState & U; export declare interface TaskInstance<T> extends PromiseLike<T> { id: number; hasStarted: boolean; isRunning: boolean; isActive: boolean; isFinished: boolean; isError: boolean; isSuccessful: boolean; isCanceling: boolean; isCanceled: boolean; isNotDropped: boolean; status: TaskInstanceStatus; _run: () => void; cancel: (options?: { force: boolean; }) => void; canceledOn: (signal: AbortSignalWithPromise) => TaskInstance<T>; token?: Record<string, any>; isDropped: boolean; isEnqueued: boolean; value: T | null; error: any | null; _shouldThrow: boolean; _canAbort: boolean; _deferredObject: DeferredObject<T>; _handled: boolean; then: (onfulfilled: onFulfilled<T>, onrejected?: onRejected) => Promise<any>; catch: (onrejected?: onRejected) => any; finally: (onfulfilled: () => any) => any; } declare type TaskInstanceStatus = "running" | "enqueued" | "canceled" | "canceling" | "dropped" | "error" | "success"; declare interface TaskState { isRunning: boolean; isIdle: boolean; } export declare function timeout(time: number): Promise<unknown>; export declare function useAsyncTask<T, U extends any[]>(fn: (signal: AbortSignalWithPromise, ...params: U) => Promise<T>): Task<T, U>; export declare function useParallelTask(...tasks: Task<any, any>[]): Task<any[], any>; export declare function usePipeTask<T, U extends any[]>(firstTask: Task<any, U>, ...restTasks: Task<any, any>[]): Task<T, U>; export declare function useSequentialTask<U extends any[]>(...tasks: Task<any, any>[]): Task<any, U>; export declare function useSSRPersistance(key: string, task: Task<any, any>): void; export declare function useTask<T, U extends any[]>(cb: TaskCb<T, U>, options?: { cancelOnUnmount: boolean; }): Task<Resolved<T>, U>; export declare function useTaskGroup<U extends Record<string, Task<any, any>>>(taskMap: U): TaskGroup<U>; export declare function useTaskPrefetch<T>(key: string, task: Task<T, any>): TaskInstance<T>; export declare function waitForValue<T = any>(cb: () => T): Promise<T>; export declare type YieldReturn<T> = T extends Task<infer U, any> ? U : Resolved<ReturnType<T extends (...args: any) => any ? T : any>>; export { }