Skip to content

michealroberts/trpc-nitro-adapter

Repository files navigation

tRPC.io Nitro Adapter

A tRPC adapter for the nitro web server framework.

Requirements

  • tRPC v10..
  • nitro v.2.4.* or higher
  • h3 v.1.6.* or higher

Installation

npm install trpc-nitro-adapter
pnpm add trpc-nitro-adapter
yarn add trpc-nitro-adapter

Usage

First of all you need a router to handle your queries, mutations and subscriptions.

A sample router is given below, saved in in a file named .trpc/router.ts*. Note, if your router file starts getting too big, split your router into several subrouters each implemented in its own file. Then merge them into a single root appRouter.

To read more about how to define a router, please consult the tRPC router documentation.

// file: ./trpc/router.ts

import { initTRPC } from '@trpc/server'

export const t = initTRPC.create()

export const appRouter = t.router({
  // ... define your routes here
})

// Export your type definition for use in the adapter:
export type AppRouter = typeof appRouter

Please consult the tRPC documentation for more information on how to create a router.

Then, in your nitro server, create a file in your routes directory named [...trpc].ts to ensure that the trpc param is passed to your nitro eventHandler.

// file: /routes/[...trpc].ts

// Import your router:
import { appRouter } from './trpc/router.ts'

import { defineNitroTRPCEventHandler } from 'trpc-nitro-adapter'

// Export as default the defineNitroTRPCEventHandler function:
export default defineNitroTRPCEventHandler({
  router: appRouter,
  createContext: () => {
    // Return your custom defined context here:
    return {}
  }
})