vue2-request-utils
Version:
Vue 3 composition API for data fetching. This is a version for Vue 2 by using @vue/composition-api.
29 lines (28 loc) • 1.23 kB
TypeScript
import { Ref } from "@vue/composition-api";
import { Config } from "./config";
import { Queries } from "./useAsyncQuery";
import { UnWrapRefObject } from "./utils/types";
declare type MutateData<R> = (newData: R) => void;
declare type MutateFunction<R> = (arg: (oldData: R) => R) => void;
export declare type Query<R, P extends unknown[]> = (...args: P) => Promise<R>;
export interface Mutate<R> extends MutateData<R>, MutateFunction<R> {
}
export declare type State<R, P extends unknown[]> = {
loading: Ref<boolean>;
data: Ref<R | undefined>;
error: Ref<Error | undefined>;
params: Ref<P>;
};
export declare type InnerRunReturn<R> = Promise<R | null>;
export interface QueryState<R, P extends unknown[]> extends State<R, P> {
queries: Queries<R, P>;
run: (...arg: P) => InnerRunReturn<R>;
cancel: () => void;
refresh: () => InnerRunReturn<R>;
mutate: Mutate<R>;
}
export interface InnerQueryState<R, P extends unknown[]> extends Omit<QueryState<R, P>, "queries"> {
unmount: () => void;
}
declare const createQuery: <R, P extends unknown[]>(query: Query<R, P>, config: Config<R, P>, initialState?: UnWrapRefObject<State<R, P>> | undefined) => InnerQueryState<R, P>;
export default createQuery;