diff --git a/packages/nestjs-trpc/lib/generators/generator.interface.ts b/packages/nestjs-trpc/lib/generators/generator.interface.ts index 80f89f1..518c45b 100644 --- a/packages/nestjs-trpc/lib/generators/generator.interface.ts +++ b/packages/nestjs-trpc/lib/generators/generator.interface.ts @@ -1,9 +1,11 @@ import type { SchemaImports, TRPCContext } from '../interfaces'; import type { Class } from 'type-fest'; +import type { RootConfigTypes } from '@trpc/server/dist/core/internals/config'; export interface GeneratorModuleOptions { rootModuleFilePath: string; context?: Class; outputDirPath?: string; schemaFileImports?: Array; + transformer?: RootConfigTypes['transformer']; } diff --git a/packages/nestjs-trpc/lib/generators/generator.module.ts b/packages/nestjs-trpc/lib/generators/generator.module.ts index db79bcd..753fb94 100644 --- a/packages/nestjs-trpc/lib/generators/generator.module.ts +++ b/packages/nestjs-trpc/lib/generators/generator.module.ts @@ -84,7 +84,10 @@ export class GeneratorModule implements OnModuleInit { } async onModuleInit() { - await this.trpcGenerator.generateSchemaFile(this.options.schemaFileImports); + await this.trpcGenerator.generateSchemaFile( + this.options.schemaFileImports, + this.options.transformer, + ); await this.trpcGenerator.generateHelpersFile(this.options.context); } } diff --git a/packages/nestjs-trpc/lib/generators/static.generator.ts b/packages/nestjs-trpc/lib/generators/static.generator.ts index 0e031b6..a3fb9cf 100644 --- a/packages/nestjs-trpc/lib/generators/static.generator.ts +++ b/packages/nestjs-trpc/lib/generators/static.generator.ts @@ -8,10 +8,14 @@ import { import { Injectable } from '@nestjs/common'; import { SourceFileImportsMap } from '../interfaces/generator.interface'; import * as path from 'node:path'; +import type { RootConfigTypes } from '@trpc/server/dist/core/internals/config'; @Injectable() export class StaticGenerator { - public generateStaticDeclaration(sourceFile: SourceFile): void { + public generateStaticDeclaration( + sourceFile: SourceFile, + transformer?: RootConfigTypes['transformer'], + ): void { sourceFile.addImportDeclaration({ kind: StructureKind.ImportDeclaration, moduleSpecifier: '@trpc/server', @@ -23,10 +27,24 @@ export class StaticGenerator { namedImports: ['z'], }); + if (transformer != null) + sourceFile.addImportDeclaration({ + kind: StructureKind.ImportDeclaration, + moduleSpecifier: 'superjson', + defaultImport: 'superjson', + }); + sourceFile.addVariableStatements([ { declarationKind: VariableDeclarationKind.Const, - declarations: [{ name: 't', initializer: 'initTRPC.create()' }], + declarations: [ + { + name: 't', + initializer: transformer + ? 'initTRPC.create({ transformer: superjson })' + : 'initTRPC.create()', + }, + ], }, { declarationKind: VariableDeclarationKind.Const, diff --git a/packages/nestjs-trpc/lib/generators/trpc.generator.ts b/packages/nestjs-trpc/lib/generators/trpc.generator.ts index f12a33d..a02d8cf 100644 --- a/packages/nestjs-trpc/lib/generators/trpc.generator.ts +++ b/packages/nestjs-trpc/lib/generators/trpc.generator.ts @@ -24,6 +24,7 @@ import { TYPESCRIPT_PROJECT, } from './generator.constants'; import * as process from 'node:process'; +import type { RootConfigTypes } from '@trpc/server/dist/core/internals/config'; @Injectable() export class TRPCGenerator implements OnModuleInit { @@ -73,6 +74,7 @@ export class TRPCGenerator implements OnModuleInit { public async generateSchemaFile( schemaImports?: Array | undefined, + transformer?: RootConfigTypes['transformer'], ): Promise { try { const routers = this.routerFactory.getRouters(); @@ -87,7 +89,10 @@ export class TRPCGenerator implements OnModuleInit { return { name, path, alias, instance: { ...route }, procedures }; }); - this.staticGenerator.generateStaticDeclaration(this.appRouterSourceFile); + this.staticGenerator.generateStaticDeclaration( + this.appRouterSourceFile, + transformer, + ); if (schemaImports != null && schemaImports.length > 0) { const schemaImportNames: Array = schemaImports.map( diff --git a/packages/nestjs-trpc/lib/interfaces/module-options.interface.ts b/packages/nestjs-trpc/lib/interfaces/module-options.interface.ts index 5b773d2..948c913 100644 --- a/packages/nestjs-trpc/lib/interfaces/module-options.interface.ts +++ b/packages/nestjs-trpc/lib/interfaces/module-options.interface.ts @@ -1,4 +1,4 @@ -import { RootConfigTypes } from '@trpc/server/dist/core/internals/config'; +import type { RootConfigTypes } from '@trpc/server/dist/core/internals/config'; import { ErrorFormatter } from '@trpc/server/dist/error/formatter'; import { TRPCErrorShape } from '@trpc/server/dist/rpc'; import { TRPCContext } from './context.interface';