@rspc/client
TypeScript API reference for @rspc/client, version 0.0.0-main-5a753130.
0.0.0-main-5a753130
Generated from the published type declarations for this exact release.
Public exports of @rspc/client at version 0.0.0-main-5a753130.
This page documents 0.0.0-main-5a753130. The documented version is 0.3.1.
Classes
AlphaClient
export declare class AlphaClient<P extends ProceduresDef> {
_rspc_def: ProceduresDef;
private links;
private onError?;
private mapQueryKey?;
constructor(args: ClientArgs<P>);
query<K extends P["queries"]["key"] & string>(keyAndInput: [
key: K,
...input: _inferProcedureHandlerInput<P, "queries", K>
], opts?: OperationOpts): Promise<Result<inferQueryResult<P, K>, inferQueryError<P, K>>>;
mutation<K extends P["mutations"]["key"] & string>(keyAndInput: [
key: K,
...input: _inferProcedureHandlerInput<P, "mutations", K>
], opts?: OperationOpts): Promise<Result<inferMutationResult<P, K>, inferMutationError<P, K>>>;
addSubscription<K extends P["subscriptions"]["key"] & string>(keyAndInput: [
K,
..._inferProcedureHandlerInput<P, "subscriptions", K>
], opts: SubscriptionOptions<inferSubscription<P, K>> & {
context?: OperationContext;
}): () => void;
// … truncated, see the source link
Interfaces
LinkOperation
/**
* The argument to a link. Contains information about the current operation and a function to call the next link.
*
* @internal
*/
export interface LinkOperation<P extends ProceduresDef> {
op: Operation;
next(op: {
op: Operation;
}): LinkResult<P>;
}
The argument to a link. Contains information about the current operation and a function to call the next link. @internal
SubscriptionOptions
export interface SubscriptionOptions<P extends ProcedureDef> {
onData: (data: P["result"]) => void;
onError?: (err: P["error"] | rspc.Error) => void;
}
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"]
];
AbortFn
/** * TODO * * @internal */ export type AbortFn = () => void;
TODO @internal
Error
export type Error = {
code: ErrorCode;
message: string;
};
ErrorCode
/** * TODO */ export type ErrorCode = "BadRequest" | "Unauthorized" | "Forbidden" | "NotFound" | "Timeout" | "Conflict" | "PreconditionFailed" | "PayloadTooLarge" | "MethodNotSupported" | "ClientClosedRequest" | "InternalServerError";
TODO
FakeObservable
/**
* TODO
*
* @internal
*/
export type FakeObservable = {
exec: () => PromiseAndCancel<any>;
};
TODO @internal
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;
}>;
inferInfiniteQueryError
export type inferInfiniteQueryError<TProcedures extends ProceduresLike, K extends inferInfiniteQueries<TProcedures>["key"]> = inferInfiniteQuery<TProcedures, K>["error"];
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, T extends inferMutations<TProcedures>["key"][0]> = inferProcedure<inferProcedures<TProcedures>, "mutations", T>;
inferMutationError
export type inferMutationError<TProcedures extends ProceduresLike, T extends inferMutations<TProcedures>["key"][0]> = inferMutation<inferProcedures<TProcedures>, T>["error"] | rspc.Error;
inferMutationInput
export type inferMutationInput<TProcedures extends ProceduresLike, T extends inferMutations<TProcedures>["key"][0]> = inferMutation<inferProcedures<TProcedures>, T>["input"];
inferMutationResult
export type inferMutationResult<TProcedures extends ProceduresLike, T extends inferMutations<TProcedures>["key"][0]> = inferMutation<inferProcedures<TProcedures>, T>["result"];
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;
}>;
inferProcedureError
export type inferProcedureError<TProcedures extends ProceduresLike, TOperation extends keyof ProceduresDef, K extends inferProcedureKey<TProcedures, TOperation>> = inferProcedure<TProcedures, TOperation, K>["error"] | Error;
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, T extends inferQueries<TProcedures>["key"][0]> = inferProcedure<inferProcedures<TProcedures>, "queries", T>;
inferQueryError
export type inferQueryError<TProcedures extends ProceduresLike, T extends inferQueries<TProcedures>["key"][0]> = inferQuery<inferProcedures<TProcedures>, T>["error"] | rspc.Error;
inferQueryInput
export type inferQueryInput<TProcedures extends ProceduresLike, T extends inferQueries<TProcedures>["key"][0]> = inferQuery<inferProcedures<TProcedures>, T>["input"];
inferQueryResult
export type inferQueryResult<TProcedures extends ProceduresLike, T extends inferQueries<TProcedures>["key"][0]> = inferQuery<inferProcedures<TProcedures>, T>["result"];
inferSubscription
export type inferSubscription<TProcedures extends ProceduresLike, T extends inferSubscriptions<TProcedures>["key"][0]> = inferProcedure<inferProcedures<TProcedures>, "subscriptions", T>;
inferSubscriptionError
export type inferSubscriptionError<TProcedures extends ProceduresLike, T extends inferSubscriptions<TProcedures>["key"][0]> = inferSubscription<inferProcedures<TProcedures>, T>["result"] | rspc.Error;
inferSubscriptionInput
export type inferSubscriptionInput<TProcedures extends ProceduresLike, T extends inferSubscriptions<TProcedures>["key"][0]> = inferSubscription<inferProcedures<TProcedures>, T>["input"];
inferSubscriptionResult
export type inferSubscriptionResult<TProcedures extends ProceduresLike, T extends inferSubscriptions<TProcedures>["key"][0]> = inferSubscription<inferProcedures<TProcedures>, T>["result"];
inferSubscriptions
export type inferSubscriptions<TProcedures extends ProceduresLike> = inferProcedures<TProcedures>["subscriptions"];
Link
/** * TODO * * @internal */ export type Link<P extends ProceduresDef> = (p: LinkOperation<P>) => LinkResult<P>;
TODO @internal
LinkResult
/**
* TODO
*
* @internal
*/
export type LinkResult<P extends ProceduresDef> = {
exec: (resolve: (result: P[keyof ProceduresDef]["result"]) => void, reject: (error: P[keyof ProceduresDef]["error"] | rspc.Error) => void) => void;
abort: () => void;
};
TODO @internal
LoggerLinkOpts
export type LoggerLinkOpts = {
enabled: boolean | (() => boolean);
};
Operation
/**
* TODO
*
* @internal
*/
export type Operation = {
method: "query" | "mutation" | "subscription";
path: string;
input: any | null;
context: OperationContext;
};
TODO @internal
OperationContext
/** * A map of data that can be used by links to store metadata about the current operation. * This allows links to communicate with each other. * * @internal */ export type OperationContext = Record<string, unknown>;
A map of data that can be used by links to store metadata about the current operation. This allows links to communicate with each other. @internal
ProcedureDef
/**
* Represents a Typescript procedure file which is generated by the Rust code.
* This is codegenerated Typescript file is how we can validate the types on the frontend match Rust.
*
* @internal
*/
export type ProcedureDef = {
key: string;
input: any;
result: any;
error: any;
};
Represents a Typescript procedure file which is generated by the Rust code. This is codegenerated Typescript file is how we can validate the types on the frontend match Rust. @internal
ProcedureError
export type ProcedureError = {
Exec: Error;
} | {
Resolver: any;
};
ProceduresDef
/**
* @internal
*/
export type ProceduresDef = {
queries: ProcedureDef;
mutations: ProcedureDef;
subscriptions: ProcedureDef;
};
@internal
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
PromiseAndCancel
/**
* TODO
*
* @internal
*/
export type PromiseAndCancel<TValue> = {
promise: Promise<TValue>;
abort: AbortFn;
};
TODO @internal
Request
/**
* The type of a request to rspc.
*
* @internal
*/
export type Request = {
method: "query";
id: number;
path: string;
input: any | null;
} | {
method: "mutation";
id: number;
path: string;
input: any | null;
} | {
method: "subscription";
id: number;
path: string;
input: any | null;
} | {
method: "subscriptionStop";
id: number;
};
The type of a request to rspc. @internal
Response
/**
* The type of a response from rspc.
*
* @internal
*/
export type Response = ({
type: "value";
value: any;
} | {
type: "error";
value: ProcedureError;
} | {
type: "complete";
}) & {
id: number;
};
The type of a response from rspc. @internal
ResponseInner
/**
* A value that can be a successful result or an error.
*
* @internal
*/
export type ResponseInner = {
type: "value";
value: any;
} | {
type: "error";
value: ProcedureError;
} | {
type: "complete";
};
A value that can be a successful result or an error. @internal
Result
export type Result<TOk, TErr> = {
status: "ok";
data: TOk;
} | {
status: "error";
error: TErr;
};
Functions
_internal_fireResponse
/**
* @internal
*/
export declare function _internal_fireResponse<P extends ProceduresDef>(resp: ResponseInner, i: BatchedItem<P> | {
resolve: (result: P[keyof ProceduresDef]["result"]) => void;
reject: (error: P[keyof ProceduresDef]["error"] | rspc.Error) => void;
}): Promise<void>;
@internal
_internal_wsLinkInternal
/**
* @internal
*/
export declare function _internal_wsLinkInternal<P extends ProceduresDef>([activeMap, send,]: ReturnType<typeof newWsManager>): Link<P>;
// Referenced local context (not public exports):
declare function newWsManager<P extends ProceduresDef>(opts: WsLinkOpts): readonly [
Map<number, {
oneshot: boolean;
resolve: (result: P[keyof ProceduresDef]["result"]) => void;
reject: (error: P[keyof ProceduresDef]["error"] | rspc.Error) => void;
}>,
(data: rspc.Request | rspc.Request[]) => Promise<void>
];
type WsLinkOpts = {
url: string;
/**
* Add ponyfill for WebSocket
*/
WebSocket?: typeof WebSocket;
};
@internal
httpLink
/**
* HTTP Fetch link for rspc
*/
export declare function httpLink<P extends ProceduresDef>(opts: HttpLinkOpts): Link<P>;
// Referenced local context (not public exports):
type HttpLinkOpts = {
url: string;
/**
* Add ponyfill for fetch
*/
fetch?: typeof fetch;
/**
* Add ponyfill for AbortController
*/
AbortController?: typeof AbortController | null;
} & ({
/**
* Headers to be set on outgoing requests or a callback that of said headers
*/
headers?: HTTPHeaders | ((opts: {
op: Operation;
}) => HTTPHeaders);
} | {
/**
* Headers to be set on outgoing requests or a callback that of said headers
*/
headers?: HTTPHeaders | ((opts: {
ops: Operation[];
}) => HTTPHeaders);
/**
* Batch multiple rspc queries into a single HTTP request. Disabled by default.
*
* NOTE: This is great for performance but may be problematic if your using HTTP caching.
*/
batch: true | {
// … truncated, see the source link
HTTP Fetch link for rspc
initRspc
export declare function initRspc<P extends ProceduresDef>(args: ClientArgs<P>): AlphaClient<P>;
// Referenced local context (not public exports):
interface ClientArgs<P extends ProceduresDef> {
links: Link<P>[];
onError?: OnErrorHandler<P>;
}
type OnErrorHandler<P extends ProceduresDef> = (err: P[keyof ProceduresDef]["error"]) => void | Promise<void>;
loggerLink
/** * Link for logging operations. * * This must go before the terminating link for it to work! * */ export declare function loggerLink<P extends ProceduresDef>(opts?: LoggerLinkOpts): Link<P>;
Link for logging operations.
This must go before the terminating link for it to work!
wsLink
/**
* Websocket link for rspc
*
* Note: This link applies request batching by default.
*/
export declare function wsLink<P extends ProceduresDef>(opts: WsLinkOpts): Link<P>;
// Referenced local context (not public exports):
type WsLinkOpts = {
url: string;
/**
* Add ponyfill for WebSocket
*/
WebSocket?: typeof WebSocket;
};
Websocket link for rspc
Note: This link applies request batching by default.
