@trpc/server 10.0.0-alpha.2 → 10.0.0-alpha.20

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 (224) hide show
  1. package/adapters/express/dist/trpc-server-adapters-express.cjs.dev.js +5 -4
  2. package/adapters/express/dist/trpc-server-adapters-express.cjs.prod.js +5 -4
  3. package/adapters/express/dist/trpc-server-adapters-express.esm.js +5 -4
  4. package/adapters/express/index.d.ts +1 -0
  5. package/adapters/express/index.js +1 -0
  6. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.d.ts +1 -0
  7. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.dev.js +109 -0
  8. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.js +7 -0
  9. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.prod.js +109 -0
  10. package/adapters/fastify/dist/trpc-server-adapters-fastify.esm.js +104 -0
  11. package/adapters/fastify/index.d.ts +1 -0
  12. package/adapters/fastify/index.js +1 -0
  13. package/adapters/next/dist/trpc-server-adapters-next.cjs.dev.js +2 -1
  14. package/adapters/next/dist/trpc-server-adapters-next.cjs.prod.js +2 -1
  15. package/adapters/next/dist/trpc-server-adapters-next.esm.js +2 -1
  16. package/adapters/next/index.d.ts +1 -0
  17. package/adapters/next/index.js +1 -0
  18. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.dev.js +2 -1
  19. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.prod.js +2 -1
  20. package/adapters/node-http/dist/trpc-server-adapters-node-http.esm.js +2 -1
  21. package/adapters/node-http/index.d.ts +1 -0
  22. package/adapters/node-http/index.js +1 -0
  23. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.dev.js +3 -2
  24. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.prod.js +3 -2
  25. package/adapters/standalone/dist/trpc-server-adapters-standalone.esm.js +3 -2
  26. package/adapters/standalone/index.d.ts +1 -0
  27. package/adapters/standalone/index.js +1 -0
  28. package/adapters/ws/dist/trpc-server-adapters-ws.cjs.dev.js +5 -4
  29. package/adapters/ws/dist/trpc-server-adapters-ws.cjs.prod.js +5 -4
  30. package/adapters/ws/dist/trpc-server-adapters-ws.esm.js +5 -4
  31. package/adapters/ws/index.d.ts +1 -0
  32. package/adapters/ws/index.js +1 -0
  33. package/dist/{declarations/src/TRPCError.d.ts → TRPCError.d.ts} +10 -18
  34. package/dist/TRPCError.d.ts.map +1 -0
  35. package/dist/{declarations/src/adapters → adapters}/express.d.ts +5 -5
  36. package/dist/adapters/express.d.ts.map +1 -0
  37. package/dist/adapters/express.js +23 -0
  38. package/dist/adapters/express.mjs +19 -0
  39. package/dist/adapters/express.ts.js +1 -0
  40. package/dist/adapters/fastify/fastifyRequestHandler.d.ts +13 -0
  41. package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -0
  42. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +12 -0
  43. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -0
  44. package/dist/adapters/fastify/index.d.ts +3 -0
  45. package/dist/adapters/fastify/index.d.ts.map +1 -0
  46. package/dist/adapters/fastify/index.js +109 -0
  47. package/dist/adapters/fastify/index.mjs +104 -0
  48. package/dist/adapters/fastify/index.ts.js +1 -0
  49. package/dist/{declarations/src/adapters → adapters}/next.d.ts +5 -5
  50. package/dist/adapters/next.d.ts.map +1 -0
  51. package/dist/adapters/next.js +56 -0
  52. package/dist/adapters/next.mjs +52 -0
  53. package/dist/adapters/next.ts.js +1 -0
  54. package/dist/{declarations/src/adapters → adapters}/node-http/index.d.ts +2 -2
  55. package/dist/adapters/node-http/index.d.ts.map +1 -0
  56. package/dist/adapters/node-http/index.js +13 -0
  57. package/dist/adapters/node-http/index.mjs +5 -0
  58. package/dist/adapters/node-http/index.ts.js +1 -0
  59. package/dist/{declarations/src/adapters → adapters}/node-http/internals/getPostBody.d.ts +12 -12
  60. package/dist/adapters/node-http/internals/getPostBody.d.ts.map +1 -0
  61. package/dist/{declarations/src/adapters → adapters}/node-http/nodeHTTPRequestHandler.d.ts +9 -9
  62. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -0
  63. package/dist/{declarations/src/adapters → adapters}/node-http/types.d.ts +32 -32
  64. package/dist/adapters/node-http/types.d.ts.map +1 -0
  65. package/dist/{declarations/src/adapters → adapters}/standalone.d.ts +13 -13
  66. package/dist/adapters/standalone.d.ts.map +1 -0
  67. package/dist/adapters/standalone.js +46 -0
  68. package/dist/adapters/standalone.mjs +36 -0
  69. package/dist/adapters/standalone.ts.js +1 -0
  70. package/dist/{declarations/src/adapters → adapters}/ws.d.ts +16 -16
  71. package/dist/adapters/ws.d.ts.map +1 -0
  72. package/dist/adapters/ws.js +347 -0
  73. package/dist/adapters/ws.mjs +343 -0
  74. package/dist/adapters/ws.ts.js +1 -0
  75. package/dist/{declarations/src/assertNotBrowser.d.ts → assertNotBrowser.d.ts} +1 -1
  76. package/dist/assertNotBrowser.d.ts.map +1 -0
  77. package/dist/{codes-fe07bf82.esm.js → codes-7a3d4f65.mjs} +0 -0
  78. package/dist/{codes-33cef953.cjs.dev.js → codes-7f46544e.js} +0 -0
  79. package/dist/{declarations/src/http → http}/ResponseMeta.d.ts +4 -4
  80. package/dist/http/ResponseMeta.d.ts.map +1 -0
  81. package/dist/{declarations/src/http → http}/index.d.ts +2 -2
  82. package/dist/http/index.d.ts.map +1 -0
  83. package/dist/{declarations/src/http → http}/internals/getHTTPStatusCode.d.ts +20 -20
  84. package/dist/http/internals/getHTTPStatusCode.d.ts.map +1 -0
  85. package/dist/{declarations/src/http → http}/internals/types.d.ts +39 -39
  86. package/dist/http/internals/types.d.ts.map +1 -0
  87. package/dist/{declarations/src/http → http}/resolveHTTPResponse.d.ts +12 -12
  88. package/dist/http/resolveHTTPResponse.d.ts.map +1 -0
  89. package/dist/{declarations/src/index.d.ts → index.d.ts} +7 -9
  90. package/dist/index.d.ts.map +1 -0
  91. package/dist/{trpc-server.cjs.dev.js → index.js} +45 -62
  92. package/dist/{trpc-server.esm.js → index.mjs} +41 -54
  93. package/dist/index.ts.js +1 -0
  94. package/dist/{declarations/src/internals → internals}/BaseHandlerOptions.d.ts +12 -12
  95. package/dist/internals/BaseHandlerOptions.d.ts.map +1 -0
  96. package/dist/{declarations/src/internals → internals}/OnErrorFunction.d.ts +10 -10
  97. package/dist/internals/OnErrorFunction.d.ts.map +1 -0
  98. package/dist/{declarations/src/internals → internals}/callProcedure.d.ts +9 -9
  99. package/dist/internals/callProcedure.d.ts.map +1 -0
  100. package/dist/{declarations/src/internals → internals}/errors.d.ts +3 -3
  101. package/dist/internals/errors.d.ts.map +1 -0
  102. package/dist/{declarations/src/internals → internals}/invert.d.ts +8 -8
  103. package/dist/internals/invert.d.ts.map +1 -0
  104. package/dist/{declarations/src/internals → internals}/middlewares.d.ts +33 -33
  105. package/dist/internals/middlewares.d.ts.map +1 -0
  106. package/dist/internals/procedure.d.ts +81 -0
  107. package/dist/internals/procedure.d.ts.map +1 -0
  108. package/dist/{declarations/src/internals → internals}/transformTRPCResponse.d.ts +6 -6
  109. package/dist/internals/transformTRPCResponse.d.ts.map +1 -0
  110. package/dist/{declarations/src/internals → internals}/wrapCallSafe.d.ts +15 -15
  111. package/dist/internals/wrapCallSafe.d.ts.map +1 -0
  112. package/dist/nodeHTTPRequestHandler-5fccb3bb.mjs +106 -0
  113. package/dist/nodeHTTPRequestHandler-7d71ac09.js +108 -0
  114. package/dist/{nodeHTTPRequestHandler-2e6cc2d7.esm.js → resolveHTTPResponse-3292a84a.mjs} +3 -105
  115. package/dist/{nodeHTTPRequestHandler-b7ff366e.cjs.dev.js → resolveHTTPResponse-c3777a47.js} +2 -105
  116. package/dist/{declarations/src/router.d.ts → router.d.ts} +168 -175
  117. package/dist/router.d.ts.map +1 -0
  118. package/dist/{declarations/src/rpc → rpc}/codes.d.ts +46 -46
  119. package/dist/rpc/codes.d.ts.map +1 -0
  120. package/dist/{declarations/src/rpc → rpc}/envelopes.d.ts +71 -71
  121. package/dist/rpc/envelopes.d.ts.map +1 -0
  122. package/dist/{declarations/src/rpc → rpc}/index.d.ts +2 -2
  123. package/dist/rpc/index.d.ts.map +1 -0
  124. package/dist/rpc/index.js +10 -0
  125. package/dist/rpc/index.mjs +1 -0
  126. package/dist/rpc/index.ts.js +1 -0
  127. package/dist/{subscription-fbda2888.esm.js → subscription-0d8a48ec.mjs} +2 -2
  128. package/dist/{subscription-c2e0bfbc.cjs.prod.js → subscription-41611bc2.js} +2 -2
  129. package/dist/{declarations/src/subscription.d.ts → subscription.d.ts} +57 -57
  130. package/dist/subscription.d.ts.map +1 -0
  131. package/dist/{transformTRPCResponse-8248515e.cjs.dev.js → transformTRPCResponse-43a869de.js} +41 -45
  132. package/dist/{transformTRPCResponse-f73dc4a2.esm.js → transformTRPCResponse-ff424ff4.mjs} +41 -45
  133. package/dist/{declarations/src/transformer.d.ts → transformer.d.ts} +29 -29
  134. package/dist/transformer.d.ts.map +1 -0
  135. package/dist/{declarations/src/types.d.ts → types.d.ts} +32 -40
  136. package/dist/types.d.ts.map +1 -0
  137. package/package.json +55 -20
  138. package/rpc/index.d.ts +1 -0
  139. package/rpc/index.js +1 -0
  140. package/src/TRPCError.ts +3 -11
  141. package/src/adapters/express.ts +3 -3
  142. package/src/adapters/fastify/fastifyRequestHandler.ts +78 -0
  143. package/src/adapters/fastify/fastifyTRPCPlugin.ts +56 -0
  144. package/src/adapters/fastify/index.ts +2 -0
  145. package/src/adapters/next.ts +6 -2
  146. package/src/adapters/node-http/internals/getPostBody.test.ts +2 -1
  147. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +5 -5
  148. package/src/adapters/standalone.ts +2 -1
  149. package/src/adapters/ws.ts +8 -5
  150. package/src/http/internals/getHTTPStatusCode.ts +1 -1
  151. package/src/http/internals/types.ts +2 -2
  152. package/src/http/resolveHTTPResponse.ts +3 -3
  153. package/src/index.ts +1 -5
  154. package/src/internals/BaseHandlerOptions.ts +1 -1
  155. package/src/internals/OnErrorFunction.ts +1 -1
  156. package/src/internals/middlewares.ts +1 -1
  157. package/src/internals/procedure.ts +123 -63
  158. package/src/router.ts +93 -63
  159. package/src/subscription.ts +1 -1
  160. package/src/types.ts +0 -9
  161. package/ws/dist/trpc-server-ws.cjs.dev.js +1 -1
  162. package/ws/dist/trpc-server-ws.cjs.prod.js +1 -1
  163. package/ws/dist/trpc-server-ws.esm.js +1 -1
  164. package/ws/index.d.ts +1 -0
  165. package/ws/index.js +1 -0
  166. package/adapters/express/package.json +0 -4
  167. package/adapters/next/package.json +0 -4
  168. package/adapters/node-http/package.json +0 -4
  169. package/adapters/standalone/package.json +0 -4
  170. package/adapters/ws/package.json +0 -4
  171. package/dist/codes-e0df67c4.cjs.prod.js +0 -60
  172. package/dist/declarations/src/TRPCError.d.ts.map +0 -1
  173. package/dist/declarations/src/adapters/express.d.ts.map +0 -1
  174. package/dist/declarations/src/adapters/next.d.ts.map +0 -1
  175. package/dist/declarations/src/adapters/node-http/index.d.ts.map +0 -1
  176. package/dist/declarations/src/adapters/node-http/internals/getPostBody.d.ts.map +0 -1
  177. package/dist/declarations/src/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +0 -1
  178. package/dist/declarations/src/adapters/node-http/types.d.ts.map +0 -1
  179. package/dist/declarations/src/adapters/standalone.d.ts.map +0 -1
  180. package/dist/declarations/src/adapters/ws.d.ts.map +0 -1
  181. package/dist/declarations/src/assertNotBrowser.d.ts.map +0 -1
  182. package/dist/declarations/src/deprecated/LegacyRouter.d.ts +0 -3
  183. package/dist/declarations/src/deprecated/LegacyRouter.d.ts.map +0 -1
  184. package/dist/declarations/src/deprecated/createHttpServer.d.ts +0 -19
  185. package/dist/declarations/src/deprecated/createHttpServer.d.ts.map +0 -1
  186. package/dist/declarations/src/deprecated/requestHandler.d.ts +0 -15
  187. package/dist/declarations/src/deprecated/requestHandler.d.ts.map +0 -1
  188. package/dist/declarations/src/http/ResponseMeta.d.ts.map +0 -1
  189. package/dist/declarations/src/http/index.d.ts.map +0 -1
  190. package/dist/declarations/src/http/internals/getHTTPStatusCode.d.ts.map +0 -1
  191. package/dist/declarations/src/http/internals/types.d.ts.map +0 -1
  192. package/dist/declarations/src/http/resolveHTTPResponse.d.ts.map +0 -1
  193. package/dist/declarations/src/index.d.ts.map +0 -1
  194. package/dist/declarations/src/internals/BaseHandlerOptions.d.ts.map +0 -1
  195. package/dist/declarations/src/internals/OnErrorFunction.d.ts.map +0 -1
  196. package/dist/declarations/src/internals/callProcedure.d.ts.map +0 -1
  197. package/dist/declarations/src/internals/errors.d.ts.map +0 -1
  198. package/dist/declarations/src/internals/invert.d.ts.map +0 -1
  199. package/dist/declarations/src/internals/middlewares.d.ts.map +0 -1
  200. package/dist/declarations/src/internals/procedure.d.ts +0 -74
  201. package/dist/declarations/src/internals/procedure.d.ts.map +0 -1
  202. package/dist/declarations/src/internals/transformTRPCResponse.d.ts.map +0 -1
  203. package/dist/declarations/src/internals/wrapCallSafe.d.ts.map +0 -1
  204. package/dist/declarations/src/router.d.ts.map +0 -1
  205. package/dist/declarations/src/rpc/codes.d.ts.map +0 -1
  206. package/dist/declarations/src/rpc/envelopes.d.ts.map +0 -1
  207. package/dist/declarations/src/rpc/index.d.ts.map +0 -1
  208. package/dist/declarations/src/subscription.d.ts.map +0 -1
  209. package/dist/declarations/src/transformer.d.ts.map +0 -1
  210. package/dist/declarations/src/types.d.ts.map +0 -1
  211. package/dist/declarations/src/ws/index.d.ts +0 -7
  212. package/dist/declarations/src/ws/index.d.ts.map +0 -1
  213. package/dist/nodeHTTPRequestHandler-7325b53f.cjs.prod.js +0 -399
  214. package/dist/subscription-b8831081.cjs.dev.js +0 -136
  215. package/dist/transformTRPCResponse-dcbf66c5.cjs.prod.js +0 -114
  216. package/dist/trpc-server.cjs.d.ts +0 -1
  217. package/dist/trpc-server.cjs.js +0 -7
  218. package/dist/trpc-server.cjs.prod.js +0 -528
  219. package/rpc/package.json +0 -4
  220. package/src/deprecated/LegacyRouter.ts +0 -3
  221. package/src/deprecated/createHttpServer.ts +0 -29
  222. package/src/deprecated/requestHandler.ts +0 -26
  223. package/src/ws/index.ts +0 -8
  224. package/ws/package.json +0 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trpc/server",
3
- "version": "10.0.0-alpha.2",
3
+ "version": "10.0.0-alpha.20",
4
4
  "description": "tRPC Server",
5
5
  "author": "KATT",
6
6
  "license": "MIT",
@@ -15,24 +15,55 @@
15
15
  "explicit-module-boundary-types": "off"
16
16
  }
17
17
  },
18
- "preconstruct": {
19
- "entrypoints": [
20
- "index.ts",
21
- "adapters/express.ts",
22
- "adapters/next.ts",
23
- "adapters/node-http/index.ts",
24
- "adapters/standalone.ts",
25
- "adapters/ws.ts",
26
- "ws/index.ts",
27
- "rpc/index.ts"
28
- ]
29
- },
30
18
  "scripts": {
31
- "test": "jest"
19
+ "test": "jest",
20
+ "build": "rollup -c"
21
+ },
22
+ "main": "dist/index.js",
23
+ "module": "dist/index.mjs",
24
+ "typings": "dist/index.d.ts",
25
+ "exports": {
26
+ ".": {
27
+ "import": "./dist/index.mjs",
28
+ "require": "./dist/index.js",
29
+ "default": "./dist/index.js"
30
+ },
31
+ "./adapters/express": {
32
+ "import": "./dist/adapters/express.mjs",
33
+ "require": "./dist/adapters/express.js",
34
+ "default": "./dist/adapters/express.js"
35
+ },
36
+ "./adapters/next": {
37
+ "import": "./dist/adapters/next.mjs",
38
+ "require": "./dist/adapters/next.js",
39
+ "default": "./dist/adapters/next.js"
40
+ },
41
+ "./adapters/node-http": {
42
+ "import": "./dist/adapters/node-http/index.mjs",
43
+ "require": "./dist/adapters/node-http/index.js",
44
+ "default": "./dist/adapters/node-http/index.js"
45
+ },
46
+ "./adapters/standalone": {
47
+ "import": "./dist/adapters/standalone.mjs",
48
+ "require": "./dist/adapters/standalone.js",
49
+ "default": "./dist/adapters/standalone.js"
50
+ },
51
+ "./adapters/fastify": {
52
+ "import": "./dist/adapters/fastify/index.mjs",
53
+ "require": "./dist/adapters/fastify/index.js",
54
+ "default": "./dist/adapters/fastify/index.js"
55
+ },
56
+ "./adapters/ws": {
57
+ "import": "./dist/adapters/ws.mjs",
58
+ "require": "./dist/adapters/ws.js",
59
+ "default": "./dist/adapters/ws.js"
60
+ },
61
+ "./rpc": {
62
+ "import": "./dist/rpc/index.mjs",
63
+ "require": "./dist/rpc/index.js",
64
+ "default": "./dist/rpc/index.js"
65
+ }
32
66
  },
33
- "main": "dist/trpc-server.cjs.js",
34
- "module": "dist/trpc-server.esm.js",
35
- "typings": "dist/trpc-server.cjs.d.ts",
36
67
  "files": [
37
68
  "README.md",
38
69
  "dist",
@@ -51,22 +82,26 @@
51
82
  "@types/express": "^4.17.12",
52
83
  "@types/hash-sum": "^1.0.0",
53
84
  "@types/ws": "^8.2.0",
85
+ "abort-controller": "^3.0.0",
54
86
  "devalue": "^2.0.1",
55
87
  "express": "^4.17.1",
56
- "fastify": "^3.17.0",
88
+ "fastify": "^3.27.1",
89
+ "fastify-plugin": "^3.0.1",
90
+ "fastify-websocket": "^4.0.0",
57
91
  "hash-sum": "^2.0.0",
58
92
  "jest": "^27.1.0",
59
93
  "konn": "^0.7.0",
60
94
  "myzod": "^1.3.1",
61
95
  "next": "^12.0.1",
96
+ "node-fetch": "^2.6.1",
62
97
  "superstruct": "^0.15.2",
63
98
  "typescript": "4.4.4",
64
99
  "ws": "^8.0.0",
65
100
  "yup": "^0.32.8",
66
101
  "zod": "^3.0.0"
67
102
  },
68
- "gitHead": "4d72f1922cfb8a74e2bb03a29b39903418312728",
69
103
  "dependencies": {
70
104
  "tslib": "^2.1.0"
71
- }
105
+ },
106
+ "gitHead": "b1d41d19a79b71045bf92dd6a5b8370a9f4f017c"
72
107
  }
package/rpc/index.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from '../dist/rpc';
package/rpc/index.js ADDED
@@ -0,0 +1 @@
1
+ module.exports = require('../dist/rpc/index');
package/src/TRPCError.ts CHANGED
@@ -1,24 +1,16 @@
1
- import { TRPC_ERROR_CODE_KEY } from './rpc/codes';
2
1
  import { getMessageFromUnkownError } from './internals/errors';
2
+ import { TRPC_ERROR_CODE_KEY } from './rpc/codes';
3
3
 
4
4
  export class TRPCError extends Error {
5
- /**
6
- * @deprecated use `cause`
7
- */
8
- public readonly originalError?: unknown;
9
5
  public readonly cause?: unknown;
10
6
  public readonly code;
11
7
 
12
8
  constructor(opts: {
13
9
  message?: string;
14
10
  code: TRPC_ERROR_CODE_KEY;
15
- /**
16
- * @deprecated use `cause`
17
- */
18
- originalError?: unknown;
19
11
  cause?: unknown;
20
12
  }) {
21
- const cause = opts.cause ?? opts.originalError;
13
+ const cause = opts.cause;
22
14
  const code = opts.code;
23
15
  const message = opts.message ?? getMessageFromUnkownError(cause, code);
24
16
 
@@ -27,7 +19,7 @@ export class TRPCError extends Error {
27
19
  super(message, { cause });
28
20
 
29
21
  this.code = code;
30
- this.cause = this.originalError = cause;
22
+ this.cause = cause;
31
23
  this.name = 'TRPCError';
32
24
 
33
25
  Object.setPrototypeOf(this, new.target.prototype);
@@ -15,10 +15,10 @@ export type CreateExpressContextOptions = NodeHTTPCreateContextFnOptions<
15
15
  export function createExpressMiddleware<TRouter extends AnyRouter>(
16
16
  opts: NodeHTTPHandlerOptions<TRouter, express.Request, express.Response>,
17
17
  ): express.Handler {
18
- return (req, res) => {
19
- const endpoint = req.path.substr(1);
18
+ return async (req, res) => {
19
+ const endpoint = req.path.slice(1);
20
20
 
21
- nodeHTTPRequestHandler({
21
+ await nodeHTTPRequestHandler({
22
22
  ...opts,
23
23
  req,
24
24
  res,
@@ -0,0 +1,78 @@
1
+ import { FastifyReply, FastifyRequest } from 'fastify';
2
+ import { URLSearchParams } from 'url';
3
+ import { assertNotBrowser } from '../../assertNotBrowser';
4
+ import {
5
+ HTTPBaseHandlerOptions,
6
+ HTTPRequest,
7
+ } from '../../http/internals/types';
8
+ import { resolveHTTPResponse } from '../../http/resolveHTTPResponse';
9
+ import { AnyRouter, inferRouterContext } from '../../router';
10
+ import { NodeHTTPCreateContextOption } from '../node-http';
11
+
12
+ assertNotBrowser();
13
+
14
+ export type FastifyHandlerOptions<
15
+ TRouter extends AnyRouter,
16
+ TRequest extends FastifyRequest,
17
+ TResponse extends FastifyReply,
18
+ > = HTTPBaseHandlerOptions<TRouter, TRequest> &
19
+ NodeHTTPCreateContextOption<TRouter, TRequest, TResponse>;
20
+
21
+ type FastifyRequestHandlerOptions<
22
+ TRouter extends AnyRouter,
23
+ TRequest extends FastifyRequest,
24
+ TResponse extends FastifyReply,
25
+ > = {
26
+ req: TRequest;
27
+ res: TResponse;
28
+ path: string;
29
+ } & FastifyHandlerOptions<TRouter, TRequest, TResponse>;
30
+
31
+ export async function fastifyRequestHandler<
32
+ TRouter extends AnyRouter,
33
+ TRequest extends FastifyRequest,
34
+ TResponse extends FastifyReply,
35
+ >(opts: FastifyRequestHandlerOptions<TRouter, TRequest, TResponse>) {
36
+ const createContext = async function _createContext(): Promise<
37
+ inferRouterContext<TRouter>
38
+ > {
39
+ return opts.createContext?.(opts);
40
+ };
41
+
42
+ const query = opts.req.query
43
+ ? new URLSearchParams(opts.req.query as any)
44
+ : new URLSearchParams(opts.req.url.split('?')[1]);
45
+
46
+ const req: HTTPRequest = {
47
+ query,
48
+ method: opts.req.method,
49
+ headers: opts.req.headers,
50
+ body: opts.req.body ?? 'null',
51
+ };
52
+
53
+ const result = await resolveHTTPResponse({
54
+ req,
55
+ createContext,
56
+ path: opts.path,
57
+ router: opts.router,
58
+ batching: opts.batching,
59
+ responseMeta: opts.responseMeta,
60
+ onError(o) {
61
+ opts?.onError?.({ ...o, req: opts.req });
62
+ },
63
+ });
64
+
65
+ const { res } = opts;
66
+
67
+ if ('status' in result && (!res.statusCode || res.statusCode === 200)) {
68
+ res.statusCode = result.status;
69
+ }
70
+ for (const [key, value] of Object.entries(result.headers ?? {})) {
71
+ if (typeof value === 'undefined') {
72
+ continue;
73
+ }
74
+
75
+ void res.header(key, value);
76
+ }
77
+ await res.send(result.body);
78
+ }
@@ -0,0 +1,56 @@
1
+ /// <reference types="fastify-websocket" />
2
+ import { FastifyInstance, FastifyReply, FastifyRequest } from 'fastify';
3
+ import { FastifyHandlerOptions } from '.';
4
+ import { AnyRouter } from '../..';
5
+ import { NodeHTTPCreateContextFnOptions } from '../node-http';
6
+ import { WSSHandlerOptions, applyWSSHandler } from '../ws';
7
+ import { fastifyRequestHandler } from './fastifyRequestHandler';
8
+
9
+ export interface FastifyTRPCPluginOptions<TRouter extends AnyRouter> {
10
+ prefix?: string;
11
+ useWSS?: boolean;
12
+ trpcOptions: FastifyHandlerOptions<TRouter, FastifyRequest, FastifyReply>;
13
+ }
14
+
15
+ export type CreateFastifyContextOptions = NodeHTTPCreateContextFnOptions<
16
+ FastifyRequest,
17
+ FastifyReply
18
+ >;
19
+
20
+ export function fastifyTRPCPlugin<TRouter extends AnyRouter>(
21
+ fastify: FastifyInstance,
22
+ opts: FastifyTRPCPluginOptions<TRouter>,
23
+ done: (err?: Error) => void,
24
+ ) {
25
+ fastify.addContentTypeParser(
26
+ 'application/json',
27
+ { parseAs: 'string' },
28
+ function (_, body, _done) {
29
+ _done(null, body);
30
+ },
31
+ );
32
+
33
+ let prefix = opts.prefix ?? '';
34
+
35
+ // https://github.com/fastify/fastify-plugin/blob/fe079bef6557a83794bf437e14b9b9edb8a74104/plugin.js#L11
36
+ // @ts-expect-error property 'default' does not exists on type ...
37
+ if (typeof fastifyTRPCPlugin.default !== 'function') {
38
+ prefix = ''; // handled by fastify internally
39
+ }
40
+
41
+ fastify.all(`${prefix}/:path`, async (req, res) => {
42
+ const path = (req.params as any).path;
43
+ await fastifyRequestHandler({ ...opts.trpcOptions, req, res, path });
44
+ });
45
+
46
+ if (opts.useWSS) {
47
+ applyWSSHandler<TRouter>({
48
+ ...(opts.trpcOptions as WSSHandlerOptions<TRouter>),
49
+ wss: fastify.websocketServer,
50
+ });
51
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
52
+ fastify.get(prefix ?? '/', { websocket: true }, () => {});
53
+ }
54
+
55
+ done();
56
+ }
@@ -0,0 +1,2 @@
1
+ export * from './fastifyRequestHandler';
2
+ export * from './fastifyTRPCPlugin';
@@ -1,9 +1,13 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
3
- import type { NextApiHandler, NextApiRequest, NextApiResponse } from 'next';
3
+ import type {
4
+ NextApiHandler,
5
+ NextApiRequest,
6
+ NextApiResponse,
7
+ } from 'next/types';
8
+ import { TRPCError } from '../TRPCError';
4
9
  import { AnyRouter } from '../router';
5
10
  import { TRPCErrorResponse } from '../rpc';
6
- import { TRPCError } from '../TRPCError';
7
11
  import { nodeHTTPRequestHandler } from './node-http';
8
12
  import {
9
13
  NodeHTTPCreateContextFnOptions,
@@ -1,5 +1,6 @@
1
- import { getPostBody } from './getPostBody';
2
1
  import { EventEmitter } from 'events';
2
+ import { getPostBody } from './getPostBody';
3
+
3
4
  test('has body', async () => {
4
5
  const body = {};
5
6
  const resolvedBody = await getPostBody({ req: { body } } as any);
@@ -1,15 +1,15 @@
1
1
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
2
2
  import { URLSearchParams } from 'url';
3
3
  import { assertNotBrowser } from '../../assertNotBrowser';
4
+ import { HTTPRequest } from '../../http/internals/types';
5
+ import { resolveHTTPResponse } from '../../http/resolveHTTPResponse';
6
+ import { AnyRouter, inferRouterContext } from '../../router';
7
+ import { getPostBody } from './internals/getPostBody';
4
8
  import {
9
+ NodeHTTPHandlerOptions,
5
10
  NodeHTTPRequest,
6
11
  NodeHTTPResponse,
7
- NodeHTTPHandlerOptions,
8
12
  } from './types';
9
- import { AnyRouter, inferRouterContext } from '../../router';
10
- import { getPostBody } from './internals/getPostBody';
11
- import { HTTPRequest } from '../../http/internals/types';
12
- import { resolveHTTPResponse } from '../../http/resolveHTTPResponse';
13
13
 
14
14
  assertNotBrowser();
15
15
 
@@ -1,4 +1,5 @@
1
1
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
2
+
2
3
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
4
  import http from 'http';
4
5
  import url from 'url';
@@ -21,7 +22,7 @@ export function createHTTPHandler<TRouter extends AnyRouter>(
21
22
  opts: CreateHTTPHandlerOptions<TRouter>,
22
23
  ) {
23
24
  return async (req: http.IncomingMessage, res: http.ServerResponse) => {
24
- const endpoint = url.parse(req.url!).pathname!.substr(1);
25
+ const endpoint = url.parse(req.url!).pathname!.slice(1);
25
26
  await nodeHTTPRequestHandler({
26
27
  ...opts,
27
28
  req,
@@ -1,10 +1,11 @@
1
1
  import http from 'http';
2
2
  import ws from 'ws';
3
+ import { TRPCError } from '../TRPCError';
3
4
  import { BaseHandlerOptions } from '../internals/BaseHandlerOptions';
4
5
  import { callProcedure } from '../internals/callProcedure';
5
6
  import { getErrorFromUnknown } from '../internals/errors';
6
7
  import { transformTRPCResponse } from '../internals/transformTRPCResponse';
7
- import { AnyRouter, inferRouterContext, ProcedureType } from '../router';
8
+ import { AnyRouter, ProcedureType, inferRouterContext } from '../router';
8
9
  import {
9
10
  TRPCErrorResponse,
10
11
  TRPCReconnectNotification,
@@ -13,7 +14,6 @@ import {
13
14
  } from '../rpc';
14
15
  import { Subscription } from '../subscription';
15
16
  import { CombinedDataTransformer } from '../transformer';
16
- import { TRPCError } from '../TRPCError';
17
17
  import { NodeHTTPCreateContextOption } from './node-http';
18
18
 
19
19
  /* istanbul ignore next */
@@ -96,7 +96,7 @@ export function applyWSSHandler<TRouter extends AnyRouter>(
96
96
  const { wss, createContext, router } = opts;
97
97
 
98
98
  const { transformer } = router._def;
99
- wss.on('connection', (client, req) => {
99
+ wss.on('connection', async (client, req) => {
100
100
  const clientSubscriptions = new Map<
101
101
  number | string,
102
102
  Subscription<TRouter>
@@ -225,7 +225,10 @@ export function applyWSSHandler<TRouter extends AnyRouter>(
225
225
  try {
226
226
  const msgJSON: unknown = JSON.parse(message.toString());
227
227
  const msgs: unknown[] = Array.isArray(msgJSON) ? msgJSON : [msgJSON];
228
- msgs.map((raw) => parseMessage(raw, transformer)).map(handleRequest);
228
+ const promises = msgs
229
+ .map((raw) => parseMessage(raw, transformer))
230
+ .map(handleRequest);
231
+ await Promise.all(promises);
229
232
  } catch (cause) {
230
233
  const error = new TRPCError({
231
234
  code: 'PARSE_ERROR',
@@ -282,7 +285,7 @@ export function applyWSSHandler<TRouter extends AnyRouter>(
282
285
  });
283
286
  }
284
287
  }
285
- createContextAsync();
288
+ await createContextAsync();
286
289
  });
287
290
 
288
291
  return {
@@ -1,6 +1,6 @@
1
- import { TRPCResponse, TRPC_ERROR_CODES_BY_KEY } from '../../rpc';
2
1
  import { TRPCError } from '../../TRPCError';
3
2
  import { invert } from '../../internals/invert';
3
+ import { TRPCResponse, TRPC_ERROR_CODES_BY_KEY } from '../../rpc';
4
4
 
5
5
  export const TRPC_ERROR_CODES_BY_NUMBER = invert(TRPC_ERROR_CODES_BY_KEY);
6
6
  type ValueOf<T> = T[keyof T];
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  AnyRouter,
3
3
  Dict,
4
- inferRouterContext,
5
- inferRouterError,
6
4
  ProcedureType,
7
5
  ResponseMeta,
8
6
  TRPCError,
7
+ inferRouterContext,
8
+ inferRouterError,
9
9
  } from '@trpc/server';
10
10
  import { URLSearchParams } from 'url';
11
11
  import { BaseHandlerOptions } from '../../internals/BaseHandlerOptions';
@@ -1,22 +1,22 @@
1
1
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
2
2
  import { Maybe } from '@trpc/server';
3
+ import { TRPCError } from '../TRPCError';
3
4
  import { callProcedure } from '../internals/callProcedure';
4
5
  import { getErrorFromUnknown } from '../internals/errors';
5
6
  import { transformTRPCResponse } from '../internals/transformTRPCResponse';
6
7
  import {
7
8
  AnyRouter,
9
+ ProcedureType,
8
10
  inferRouterContext,
9
11
  inferRouterError,
10
- ProcedureType,
11
12
  } from '../router';
12
13
  import { TRPCErrorResponse, TRPCResponse, TRPCResultResponse } from '../rpc';
13
- import { TRPCError } from '../TRPCError';
14
14
  import { getHTTPStatusCode } from './internals/getHTTPStatusCode';
15
15
  import {
16
+ HTTPBaseHandlerOptions,
16
17
  HTTPHeaders,
17
18
  HTTPRequest,
18
19
  HTTPResponse,
19
- HTTPBaseHandlerOptions,
20
20
  } from './internals/types';
21
21
 
22
22
  const HTTP_METHOD_PROCEDURE_TYPE_MAP: Record<
package/src/index.ts CHANGED
@@ -4,8 +4,4 @@ export * from './subscription';
4
4
  export * from './transformer';
5
5
  export * from './TRPCError';
6
6
  export * from './types';
7
-
8
- // deprecated
9
- export * from './deprecated/createHttpServer';
10
- export * from './deprecated/requestHandler';
11
- export * from './deprecated/LegacyRouter';
7
+ export * from './router';
@@ -1,5 +1,5 @@
1
- import { OnErrorFunction } from './OnErrorFunction';
2
1
  import { AnyRouter } from '../router';
2
+ import { OnErrorFunction } from './OnErrorFunction';
3
3
 
4
4
  /**
5
5
  * Base interface for any response handler
@@ -1,5 +1,5 @@
1
- import { AnyRouter, inferRouterContext, ProcedureType } from '../router';
2
1
  import { TRPCError } from '../TRPCError';
2
+ import { AnyRouter, ProcedureType, inferRouterContext } from '../router';
3
3
 
4
4
  export type OnErrorFunction<TRouter extends AnyRouter, TRequest> = (opts: {
5
5
  error: TRPCError;
@@ -1,5 +1,5 @@
1
- import { ProcedureType } from '../router';
2
1
  import { TRPCError } from '../TRPCError';
2
+ import { ProcedureType } from '../router';
3
3
 
4
4
  export const middlewareMarker = Symbol('middlewareMarker');
5
5
  interface MiddlewareResultBase<TContext> {