@trpc/server 11.0.0-alpha-tmp-subscription-connection-state.488 → 11.0.0-alpha-tmp-12-06-react.665

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 (276) hide show
  1. package/dist/@trpc/server/http.d.ts +1 -1
  2. package/dist/@trpc/server/http.d.ts.map +1 -1
  3. package/dist/@trpc/server/index.d.ts +5 -1
  4. package/dist/@trpc/server/index.d.ts.map +1 -1
  5. package/dist/adapters/aws-lambda/getPlanner.d.ts.map +1 -1
  6. package/dist/adapters/aws-lambda/getPlanner.js +2 -2
  7. package/dist/adapters/aws-lambda/getPlanner.mjs +2 -2
  8. package/dist/adapters/aws-lambda/index.d.ts.map +1 -1
  9. package/dist/adapters/aws-lambda/index.js +2 -0
  10. package/dist/adapters/aws-lambda/index.mjs +2 -0
  11. package/dist/adapters/express.d.ts.map +1 -1
  12. package/dist/adapters/express.js +27 -7
  13. package/dist/adapters/express.mjs +27 -7
  14. package/dist/adapters/fastify/fastifyRequestHandler.js +3 -1
  15. package/dist/adapters/fastify/fastifyRequestHandler.mjs +3 -1
  16. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -1
  17. package/dist/adapters/fastify/fastifyTRPCPlugin.js +9 -2
  18. package/dist/adapters/fastify/fastifyTRPCPlugin.mjs +10 -3
  19. package/dist/adapters/fetch/fetchRequestHandler.js +9 -8
  20. package/dist/adapters/fetch/fetchRequestHandler.mjs +9 -8
  21. package/dist/adapters/next-app-dir/nextAppDirCaller.d.ts.map +1 -1
  22. package/dist/adapters/next-app-dir/nextAppDirCaller.js +10 -5
  23. package/dist/adapters/next-app-dir/nextAppDirCaller.mjs +10 -5
  24. package/dist/adapters/next-app-dir/notFound.js +2 -0
  25. package/dist/adapters/next-app-dir/notFound.mjs +2 -0
  26. package/dist/adapters/next-app-dir/redirect.js +16 -1
  27. package/dist/adapters/next-app-dir/redirect.mjs +16 -1
  28. package/dist/adapters/next-app-dir/rethrowNextErrors.d.ts.map +1 -1
  29. package/dist/adapters/next-app-dir/rethrowNextErrors.js +4 -3
  30. package/dist/adapters/next-app-dir/rethrowNextErrors.mjs +4 -3
  31. package/dist/adapters/next.d.ts.map +1 -1
  32. package/dist/adapters/next.js +23 -30
  33. package/dist/adapters/next.mjs +24 -31
  34. package/dist/adapters/node-http/incomingMessageToRequest.d.ts +2 -1
  35. package/dist/adapters/node-http/incomingMessageToRequest.d.ts.map +1 -1
  36. package/dist/adapters/node-http/incomingMessageToRequest.js +83 -40
  37. package/dist/adapters/node-http/incomingMessageToRequest.mjs +83 -41
  38. package/dist/adapters/node-http/index.js +2 -0
  39. package/dist/adapters/node-http/index.mjs +2 -2
  40. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +7 -0
  41. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
  42. package/dist/adapters/node-http/nodeHTTPRequestHandler.js +70 -58
  43. package/dist/adapters/node-http/nodeHTTPRequestHandler.mjs +70 -59
  44. package/dist/adapters/node-http/writeResponse.d.ts +18 -0
  45. package/dist/adapters/node-http/writeResponse.d.ts.map +1 -0
  46. package/dist/adapters/node-http/writeResponse.js +82 -0
  47. package/dist/adapters/node-http/writeResponse.mjs +79 -0
  48. package/dist/adapters/standalone.d.ts +5 -2
  49. package/dist/adapters/standalone.d.ts.map +1 -1
  50. package/dist/adapters/standalone.js +25 -13
  51. package/dist/adapters/standalone.mjs +26 -14
  52. package/dist/adapters/ws.d.ts +14 -4
  53. package/dist/adapters/ws.d.ts.map +1 -1
  54. package/dist/adapters/ws.js +236 -90
  55. package/dist/adapters/ws.mjs +237 -92
  56. package/dist/bundle-analysis.json +411 -294
  57. package/dist/http.js +2 -4
  58. package/dist/http.mjs +2 -2
  59. package/dist/index.js +6 -2
  60. package/dist/index.mjs +3 -1
  61. package/dist/node_modules/.pnpm/@rollup_plugin-typescript@12.1.1_rollup@4.27.4_tslib@2.8.1_typescript@5.7.2/node_modules/tslib/tslib.es6.js +73 -0
  62. package/dist/observable/behaviorSubject.d.ts +15 -0
  63. package/dist/observable/behaviorSubject.d.ts.map +1 -0
  64. package/dist/observable/behaviorSubject.js +40 -0
  65. package/dist/observable/behaviorSubject.mjs +38 -0
  66. package/dist/observable/index.d.ts +3 -3
  67. package/dist/observable/index.d.ts.map +1 -1
  68. package/dist/observable/index.js +5 -0
  69. package/dist/observable/index.mjs +3 -2
  70. package/dist/observable/observable.d.ts +2 -1
  71. package/dist/observable/observable.d.ts.map +1 -1
  72. package/dist/observable/observable.js +31 -8
  73. package/dist/observable/observable.mjs +31 -8
  74. package/dist/observable/operators.d.ts +2 -0
  75. package/dist/observable/operators.d.ts.map +1 -1
  76. package/dist/observable/operators.js +35 -0
  77. package/dist/observable/operators.mjs +34 -1
  78. package/dist/rpc.js +2 -0
  79. package/dist/rpc.mjs +2 -0
  80. package/dist/shared.js +2 -0
  81. package/dist/shared.mjs +2 -0
  82. package/dist/unstable-core-do-not-import/clientish/inference.d.ts.map +1 -1
  83. package/dist/unstable-core-do-not-import/clientish/inferrable.d.ts.map +1 -1
  84. package/dist/unstable-core-do-not-import/clientish/serialize.d.ts +2 -2
  85. package/dist/unstable-core-do-not-import/clientish/serialize.d.ts.map +1 -1
  86. package/dist/unstable-core-do-not-import/createProxy.js +1 -1
  87. package/dist/unstable-core-do-not-import/createProxy.mjs +1 -1
  88. package/dist/unstable-core-do-not-import/error/TRPCError.d.ts +1 -1
  89. package/dist/unstable-core-do-not-import/error/TRPCError.js +16 -1
  90. package/dist/unstable-core-do-not-import/error/TRPCError.mjs +16 -1
  91. package/dist/unstable-core-do-not-import/error/formatter.js +1 -1
  92. package/dist/unstable-core-do-not-import/error/formatter.mjs +1 -1
  93. package/dist/unstable-core-do-not-import/error/getErrorShape.js +2 -2
  94. package/dist/unstable-core-do-not-import/error/getErrorShape.mjs +2 -2
  95. package/dist/unstable-core-do-not-import/http/contentType.js +3 -3
  96. package/dist/unstable-core-do-not-import/http/contentType.mjs +3 -3
  97. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.d.ts +6 -1
  98. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.d.ts.map +1 -1
  99. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.js +28 -0
  100. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.mjs +25 -1
  101. package/dist/unstable-core-do-not-import/http/isAbortError.d.ts +4 -0
  102. package/dist/unstable-core-do-not-import/http/isAbortError.d.ts.map +1 -0
  103. package/dist/unstable-core-do-not-import/http/isAbortError.js +9 -0
  104. package/dist/unstable-core-do-not-import/http/isAbortError.mjs +7 -0
  105. package/dist/unstable-core-do-not-import/http/resolveResponse.d.ts.map +1 -1
  106. package/dist/unstable-core-do-not-import/http/resolveResponse.js +187 -92
  107. package/dist/unstable-core-do-not-import/http/resolveResponse.mjs +189 -94
  108. package/dist/unstable-core-do-not-import/http/types.d.ts +1 -1
  109. package/dist/unstable-core-do-not-import/initTRPC.d.ts +11 -11
  110. package/dist/unstable-core-do-not-import/initTRPC.d.ts.map +1 -1
  111. package/dist/unstable-core-do-not-import/initTRPC.js +11 -11
  112. package/dist/unstable-core-do-not-import/initTRPC.mjs +11 -11
  113. package/dist/unstable-core-do-not-import/middleware.d.ts +2 -1
  114. package/dist/unstable-core-do-not-import/middleware.d.ts.map +1 -1
  115. package/dist/unstable-core-do-not-import/middleware.js +2 -2
  116. package/dist/unstable-core-do-not-import/middleware.mjs +2 -2
  117. package/dist/unstable-core-do-not-import/parser.d.ts +5 -1
  118. package/dist/unstable-core-do-not-import/parser.d.ts.map +1 -1
  119. package/dist/unstable-core-do-not-import/parser.js +4 -0
  120. package/dist/unstable-core-do-not-import/parser.mjs +4 -0
  121. package/dist/unstable-core-do-not-import/procedure.d.ts +8 -2
  122. package/dist/unstable-core-do-not-import/procedure.d.ts.map +1 -1
  123. package/dist/unstable-core-do-not-import/procedureBuilder.d.ts +32 -13
  124. package/dist/unstable-core-do-not-import/procedureBuilder.d.ts.map +1 -1
  125. package/dist/unstable-core-do-not-import/procedureBuilder.js +33 -39
  126. package/dist/unstable-core-do-not-import/procedureBuilder.mjs +33 -39
  127. package/dist/unstable-core-do-not-import/rootConfig.d.ts +17 -17
  128. package/dist/unstable-core-do-not-import/rootConfig.d.ts.map +1 -1
  129. package/dist/unstable-core-do-not-import/router.d.ts +4 -3
  130. package/dist/unstable-core-do-not-import/router.d.ts.map +1 -1
  131. package/dist/unstable-core-do-not-import/router.js +6 -5
  132. package/dist/unstable-core-do-not-import/router.mjs +6 -5
  133. package/dist/unstable-core-do-not-import/rpc/codes.d.ts +2 -9
  134. package/dist/unstable-core-do-not-import/rpc/codes.d.ts.map +1 -1
  135. package/dist/unstable-core-do-not-import/rpc/envelopes.d.ts +11 -6
  136. package/dist/unstable-core-do-not-import/rpc/envelopes.d.ts.map +1 -1
  137. package/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.d.ts.map +1 -1
  138. package/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.js +7 -3
  139. package/dist/unstable-core-do-not-import/rpc/parseTRPCMessage.mjs +7 -3
  140. package/dist/unstable-core-do-not-import/stream/jsonl.d.ts +31 -16
  141. package/dist/unstable-core-do-not-import/stream/jsonl.d.ts.map +1 -1
  142. package/dist/unstable-core-do-not-import/stream/jsonl.js +440 -318
  143. package/dist/unstable-core-do-not-import/stream/jsonl.mjs +440 -318
  144. package/dist/unstable-core-do-not-import/stream/sse.d.ts +63 -41
  145. package/dist/unstable-core-do-not-import/stream/sse.d.ts.map +1 -1
  146. package/dist/unstable-core-do-not-import/stream/sse.js +300 -119
  147. package/dist/unstable-core-do-not-import/stream/sse.mjs +302 -119
  148. package/dist/unstable-core-do-not-import/stream/sse.types.d.ts +31 -0
  149. package/dist/unstable-core-do-not-import/stream/sse.types.d.ts.map +1 -0
  150. package/dist/unstable-core-do-not-import/stream/tracked.d.ts +31 -0
  151. package/dist/unstable-core-do-not-import/stream/tracked.d.ts.map +1 -0
  152. package/dist/unstable-core-do-not-import/stream/tracked.js +29 -0
  153. package/dist/unstable-core-do-not-import/stream/tracked.mjs +25 -0
  154. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.d.ts +17 -0
  155. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.d.ts.map +1 -0
  156. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.js +171 -0
  157. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.mjs +167 -0
  158. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.d.ts +0 -11
  159. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.d.ts.map +1 -1
  160. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.js +0 -29
  161. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.mjs +1 -29
  162. package/dist/unstable-core-do-not-import/stream/utils/disposable.d.ts +17 -0
  163. package/dist/unstable-core-do-not-import/stream/utils/disposable.d.ts.map +1 -0
  164. package/dist/unstable-core-do-not-import/stream/utils/disposable.js +44 -0
  165. package/dist/unstable-core-do-not-import/stream/utils/disposable.mjs +41 -0
  166. package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.d.ts +8 -0
  167. package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.d.ts.map +1 -0
  168. package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.js +25 -0
  169. package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.mjs +23 -0
  170. package/dist/unstable-core-do-not-import/stream/utils/timerResource.d.ts +5 -0
  171. package/dist/unstable-core-do-not-import/stream/utils/timerResource.d.ts.map +1 -0
  172. package/dist/unstable-core-do-not-import/stream/utils/timerResource.js +26 -0
  173. package/dist/unstable-core-do-not-import/stream/utils/timerResource.mjs +23 -0
  174. package/dist/unstable-core-do-not-import/stream/utils/withPing.d.ts +7 -0
  175. package/dist/unstable-core-do-not-import/stream/utils/withPing.d.ts.map +1 -0
  176. package/dist/unstable-core-do-not-import/stream/utils/withPing.js +130 -0
  177. package/dist/unstable-core-do-not-import/stream/utils/withPing.mjs +127 -0
  178. package/dist/unstable-core-do-not-import/transformer.d.ts +2 -4
  179. package/dist/unstable-core-do-not-import/transformer.d.ts.map +1 -1
  180. package/dist/unstable-core-do-not-import/transformer.js +1 -1
  181. package/dist/unstable-core-do-not-import/transformer.mjs +1 -1
  182. package/dist/unstable-core-do-not-import/types.d.ts +26 -3
  183. package/dist/unstable-core-do-not-import/types.d.ts.map +1 -1
  184. package/dist/unstable-core-do-not-import/utils.d.ts +15 -0
  185. package/dist/unstable-core-do-not-import/utils.d.ts.map +1 -1
  186. package/dist/unstable-core-do-not-import/utils.js +49 -1
  187. package/dist/unstable-core-do-not-import/utils.mjs +45 -2
  188. package/dist/unstable-core-do-not-import.d.ts +4 -2
  189. package/dist/unstable-core-do-not-import.d.ts.map +1 -1
  190. package/dist/unstable-core-do-not-import.js +18 -9
  191. package/dist/unstable-core-do-not-import.mjs +7 -7
  192. package/dist/vendor/unpromise/index.d.ts +3 -0
  193. package/dist/vendor/unpromise/index.d.ts.map +1 -0
  194. package/dist/vendor/unpromise/types.d.ts +28 -0
  195. package/dist/vendor/unpromise/types.d.ts.map +1 -0
  196. package/dist/vendor/unpromise/unpromise.d.ts +121 -0
  197. package/dist/vendor/unpromise/unpromise.d.ts.map +1 -0
  198. package/dist/vendor/unpromise/unpromise.js +292 -0
  199. package/dist/vendor/unpromise/unpromise.mjs +289 -0
  200. package/package.json +20 -17
  201. package/src/@trpc/server/http.ts +0 -2
  202. package/src/@trpc/server/index.ts +6 -0
  203. package/src/adapters/aws-lambda/getPlanner.ts +2 -2
  204. package/src/adapters/aws-lambda/index.ts +5 -6
  205. package/src/adapters/express.ts +21 -9
  206. package/src/adapters/fastify/fastifyRequestHandler.ts +1 -1
  207. package/src/adapters/fastify/fastifyTRPCPlugin.ts +16 -5
  208. package/src/adapters/fetch/fetchRequestHandler.ts +2 -2
  209. package/src/adapters/next-app-dir/nextAppDirCaller.ts +3 -0
  210. package/src/adapters/next-app-dir/rethrowNextErrors.ts +3 -2
  211. package/src/adapters/next.ts +29 -34
  212. package/src/adapters/node-http/incomingMessageToRequest.ts +110 -40
  213. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +85 -63
  214. package/src/adapters/node-http/writeResponse.ts +94 -0
  215. package/src/adapters/standalone.ts +35 -18
  216. package/src/adapters/ws.ts +152 -62
  217. package/src/observable/behaviorSubject.ts +55 -0
  218. package/src/observable/index.ts +22 -3
  219. package/src/observable/observable.ts +32 -14
  220. package/src/observable/operators.ts +47 -0
  221. package/src/unstable-core-do-not-import/clientish/inference.ts +4 -4
  222. package/src/unstable-core-do-not-import/clientish/inferrable.ts +6 -6
  223. package/src/unstable-core-do-not-import/clientish/serialize.ts +5 -5
  224. package/src/unstable-core-do-not-import/http/getHTTPStatusCode.ts +37 -4
  225. package/src/unstable-core-do-not-import/http/isAbortError.ts +7 -0
  226. package/src/unstable-core-do-not-import/http/resolveResponse.ts +192 -85
  227. package/src/unstable-core-do-not-import/http/types.ts +1 -1
  228. package/src/unstable-core-do-not-import/initTRPC.ts +14 -20
  229. package/src/unstable-core-do-not-import/middleware.ts +5 -4
  230. package/src/unstable-core-do-not-import/parser.ts +17 -6
  231. package/src/unstable-core-do-not-import/procedure.ts +17 -2
  232. package/src/unstable-core-do-not-import/procedureBuilder.ts +138 -123
  233. package/src/unstable-core-do-not-import/rootConfig.ts +20 -17
  234. package/src/unstable-core-do-not-import/router.ts +15 -16
  235. package/src/unstable-core-do-not-import/rpc/codes.ts +2 -10
  236. package/src/unstable-core-do-not-import/rpc/envelopes.ts +18 -7
  237. package/src/unstable-core-do-not-import/rpc/parseTRPCMessage.ts +5 -1
  238. package/src/unstable-core-do-not-import/stream/jsonl.ts +293 -294
  239. package/src/unstable-core-do-not-import/stream/sse.ts +349 -191
  240. package/src/unstable-core-do-not-import/stream/sse.types.ts +44 -0
  241. package/src/unstable-core-do-not-import/stream/tracked.ts +49 -0
  242. package/src/unstable-core-do-not-import/stream/utils/asyncIterable.ts +89 -0
  243. package/src/unstable-core-do-not-import/stream/utils/createDeferred.ts +0 -36
  244. package/src/unstable-core-do-not-import/stream/utils/disposable.ts +52 -0
  245. package/src/unstable-core-do-not-import/stream/utils/readableStreamFrom.ts +28 -0
  246. package/src/unstable-core-do-not-import/stream/utils/timerResource.ts +29 -0
  247. package/src/unstable-core-do-not-import/stream/utils/withPing.ts +47 -0
  248. package/src/unstable-core-do-not-import/transformer.ts +1 -1
  249. package/src/unstable-core-do-not-import/types.ts +35 -10
  250. package/src/unstable-core-do-not-import/utils.ts +56 -1
  251. package/src/unstable-core-do-not-import.ts +4 -2
  252. package/src/vendor/unpromise/ATTRIBUTION.txt +1 -0
  253. package/src/vendor/unpromise/LICENSE +20 -0
  254. package/src/vendor/unpromise/index.ts +7 -0
  255. package/src/vendor/unpromise/types.ts +55 -0
  256. package/src/vendor/unpromise/unpromise.ts +380 -0
  257. package/dist/unstable-core-do-not-import/http/batchStreamFormatter.d.ts +0 -24
  258. package/dist/unstable-core-do-not-import/http/batchStreamFormatter.d.ts.map +0 -1
  259. package/dist/unstable-core-do-not-import/http/batchStreamFormatter.js +0 -32
  260. package/dist/unstable-core-do-not-import/http/batchStreamFormatter.mjs +0 -30
  261. package/dist/unstable-core-do-not-import/http/toURL.d.ts +0 -2
  262. package/dist/unstable-core-do-not-import/http/toURL.d.ts.map +0 -1
  263. package/dist/unstable-core-do-not-import/http/toURL.js +0 -8
  264. package/dist/unstable-core-do-not-import/http/toURL.mjs +0 -6
  265. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.d.ts +0 -10
  266. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.d.ts.map +0 -1
  267. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.js +0 -31
  268. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.mjs +0 -29
  269. package/dist/unstable-core-do-not-import/stream/utils/createServer.d.ts +0 -7
  270. package/dist/unstable-core-do-not-import/stream/utils/createServer.d.ts.map +0 -1
  271. package/dist/unstable-core-do-not-import/types.js +0 -11
  272. package/dist/unstable-core-do-not-import/types.mjs +0 -9
  273. package/src/unstable-core-do-not-import/http/batchStreamFormatter.ts +0 -29
  274. package/src/unstable-core-do-not-import/http/toURL.ts +0 -7
  275. package/src/unstable-core-do-not-import/stream/utils/createReadableStream.ts +0 -31
  276. package/src/unstable-core-do-not-import/stream/utils/createServer.ts +0 -44
@@ -1 +1 @@
1
- {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/adapters/ws.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EACV,SAAS,EACT,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AASzB,OAAO,EAAS,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAatE,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAQlE;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,8BAA8B,CACpE,eAAe,EACf,EAAE,CAAC,SAAS,CACb,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,SAAS,IAAI,CAC1D,IAAI,EAAE,yBAAyB,KAC5B,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AAE/C,MAAM,MAAM,0BAA0B,CAAC,OAAO,SAAS,SAAS,IAC9D,kBAAkB,CAAC,OAAO,EAAE,eAAe,CAAC,GAC1C,qBAAqB,CACnB,kBAAkB,CAAC,OAAO,CAAC,EAC3B,kBAAkB,CAAC,OAAO,CAAC,CAC5B,CAAC;AAEN;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,SAAS,IACrD,0BAA0B,CAAC,OAAO,CAAC,GAAG;IACpC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE;QACV;;;WAGG;QACH,OAAO,EAAE,OAAO,CAAC;QACjB;;;WAGG;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB;;;WAGG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,CAAC;AAGJ,wBAAgB,sBAAsB,CAAC,OAAO,SAAS,SAAS,EAC9D,IAAI,EAAE,0BAA0B,CAAC,OAAO,CAAC,YAKnB,EAAE,CAAC,SAAS,OAAO,eAAe,mBAqUzD;AAiCD,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;;EA+BjC"}
1
+ {"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/adapters/ws.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EACV,SAAS,EACT,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,iBAAiB,CAAC;AASzB,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAa/D,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,gCAAgC,CAAC;AAIxC,OAAO,EAAa,KAAK,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAQ7E;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,8BAA8B,CACpE,eAAe,EACf,EAAE,CAAC,SAAS,CACb,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,SAAS,IAAI,CAC1D,IAAI,EAAE,yBAAyB,KAC5B,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AAE/C,MAAM,MAAM,0BAA0B,CAAC,OAAO,SAAS,SAAS,IAC9D,kBAAkB,CAAC,OAAO,EAAE,eAAe,CAAC,GAC1C,qBAAqB,CACnB,kBAAkB,CAAC,OAAO,CAAC,EAC3B,kBAAkB,CAAC,OAAO,CAAC,CAC5B,CAAC;AAEN;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,SAAS,IACrD,0BAA0B,CAAC,OAAO,CAAC,GAAG;IACpC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE;QACV;;;WAGG;QACH,OAAO,EAAE,OAAO,CAAC;QACjB;;;WAGG;QACH,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB;;;WAGG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC,CAAC;AAGJ,wBAAgB,sBAAsB,CAAC,OAAO,SAAS,SAAS,EAC9D,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC,YAKV,EAAE,CAAC,SAAS,OAAO,eAAe,mBAkYzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,EAAE,CAAC,SAAS,EACpB,MAAM,SAAS,EACf,UAAU,SAAQ,QAiCnB;AAED,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;;EAwCjC"}
@@ -6,22 +6,95 @@ var utils = require('../unstable-core-do-not-import/utils.js');
6
6
  var parseConnectionParams = require('../unstable-core-do-not-import/http/parseConnectionParams.js');
7
7
  var parseTRPCMessage = require('../unstable-core-do-not-import/rpc/parseTRPCMessage.js');
8
8
  var observable = require('../observable/observable.js');
9
+ var unpromise = require('../vendor/unpromise/unpromise.js');
10
+ var asyncIterable = require('../unstable-core-do-not-import/stream/utils/asyncIterable.js');
11
+ require('../unstable-core-do-not-import/stream/utils/disposable.js');
12
+ var tracked = require('../unstable-core-do-not-import/stream/tracked.js');
9
13
  var transformer = require('../unstable-core-do-not-import/transformer.js');
10
- var toURL = require('../unstable-core-do-not-import/http/toURL.js');
11
14
  require('../unstable-core-do-not-import/rootConfig.js');
12
15
  var router = require('../unstable-core-do-not-import/router.js');
16
+ var incomingMessageToRequest = require('./node-http/incomingMessageToRequest.js');
13
17
 
18
+ function _ts_add_disposable_resource(env, value, async) {
19
+ if (value !== null && value !== void 0) {
20
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
21
+ var dispose, inner;
22
+ {
23
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
24
+ dispose = value[Symbol.asyncDispose];
25
+ }
26
+ if (dispose === void 0) {
27
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
28
+ dispose = value[Symbol.dispose];
29
+ inner = dispose;
30
+ }
31
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
32
+ if (inner) dispose = function() {
33
+ try {
34
+ inner.call(this);
35
+ } catch (e) {
36
+ return Promise.reject(e);
37
+ }
38
+ };
39
+ env.stack.push({
40
+ value: value,
41
+ dispose: dispose,
42
+ async: async
43
+ });
44
+ } else {
45
+ env.stack.push({
46
+ async: true
47
+ });
48
+ }
49
+ return value;
50
+ }
51
+ function _ts_dispose_resources(env) {
52
+ var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
53
+ var e = new Error(message);
54
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
55
+ };
56
+ return (_ts_dispose_resources = function _ts_dispose_resources(env) {
57
+ function fail(e) {
58
+ env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
59
+ env.hasError = true;
60
+ }
61
+ var r, s = 0;
62
+ function next() {
63
+ while(r = env.stack.pop()){
64
+ try {
65
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
66
+ if (r.dispose) {
67
+ var result = r.dispose.call(r.value);
68
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) {
69
+ fail(e);
70
+ return next();
71
+ });
72
+ } else s |= 1;
73
+ } catch (e) {
74
+ fail(e);
75
+ }
76
+ }
77
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
78
+ if (env.hasError) throw env.error;
79
+ }
80
+ return next();
81
+ })(env);
82
+ }
14
83
  /**
15
84
  * Importing ws causes a build error
16
- * @link https://github.com/trpc/trpc/pull/5279
85
+ * @see https://github.com/trpc/trpc/pull/5279
17
86
  */ const WEBSOCKET_OPEN = 1; /* ws.WebSocket.OPEN */
18
87
  const unsetContextPromiseSymbol = Symbol('unsetContextPromise');
19
88
  function getWSConnectionHandler(opts) {
20
- const { createContext , router: router$1 } = opts;
21
- const { transformer: transformer$1 } = router$1._def._config;
89
+ const { createContext, router: router$1 } = opts;
90
+ const { transformer: transformer$1 } = router$1._def._config;
22
91
  return async (client, req)=>{
23
92
  const clientSubscriptions = new Map();
24
93
  const abortController = new AbortController();
94
+ if (opts.keepAlive?.enabled) {
95
+ const { pingMs, pongWaitMs } = opts.keepAlive;
96
+ handleKeepAlive(client, pingMs, pongWaitMs);
97
+ }
25
98
  function respond(untransformedJSON) {
26
99
  client.send(JSON.stringify(transformer.transformTRPCResponse(router$1._def._config, untransformedJSON)));
27
100
  }
@@ -74,9 +147,9 @@ function getWSConnectionHandler(opts) {
74
147
  *
75
148
  * - the context promise will be created immediately on connection if no connectionParams are expected
76
149
  * - if connection params are expected, they will be created once received
77
- */ let ctxPromise = toURL.toURL(req.url ?? '').searchParams.get('connectionParams') === '1' ? unsetContextPromiseSymbol : createCtxPromise(()=>null);
150
+ */ let ctxPromise = incomingMessageToRequest.createURL(req).searchParams.get('connectionParams') === '1' ? unsetContextPromiseSymbol : createCtxPromise(()=>null);
78
151
  async function handleRequest(msg) {
79
- const { id , jsonrpc } = msg;
152
+ const { id, jsonrpc } = msg;
80
153
  /* istanbul ignore next -- @preserve */ if (id === null) {
81
154
  throw new TRPCError.TRPCError({
82
155
  code: 'BAD_REQUEST',
@@ -87,18 +160,40 @@ function getWSConnectionHandler(opts) {
87
160
  clientSubscriptions.get(id)?.abort();
88
161
  return;
89
162
  }
90
- const { path , input } = msg.params;
163
+ const { path, lastEventId } = msg.params;
164
+ let { input } = msg.params;
91
165
  const type = msg.method;
92
166
  try {
167
+ if (lastEventId !== undefined) {
168
+ if (utils.isObject(input)) {
169
+ input = {
170
+ ...input,
171
+ lastEventId: lastEventId
172
+ };
173
+ } else {
174
+ input ?? (input = {
175
+ lastEventId: lastEventId
176
+ });
177
+ }
178
+ }
93
179
  await ctxPromise; // asserts context has been set
180
+ const abortController = new AbortController();
94
181
  const result = await router.callProcedure({
95
182
  procedures: router$1._def.procedures,
96
183
  path,
97
184
  getRawInput: async ()=>input,
98
185
  ctx,
99
- type
186
+ type,
187
+ signal: abortController.signal
100
188
  });
189
+ const isIterableResult = utils.isAsyncIterable(result) || observable.isObservable(result);
101
190
  if (type !== 'subscription') {
191
+ if (isIterableResult) {
192
+ throw new TRPCError.TRPCError({
193
+ code: 'UNSUPPORTED_MEDIA_TYPE',
194
+ message: `Cannot return an async iterable or observable from a ${type} procedure with WebSockets`
195
+ });
196
+ }
102
197
  // send the value as data if the method is not a subscription
103
198
  respond({
104
199
  id,
@@ -110,7 +205,7 @@ function getWSConnectionHandler(opts) {
110
205
  });
111
206
  return;
112
207
  }
113
- if (!observable.isObservable(result) && !utils.isAsyncIterable(result)) {
208
+ if (!isIterableResult) {
114
209
  throw new TRPCError.TRPCError({
115
210
  message: `Subscription ${path} did not return an observable or a AsyncGenerator`,
116
211
  code: 'INTERNAL_SERVER_ERROR'
@@ -128,67 +223,95 @@ function getWSConnectionHandler(opts) {
128
223
  code: 'BAD_REQUEST'
129
224
  });
130
225
  }
131
- const iterable = observable.isObservable(result) ? observable.observableToAsyncIterable(result) : result;
132
- const iterator = iterable[Symbol.asyncIterator]();
133
- const abortController = new AbortController();
134
- const abortPromise = new Promise((resolve)=>{
135
- abortController.signal.onabort = ()=>resolve('abort');
136
- });
226
+ const iterable = observable.isObservable(result) ? observable.observableToAsyncIterable(result, abortController.signal) : result;
137
227
  utils.run(async ()=>{
138
- while(true){
139
- const next = await Promise.race([
140
- iterator.next().catch(TRPCError.getTRPCErrorFromUnknown),
141
- abortPromise
142
- ]);
143
- if (next === 'abort') {
144
- await iterator.return?.();
145
- break;
146
- }
147
- if (next instanceof Error) {
148
- const error = TRPCError.getTRPCErrorFromUnknown(next);
149
- opts.onError?.({
150
- error,
151
- path,
152
- type,
153
- ctx,
154
- req,
155
- input
156
- });
228
+ const env = {
229
+ stack: [],
230
+ error: void 0,
231
+ hasError: false
232
+ };
233
+ try {
234
+ const iterator = _ts_add_disposable_resource(env, asyncIterable.iteratorResource(iterable), true);
235
+ ;
236
+ const abortPromise = new Promise((resolve)=>{
237
+ abortController.signal.onabort = ()=>resolve('abort');
238
+ });
239
+ // We need those declarations outside the loop for garbage collection reasons. If they
240
+ // were declared inside, they would not be freed until the next value is present.
241
+ let next;
242
+ let result;
243
+ while(true){
244
+ next = await unpromise.Unpromise.race([
245
+ iterator.next().catch(TRPCError.getTRPCErrorFromUnknown),
246
+ abortPromise
247
+ ]);
248
+ if (next === 'abort') {
249
+ await iterator.return?.();
250
+ break;
251
+ }
252
+ if (next instanceof Error) {
253
+ const error = TRPCError.getTRPCErrorFromUnknown(next);
254
+ opts.onError?.({
255
+ error,
256
+ path,
257
+ type,
258
+ ctx,
259
+ req,
260
+ input
261
+ });
262
+ respond({
263
+ id,
264
+ jsonrpc,
265
+ error: getErrorShape.getErrorShape({
266
+ config: router$1._def._config,
267
+ error,
268
+ type,
269
+ path,
270
+ input,
271
+ ctx
272
+ })
273
+ });
274
+ break;
275
+ }
276
+ if (next.done) {
277
+ break;
278
+ }
279
+ result = {
280
+ type: 'data',
281
+ data: next.value
282
+ };
283
+ if (tracked.isTrackedEnvelope(next.value)) {
284
+ const [id, data] = next.value;
285
+ result.id = id;
286
+ result.data = {
287
+ id,
288
+ data
289
+ };
290
+ }
157
291
  respond({
158
292
  id,
159
293
  jsonrpc,
160
- error: getErrorShape.getErrorShape({
161
- config: router$1._def._config,
162
- error,
163
- type,
164
- path,
165
- input,
166
- ctx
167
- })
294
+ result
168
295
  });
169
- break;
170
- }
171
- if (next.done) {
172
- break;
296
+ // free up references for garbage collection
297
+ next = null;
298
+ result = null;
173
299
  }
174
300
  respond({
175
301
  id,
176
302
  jsonrpc,
177
303
  result: {
178
- type: 'data',
179
- data: next.value
304
+ type: 'stopped'
180
305
  }
181
306
  });
307
+ clientSubscriptions.delete(id);
308
+ } catch (e) {
309
+ env.error = e;
310
+ env.hasError = true;
311
+ } finally{
312
+ const result = _ts_dispose_resources(env);
313
+ if (result) await result;
182
314
  }
183
- await iterator.return?.();
184
- respond({
185
- id,
186
- jsonrpc,
187
- result: {
188
- type: 'stopped'
189
- }
190
- });
191
- clientSubscriptions.delete(id);
192
315
  }).catch((cause)=>{
193
316
  const error = TRPCError.getTRPCErrorFromUnknown(cause);
194
317
  opts.onError?.({
@@ -246,13 +369,24 @@ function getWSConnectionHandler(opts) {
246
369
  });
247
370
  }
248
371
  }
249
- client.on('message', async (message)=>{
372
+ client.on('message', async (rawData)=>{
373
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
374
+ const msgStr = rawData.toString();
375
+ if (msgStr === 'PONG') {
376
+ return;
377
+ }
378
+ if (msgStr === 'PING') {
379
+ if (!opts.dangerouslyDisablePong) {
380
+ client.send('PONG');
381
+ }
382
+ return;
383
+ }
250
384
  if (ctxPromise === unsetContextPromiseSymbol) {
251
385
  // If the ctxPromise wasn't created immediately, we're expecting the first message to be a TRPCConnectionParamsMessage
252
386
  ctxPromise = createCtxPromise(()=>{
253
387
  let msg;
254
388
  try {
255
- msg = JSON.parse(message.toString());
389
+ msg = JSON.parse(msgStr);
256
390
  if (!utils.isObject(msg)) {
257
391
  throw new Error('Message was not an object');
258
392
  }
@@ -269,7 +403,7 @@ function getWSConnectionHandler(opts) {
269
403
  return;
270
404
  }
271
405
  try {
272
- const msgJSON = JSON.parse(message.toString());
406
+ const msgJSON = JSON.parse(msgStr);
273
407
  const msgs = Array.isArray(msgJSON) ? msgJSON : [
274
408
  msgJSON
275
409
  ];
@@ -315,48 +449,59 @@ function getWSConnectionHandler(opts) {
315
449
  abortController.abort();
316
450
  });
317
451
  if (ctxPromise !== unsetContextPromiseSymbol) {
318
- // prevent unhandled promise rejection errors
319
- await ctxPromise.catch(()=>null);
452
+ await ctxPromise;
320
453
  }
321
454
  };
322
455
  }
323
456
  /**
324
457
  * Handle WebSocket keep-alive messages
325
458
  */ function handleKeepAlive(client, pingMs = 30000, pongWaitMs = 5000) {
326
- let heartbeatTimeout;
327
- const heartbeatInterval = setInterval(()=>{
328
- if (client.readyState !== WEBSOCKET_OPEN) {
329
- return;
330
- }
331
- // First we send a ping message and wait for a pong
332
- client.ping();
333
- // We set a timeout to close the connection if the pong is not received
334
- heartbeatTimeout = setTimeout(()=>{
335
- client.terminate();
336
- clearInterval(heartbeatInterval);
337
- }, pongWaitMs);
338
- }, pingMs).unref();
339
- // When we receive a pong message, we clear the timeout
340
- client.on('pong', ()=>{
341
- heartbeatTimeout && clearTimeout(heartbeatTimeout);
342
- });
343
- // If the connection is closed, we clear the interval
459
+ let timeout = undefined;
460
+ let ping = undefined;
461
+ const schedulePing = ()=>{
462
+ const scheduleTimeout = ()=>{
463
+ timeout = setTimeout(()=>{
464
+ client.terminate();
465
+ }, pongWaitMs);
466
+ };
467
+ ping = setTimeout(()=>{
468
+ client.send('PING');
469
+ scheduleTimeout();
470
+ }, pingMs);
471
+ };
472
+ const onMessage = ()=>{
473
+ clearTimeout(ping);
474
+ clearTimeout(timeout);
475
+ schedulePing();
476
+ };
477
+ client.on('message', onMessage);
344
478
  client.on('close', ()=>{
345
- clearInterval(heartbeatInterval);
479
+ clearTimeout(ping);
480
+ clearTimeout(timeout);
346
481
  });
482
+ schedulePing();
347
483
  }
348
484
  function applyWSSHandler(opts) {
349
- const { wss , prefix , keepAlive } = opts;
350
485
  const onConnection = getWSConnectionHandler(opts);
351
- wss.on('connection', async (client, req)=>{
352
- if (prefix && !req.url?.startsWith(prefix)) {
486
+ opts.wss.on('connection', (client, req)=>{
487
+ if (opts.prefix && !req.url?.startsWith(opts.prefix)) {
353
488
  return;
354
489
  }
355
- await onConnection(client, req);
356
- if (keepAlive?.enabled) {
357
- const { pingMs , pongWaitMs } = keepAlive;
358
- handleKeepAlive(client, pingMs, pongWaitMs);
359
- }
490
+ onConnection(client, req).catch((cause)=>{
491
+ opts.onError?.({
492
+ error: new TRPCError.TRPCError({
493
+ code: 'INTERNAL_SERVER_ERROR',
494
+ cause,
495
+ message: 'Failed to handle WebSocket connection'
496
+ }),
497
+ req: req,
498
+ path: undefined,
499
+ type: 'unknown',
500
+ ctx: undefined,
501
+ input: undefined
502
+ });
503
+ client.close();
504
+ });
360
505
  });
361
506
  return {
362
507
  broadcastReconnectNotification: ()=>{
@@ -365,7 +510,7 @@ function applyWSSHandler(opts) {
365
510
  method: 'reconnect'
366
511
  };
367
512
  const data = JSON.stringify(response);
368
- for (const client of wss.clients){
513
+ for (const client of opts.wss.clients){
369
514
  if (client.readyState === WEBSOCKET_OPEN) {
370
515
  client.send(data);
371
516
  }
@@ -376,3 +521,4 @@ function applyWSSHandler(opts) {
376
521
 
377
522
  exports.applyWSSHandler = applyWSSHandler;
378
523
  exports.getWSConnectionHandler = getWSConnectionHandler;
524
+ exports.handleKeepAlive = handleKeepAlive;