@trpc/server 10.0.0-alpha.8 → 10.0.0-proxy-alpha.53

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 (355) hide show
  1. package/README.md +79 -1
  2. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.d.ts +1 -0
  3. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.dev.js +190 -0
  4. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.js +7 -0
  5. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.cjs.prod.js +190 -0
  6. package/adapters/aws-lambda/dist/trpc-server-adapters-aws-lambda.esm.js +186 -0
  7. package/adapters/aws-lambda/index.d.ts +1 -0
  8. package/adapters/aws-lambda/index.js +1 -0
  9. package/adapters/express/dist/trpc-server-adapters-express.cjs.dev.js +7 -7
  10. package/adapters/express/dist/trpc-server-adapters-express.cjs.prod.js +7 -7
  11. package/adapters/express/dist/trpc-server-adapters-express.esm.js +7 -7
  12. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.dev.js +18 -11
  13. package/adapters/fastify/dist/trpc-server-adapters-fastify.cjs.prod.js +18 -11
  14. package/adapters/fastify/dist/trpc-server-adapters-fastify.esm.js +18 -11
  15. package/adapters/fastify/index.d.ts +1 -0
  16. package/adapters/fastify/index.js +1 -0
  17. package/adapters/fetch/index.d.ts +1 -0
  18. package/adapters/fetch/index.js +1 -0
  19. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.d.ts +1 -0
  20. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.dev.js +25 -0
  21. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.js +7 -0
  22. package/adapters/lambda/dist/trpc-server-adapters-lambda.cjs.prod.js +25 -0
  23. package/adapters/lambda/dist/trpc-server-adapters-lambda.esm.js +21 -0
  24. package/adapters/next/dist/trpc-server-adapters-next.cjs.dev.js +4 -4
  25. package/adapters/next/dist/trpc-server-adapters-next.cjs.prod.js +4 -4
  26. package/adapters/next/dist/trpc-server-adapters-next.esm.js +4 -4
  27. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.dev.js +4 -4
  28. package/adapters/node-http/dist/trpc-server-adapters-node-http.cjs.prod.js +4 -4
  29. package/adapters/node-http/dist/trpc-server-adapters-node-http.esm.js +4 -4
  30. package/adapters/node-http/index.js +1 -1
  31. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.dev.js +5 -5
  32. package/adapters/standalone/dist/trpc-server-adapters-standalone.cjs.prod.js +5 -5
  33. package/adapters/standalone/dist/trpc-server-adapters-standalone.esm.js +5 -5
  34. package/adapters/ws/dist/trpc-server-adapters-ws.cjs.dev.js +24 -7
  35. package/adapters/ws/dist/trpc-server-adapters-ws.cjs.prod.js +24 -7
  36. package/adapters/ws/dist/trpc-server-adapters-ws.esm.js +24 -7
  37. package/dist/TRPCError-bcb38a84.js +61 -0
  38. package/dist/TRPCError-e6e632a5.mjs +57 -0
  39. package/dist/adapters/aws-lambda/index.d.ts +14 -0
  40. package/dist/adapters/aws-lambda/index.d.ts.map +1 -0
  41. package/dist/adapters/aws-lambda/index.js +153 -0
  42. package/dist/adapters/aws-lambda/index.mjs +149 -0
  43. package/dist/adapters/aws-lambda/utils.d.ts +35 -0
  44. package/dist/adapters/aws-lambda/utils.d.ts.map +1 -0
  45. package/dist/adapters/express.d.ts +1 -1
  46. package/dist/adapters/express.d.ts.map +1 -1
  47. package/dist/adapters/express.js +14 -13
  48. package/dist/adapters/express.mjs +14 -13
  49. package/dist/adapters/fastify/fastifyRequestHandler.d.ts +2 -2
  50. package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
  51. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +2 -2
  52. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -1
  53. package/dist/adapters/fastify/index.d.ts.map +1 -1
  54. package/dist/adapters/fastify/index.js +87 -0
  55. package/dist/adapters/fastify/index.mjs +82 -0
  56. package/dist/adapters/fetch/fetchRequestHandler.d.ts +8 -0
  57. package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -0
  58. package/dist/adapters/fetch/index.d.ts +3 -0
  59. package/dist/adapters/fetch/index.d.ts.map +1 -0
  60. package/dist/adapters/fetch/index.js +57 -0
  61. package/dist/adapters/fetch/index.mjs +53 -0
  62. package/dist/adapters/fetch/types.d.ts +21 -0
  63. package/dist/adapters/fetch/types.d.ts.map +1 -0
  64. package/dist/adapters/lambda/index.d.ts +12 -0
  65. package/dist/adapters/lambda/index.d.ts.map +1 -0
  66. package/dist/adapters/next.d.ts +2 -2
  67. package/dist/adapters/next.d.ts.map +1 -1
  68. package/dist/adapters/next.js +42 -46
  69. package/dist/adapters/next.mjs +42 -46
  70. package/dist/adapters/node-http/index.d.ts.map +1 -1
  71. package/dist/adapters/node-http/index.js +5 -4
  72. package/dist/adapters/node-http/index.mjs +5 -4
  73. package/dist/adapters/node-http/internals/getPostBody.d.ts +1 -1
  74. package/dist/adapters/node-http/internals/getPostBody.d.ts.map +1 -1
  75. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +2 -2
  76. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
  77. package/dist/adapters/node-http/types.d.ts +11 -9
  78. package/dist/adapters/node-http/types.d.ts.map +1 -1
  79. package/dist/adapters/standalone.d.ts +2 -2
  80. package/dist/adapters/standalone.d.ts.map +1 -1
  81. package/dist/adapters/standalone.js +30 -28
  82. package/dist/adapters/standalone.mjs +30 -27
  83. package/dist/adapters/ws.d.ts +8 -6
  84. package/dist/adapters/ws.d.ts.map +1 -1
  85. package/dist/adapters/ws.js +284 -317
  86. package/dist/adapters/ws.mjs +284 -317
  87. package/dist/assertNotBrowser.d.ts.map +1 -1
  88. package/dist/codes-1c24d919.js +47 -0
  89. package/dist/codes-aaa7d554.mjs +44 -0
  90. package/dist/core/index.d.ts +6 -0
  91. package/dist/core/index.d.ts.map +1 -0
  92. package/dist/core/initTRPC.d.ts +95 -0
  93. package/dist/core/initTRPC.d.ts.map +1 -0
  94. package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts +302 -0
  95. package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts.map +1 -0
  96. package/dist/core/internals/config.d.ts +36 -0
  97. package/dist/core/internals/config.d.ts.map +1 -0
  98. package/dist/core/internals/getParseFn.d.ts +9 -0
  99. package/dist/core/internals/getParseFn.d.ts.map +1 -0
  100. package/dist/core/internals/mergeRouters.d.ts +3 -0
  101. package/dist/core/internals/mergeRouters.d.ts.map +1 -0
  102. package/dist/core/internals/mergeWithoutOverrides.d.ts +5 -0
  103. package/dist/core/internals/mergeWithoutOverrides.d.ts.map +1 -0
  104. package/dist/core/internals/omitPrototype.d.ts +6 -0
  105. package/dist/core/internals/omitPrototype.d.ts.map +1 -0
  106. package/dist/core/internals/prefixObjectKeys.d.ts +2 -0
  107. package/dist/core/internals/prefixObjectKeys.d.ts.map +1 -0
  108. package/dist/core/internals/procedureBuilder.d.ts +124 -0
  109. package/dist/core/internals/procedureBuilder.d.ts.map +1 -0
  110. package/dist/core/internals/utils.d.ts +44 -0
  111. package/dist/core/internals/utils.d.ts.map +1 -0
  112. package/dist/core/middleware.d.ts +87 -0
  113. package/dist/core/middleware.d.ts.map +1 -0
  114. package/dist/core/parser.d.ts +25 -0
  115. package/dist/core/parser.d.ts.map +1 -0
  116. package/dist/core/procedure.d.ts +89 -0
  117. package/dist/core/procedure.d.ts.map +1 -0
  118. package/dist/core/router.d.ts +136 -0
  119. package/dist/core/router.d.ts.map +1 -0
  120. package/dist/core/types.d.ts +19 -0
  121. package/dist/core/types.d.ts.map +1 -0
  122. package/dist/{internals → deprecated/internals}/callProcedure.d.ts +5 -2
  123. package/dist/deprecated/internals/callProcedure.d.ts.map +1 -0
  124. package/dist/{internals → deprecated/internals}/middlewares.d.ts +21 -3
  125. package/dist/deprecated/internals/middlewares.d.ts.map +1 -0
  126. package/dist/deprecated/internals/procedure.d.ts +96 -0
  127. package/dist/deprecated/internals/procedure.d.ts.map +1 -0
  128. package/dist/deprecated/interop.d.ts +61 -0
  129. package/dist/deprecated/interop.d.ts.map +1 -0
  130. package/dist/deprecated/router.d.ts +194 -0
  131. package/dist/deprecated/router.d.ts.map +1 -0
  132. package/dist/error/TRPCError.d.ts +11 -0
  133. package/dist/error/TRPCError.d.ts.map +1 -0
  134. package/dist/error/formatter.d.ts +33 -0
  135. package/dist/error/formatter.d.ts.map +1 -0
  136. package/dist/{internals/errors.d.ts → error/utils.d.ts} +3 -2
  137. package/dist/error/utils.d.ts.map +1 -0
  138. package/dist/http/index.d.ts +1 -1
  139. package/dist/http/index.d.ts.map +1 -1
  140. package/dist/http/internals/getHTTPStatusCode.d.ts +2 -1
  141. package/dist/http/internals/getHTTPStatusCode.d.ts.map +1 -1
  142. package/dist/http/internals/types.d.ts +11 -8
  143. package/dist/http/internals/types.d.ts.map +1 -1
  144. package/dist/http/resolveHTTPResponse.d.ts +4 -4
  145. package/dist/http/resolveHTTPResponse.d.ts.map +1 -1
  146. package/dist/http/{ResponseMeta.d.ts → types.d.ts} +1 -1
  147. package/dist/http/types.d.ts.map +1 -0
  148. package/dist/index-47817162.mjs +26 -0
  149. package/dist/index-9d687d33.js +28 -0
  150. package/dist/index.d.ts +4 -5
  151. package/dist/index.d.ts.map +1 -1
  152. package/dist/index.js +78 -516
  153. package/dist/index.mjs +71 -508
  154. package/dist/internals/invert.d.ts.map +1 -1
  155. package/dist/internals/transformTRPCResponse.d.ts +5 -3
  156. package/dist/internals/transformTRPCResponse.d.ts.map +1 -1
  157. package/dist/internals/types.d.ts +23 -0
  158. package/dist/internals/types.d.ts.map +1 -0
  159. package/dist/internals.d.ts +11 -0
  160. package/dist/internals.d.ts.map +1 -0
  161. package/dist/nodeHTTPRequestHandler-2c467c02.mjs +80 -0
  162. package/dist/nodeHTTPRequestHandler-6609461a.js +82 -0
  163. package/dist/observable/index.d.ts +5 -0
  164. package/dist/observable/index.d.ts.map +1 -0
  165. package/dist/observable/index.js +157 -0
  166. package/dist/observable/index.mjs +148 -0
  167. package/dist/observable/internals/identity.d.ts +2 -0
  168. package/dist/observable/internals/identity.d.ts.map +1 -0
  169. package/dist/observable/internals/observableToPromise.d.ts +10 -0
  170. package/dist/observable/internals/observableToPromise.d.ts.map +1 -0
  171. package/dist/observable/internals/pipe.d.ts +4 -0
  172. package/dist/observable/internals/pipe.d.ts.map +1 -0
  173. package/dist/observable/observable.d.ts +5 -0
  174. package/dist/observable/observable.d.ts.map +1 -0
  175. package/dist/observable/operators/index.d.ts +4 -0
  176. package/dist/observable/operators/index.d.ts.map +1 -0
  177. package/dist/observable/operators/map.d.ts +3 -0
  178. package/dist/observable/operators/map.d.ts.map +1 -0
  179. package/dist/observable/operators/share.d.ts +6 -0
  180. package/dist/observable/operators/share.d.ts.map +1 -0
  181. package/dist/observable/operators/tap.d.ts +3 -0
  182. package/dist/observable/operators/tap.d.ts.map +1 -0
  183. package/dist/observable/types.d.ts +29 -0
  184. package/dist/observable/types.d.ts.map +1 -0
  185. package/dist/observable-b651bf11.js +84 -0
  186. package/dist/observable-e129ac9d.mjs +81 -0
  187. package/dist/resolveHTTPResponse-11d52bd0.mjs +255 -0
  188. package/dist/resolveHTTPResponse-29d4b64a.js +259 -0
  189. package/dist/router-3ee4babe.js +903 -0
  190. package/dist/router-a2a75de3.mjs +893 -0
  191. package/dist/rpc/codes.d.ts +2 -0
  192. package/dist/rpc/codes.d.ts.map +1 -1
  193. package/dist/rpc/envelopes.d.ts +64 -41
  194. package/dist/rpc/envelopes.d.ts.map +1 -1
  195. package/dist/rpc/index.d.ts.map +1 -1
  196. package/dist/rpc/index.js +1 -1
  197. package/dist/rpc/index.mjs +1 -1
  198. package/dist/rpc/internals/invert.d.ts +18 -0
  199. package/dist/rpc/internals/invert.d.ts.map +1 -0
  200. package/dist/shared/createProxy/index.d.ts +12 -0
  201. package/dist/shared/createProxy/index.d.ts.map +1 -0
  202. package/dist/shared/index.d.ts +2 -0
  203. package/dist/shared/index.d.ts.map +1 -0
  204. package/dist/shared/index.js +9 -0
  205. package/dist/shared/index.mjs +1 -0
  206. package/dist/subscription.d.ts +3 -52
  207. package/dist/subscription.d.ts.map +1 -1
  208. package/dist/subscription.js +34 -0
  209. package/dist/subscription.mjs +30 -0
  210. package/dist/transformTRPCResponse-11ac69cc.js +27 -0
  211. package/dist/transformTRPCResponse-c8138d5f.mjs +25 -0
  212. package/dist/transformer.d.ts +14 -0
  213. package/dist/transformer.d.ts.map +1 -1
  214. package/dist/types.d.ts +37 -10
  215. package/dist/types.d.ts.map +1 -1
  216. package/observable/index.d.ts +1 -0
  217. package/observable/index.js +1 -0
  218. package/package.json +53 -25
  219. package/rpc/dist/trpc-server-rpc.cjs.dev.js +1 -1
  220. package/rpc/dist/trpc-server-rpc.cjs.prod.js +1 -1
  221. package/rpc/dist/trpc-server-rpc.esm.js +1 -1
  222. package/rpc/index.js +1 -1
  223. package/shared/index.d.ts +1 -0
  224. package/shared/index.js +1 -0
  225. package/src/adapters/aws-lambda/index.ts +173 -0
  226. package/src/adapters/aws-lambda/utils.ts +92 -0
  227. package/src/adapters/express.ts +4 -4
  228. package/src/adapters/fastify/fastifyRequestHandler.ts +6 -8
  229. package/src/adapters/fastify/fastifyTRPCPlugin.ts +17 -9
  230. package/src/adapters/fetch/fetchRequestHandler.ts +61 -0
  231. package/src/adapters/fetch/index.ts +2 -0
  232. package/src/adapters/fetch/types.ts +28 -0
  233. package/src/adapters/lambda/index.ts +18 -0
  234. package/src/adapters/next.ts +10 -8
  235. package/src/adapters/node-http/internals/getPostBody.test.ts +2 -1
  236. package/src/adapters/node-http/internals/getPostBody.ts +1 -1
  237. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +7 -7
  238. package/src/adapters/node-http/types.ts +11 -9
  239. package/src/adapters/standalone.ts +12 -4
  240. package/src/adapters/ws.ts +150 -91
  241. package/src/assertNotBrowser.ts +1 -0
  242. package/src/core/index.ts +15 -0
  243. package/src/core/initTRPC.ts +94 -0
  244. package/src/core/internals/__generated__/mergeRoutersGeneric.ts +406 -0
  245. package/src/core/internals/config.ts +43 -0
  246. package/src/core/internals/getParseFn.ts +47 -0
  247. package/src/core/internals/mergeRouters.ts +45 -0
  248. package/src/core/internals/mergeWithoutOverrides.ts +19 -0
  249. package/src/core/internals/omitPrototype.ts +9 -0
  250. package/src/core/internals/prefixObjectKeys.ts +9 -0
  251. package/src/core/internals/procedureBuilder.ts +430 -0
  252. package/src/core/internals/utils.ts +64 -0
  253. package/src/core/middleware.ts +96 -0
  254. package/src/core/parser.ts +45 -0
  255. package/src/core/procedure.ts +121 -0
  256. package/src/core/router.ts +351 -0
  257. package/src/core/types.ts +58 -0
  258. package/src/{internals → deprecated/internals}/callProcedure.ts +9 -3
  259. package/src/{internals → deprecated/internals}/middlewares.ts +23 -3
  260. package/src/deprecated/internals/procedure.ts +415 -0
  261. package/src/deprecated/interop.ts +272 -0
  262. package/src/{router.ts → deprecated/router.ts} +221 -108
  263. package/src/{TRPCError.ts → error/TRPCError.ts} +6 -14
  264. package/src/error/formatter.ts +51 -0
  265. package/src/{internals/errors.ts → error/utils.ts} +24 -5
  266. package/src/http/index.ts +1 -1
  267. package/src/http/internals/getHTTPStatusCode.ts +3 -2
  268. package/src/http/internals/types.ts +11 -14
  269. package/src/http/resolveHTTPResponse.ts +34 -39
  270. package/src/http/{ResponseMeta.ts → types.ts} +0 -0
  271. package/src/index.ts +4 -7
  272. package/src/internals/transformTRPCResponse.ts +21 -16
  273. package/src/internals/types.ts +24 -0
  274. package/src/internals.ts +14 -0
  275. package/src/observable/index.ts +4 -0
  276. package/src/observable/internals/identity.ts +3 -0
  277. package/src/observable/internals/observableToPromise.ts +49 -0
  278. package/src/observable/internals/pipe.ts +23 -0
  279. package/src/observable/observable.test.ts +101 -0
  280. package/src/observable/observable.ts +78 -0
  281. package/src/observable/operators/index.ts +3 -0
  282. package/src/observable/operators/map.test.ts +92 -0
  283. package/src/observable/operators/map.ts +25 -0
  284. package/src/observable/operators/share.test.ts +60 -0
  285. package/src/observable/operators/share.ts +67 -0
  286. package/src/observable/operators/tap.ts +26 -0
  287. package/src/observable/types.ts +69 -0
  288. package/src/rpc/codes.ts +2 -1
  289. package/src/rpc/envelopes.ts +94 -68
  290. package/src/rpc/internals/invert.ts +27 -0
  291. package/src/shared/createProxy/index.ts +38 -0
  292. package/src/shared/index.ts +1 -0
  293. package/src/subscription.ts +7 -125
  294. package/src/transformer.ts +28 -0
  295. package/src/types.ts +45 -15
  296. package/subscription/index.d.ts +1 -0
  297. package/subscription/index.js +1 -0
  298. package/adapters/fastify/package.json +0 -4
  299. package/dist/TRPCError.d.ts +0 -19
  300. package/dist/TRPCError.d.ts.map +0 -1
  301. package/dist/adapters/express.ts.js +0 -1
  302. package/dist/adapters/next.ts.js +0 -1
  303. package/dist/adapters/node-http/index.ts.js +0 -1
  304. package/dist/adapters/standalone.ts.js +0 -1
  305. package/dist/adapters/ws.ts.js +0 -1
  306. package/dist/codes-7a3d4f65.mjs +0 -56
  307. package/dist/codes-7f46544e.js +0 -60
  308. package/dist/deprecated/LegacyRouter.d.ts +0 -3
  309. package/dist/deprecated/LegacyRouter.d.ts.map +0 -1
  310. package/dist/deprecated/createHttpServer.d.ts +0 -19
  311. package/dist/deprecated/createHttpServer.d.ts.map +0 -1
  312. package/dist/deprecated/requestHandler.d.ts +0 -15
  313. package/dist/deprecated/requestHandler.d.ts.map +0 -1
  314. package/dist/http/ResponseMeta.d.ts.map +0 -1
  315. package/dist/index.ts.js +0 -1
  316. package/dist/internals/BaseHandlerOptions.d.ts +0 -13
  317. package/dist/internals/BaseHandlerOptions.d.ts.map +0 -1
  318. package/dist/internals/OnErrorFunction.d.ts +0 -11
  319. package/dist/internals/OnErrorFunction.d.ts.map +0 -1
  320. package/dist/internals/callProcedure.d.ts.map +0 -1
  321. package/dist/internals/errors.d.ts.map +0 -1
  322. package/dist/internals/middlewares.d.ts.map +0 -1
  323. package/dist/internals/procedure.d.ts +0 -74
  324. package/dist/internals/procedure.d.ts.map +0 -1
  325. package/dist/internals/wrapCallSafe.d.ts +0 -16
  326. package/dist/internals/wrapCallSafe.d.ts.map +0 -1
  327. package/dist/nodeHTTPRequestHandler-10e6d2f9.mjs +0 -394
  328. package/dist/nodeHTTPRequestHandler-d7c307d3.js +0 -399
  329. package/dist/router.d.ts +0 -176
  330. package/dist/router.d.ts.map +0 -1
  331. package/dist/rpc/index.ts.js +0 -1
  332. package/dist/subscription-5b7e1eba.js +0 -136
  333. package/dist/subscription-e1d42e69.mjs +0 -133
  334. package/dist/transformTRPCResponse-76e0c91e.mjs +0 -109
  335. package/dist/transformTRPCResponse-bd24f548.js +0 -114
  336. package/dist/ws/index.d.ts +0 -7
  337. package/dist/ws/index.d.ts.map +0 -1
  338. package/dist/ws/index.js +0 -15
  339. package/dist/ws/index.mjs +0 -11
  340. package/dist/ws/index.ts.js +0 -1
  341. package/src/deprecated/LegacyRouter.ts +0 -3
  342. package/src/deprecated/createHttpServer.ts +0 -29
  343. package/src/deprecated/requestHandler.ts +0 -26
  344. package/src/internals/BaseHandlerOptions.ts +0 -13
  345. package/src/internals/OnErrorFunction.ts +0 -11
  346. package/src/internals/procedure.ts +0 -283
  347. package/src/internals/wrapCallSafe.ts +0 -19
  348. package/src/ws/index.ts +0 -8
  349. package/ws/dist/trpc-server-ws.cjs.d.ts +0 -1
  350. package/ws/dist/trpc-server-ws.cjs.dev.js +0 -15
  351. package/ws/dist/trpc-server-ws.cjs.js +0 -7
  352. package/ws/dist/trpc-server-ws.cjs.prod.js +0 -15
  353. package/ws/dist/trpc-server-ws.esm.js +0 -11
  354. package/ws/index.d.ts +0 -1
  355. package/ws/index.js +0 -1
@@ -2,345 +2,312 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var transformTRPCResponse = require('../transformTRPCResponse-bd24f548.js');
6
- var subscription = require('../subscription-5b7e1eba.js');
7
- require('events');
5
+ var TRPCError = require('../TRPCError-bcb38a84.js');
6
+ var transformTRPCResponse = require('../transformTRPCResponse-11ac69cc.js');
7
+ var observable = require('../observable-b651bf11.js');
8
8
 
9
- /* istanbul ignore next */
10
- function assertIsObject(obj) {
11
- if (typeof obj !== 'object' || Array.isArray(obj) || !obj) {
12
- throw new Error('Not an object');
13
- }
9
+ /* istanbul ignore next */ function assertIsObject(obj) {
10
+ if (typeof obj !== 'object' || Array.isArray(obj) || !obj) {
11
+ throw new Error('Not an object');
12
+ }
14
13
  }
15
- /* istanbul ignore next */
16
-
17
-
18
- function assertIsProcedureType(obj) {
19
- if (obj !== 'query' && obj !== 'subscription' && obj !== 'mutation') {
20
- throw new Error('Invalid procedure type');
21
- }
14
+ /* istanbul ignore next */ function assertIsProcedureType(obj) {
15
+ if (obj !== 'query' && obj !== 'subscription' && obj !== 'mutation') {
16
+ throw new Error('Invalid procedure type');
17
+ }
22
18
  }
23
- /* istanbul ignore next */
24
-
25
-
26
- function assertIsRequestId(obj) {
27
- if (obj !== null && typeof obj === 'number' && isNaN(obj) && typeof obj !== 'string') {
28
- throw new Error('Invalid request id');
29
- }
19
+ /* istanbul ignore next */ function assertIsRequestId(obj) {
20
+ if (obj !== null && typeof obj === 'number' && isNaN(obj) && typeof obj !== 'string') {
21
+ throw new Error('Invalid request id');
22
+ }
30
23
  }
31
- /* istanbul ignore next */
32
-
33
-
34
- function assertIsString(obj) {
35
- if (typeof obj !== 'string') {
36
- throw new Error('Invalid string');
37
- }
24
+ /* istanbul ignore next */ function assertIsString(obj) {
25
+ if (typeof obj !== 'string') {
26
+ throw new Error('Invalid string');
27
+ }
38
28
  }
39
- /* istanbul ignore next */
40
-
41
-
42
- function assertIsJSONRPC2OrUndefined(obj) {
43
- if (typeof obj !== 'undefined' && obj !== '2.0') {
44
- throw new Error('Must be JSONRPC 2.0');
45
- }
29
+ /* istanbul ignore next */ function assertIsJSONRPC2OrUndefined(obj) {
30
+ if (typeof obj !== 'undefined' && obj !== '2.0') {
31
+ throw new Error('Must be JSONRPC 2.0');
32
+ }
46
33
  }
47
-
48
34
  function parseMessage(obj, transformer) {
49
- assertIsObject(obj);
50
- const {
51
- method,
52
- params,
53
- id,
54
- jsonrpc
55
- } = obj;
56
- assertIsRequestId(id);
57
- assertIsJSONRPC2OrUndefined(jsonrpc);
58
-
59
- if (method === 'subscription.stop') {
35
+ assertIsObject(obj);
36
+ const { method , params , id , jsonrpc } = obj;
37
+ assertIsRequestId(id);
38
+ assertIsJSONRPC2OrUndefined(jsonrpc);
39
+ if (method === 'subscription.stop') {
40
+ return {
41
+ id,
42
+ jsonrpc,
43
+ method
44
+ };
45
+ }
46
+ assertIsProcedureType(method);
47
+ assertIsObject(params);
48
+ const { input: rawInput , path } = params;
49
+ assertIsString(path);
50
+ const input = transformer.input.deserialize(rawInput);
60
51
  return {
61
- id,
62
- method,
63
- params: undefined
52
+ id,
53
+ jsonrpc,
54
+ method,
55
+ params: {
56
+ input,
57
+ path
58
+ }
64
59
  };
65
- }
66
-
67
- assertIsProcedureType(method);
68
- assertIsObject(params);
69
- const {
70
- input: rawInput,
71
- path
72
- } = params;
73
- assertIsString(path);
74
- const input = transformer.input.deserialize(rawInput);
75
- return {
76
- jsonrpc,
77
- id,
78
- method,
79
- params: {
80
- input,
81
- path
82
- }
83
- };
84
60
  }
85
- /**
86
- * Web socket server handler
87
- */
88
-
89
-
90
61
  function applyWSSHandler(opts) {
91
- const {
92
- wss,
93
- createContext,
94
- router
95
- } = opts;
96
- const {
97
- transformer
98
- } = router._def;
99
- wss.on('connection', (client, req) => {
100
- const clientSubscriptions = new Map();
101
-
102
- function respond(untransformedJSON) {
103
- client.send(JSON.stringify(transformTRPCResponse.transformTRPCResponse(router, untransformedJSON)));
104
- }
105
-
106
- const ctxPromise = createContext === null || createContext === void 0 ? void 0 : createContext({
107
- req,
108
- res: client
109
- });
110
- let ctx = undefined;
111
-
112
- async function handleRequest(msg) {
113
- const {
114
- id
115
- } = msg;
116
- /* istanbul ignore next */
117
-
118
- if (id === null) {
119
- throw new transformTRPCResponse.TRPCError({
120
- code: 'BAD_REQUEST',
121
- message: '`id` is required'
122
- });
123
- }
124
-
125
- if (msg.method === 'subscription.stop') {
126
- const sub = clientSubscriptions.get(id);
127
-
128
- if (sub) {
129
- sub.destroy();
62
+ const { wss , createContext , router } = opts;
63
+ const { transformer } = router._def;
64
+ wss.on('connection', async (client, req)=>{
65
+ const clientSubscriptions = new Map();
66
+ function respond(untransformedJSON) {
67
+ client.send(JSON.stringify(transformTRPCResponse.transformTRPCResponse(router, untransformedJSON)));
130
68
  }
131
-
132
- clientSubscriptions.delete(id);
133
- return;
134
- }
135
-
136
- const {
137
- path,
138
- input
139
- } = msg.params;
140
- const type = msg.method;
141
-
142
- try {
143
- await ctxPromise; // asserts context has been set
144
-
145
- const result = await transformTRPCResponse.callProcedure({
146
- path,
147
- input,
148
- type,
149
- router,
150
- ctx
69
+ function stopSubscription(subscription, { id , jsonrpc }) {
70
+ subscription.unsubscribe();
71
+ respond({
72
+ id,
73
+ jsonrpc,
74
+ result: {
75
+ type: 'stopped'
76
+ }
77
+ });
78
+ }
79
+ const ctxPromise = createContext?.({
80
+ req,
81
+ res: client
151
82
  });
152
-
153
- if (!(result instanceof subscription.Subscription)) {
154
- respond({
155
- id,
156
- result: {
157
- type: 'data',
158
- data: result
83
+ let ctx = undefined;
84
+ async function handleRequest(msg) {
85
+ const { id , jsonrpc } = msg;
86
+ /* istanbul ignore next */ if (id === null) {
87
+ throw new TRPCError.TRPCError({
88
+ code: 'BAD_REQUEST',
89
+ message: '`id` is required'
90
+ });
91
+ }
92
+ if (msg.method === 'subscription.stop') {
93
+ const sub = clientSubscriptions.get(id);
94
+ if (sub) {
95
+ stopSubscription(sub, {
96
+ id,
97
+ jsonrpc
98
+ });
99
+ }
100
+ clientSubscriptions.delete(id);
101
+ return;
102
+ }
103
+ const { path , input } = msg.params;
104
+ const type = msg.method;
105
+ try {
106
+ await ctxPromise; // asserts context has been set
107
+ const caller = router.createCaller(ctx);
108
+ const result = await caller[type](path, input);
109
+ if (type === 'subscription') {
110
+ if (!observable.isObservable(result)) {
111
+ throw new TRPCError.TRPCError({
112
+ message: `Subscription ${path} did not return an observable`,
113
+ code: 'INTERNAL_SERVER_ERROR'
114
+ });
115
+ }
116
+ } else {
117
+ // send the value as data if the method is not a subscription
118
+ respond({
119
+ id,
120
+ jsonrpc,
121
+ result: {
122
+ type: 'data',
123
+ data: result
124
+ }
125
+ });
126
+ return;
127
+ }
128
+ const observable$1 = result;
129
+ const sub1 = observable$1.subscribe({
130
+ next (data) {
131
+ respond({
132
+ id,
133
+ jsonrpc,
134
+ result: {
135
+ type: 'data',
136
+ data
137
+ }
138
+ });
139
+ },
140
+ error (err) {
141
+ const error = TRPCError.getErrorFromUnknown(err);
142
+ opts.onError?.({
143
+ error,
144
+ path,
145
+ type,
146
+ ctx,
147
+ req,
148
+ input
149
+ });
150
+ respond({
151
+ id,
152
+ jsonrpc,
153
+ error: router.getErrorShape({
154
+ error,
155
+ type,
156
+ path,
157
+ input,
158
+ ctx
159
+ })
160
+ });
161
+ },
162
+ complete () {
163
+ respond({
164
+ id,
165
+ jsonrpc,
166
+ result: {
167
+ type: 'stopped'
168
+ }
169
+ });
170
+ }
171
+ });
172
+ /* istanbul ignore next */ if (client.readyState !== client.OPEN) {
173
+ // if the client got disconnected whilst initializing the subscription
174
+ // no need to send stopped message if the client is disconnected
175
+ sub1.unsubscribe();
176
+ return;
177
+ }
178
+ /* istanbul ignore next */ if (clientSubscriptions.has(id)) {
179
+ // duplicate request ids for client
180
+ stopSubscription(sub1, {
181
+ id,
182
+ jsonrpc
183
+ });
184
+ throw new TRPCError.TRPCError({
185
+ message: `Duplicate id ${id}`,
186
+ code: 'BAD_REQUEST'
187
+ });
188
+ }
189
+ clientSubscriptions.set(id, sub1);
190
+ respond({
191
+ id,
192
+ jsonrpc,
193
+ result: {
194
+ type: 'started'
195
+ }
196
+ });
197
+ } catch (cause) /* istanbul ignore next */ {
198
+ // procedure threw an error
199
+ const error = TRPCError.getErrorFromUnknown(cause);
200
+ opts.onError?.({
201
+ error,
202
+ path,
203
+ type,
204
+ ctx,
205
+ req,
206
+ input
207
+ });
208
+ respond({
209
+ id,
210
+ jsonrpc,
211
+ error: router.getErrorShape({
212
+ error,
213
+ type,
214
+ path,
215
+ input,
216
+ ctx
217
+ })
218
+ });
159
219
  }
160
- });
161
- return;
162
- }
163
-
164
- const sub = result;
165
- /* istanbul ignore next */
166
-
167
- if (client.readyState !== client.OPEN) {
168
- // if the client got disconnected whilst initializing the subscription
169
- sub.destroy();
170
- return;
171
- }
172
- /* istanbul ignore next */
173
-
174
-
175
- if (clientSubscriptions.has(id)) {
176
- // duplicate request ids for client
177
- sub.destroy();
178
- throw new transformTRPCResponse.TRPCError({
179
- message: `Duplicate id ${id}`,
180
- code: 'BAD_REQUEST'
181
- });
182
220
  }
183
-
184
- clientSubscriptions.set(id, sub);
185
- sub.on('data', data => {
186
- respond({
187
- id,
188
- result: {
189
- type: 'data',
190
- data
221
+ client.on('message', async (message)=>{
222
+ try {
223
+ const msgJSON = JSON.parse(message.toString());
224
+ const msgs = Array.isArray(msgJSON) ? msgJSON : [
225
+ msgJSON
226
+ ];
227
+ const promises = msgs.map((raw)=>parseMessage(raw, transformer)).map(handleRequest);
228
+ await Promise.all(promises);
229
+ } catch (cause) {
230
+ const error = new TRPCError.TRPCError({
231
+ code: 'PARSE_ERROR',
232
+ cause: TRPCError.getCauseFromUnknown(cause)
233
+ });
234
+ respond({
235
+ id: null,
236
+ error: router.getErrorShape({
237
+ error,
238
+ type: 'unknown',
239
+ path: undefined,
240
+ input: undefined,
241
+ ctx: undefined
242
+ })
243
+ });
191
244
  }
192
- });
193
245
  });
194
- sub.on('error', _error => {
195
- var _opts$onError;
196
-
197
- const error = transformTRPCResponse.getErrorFromUnknown(_error);
198
- const json = {
199
- id,
200
- error: router.getErrorShape({
201
- error,
202
- type,
203
- path,
204
- input,
205
- ctx
206
- })
207
- };
208
- (_opts$onError = opts.onError) === null || _opts$onError === void 0 ? void 0 : _opts$onError.call(opts, {
209
- error,
210
- path,
211
- type,
212
- ctx,
213
- req,
214
- input
215
- });
216
- respond(json);
246
+ // WebSocket errors should be handled, as otherwise unhandled exceptions will crash Node.js.
247
+ // This line was introduced after the following error brought down production systems:
248
+ // "RangeError: Invalid WebSocket frame: RSV2 and RSV3 must be clear"
249
+ // Here is the relevant discussion: https://github.com/websockets/ws/issues/1354#issuecomment-774616962
250
+ client.on('error', (cause)=>{
251
+ opts.onError?.({
252
+ ctx,
253
+ error: TRPCError.getErrorFromUnknown(cause),
254
+ input: undefined,
255
+ path: undefined,
256
+ type: 'unknown',
257
+ req
258
+ });
217
259
  });
218
- sub.on('destroy', () => {
219
- respond({
220
- id,
221
- result: {
222
- type: 'stopped'
260
+ client.once('close', ()=>{
261
+ for (const sub of clientSubscriptions.values()){
262
+ sub.unsubscribe();
223
263
  }
224
- });
225
- });
226
- respond({
227
- id,
228
- result: {
229
- type: 'started'
230
- }
231
- });
232
- await sub.start();
233
- } catch (cause)
234
- /* istanbul ignore next */
235
- {
236
- var _opts$onError2;
237
-
238
- // procedure threw an error
239
- const error = transformTRPCResponse.getErrorFromUnknown(cause);
240
- const json = router.getErrorShape({
241
- error,
242
- type,
243
- path,
244
- input,
245
- ctx
246
- });
247
- (_opts$onError2 = opts.onError) === null || _opts$onError2 === void 0 ? void 0 : _opts$onError2.call(opts, {
248
- error,
249
- path,
250
- type,
251
- ctx,
252
- req,
253
- input
254
- });
255
- respond({
256
- id,
257
- error: json
258
- });
259
- }
260
- }
261
-
262
- client.on('message', async message => {
263
- try {
264
- const msgJSON = JSON.parse(message.toString());
265
- const msgs = Array.isArray(msgJSON) ? msgJSON : [msgJSON];
266
- msgs.map(raw => parseMessage(raw, transformer)).map(handleRequest);
267
- } catch (cause) {
268
- const error = new transformTRPCResponse.TRPCError({
269
- code: 'PARSE_ERROR',
270
- cause
271
- });
272
- respond({
273
- id: null,
274
- error: router.getErrorShape({
275
- error,
276
- type: 'unknown',
277
- path: undefined,
278
- input: undefined,
279
- ctx: undefined
280
- })
264
+ clientSubscriptions.clear();
281
265
  });
282
- }
283
- });
284
- client.once('close', () => {
285
- for (const sub of clientSubscriptions.values()) {
286
- sub.destroy();
287
- }
288
-
289
- clientSubscriptions.clear();
266
+ async function createContextAsync() {
267
+ try {
268
+ ctx = await ctxPromise;
269
+ } catch (cause) {
270
+ const error = TRPCError.getErrorFromUnknown(cause);
271
+ opts.onError?.({
272
+ error,
273
+ path: undefined,
274
+ type: 'unknown',
275
+ ctx,
276
+ req,
277
+ input: undefined
278
+ });
279
+ respond({
280
+ id: null,
281
+ error: router.getErrorShape({
282
+ error,
283
+ type: 'unknown',
284
+ path: undefined,
285
+ input: undefined,
286
+ ctx
287
+ })
288
+ });
289
+ // close in next tick
290
+ (global.setImmediate ?? global.setTimeout)(()=>{
291
+ client.close();
292
+ });
293
+ }
294
+ }
295
+ await createContextAsync();
290
296
  });
291
-
292
- async function createContextAsync() {
293
- try {
294
- ctx = await ctxPromise;
295
- } catch (cause) {
296
- var _opts$onError3, _global$setImmediate;
297
-
298
- const error = transformTRPCResponse.getErrorFromUnknown(cause);
299
- const json = {
300
- id: null,
301
- error: router.getErrorShape({
302
- error,
303
- type: 'unknown',
304
- path: undefined,
305
- input: undefined,
306
- ctx
307
- })
308
- };
309
- (_opts$onError3 = opts.onError) === null || _opts$onError3 === void 0 ? void 0 : _opts$onError3.call(opts, {
310
- error,
311
- path: undefined,
312
- type: 'unknown',
313
- ctx,
314
- req,
315
- input: undefined
316
- });
317
- respond(json); // close in next tick
318
-
319
- ((_global$setImmediate = global.setImmediate) !== null && _global$setImmediate !== void 0 ? _global$setImmediate : global.setTimeout)(() => {
320
- client.close();
321
- });
322
- }
323
- }
324
-
325
- createContextAsync();
326
- });
327
- return {
328
- broadcastReconnectNotification: () => {
329
- const response = {
330
- id: null,
331
- method: 'reconnect'
332
- };
333
- const data = JSON.stringify(response);
334
-
335
- for (const client of wss.clients) {
336
- if (client.readyState === 1
337
- /* ws.OPEN */
338
- ) {
339
- client.send(data);
297
+ return {
298
+ broadcastReconnectNotification: ()=>{
299
+ const response = {
300
+ id: null,
301
+ method: 'reconnect'
302
+ };
303
+ const data = JSON.stringify(response);
304
+ for (const client of wss.clients){
305
+ if (client.readyState === 1 /* ws.OPEN */ ) {
306
+ client.send(data);
307
+ }
308
+ }
340
309
  }
341
- }
342
- }
343
- };
310
+ };
344
311
  }
345
312
 
346
313
  exports.applyWSSHandler = applyWSSHandler;