https://github.com/michealroberts/trpc-nitro-adapter
A tRPC adapter for the nitro web server framework.
https://github.com/michealroberts/trpc-nitro-adapter
h3 nitro nuxt trpc
Last synced: 8 months ago
JSON representation
A tRPC adapter for the nitro web server framework.
- Host: GitHub
- URL: https://github.com/michealroberts/trpc-nitro-adapter
- Owner: michealroberts
- License: mit
- Created: 2023-05-19T20:34:55.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-12T13:47:50.000Z (over 1 year ago)
- Last Synced: 2024-04-13T17:54:03.899Z (over 1 year ago)
- Topics: h3, nitro, nuxt, trpc
- Language: TypeScript
- Homepage:
- Size: 204 KB
- Stars: 40
- Watchers: 1
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# tRPC.io Nitro Adapter
A [tRPC](https://trpc.io) adapter for the [nitro](https://nitro.unjs.io) web server framework.
## Requirements
- [tRPC](https://trpc.io) v10._._
- [nitro](https://nitro.unjs.io) v.2.4.\* or higher
- [h3](https://github.com/unjs/h3) v.1.6.\* or higher## Installation
```bash
npm install trpc-nitro-adapter
``````bash
pnpm add trpc-nitro-adapter
``````bash
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](https://trpc.io/docs/server/routers#defining-a-router).
```typescript
// file: ./trpc/router.tsimport { 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](https://trpc.io/docs/server/routers#defining-a-router) 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.
```typescript
// 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 {}
}
})
```