@rspc/client
TypeScript API reference for @rspc/client, version 0.1.1.
0.1.1
Generated from the published type declarations for this exact release.
Public exports of @rspc/client at version 0.1.1.
This page documents 0.1.1. The documented version is 0.3.1.
Classes
Client
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["mutations"]["key"] & string, TData = inferSubscriptionResult<TProcedures, K>>(keyAndInput: [
K,
_inferProcedureHandlerInput<TProcedures, "subscriptions", K>
], opts: SubscriptionOptions<TData>): () => void;
}
FetchTransport
declare class FetchTransport implements Transport {
private url;
clientSubscriptionCallback?: (id: string, key: string, value: any) => void;
constructor(url: string);
doRequest(operation: OperationType, key: string, input: any): Promise<any>;
}
NoOpTransport
declare class NoOpTransport implements Transport {
constructor();
doRequest(operation: OperationType, key: string, input: string): Promise<any>;
}
RSPCError
declare class RSPCError {
code: number;
message: string;
constructor(code: number, message: string);
}
WebsocketTransport
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
interface ClientArgs {
transport: Transport;
onError?: (err: RSPCError) => void | Promise<void>;
}
SubscriptionOptions
interface SubscriptionOptions<TOutput> {
onStarted?: () => void;
onData: (data: TOutput) => void;
onError?: (err: RSPCError) => void;
}
Transport
interface Transport {
clientSubscriptionCallback?: (id: string, key: string, value: any) => void;
doRequest(operation: OperationType, key: string, input: any): Promise<any>;
}
Type aliases
_inferInfiniteQueryProcedureHandlerInput
declare type _inferInfiniteQueryProcedureHandlerInput<TProcedures extends ProceduresLike, K extends inferInfiniteQueries<TProcedures>["key"]> = inferInfiniteQueryInput<TProcedures, K> extends never ? [
] : [
inferInfiniteQueryInput<TProcedures, K>
];
_inferProcedureHandlerInput
declare 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
declare type inferInfiniteQueries<TProcedures extends ProceduresLike> = Exclude<Extract<inferProcedures<TProcedures>["queries"], {
input: {
cursor: any;
};
}>, {
input: never;
}>;
inferInfiniteQuery
declare type inferInfiniteQuery<TProcedures extends ProceduresLike, K extends inferInfiniteQueries<TProcedures>["key"]> = Extract<inferInfiniteQueries<TProcedures>, {
key: K;
}>;
inferInfiniteQueryInput
declare type inferInfiniteQueryInput<TProcedures extends ProceduresLike, K extends inferInfiniteQueries<TProcedures>["key"]> = EmptyObjToNever<Omit<inferInfiniteQuery<TProcedures, K>["input"], "cursor">>; // Referenced local context (not public exports): declare type EmptyObjToNever<T> = keyof T extends never ? never : T;
inferInfiniteQueryResult
declare type inferInfiniteQueryResult<TProcedures extends ProceduresLike, K extends inferInfiniteQueries<TProcedures>["key"]> = inferInfiniteQuery<TProcedures, K>["result"];
inferMutationInput
declare type inferMutationInput<TProcedures extends ProceduresLike, T extends inferProcedures<TProcedures>["mutations"]["key"][0]> = inferProcedureInput<inferProcedures<TProcedures>, "mutations", T>;
inferMutationResult
declare type inferMutationResult<TProcedures extends ProceduresLike, T extends inferProcedures<TProcedures>["mutations"]["key"][0]> = inferProcedureResult<inferProcedures<TProcedures>, "mutations", T>;
inferProcedure
declare type inferProcedure<TProcedures extends ProceduresLike, TOperation extends keyof ProceduresDef, K extends inferProcedureKey<TProcedures, TOperation>> = Extract<inferProcedures<TProcedures>[TOperation], {
key: K;
}>;
inferProcedureInput
declare type inferProcedureInput<TProcedures extends ProceduresLike, TOperation extends keyof ProceduresDef, K extends inferProcedureKey<TProcedures, TOperation>> = inferProcedure<TProcedures, TOperation, K>["input"];
inferProcedureKey
declare type inferProcedureKey<TProcedures extends ProceduresLike, TOperation extends keyof ProceduresDef> = inferProcedures<TProcedures>[TOperation]["key"];
inferProcedureResult
declare 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>
*/
declare 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>
inferQueryInput
declare type inferQueryInput<TProcedures extends ProceduresLike, T extends inferProcedures<TProcedures>["queries"]["key"][0]> = inferProcedureInput<inferProcedures<TProcedures>, "queries", T>;
inferQueryResult
declare type inferQueryResult<TProcedures extends ProceduresLike, T extends inferProcedures<TProcedures>["queries"]["key"][0]> = inferProcedureResult<inferProcedures<TProcedures>, "queries", T>;
inferSubscriptionInput
declare type inferSubscriptionInput<TProcedures extends ProceduresLike, T extends inferProcedures<TProcedures>["subscriptions"]["key"][0]> = inferProcedureInput<inferProcedures<TProcedures>, "subscriptions", T>;
inferSubscriptionResult
declare type inferSubscriptionResult<TProcedures extends ProceduresLike, T extends inferProcedures<TProcedures>["subscriptions"]["key"][0]> = inferProcedureResult<inferProcedures<TProcedures>, "subscriptions", T>;
OperationType
declare type OperationType = "query" | "mutation" | "subscription" | "subscriptionStop";
ProceduresDef
/**
* This type represents the Typescript bindings which are generated from the router by Rust.
*/
declare type ProceduresDef = {
queries: {
key: string;
input: any;
result: any;
};
mutations: {
key: string;
input: any;
result: any;
};
subscriptions: {
key: string;
input: any;
result: any;
};
};
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
*/
declare type ProceduresLike = {
_rspc_def: ProceduresDef;
} | ProceduresDef;
A type which allows inferring the type of the bindings
Functions
createClient
declare function createClient<TProcedures extends ProceduresLike>(args: ClientArgs): Client<inferProcedures<TProcedures>>;
Variables
randomId
randomId: () => string
