k6-trpc
Version:
k6 tRPC client
36 lines • 2.07 kB
TypeScript
import { type AnyProcedure, type AnyRouter, type CombinedDataTransformer, type DataTransformer } from "@trpc/server";
import { type get, type Params, type post } from "k6/http";
declare const NONE: unique symbol;
declare const OPTION: unique symbol;
export declare const createOptions: (options: Omit<Params, "responseCallback">) => {
auth?: import("k6/http").AuthMethod | undefined;
timeout?: string | number | undefined;
compression?: string | undefined;
cookies?: {
[name: string]: import("k6/http").ParamsCookieValue;
} | undefined;
headers?: {
[name: string]: string;
} | undefined;
jar?: import("k6/http").CookieJar | undefined;
redirects?: number | undefined;
responseType?: import("k6/http").ResponseType | undefined;
tags?: {
[name: string]: string;
} | undefined;
[OPTION]: string;
};
type RouterKeys<T extends AnyRouter> = Exclude<keyof T, keyof AnyRouter>;
type ProcedureType<T extends AnyProcedure> = T["_type"];
type InputType<P extends AnyProcedure> = P["_def"]["_input_in"] extends infer input ? input extends symbol ? typeof NONE : input : never;
type Handler<R extends AnyRouter, K extends keyof R> = R[K] extends AnyRouter ? Client<R[K]> : R[K] extends AnyProcedure ? ProcedureType<R[K]> extends infer T ? InputType<R[K]> extends infer I ? T extends "query" ? {
query: I extends typeof NONE ? (opts?: ReturnType<typeof createOptions>) => ReturnType<typeof get> : (input: I, opts?: ReturnType<typeof createOptions>) => ReturnType<typeof get>;
} : T extends "mutation" ? {
mutate: I extends typeof NONE ? (opts?: ReturnType<typeof createOptions>) => ReturnType<typeof post> : (input: I, opts?: ReturnType<typeof createOptions>) => ReturnType<typeof post>;
} : never : never : never : never;
export type Client<R extends AnyRouter> = {
[K in RouterKeys<R>]: Handler<R, K>;
};
export declare const createClient: <R extends AnyRouter>(url: string, transformer?: CombinedDataTransformer | DataTransformer) => Client<R>;
export {};
//# sourceMappingURL=index.d.ts.map