NestJS tRPC is a library designed to integrate the capabilities of tRPC into the NestJS framework. It aims to provide native support for decorators and implement an opinionated approach that aligns with NestJS conventions.
express
, fastify
, and zod
with more drivers to come!To install NestJS tRPC with your preferred package manager, you can use any of the following commands:
# npm
npm install nestjs-trpc zod @trpc/server
# pnpm
pnpm add nestjs-trpc zod @trpc/server
# yarn
yarn add nestjs-trpc zod @trpc/server
Here's a brief example demonstrating how to use the decorators available in NestJS tRPC:
// users.router.ts
import { Inject } from '@nestjs/common';
import { Router, Query, UseMiddlewares } from 'nestjs-trpc';
import { UserService } from './user.service';
import { ProtectedMiddleware } from './protected.middleware';
import { TRPCError } from '@trpc/server';
import { z } from 'zod';
const userSchema = z.object({
name: z.string(),
password: z.string()
})
@Router()
class UserRouter {
constructor(
@Inject(UserService) private readonly userService: UserService
) {}
@UseMiddlewares(ProtectedMiddleware)
@Query({ output: z.array(userSchema) })
async getUsers() {
try {
return this.userService.getUsers();
} catch (error: unknown) {
throw new TRPCError({
code: "INTERNAL_SERVER_ERROR",
message: "An error has occured when trying to get users.",
cause: error
})
}
}
}
š See full documentation on NestJS-tRPC.io. š
NestJS tRPC is developed by Kevin Edry, which taken a huge inspiration from both NestJS and tRPC inner workings.