@prefecthq/vue-compositions
Version:
A collection of reusable vue compositions.
14 lines (13 loc) • 999 B
TypeScript
import { Ref } from 'vue';
import { NoInfer } from '../types/generics';
import { RouteParamClass } from '../useRouteQueryParam/formats';
type AnyRecord = Record<string, unknown>;
export type RouteQueryParamsSchema<T extends AnyRecord> = {
[P in keyof Required<T>]: NonNullable<T[P]> extends AnyRecord ? RouteQueryParamsSchema<NonNullable<T[P]>> : T[P] extends (infer V)[] | undefined ? [RouteParamClass<V>] : RouteParamClass<Exclude<T[P], undefined>>;
};
export type RouteQueryParams<T extends AnyRecord> = {
[P in keyof T]-?: [T[P]] extends [AnyRecord | undefined] ? [T[P]] extends [AnyRecord] ? RouteQueryParams<T[P]> : RouteQueryParams<Partial<T[P]>> : Ref<T[P]>;
};
export declare function useRouteQueryParams<T extends AnyRecord>(schema: RouteQueryParamsSchema<T>, defaultValue: NoInfer<T>, prefix?: string): RouteQueryParams<T>;
export declare function isRouteParamSchema<T extends AnyRecord>(value: RouteQueryParamsSchema<T> | unknown): value is RouteQueryParamsSchema<T>;
export {};