@orpc/svelte-query
Version:
<div align="center"> <image align="center" src="https://orpc.unnoq.com/logo.webp" width=280 alt="oRPC logo" /> </div>
118 lines (112 loc) • 7.41 kB
TypeScript
import { ClientContext, Client, NestedClient } from '@orpc/client';
import { OperationType, OperationKeyOptions } from '@orpc/tanstack-query';
export { OperationKeyOptions as BuildKeyOptions, OperationType as KeyType, generateOperationKey as buildKey } from '@orpc/tanstack-query';
import { QueryKey, SkipToken, CreateQueryOptions, QueryFunctionContext, experimental_streamedQuery, CreateInfiniteQueryOptions, CreateMutationOptions, InfiniteData } from '@tanstack/svelte-query';
import { SetOptional, MaybeOptionalOptions } from '@orpc/shared';
/**
* Utils at any level (procedure or router)
*/
interface GeneralUtils<TInput> {
/**
* Generate a query/mutation key for checking status, invalidate, set, get, etc.
*
* @see {@link https://orpc.unnoq.com/docs/integrations/tanstack-query-old/basic#query-mutation-key Tanstack Query/Mutation Key Docs}
*/
key<UType extends OperationType>(options?: OperationKeyOptions<UType, TInput>): QueryKey;
}
declare function createGeneralUtils<TInput>(path: string[]): GeneralUtils<TInput>;
type QueryOptionsIn<TClientContext extends ClientContext, TInput, TOutput, TError, TSelectData> = (undefined extends TInput ? {
input?: TInput | SkipToken;
} : {
input: TInput | SkipToken;
}) & (Record<never, never> extends TClientContext ? {
context?: TClientContext;
} : {
context: TClientContext;
}) & SetOptional<CreateQueryOptions<TOutput, TError, TSelectData>, 'queryKey'>;
interface QueryOptionsBase<TOutput, TError> {
queryKey: QueryKey;
queryFn(ctx: QueryFunctionContext): Promise<TOutput>;
throwOnError?(error: TError): boolean;
retryDelay?: (count: number, error: TError) => number;
enabled: boolean;
}
type experimental_StreamedQueryOptions = Omit<Parameters<typeof experimental_streamedQuery>[0], 'queryFn'>;
type experimental_InferStreamedOutput<TOutput> = TOutput extends AsyncIterable<infer U> ? U[] : never;
type experimental_StreamedOptionsIn<TClientContext extends ClientContext, TInput, TOutput, TError, TSelectData> = QueryOptionsIn<TClientContext, TInput, TOutput, TError, TSelectData> & {
queryFnOptions?: experimental_StreamedQueryOptions;
};
interface experimental_StreamedOptionsBase<TOutput, TError> extends QueryOptionsBase<TOutput, TError> {
}
type InfiniteOptionsIn<TClientContext extends ClientContext, TInput, TOutput, TError, TSelectData, TPageParam> = {
input: ((pageParam: TPageParam) => TInput) | SkipToken;
} & (Record<never, never> extends TClientContext ? {
context?: TClientContext;
} : {
context: TClientContext;
}) & SetOptional<CreateInfiniteQueryOptions<TOutput, TError, TSelectData, QueryKey, TPageParam>, 'queryKey'>;
interface InfiniteOptionsBase<TOutput, TError, TPageParam> {
queryKey: QueryKey;
queryFn(ctx: QueryFunctionContext<QueryKey, TPageParam>): Promise<TOutput>;
throwOnError?(error: TError): boolean;
retryDelay?: (count: number, error: TError) => number;
enabled: boolean;
}
type MutationOptionsIn<TClientContext extends ClientContext, TInput, TOutput, TError, TMutationContext> = (Record<never, never> extends TClientContext ? {
context?: TClientContext;
} : {
context: TClientContext;
}) & MutationOptions<TInput, TOutput, TError, TMutationContext>;
type MutationOptions<TInput, TOutput, TError, TMutationContext> = CreateMutationOptions<TOutput, TError, TInput, TMutationContext>;
interface ProcedureUtils<TClientContext extends ClientContext, TInput, TOutput, TError> {
/**
* Calling corresponding procedure client
*
* @see {@link https://orpc.unnoq.com/docs/integrations/tanstack-query-old/basic#calling-procedure-clients Tanstack Calling Procedure Client Docs}
*/
call: Client<TClientContext, TInput, TOutput, TError>;
/**
* Generate options used for createQuery/prefetchQuery/...
*
* @see {@link https://orpc.unnoq.com/docs/integrations/tanstack-query-old/basic#query-options-utility Tanstack Query Options Utility Docs}
*/
queryOptions<U, USelectData = TOutput>(...rest: MaybeOptionalOptions<U & QueryOptionsIn<TClientContext, TInput, TOutput, TError, USelectData>>): NoInfer<U & Omit<QueryOptionsBase<TOutput, TError>, keyof U>>;
/**
* Generate [Event Iterator](https://orpc.unnoq.com/docs/event-iterator) options used for useQuery/prefetchQuery/...
* Built on top of [steamedQuery](https://tanstack.com/query/latest/docs/reference/streamedQuery)
*
* @see {@link https://orpc.unnoq.com/docs/integrations/tanstack-query-old/basic#streamed-query-options-utility Tanstack Streamed Query Options Utility Docs}
*/
experimental_streamedOptions<U, USelectData = experimental_InferStreamedOutput<TOutput>>(...rest: MaybeOptionalOptions<U & experimental_StreamedOptionsIn<TClientContext, TInput, experimental_InferStreamedOutput<TOutput>, TError, USelectData>>): NoInfer<U & Omit<experimental_StreamedOptionsBase<experimental_InferStreamedOutput<TOutput>, TError>, keyof U>>;
/**
* Generate options used for createInfiniteQuery/prefetchInfiniteQuery/...
*
* @see {@link https://orpc.unnoq.com/docs/integrations/tanstack-query-old/basic#infinite-query-options-utility Tanstack Infinite Query Options Utility Docs}
*/
infiniteOptions<U, UPageParam, USelectData = InfiniteData<TOutput, UPageParam>>(options: U & InfiniteOptionsIn<TClientContext, TInput, TOutput, TError, USelectData, UPageParam>): NoInfer<U & Omit<InfiniteOptionsBase<TOutput, TError, UPageParam>, keyof U>>;
/**
* Generate options used for createMutation/...
*
* @see {@link https://orpc.unnoq.com/docs/integrations/tanstack-query-old/basic#mutation-options Tanstack Mutation Options Docs}
*/
mutationOptions<UMutationContext>(...rest: MaybeOptionalOptions<MutationOptionsIn<TClientContext, TInput, TOutput, TError, UMutationContext>>): MutationOptions<TInput, TOutput, TError, UMutationContext>;
}
interface CreateProcedureUtilsOptions {
path: string[];
}
declare function createProcedureUtils<TClientContext extends ClientContext, TInput, TOutput, TError>(client: Client<TClientContext, TInput, TOutput, TError>, options: CreateProcedureUtilsOptions): ProcedureUtils<TClientContext, TInput, TOutput, TError>;
type RouterUtils<T extends NestedClient<any>> = T extends Client<infer UClientContext, infer UInput, infer UOutput, infer UError> ? ProcedureUtils<UClientContext, UInput, UOutput, UError> & GeneralUtils<UInput> : {
[K in keyof T]: T[K] extends NestedClient<any> ? RouterUtils<T[K]> : never;
} & GeneralUtils<unknown>;
interface CreateRouterUtilsOptions {
path?: string[];
}
/**
* Create a router utils from a client.
*
* @info Both client-side and server-side clients are supported.
* @see {@link https://orpc.unnoq.com/docs/integrations/tanstack-query-old/svelte Tanstack Query Svelte Docs}
*/
declare function createRouterUtils<T extends NestedClient<any>>(client: T, options?: CreateRouterUtilsOptions): RouterUtils<T>;
export { createGeneralUtils, createRouterUtils as createORPCSvelteQueryUtils, createProcedureUtils, createRouterUtils };
export type { CreateProcedureUtilsOptions, CreateRouterUtilsOptions, GeneralUtils, InfiniteOptionsBase, InfiniteOptionsIn, MutationOptions, MutationOptionsIn, ProcedureUtils, QueryOptionsBase, QueryOptionsIn, RouterUtils, experimental_InferStreamedOutput, experimental_StreamedOptionsBase, experimental_StreamedOptionsIn };