UNPKG

@ozmos/viper-vue

Version:

Vue plugin for Viper

420 lines 23.9 kB
import { type QueryClient, useMutation, useQuery } from "@tanstack/vue-query"; import { type ComputedRef, type MaybeRef, type MaybeRefOrGetter, type Ref } from "vue"; type BaseBindings = string[]; type BaseProps = Record<string, { result: unknown; bindings: BaseBindings; }>; type BaseActions = Record<string, { args: unknown; result: unknown; bindings: BaseBindings; }>; type BaseParams = Record<string, string>; interface BasePageType { props: BaseProps; actions: BaseActions; params: BaseParams; } interface BasePage extends BasePageType { hashes: Record<string, string>; title?: string | null; } interface PageInit { formatTitle?: (title: string) => string; queryClient: QueryClient; } type HeaderFunction = () => Promise<Record<string, string>>; type BindOptions<T extends { bindings: BaseBindings; }> = T["bindings"]["length"] extends 0 ? { bind?: never; } : { bind: { [K in T["bindings"][number]]: MaybeRef<string | number | null> | ComputedRef<string | number | null>; }; }; type QueryOptions<T> = Partial<Parameters<typeof useQuery<T>>[0]>; type QueryStringOptions = { qs?: Record<string, MaybeRefOrGetter<string | number | unknown[] | null>>; }; type MutationOptions<TResult, TArgs> = Parameters<typeof useMutation<TResult, unknown, TArgs>>[0]; type UseQueryParams<T extends { bindings: BaseBindings; result: unknown; }> = T["bindings"]["length"] extends 0 ? [ options?: QueryOptions<T["result"]> & BindOptions<T> & QueryStringOptions ] : [ options: QueryOptions<T["result"]> & BindOptions<T> & QueryStringOptions ]; type UseMutationParams<T extends { bindings: BaseBindings; result: unknown; args: unknown; }> = T["bindings"]["length"] extends 0 ? [options?: MutationOptions<T["result"], T["args"]> & BindOptions<T>] : [options: MutationOptions<T["result"], T["args"]> & BindOptions<T>]; type UseFormParams<T extends { bindings: BaseBindings; result: unknown; args: unknown; }> = T["bindings"]["length"] extends 0 ? [ options?: MutationOptions<T["result"], T["args"]> & { state: T["args"]; } & BindOptions<T> ] : [ options: MutationOptions<T["result"], T["args"]> & { state: T["args"]; } & BindOptions<T> ]; type UseFormDataParams<T extends { bindings: BaseBindings; result: unknown; args: unknown; }> = T["bindings"]["length"] extends 0 ? [ options?: MutationOptions<T["result"], T["args"]> & { state: T["args"]; files: string[]; } & BindOptions<T> ] : [ options: MutationOptions<T["result"], T["args"]> & { state: T["args"]; files: string[]; } & BindOptions<T> ]; export declare class Page { params: Ref<Record<string, string>, Record<string, string>>; formatTitle: (title: string) => string; props: Record<string, unknown>; actions: {}; hashes: Record<string, string>; queryClient: QueryClient; headerFunctions: HeaderFunction[]; constructor(config: PageInit); mergeHeaders(func: HeaderFunction): () => void; getHeaders(): Promise<Record<string, string>>; updateFromPageJson(json: BasePage): void; setPageTitle(title: string): void; } export declare function usePage<P extends BasePageType>(): { setPageTitle: (title: string) => void; params: Ref<P["params"]>; useQuery<K extends keyof P["props"]>(key: K, ...args: UseQueryParams<P["props"][K]>): { data: Ref<P["props"][K]["result"]>; error: Ref<Error, Error>; isError: Ref<true, true>; isPending: Ref<false, false>; isLoading: Ref<false, false>; isLoadingError: Ref<false, false>; isRefetchError: Ref<true, true>; isSuccess: Ref<false, false>; isPlaceholderData: Ref<false, false>; status: Ref<"error", "error">; dataUpdatedAt: Ref<number, number>; errorUpdatedAt: Ref<number, number>; failureCount: Ref<number, number>; failureReason: Ref<Error | null, Error | null>; errorUpdateCount: Ref<number, number>; isFetched: Ref<boolean, boolean>; isFetchedAfterMount: Ref<boolean, boolean>; isFetching: Ref<boolean, boolean>; isInitialLoading: Ref<boolean, boolean>; isPaused: Ref<boolean, boolean>; isRefetching: Ref<boolean, boolean>; isStale: Ref<boolean, boolean>; refetch: (options?: import("@tanstack/vue-query").RefetchOptions) => Promise<import("@tanstack/vue-query").QueryObserverResult<P["props"][K]["result"], Error>>; fetchStatus: Ref<import("@tanstack/vue-query").FetchStatus, import("@tanstack/vue-query").FetchStatus>; promise: Ref<Promise<P["props"][K]["result"]>, Promise<P["props"][K]["result"]>>; suspense: () => Promise<import("@tanstack/vue-query").QueryObserverResult<P["props"][K]["result"], Error>>; } | { data: Ref<P["props"][K]["result"]>; error: Ref<null, null>; isError: Ref<false, false>; isPending: Ref<false, false>; isLoading: Ref<false, false>; isLoadingError: Ref<false, false>; isRefetchError: Ref<false, false>; isSuccess: Ref<true, true>; isPlaceholderData: Ref<false, false>; status: Ref<"success", "success">; dataUpdatedAt: Ref<number, number>; errorUpdatedAt: Ref<number, number>; failureCount: Ref<number, number>; failureReason: Ref<Error | null, Error | null>; errorUpdateCount: Ref<number, number>; isFetched: Ref<boolean, boolean>; isFetchedAfterMount: Ref<boolean, boolean>; isFetching: Ref<boolean, boolean>; isInitialLoading: Ref<boolean, boolean>; isPaused: Ref<boolean, boolean>; isRefetching: Ref<boolean, boolean>; isStale: Ref<boolean, boolean>; refetch: (options?: import("@tanstack/vue-query").RefetchOptions) => Promise<import("@tanstack/vue-query").QueryObserverResult<P["props"][K]["result"], Error>>; fetchStatus: Ref<import("@tanstack/vue-query").FetchStatus, import("@tanstack/vue-query").FetchStatus>; promise: Ref<Promise<P["props"][K]["result"]>, Promise<P["props"][K]["result"]>>; suspense: () => Promise<import("@tanstack/vue-query").QueryObserverResult<P["props"][K]["result"], Error>>; } | { data: Ref<P["props"][K]["result"]>; error: Ref<Error, Error>; isError: Ref<true, true>; isPending: Ref<false, false>; isLoading: Ref<false, false>; isLoadingError: Ref<true, true>; isRefetchError: Ref<false, false>; isSuccess: Ref<false, false>; isPlaceholderData: Ref<false, false>; status: Ref<"error", "error">; dataUpdatedAt: Ref<number, number>; errorUpdatedAt: Ref<number, number>; failureCount: Ref<number, number>; failureReason: Ref<Error | null, Error | null>; errorUpdateCount: Ref<number, number>; isFetched: Ref<boolean, boolean>; isFetchedAfterMount: Ref<boolean, boolean>; isFetching: Ref<boolean, boolean>; isInitialLoading: Ref<boolean, boolean>; isPaused: Ref<boolean, boolean>; isRefetching: Ref<boolean, boolean>; isStale: Ref<boolean, boolean>; refetch: (options?: import("@tanstack/vue-query").RefetchOptions) => Promise<import("@tanstack/vue-query").QueryObserverResult<P["props"][K]["result"], Error>>; fetchStatus: Ref<import("@tanstack/vue-query").FetchStatus, import("@tanstack/vue-query").FetchStatus>; promise: Ref<Promise<P["props"][K]["result"]>, Promise<P["props"][K]["result"]>>; suspense: () => Promise<import("@tanstack/vue-query").QueryObserverResult<P["props"][K]["result"], Error>>; } | { data: Ref<P["props"][K]["result"]>; error: Ref<null, null>; isError: Ref<false, false>; isPending: Ref<true, true>; isLoading: Ref<true, true>; isLoadingError: Ref<false, false>; isRefetchError: Ref<false, false>; isSuccess: Ref<false, false>; isPlaceholderData: Ref<false, false>; status: Ref<"pending", "pending">; dataUpdatedAt: Ref<number, number>; errorUpdatedAt: Ref<number, number>; failureCount: Ref<number, number>; failureReason: Ref<Error | null, Error | null>; errorUpdateCount: Ref<number, number>; isFetched: Ref<boolean, boolean>; isFetchedAfterMount: Ref<boolean, boolean>; isFetching: Ref<boolean, boolean>; isInitialLoading: Ref<boolean, boolean>; isPaused: Ref<boolean, boolean>; isRefetching: Ref<boolean, boolean>; isStale: Ref<boolean, boolean>; refetch: (options?: import("@tanstack/vue-query").RefetchOptions) => Promise<import("@tanstack/vue-query").QueryObserverResult<P["props"][K]["result"], Error>>; fetchStatus: Ref<import("@tanstack/vue-query").FetchStatus, import("@tanstack/vue-query").FetchStatus>; promise: Ref<Promise<P["props"][K]["result"]>, Promise<P["props"][K]["result"]>>; suspense: () => Promise<import("@tanstack/vue-query").QueryObserverResult<P["props"][K]["result"], Error>>; } | { data: Ref<P["props"][K]["result"]>; error: Ref<null, null>; isError: Ref<false, false>; isPending: Ref<true, true>; isLoadingError: Ref<false, false>; isRefetchError: Ref<false, false>; isSuccess: Ref<false, false>; isPlaceholderData: Ref<false, false>; status: Ref<"pending", "pending">; dataUpdatedAt: Ref<number, number>; errorUpdatedAt: Ref<number, number>; failureCount: Ref<number, number>; failureReason: Ref<Error | null, Error | null>; errorUpdateCount: Ref<number, number>; isFetched: Ref<boolean, boolean>; isFetchedAfterMount: Ref<boolean, boolean>; isFetching: Ref<boolean, boolean>; isLoading: Ref<boolean, boolean>; isInitialLoading: Ref<boolean, boolean>; isPaused: Ref<boolean, boolean>; isRefetching: Ref<boolean, boolean>; isStale: Ref<boolean, boolean>; refetch: (options?: import("@tanstack/vue-query").RefetchOptions) => Promise<import("@tanstack/vue-query").QueryObserverResult<P["props"][K]["result"], Error>>; fetchStatus: Ref<import("@tanstack/vue-query").FetchStatus, import("@tanstack/vue-query").FetchStatus>; promise: Ref<Promise<P["props"][K]["result"]>, Promise<P["props"][K]["result"]>>; suspense: () => Promise<import("@tanstack/vue-query").QueryObserverResult<P["props"][K]["result"], Error>>; } | { data: Ref<P["props"][K]["result"]>; isError: Ref<false, false>; error: Ref<null, null>; isPending: Ref<false, false>; isLoading: Ref<false, false>; isLoadingError: Ref<false, false>; isRefetchError: Ref<false, false>; isSuccess: Ref<true, true>; isPlaceholderData: Ref<true, true>; status: Ref<"success", "success">; dataUpdatedAt: Ref<number, number>; errorUpdatedAt: Ref<number, number>; failureCount: Ref<number, number>; failureReason: Ref<Error | null, Error | null>; errorUpdateCount: Ref<number, number>; isFetched: Ref<boolean, boolean>; isFetchedAfterMount: Ref<boolean, boolean>; isFetching: Ref<boolean, boolean>; isInitialLoading: Ref<boolean, boolean>; isPaused: Ref<boolean, boolean>; isRefetching: Ref<boolean, boolean>; isStale: Ref<boolean, boolean>; refetch: (options?: import("@tanstack/vue-query").RefetchOptions) => Promise<import("@tanstack/vue-query").QueryObserverResult<P["props"][K]["result"], Error>>; fetchStatus: Ref<import("@tanstack/vue-query").FetchStatus, import("@tanstack/vue-query").FetchStatus>; promise: Ref<Promise<P["props"][K]["result"]>, Promise<P["props"][K]["result"]>>; suspense: () => Promise<import("@tanstack/vue-query").QueryObserverResult<P["props"][K]["result"], Error>>; }; useMutation<K extends keyof P["actions"]>(key: K, ...args: UseMutationParams<P["actions"][K]>): import("@tanstack/vue-query").UseMutationReturnType<P["actions"][K]["result"], unknown, P["actions"][K]["args"], unknown, Omit<import("@tanstack/vue-query").MutationObserverIdleResult<P["actions"][K]["result"], unknown, P["actions"][K]["args"], unknown>, "mutate" | "reset"> | Omit<import("@tanstack/vue-query").MutationObserverLoadingResult<P["actions"][K]["result"], unknown, P["actions"][K]["args"], unknown>, "mutate" | "reset"> | Omit<import("@tanstack/vue-query").MutationObserverErrorResult<P["actions"][K]["result"], unknown, P["actions"][K]["args"], unknown>, "mutate" | "reset"> | Omit<import("@tanstack/vue-query").MutationObserverSuccessResult<P["actions"][K]["result"], unknown, P["actions"][K]["args"], unknown>, "mutate" | "reset">>; useForm<K extends keyof P["actions"]>(key: K, ...args: UseFormParams<P["actions"][K]>): { mutate(override?: Partial<P["actions"][K]["args"]>): void; mutateAsync(override?: Partial<P["actions"][K]["args"]>): Promise<P["actions"][K]["result"]>; reset: () => void; errors: Ref<Record<string, string>, Record<string, string>>; state: [P["actions"][K]["args"]] extends [Ref<any, any>] ? import("@vue/shared").IfAny<P["actions"][K]["args"], Ref<P["actions"][K]["args"], P["actions"][K]["args"]>, P["actions"][K]["args"]> : Ref<import("vue").UnwrapRef<P["actions"][K]["args"]>, P["actions"][K]["args"] | import("vue").UnwrapRef<P["actions"][K]["args"]>>; data: Ref<undefined, undefined>; error: Ref<null, null>; isError: Ref<false, false>; isPending: Ref<false, false>; isSuccess: Ref<false, false>; status: Ref<"idle", "idle">; failureCount: Ref<number, number>; failureReason: Ref<unknown, unknown>; isPaused: Ref<boolean, boolean>; variables: Ref<undefined, undefined>; isIdle: Ref<true, true>; context: Ref<unknown, unknown>; submittedAt: Ref<number, number>; } | { mutate(override?: Partial<P["actions"][K]["args"]>): void; mutateAsync(override?: Partial<P["actions"][K]["args"]>): Promise<P["actions"][K]["result"]>; reset: () => void; errors: Ref<Record<string, string>, Record<string, string>>; state: [P["actions"][K]["args"]] extends [Ref<any, any>] ? import("@vue/shared").IfAny<P["actions"][K]["args"], Ref<P["actions"][K]["args"], P["actions"][K]["args"]>, P["actions"][K]["args"]> : Ref<import("vue").UnwrapRef<P["actions"][K]["args"]>, P["actions"][K]["args"] | import("vue").UnwrapRef<P["actions"][K]["args"]>>; data: Ref<undefined, undefined>; error: Ref<null, null>; isError: Ref<false, false>; isPending: Ref<true, true>; isSuccess: Ref<false, false>; status: Ref<"pending", "pending">; failureCount: Ref<number, number>; failureReason: Ref<unknown, unknown>; isPaused: Ref<boolean, boolean>; variables: import("@vue/shared").IfAny<P["actions"][K]["args"], Ref<P["actions"][K]["args"], P["actions"][K]["args"]>, [P["actions"][K]["args"]] extends [Ref<any, any>] ? P["actions"][K]["args"] : Ref<P["actions"][K]["args"], P["actions"][K]["args"]>>; isIdle: Ref<false, false>; context: Ref<unknown, unknown>; submittedAt: Ref<number, number>; } | { mutate(override?: Partial<P["actions"][K]["args"]>): void; mutateAsync(override?: Partial<P["actions"][K]["args"]>): Promise<P["actions"][K]["result"]>; reset: () => void; errors: Ref<Record<string, string>, Record<string, string>>; state: [P["actions"][K]["args"]] extends [Ref<any, any>] ? import("@vue/shared").IfAny<P["actions"][K]["args"], Ref<P["actions"][K]["args"], P["actions"][K]["args"]>, P["actions"][K]["args"]> : Ref<import("vue").UnwrapRef<P["actions"][K]["args"]>, P["actions"][K]["args"] | import("vue").UnwrapRef<P["actions"][K]["args"]>>; data: Ref<undefined, undefined>; error: Ref<unknown, unknown>; isError: Ref<true, true>; isPending: Ref<false, false>; isSuccess: Ref<false, false>; status: Ref<"error", "error">; failureCount: Ref<number, number>; failureReason: Ref<unknown, unknown>; isPaused: Ref<boolean, boolean>; variables: import("@vue/shared").IfAny<P["actions"][K]["args"], Ref<P["actions"][K]["args"], P["actions"][K]["args"]>, [P["actions"][K]["args"]] extends [Ref<any, any>] ? P["actions"][K]["args"] : Ref<P["actions"][K]["args"], P["actions"][K]["args"]>>; isIdle: Ref<false, false>; context: Ref<unknown, unknown>; submittedAt: Ref<number, number>; } | { mutate(override?: Partial<P["actions"][K]["args"]>): void; mutateAsync(override?: Partial<P["actions"][K]["args"]>): Promise<P["actions"][K]["result"]>; reset: () => void; errors: Ref<Record<string, string>, Record<string, string>>; state: [P["actions"][K]["args"]] extends [Ref<any, any>] ? import("@vue/shared").IfAny<P["actions"][K]["args"], Ref<P["actions"][K]["args"], P["actions"][K]["args"]>, P["actions"][K]["args"]> : Ref<import("vue").UnwrapRef<P["actions"][K]["args"]>, P["actions"][K]["args"] | import("vue").UnwrapRef<P["actions"][K]["args"]>>; data: import("@vue/shared").IfAny<P["actions"][K]["result"], Ref<P["actions"][K]["result"], P["actions"][K]["result"]>, [P["actions"][K]["result"]] extends [Ref<any, any>] ? P["actions"][K]["result"] : Ref<P["actions"][K]["result"], P["actions"][K]["result"]>>; error: Ref<null, null>; isError: Ref<false, false>; isPending: Ref<false, false>; isSuccess: Ref<true, true>; status: Ref<"success", "success">; failureCount: Ref<number, number>; failureReason: Ref<unknown, unknown>; isPaused: Ref<boolean, boolean>; variables: import("@vue/shared").IfAny<P["actions"][K]["args"], Ref<P["actions"][K]["args"], P["actions"][K]["args"]>, [P["actions"][K]["args"]] extends [Ref<any, any>] ? P["actions"][K]["args"] : Ref<P["actions"][K]["args"], P["actions"][K]["args"]>>; isIdle: Ref<false, false>; context: Ref<unknown, unknown>; submittedAt: Ref<number, number>; }; useFormData<K extends keyof P["actions"]>(key: K, ...args: UseFormDataParams<P["actions"][K]>): { mutate(override?: Partial<P["actions"][K]["args"]>): void; mutateAsync(override?: Partial<P["actions"][K]["args"]>): Promise<P["actions"][K]["result"]>; reset: () => void; errors: Ref<Record<string, string>, Record<string, string>>; state: [P["actions"][K]["args"]] extends [Ref<any, any>] ? import("@vue/shared").IfAny<P["actions"][K]["args"], Ref<P["actions"][K]["args"], P["actions"][K]["args"]>, P["actions"][K]["args"]> : Ref<import("vue").UnwrapRef<P["actions"][K]["args"]>, P["actions"][K]["args"] | import("vue").UnwrapRef<P["actions"][K]["args"]>>; data: Ref<undefined, undefined>; error: Ref<null, null>; isError: Ref<false, false>; isPending: Ref<false, false>; isSuccess: Ref<false, false>; status: Ref<"idle", "idle">; failureCount: Ref<number, number>; failureReason: Ref<unknown, unknown>; isPaused: Ref<boolean, boolean>; variables: Ref<undefined, undefined>; isIdle: Ref<true, true>; context: Ref<unknown, unknown>; submittedAt: Ref<number, number>; } | { mutate(override?: Partial<P["actions"][K]["args"]>): void; mutateAsync(override?: Partial<P["actions"][K]["args"]>): Promise<P["actions"][K]["result"]>; reset: () => void; errors: Ref<Record<string, string>, Record<string, string>>; state: [P["actions"][K]["args"]] extends [Ref<any, any>] ? import("@vue/shared").IfAny<P["actions"][K]["args"], Ref<P["actions"][K]["args"], P["actions"][K]["args"]>, P["actions"][K]["args"]> : Ref<import("vue").UnwrapRef<P["actions"][K]["args"]>, P["actions"][K]["args"] | import("vue").UnwrapRef<P["actions"][K]["args"]>>; data: Ref<undefined, undefined>; error: Ref<null, null>; isError: Ref<false, false>; isPending: Ref<true, true>; isSuccess: Ref<false, false>; status: Ref<"pending", "pending">; failureCount: Ref<number, number>; failureReason: Ref<unknown, unknown>; isPaused: Ref<boolean, boolean>; variables: import("@vue/shared").IfAny<P["actions"][K]["args"], Ref<P["actions"][K]["args"], P["actions"][K]["args"]>, [P["actions"][K]["args"]] extends [Ref<any, any>] ? P["actions"][K]["args"] : Ref<P["actions"][K]["args"], P["actions"][K]["args"]>>; isIdle: Ref<false, false>; context: Ref<unknown, unknown>; submittedAt: Ref<number, number>; } | { mutate(override?: Partial<P["actions"][K]["args"]>): void; mutateAsync(override?: Partial<P["actions"][K]["args"]>): Promise<P["actions"][K]["result"]>; reset: () => void; errors: Ref<Record<string, string>, Record<string, string>>; state: [P["actions"][K]["args"]] extends [Ref<any, any>] ? import("@vue/shared").IfAny<P["actions"][K]["args"], Ref<P["actions"][K]["args"], P["actions"][K]["args"]>, P["actions"][K]["args"]> : Ref<import("vue").UnwrapRef<P["actions"][K]["args"]>, P["actions"][K]["args"] | import("vue").UnwrapRef<P["actions"][K]["args"]>>; data: Ref<undefined, undefined>; error: Ref<unknown, unknown>; isError: Ref<true, true>; isPending: Ref<false, false>; isSuccess: Ref<false, false>; status: Ref<"error", "error">; failureCount: Ref<number, number>; failureReason: Ref<unknown, unknown>; isPaused: Ref<boolean, boolean>; variables: import("@vue/shared").IfAny<P["actions"][K]["args"], Ref<P["actions"][K]["args"], P["actions"][K]["args"]>, [P["actions"][K]["args"]] extends [Ref<any, any>] ? P["actions"][K]["args"] : Ref<P["actions"][K]["args"], P["actions"][K]["args"]>>; isIdle: Ref<false, false>; context: Ref<unknown, unknown>; submittedAt: Ref<number, number>; } | { mutate(override?: Partial<P["actions"][K]["args"]>): void; mutateAsync(override?: Partial<P["actions"][K]["args"]>): Promise<P["actions"][K]["result"]>; reset: () => void; errors: Ref<Record<string, string>, Record<string, string>>; state: [P["actions"][K]["args"]] extends [Ref<any, any>] ? import("@vue/shared").IfAny<P["actions"][K]["args"], Ref<P["actions"][K]["args"], P["actions"][K]["args"]>, P["actions"][K]["args"]> : Ref<import("vue").UnwrapRef<P["actions"][K]["args"]>, P["actions"][K]["args"] | import("vue").UnwrapRef<P["actions"][K]["args"]>>; data: import("@vue/shared").IfAny<P["actions"][K]["result"], Ref<P["actions"][K]["result"], P["actions"][K]["result"]>, [P["actions"][K]["result"]] extends [Ref<any, any>] ? P["actions"][K]["result"] : Ref<P["actions"][K]["result"], P["actions"][K]["result"]>>; error: Ref<null, null>; isError: Ref<false, false>; isPending: Ref<false, false>; isSuccess: Ref<true, true>; status: Ref<"success", "success">; failureCount: Ref<number, number>; failureReason: Ref<unknown, unknown>; isPaused: Ref<boolean, boolean>; variables: import("@vue/shared").IfAny<P["actions"][K]["args"], Ref<P["actions"][K]["args"], P["actions"][K]["args"]>, [P["actions"][K]["args"]] extends [Ref<any, any>] ? P["actions"][K]["args"] : Ref<P["actions"][K]["args"], P["actions"][K]["args"]>>; isIdle: Ref<false, false>; context: Ref<unknown, unknown>; submittedAt: Ref<number, number>; }; }; export {}; //# sourceMappingURL=page.d.ts.map