@rspc/client
TypeScript API reference for @rspc/client, version 0.2.4.
0.2.4
Generated from the published type declarations for this exact release.
Public exports of @rspc/client at version 0.2.4.
This page documents 0.2.4. The documented version is 0.3.1.
Classes
Client
export declare class Client<TProcedures extends ProceduresDef> {
_rspc_def: ProceduresDef;
private transport;
private subscriptionMap;
private onError?;
constructor(args: ClientArgs);
query<K extends TProcedures["queries"]["key"] & string>(keyAndInput: [
key: K,
...input: _inferProcedureHandlerInput<TProcedures, "queries", K>
]): Promise<inferQueryResult<TProcedures, K>>;
mutation<K extends TProcedures["mutations"]["key"] & string>(keyAndInput: [
key: K,
...input: _inferProcedureHandlerInput<TProcedures, "mutations", K>
]): Promise<inferMutationResult<TProcedures, K>>;
addSubscription<K extends TProcedures["subscriptions"]["key"] & string, TData = inferSubscriptionResult<TProcedures, K>>(keyAndInput: [
key: K,
...input: _inferProcedureHandlerInput<TProcedures, "subscriptions", K>
], opts: SubscriptionOptions<TData>): () => void;
}
FetchTransport
export declare class FetchTransport implements Transport {
private url;
clientSubscriptionCallback?: (id: string, key: string, value: any) => void;
private fetch;
constructor(url: string, fetch?: typeof globalThis.fetch);
doRequest(operation: OperationType, key: string, input: any): Promise<any>;
}
NoOpTransport
export declare class NoOpTransport implements Transport {
constructor();
doRequest(operation: OperationType, key: string, input: string): Promise<any>;
}
RSPCError
export declare class RSPCError {
code: number;
message: string;
constructor(code: number, message: string);
}
WebsocketTransport
export declare class WebsocketTransport implements Transport {
private url;
private ws;
private requestMap;
clientSubscriptionCallback?: (id: string, value: any) => void;
constructor(url: string);
attachEventListeners(): void;
reconnect(timeoutIndex?: number): Promise<void>;
doRequest(operation: OperationType, key: string, input: any, opts?: {
id?: string;
}): Promise<any>;
}
Interfaces
ClientArgs
export interface ClientArgs {
transport: Transport;
onError?: (err: RSPCError) => void | Promise<void>;
}
SubscriptionOptions
export interface SubscriptionOptions<TOutput> {
onStarted?: () => void;
onData: (data: TOutput) => void;
onError?: (err: RSPCError) => void;
}
Transport
export interface Transport {
clientSubscriptionCallback?: (id: string, key: string, value: any) => void;
doRequest(operation: OperationType, key: string, input: any): Promise<any>;
}
Type aliases
_inferInfiniteQueryProcedureHandlerInput
export type _inferInfiniteQueryProcedureHandlerInput<TProcedures extends ProceduresLike, K extends inferInfiniteQueries<TProcedures>["key"]> = inferInfiniteQueryInput<TProcedures, K> extends never ? [
] : [
inferInfiniteQueryInput<TProcedures, K>
];
_inferProcedureHandlerInput
export type _inferProcedureHandlerInput<TProcedures extends ProceduresLike, TOperation extends keyof ProceduresDef, K extends inferProcedures<TProcedures>[TOperation]["key"]> = inferProcedure<TProcedures, TOperation, K>["input"] extends never ? [
] : [
inferProcedure<TProcedures, TOperation, K>["input"]
];
inferInfiniteQueries
export type inferInfiniteQueries<TProcedures extends ProceduresLike> = Exclude<Extract<inferProcedures<TProcedures>["queries"], {
input: {
cursor: any;
};
}>, {
input: never;
}>;
inferInfiniteQuery
export type inferInfiniteQuery<TProcedures extends ProceduresLike, K extends inferInfiniteQueries<TProcedures>["key"]> = Extract<inferInfiniteQueries<TProcedures>, {
key: K;
}>;
inferInfiniteQueryInput
export type inferInfiniteQueryInput<TProcedures extends ProceduresLike, K extends inferInfiniteQueries<TProcedures>["key"]> = EmptyObjToNever<Omit<inferInfiniteQuery<TProcedures, K>["input"], "cursor">>; // Referenced local context (not public exports): type EmptyObjToNever<T> = keyof T extends never ? never : T;
inferInfiniteQueryResult
export type inferInfiniteQueryResult<TProcedures extends ProceduresLike, K extends inferInfiniteQueries<TProcedures>["key"]> = inferInfiniteQuery<TProcedures, K>["result"];
inferMutation
export type inferMutation<TProcedures extends ProceduresLike, K extends inferMutations<TProcedures>["key"]> = Extract<inferMutations<TProcedures>, {
key: K;
}>;
inferMutationInput
export type inferMutationInput<TProcedures extends ProceduresLike, T extends inferMutations<TProcedures>["key"][0]> = inferProcedureInput<inferProcedures<TProcedures>, "mutations", T>;
inferMutationResult
export type inferMutationResult<TProcedures extends ProceduresLike, T extends inferMutations<TProcedures>["key"][0]> = inferProcedureResult<inferProcedures<TProcedures>, "mutations", T>;
inferMutations
export type inferMutations<TProcedures extends ProceduresLike> = inferProcedures<TProcedures>["mutations"];
inferProcedure
export type inferProcedure<TProcedures extends ProceduresLike, TOperation extends keyof ProceduresDef, K extends inferProcedureKey<TProcedures, TOperation>> = Extract<inferProcedures<TProcedures>[TOperation], {
key: K;
}>;
inferProcedureInput
export type inferProcedureInput<TProcedures extends ProceduresLike, TOperation extends keyof ProceduresDef, K extends inferProcedureKey<TProcedures, TOperation>> = inferProcedure<TProcedures, TOperation, K>["input"];
inferProcedureKey
export type inferProcedureKey<TProcedures extends ProceduresLike, TOperation extends keyof ProceduresDef> = inferProcedures<TProcedures>[TOperation]["key"];
inferProcedureResult
export type inferProcedureResult<TProcedures extends ProceduresLike, TOperation extends keyof ProceduresDef, K extends inferProcedureKey<TProcedures, TOperation>> = inferProcedure<TProcedures, TOperation, K>["result"];
inferProcedures
/**
* This is a helper method to infer the type of bindings for this router off other rspc types.
* The inferred type is what is generated by Rust.
* @example
* const rspc = createReactQueryHooks<Operations>();
* type Bindings = inferBindingsType<typeof rspc>
*/
export type inferProcedures<TProcedures extends ProceduresLike> = TProcedures extends {
_rspc_def: ProceduresDef;
} ? TProcedures["_rspc_def"] : TProcedures;
This is a helper method to infer the type of bindings for this router off other rspc types. The inferred type is what is generated by Rust. @example const rspc = createReactQueryHooks<Operations>(); type Bindings = inferBindingsType<typeof rspc>
inferQueries
export type inferQueries<TProcedures extends ProceduresLike> = inferProcedures<TProcedures>["queries"];
inferQuery
export type inferQuery<TProcedures extends ProceduresLike, K extends inferQueries<TProcedures>["key"]> = Extract<inferQueries<TProcedures>, {
key: K;
}>;
inferQueryInput
export type inferQueryInput<TProcedures extends ProceduresLike, T extends inferQueries<TProcedures>["key"][0]> = inferProcedureInput<inferProcedures<TProcedures>, "queries", T>;
inferQueryResult
export type inferQueryResult<TProcedures extends ProceduresLike, T extends inferQueries<TProcedures>["key"][0]> = inferProcedureResult<inferProcedures<TProcedures>, "queries", T>;
inferSubscription
export type inferSubscription<TProcedures extends ProceduresLike, K extends inferSubscriptions<TProcedures>["key"]> = Extract<inferSubscriptions<TProcedures>, {
key: K;
}>;
inferSubscriptionInput
export type inferSubscriptionInput<TProcedures extends ProceduresLike, T extends inferSubscriptions<TProcedures>["key"][0]> = inferProcedureInput<inferProcedures<TProcedures>, "subscriptions", T>;
inferSubscriptionResult
export type inferSubscriptionResult<TProcedures extends ProceduresLike, T extends inferSubscriptions<TProcedures>["key"][0]> = inferProcedureResult<inferProcedures<TProcedures>, "subscriptions", T>;
inferSubscriptions
export type inferSubscriptions<TProcedures extends ProceduresLike> = inferProcedures<TProcedures>["subscriptions"];
OperationType
export type OperationType = "query" | "mutation" | "subscription" | "subscriptionStop";
ProcedureDef
export type ProcedureDef = {
key: string;
input: any;
result: any;
};
ProceduresDef
/**
* This type represents the Typescript bindings which are generated from the router by Rust.
*/
export type ProceduresDef = {
queries: ProcedureDef;
mutations: ProcedureDef;
subscriptions: ProcedureDef;
};
This type represents the Typescript bindings which are generated from the router by Rust.
ProceduresLike
/**
* A type which allows inferring the type of the bindings
*/
export type ProceduresLike = {
_rspc_def: ProceduresDef;
} | ProceduresDef;
A type which allows inferring the type of the bindings
Functions
createClient
export declare function createClient<TProcedures extends ProceduresLike>(args: ClientArgs): Client<inferProcedures<TProcedures>>;
Variables
randomId
randomId: () => string
