@nest-native/trpc 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +200 -0
  2. package/dist/constants.d.ts +7 -0
  3. package/dist/constants.js +11 -0
  4. package/dist/constants.js.map +1 -0
  5. package/dist/context/trpc-context-creator.d.ts +93 -0
  6. package/dist/context/trpc-context-creator.js +260 -0
  7. package/dist/context/trpc-context-creator.js.map +1 -0
  8. package/dist/context/trpc-enhancer-runtime.factory.d.ts +10 -0
  9. package/dist/context/trpc-enhancer-runtime.factory.js +31 -0
  10. package/dist/context/trpc-enhancer-runtime.factory.js.map +1 -0
  11. package/dist/decorators/ctx.decorator.d.ts +9 -0
  12. package/dist/decorators/ctx.decorator.js +19 -0
  13. package/dist/decorators/ctx.decorator.js.map +1 -0
  14. package/dist/decorators/input.decorator.d.ts +9 -0
  15. package/dist/decorators/input.decorator.js +19 -0
  16. package/dist/decorators/input.decorator.js.map +1 -0
  17. package/dist/decorators/param-metadata.util.d.ts +7 -0
  18. package/dist/decorators/param-metadata.util.js +22 -0
  19. package/dist/decorators/param-metadata.util.js.map +1 -0
  20. package/dist/decorators/procedure.decorator.d.ts +34 -0
  21. package/dist/decorators/procedure.decorator.js +58 -0
  22. package/dist/decorators/procedure.decorator.js.map +1 -0
  23. package/dist/decorators/router.decorator.d.ts +11 -0
  24. package/dist/decorators/router.decorator.js +23 -0
  25. package/dist/decorators/router.decorator.js.map +1 -0
  26. package/dist/enums.d.ts +9 -0
  27. package/dist/enums.js +15 -0
  28. package/dist/enums.js.map +1 -0
  29. package/dist/generators/schema-generator.d.ts +29 -0
  30. package/dist/generators/schema-generator.js +171 -0
  31. package/dist/generators/schema-generator.js.map +1 -0
  32. package/dist/generators/zod-serializer.d.ts +9 -0
  33. package/dist/generators/zod-serializer.js +137 -0
  34. package/dist/generators/zod-serializer.js.map +1 -0
  35. package/dist/index.d.ts +9 -0
  36. package/dist/index.js +27 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/interfaces.d.ts +58 -0
  39. package/dist/interfaces.js +3 -0
  40. package/dist/interfaces.js.map +1 -0
  41. package/dist/trpc-http-adapter.d.ts +27 -0
  42. package/dist/trpc-http-adapter.js +209 -0
  43. package/dist/trpc-http-adapter.js.map +1 -0
  44. package/dist/trpc-request-storage.d.ts +12 -0
  45. package/dist/trpc-request-storage.js +6 -0
  46. package/dist/trpc-request-storage.js.map +1 -0
  47. package/dist/trpc-router.d.ts +40 -0
  48. package/dist/trpc-router.js +346 -0
  49. package/dist/trpc-router.js.map +1 -0
  50. package/dist/trpc.module.d.ts +24 -0
  51. package/dist/trpc.module.js +72 -0
  52. package/dist/trpc.module.js.map +1 -0
  53. package/package.json +74 -0
package/dist/index.js ADDED
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TrpcParamtype = exports.ProcedureType = exports.TrpcContext = exports.Input = exports.Subscription = exports.Mutation = exports.Query = exports.Router = exports.TrpcRouter = exports.TrpcModule = void 0;
4
+ /*
5
+ * @nest-native/trpc
6
+ * Copyright(c) 2026 Rodrigo Nogueira
7
+ * MIT Licensed
8
+ */
9
+ require("reflect-metadata");
10
+ var trpc_module_1 = require("./trpc.module");
11
+ Object.defineProperty(exports, "TrpcModule", { enumerable: true, get: function () { return trpc_module_1.TrpcModule; } });
12
+ var trpc_router_1 = require("./trpc-router");
13
+ Object.defineProperty(exports, "TrpcRouter", { enumerable: true, get: function () { return trpc_router_1.TrpcRouter; } });
14
+ var router_decorator_1 = require("./decorators/router.decorator");
15
+ Object.defineProperty(exports, "Router", { enumerable: true, get: function () { return router_decorator_1.Router; } });
16
+ var procedure_decorator_1 = require("./decorators/procedure.decorator");
17
+ Object.defineProperty(exports, "Query", { enumerable: true, get: function () { return procedure_decorator_1.Query; } });
18
+ Object.defineProperty(exports, "Mutation", { enumerable: true, get: function () { return procedure_decorator_1.Mutation; } });
19
+ Object.defineProperty(exports, "Subscription", { enumerable: true, get: function () { return procedure_decorator_1.Subscription; } });
20
+ var input_decorator_1 = require("./decorators/input.decorator");
21
+ Object.defineProperty(exports, "Input", { enumerable: true, get: function () { return input_decorator_1.Input; } });
22
+ var ctx_decorator_1 = require("./decorators/ctx.decorator");
23
+ Object.defineProperty(exports, "TrpcContext", { enumerable: true, get: function () { return ctx_decorator_1.TrpcContext; } });
24
+ var enums_1 = require("./enums");
25
+ Object.defineProperty(exports, "ProcedureType", { enumerable: true, get: function () { return enums_1.ProcedureType; } });
26
+ Object.defineProperty(exports, "TrpcParamtype", { enumerable: true, get: function () { return enums_1.TrpcParamtype; } });
27
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACH,4BAA0B;AAE1B,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,kEAAuD;AAA9C,0GAAA,MAAM,OAAA;AACf,wEAI0C;AAHxC,4GAAA,KAAK,OAAA;AACL,+GAAA,QAAQ,OAAA;AACR,mHAAA,YAAY,OAAA;AAEd,gEAAqD;AAA5C,wGAAA,KAAK,OAAA;AACd,4DAAyD;AAAhD,4GAAA,WAAW,OAAA;AACpB,iCAAuD;AAA9C,sGAAA,aAAa,OAAA;AAAE,sGAAA,aAAa,OAAA"}
@@ -0,0 +1,58 @@
1
+ import { ModuleMetadata } from '@nestjs/common';
2
+ export interface TrpcModuleOptions<TContext = any> {
3
+ /**
4
+ * Path to mount the tRPC handler on.
5
+ * @default '/trpc'
6
+ */
7
+ path?: string;
8
+ /**
9
+ * A factory function that creates the tRPC context for each request.
10
+ * Receives the raw request/response objects from the underlying HTTP adapter.
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * TrpcModule.forRoot<MyContext>({
15
+ * createContext: ({ req }) => ({
16
+ * userId: req.headers['x-user-id'],
17
+ * }),
18
+ * })
19
+ * ```
20
+ */
21
+ createContext?: (opts: {
22
+ req: any;
23
+ res: any;
24
+ }) => TContext | Promise<TContext>;
25
+ /**
26
+ * Whether to register the module globally.
27
+ * @default false
28
+ */
29
+ isGlobal?: boolean;
30
+ /**
31
+ * Path to the auto-generated TypeScript file that exports the typed `AppRouter`.
32
+ *
33
+ * When set, a `.ts` file is written at this path during module initialisation.
34
+ * Clients can `import type { AppRouter }` from the generated file to get
35
+ * full end-to-end type safety, mirroring `autoSchemaFile` from `@nestjs/graphql`.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * TrpcModule.forRoot({
40
+ * autoSchemaFile: join(process.cwd(), 'src/trpc-generated.ts'),
41
+ * })
42
+ * ```
43
+ */
44
+ autoSchemaFile?: string;
45
+ }
46
+ export interface TrpcModuleAsyncOptions<TContext = any> extends Pick<ModuleMetadata, 'imports'> {
47
+ useFactory: (...args: any[]) => TrpcModuleOptions<TContext> | Promise<TrpcModuleOptions<TContext>>;
48
+ inject?: any[];
49
+ extraProviders?: any[];
50
+ isGlobal?: boolean;
51
+ }
52
+ export interface TrpcRouterMetadata {
53
+ /**
54
+ * Prefix for all procedures in this router.
55
+ * Nested under this key in the merged tRPC router.
56
+ */
57
+ alias?: string;
58
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../interfaces.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ import { OnModuleInit } from '@nestjs/common';
2
+ import { HttpAdapterHost } from '@nestjs/core';
3
+ import { TrpcModuleOptions } from './interfaces';
4
+ import { TrpcRouter } from './trpc-router';
5
+ /**
6
+ * Registers the tRPC HTTP handler on the underlying HTTP adapter.
7
+ *
8
+ * Supports both Express and Fastify via the generic Fetch adapter,
9
+ * falling back to a manual middleware when needed.
10
+ */
11
+ export declare class TrpcHttpAdapter implements OnModuleInit {
12
+ private readonly httpAdapterHost;
13
+ private readonly trpcRouter;
14
+ private readonly options;
15
+ private readonly logger;
16
+ constructor(httpAdapterHost: HttpAdapterHost, trpcRouter: TrpcRouter, options: TrpcModuleOptions);
17
+ onModuleInit(): void;
18
+ private sendFetchResponse;
19
+ private createFetchRequest;
20
+ private resolveBody;
21
+ private serializeBody;
22
+ private setHeader;
23
+ private sendBody;
24
+ private endResponse;
25
+ private isStreamingResponse;
26
+ private pipeWebStreamToResponse;
27
+ }
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var TrpcHttpAdapter_1;
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.TrpcHttpAdapter = void 0;
17
+ const common_1 = require("@nestjs/common");
18
+ const core_1 = require("@nestjs/core");
19
+ const fetch_1 = require("@trpc/server/adapters/fetch");
20
+ const stream_1 = require("stream");
21
+ const constants_1 = require("./constants");
22
+ const trpc_router_1 = require("./trpc-router");
23
+ const trpc_request_storage_1 = require("./trpc-request-storage");
24
+ /**
25
+ * Registers the tRPC HTTP handler on the underlying HTTP adapter.
26
+ *
27
+ * Supports both Express and Fastify via the generic Fetch adapter,
28
+ * falling back to a manual middleware when needed.
29
+ */
30
+ let TrpcHttpAdapter = TrpcHttpAdapter_1 = class TrpcHttpAdapter {
31
+ constructor(httpAdapterHost, trpcRouter, options) {
32
+ this.httpAdapterHost = httpAdapterHost;
33
+ this.trpcRouter = trpcRouter;
34
+ this.options = options;
35
+ this.logger = new common_1.Logger(TrpcHttpAdapter_1.name);
36
+ }
37
+ onModuleInit() {
38
+ const httpAdapter = this.httpAdapterHost.httpAdapter;
39
+ if (!httpAdapter) {
40
+ return;
41
+ }
42
+ const path = this.options.path ?? '/trpc';
43
+ const router = this.trpcRouter.getRouter();
44
+ const createContext = this.options.createContext;
45
+ const handler = (req, res) => {
46
+ trpc_request_storage_1.trpcRequestStorage.run({ req, res }, () => {
47
+ void this.createFetchRequest(req)
48
+ .then((fetchRequest) => {
49
+ const handlerOpts = {
50
+ router,
51
+ req: fetchRequest,
52
+ endpoint: path.replace(/^\//, ''),
53
+ createContext: createContext
54
+ ? () => createContext({ req, res })
55
+ : undefined,
56
+ };
57
+ return (0, fetch_1.fetchRequestHandler)(handlerOpts);
58
+ })
59
+ .then((fetchResponse) => {
60
+ this.sendFetchResponse(req, res, fetchResponse);
61
+ })
62
+ .catch((error) => {
63
+ this.logger.error('Unhandled tRPC adapter error', error);
64
+ res.statusCode = 500;
65
+ this.sendBody(res, JSON.stringify({
66
+ error: { message: 'Internal server error', code: -32603 },
67
+ }));
68
+ });
69
+ });
70
+ };
71
+ // Register for all HTTP methods on the tRPC path
72
+ const instance = httpAdapter.getInstance();
73
+ // Use the underlying framework's routing
74
+ // Express: app.use(path, handler)
75
+ if (typeof instance.use === 'function') {
76
+ instance.use(path, handler);
77
+ this.logger.log(`Mapped tRPC handler to "${path}" (Express)`);
78
+ }
79
+ // Fastify: app.all(path, handler)
80
+ else if (typeof instance.route === 'function') {
81
+ instance.route({ method: 'GET', url: `${path}/*`, handler });
82
+ instance.route({ method: 'POST', url: `${path}/*`, handler });
83
+ this.logger.log(`Mapped tRPC handler to "${path}" (Fastify)`);
84
+ }
85
+ }
86
+ sendFetchResponse(req, res, fetchResponse) {
87
+ res.statusCode = fetchResponse.status;
88
+ fetchResponse.headers.forEach((value, key) => {
89
+ this.setHeader(res, key, value);
90
+ });
91
+ const body = fetchResponse.body;
92
+ if (body && this.isStreamingResponse(fetchResponse)) {
93
+ this.pipeWebStreamToResponse(req, res, body);
94
+ return;
95
+ }
96
+ void fetchResponse.text().then((textBody) => {
97
+ this.sendBody(res, textBody);
98
+ });
99
+ }
100
+ async createFetchRequest(req) {
101
+ // Build a URL from the request.
102
+ const protocol = req.protocol ?? (req.raw?.socket?.encrypted ? 'https' : 'http');
103
+ const host = req.hostname ?? req.headers?.host ?? 'localhost';
104
+ const url = `${protocol}://${host}${req.originalUrl ?? req.url}`;
105
+ const body = req.method !== 'GET' && req.method !== 'HEAD'
106
+ ? await this.resolveBody(req)
107
+ : undefined;
108
+ return new Request(url, {
109
+ method: req.method,
110
+ headers: new Headers(req.headers),
111
+ body,
112
+ });
113
+ }
114
+ async resolveBody(req) {
115
+ const serialized = this.serializeBody(req.body);
116
+ if (serialized !== undefined) {
117
+ return serialized;
118
+ }
119
+ const rawSerialized = this.serializeBody(req.raw?.body);
120
+ if (rawSerialized !== undefined) {
121
+ return rawSerialized;
122
+ }
123
+ const streamSource = req.raw ?? req;
124
+ if (!streamSource || typeof streamSource.on !== 'function') {
125
+ return undefined;
126
+ }
127
+ const chunks = [];
128
+ for await (const chunk of streamSource) {
129
+ chunks.push(typeof chunk === 'string' ? Buffer.from(chunk, 'utf-8') : chunk);
130
+ }
131
+ if (!chunks.length) {
132
+ return undefined;
133
+ }
134
+ return Buffer.concat(chunks).toString('utf-8');
135
+ }
136
+ serializeBody(body) {
137
+ if (body == null) {
138
+ return undefined;
139
+ }
140
+ if (typeof body === 'string') {
141
+ return body;
142
+ }
143
+ if (Buffer.isBuffer(body)) {
144
+ return body;
145
+ }
146
+ if (ArrayBuffer.isView(body)) {
147
+ return body;
148
+ }
149
+ return JSON.stringify(body);
150
+ }
151
+ setHeader(res, key, value) {
152
+ res.setHeader?.(key, value) ??
153
+ res.header?.(key, value) ??
154
+ res.raw?.setHeader?.(key, value);
155
+ }
156
+ sendBody(res, body) {
157
+ if (res.send) {
158
+ res.send(body);
159
+ return;
160
+ }
161
+ if (res.end) {
162
+ res.end(body);
163
+ return;
164
+ }
165
+ res.raw?.end(body);
166
+ }
167
+ endResponse(res) {
168
+ if (res.end) {
169
+ res.end();
170
+ return;
171
+ }
172
+ res.raw?.end?.();
173
+ }
174
+ isStreamingResponse(fetchResponse) {
175
+ const contentType = fetchResponse.headers.get('content-type') ?? '';
176
+ return contentType.includes('text/event-stream');
177
+ }
178
+ pipeWebStreamToResponse(req, res, body) {
179
+ const nodeStream = stream_1.Readable.fromWeb(body);
180
+ req.on?.('close', () => {
181
+ nodeStream.destroy();
182
+ });
183
+ nodeStream.on('data', (chunk) => {
184
+ if (res.write) {
185
+ res.write(chunk);
186
+ return;
187
+ }
188
+ if (res.raw?.write) {
189
+ res.raw.write(chunk);
190
+ return;
191
+ }
192
+ this.sendBody(res, Buffer.from(chunk).toString('utf-8'));
193
+ });
194
+ nodeStream.on('end', () => {
195
+ this.endResponse(res);
196
+ });
197
+ nodeStream.on('error', () => {
198
+ this.endResponse(res);
199
+ });
200
+ }
201
+ };
202
+ exports.TrpcHttpAdapter = TrpcHttpAdapter;
203
+ exports.TrpcHttpAdapter = TrpcHttpAdapter = TrpcHttpAdapter_1 = __decorate([
204
+ (0, common_1.Injectable)(),
205
+ __param(2, (0, common_1.Inject)(constants_1.TRPC_MODULE_OPTIONS)),
206
+ __metadata("design:paramtypes", [core_1.HttpAdapterHost,
207
+ trpc_router_1.TrpcRouter, Object])
208
+ ], TrpcHttpAdapter);
209
+ //# sourceMappingURL=trpc-http-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trpc-http-adapter.js","sourceRoot":"","sources":["../trpc-http-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { AsyncLocalStorage } from 'async_hooks';
2
+ interface TrpcRequestStore {
3
+ req: any;
4
+ res: any;
5
+ contextId?: {
6
+ id: number;
7
+ payload?: unknown;
8
+ };
9
+ requestRegistered?: boolean;
10
+ }
11
+ export declare const trpcRequestStorage: AsyncLocalStorage<TrpcRequestStore>;
12
+ export {};
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.trpcRequestStorage = void 0;
4
+ const async_hooks_1 = require("async_hooks");
5
+ exports.trpcRequestStorage = new async_hooks_1.AsyncLocalStorage();
6
+ //# sourceMappingURL=trpc-request-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trpc-request-storage.js","sourceRoot":"","sources":["../trpc-request-storage.ts"],"names":[],"mappings":";;;AAAA,6CAAgD;AASnC,QAAA,kBAAkB,GAAG,IAAI,+BAAiB,EAAoB,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { OnModuleInit } from '@nestjs/common';
2
+ import { ApplicationConfig, ModuleRef, DiscoveryService, MetadataScanner, ModulesContainer, Reflector } from '@nestjs/core';
3
+ import { AnyRouter } from '@trpc/server';
4
+ import { TrpcModuleOptions } from './interfaces';
5
+ export declare class TrpcRouter<TRouter extends AnyRouter = AnyRouter> implements OnModuleInit {
6
+ private readonly discoveryService;
7
+ private readonly metadataScanner;
8
+ private readonly modulesContainer;
9
+ private readonly reflector;
10
+ private readonly applicationConfig;
11
+ private readonly moduleRef;
12
+ private readonly options;
13
+ private readonly logger;
14
+ private appRouter;
15
+ private readonly contextCreator;
16
+ private collectedRouterInfos;
17
+ constructor(discoveryService: DiscoveryService, metadataScanner: MetadataScanner, modulesContainer: ModulesContainer, reflector: Reflector, applicationConfig: ApplicationConfig, moduleRef: ModuleRef, options: TrpcModuleOptions);
18
+ onModuleInit(): void;
19
+ getRouter(): TRouter;
20
+ private resolveModuleKey;
21
+ private buildRouter;
22
+ private registerRouterProvider;
23
+ private createRouterProviderContext;
24
+ private registerRouterMethod;
25
+ private createWrappedHandler;
26
+ private createProcedure;
27
+ private createSubscriptionProcedure;
28
+ private commitRouterProvider;
29
+ private getRouterClassName;
30
+ private normalizeRouterAlias;
31
+ private assertValidProcedureMetadata;
32
+ private formatProcedurePath;
33
+ private assertUniqueProcedurePath;
34
+ private assertUniqueAliasPath;
35
+ private createConfigurationError;
36
+ private assignAliasedRouter;
37
+ private resolveContextId;
38
+ private resolveRouterInstance;
39
+ private validateSubscriptionOutput;
40
+ }