nestjs-trpc 1.1.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 (212) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +93 -0
  3. package/dist/decorators/__tests__/context.decorator.spec.d.ts +1 -0
  4. package/dist/decorators/__tests__/context.decorator.spec.js +72 -0
  5. package/dist/decorators/__tests__/context.decorator.spec.js.map +1 -0
  6. package/dist/decorators/__tests__/input.decorator.spec.d.ts +1 -0
  7. package/dist/decorators/__tests__/input.decorator.spec.js +71 -0
  8. package/dist/decorators/__tests__/input.decorator.spec.js.map +1 -0
  9. package/dist/decorators/__tests__/middlewares.decorator.spec.d.ts +1 -0
  10. package/dist/decorators/__tests__/middlewares.decorator.spec.js +76 -0
  11. package/dist/decorators/__tests__/middlewares.decorator.spec.js.map +1 -0
  12. package/dist/decorators/__tests__/mutation.decorator.spec.d.ts +1 -0
  13. package/dist/decorators/__tests__/mutation.decorator.spec.js +88 -0
  14. package/dist/decorators/__tests__/mutation.decorator.spec.js.map +1 -0
  15. package/dist/decorators/__tests__/options.decorator.spec.d.ts +1 -0
  16. package/dist/decorators/__tests__/options.decorator.spec.js +68 -0
  17. package/dist/decorators/__tests__/options.decorator.spec.js.map +1 -0
  18. package/dist/decorators/__tests__/path.decorator.spec.d.ts +1 -0
  19. package/dist/decorators/__tests__/path.decorator.spec.js +68 -0
  20. package/dist/decorators/__tests__/path.decorator.spec.js.map +1 -0
  21. package/dist/decorators/__tests__/query.decorator.spec.d.ts +1 -0
  22. package/dist/decorators/__tests__/query.decorator.spec.js +88 -0
  23. package/dist/decorators/__tests__/query.decorator.spec.js.map +1 -0
  24. package/dist/decorators/__tests__/raw-input.decorator.spec.d.ts +1 -0
  25. package/dist/decorators/__tests__/raw-input.decorator.spec.js +68 -0
  26. package/dist/decorators/__tests__/raw-input.decorator.spec.js.map +1 -0
  27. package/dist/decorators/__tests__/router.decorator.spec.d.ts +1 -0
  28. package/dist/decorators/__tests__/router.decorator.spec.js +59 -0
  29. package/dist/decorators/__tests__/router.decorator.spec.js.map +1 -0
  30. package/dist/decorators/__tests__/type.decorator.spec.d.ts +1 -0
  31. package/dist/decorators/__tests__/type.decorator.spec.js +68 -0
  32. package/dist/decorators/__tests__/type.decorator.spec.js.map +1 -0
  33. package/dist/decorators/context.decorator.d.ts +1 -0
  34. package/dist/decorators/context.decorator.js +21 -0
  35. package/dist/decorators/context.decorator.js.map +1 -0
  36. package/dist/decorators/context.decorator.spec.d.ts +1 -0
  37. package/dist/decorators/context.decorator.spec.js +73 -0
  38. package/dist/decorators/context.decorator.spec.js.map +1 -0
  39. package/dist/decorators/index.d.ts +10 -0
  40. package/dist/decorators/index.js +27 -0
  41. package/dist/decorators/index.js.map +1 -0
  42. package/dist/decorators/input.decorator.d.ts +1 -0
  43. package/dist/decorators/input.decorator.js +22 -0
  44. package/dist/decorators/input.decorator.js.map +1 -0
  45. package/dist/decorators/input.decorator.spec.d.ts +1 -0
  46. package/dist/decorators/input.decorator.spec.js +71 -0
  47. package/dist/decorators/input.decorator.spec.js.map +1 -0
  48. package/dist/decorators/middlewares.decorator.d.ts +2 -0
  49. package/dist/decorators/middlewares.decorator.js +23 -0
  50. package/dist/decorators/middlewares.decorator.js.map +1 -0
  51. package/dist/decorators/middlewares.decorator.spec.d.ts +1 -0
  52. package/dist/decorators/middlewares.decorator.spec.js +76 -0
  53. package/dist/decorators/middlewares.decorator.spec.js.map +1 -0
  54. package/dist/decorators/mutation.decorator.d.ts +5 -0
  55. package/dist/decorators/mutation.decorator.js +14 -0
  56. package/dist/decorators/mutation.decorator.js.map +1 -0
  57. package/dist/decorators/mutation.decorator.spec.d.ts +1 -0
  58. package/dist/decorators/mutation.decorator.spec.js +88 -0
  59. package/dist/decorators/mutation.decorator.spec.js.map +1 -0
  60. package/dist/decorators/options.decorator.d.ts +1 -0
  61. package/dist/decorators/options.decorator.js +21 -0
  62. package/dist/decorators/options.decorator.js.map +1 -0
  63. package/dist/decorators/options.decorator.spec.d.ts +1 -0
  64. package/dist/decorators/options.decorator.spec.js +68 -0
  65. package/dist/decorators/options.decorator.spec.js.map +1 -0
  66. package/dist/decorators/path.decorator.d.ts +1 -0
  67. package/dist/decorators/path.decorator.js +21 -0
  68. package/dist/decorators/path.decorator.js.map +1 -0
  69. package/dist/decorators/query.decorator.d.ts +5 -0
  70. package/dist/decorators/query.decorator.js +14 -0
  71. package/dist/decorators/query.decorator.js.map +1 -0
  72. package/dist/decorators/raw-input.decorator.d.ts +1 -0
  73. package/dist/decorators/raw-input.decorator.js +21 -0
  74. package/dist/decorators/raw-input.decorator.js.map +1 -0
  75. package/dist/decorators/router.decorator.d.ts +3 -0
  76. package/dist/decorators/router.decorator.js +10 -0
  77. package/dist/decorators/router.decorator.js.map +1 -0
  78. package/dist/decorators/type.decorator.d.ts +1 -0
  79. package/dist/decorators/type.decorator.js +21 -0
  80. package/dist/decorators/type.decorator.js.map +1 -0
  81. package/dist/factories/__tests__/middleware.factory.spec.d.ts +1 -0
  82. package/dist/factories/__tests__/middleware.factory.spec.js +66 -0
  83. package/dist/factories/__tests__/middleware.factory.spec.js.map +1 -0
  84. package/dist/factories/__tests__/procedure.factory.spec.d.ts +1 -0
  85. package/dist/factories/__tests__/procedure.factory.spec.js +179 -0
  86. package/dist/factories/__tests__/procedure.factory.spec.js.map +1 -0
  87. package/dist/factories/__tests__/router.factory.spec.d.ts +1 -0
  88. package/dist/factories/__tests__/router.factory.spec.js +223 -0
  89. package/dist/factories/__tests__/router.factory.spec.js.map +1 -0
  90. package/dist/factories/__tests__/trpc.factory.spec.d.ts +1 -0
  91. package/dist/factories/__tests__/trpc.factory.spec.js +60 -0
  92. package/dist/factories/__tests__/trpc.factory.spec.js.map +1 -0
  93. package/dist/factories/middleware.factory.d.ts +7 -0
  94. package/dist/factories/middleware.factory.js +42 -0
  95. package/dist/factories/middleware.factory.js.map +1 -0
  96. package/dist/factories/procedure.factory.d.ts +17 -0
  97. package/dist/factories/procedure.factory.js +123 -0
  98. package/dist/factories/procedure.factory.js.map +1 -0
  99. package/dist/factories/router.factory.d.ts +9 -0
  100. package/dist/factories/router.factory.js +71 -0
  101. package/dist/factories/router.factory.js.map +1 -0
  102. package/dist/factories/trpc.factory.d.ts +10 -0
  103. package/dist/factories/trpc.factory.js +39 -0
  104. package/dist/factories/trpc.factory.js.map +1 -0
  105. package/dist/generators/__tests__/context.generator.spec.d.ts +1 -0
  106. package/dist/generators/__tests__/context.generator.spec.js +70 -0
  107. package/dist/generators/__tests__/context.generator.spec.js.map +1 -0
  108. package/dist/generators/__tests__/decorator.generator.spec.d.ts +1 -0
  109. package/dist/generators/__tests__/decorator.generator.spec.js +84 -0
  110. package/dist/generators/__tests__/decorator.generator.spec.js.map +1 -0
  111. package/dist/generators/__tests__/middleware.generator.spec.d.ts +1 -0
  112. package/dist/generators/__tests__/middleware.generator.spec.js +71 -0
  113. package/dist/generators/__tests__/middleware.generator.spec.js.map +1 -0
  114. package/dist/generators/__tests__/router.generator.spec.d.ts +1 -0
  115. package/dist/generators/__tests__/router.generator.spec.js +172 -0
  116. package/dist/generators/__tests__/router.generator.spec.js.map +1 -0
  117. package/dist/generators/__tests__/trpc.generator.spec.d.ts +1 -0
  118. package/dist/generators/__tests__/trpc.generator.spec.js +170 -0
  119. package/dist/generators/__tests__/trpc.generator.spec.js.map +1 -0
  120. package/dist/generators/context.generator.d.ts +9 -0
  121. package/dist/generators/context.generator.js +89 -0
  122. package/dist/generators/context.generator.js.map +1 -0
  123. package/dist/generators/context.handler.d.ts +9 -0
  124. package/dist/generators/context.handler.js +89 -0
  125. package/dist/generators/context.handler.js.map +1 -0
  126. package/dist/generators/decorator.generator.d.ts +7 -0
  127. package/dist/generators/decorator.generator.js +74 -0
  128. package/dist/generators/decorator.generator.js.map +1 -0
  129. package/dist/generators/decorator.handler.d.ts +11 -0
  130. package/dist/generators/decorator.handler.js +80 -0
  131. package/dist/generators/decorator.handler.js.map +1 -0
  132. package/dist/generators/middleware.generator.d.ts +12 -0
  133. package/dist/generators/middleware.generator.js +108 -0
  134. package/dist/generators/middleware.generator.js.map +1 -0
  135. package/dist/generators/middleware.handler.d.ts +12 -0
  136. package/dist/generators/middleware.handler.js +105 -0
  137. package/dist/generators/middleware.handler.js.map +1 -0
  138. package/dist/generators/router.generator.d.ts +9 -0
  139. package/dist/generators/router.generator.js +84 -0
  140. package/dist/generators/router.generator.js.map +1 -0
  141. package/dist/generators/serializer.handler.d.ts +11 -0
  142. package/dist/generators/serializer.handler.js +87 -0
  143. package/dist/generators/serializer.handler.js.map +1 -0
  144. package/dist/generators/trpc.generator.d.ts +19 -0
  145. package/dist/generators/trpc.generator.js +139 -0
  146. package/dist/generators/trpc.generator.js.map +1 -0
  147. package/dist/generators/types/index.ts +1 -0
  148. package/dist/handlers/context.handler.d.ts +9 -0
  149. package/dist/handlers/context.handler.js +89 -0
  150. package/dist/handlers/context.handler.js.map +1 -0
  151. package/dist/handlers/decorator.handler.d.ts +11 -0
  152. package/dist/handlers/decorator.handler.js +80 -0
  153. package/dist/handlers/decorator.handler.js.map +1 -0
  154. package/dist/handlers/middleware.handler.d.ts +12 -0
  155. package/dist/handlers/middleware.handler.js +105 -0
  156. package/dist/handlers/middleware.handler.js.map +1 -0
  157. package/dist/handlers/serializer.handler.d.ts +11 -0
  158. package/dist/handlers/serializer.handler.js +87 -0
  159. package/dist/handlers/serializer.handler.js.map +1 -0
  160. package/dist/index.d.ts +3 -0
  161. package/dist/index.js +20 -0
  162. package/dist/index.js.map +1 -0
  163. package/dist/interfaces/context.interface.d.ts +5 -0
  164. package/dist/interfaces/context.interface.js +3 -0
  165. package/dist/interfaces/context.interface.js.map +1 -0
  166. package/dist/interfaces/factory.interface.d.ts +59 -0
  167. package/dist/interfaces/factory.interface.js +13 -0
  168. package/dist/interfaces/factory.interface.js.map +1 -0
  169. package/dist/interfaces/generator.interface.d.ts +21 -0
  170. package/dist/interfaces/generator.interface.js +3 -0
  171. package/dist/interfaces/generator.interface.js.map +1 -0
  172. package/dist/interfaces/index.d.ts +4 -0
  173. package/dist/interfaces/index.js +21 -0
  174. package/dist/interfaces/index.js.map +1 -0
  175. package/dist/interfaces/middleware.interface.d.ts +19 -0
  176. package/dist/interfaces/middleware.interface.js +3 -0
  177. package/dist/interfaces/middleware.interface.js.map +1 -0
  178. package/dist/interfaces/module-options.interface.d.ts +14 -0
  179. package/dist/interfaces/module-options.interface.js +3 -0
  180. package/dist/interfaces/module-options.interface.js.map +1 -0
  181. package/dist/interfaces/procedure-options.interface.d.ts +7 -0
  182. package/dist/interfaces/procedure-options.interface.js +3 -0
  183. package/dist/interfaces/procedure-options.interface.js.map +1 -0
  184. package/dist/trpc.constants.d.ts +7 -0
  185. package/dist/trpc.constants.js +11 -0
  186. package/dist/trpc.constants.js.map +1 -0
  187. package/dist/trpc.driver.d.ts +14 -0
  188. package/dist/trpc.driver.js +85 -0
  189. package/dist/trpc.driver.js.map +1 -0
  190. package/dist/trpc.enum.d.ts +4 -0
  191. package/dist/trpc.enum.js +9 -0
  192. package/dist/trpc.enum.js.map +1 -0
  193. package/dist/trpc.generator.d.ts +24 -0
  194. package/dist/trpc.generator.js +114 -0
  195. package/dist/trpc.generator.js.map +1 -0
  196. package/dist/trpc.module.d.ts +10 -0
  197. package/dist/trpc.module.js +93 -0
  198. package/dist/trpc.module.js.map +1 -0
  199. package/dist/types/index.ts +5 -0
  200. package/dist/utils/__tests__/file.util.spec.d.ts +1 -0
  201. package/dist/utils/__tests__/file.util.spec.js +73 -0
  202. package/dist/utils/__tests__/file.util.spec.js.map +1 -0
  203. package/dist/utils/file.util.d.ts +5 -0
  204. package/dist/utils/file.util.js +61 -0
  205. package/dist/utils/file.util.js.map +1 -0
  206. package/dist/utils/type.util.d.ts +5 -0
  207. package/dist/utils/type.util.js +72 -0
  208. package/dist/utils/type.util.js.map +1 -0
  209. package/dist/utils/validate-each.util.d.ts +8 -0
  210. package/dist/utils/validate-each.util.js +26 -0
  211. package/dist/utils/validate-each.util.js.map +1 -0
  212. package/package.json +103 -0
package/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ (The MIT License)
2
+
3
+ Copyright (c) 2017-2022 Kevin Edry
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ 'Software'), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,93 @@
1
+ <a href="https://nestjs-trpc.io/" target="_blank" rel="noopener">
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="https://i.imgur.com/JvsOXCg.png" />
4
+ <img alt="tRPC" src="https://i.imgur.com/JvsOXCg.png" />
5
+ </picture>
6
+ </a>
7
+
8
+ <div align="center">
9
+ <h1>Nestjs tRPC Adapter</h1>
10
+ <h3>An opinionated approach to building<br />End-to-end typesafe APIs with tRPC within NestJS.</h3>
11
+ <figure>
12
+ <img src="https://assets.trpc.io/www/v10/v10-dark-landscape.gif" alt="Demo" />
13
+ <figcaption>
14
+ <p align="center">
15
+ The client above is <strong>not</strong> importing any code from the server, only its type declarations.
16
+ </p>
17
+ </figcaption>
18
+ </figure>
19
+ </div>
20
+
21
+ ## Introduction
22
+ **NestJS RPC** 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.
23
+
24
+ ## Features
25
+ - ✅&nbsp; Supports most tRPC features out of the box with more to come.
26
+ - 🧙‍&nbsp; Full static typesafety & autocompletion on the client, for inputs, outputs, and errors.
27
+ - 🙀&nbsp; Implements the Nestjs opinionated approach to how tRPC works.
28
+ - ⚡️&nbsp; Same client-side DX - We generate the AppRouter on the fly.
29
+ - 🔋&nbsp; Examples are available in the ./examples folder.
30
+ - 📦&nbsp; Out of the box support for **Dependency Injection** within the routes and procedures.
31
+ - 👀&nbsp; Native support for `express`, and `zod` with more drivers to come!
32
+
33
+ ## Quickstart
34
+
35
+ ### Installation
36
+ To install **NestJS tRPC** with your preferred package manager, you can use any of the following commands:
37
+
38
+ ```shell
39
+ # npm
40
+ npm install trpc-nestjs
41
+
42
+ # pnpm
43
+ pnpm add trpc-nestjs
44
+
45
+ # yarn
46
+ yarn add trpc-nestjs
47
+ ```
48
+
49
+ ## How to use
50
+ Here's a brief example demonstrating how to use the decorators available in **NestJS tRPC**:
51
+
52
+ ```typescript
53
+ // users.router.ts
54
+ import { Router, Query, Procedure } from 'trpc-nestjs';
55
+ import { UserService } from './user.service';
56
+ import { TRPCError } from '@trpc/server';
57
+
58
+ const userSchema = z.object({
59
+ name: z.string(),
60
+ password: z.string()
61
+ })
62
+
63
+ @Router()
64
+ class UserRouter {
65
+ constructor(
66
+ @Inject(UserService) private readonly userService: UserService
67
+ ) {
68
+ }
69
+
70
+ @Procedure(ProtectedProcedure)
71
+ @Query({ output: z.array(userSchema) })
72
+ async getUsers() {
73
+ try {
74
+ const users = await this.userService.getUsers();
75
+ return users;
76
+ } catch (e: unknown) {
77
+ throw new TRPCError("An error has occured when trying to get users.", "INTERNAL_SERVER_ERROR", e)
78
+ }
79
+ }
80
+ }
81
+ ```
82
+
83
+ **👉 See full documentation on [NestJS-tRPC.io](https://nestjs-trpc.io/docs). 👈**
84
+
85
+ ## All contributors
86
+
87
+ > tRPC is developed by [Kevin Edry](https://twitter.com/KevinEdry), which taken a huge inspiration from both NestJS and tRPC inner workings.
88
+
89
+ <a href="https://github.com/KevinEdry/nestjs-trpc/graphs/contributors">
90
+ <p align="center">
91
+ <img width="720" height="50" src="https://contrib.rocks/image?repo=kevinedry/nestjs-trpc" alt="A table of avatars from the project's contributors" />
92
+ </p>
93
+ </a>
@@ -0,0 +1 @@
1
+ import 'reflect-metadata';
@@ -0,0 +1,72 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ require("reflect-metadata");
16
+ const context_decorator_1 = require("../context.decorator");
17
+ const trpc_constants_1 = require("../../trpc.constants");
18
+ const factory_interface_1 = require("../../interfaces/factory.interface");
19
+ describe('Context Decorator', () => {
20
+ class TestClass {
21
+ testMethod(param1, param2) { }
22
+ }
23
+ __decorate([
24
+ __param(0, (0, context_decorator_1.Ctx)()),
25
+ __param(1, (0, context_decorator_1.Ctx)()),
26
+ __metadata("design:type", Function),
27
+ __metadata("design:paramtypes", [Object, Object]),
28
+ __metadata("design:returntype", void 0)
29
+ ], TestClass.prototype, "testMethod", null);
30
+ it('should add metadata to the method parameters', () => {
31
+ const metadata = Reflect.getMetadata(trpc_constants_1.PROCEDURE_PARAM_METADATA_KEY, TestClass.prototype, 'testMethod');
32
+ expect(metadata).toBeDefined();
33
+ expect(Array.isArray(metadata)).toBe(true);
34
+ });
35
+ it('should add correct metadata for each parameter', () => {
36
+ const metadata = Reflect.getMetadata(trpc_constants_1.PROCEDURE_PARAM_METADATA_KEY, TestClass.prototype, 'testMethod');
37
+ expect(metadata).toHaveLength(2);
38
+ expect(metadata[0]).toEqual({
39
+ type: factory_interface_1.ProcedureParamDecoratorType.Ctx,
40
+ index: 1,
41
+ });
42
+ expect(metadata[1]).toEqual({
43
+ type: factory_interface_1.ProcedureParamDecoratorType.Ctx,
44
+ index: 0,
45
+ });
46
+ });
47
+ it('should not add metadata for properties', () => {
48
+ const metadata = Reflect.getMetadata(trpc_constants_1.PROCEDURE_PARAM_METADATA_KEY, TestClass.prototype, 'testProperty');
49
+ expect(metadata).toBeUndefined();
50
+ });
51
+ it('should append to existing metadata', () => {
52
+ class TestClassWithExistingMetadata {
53
+ testMethod(param1) { }
54
+ }
55
+ __decorate([
56
+ __param(0, (0, context_decorator_1.Ctx)()),
57
+ __metadata("design:type", Function),
58
+ __metadata("design:paramtypes", [Object]),
59
+ __metadata("design:returntype", void 0)
60
+ ], TestClassWithExistingMetadata.prototype, "testMethod", null);
61
+ const existingMetadata = [{ type: 'SomeOtherDecorator', index: 0 }];
62
+ Reflect.defineMetadata(trpc_constants_1.PROCEDURE_PARAM_METADATA_KEY, existingMetadata, TestClassWithExistingMetadata.prototype, 'testMethod');
63
+ (0, context_decorator_1.Ctx)()(TestClassWithExistingMetadata.prototype, 'testMethod', 1);
64
+ const metadata = Reflect.getMetadata(trpc_constants_1.PROCEDURE_PARAM_METADATA_KEY, TestClassWithExistingMetadata.prototype, 'testMethod');
65
+ expect(metadata).toHaveLength(2);
66
+ expect(metadata[1]).toEqual({
67
+ type: factory_interface_1.ProcedureParamDecoratorType.Ctx,
68
+ index: 1,
69
+ });
70
+ });
71
+ });
72
+ //# sourceMappingURL=context.decorator.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.decorator.spec.js","sourceRoot":"","sources":["../../../src/decorators/__tests__/context.decorator.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4BAA0B;AAC1B,4DAA2C;AAC3C,yDAAoE;AACpE,0EAAiF;AAEjF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,MAAM,SAAS;QACb,UAAU,CAAQ,MAAW,EAAS,MAAW,IAAG,CAAC;KACtD;IADC;QAAY,WAAA,IAAA,uBAAG,GAAE,CAAA;QAAe,WAAA,IAAA,uBAAG,GAAE,CAAA;;;;+CAAgB;IAGvD,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,6CAA4B,EAAE,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACtG,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,6CAA4B,EAAE,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACtG,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAEjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1B,IAAI,EAAE,+CAA2B,CAAC,GAAG;YACrC,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1B,IAAI,EAAE,+CAA2B,CAAC,GAAG;YACrC,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,6CAA4B,EAAE,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACxG,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,6BAA6B;YACjC,UAAU,CAAQ,MAAW,IAAG,CAAC;SAClC;QADC;YAAY,WAAA,IAAA,uBAAG,GAAE,CAAA;;;;uEAAgB;QAInC,MAAM,gBAAgB,GAAG,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,cAAc,CAAC,6CAA4B,EAAE,gBAAgB,EAAE,6BAA6B,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAG9H,IAAA,uBAAG,GAAE,CAAC,6BAA6B,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;QAEhE,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,6CAA4B,EAAE,6BAA6B,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC1H,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1B,IAAI,EAAE,+CAA2B,CAAC,GAAG;YACrC,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ import 'reflect-metadata';
@@ -0,0 +1,71 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ require("reflect-metadata");
16
+ const input_decorator_1 = require("../input.decorator");
17
+ const trpc_constants_1 = require("../../trpc.constants");
18
+ const factory_interface_1 = require("../../interfaces/factory.interface");
19
+ describe('Input Decorator', () => {
20
+ class TestClass {
21
+ testMethod(param1, param2) { }
22
+ }
23
+ __decorate([
24
+ __param(0, (0, input_decorator_1.Input)()),
25
+ __param(1, (0, input_decorator_1.Input)('key')),
26
+ __metadata("design:type", Function),
27
+ __metadata("design:paramtypes", [Object, Object]),
28
+ __metadata("design:returntype", void 0)
29
+ ], TestClass.prototype, "testMethod", null);
30
+ it('should add metadata to the method', () => {
31
+ const metadata = Reflect.getMetadata(trpc_constants_1.PROCEDURE_PARAM_METADATA_KEY, TestClass.prototype, 'testMethod');
32
+ expect(metadata).toBeDefined();
33
+ expect(Array.isArray(metadata)).toBe(true);
34
+ });
35
+ it('should add correct metadata for each parameter', () => {
36
+ const metadata = Reflect.getMetadata(trpc_constants_1.PROCEDURE_PARAM_METADATA_KEY, TestClass.prototype, 'testMethod');
37
+ expect(metadata).toHaveLength(2);
38
+ expect(metadata[0]).toEqual({
39
+ type: factory_interface_1.ProcedureParamDecoratorType.Input,
40
+ index: 1,
41
+ key: 'key',
42
+ });
43
+ expect(metadata[1]).toEqual({
44
+ type: factory_interface_1.ProcedureParamDecoratorType.Input,
45
+ index: 0,
46
+ key: undefined,
47
+ });
48
+ });
49
+ it('should append to existing metadata', () => {
50
+ class TestClassWithExistingMetadata {
51
+ testMethod(param1) { }
52
+ }
53
+ __decorate([
54
+ __param(0, (0, input_decorator_1.Input)()),
55
+ __metadata("design:type", Function),
56
+ __metadata("design:paramtypes", [Object]),
57
+ __metadata("design:returntype", void 0)
58
+ ], TestClassWithExistingMetadata.prototype, "testMethod", null);
59
+ const existingMetadata = [{ type: 'SomeOtherDecorator', index: 0 }];
60
+ Reflect.defineMetadata(trpc_constants_1.PROCEDURE_PARAM_METADATA_KEY, existingMetadata, TestClassWithExistingMetadata.prototype, 'testMethod');
61
+ (0, input_decorator_1.Input)('newKey')(TestClassWithExistingMetadata.prototype, 'testMethod', 1);
62
+ const metadata = Reflect.getMetadata(trpc_constants_1.PROCEDURE_PARAM_METADATA_KEY, TestClassWithExistingMetadata.prototype, 'testMethod');
63
+ expect(metadata).toHaveLength(2);
64
+ expect(metadata[1]).toEqual({
65
+ type: factory_interface_1.ProcedureParamDecoratorType.Input,
66
+ index: 1,
67
+ key: 'newKey',
68
+ });
69
+ });
70
+ });
71
+ //# sourceMappingURL=input.decorator.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.decorator.spec.js","sourceRoot":"","sources":["../../../src/decorators/__tests__/input.decorator.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4BAA0B;AAC1B,wDAA2C;AAC3C,yDAAoE;AACpE,0EAAiF;AAEjF,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,MAAM,SAAS;QACb,UAAU,CAAU,MAAW,EAAgB,MAAW,IAAG,CAAC;KAC/D;IADC;QAAY,WAAA,IAAA,uBAAK,GAAE,CAAA;QAAe,WAAA,IAAA,uBAAK,EAAC,KAAK,CAAC,CAAA;;;;+CAAgB;IAGhE,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,6CAA4B,EAAE,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACtG,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,6CAA4B,EAAE,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACtG,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAEjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1B,IAAI,EAAE,+CAA2B,CAAC,KAAK;YACvC,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,KAAK;SACX,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACxB,IAAI,EAAE,+CAA2B,CAAC,KAAK;YACvC,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,6BAA6B;YACjC,UAAU,CAAU,MAAW,IAAG,CAAC;SACpC;QADC;YAAY,WAAA,IAAA,uBAAK,GAAE,CAAA;;;;uEAAgB;QAIrC,MAAM,gBAAgB,GAAG,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,cAAc,CAAC,6CAA4B,EAAE,gBAAgB,EAAE,6BAA6B,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAG9H,IAAA,uBAAK,EAAC,QAAQ,CAAC,CAAC,6BAA6B,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;QAE1E,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,6CAA4B,EAAE,6BAA6B,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC1H,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1B,IAAI,EAAE,+CAA2B,CAAC,KAAK;YACvC,KAAK,EAAE,CAAC;YACR,GAAG,EAAE,QAAQ;SACd,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ import 'reflect-metadata';
@@ -0,0 +1,76 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ require("reflect-metadata");
13
+ const middlewares_decorator_1 = require("../middlewares.decorator");
14
+ const trpc_constants_1 = require("../../trpc.constants");
15
+ describe('Middlewares Decorator', () => {
16
+ const mockMiddleware = () => ({});
17
+ it('should add metadata to the class', () => {
18
+ let TestClass = class TestClass {
19
+ };
20
+ TestClass = __decorate([
21
+ (0, middlewares_decorator_1.Middlewares)(mockMiddleware)
22
+ ], TestClass);
23
+ const metadata = Reflect.getMetadata(trpc_constants_1.MIDDLEWARE_KEY, TestClass);
24
+ expect(metadata).toBe(mockMiddleware);
25
+ });
26
+ it('should add metadata to the method', () => {
27
+ class TestClass {
28
+ testMethod() { }
29
+ }
30
+ __decorate([
31
+ (0, middlewares_decorator_1.Middlewares)(mockMiddleware),
32
+ __metadata("design:type", Function),
33
+ __metadata("design:paramtypes", []),
34
+ __metadata("design:returntype", void 0)
35
+ ], TestClass.prototype, "testMethod", null);
36
+ const metadata = Reflect.getMetadata(trpc_constants_1.MIDDLEWARE_KEY, TestClass.prototype.testMethod);
37
+ expect(metadata).toBe(mockMiddleware);
38
+ });
39
+ it('should throw an error for invalid middleware on class', () => {
40
+ expect(() => {
41
+ let TestClass = class TestClass {
42
+ };
43
+ TestClass = __decorate([
44
+ (0, middlewares_decorator_1.Middlewares)({})
45
+ ], TestClass);
46
+ }).toThrow();
47
+ });
48
+ it('should throw an error for invalid middleware on method', () => {
49
+ expect(() => {
50
+ class TestClass {
51
+ testMethod() { }
52
+ }
53
+ __decorate([
54
+ (0, middlewares_decorator_1.Middlewares)({}),
55
+ __metadata("design:type", Function),
56
+ __metadata("design:paramtypes", []),
57
+ __metadata("design:returntype", void 0)
58
+ ], TestClass.prototype, "testMethod", null);
59
+ }).toThrow();
60
+ });
61
+ it('should accept middleware with use method', () => {
62
+ class MiddlewareWithUse {
63
+ use(opts) {
64
+ throw new Error('Method not implemented.');
65
+ }
66
+ }
67
+ let TestClass = class TestClass {
68
+ };
69
+ TestClass = __decorate([
70
+ (0, middlewares_decorator_1.Middlewares)(MiddlewareWithUse)
71
+ ], TestClass);
72
+ const metadata = Reflect.getMetadata(trpc_constants_1.MIDDLEWARE_KEY, TestClass);
73
+ expect(metadata).toBe(MiddlewareWithUse);
74
+ });
75
+ });
76
+ //# sourceMappingURL=middlewares.decorator.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middlewares.decorator.spec.js","sourceRoot":"","sources":["../../../src/decorators/__tests__/middlewares.decorator.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,4BAA0B;AAC1B,oEAAuD;AACvD,yDAAsD;AAGtD,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAElC,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAE1C,IAAM,SAAS,GAAf,MAAM,SAAS;SAAG,CAAA;QAAZ,SAAS;YADd,IAAA,mCAAW,EAAC,cAAc,CAAC;WACtB,SAAS,CAAG;QAElB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,+BAAc,EAAE,SAAS,CAAC,CAAC;QAChE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,SAAS;YAEb,UAAU,KAAI,CAAC;SAChB;QADC;YADC,IAAA,mCAAW,EAAC,cAAc,CAAC;;;;mDACb;QAGjB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,+BAAc,EAAE,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACrF,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,GAAG,EAAE;YAEV,IAAM,SAAS,GAAf,MAAM,SAAS;aAAG,CAAA;YAAZ,SAAS;gBADd,IAAA,mCAAW,EAAC,EAAS,CAAC;eACjB,SAAS,CAAG;QACpB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,GAAG,EAAE;YACV,MAAM,SAAS;gBAEb,UAAU,KAAI,CAAC;aAChB;YADC;gBADC,IAAA,mCAAW,EAAC,EAAS,CAAC;;;;uDACR;QAEnB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,iBAAiB;YACnB,GAAG,CAAC,IAA+B;gBAC/B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC/C,CAAC;SACJ;QAGD,IAAM,SAAS,GAAf,MAAM,SAAS;SAAG,CAAA;QAAZ,SAAS;YADd,IAAA,mCAAW,EAAC,iBAAiB,CAAC;WACzB,SAAS,CAAG;QAElB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,+BAAc,EAAE,SAAS,CAAC,CAAC;QAChE,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ import 'reflect-metadata';
@@ -0,0 +1,88 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ require("reflect-metadata");
13
+ const mutation_decorator_1 = require("../mutation.decorator");
14
+ const trpc_constants_1 = require("../../trpc.constants");
15
+ const trpc_enum_1 = require("../../trpc.enum");
16
+ const zod_1 = require("zod");
17
+ describe('Mutation Decorator', () => {
18
+ it('should set procedure type metadata', () => {
19
+ class TestClass {
20
+ testMethod() { }
21
+ }
22
+ __decorate([
23
+ (0, mutation_decorator_1.Mutation)(),
24
+ __metadata("design:type", Function),
25
+ __metadata("design:paramtypes", []),
26
+ __metadata("design:returntype", void 0)
27
+ ], TestClass.prototype, "testMethod", null);
28
+ const metadata = Reflect.getMetadata(trpc_constants_1.PROCEDURE_TYPE_KEY, TestClass.prototype.testMethod);
29
+ expect(metadata).toBe(trpc_enum_1.ProcedureType.Mutation);
30
+ });
31
+ it('should set procedure metadata with input and output schemas', () => {
32
+ const inputSchema = zod_1.z.string();
33
+ const outputSchema = zod_1.z.number();
34
+ class TestClass {
35
+ testMethod() { }
36
+ }
37
+ __decorate([
38
+ (0, mutation_decorator_1.Mutation)({ input: inputSchema, output: outputSchema }),
39
+ __metadata("design:type", Function),
40
+ __metadata("design:paramtypes", []),
41
+ __metadata("design:returntype", void 0)
42
+ ], TestClass.prototype, "testMethod", null);
43
+ const metadata = Reflect.getMetadata(trpc_constants_1.PROCEDURE_METADATA_KEY, TestClass.prototype.testMethod);
44
+ expect(metadata).toEqual({ input: inputSchema, output: outputSchema });
45
+ });
46
+ it('should set procedure metadata without schemas', () => {
47
+ class TestClass {
48
+ testMethod() { }
49
+ }
50
+ __decorate([
51
+ (0, mutation_decorator_1.Mutation)(),
52
+ __metadata("design:type", Function),
53
+ __metadata("design:paramtypes", []),
54
+ __metadata("design:returntype", void 0)
55
+ ], TestClass.prototype, "testMethod", null);
56
+ const metadata = Reflect.getMetadata(trpc_constants_1.PROCEDURE_METADATA_KEY, TestClass.prototype.testMethod);
57
+ expect(metadata).toBeUndefined();
58
+ });
59
+ it('should set procedure metadata with only input schema', () => {
60
+ const inputSchema = zod_1.z.string();
61
+ class TestClass {
62
+ testMethod() { }
63
+ }
64
+ __decorate([
65
+ (0, mutation_decorator_1.Mutation)({ input: inputSchema }),
66
+ __metadata("design:type", Function),
67
+ __metadata("design:paramtypes", []),
68
+ __metadata("design:returntype", void 0)
69
+ ], TestClass.prototype, "testMethod", null);
70
+ const metadata = Reflect.getMetadata(trpc_constants_1.PROCEDURE_METADATA_KEY, TestClass.prototype.testMethod);
71
+ expect(metadata).toEqual({ input: inputSchema });
72
+ });
73
+ it('should set procedure metadata with only output schema', () => {
74
+ const outputSchema = zod_1.z.number();
75
+ class TestClass {
76
+ testMethod() { }
77
+ }
78
+ __decorate([
79
+ (0, mutation_decorator_1.Mutation)({ output: outputSchema }),
80
+ __metadata("design:type", Function),
81
+ __metadata("design:paramtypes", []),
82
+ __metadata("design:returntype", void 0)
83
+ ], TestClass.prototype, "testMethod", null);
84
+ const metadata = Reflect.getMetadata(trpc_constants_1.PROCEDURE_METADATA_KEY, TestClass.prototype.testMethod);
85
+ expect(metadata).toEqual({ output: outputSchema });
86
+ });
87
+ });
88
+ //# sourceMappingURL=mutation.decorator.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation.decorator.spec.js","sourceRoot":"","sources":["../../../src/decorators/__tests__/mutation.decorator.spec.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,4BAA0B;AAC1B,8DAAiD;AACjD,yDAAkF;AAClF,+CAAgD;AAChD,6BAAmC;AAEnC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,SAAS;YAEb,UAAU,KAAI,CAAC;SAChB;QADC;YADC,IAAA,6BAAQ,GAAE;;;;mDACI;QAGjB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,mCAAkB,EAAE,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACzF,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,yBAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,WAAW,GAAc,OAAC,CAAC,MAAM,EAAE,CAAC;QAC1C,MAAM,YAAY,GAAc,OAAC,CAAC,MAAM,EAAE,CAAC;QAE3C,MAAM,SAAS;YAEb,UAAU,KAAI,CAAC;SAChB;QADC;YADC,IAAA,6BAAQ,EAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;;;;mDACxC;QAGjB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,uCAAsB,EAAE,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7F,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,SAAS;YAEb,UAAU,KAAI,CAAC;SAChB;QADC;YADC,IAAA,6BAAQ,GAAE;;;;mDACI;QAGjB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,uCAAsB,EAAE,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7F,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,WAAW,GAAc,OAAC,CAAC,MAAM,EAAE,CAAC;QAE1C,MAAM,SAAS;YAEb,UAAU,KAAI,CAAC;SAChB;QADC;YADC,IAAA,6BAAQ,EAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;;;;mDAClB;QAGjB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,uCAAsB,EAAE,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7F,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,YAAY,GAAc,OAAC,CAAC,MAAM,EAAE,CAAC;QAE3C,MAAM,SAAS;YAEb,UAAU,KAAI,CAAC;SAChB;QADC;YADC,IAAA,6BAAQ,EAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;;;;mDACpB;QAGjB,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,uCAAsB,EAAE,SAAS,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7F,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ import 'reflect-metadata';
@@ -0,0 +1,68 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ require("reflect-metadata");
16
+ const options_decorator_1 = require("../options.decorator");
17
+ const trpc_constants_1 = require("../../trpc.constants");
18
+ const factory_interface_1 = require("../../interfaces/factory.interface");
19
+ describe('Options Decorator', () => {
20
+ class TestClass {
21
+ testMethod(param1, param2) { }
22
+ }
23
+ __decorate([
24
+ __param(0, (0, options_decorator_1.Options)()),
25
+ __param(1, (0, options_decorator_1.Options)()),
26
+ __metadata("design:type", Function),
27
+ __metadata("design:paramtypes", [Object, Object]),
28
+ __metadata("design:returntype", void 0)
29
+ ], TestClass.prototype, "testMethod", null);
30
+ it('should add metadata to the method', () => {
31
+ const metadata = Reflect.getMetadata(trpc_constants_1.PROCEDURE_PARAM_METADATA_KEY, TestClass.prototype, 'testMethod');
32
+ expect(metadata).toBeDefined();
33
+ expect(Array.isArray(metadata)).toBe(true);
34
+ });
35
+ it('should add correct metadata for each parameter', () => {
36
+ const metadata = Reflect.getMetadata(trpc_constants_1.PROCEDURE_PARAM_METADATA_KEY, TestClass.prototype, 'testMethod');
37
+ expect(metadata).toHaveLength(2);
38
+ expect(metadata[0]).toEqual({
39
+ type: factory_interface_1.ProcedureParamDecoratorType.Options,
40
+ index: 1,
41
+ });
42
+ expect(metadata[1]).toEqual({
43
+ type: factory_interface_1.ProcedureParamDecoratorType.Options,
44
+ index: 0,
45
+ });
46
+ });
47
+ it('should append to existing metadata', () => {
48
+ class TestClassWithExistingMetadata {
49
+ testMethod(param1) { }
50
+ }
51
+ __decorate([
52
+ __param(0, (0, options_decorator_1.Options)()),
53
+ __metadata("design:type", Function),
54
+ __metadata("design:paramtypes", [Object]),
55
+ __metadata("design:returntype", void 0)
56
+ ], TestClassWithExistingMetadata.prototype, "testMethod", null);
57
+ const existingMetadata = [{ type: 'SomeOtherDecorator', index: 0 }];
58
+ Reflect.defineMetadata(trpc_constants_1.PROCEDURE_PARAM_METADATA_KEY, existingMetadata, TestClassWithExistingMetadata.prototype, 'testMethod');
59
+ (0, options_decorator_1.Options)()(TestClassWithExistingMetadata.prototype, 'testMethod', 1);
60
+ const metadata = Reflect.getMetadata(trpc_constants_1.PROCEDURE_PARAM_METADATA_KEY, TestClassWithExistingMetadata.prototype, 'testMethod');
61
+ expect(metadata).toHaveLength(2);
62
+ expect(metadata[1]).toEqual({
63
+ type: factory_interface_1.ProcedureParamDecoratorType.Options,
64
+ index: 1,
65
+ });
66
+ });
67
+ });
68
+ //# sourceMappingURL=options.decorator.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.decorator.spec.js","sourceRoot":"","sources":["../../../src/decorators/__tests__/options.decorator.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4BAA0B;AAC1B,4DAA+C;AAC/C,yDAAoE;AACpE,0EAAiF;AAEjF,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,MAAM,SAAS;QACb,UAAU,CAAY,MAAW,EAAa,MAAW,IAAG,CAAC;KAC9D;IADC;QAAY,WAAA,IAAA,2BAAO,GAAE,CAAA;QAAe,WAAA,IAAA,2BAAO,GAAE,CAAA;;;;+CAAgB;IAG/D,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,6CAA4B,EAAE,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACtG,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,6CAA4B,EAAE,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACtG,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAEjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1B,IAAI,EAAE,+CAA2B,CAAC,OAAO;YACzC,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1B,IAAI,EAAE,+CAA2B,CAAC,OAAO;YACzC,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,6BAA6B;YACjC,UAAU,CAAY,MAAW,IAAG,CAAC;SACtC;QADC;YAAY,WAAA,IAAA,2BAAO,GAAE,CAAA;;;;uEAAgB;QAIvC,MAAM,gBAAgB,GAAG,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,cAAc,CAAC,6CAA4B,EAAE,gBAAgB,EAAE,6BAA6B,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAG9H,IAAA,2BAAO,GAAE,CAAC,6BAA6B,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;QAEpE,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,6CAA4B,EAAE,6BAA6B,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC1H,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1B,IAAI,EAAE,+CAA2B,CAAC,OAAO;YACzC,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ import 'reflect-metadata';
@@ -0,0 +1,68 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ require("reflect-metadata");
16
+ const path_decorator_1 = require("../path.decorator");
17
+ const trpc_constants_1 = require("../../trpc.constants");
18
+ const factory_interface_1 = require("../../interfaces/factory.interface");
19
+ describe('Path Decorator', () => {
20
+ class TestClass {
21
+ testMethod(param1, param2) { }
22
+ }
23
+ __decorate([
24
+ __param(0, (0, path_decorator_1.Path)()),
25
+ __param(1, (0, path_decorator_1.Path)()),
26
+ __metadata("design:type", Function),
27
+ __metadata("design:paramtypes", [String, String]),
28
+ __metadata("design:returntype", void 0)
29
+ ], TestClass.prototype, "testMethod", null);
30
+ it('should add metadata to the method', () => {
31
+ const metadata = Reflect.getMetadata(trpc_constants_1.PROCEDURE_PARAM_METADATA_KEY, TestClass.prototype, 'testMethod');
32
+ expect(metadata).toBeDefined();
33
+ expect(Array.isArray(metadata)).toBe(true);
34
+ });
35
+ it('should add correct metadata for each parameter', () => {
36
+ const metadata = Reflect.getMetadata(trpc_constants_1.PROCEDURE_PARAM_METADATA_KEY, TestClass.prototype, 'testMethod');
37
+ expect(metadata).toHaveLength(2);
38
+ expect(metadata[0]).toEqual({
39
+ type: factory_interface_1.ProcedureParamDecoratorType.Path,
40
+ index: 1,
41
+ });
42
+ expect(metadata[1]).toEqual({
43
+ type: factory_interface_1.ProcedureParamDecoratorType.Path,
44
+ index: 0,
45
+ });
46
+ });
47
+ it('should append to existing metadata', () => {
48
+ class TestClassWithExistingMetadata {
49
+ testMethod(param1) { }
50
+ }
51
+ __decorate([
52
+ __param(0, (0, path_decorator_1.Path)()),
53
+ __metadata("design:type", Function),
54
+ __metadata("design:paramtypes", [String]),
55
+ __metadata("design:returntype", void 0)
56
+ ], TestClassWithExistingMetadata.prototype, "testMethod", null);
57
+ const existingMetadata = [{ type: 'SomeOtherDecorator', index: 0 }];
58
+ Reflect.defineMetadata(trpc_constants_1.PROCEDURE_PARAM_METADATA_KEY, existingMetadata, TestClassWithExistingMetadata.prototype, 'testMethod');
59
+ (0, path_decorator_1.Path)()(TestClassWithExistingMetadata.prototype, 'testMethod', 1);
60
+ const metadata = Reflect.getMetadata(trpc_constants_1.PROCEDURE_PARAM_METADATA_KEY, TestClassWithExistingMetadata.prototype, 'testMethod');
61
+ expect(metadata).toHaveLength(2);
62
+ expect(metadata[1]).toEqual({
63
+ type: factory_interface_1.ProcedureParamDecoratorType.Path,
64
+ index: 1,
65
+ });
66
+ });
67
+ });
68
+ //# sourceMappingURL=path.decorator.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"path.decorator.spec.js","sourceRoot":"","sources":["../../../src/decorators/__tests__/path.decorator.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,4BAA0B;AAC1B,sDAAyC;AACzC,yDAAoE;AACpE,0EAAiF;AAEjF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,MAAM,SAAS;QACb,UAAU,CAAS,MAAc,EAAU,MAAc,IAAG,CAAC;KAC9D;IADC;QAAY,WAAA,IAAA,qBAAI,GAAE,CAAA;QAAkB,WAAA,IAAA,qBAAI,GAAE,CAAA;;;;+CAAmB;IAG/D,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,6CAA4B,EAAE,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACtG,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,6CAA4B,EAAE,SAAS,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACtG,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAEjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1B,IAAI,EAAE,+CAA2B,CAAC,IAAI;YACtC,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1B,IAAI,EAAE,+CAA2B,CAAC,IAAI;YACtC,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,6BAA6B;YACjC,UAAU,CAAS,MAAc,IAAG,CAAC;SACtC;QADC;YAAY,WAAA,IAAA,qBAAI,GAAE,CAAA;;;;uEAAmB;QAIvC,MAAM,gBAAgB,GAAG,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,cAAc,CAAC,6CAA4B,EAAE,gBAAgB,EAAE,6BAA6B,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAG9H,IAAA,qBAAI,GAAE,CAAC,6BAA6B,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;QAEjE,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,6CAA4B,EAAE,6BAA6B,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC1H,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1B,IAAI,EAAE,+CAA2B,CAAC,IAAI;YACtC,KAAK,EAAE,CAAC;SACT,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ import 'reflect-metadata';