honojs-middleware/packages/trpc-server
github-actions[bot] 148f114cb6
Version Packages (#51)
2023-02-18 23:39:44 +09:00
..
src feat(trpc-server): bump up Hono version "v3" (#50) 2023-02-18 23:37:25 +09:00
test feat: introduce tRPC server middleware (#36) 2023-02-04 23:37:15 +09:00
CHANGELOG.md Version Packages (#51) 2023-02-18 23:39:44 +09:00
README.md feat: introduce tRPC server middleware (#36) 2023-02-04 23:37:15 +09:00
jest.config.js feat: introduce tRPC server middleware (#36) 2023-02-04 23:37:15 +09:00
package.json Version Packages (#51) 2023-02-18 23:39:44 +09:00
tsconfig.cjs.json feat: introduce tRPC server middleware (#36) 2023-02-04 23:37:15 +09:00
tsconfig.esm.json feat: introduce tRPC server middleware (#36) 2023-02-04 23:37:15 +09:00
tsconfig.json feat: introduce tRPC server middleware (#36) 2023-02-04 23:37:15 +09:00

README.md

tRPC Server Middleware for Hono

tRPC Server Middleware adapts a tRPC server as middleware for Hono. Hono works on almost any JavaScript runtime, including Cloudflare Workers, Deno, and Bun. So, with this middleware, the same code will run as tRPC server.

Install

npm install @hono/trpc-server

Usage

Router:

import { initTRPC } from '@trpc/server'
import { z } from 'zod'

const t = initTRPC.create()

const publicProcedure = t.procedure
const router = t.router

export const appRouter = router({
  hello: publicProcedure.input(z.string().nullish()).query(({ input }) => {
    return `Hello ${input ?? 'World'}!`
  }),
})

export type AppRouter = typeof appRouter

Hono app using tRPC Server Middleware:

import { Hono } from 'hono'
import { trpcServer } from '@hono/trpc-server' // Deno 'npm:@hono/trpc-server'
import { appRouter } from './router'

const app = new Hono()

app.use(
  '/trpc/*',
  trpcServer({
    router: appRouter,
  })
)

export default app

Client:

import { createTRPCProxyClient, httpBatchLink } from '@trpc/client'
import type { AppRouter } from './router'

const client = createTRPCProxyClient<AppRouter>({
  links: [
    httpBatchLink({
      url: 'http://localhost:8787/trpc',
    }),
  ],
})

console.log(await client.hello.query('Hono'))

Author

Yusuke Wada https://github.com/yusukebe

License

MIT