UNPKG

@prefecthq/vue-compositions

Version:

A collection of reusable vue compositions.

14 lines (13 loc) 999 B
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 {};