@tanstack/vue-query
Version:
Hooks for managing, caching and syncing asynchronous and remote data in Vue
18 lines (15 loc) • 1.02 kB
TypeScript
import { Ref, UnwrapRef } from 'vue-demi';
type Primitive = string | number | boolean | bigint | symbol | undefined | null;
type UnwrapLeaf = Primitive | Function | Date | Error | RegExp | Map<any, any> | WeakMap<any, any> | Set<any> | WeakSet<any>;
type MaybeRef<T> = Ref<T> | T;
type MaybeRefOrGetter<T> = MaybeRef<T> | (() => T);
type MaybeRefDeep<T> = MaybeRef<T extends Function ? T : T extends object ? {
[Property in keyof T]: MaybeRefDeep<T[Property]>;
} : T>;
type NoUnknown<T> = Equal<unknown, T> extends true ? never : T;
type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends <T>() => T extends Y ? 1 : 2 ? true : false;
type DeepUnwrapRef<T> = T extends UnwrapLeaf ? T : T extends Ref<infer U> ? DeepUnwrapRef<U> : T extends {} ? {
[Property in keyof T]: DeepUnwrapRef<T[Property]>;
} : UnwrapRef<T>;
type DistributiveOmit<T, K extends keyof any> = T extends any ? Omit<T, K> : never;
export type { DeepUnwrapRef, DistributiveOmit, Equal, MaybeRef, MaybeRefDeep, MaybeRefOrGetter, NoUnknown };