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

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 (301) hide show
  1. package/adapters/express/dist/trpc-server-adapters-express.cjs.dev.js +7 -6
  2. package/adapters/express/dist/trpc-server-adapters-express.cjs.prod.js +7 -6
  3. package/adapters/express/dist/trpc-server-adapters-express.esm.js +7 -6
  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/fetch/index.d.ts +1 -0
  14. package/adapters/fetch/index.js +1 -0
  15. package/adapters/next/dist/trpc-server-adapters-next.cjs.dev.js +4 -3
  16. package/adapters/next/dist/trpc-server-adapters-next.cjs.prod.js +4 -3
  17. package/adapters/next/dist/trpc-server-adapters-next.esm.js +4 -3
  18. package/adapters/next/index.d.ts +1 -0
  19. package/adapters/next/index.js +1 -0
  20. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.dev.js +4 -3
  21. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.prod.js +4 -3
  22. package/adapters/node-http/dist/trpc-server-adapters-node-http.esm.js +4 -3
  23. package/adapters/node-http/index.d.ts +1 -0
  24. package/adapters/node-http/index.js +1 -0
  25. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.dev.js +5 -4
  26. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.prod.js +5 -4
  27. package/adapters/standalone/dist/trpc-server-adapters-standalone.esm.js +5 -4
  28. package/adapters/standalone/index.d.ts +1 -0
  29. package/adapters/standalone/index.js +1 -0
  30. package/adapters/ws/dist/trpc-server-adapters-ws.cjs.dev.js +6 -5
  31. package/adapters/ws/dist/trpc-server-adapters-ws.cjs.prod.js +6 -5
  32. package/adapters/ws/dist/trpc-server-adapters-ws.esm.js +6 -5
  33. package/adapters/ws/index.d.ts +1 -0
  34. package/adapters/ws/index.js +1 -0
  35. package/dist/TRPCError-7971540a.mjs +65 -0
  36. package/dist/TRPCError-ddec3395.js +69 -0
  37. package/dist/TRPCError.d.ts +11 -0
  38. package/dist/TRPCError.d.ts.map +1 -0
  39. package/dist/{declarations/src/adapters → adapters}/express.d.ts +5 -5
  40. package/dist/adapters/express.d.ts.map +1 -0
  41. package/dist/adapters/express.js +23 -0
  42. package/dist/adapters/express.mjs +19 -0
  43. package/dist/adapters/express.ts.js +1 -0
  44. package/dist/adapters/fastify/fastifyRequestHandler.d.ts +13 -0
  45. package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -0
  46. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +12 -0
  47. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -0
  48. package/dist/adapters/fastify/index.d.ts +3 -0
  49. package/dist/adapters/fastify/index.d.ts.map +1 -0
  50. package/dist/adapters/fastify/index.js +108 -0
  51. package/dist/adapters/fastify/index.mjs +103 -0
  52. package/dist/adapters/fastify/index.ts.js +1 -0
  53. package/dist/adapters/fetch/fetchRequestHandler.d.ts +8 -0
  54. package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -0
  55. package/dist/adapters/fetch/index.d.ts +3 -0
  56. package/dist/adapters/fetch/index.d.ts.map +1 -0
  57. package/dist/adapters/fetch/index.js +69 -0
  58. package/dist/adapters/fetch/index.mjs +65 -0
  59. package/dist/adapters/fetch/index.ts.js +1 -0
  60. package/dist/adapters/fetch/types.d.ts +21 -0
  61. package/dist/adapters/fetch/types.d.ts.map +1 -0
  62. package/dist/{declarations/src/adapters → adapters}/next.d.ts +5 -5
  63. package/dist/adapters/next.d.ts.map +1 -0
  64. package/dist/adapters/next.js +55 -0
  65. package/dist/adapters/next.mjs +51 -0
  66. package/dist/adapters/next.ts.js +1 -0
  67. package/dist/{declarations/src/adapters → adapters}/node-http/index.d.ts +2 -2
  68. package/dist/adapters/node-http/index.d.ts.map +1 -0
  69. package/dist/adapters/node-http/index.js +13 -0
  70. package/dist/adapters/node-http/index.mjs +5 -0
  71. package/dist/adapters/node-http/index.ts.js +1 -0
  72. package/dist/{declarations/src/adapters → adapters}/node-http/internals/getPostBody.d.ts +12 -12
  73. package/dist/adapters/node-http/internals/getPostBody.d.ts.map +1 -0
  74. package/dist/{declarations/src/adapters → adapters}/node-http/nodeHTTPRequestHandler.d.ts +9 -9
  75. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -0
  76. package/dist/{declarations/src/adapters → adapters}/node-http/types.d.ts +31 -32
  77. package/dist/adapters/node-http/types.d.ts.map +1 -0
  78. package/dist/{declarations/src/adapters → adapters}/standalone.d.ts +13 -13
  79. package/dist/adapters/standalone.d.ts.map +1 -0
  80. package/dist/adapters/standalone.js +49 -0
  81. package/dist/adapters/standalone.mjs +40 -0
  82. package/dist/adapters/standalone.ts.js +1 -0
  83. package/dist/{declarations/src/adapters → adapters}/ws.d.ts +16 -16
  84. package/dist/adapters/ws.d.ts.map +1 -0
  85. package/dist/adapters/ws.js +384 -0
  86. package/dist/adapters/ws.mjs +380 -0
  87. package/dist/adapters/ws.ts.js +1 -0
  88. package/dist/{declarations/src/assertNotBrowser.d.ts → assertNotBrowser.d.ts} +1 -1
  89. package/dist/assertNotBrowser.d.ts.map +1 -0
  90. package/dist/{codes-e0df67c4.cjs.prod.js → envelopes-1deb2fa7.mjs} +19 -5
  91. package/dist/{codes-33cef953.cjs.dev.js → envelopes-a953b930.js} +18 -0
  92. package/dist/{declarations/src/http → http}/ResponseMeta.d.ts +4 -4
  93. package/dist/http/ResponseMeta.d.ts.map +1 -0
  94. package/dist/{declarations/src/http → http}/index.d.ts +2 -2
  95. package/dist/http/index.d.ts.map +1 -0
  96. package/dist/{declarations/src/http → http}/internals/getHTTPStatusCode.d.ts +21 -20
  97. package/dist/http/internals/getHTTPStatusCode.d.ts.map +1 -0
  98. package/dist/{declarations/src/http → http}/internals/types.d.ts +40 -39
  99. package/dist/http/internals/types.d.ts.map +1 -0
  100. package/dist/{declarations/src/http → http}/resolveHTTPResponse.d.ts +12 -12
  101. package/dist/http/resolveHTTPResponse.d.ts.map +1 -0
  102. package/dist/index.d.ts +7 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/{trpc-server.cjs.dev.js → index.js} +81 -107
  105. package/dist/{trpc-server.esm.js → index.mjs} +71 -91
  106. package/dist/index.ts.js +1 -0
  107. package/dist/{declarations/src/internals → internals}/BaseHandlerOptions.d.ts +12 -12
  108. package/dist/internals/BaseHandlerOptions.d.ts.map +1 -0
  109. package/dist/{declarations/src/internals → internals}/OnErrorFunction.d.ts +10 -10
  110. package/dist/internals/OnErrorFunction.d.ts.map +1 -0
  111. package/dist/{declarations/src/internals → internals}/callProcedure.d.ts +9 -9
  112. package/dist/internals/callProcedure.d.ts.map +1 -0
  113. package/dist/{declarations/src/internals → internals}/errors.d.ts +4 -3
  114. package/dist/internals/errors.d.ts.map +1 -0
  115. package/dist/{declarations/src/internals → internals}/invert.d.ts +8 -8
  116. package/dist/internals/invert.d.ts.map +1 -0
  117. package/dist/{declarations/src/internals → internals}/middlewares.d.ts +34 -33
  118. package/dist/internals/middlewares.d.ts.map +1 -0
  119. package/dist/internals/procedure.d.ts +87 -0
  120. package/dist/internals/procedure.d.ts.map +1 -0
  121. package/dist/internals/transformTRPCResponse.d.ts +9 -0
  122. package/dist/internals/transformTRPCResponse.d.ts.map +1 -0
  123. package/dist/nodeHTTPRequestHandler-1cdb6383.mjs +105 -0
  124. package/dist/nodeHTTPRequestHandler-848f07b5.js +107 -0
  125. package/dist/observable/index.d.ts +5 -0
  126. package/dist/observable/index.d.ts.map +1 -0
  127. package/dist/observable/index.js +204 -0
  128. package/dist/observable/index.mjs +195 -0
  129. package/dist/observable/index.ts.js +1 -0
  130. package/dist/observable/internals/identity.d.ts +2 -0
  131. package/dist/observable/internals/identity.d.ts.map +1 -0
  132. package/dist/observable/internals/observableToPromise.d.ts +10 -0
  133. package/dist/observable/internals/observableToPromise.d.ts.map +1 -0
  134. package/dist/observable/internals/pipe.d.ts +4 -0
  135. package/dist/observable/internals/pipe.d.ts.map +1 -0
  136. package/dist/observable/observable.d.ts +5 -0
  137. package/dist/observable/observable.d.ts.map +1 -0
  138. package/dist/observable/operators/index.d.ts +4 -0
  139. package/dist/observable/operators/index.d.ts.map +1 -0
  140. package/dist/observable/operators/map.d.ts +3 -0
  141. package/dist/observable/operators/map.d.ts.map +1 -0
  142. package/dist/observable/operators/share.d.ts +6 -0
  143. package/dist/observable/operators/share.d.ts.map +1 -0
  144. package/dist/observable/operators/tap.d.ts +3 -0
  145. package/dist/observable/operators/tap.d.ts.map +1 -0
  146. package/dist/observable/types.d.ts +29 -0
  147. package/dist/observable/types.d.ts.map +1 -0
  148. package/dist/observable-137ea1bd.mjs +105 -0
  149. package/dist/observable-3aa4d911.js +108 -0
  150. package/dist/{nodeHTTPRequestHandler-2e6cc2d7.esm.js → resolveHTTPResponse-54a79e6c.mjs} +19 -126
  151. package/dist/{nodeHTTPRequestHandler-b7ff366e.cjs.dev.js → resolveHTTPResponse-ec3dccaa.js} +24 -132
  152. package/dist/router.d.ts +173 -0
  153. package/dist/router.d.ts.map +1 -0
  154. package/dist/{declarations/src/rpc → rpc}/codes.d.ts +48 -46
  155. package/dist/rpc/codes.d.ts.map +1 -0
  156. package/dist/rpc/envelopes.d.ts +94 -0
  157. package/dist/rpc/envelopes.d.ts.map +1 -0
  158. package/dist/{declarations/src/rpc → rpc}/index.d.ts +2 -2
  159. package/dist/rpc/index.d.ts.map +1 -0
  160. package/dist/rpc/index.js +14 -0
  161. package/dist/rpc/index.mjs +1 -0
  162. package/dist/rpc/index.ts.js +1 -0
  163. package/dist/subscription.d.ts +9 -0
  164. package/dist/subscription.d.ts.map +1 -0
  165. package/dist/subscription.js +44 -0
  166. package/dist/subscription.mjs +40 -0
  167. package/dist/subscription.ts.js +1 -0
  168. package/dist/transformTRPCResponse-333bed6c.js +56 -0
  169. package/dist/transformTRPCResponse-e0cba527.mjs +53 -0
  170. package/dist/{declarations/src/transformer.d.ts → transformer.d.ts} +29 -29
  171. package/dist/transformer.d.ts.map +1 -0
  172. package/dist/{declarations/src/types.d.ts → types.d.ts} +40 -40
  173. package/dist/types.d.ts.map +1 -0
  174. package/observable/index.d.ts +1 -0
  175. package/observable/index.js +1 -0
  176. package/package.json +82 -26
  177. package/rpc/dist/trpc-server-rpc.cjs.dev.js +1 -1
  178. package/rpc/dist/trpc-server-rpc.cjs.prod.js +1 -1
  179. package/rpc/dist/trpc-server-rpc.esm.js +1 -1
  180. package/rpc/index.d.ts +1 -0
  181. package/rpc/index.js +1 -0
  182. package/src/TRPCError.ts +5 -13
  183. package/src/adapters/express.ts +3 -3
  184. package/src/adapters/fastify/fastifyRequestHandler.ts +77 -0
  185. package/src/adapters/fastify/fastifyTRPCPlugin.ts +56 -0
  186. package/src/adapters/fastify/index.ts +2 -0
  187. package/src/adapters/fetch/fetchRequestHandler.ts +61 -0
  188. package/src/adapters/fetch/index.ts +2 -0
  189. package/src/adapters/fetch/types.ts +28 -0
  190. package/src/adapters/next.ts +9 -7
  191. package/src/adapters/node-http/internals/getPostBody.test.ts +2 -1
  192. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +5 -6
  193. package/src/adapters/node-http/types.ts +4 -5
  194. package/src/adapters/standalone.ts +11 -3
  195. package/src/adapters/ws.ts +122 -81
  196. package/src/assertNotBrowser.ts +1 -0
  197. package/src/http/internals/getHTTPStatusCode.ts +2 -1
  198. package/src/http/internals/types.ts +6 -7
  199. package/src/http/resolveHTTPResponse.ts +23 -27
  200. package/src/index.ts +1 -6
  201. package/src/internals/BaseHandlerOptions.ts +1 -1
  202. package/src/internals/OnErrorFunction.ts +1 -1
  203. package/src/internals/callProcedure.ts +6 -3
  204. package/src/internals/errors.ts +20 -4
  205. package/src/internals/middlewares.ts +3 -2
  206. package/src/internals/procedure.ts +213 -93
  207. package/src/internals/transformTRPCResponse.ts +20 -15
  208. package/src/observable/index.ts +4 -0
  209. package/src/observable/internals/identity.ts +3 -0
  210. package/src/observable/internals/observableToPromise.ts +49 -0
  211. package/src/observable/internals/pipe.ts +22 -0
  212. package/src/observable/observable.test.ts +101 -0
  213. package/src/observable/observable.ts +75 -0
  214. package/src/observable/operators/index.ts +3 -0
  215. package/src/observable/operators/map.test.ts +92 -0
  216. package/src/observable/operators/map.ts +25 -0
  217. package/src/observable/operators/share.test.ts +60 -0
  218. package/src/observable/operators/share.ts +67 -0
  219. package/src/observable/operators/tap.ts +26 -0
  220. package/src/observable/types.ts +69 -0
  221. package/src/router.ts +171 -82
  222. package/src/rpc/codes.ts +1 -0
  223. package/src/rpc/envelopes.ts +87 -68
  224. package/src/subscription.ts +6 -124
  225. package/src/types.ts +7 -9
  226. package/adapters/express/package.json +0 -4
  227. package/adapters/next/package.json +0 -4
  228. package/adapters/node-http/package.json +0 -4
  229. package/adapters/standalone/package.json +0 -4
  230. package/adapters/ws/package.json +0 -4
  231. package/dist/codes-fe07bf82.esm.js +0 -56
  232. package/dist/declarations/src/TRPCError.d.ts +0 -19
  233. package/dist/declarations/src/TRPCError.d.ts.map +0 -1
  234. package/dist/declarations/src/adapters/express.d.ts.map +0 -1
  235. package/dist/declarations/src/adapters/next.d.ts.map +0 -1
  236. package/dist/declarations/src/adapters/node-http/index.d.ts.map +0 -1
  237. package/dist/declarations/src/adapters/node-http/internals/getPostBody.d.ts.map +0 -1
  238. package/dist/declarations/src/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +0 -1
  239. package/dist/declarations/src/adapters/node-http/types.d.ts.map +0 -1
  240. package/dist/declarations/src/adapters/standalone.d.ts.map +0 -1
  241. package/dist/declarations/src/adapters/ws.d.ts.map +0 -1
  242. package/dist/declarations/src/assertNotBrowser.d.ts.map +0 -1
  243. package/dist/declarations/src/deprecated/LegacyRouter.d.ts +0 -3
  244. package/dist/declarations/src/deprecated/LegacyRouter.d.ts.map +0 -1
  245. package/dist/declarations/src/deprecated/createHttpServer.d.ts +0 -19
  246. package/dist/declarations/src/deprecated/createHttpServer.d.ts.map +0 -1
  247. package/dist/declarations/src/deprecated/requestHandler.d.ts +0 -15
  248. package/dist/declarations/src/deprecated/requestHandler.d.ts.map +0 -1
  249. package/dist/declarations/src/http/ResponseMeta.d.ts.map +0 -1
  250. package/dist/declarations/src/http/index.d.ts.map +0 -1
  251. package/dist/declarations/src/http/internals/getHTTPStatusCode.d.ts.map +0 -1
  252. package/dist/declarations/src/http/internals/types.d.ts.map +0 -1
  253. package/dist/declarations/src/http/resolveHTTPResponse.d.ts.map +0 -1
  254. package/dist/declarations/src/index.d.ts +0 -10
  255. package/dist/declarations/src/index.d.ts.map +0 -1
  256. package/dist/declarations/src/internals/BaseHandlerOptions.d.ts.map +0 -1
  257. package/dist/declarations/src/internals/OnErrorFunction.d.ts.map +0 -1
  258. package/dist/declarations/src/internals/callProcedure.d.ts.map +0 -1
  259. package/dist/declarations/src/internals/errors.d.ts.map +0 -1
  260. package/dist/declarations/src/internals/invert.d.ts.map +0 -1
  261. package/dist/declarations/src/internals/middlewares.d.ts.map +0 -1
  262. package/dist/declarations/src/internals/procedure.d.ts +0 -74
  263. package/dist/declarations/src/internals/procedure.d.ts.map +0 -1
  264. package/dist/declarations/src/internals/transformTRPCResponse.d.ts +0 -7
  265. package/dist/declarations/src/internals/transformTRPCResponse.d.ts.map +0 -1
  266. package/dist/declarations/src/internals/wrapCallSafe.d.ts +0 -16
  267. package/dist/declarations/src/internals/wrapCallSafe.d.ts.map +0 -1
  268. package/dist/declarations/src/router.d.ts +0 -176
  269. package/dist/declarations/src/router.d.ts.map +0 -1
  270. package/dist/declarations/src/rpc/codes.d.ts.map +0 -1
  271. package/dist/declarations/src/rpc/envelopes.d.ts +0 -72
  272. package/dist/declarations/src/rpc/envelopes.d.ts.map +0 -1
  273. package/dist/declarations/src/rpc/index.d.ts.map +0 -1
  274. package/dist/declarations/src/subscription.d.ts +0 -58
  275. package/dist/declarations/src/subscription.d.ts.map +0 -1
  276. package/dist/declarations/src/transformer.d.ts.map +0 -1
  277. package/dist/declarations/src/types.d.ts.map +0 -1
  278. package/dist/declarations/src/ws/index.d.ts +0 -7
  279. package/dist/declarations/src/ws/index.d.ts.map +0 -1
  280. package/dist/nodeHTTPRequestHandler-7325b53f.cjs.prod.js +0 -399
  281. package/dist/subscription-b8831081.cjs.dev.js +0 -136
  282. package/dist/subscription-c2e0bfbc.cjs.prod.js +0 -136
  283. package/dist/subscription-fbda2888.esm.js +0 -133
  284. package/dist/transformTRPCResponse-8248515e.cjs.dev.js +0 -114
  285. package/dist/transformTRPCResponse-dcbf66c5.cjs.prod.js +0 -114
  286. package/dist/transformTRPCResponse-f73dc4a2.esm.js +0 -109
  287. package/dist/trpc-server.cjs.d.ts +0 -1
  288. package/dist/trpc-server.cjs.js +0 -7
  289. package/dist/trpc-server.cjs.prod.js +0 -528
  290. package/rpc/package.json +0 -4
  291. package/src/deprecated/LegacyRouter.ts +0 -3
  292. package/src/deprecated/createHttpServer.ts +0 -29
  293. package/src/deprecated/requestHandler.ts +0 -26
  294. package/src/internals/wrapCallSafe.ts +0 -19
  295. package/src/ws/index.ts +0 -8
  296. package/ws/dist/trpc-server-ws.cjs.d.ts +0 -1
  297. package/ws/dist/trpc-server-ws.cjs.dev.js +0 -15
  298. package/ws/dist/trpc-server-ws.cjs.js +0 -7
  299. package/ws/dist/trpc-server-ws.cjs.prod.js +0 -15
  300. package/ws/dist/trpc-server-ws.esm.js +0 -11
  301. package/ws/package.json +0 -4
package/src/router.ts CHANGED
@@ -1,28 +1,29 @@
1
1
  /* eslint-disable @typescript-eslint/ban-types */
2
+
2
3
  /* eslint-disable @typescript-eslint/no-explicit-any */
4
+ import { TRPCError } from './TRPCError';
3
5
  import { assertNotBrowser } from './assertNotBrowser';
4
6
  import { getHTTPStatusCodeFromError } from './http/internals/getHTTPStatusCode';
5
7
  import { MiddlewareFunction } from './internals/middlewares';
6
8
  import {
7
- createProcedure,
8
9
  CreateProcedureOptions,
9
10
  CreateProcedureWithInput,
10
11
  CreateProcedureWithInputOutputParser,
11
12
  CreateProcedureWithoutInput,
12
- inferProcedureFromOptions,
13
13
  Procedure,
14
14
  ProcedureCallOptions,
15
+ createProcedure,
16
+ inferProcedureFromOptions,
15
17
  } from './internals/procedure';
18
+ import { Observable, inferObservableValue } from './observable';
16
19
  import {
17
20
  TRPCErrorShape,
18
21
  TRPC_ERROR_CODES_BY_KEY,
19
22
  TRPC_ERROR_CODE_KEY,
20
23
  TRPC_ERROR_CODE_NUMBER,
21
24
  } from './rpc';
22
- import { Subscription } from './subscription';
23
25
  import { CombinedDataTransformer, DataTransformerOptions } from './transformer';
24
- import { TRPCError } from './TRPCError';
25
- import { flatten, Prefixer, ThenArg } from './types';
26
+ import { Prefixer, ThenArg, flatten } from './types';
26
27
 
27
28
  assertNotBrowser();
28
29
 
@@ -37,20 +38,30 @@ export type ProcedureType = 'query' | 'mutation' | 'subscription';
37
38
  export type ProcedureRecord<
38
39
  TInputContext = any,
39
40
  TContext = any,
41
+ TMeta = any,
40
42
  TInput = any,
41
43
  TParsedInput = any,
42
44
  TOutput = any,
45
+ TParsedOutput = any,
43
46
  > = Record<
44
47
  string,
45
- Procedure<TInputContext, TContext, TInput, TParsedInput, TOutput>
48
+ Procedure<
49
+ TInputContext,
50
+ TContext,
51
+ TMeta,
52
+ TInput,
53
+ TParsedInput,
54
+ TOutput,
55
+ TParsedOutput
56
+ >
46
57
  >;
47
58
 
48
59
  /**
49
60
  * @public
50
61
  */
51
62
  export type inferProcedureInput<
52
- TProcedure extends Procedure<any, any, any, any, any>,
53
- > = TProcedure extends Procedure<any, any, infer Input, any, any>
63
+ TProcedure extends Procedure<any, any, any, any, any, any, any>,
64
+ > = TProcedure extends Procedure<any, any, any, infer Input, any, any, any>
54
65
  ? undefined extends Input
55
66
  ? Input | null | void // void is necessary to allow procedures with nullish input to be called without an input
56
67
  : Input
@@ -66,7 +77,7 @@ export type inferAsyncReturnType<TFunction extends (...args: any) => any> =
66
77
  * @public
67
78
  */
68
79
  export type inferProcedureOutput<
69
- TProcedure extends Procedure<any, any, any, any, any>,
80
+ TProcedure extends Procedure<any, any, any, any, any, any, any>,
70
81
  > = inferAsyncReturnType<TProcedure['call']>;
71
82
 
72
83
  /**
@@ -76,10 +87,8 @@ export type inferProcedureOutput<
76
87
  export type inferSubscriptionOutput<
77
88
  TRouter extends AnyRouter,
78
89
  TPath extends keyof TRouter['_def']['subscriptions'],
79
- > = ReturnType<
80
- inferAsyncReturnType<
81
- TRouter['_def']['subscriptions'][TPath]['call']
82
- >['output']
90
+ > = inferObservableValue<
91
+ inferAsyncReturnType<TRouter['_def']['subscriptions'][TPath]['call']>
83
92
  >;
84
93
 
85
94
  function getDataTransformer(
@@ -94,8 +103,8 @@ function getDataTransformer(
94
103
  * @internal
95
104
  */
96
105
  export type inferHandlerInput<
97
- TProcedure extends Procedure<any, any, any, any, any>,
98
- > = TProcedure extends Procedure<any, any, infer TInput, any, any>
106
+ TProcedure extends Procedure<any, any, any, any, any, any, any>,
107
+ > = TProcedure extends Procedure<any, any, any, infer TInput, any, any, any>
99
108
  ? undefined extends TInput // ? is input optional
100
109
  ? unknown extends TInput // ? is input unset
101
110
  ? [(null | undefined)?] // -> there is no input
@@ -118,6 +127,21 @@ export type inferRouterContext<TRouter extends AnyRouter> = Parameters<
118
127
  TRouter['createCaller']
119
128
  >[0];
120
129
 
130
+ /**
131
+ * @internal
132
+ */
133
+ export type inferRouterMeta<TRouter extends AnyRouter> = TRouter extends Router<
134
+ any,
135
+ any,
136
+ infer TMeta,
137
+ any,
138
+ any,
139
+ any,
140
+ any
141
+ >
142
+ ? TMeta
143
+ : {};
144
+
121
145
  /**
122
146
  * @public
123
147
  */
@@ -127,6 +151,7 @@ export type AnyRouter<TContext = any> = Router<
127
151
  any,
128
152
  any,
129
153
  any,
154
+ any,
130
155
  any
131
156
  >;
132
157
 
@@ -205,21 +230,31 @@ const defaultTransformer: CombinedDataTransformer = {
205
230
  };
206
231
 
207
232
  type SwapProcedureContext<
208
- TProcedure extends Procedure<any, any, any, any, any>,
233
+ TProcedure extends Procedure<any, any, any, any, any, any, any>,
209
234
  TNewContext,
210
235
  > = TProcedure extends Procedure<
211
236
  infer TInputContext,
212
237
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
213
238
  infer _TOldContext,
239
+ infer TMeta,
214
240
  infer TInput,
215
241
  infer TParsedInput,
216
- infer TOutput
242
+ infer TOutput,
243
+ infer TParsedOutput
217
244
  >
218
- ? Procedure<TInputContext, TNewContext, TInput, TParsedInput, TOutput>
245
+ ? Procedure<
246
+ TInputContext,
247
+ TNewContext,
248
+ TMeta,
249
+ TInput,
250
+ TParsedInput,
251
+ TOutput,
252
+ TParsedOutput
253
+ >
219
254
  : never;
220
255
 
221
256
  type SwapContext<
222
- TObj extends ProcedureRecord<any, any, any, any>,
257
+ TObj extends ProcedureRecord<any, any, any, any, any, any>,
223
258
  TNewContext,
224
259
  > = {
225
260
  [P in keyof TObj]: SwapProcedureContext<TObj[P], TNewContext>;
@@ -231,13 +266,33 @@ type SwapContext<
231
266
  export class Router<
232
267
  TInputContext,
233
268
  TContext,
234
- TQueries extends ProcedureRecord<TInputContext, TContext>,
235
- TMutations extends ProcedureRecord<TInputContext, TContext>,
269
+ TMeta extends Record<string, any>,
270
+ TQueries extends ProcedureRecord<
271
+ TInputContext,
272
+ TContext,
273
+ any,
274
+ any,
275
+ any,
276
+ any,
277
+ any
278
+ >,
279
+ TMutations extends ProcedureRecord<
280
+ TInputContext,
281
+ TContext,
282
+ any,
283
+ any,
284
+ any,
285
+ any,
286
+ any
287
+ >,
236
288
  TSubscriptions extends ProcedureRecord<
237
289
  TInputContext,
238
290
  TContext,
239
291
  unknown,
240
- Subscription<unknown>
292
+ unknown,
293
+ Observable<unknown, unknown>,
294
+ unknown,
295
+ unknown
241
296
  >,
242
297
  TErrorShape extends TRPCErrorShape<number>,
243
298
  > {
@@ -245,7 +300,7 @@ export class Router<
245
300
  queries: TQueries;
246
301
  mutations: TMutations;
247
302
  subscriptions: TSubscriptions;
248
- middlewares: MiddlewareFunction<TInputContext, TContext>[];
303
+ middlewares: MiddlewareFunction<TInputContext, TContext, TMeta>[];
249
304
  errorFormatter: ErrorFormatter<TContext, TErrorShape>;
250
305
  transformer: CombinedDataTransformer;
251
306
  };
@@ -254,7 +309,7 @@ export class Router<
254
309
  queries?: TQueries;
255
310
  mutations?: TMutations;
256
311
  subscriptions?: TSubscriptions;
257
- middlewares?: MiddlewareFunction<TInputContext, TContext>[];
312
+ middlewares?: MiddlewareFunction<TInputContext, TContext, TMeta>[];
258
313
  errorFormatter?: ErrorFormatter<TContext, TErrorShape>;
259
314
  transformer?: CombinedDataTransformer;
260
315
  }) {
@@ -279,29 +334,40 @@ export class Router<
279
334
  return eps as any;
280
335
  }
281
336
 
282
- public query<TPath extends string, TInput, TParsedInput, TOutput>(
337
+ public query<
338
+ TPath extends string,
339
+ TInput,
340
+ TParsedInput,
341
+ TOutput,
342
+ TParsedOutput,
343
+ >(
283
344
  path: TPath,
284
345
  procedure: CreateProcedureWithInputOutputParser<
285
346
  TContext,
347
+ TMeta,
286
348
  TInput,
287
349
  TParsedInput,
288
- TOutput
350
+ TOutput,
351
+ TParsedOutput
289
352
  >,
290
353
  ): Router<
291
354
  TInputContext,
292
355
  TContext,
356
+ TMeta,
293
357
  TQueries &
294
358
  Record<TPath, inferProcedureFromOptions<TInputContext, typeof procedure>>,
295
359
  TMutations,
296
360
  TSubscriptions,
297
361
  TErrorShape
298
362
  >;
363
+
299
364
  public query<TPath extends string, TInput, TOutput>(
300
365
  path: TPath,
301
- procedure: CreateProcedureWithInput<TContext, TInput, TInput, TOutput>,
366
+ procedure: CreateProcedureWithInput<TContext, TMeta, TInput, TOutput>,
302
367
  ): Router<
303
368
  TInputContext,
304
369
  TContext,
370
+ TMeta,
305
371
  TQueries &
306
372
  Record<TPath, inferProcedureFromOptions<TInputContext, typeof procedure>>,
307
373
  TMutations,
@@ -309,12 +375,18 @@ export class Router<
309
375
  TErrorShape
310
376
  >;
311
377
 
312
- public query<TPath extends string, TOutput>(
378
+ public query<TPath extends string, TOutput, TParsedOutput>(
313
379
  path: TPath,
314
- procedure: CreateProcedureWithoutInput<TContext, TOutput>,
380
+ procedure: CreateProcedureWithoutInput<
381
+ TContext,
382
+ TMeta,
383
+ TOutput,
384
+ TParsedOutput
385
+ >,
315
386
  ): Router<
316
387
  TInputContext,
317
388
  TContext,
389
+ TMeta,
318
390
  TQueries &
319
391
  Record<TPath, inferProcedureFromOptions<TInputContext, typeof procedure>>,
320
392
  TMutations,
@@ -324,9 +396,9 @@ export class Router<
324
396
 
325
397
  query(
326
398
  path: string,
327
- procedure: CreateProcedureOptions<TContext, any, any, any>,
399
+ procedure: CreateProcedureOptions<TContext, TMeta, any, any, any, any>,
328
400
  ) {
329
- const router = new Router<TContext, TContext, any, {}, {}, any>({
401
+ const router = new Router<TContext, TContext, TMeta, any, {}, {}, any>({
330
402
  queries: safeObject({
331
403
  [path]: createProcedure(procedure),
332
404
  }),
@@ -335,29 +407,40 @@ export class Router<
335
407
  return this.merge(router);
336
408
  }
337
409
 
338
- public mutation<TPath extends string, TInput, TParsedInput, TOutput>(
410
+ public mutation<
411
+ TPath extends string,
412
+ TInput,
413
+ TParsedInput,
414
+ TOutput,
415
+ TParsedOutput,
416
+ >(
339
417
  path: TPath,
340
418
  procedure: CreateProcedureWithInputOutputParser<
341
419
  TContext,
420
+ TMeta,
342
421
  TInput,
343
422
  TParsedInput,
344
- TOutput
423
+ TOutput,
424
+ TParsedOutput
345
425
  >,
346
426
  ): Router<
347
427
  TInputContext,
348
428
  TContext,
429
+ TMeta,
349
430
  TQueries,
350
431
  TMutations &
351
432
  Record<TPath, inferProcedureFromOptions<TInputContext, typeof procedure>>,
352
433
  TSubscriptions,
353
434
  TErrorShape
354
435
  >;
436
+
355
437
  public mutation<TPath extends string, TInput, TOutput>(
356
438
  path: TPath,
357
- procedure: CreateProcedureWithInput<TContext, TInput, TInput, TOutput>,
439
+ procedure: CreateProcedureWithInput<TContext, TMeta, TInput, TOutput>,
358
440
  ): Router<
359
441
  TInputContext,
360
442
  TContext,
443
+ TMeta,
361
444
  TQueries,
362
445
  TMutations &
363
446
  Record<TPath, inferProcedureFromOptions<TInputContext, typeof procedure>>,
@@ -365,12 +448,18 @@ export class Router<
365
448
  TErrorShape
366
449
  >;
367
450
 
368
- public mutation<TPath extends string, TOutput>(
451
+ public mutation<TPath extends string, TOutput, TParsedOutput>(
369
452
  path: TPath,
370
- procedure: CreateProcedureWithoutInput<TContext, TOutput>,
453
+ procedure: CreateProcedureWithoutInput<
454
+ TContext,
455
+ TMeta,
456
+ TOutput,
457
+ TParsedOutput
458
+ >,
371
459
  ): Router<
372
460
  TInputContext,
373
461
  TContext,
462
+ TMeta,
374
463
  TQueries,
375
464
  TMutations &
376
465
  Record<TPath, inferProcedureFromOptions<TInputContext, typeof procedure>>,
@@ -380,9 +469,9 @@ export class Router<
380
469
 
381
470
  public mutation(
382
471
  path: string,
383
- procedure: CreateProcedureOptions<TContext, any, any, any>,
472
+ procedure: CreateProcedureOptions<TContext, TMeta, any, any, any, any>,
384
473
  ) {
385
- const router = new Router<TContext, TContext, {}, any, {}, any>({
474
+ const router = new Router<TContext, TContext, TMeta, {}, any, {}, any>({
386
475
  mutations: safeObject({
387
476
  [path]: createProcedure(procedure),
388
477
  }),
@@ -398,18 +487,24 @@ export class Router<
398
487
  TPath extends string,
399
488
  TInput,
400
489
  TParsedInput,
401
- TOutput extends Subscription<unknown>,
490
+ TOutput extends Observable<unknown, unknown>,
402
491
  >(
403
492
  path: TPath,
404
- procedure: CreateProcedureWithInputOutputParser<
405
- TContext,
406
- TInput,
407
- TParsedInput,
408
- TOutput
493
+ procedure: Omit<
494
+ CreateProcedureWithInputOutputParser<
495
+ TContext,
496
+ TMeta,
497
+ TInput,
498
+ TParsedInput,
499
+ TOutput,
500
+ unknown
501
+ >,
502
+ 'output'
409
503
  >,
410
504
  ): Router<
411
505
  TInputContext,
412
506
  TContext,
507
+ TMeta,
413
508
  TQueries,
414
509
  TMutations,
415
510
  TSubscriptions &
@@ -423,13 +518,17 @@ export class Router<
423
518
  public subscription<
424
519
  TPath extends string,
425
520
  TInput,
426
- TOutput extends Subscription<unknown>,
521
+ TOutput extends Observable<unknown, unknown>,
427
522
  >(
428
523
  path: TPath,
429
- procedure: CreateProcedureWithInput<TContext, TInput, TInput, TOutput>,
524
+ procedure: Omit<
525
+ CreateProcedureWithInput<TContext, TMeta, TInput, TOutput>,
526
+ 'output'
527
+ >,
430
528
  ): Router<
431
529
  TInputContext,
432
530
  TContext,
531
+ TMeta,
433
532
  TQueries,
434
533
  TMutations,
435
534
  TSubscriptions &
@@ -442,13 +541,17 @@ export class Router<
442
541
  */
443
542
  public subscription<
444
543
  TPath extends string,
445
- TOutput extends Subscription<unknown>,
544
+ TOutput extends Observable<unknown, unknown>,
446
545
  >(
447
546
  path: TPath,
448
- procedure: CreateProcedureWithoutInput<TContext, TOutput>,
547
+ procedure: Omit<
548
+ CreateProcedureWithoutInput<TContext, TMeta, TOutput, unknown>,
549
+ 'output'
550
+ >,
449
551
  ): Router<
450
552
  TInputContext,
451
553
  TContext,
554
+ TMeta,
452
555
  TQueries,
453
556
  TMutations,
454
557
  TSubscriptions &
@@ -458,9 +561,12 @@ export class Router<
458
561
 
459
562
  public subscription(
460
563
  path: string,
461
- procedure: CreateProcedureOptions<TContext, any, any, any>,
564
+ procedure: Omit<
565
+ CreateProcedureOptions<TContext, TMeta, any, any, any, any>,
566
+ 'output'
567
+ >,
462
568
  ) {
463
- const router = new Router<TContext, TContext, {}, {}, any, any>({
569
+ const router = new Router<TContext, TContext, TMeta, {}, {}, any, any>({
464
570
  subscriptions: safeObject({
465
571
  [path]: createProcedure(procedure),
466
572
  }),
@@ -473,11 +579,14 @@ export class Router<
473
579
  * Merge router with other router
474
580
  * @param router
475
581
  */
476
- public merge<TChildRouter extends Router<TContext, any, any, any, any, any>>(
582
+ public merge<
583
+ TChildRouter extends Router<TContext, any, TMeta, any, any, any, any>,
584
+ >(
477
585
  router: TChildRouter,
478
586
  ): Router<
479
587
  TInputContext,
480
588
  inferRouterContext<TChildRouter>,
589
+ TMeta,
481
590
  TQueries & TChildRouter['_def']['queries'],
482
591
  TMutations & TChildRouter['_def']['mutations'],
483
592
  TSubscriptions & TChildRouter['_def']['subscriptions'],
@@ -491,13 +600,14 @@ export class Router<
491
600
  */
492
601
  public merge<
493
602
  TPath extends string,
494
- TChildRouter extends Router<TContext, any, any, any, any, any>,
603
+ TChildRouter extends Router<TContext, any, TMeta, any, any, any, any>,
495
604
  >(
496
605
  prefix: TPath,
497
606
  router: TChildRouter,
498
607
  ): Router<
499
608
  TInputContext,
500
609
  inferRouterContext<TChildRouter>,
610
+ TMeta,
501
611
  TQueries & Prefixer<TChildRouter['_def']['queries'], `${TPath}`>,
502
612
  TMutations & Prefixer<TChildRouter['_def']['mutations'], `${TPath}`>,
503
613
  TSubscriptions &
@@ -550,7 +660,7 @@ export class Router<
550
660
  return Router.prefixProcedures(newDefs, prefix);
551
661
  };
552
662
 
553
- return new Router<TInputContext, any, any, any, any, TErrorShape>({
663
+ return new Router<TInputContext, any, TMeta, any, any, any, TErrorShape>({
554
664
  ...this._def,
555
665
  queries: safeObject(
556
666
  this._def.queries,
@@ -577,7 +687,7 @@ export class Router<
577
687
  const defTarget = PROCEDURE_DEFINITION_MAP[type];
578
688
  const defs = this._def[defTarget];
579
689
  const procedure = defs[path] as
580
- | Procedure<TInputContext, TContext, any, any, any>
690
+ | Procedure<TInputContext, TContext, TMeta, any, any, any, any>
581
691
  | undefined;
582
692
 
583
693
  if (!procedure) {
@@ -628,10 +738,11 @@ export class Router<
628
738
  * @link https://trpc.io/docs/middlewares
629
739
  */
630
740
  public middleware<TNewContext>(
631
- middleware: MiddlewareFunction<TContext, TNewContext>,
741
+ middleware: MiddlewareFunction<TContext, TNewContext, TMeta>,
632
742
  ): Router<
633
743
  TInputContext,
634
744
  TNewContext,
745
+ TMeta,
635
746
  SwapContext<TQueries, TNewContext>,
636
747
  SwapContext<TMutations, TNewContext>,
637
748
  SwapContext<TSubscriptions, TNewContext>,
@@ -658,6 +769,7 @@ export class Router<
658
769
  return new Router<
659
770
  TInputContext,
660
771
  TContext,
772
+ TMeta,
661
773
  TQueries,
662
774
  TMutations,
663
775
  TSubscriptions,
@@ -712,6 +824,7 @@ export class Router<
712
824
  return new Router<
713
825
  TInputContext,
714
826
  TContext,
827
+ TMeta,
715
828
  TQueries,
716
829
  TMutations,
717
830
  TSubscriptions,
@@ -731,6 +844,7 @@ export class Router<
731
844
  public flat(): Router<
732
845
  TInputContext,
733
846
  TContext,
847
+ TMeta,
734
848
  flatten<{}, TQueries>,
735
849
  flatten<{}, TMutations>,
736
850
  flatten<{}, TSubscriptions>,
@@ -740,31 +854,6 @@ export class Router<
740
854
  }
741
855
  }
742
856
 
743
- /**
744
- * Subclass of `VNextRouter` with `TInputContext` and `TContext` set to the same type, for backcompat.
745
- *
746
- * @deprecated
747
- */
748
- export class LegacyRouter<
749
- TContext,
750
- TQueries extends ProcedureRecord<TContext, TContext>,
751
- TMutations extends ProcedureRecord<TContext, TContext>,
752
- TSubscriptions extends ProcedureRecord<
753
- TContext,
754
- TContext,
755
- unknown,
756
- Subscription<unknown>
757
- >,
758
- TErrorShape extends TRPCErrorShape<number>,
759
- > extends Router<
760
- TContext,
761
- TContext,
762
- TQueries,
763
- TMutations,
764
- TSubscriptions,
765
- TErrorShape
766
- > {}
767
-
768
- export function router<TContext>() {
769
- return new Router<TContext, TContext, {}, {}, {}, DefaultErrorShape>();
857
+ export function router<TContext, TMeta extends Record<string, any> = {}>() {
858
+ return new Router<TContext, TContext, TMeta, {}, {}, {}, DefaultErrorShape>();
770
859
  }
package/src/rpc/codes.ts CHANGED
@@ -28,6 +28,7 @@ export const TRPC_ERROR_CODES_BY_KEY = {
28
28
  NOT_FOUND: -32004, // 404
29
29
  METHOD_NOT_SUPPORTED: -32005, // 405
30
30
  TIMEOUT: -32008, // 408
31
+ CONFLICT: -32009, // 409
31
32
  PRECONDITION_FAILED: -32012, // 412
32
33
  PAYLOAD_TOO_LARGE: -32013, // 413
33
34
  CLIENT_CLOSED_REQUEST: -32099, // 499