rc inital

This commit is contained in:
OrJDev
2022-11-01 09:38:08 +02:00
commit f67748fe9d
20 changed files with 3610 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
import { AnyRouter } from "@trpc/server";
import { createRecursiveProxy } from "@trpc/server/shared";
import { getQueryKey } from "../../internals/getQueryKey";
import { CreateReactQueryHooks } from "../hooks/createHooksInternal";
/**
* Create proxy for decorating procedures
* @internal
*/
export function createReactProxyDecoration<
TRouter extends AnyRouter,
TSSRContext = unknown
>(name: string, hooks: CreateReactQueryHooks<TRouter, TSSRContext>) {
return createRecursiveProxy((opts) => {
const args = opts.args;
const pathCopy = [name, ...opts.path];
// The last arg is for instance `.useMutation` or `.useQuery()`
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const lastArg = pathCopy.pop()!;
// The `path` ends up being something like `post.byId`
const path = pathCopy.join(".");
if (lastArg === "useMutation") {
return (hooks as any)[lastArg](path, ...args);
}
const [input, ...rest] = args;
const queryKey = getQueryKey(path, input);
return (hooks as any)[lastArg](queryKey, ...rest);
});
}