www/versioned_docs/version-10.x/landing-intro/Step3.md
// @target: esnext
// @filename: server.ts
import { initTRPC } from '@trpc/server';
import z from 'zod';
const t = initTRPC.create();
const appRouter = t.router({
greeting: t.procedure
.input(z.object({ name: z.string() }))
.query((opts) => {
const { input } = opts;
return `Hello ${input.name}` as const;
}),
});
export type AppRouter = typeof appRouter;
// @target: esnext
// @include: server
// @filename: client.ts
import { createTRPCProxyClient, httpBatchLink } from '@trpc/client';
import type { AppRouter } from './server';
// ---cut---
const trpc = createTRPCProxyClient<AppRouter>({
links: [
httpBatchLink({
url: 'http://localhost:3000',
}),
],
});
const res = await trpc.greeting.query({ name: 'John' });
// ^?