@trpc/server 11.18.1-canary.6 → 11.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/dist/adapters/aws-lambda/index.cjs +16 -26
  2. package/dist/adapters/aws-lambda/index.d.cts +6 -16
  3. package/dist/adapters/aws-lambda/index.d.cts.map +1 -1
  4. package/dist/adapters/aws-lambda/index.d.mts +6 -16
  5. package/dist/adapters/aws-lambda/index.d.mts.map +1 -1
  6. package/dist/adapters/aws-lambda/index.mjs +13 -23
  7. package/dist/adapters/aws-lambda/index.mjs.map +1 -1
  8. package/dist/adapters/express.cjs +7 -16
  9. package/dist/adapters/express.d.cts +4 -11
  10. package/dist/adapters/express.d.cts.map +1 -1
  11. package/dist/adapters/express.d.mts +4 -11
  12. package/dist/adapters/express.d.mts.map +1 -1
  13. package/dist/adapters/express.mjs +6 -15
  14. package/dist/adapters/express.mjs.map +1 -1
  15. package/dist/adapters/fastify/index.cjs +11 -24
  16. package/dist/adapters/fastify/index.d.cts +7 -14
  17. package/dist/adapters/fastify/index.d.cts.map +1 -1
  18. package/dist/adapters/fastify/index.d.mts +7 -14
  19. package/dist/adapters/fastify/index.d.mts.map +1 -1
  20. package/dist/adapters/fastify/index.mjs +10 -23
  21. package/dist/adapters/fastify/index.mjs.map +1 -1
  22. package/dist/adapters/fetch/index.cjs +7 -12
  23. package/dist/adapters/fetch/index.d.cts +7 -15
  24. package/dist/adapters/fetch/index.d.cts.map +1 -1
  25. package/dist/adapters/fetch/index.d.mts +7 -15
  26. package/dist/adapters/fetch/index.d.mts.map +1 -1
  27. package/dist/adapters/fetch/index.mjs +6 -11
  28. package/dist/adapters/fetch/index.mjs.map +1 -1
  29. package/dist/adapters/next-app-dir.cjs +13 -3145
  30. package/dist/adapters/next-app-dir.d.cts +3 -12
  31. package/dist/adapters/next-app-dir.d.cts.map +1 -1
  32. package/dist/adapters/next-app-dir.d.mts +3 -12
  33. package/dist/adapters/next-app-dir.d.mts.map +1 -1
  34. package/dist/adapters/next-app-dir.mjs +31 -3165
  35. package/dist/adapters/next-app-dir.mjs.map +1 -1
  36. package/dist/adapters/next.cjs +8 -16
  37. package/dist/adapters/next.d.cts +5 -15
  38. package/dist/adapters/next.d.cts.map +1 -1
  39. package/dist/adapters/next.d.mts +5 -15
  40. package/dist/adapters/next.d.mts.map +1 -1
  41. package/dist/adapters/next.mjs +7 -15
  42. package/dist/adapters/next.mjs.map +1 -1
  43. package/dist/adapters/node-http/index.cjs +3 -12
  44. package/dist/adapters/node-http/index.d.cts +1 -4
  45. package/dist/adapters/node-http/index.d.mts +1 -4
  46. package/dist/adapters/node-http/index.mjs +2 -12
  47. package/dist/adapters/standalone.cjs +21 -21
  48. package/dist/adapters/standalone.d.cts +9 -14
  49. package/dist/adapters/standalone.d.cts.map +1 -1
  50. package/dist/adapters/standalone.d.mts +9 -14
  51. package/dist/adapters/standalone.d.mts.map +1 -1
  52. package/dist/adapters/standalone.mjs +17 -19
  53. package/dist/adapters/standalone.mjs.map +1 -1
  54. package/dist/adapters/ws.cjs +3 -15
  55. package/dist/adapters/ws.d.cts +12 -17
  56. package/dist/adapters/ws.d.cts.map +1 -1
  57. package/dist/adapters/ws.d.mts +12 -17
  58. package/dist/adapters/ws.d.mts.map +1 -1
  59. package/dist/adapters/ws.mjs +2 -15
  60. package/dist/{codes-BfZsPdy-.cjs → codes-C6ZIq69A.cjs} +78 -74
  61. package/dist/{codes-DagpWZLc.mjs → codes-D5Ya6_Bi.mjs} +10 -4
  62. package/dist/codes-D5Ya6_Bi.mjs.map +1 -0
  63. package/dist/{contentTypeParsers-iAFF_pJG.cjs → contentTypeParsers-DUzXRHT1.cjs} +6 -8
  64. package/dist/{contentTypeParsers-SN4WL9ze.mjs → contentTypeParsers-KFMy_fwz.mjs} +3 -3
  65. package/dist/contentTypeParsers-KFMy_fwz.mjs.map +1 -0
  66. package/dist/getErrorShape-B0JBUs-i.mjs +209 -0
  67. package/dist/getErrorShape-B0JBUs-i.mjs.map +1 -0
  68. package/dist/getErrorShape-DeIapApr.cjs +272 -0
  69. package/dist/http.cjs +5 -9
  70. package/dist/http.d.cts +2 -3
  71. package/dist/http.d.mts +2 -3
  72. package/dist/http.mjs +4 -9
  73. package/dist/{index.d-DhhodpGb.d.mts → index-BHatz_Pu.d.cts} +3 -8
  74. package/dist/index-BHatz_Pu.d.cts.map +1 -0
  75. package/dist/{index.d-BiUz7kM_.d.cts → index-BMimGNYb.d.cts} +2 -5
  76. package/dist/index-BMimGNYb.d.cts.map +1 -0
  77. package/dist/{index.d-D4qZxQJh.d.mts → index-BMimGNYb.d.mts} +2 -5
  78. package/dist/index-BMimGNYb.d.mts.map +1 -0
  79. package/dist/{index.d-fBAdSX6g.d.cts → index-_jAhoJQ7.d.mts} +3 -8
  80. package/dist/index-_jAhoJQ7.d.mts.map +1 -0
  81. package/dist/index.cjs +5 -6
  82. package/dist/index.d.cts +10 -4
  83. package/dist/index.d.cts.map +1 -0
  84. package/dist/index.d.mts +10 -4
  85. package/dist/index.d.mts.map +1 -0
  86. package/dist/index.mjs +4 -6
  87. package/dist/{initTRPC-BRf4imah.mjs → initTRPC-B259os3T.mjs} +85 -83
  88. package/dist/initTRPC-B259os3T.mjs.map +1 -0
  89. package/dist/{initTRPC-_cqIfGlH.cjs → initTRPC-B7UdX-c3.cjs} +133 -132
  90. package/dist/{node-http-n0vBVXjb.mjs → node-http-BUlb5EdB.mjs} +29 -26
  91. package/dist/node-http-BUlb5EdB.mjs.map +1 -0
  92. package/dist/{node-http-CSXWJkwC.cjs → node-http-CikCqjt6.cjs} +48 -46
  93. package/dist/observable/index.cjs +4 -4
  94. package/dist/observable/index.d.cts +2 -2
  95. package/dist/observable/index.d.mts +2 -2
  96. package/dist/observable/index.mjs +3 -4
  97. package/dist/{observable-B1Nk6r1H.cjs → observable-CIyO2eSm.cjs} +28 -32
  98. package/dist/{observable-CUiPknO-.mjs → observable-CSprJVOf.mjs} +6 -10
  99. package/dist/observable-CSprJVOf.mjs.map +1 -0
  100. package/dist/{observable-BVzLuBs6.cjs → observable-D8mqXlHG.cjs} +34 -39
  101. package/dist/{observable-UMO3vUa_.mjs → observable-DwUFSuKv.mjs} +10 -12
  102. package/dist/observable-DwUFSuKv.mjs.map +1 -0
  103. package/dist/{parseTRPCMessage-7Ltmq-Fb.cjs → parseTRPCMessage-BxAIUx49.cjs} +14 -18
  104. package/dist/{parseTRPCMessage-CTow-umk.mjs → parseTRPCMessage-MJWDg1vX.mjs} +6 -9
  105. package/dist/parseTRPCMessage-MJWDg1vX.mjs.map +1 -0
  106. package/dist/{resolveResponse-Djb7nJqb.cjs → resolveResponse-DLpzHrPG.cjs} +505 -583
  107. package/dist/{resolveResponse-C7cFScHo.mjs → resolveResponse-JtMyT9TQ.mjs} +412 -489
  108. package/dist/resolveResponse-JtMyT9TQ.mjs.map +1 -0
  109. package/dist/rolldown-runtime-VH7oDXx4.cjs +28 -0
  110. package/dist/rpc.cjs +4 -4
  111. package/dist/rpc.d.cts +2 -3
  112. package/dist/rpc.d.mts +2 -3
  113. package/dist/rpc.mjs +3 -4
  114. package/dist/shared.cjs +3 -4
  115. package/dist/shared.d.cts +2 -4
  116. package/dist/shared.d.mts +2 -4
  117. package/dist/shared.mjs +2 -4
  118. package/dist/{tracked-DFxm8M2u.cjs → tracked-BQJb0ANk.cjs} +125 -142
  119. package/dist/{tracked-DWInO6EQ.mjs → tracked-D4jU_Hb3.mjs} +42 -58
  120. package/dist/tracked-D4jU_Hb3.mjs.map +1 -0
  121. package/dist/{unstable-core-do-not-import.d-BdVSvUCr.d.mts → unstable-core-do-not-import-B9ZnrQAU.d.cts} +37 -69
  122. package/dist/unstable-core-do-not-import-B9ZnrQAU.d.cts.map +1 -0
  123. package/dist/{unstable-core-do-not-import.d-Dh9CT5RO.d.cts → unstable-core-do-not-import-BK_OKrtM.d.mts} +37 -69
  124. package/dist/unstable-core-do-not-import-BK_OKrtM.d.mts.map +1 -0
  125. package/dist/unstable-core-do-not-import.cjs +33 -12
  126. package/dist/unstable-core-do-not-import.d.cts +2 -3
  127. package/dist/unstable-core-do-not-import.d.mts +2 -3
  128. package/dist/unstable-core-do-not-import.mjs +32 -10
  129. package/dist/unstable-core-do-not-import.mjs.map +1 -0
  130. package/dist/{ws-Cq69JO4d.cjs → ws-BMSSVFiW.cjs} +59 -65
  131. package/dist/{ws-DyeWX-EY.mjs → ws-C7ZOJJeA.mjs} +41 -46
  132. package/dist/ws-C7ZOJJeA.mjs.map +1 -0
  133. package/package.json +13 -13
  134. package/src/adapters/aws-lambda/getPlanner.ts +1 -2
  135. package/src/adapters/aws-lambda/index.ts +1 -2
  136. package/src/adapters/ws.ts +3 -2
  137. package/src/adapters/wsEncoder.ts +1 -1
  138. package/src/observable/behaviorSubject.ts +4 -2
  139. package/src/observable/types.ts +4 -2
  140. package/src/unstable-core-do-not-import/clientish/inferrable.ts +1 -4
  141. package/src/unstable-core-do-not-import/http/contentType.ts +1 -1
  142. package/src/unstable-core-do-not-import/http/resolveResponse.ts +4 -9
  143. package/src/unstable-core-do-not-import/http/types.ts +8 -4
  144. package/src/unstable-core-do-not-import/initTRPC.ts +10 -10
  145. package/src/unstable-core-do-not-import/middleware.ts +3 -2
  146. package/src/unstable-core-do-not-import/procedure.ts +11 -11
  147. package/src/unstable-core-do-not-import/router.ts +4 -5
  148. package/src/unstable-core-do-not-import/rpc/envelopes.ts +33 -34
  149. package/src/unstable-core-do-not-import/rpc/parseTRPCMessage.ts +2 -3
  150. package/src/unstable-core-do-not-import/stream/jsonl.ts +1 -2
  151. package/src/unstable-core-do-not-import/stream/sse.ts +18 -12
  152. package/src/unstable-core-do-not-import/stream/utils/mergeAsyncIterables.ts +5 -2
  153. package/src/unstable-core-do-not-import/stream/utils/withPing.ts +1 -3
  154. package/src/unstable-core-do-not-import/transformer.ts +1 -4
  155. package/src/unstable-core-do-not-import/types.ts +9 -10
  156. package/dist/codes-DagpWZLc.mjs.map +0 -1
  157. package/dist/contentTypeParsers-SN4WL9ze.mjs.map +0 -1
  158. package/dist/getErrorShape-BPSzUA7W.mjs +0 -269
  159. package/dist/getErrorShape-BPSzUA7W.mjs.map +0 -1
  160. package/dist/getErrorShape-Ed1OwssN.cjs +0 -345
  161. package/dist/http-CWyjOa1l.mjs +0 -0
  162. package/dist/http-DXy3XyhL.cjs +0 -0
  163. package/dist/index.d-BiUz7kM_.d.cts.map +0 -1
  164. package/dist/index.d-CvZXeEyR.d.cts +0 -11
  165. package/dist/index.d-CvZXeEyR.d.cts.map +0 -1
  166. package/dist/index.d-D4qZxQJh.d.mts.map +0 -1
  167. package/dist/index.d-DhhodpGb.d.mts.map +0 -1
  168. package/dist/index.d-fBAdSX6g.d.cts.map +0 -1
  169. package/dist/index.d-vq_QHko2.d.mts +0 -11
  170. package/dist/index.d-vq_QHko2.d.mts.map +0 -1
  171. package/dist/initTRPC-BRf4imah.mjs.map +0 -1
  172. package/dist/node-http-n0vBVXjb.mjs.map +0 -1
  173. package/dist/observable-CUiPknO-.mjs.map +0 -1
  174. package/dist/observable-UMO3vUa_.mjs.map +0 -1
  175. package/dist/parseTRPCMessage-CTow-umk.mjs.map +0 -1
  176. package/dist/resolveResponse-C7cFScHo.mjs.map +0 -1
  177. package/dist/tracked-DWInO6EQ.mjs.map +0 -1
  178. package/dist/unstable-core-do-not-import-9NNw8uQM.mjs +0 -31
  179. package/dist/unstable-core-do-not-import-9NNw8uQM.mjs.map +0 -1
  180. package/dist/unstable-core-do-not-import-fsjhEhgh.cjs +0 -35
  181. package/dist/unstable-core-do-not-import.d-BdVSvUCr.d.mts.map +0 -1
  182. package/dist/unstable-core-do-not-import.d-Dh9CT5RO.d.cts.map +0 -1
  183. package/dist/ws-DyeWX-EY.mjs.map +0 -1
@@ -1,11 +1,33 @@
1
- import { HTTP_CODE_TO_JSONRPC2, JSONRPC2_TO_HTTP_CODE, createFlatProxy, createRecursiveProxy, getErrorShape, getHTTPStatusCode, getHTTPStatusCodeFromError, getStatusCodeFromKey, getStatusKeyFromCode } from "./getErrorShape-BPSzUA7W.mjs";
2
- import { TRPC_ERROR_CODES_BY_KEY, TRPC_ERROR_CODES_BY_NUMBER, abortSignalsAnyPonyfill, assert, emptyObject, identity, isAsyncIterable, isFunction, isObject, mergeWithoutOverrides, noop, retryableRpcCodes, run, sleep } from "./codes-DagpWZLc.mjs";
3
- import { TRPCError, callProcedure, createCallerFactory, createRouterFactory, defaultFormatter, defaultTransformer, getCauseFromUnknown, getDataTransformer, getProcedureAtPath, getTRPCErrorFromUnknown, isTrackedEnvelope, lazy, mergeRouters, sse, tracked, transformResult, transformTRPCResponse } from "./tracked-DWInO6EQ.mjs";
4
- import { parseTRPCMessage, procedureTypes } from "./parseTRPCMessage-CTow-umk.mjs";
5
- import { Unpromise, createDeferred, getAcceptHeader, getRequestInfo, isAbortError, isPromise, iteratorResource, jsonlStreamConsumer, jsonlStreamProducer, makeAsyncResource, makeResource, parseConnectionParamsFromString, parseConnectionParamsFromUnknown, resolveResponse, sseHeaders, sseStreamConsumer, sseStreamProducer, takeWithGrace, throwAbortError } from "./resolveResponse-C7cFScHo.mjs";
6
- import { octetInputParser } from "./contentTypeParsers-SN4WL9ze.mjs";
7
- import { formDataToObject } from "./unstable-core-do-not-import-9NNw8uQM.mjs";
8
- import "./observable-UMO3vUa_.mjs";
9
- import { StandardSchemaV1Error, createBuilder, createInputMiddleware, createMiddlewareFactory, createOutputMiddleware, experimental_standaloneMiddleware, getParseFn, initTRPC, isServerDefault, middlewareMarker } from "./initTRPC-BRf4imah.mjs";
1
+ import { a as assert, c as isAsyncIterable, d as mergeWithoutOverrides, f as noop, i as abortSignalsAnyPonyfill, l as isFunction, m as sleep, n as TRPC_ERROR_CODES_BY_NUMBER, o as emptyObject, p as run, r as retryableRpcCodes, s as identity, t as TRPC_ERROR_CODES_BY_KEY, u as isObject } from "./codes-D5Ya6_Bi.mjs";
2
+ import { a as JSONRPC2_TO_HTTP_CODE, c as getStatusCodeFromKey, d as createRecursiveProxy, i as HTTP_CODE_TO_JSONRPC2, l as getStatusKeyFromCode, o as getHTTPStatusCode, s as getHTTPStatusCodeFromError, t as getErrorShape, u as createFlatProxy } from "./getErrorShape-B0JBUs-i.mjs";
3
+ import { _ as defaultFormatter, a as createCallerFactory, c as lazy, d as getDataTransformer, f as transformResult, g as getTRPCErrorFromUnknown, h as getCauseFromUnknown, i as callProcedure, l as mergeRouters, m as TRPCError, n as sse, o as createRouterFactory, p as transformTRPCResponse, r as tracked, s as getProcedureAtPath, t as isTrackedEnvelope, u as defaultTransformer } from "./tracked-D4jU_Hb3.mjs";
4
+ import { n as procedureTypes, t as parseTRPCMessage } from "./parseTRPCMessage-MJWDg1vX.mjs";
5
+ import { _ as getAcceptHeader, a as isPromise, b as parseConnectionParamsFromUnknown, c as createDeferred, f as makeAsyncResource, g as throwAbortError, h as isAbortError, i as sseStreamProducer, l as iteratorResource, m as Unpromise, n as sseHeaders, o as jsonlStreamConsumer, p as makeResource, r as sseStreamConsumer, s as jsonlStreamProducer, t as resolveResponse, u as takeWithGrace, v as getRequestInfo, y as parseConnectionParamsFromString } from "./resolveResponse-JtMyT9TQ.mjs";
6
+ import { t as octetInputParser } from "./contentTypeParsers-KFMy_fwz.mjs";
7
+ import { a as StandardSchemaV1Error, c as createOutputMiddleware, i as getParseFn, l as experimental_standaloneMiddleware, n as isServerDefault, o as createInputMiddleware, r as createBuilder, s as createMiddlewareFactory, t as initTRPC, u as middlewareMarker } from "./initTRPC-B259os3T.mjs";
8
+ //#region src/unstable-core-do-not-import/http/formDataToObject.ts
9
+ const isNumberString = (str) => /^\d+$/.test(str);
10
+ function set(obj, path, value) {
11
+ if (path.length > 1) {
12
+ const newPath = [...path];
13
+ const key = newPath.shift();
14
+ const nextKey = newPath[0];
15
+ if (!Object.hasOwn(obj, key)) obj[key] = isNumberString(nextKey) ? [] : emptyObject();
16
+ else if (Array.isArray(obj[key]) && !isNumberString(nextKey)) obj[key] = Object.fromEntries(Object.entries(obj[key]));
17
+ set(obj[key], newPath, value);
18
+ return;
19
+ }
20
+ const p = path[0];
21
+ if (obj[p] === void 0) obj[p] = value;
22
+ else if (Array.isArray(obj[p])) obj[p].push(value);
23
+ else obj[p] = [obj[p], value];
24
+ }
25
+ function formDataToObject(formData) {
26
+ const obj = emptyObject();
27
+ for (const [key, value] of formData.entries()) set(obj, key.split(/[\.\[\]]/).filter(Boolean), value);
28
+ return obj;
29
+ }
30
+ //#endregion
31
+ export { HTTP_CODE_TO_JSONRPC2, JSONRPC2_TO_HTTP_CODE, StandardSchemaV1Error, TRPCError, TRPC_ERROR_CODES_BY_KEY, TRPC_ERROR_CODES_BY_NUMBER, Unpromise, abortSignalsAnyPonyfill, assert, callProcedure, createBuilder, createCallerFactory, createDeferred, createFlatProxy, createInputMiddleware, createMiddlewareFactory, createOutputMiddleware, createRecursiveProxy, createRouterFactory, defaultFormatter, defaultTransformer, emptyObject, experimental_standaloneMiddleware, formDataToObject, getAcceptHeader, getCauseFromUnknown, getDataTransformer, getErrorShape, getHTTPStatusCode, getHTTPStatusCodeFromError, getParseFn, getProcedureAtPath, getRequestInfo, getStatusCodeFromKey, getStatusKeyFromCode, getTRPCErrorFromUnknown, identity, initTRPC, isAbortError, isAsyncIterable, isFunction, isObject, isPromise, isServerDefault, isTrackedEnvelope, iteratorResource, jsonlStreamConsumer, jsonlStreamProducer, lazy, makeAsyncResource, makeResource, mergeRouters, mergeWithoutOverrides, middlewareMarker, noop, octetInputParser, parseConnectionParamsFromString, parseConnectionParamsFromUnknown, parseTRPCMessage, procedureTypes, resolveResponse, retryableRpcCodes, run, sleep, sse, sseHeaders, sseStreamConsumer, sseStreamProducer, takeWithGrace, throwAbortError, tracked, transformResult, transformTRPCResponse };
10
32
 
11
- export { HTTP_CODE_TO_JSONRPC2, JSONRPC2_TO_HTTP_CODE, StandardSchemaV1Error, TRPCError, TRPC_ERROR_CODES_BY_KEY, TRPC_ERROR_CODES_BY_NUMBER, Unpromise, abortSignalsAnyPonyfill, assert, callProcedure, createBuilder, createCallerFactory, createDeferred, createFlatProxy, createInputMiddleware, createMiddlewareFactory, createOutputMiddleware, createRecursiveProxy, createRouterFactory, defaultFormatter, defaultTransformer, emptyObject, experimental_standaloneMiddleware, formDataToObject, getAcceptHeader, getCauseFromUnknown, getDataTransformer, getErrorShape, getHTTPStatusCode, getHTTPStatusCodeFromError, getParseFn, getProcedureAtPath, getRequestInfo, getStatusCodeFromKey, getStatusKeyFromCode, getTRPCErrorFromUnknown, identity, initTRPC, isAbortError, isAsyncIterable, isFunction, isObject, isPromise, isServerDefault, isTrackedEnvelope, iteratorResource, jsonlStreamConsumer, jsonlStreamProducer, lazy, makeAsyncResource, makeResource, mergeRouters, mergeWithoutOverrides, middlewareMarker, noop, octetInputParser, parseConnectionParamsFromString, parseConnectionParamsFromUnknown, parseTRPCMessage, procedureTypes, resolveResponse, retryableRpcCodes, run, sleep, sse, sseHeaders, sseStreamConsumer, sseStreamProducer, takeWithGrace, throwAbortError, tracked, transformResult, transformTRPCResponse };
33
+ //# sourceMappingURL=unstable-core-do-not-import.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unstable-core-do-not-import.mjs","names":[],"sources":["../src/unstable-core-do-not-import/http/formDataToObject.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-non-null-assertion */\n\nimport { emptyObject } from '../utils';\n\nconst isNumberString = (str: string) => /^\\d+$/.test(str);\n\nfunction set(\n obj: Record<string, any>,\n path: readonly string[],\n value: unknown,\n): void {\n if (path.length > 1) {\n const newPath = [...path];\n const key = newPath.shift()!;\n const nextKey = newPath[0]!;\n\n if (!Object.hasOwn(obj, key)) {\n obj[key] = isNumberString(nextKey) ? [] : emptyObject();\n } else if (Array.isArray(obj[key]) && !isNumberString(nextKey)) {\n obj[key] = Object.fromEntries(Object.entries(obj[key]));\n }\n\n set(obj[key], newPath, value);\n\n return;\n }\n const p = path[0]!;\n\n if (obj[p] === undefined) {\n obj[p] = value;\n } else if (Array.isArray(obj[p])) {\n obj[p].push(value);\n } else {\n obj[p] = [obj[p], value];\n }\n}\n\nexport function formDataToObject(formData: FormData) {\n const obj: Record<string, unknown> = emptyObject();\n\n for (const [key, value] of formData.entries()) {\n const parts = key.split(/[\\.\\[\\]]/).filter(Boolean);\n set(obj, parts, value);\n }\n\n return obj;\n}\n"],"mappings":";;;;;;;;AAIA,MAAM,kBAAkB,QAAgB,QAAQ,KAAK,GAAG;AAExD,SAAS,IACP,KACA,MACA,OACM;CACN,IAAI,KAAK,SAAS,GAAG;EACnB,MAAM,UAAU,CAAC,GAAG,IAAI;EACxB,MAAM,MAAM,QAAQ,MAAM;EAC1B,MAAM,UAAU,QAAQ;EAExB,IAAI,CAAC,OAAO,OAAO,KAAK,GAAG,GACzB,IAAI,OAAO,eAAe,OAAO,IAAI,CAAC,IAAI,YAAY;OACjD,IAAI,MAAM,QAAQ,IAAI,IAAI,KAAK,CAAC,eAAe,OAAO,GAC3D,IAAI,OAAO,OAAO,YAAY,OAAO,QAAQ,IAAI,IAAI,CAAC;EAGxD,IAAI,IAAI,MAAM,SAAS,KAAK;EAE5B;CACF;CACA,MAAM,IAAI,KAAK;CAEf,IAAI,IAAI,OAAO,KAAA,GACb,IAAI,KAAK;MACJ,IAAI,MAAM,QAAQ,IAAI,EAAE,GAC7B,IAAI,EAAE,CAAC,KAAK,KAAK;MAEjB,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK;AAE3B;AAEA,SAAgB,iBAAiB,UAAoB;CACnD,MAAM,MAA+B,YAAY;CAEjD,KAAK,MAAM,CAAC,KAAK,UAAU,SAAS,QAAQ,GAE1C,IAAI,KADU,IAAI,MAAM,UAAU,CAAC,CAAC,OAAO,OAC9B,GAAG,KAAK;CAGvB,OAAO;AACT"}
@@ -1,11 +1,10 @@
1
- const require_getErrorShape = require('./getErrorShape-Ed1OwssN.cjs');
2
- const require_codes = require('./codes-BfZsPdy-.cjs');
3
- const require_tracked = require('./tracked-DFxm8M2u.cjs');
4
- const require_parseTRPCMessage = require('./parseTRPCMessage-7Ltmq-Fb.cjs');
5
- const require_resolveResponse = require('./resolveResponse-Djb7nJqb.cjs');
6
- const require_observable = require('./observable-B1Nk6r1H.cjs');
7
- const require_node_http = require('./node-http-CSXWJkwC.cjs');
8
-
1
+ const require_codes = require("./codes-C6ZIq69A.cjs");
2
+ const require_getErrorShape = require("./getErrorShape-DeIapApr.cjs");
3
+ const require_tracked = require("./tracked-BQJb0ANk.cjs");
4
+ const require_parseTRPCMessage = require("./parseTRPCMessage-BxAIUx49.cjs");
5
+ const require_resolveResponse = require("./resolveResponse-DLpzHrPG.cjs");
6
+ const require_observable = require("./observable-CIyO2eSm.cjs");
7
+ const require_node_http = require("./node-http-CikCqjt6.cjs");
9
8
  //#region src/adapters/wsEncoder.ts
10
9
  /**
11
10
  * Default JSON encoder - used when no encoder is specified.
@@ -18,11 +17,8 @@ const jsonEncoder = {
18
17
  return JSON.parse(data);
19
18
  }
20
19
  };
21
-
22
20
  //#endregion
23
21
  //#region src/adapters/ws.ts
24
- var import_objectSpread2 = require_getErrorShape.__toESM(require_getErrorShape.require_objectSpread2(), 1);
25
- var import_usingCtx = require_getErrorShape.__toESM(require_resolveResponse.require_usingCtx(), 1);
26
22
  /**
27
23
  * Importing ws causes a build error
28
24
  * @see https://github.com/trpc/trpc/pull/5279
@@ -142,22 +138,24 @@ function getWSConnectionHandler(opts) {
142
138
  const { path, lastEventId } = msg.params;
143
139
  let { input } = msg.params;
144
140
  const type = msg.method;
145
- if (lastEventId !== void 0) if (require_codes.isObject(input)) input = (0, import_objectSpread2.default)((0, import_objectSpread2.default)({}, input), {}, { lastEventId });
146
- else {
147
- var _input;
148
- (_input = input) !== null && _input !== void 0 || (input = { lastEventId });
141
+ if (lastEventId !== void 0) {
142
+ if (require_codes.isObject(input)) input = require_getErrorShape._objectSpread2(require_getErrorShape._objectSpread2({}, input), {}, { lastEventId });
143
+ else {
144
+ var _input;
145
+ (_input = input) !== null && _input !== void 0 || (input = { lastEventId });
146
+ }
149
147
  }
150
148
  require_codes.run(async () => {
151
149
  const res = await ctxPromise;
152
150
  if (!res.ok) throw res.error;
153
- const abortController$1 = new AbortController();
151
+ const abortController = new AbortController();
154
152
  const result = await require_tracked.callProcedure({
155
153
  router,
156
154
  path,
157
155
  getRawInput: async () => input,
158
156
  ctx,
159
157
  type,
160
- signal: abortController$1.signal,
158
+ signal: abortController.signal,
161
159
  batchIndex
162
160
  });
163
161
  const isIterableResult = require_codes.isAsyncIterable(result) || require_observable.isObservable(result);
@@ -187,16 +185,16 @@ function getWSConnectionHandler(opts) {
187
185
  message: `Duplicate id ${id}`,
188
186
  code: "BAD_REQUEST"
189
187
  });
190
- const iterable = require_observable.isObservable(result) ? require_observable.observableToAsyncIterable(result, abortController$1.signal) : result;
188
+ const iterable = require_observable.isObservable(result) ? require_observable.observableToAsyncIterable(result, abortController.signal) : result;
191
189
  require_codes.run(async () => {
192
190
  try {
193
- var _usingCtx = (0, import_usingCtx.default)();
194
- const iterator = _usingCtx.a(require_resolveResponse.iteratorResource(iterable));
191
+ var _usingCtx$1 = require_resolveResponse._usingCtx();
192
+ const iterator = _usingCtx$1.a(require_resolveResponse.iteratorResource(iterable));
195
193
  const abortPromise = new Promise((resolve) => {
196
- abortController$1.signal.onabort = () => resolve("abort");
194
+ abortController.signal.onabort = () => resolve("abort");
197
195
  });
198
196
  let next;
199
- let result$1;
197
+ let result;
200
198
  while (true) {
201
199
  next = await require_resolveResponse.Unpromise.race([iterator.next().catch(require_tracked.getTRPCErrorFromUnknown), abortPromise]);
202
200
  if (next === "abort") {
@@ -230,25 +228,25 @@ function getWSConnectionHandler(opts) {
230
228
  break;
231
229
  }
232
230
  if (next.done) break;
233
- result$1 = {
231
+ result = {
234
232
  type: "data",
235
233
  data: next.value
236
234
  };
237
235
  if (require_tracked.isTrackedEnvelope(next.value)) {
238
- const [id$1, data] = next.value;
239
- result$1.id = id$1;
240
- result$1.data = {
241
- id: id$1,
236
+ const [id, data] = next.value;
237
+ result.id = id;
238
+ result.data = {
239
+ id,
242
240
  data
243
241
  };
244
242
  }
245
243
  respond({
246
244
  id,
247
245
  jsonrpc,
248
- result: result$1
246
+ result
249
247
  });
250
248
  next = null;
251
- result$1 = null;
249
+ result = null;
252
250
  }
253
251
  respond({
254
252
  id,
@@ -257,12 +255,13 @@ function getWSConnectionHandler(opts) {
257
255
  });
258
256
  clientSubscriptions.delete(id);
259
257
  } catch (_) {
260
- _usingCtx.e = _;
258
+ _usingCtx$1.e = _;
261
259
  } finally {
262
- await _usingCtx.d();
260
+ await _usingCtx$1.d();
263
261
  }
264
262
  }).catch((cause) => {
265
263
  var _opts$onError4;
264
+ clientSubscriptions.delete(id);
266
265
  const error = require_tracked.getTRPCErrorFromUnknown(cause);
267
266
  (_opts$onError4 = opts.onError) === null || _opts$onError4 === void 0 || _opts$onError4.call(opts, {
268
267
  error,
@@ -284,9 +283,9 @@ function getWSConnectionHandler(opts) {
284
283
  ctx
285
284
  })
286
285
  });
287
- abortController$1.abort();
286
+ abortController.abort();
288
287
  });
289
- clientSubscriptions.set(id, abortController$1);
288
+ clientSubscriptions.set(id, abortController);
290
289
  respond({
291
290
  id,
292
291
  jsonrpc,
@@ -358,16 +357,14 @@ function getWSConnectionHandler(opts) {
358
357
  cause
359
358
  });
360
359
  }
361
- const connectionParams = require_resolveResponse.parseConnectionParamsFromUnknown(msg.data);
362
- return connectionParams;
360
+ return require_resolveResponse.parseConnectionParamsFromUnknown(msg.data);
363
361
  });
364
362
  return;
365
363
  }
366
- const parsedMsgs = require_codes.run(() => {
364
+ require_codes.run(() => {
367
365
  try {
368
366
  const msgJSON = encoder.decode(data);
369
- const msgs = Array.isArray(msgJSON) ? msgJSON : [msgJSON];
370
- return msgs.map((raw) => require_parseTRPCMessage.parseTRPCMessage(raw, transformer));
367
+ return (Array.isArray(msgJSON) ? msgJSON : [msgJSON]).map((raw) => require_parseTRPCMessage.parseTRPCMessage(raw, transformer));
371
368
  } catch (cause) {
372
369
  const error = new require_tracked.TRPCError({
373
370
  code: "PARSE_ERROR",
@@ -386,8 +383,7 @@ function getWSConnectionHandler(opts) {
386
383
  });
387
384
  return [];
388
385
  }
389
- });
390
- parsedMsgs.map((msg, index) => handleRequest(msg, index));
386
+ }).map((msg, index) => handleRequest(msg, index));
391
387
  });
392
388
  client.on("error", (cause) => {
393
389
  var _opts$onError6;
@@ -446,37 +442,35 @@ function applyWSSHandler(opts) {
446
442
  onConnection(client, req);
447
443
  });
448
444
  return { broadcastReconnectNotification: () => {
449
- const response = {
445
+ const data = encoder.encode({
450
446
  id: null,
451
447
  method: "reconnect"
452
- };
453
- const data = encoder.encode(response);
448
+ });
454
449
  for (const client of opts.wss.clients) if (client.readyState === WEBSOCKET_OPEN) client.send(data);
455
450
  } };
456
451
  }
457
-
458
452
  //#endregion
459
- Object.defineProperty(exports, 'applyWSSHandler', {
460
- enumerable: true,
461
- get: function () {
462
- return applyWSSHandler;
463
- }
453
+ Object.defineProperty(exports, "applyWSSHandler", {
454
+ enumerable: true,
455
+ get: function() {
456
+ return applyWSSHandler;
457
+ }
464
458
  });
465
- Object.defineProperty(exports, 'getWSConnectionHandler', {
466
- enumerable: true,
467
- get: function () {
468
- return getWSConnectionHandler;
469
- }
459
+ Object.defineProperty(exports, "getWSConnectionHandler", {
460
+ enumerable: true,
461
+ get: function() {
462
+ return getWSConnectionHandler;
463
+ }
470
464
  });
471
- Object.defineProperty(exports, 'handleKeepAlive', {
472
- enumerable: true,
473
- get: function () {
474
- return handleKeepAlive;
475
- }
465
+ Object.defineProperty(exports, "handleKeepAlive", {
466
+ enumerable: true,
467
+ get: function() {
468
+ return handleKeepAlive;
469
+ }
470
+ });
471
+ Object.defineProperty(exports, "jsonEncoder", {
472
+ enumerable: true,
473
+ get: function() {
474
+ return jsonEncoder;
475
+ }
476
476
  });
477
- Object.defineProperty(exports, 'jsonEncoder', {
478
- enumerable: true,
479
- get: function () {
480
- return jsonEncoder;
481
- }
482
- });
@@ -1,11 +1,10 @@
1
- import { __toESM, getErrorShape, require_objectSpread2 } from "./getErrorShape-BPSzUA7W.mjs";
2
- import { isAsyncIterable, isObject, run } from "./codes-DagpWZLc.mjs";
3
- import { TRPCError, callProcedure, getTRPCErrorFromUnknown, isTrackedEnvelope, transformTRPCResponse } from "./tracked-DWInO6EQ.mjs";
4
- import { parseTRPCMessage } from "./parseTRPCMessage-CTow-umk.mjs";
5
- import { Unpromise, iteratorResource, parseConnectionParamsFromUnknown, require_usingCtx } from "./resolveResponse-C7cFScHo.mjs";
6
- import { isObservable, observableToAsyncIterable } from "./observable-UMO3vUa_.mjs";
7
- import { createURL } from "./node-http-n0vBVXjb.mjs";
8
-
1
+ import { c as isAsyncIterable, p as run, u as isObject } from "./codes-D5Ya6_Bi.mjs";
2
+ import { n as _objectSpread2, t as getErrorShape } from "./getErrorShape-B0JBUs-i.mjs";
3
+ import { g as getTRPCErrorFromUnknown, i as callProcedure, m as TRPCError, p as transformTRPCResponse, t as isTrackedEnvelope } from "./tracked-D4jU_Hb3.mjs";
4
+ import { t as parseTRPCMessage } from "./parseTRPCMessage-MJWDg1vX.mjs";
5
+ import { b as parseConnectionParamsFromUnknown, d as _usingCtx, l as iteratorResource, m as Unpromise } from "./resolveResponse-JtMyT9TQ.mjs";
6
+ import { r as observableToAsyncIterable, t as isObservable } from "./observable-DwUFSuKv.mjs";
7
+ import { r as createURL } from "./node-http-BUlb5EdB.mjs";
9
8
  //#region src/adapters/wsEncoder.ts
10
9
  /**
11
10
  * Default JSON encoder - used when no encoder is specified.
@@ -18,11 +17,8 @@ const jsonEncoder = {
18
17
  return JSON.parse(data);
19
18
  }
20
19
  };
21
-
22
20
  //#endregion
23
21
  //#region src/adapters/ws.ts
24
- var import_objectSpread2 = __toESM(require_objectSpread2(), 1);
25
- var import_usingCtx = __toESM(require_usingCtx(), 1);
26
22
  /**
27
23
  * Importing ws causes a build error
28
24
  * @see https://github.com/trpc/trpc/pull/5279
@@ -142,22 +138,24 @@ function getWSConnectionHandler(opts) {
142
138
  const { path, lastEventId } = msg.params;
143
139
  let { input } = msg.params;
144
140
  const type = msg.method;
145
- if (lastEventId !== void 0) if (isObject(input)) input = (0, import_objectSpread2.default)((0, import_objectSpread2.default)({}, input), {}, { lastEventId });
146
- else {
147
- var _input;
148
- (_input = input) !== null && _input !== void 0 || (input = { lastEventId });
141
+ if (lastEventId !== void 0) {
142
+ if (isObject(input)) input = _objectSpread2(_objectSpread2({}, input), {}, { lastEventId });
143
+ else {
144
+ var _input;
145
+ (_input = input) !== null && _input !== void 0 || (input = { lastEventId });
146
+ }
149
147
  }
150
148
  run(async () => {
151
149
  const res = await ctxPromise;
152
150
  if (!res.ok) throw res.error;
153
- const abortController$1 = new AbortController();
151
+ const abortController = new AbortController();
154
152
  const result = await callProcedure({
155
153
  router,
156
154
  path,
157
155
  getRawInput: async () => input,
158
156
  ctx,
159
157
  type,
160
- signal: abortController$1.signal,
158
+ signal: abortController.signal,
161
159
  batchIndex
162
160
  });
163
161
  const isIterableResult = isAsyncIterable(result) || isObservable(result);
@@ -187,16 +185,16 @@ function getWSConnectionHandler(opts) {
187
185
  message: `Duplicate id ${id}`,
188
186
  code: "BAD_REQUEST"
189
187
  });
190
- const iterable = isObservable(result) ? observableToAsyncIterable(result, abortController$1.signal) : result;
188
+ const iterable = isObservable(result) ? observableToAsyncIterable(result, abortController.signal) : result;
191
189
  run(async () => {
192
190
  try {
193
- var _usingCtx = (0, import_usingCtx.default)();
194
- const iterator = _usingCtx.a(iteratorResource(iterable));
191
+ var _usingCtx$1 = _usingCtx();
192
+ const iterator = _usingCtx$1.a(iteratorResource(iterable));
195
193
  const abortPromise = new Promise((resolve) => {
196
- abortController$1.signal.onabort = () => resolve("abort");
194
+ abortController.signal.onabort = () => resolve("abort");
197
195
  });
198
196
  let next;
199
- let result$1;
197
+ let result;
200
198
  while (true) {
201
199
  next = await Unpromise.race([iterator.next().catch(getTRPCErrorFromUnknown), abortPromise]);
202
200
  if (next === "abort") {
@@ -230,25 +228,25 @@ function getWSConnectionHandler(opts) {
230
228
  break;
231
229
  }
232
230
  if (next.done) break;
233
- result$1 = {
231
+ result = {
234
232
  type: "data",
235
233
  data: next.value
236
234
  };
237
235
  if (isTrackedEnvelope(next.value)) {
238
- const [id$1, data] = next.value;
239
- result$1.id = id$1;
240
- result$1.data = {
241
- id: id$1,
236
+ const [id, data] = next.value;
237
+ result.id = id;
238
+ result.data = {
239
+ id,
242
240
  data
243
241
  };
244
242
  }
245
243
  respond({
246
244
  id,
247
245
  jsonrpc,
248
- result: result$1
246
+ result
249
247
  });
250
248
  next = null;
251
- result$1 = null;
249
+ result = null;
252
250
  }
253
251
  respond({
254
252
  id,
@@ -257,12 +255,13 @@ function getWSConnectionHandler(opts) {
257
255
  });
258
256
  clientSubscriptions.delete(id);
259
257
  } catch (_) {
260
- _usingCtx.e = _;
258
+ _usingCtx$1.e = _;
261
259
  } finally {
262
- await _usingCtx.d();
260
+ await _usingCtx$1.d();
263
261
  }
264
262
  }).catch((cause) => {
265
263
  var _opts$onError4;
264
+ clientSubscriptions.delete(id);
266
265
  const error = getTRPCErrorFromUnknown(cause);
267
266
  (_opts$onError4 = opts.onError) === null || _opts$onError4 === void 0 || _opts$onError4.call(opts, {
268
267
  error,
@@ -284,9 +283,9 @@ function getWSConnectionHandler(opts) {
284
283
  ctx
285
284
  })
286
285
  });
287
- abortController$1.abort();
286
+ abortController.abort();
288
287
  });
289
- clientSubscriptions.set(id, abortController$1);
288
+ clientSubscriptions.set(id, abortController);
290
289
  respond({
291
290
  id,
292
291
  jsonrpc,
@@ -358,16 +357,14 @@ function getWSConnectionHandler(opts) {
358
357
  cause
359
358
  });
360
359
  }
361
- const connectionParams = parseConnectionParamsFromUnknown(msg.data);
362
- return connectionParams;
360
+ return parseConnectionParamsFromUnknown(msg.data);
363
361
  });
364
362
  return;
365
363
  }
366
- const parsedMsgs = run(() => {
364
+ run(() => {
367
365
  try {
368
366
  const msgJSON = encoder.decode(data);
369
- const msgs = Array.isArray(msgJSON) ? msgJSON : [msgJSON];
370
- return msgs.map((raw) => parseTRPCMessage(raw, transformer));
367
+ return (Array.isArray(msgJSON) ? msgJSON : [msgJSON]).map((raw) => parseTRPCMessage(raw, transformer));
371
368
  } catch (cause) {
372
369
  const error = new TRPCError({
373
370
  code: "PARSE_ERROR",
@@ -386,8 +383,7 @@ function getWSConnectionHandler(opts) {
386
383
  });
387
384
  return [];
388
385
  }
389
- });
390
- parsedMsgs.map((msg, index) => handleRequest(msg, index));
386
+ }).map((msg, index) => handleRequest(msg, index));
391
387
  });
392
388
  client.on("error", (cause) => {
393
389
  var _opts$onError6;
@@ -446,15 +442,14 @@ function applyWSSHandler(opts) {
446
442
  onConnection(client, req);
447
443
  });
448
444
  return { broadcastReconnectNotification: () => {
449
- const response = {
445
+ const data = encoder.encode({
450
446
  id: null,
451
447
  method: "reconnect"
452
- };
453
- const data = encoder.encode(response);
448
+ });
454
449
  for (const client of opts.wss.clients) if (client.readyState === WEBSOCKET_OPEN) client.send(data);
455
450
  } };
456
451
  }
457
-
458
452
  //#endregion
459
- export { applyWSSHandler, getWSConnectionHandler, handleKeepAlive, jsonEncoder };
460
- //# sourceMappingURL=ws-DyeWX-EY.mjs.map
453
+ export { jsonEncoder as i, getWSConnectionHandler as n, handleKeepAlive as r, applyWSSHandler as t };
454
+
455
+ //# sourceMappingURL=ws-C7ZOJJeA.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ws-C7ZOJJeA.mjs","names":["callTRPCProcedure"],"sources":["../src/adapters/wsEncoder.ts","../src/adapters/ws.ts"],"sourcesContent":["/**\n * Encoder for WebSocket wire format.\n * Encodes outgoing messages and decodes incoming messages.\n *\n * @example\n * ```ts\n * const customEncoder: Encoder = {\n * encode: (data) => myFormat.stringify(data),\n * decode: (data) => myFormat.parse(data),\n * };\n * ```\n */\nexport interface Encoder {\n /** Encode data for transmission over the wire */\n encode(data: unknown): string | Uint8Array<ArrayBuffer>;\n /** Decode data received from the wire */\n decode(data: string | ArrayBuffer | Uint8Array): unknown;\n}\n\n/**\n * Default JSON encoder - used when no encoder is specified.\n * This maintains backwards compatibility with existing behavior.\n */\nexport const jsonEncoder: Encoder = {\n encode: (data) => JSON.stringify(data),\n decode: (data) => {\n if (typeof data !== 'string') {\n throw new Error(\n 'jsonEncoder received binary data. JSON uses text frames. ' +\n 'Use a binary encoder for binary data.',\n );\n }\n return JSON.parse(data);\n },\n};\n","import type { IncomingMessage } from 'http';\nimport type ws from 'ws';\nimport type {\n AnyRouter,\n CreateContextCallback,\n inferRouterContext,\n} from '../@trpc/server';\nimport {\n callTRPCProcedure,\n getErrorShape,\n getTRPCErrorFromUnknown,\n transformTRPCResponse,\n TRPCError,\n} from '../@trpc/server';\nimport type { TRPCRequestInfo } from '../@trpc/server/http';\nimport { type BaseHandlerOptions } from '../@trpc/server/http';\nimport { parseTRPCMessage } from '../@trpc/server/rpc';\n// @trpc/server/rpc\nimport type {\n TRPCClientOutgoingMessage,\n TRPCConnectionParamsMessage,\n TRPCReconnectNotification,\n TRPCResponseMessage,\n TRPCResultMessage,\n} from '../@trpc/server/rpc';\nimport { parseConnectionParamsFromUnknown } from '../http';\nimport { isObservable, observableToAsyncIterable } from '../observable';\n// eslint-disable-next-line no-restricted-imports\nimport {\n isAsyncIterable,\n isObject,\n isTrackedEnvelope,\n run,\n type MaybePromise,\n} from '../unstable-core-do-not-import';\n// eslint-disable-next-line no-restricted-imports\nimport type { Result } from '../unstable-core-do-not-import';\n// eslint-disable-next-line no-restricted-imports\nimport { iteratorResource } from '../unstable-core-do-not-import/stream/utils/asyncIterable';\nimport { Unpromise } from '../vendor/unpromise';\nimport { createURL, type NodeHTTPCreateContextFnOptions } from './node-http';\nimport type { Encoder } from './wsEncoder';\nimport { jsonEncoder } from './wsEncoder';\n\n/**\n * Importing ws causes a build error\n * @see https://github.com/trpc/trpc/pull/5279\n */\nconst WEBSOCKET_OPEN = 1; /* ws.WebSocket.OPEN */\n\n/**\n * @public\n */\nexport type CreateWSSContextFnOptions = NodeHTTPCreateContextFnOptions<\n IncomingMessage,\n ws.WebSocket\n>;\n\n/**\n * @public\n */\nexport type CreateWSSContextFn<TRouter extends AnyRouter> = (\n opts: CreateWSSContextFnOptions,\n) => MaybePromise<inferRouterContext<TRouter>>;\n\nexport type WSConnectionHandlerOptions<TRouter extends AnyRouter> =\n BaseHandlerOptions<TRouter, IncomingMessage> &\n CreateContextCallback<\n inferRouterContext<TRouter>,\n CreateWSSContextFn<TRouter>\n >;\n\n/**\n * Web socket server handler\n */\nexport type WSSHandlerOptions<TRouter extends AnyRouter> =\n WSConnectionHandlerOptions<TRouter> & {\n wss: ws.WebSocketServer;\n prefix?: string;\n keepAlive?: {\n /**\n * Enable heartbeat messages\n * @default false\n */\n enabled: boolean;\n /**\n * Heartbeat interval in milliseconds\n * @default 30_000\n */\n pingMs?: number;\n /**\n * Terminate the WebSocket if no pong is received after this many milliseconds\n * @default 5_000\n */\n pongWaitMs?: number;\n };\n /**\n * Disable responding to ping messages from the client\n * **Not recommended** - this is mainly used for testing\n * @default false\n */\n dangerouslyDisablePong?: boolean;\n /**\n * Custom encoder for wire encoding (e.g. custom binary formats)\n * @default jsonEncoder\n */\n experimental_encoder?: Encoder;\n };\n\nexport function getWSConnectionHandler<TRouter extends AnyRouter>(\n opts: WSSHandlerOptions<TRouter>,\n) {\n const { createContext, router } = opts;\n const { transformer } = router._def._config;\n const encoder = opts.experimental_encoder ?? jsonEncoder;\n\n return (client: ws.WebSocket, req: IncomingMessage) => {\n type Context = inferRouterContext<TRouter>;\n type ContextResult = Result<Context>;\n\n const clientSubscriptions = new Map<number | string, AbortController>();\n const abortController = new AbortController();\n\n if (opts.keepAlive?.enabled) {\n const { pingMs, pongWaitMs } = opts.keepAlive;\n handleKeepAlive(client, pingMs, pongWaitMs);\n }\n\n function respond(untransformedJSON: TRPCResponseMessage) {\n client.send(\n encoder.encode(\n transformTRPCResponse(router._def._config, untransformedJSON),\n ),\n );\n }\n\n async function createCtxPromise(\n getConnectionParams: () => TRPCRequestInfo['connectionParams'],\n ): Promise<ContextResult> {\n try {\n return await run(async (): Promise<ContextResult> => {\n ctx = await createContext?.({\n req,\n res: client,\n info: {\n connectionParams: getConnectionParams(),\n calls: [],\n isBatchCall: false,\n accept: null,\n type: 'unknown',\n signal: abortController.signal,\n url: null,\n },\n });\n\n return {\n ok: true,\n value: ctx,\n };\n });\n } catch (cause) {\n const error = getTRPCErrorFromUnknown(cause);\n opts.onError?.({\n error,\n path: undefined,\n type: 'unknown',\n ctx,\n req,\n input: undefined,\n });\n respond({\n id: null,\n error: getErrorShape({\n config: router._def._config,\n error,\n type: 'unknown',\n path: undefined,\n input: undefined,\n ctx,\n }),\n });\n\n // close in next tick\n (globalThis.setImmediate ?? globalThis.setTimeout)(() => {\n client.close();\n });\n return {\n ok: false,\n error,\n };\n }\n }\n\n let ctx: Context | undefined = undefined;\n\n /**\n * promise for initializing the context\n *\n * - the context promise will be created immediately on connection if no connectionParams are expected\n * - if connection params are expected, they will be created once received\n */\n let ctxPromise =\n createURL(req).searchParams.get('connectionParams') === '1'\n ? null\n : createCtxPromise(() => null);\n\n function handleRequest(msg: TRPCClientOutgoingMessage, batchIndex: number) {\n const { id, jsonrpc } = msg;\n\n if (id === null) {\n const error = getTRPCErrorFromUnknown(\n new TRPCError({\n code: 'PARSE_ERROR',\n message: '`id` is required',\n }),\n );\n opts.onError?.({\n error,\n path: undefined,\n type: 'unknown',\n ctx,\n req,\n input: undefined,\n });\n respond({\n id,\n jsonrpc,\n error: getErrorShape({\n config: router._def._config,\n error,\n type: 'unknown',\n path: undefined,\n input: undefined,\n ctx,\n }),\n });\n return;\n }\n if (msg.method === 'subscription.stop') {\n clientSubscriptions.get(id)?.abort();\n return;\n }\n const { path, lastEventId } = msg.params;\n let { input } = msg.params;\n const type = msg.method;\n\n if (lastEventId !== undefined) {\n if (isObject(input)) {\n input = {\n ...input,\n lastEventId: lastEventId,\n };\n } else {\n input ??= {\n lastEventId: lastEventId,\n };\n }\n }\n run(async () => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const res = await ctxPromise!; // asserts context has been set\n if (!res.ok) {\n throw res.error;\n }\n\n const abortController = new AbortController();\n const result = await callTRPCProcedure({\n router,\n path,\n getRawInput: async () => input,\n ctx,\n type,\n signal: abortController.signal,\n batchIndex,\n });\n\n const isIterableResult =\n isAsyncIterable(result) || isObservable(result);\n\n if (type !== 'subscription') {\n if (isIterableResult) {\n throw new TRPCError({\n code: 'UNSUPPORTED_MEDIA_TYPE',\n message: `Cannot return an async iterable or observable from a ${type} procedure with WebSockets`,\n });\n }\n // send the value as data if the method is not a subscription\n respond({\n id,\n jsonrpc,\n result: {\n type: 'data',\n data: result,\n },\n });\n return;\n }\n\n if (!isIterableResult) {\n throw new TRPCError({\n message: `Subscription ${path} did not return an observable or a AsyncGenerator`,\n code: 'INTERNAL_SERVER_ERROR',\n });\n }\n\n /* istanbul ignore next -- @preserve */\n if (client.readyState !== WEBSOCKET_OPEN) {\n // if the client got disconnected whilst initializing the subscription\n // no need to send stopped message if the client is disconnected\n\n return;\n }\n\n /* istanbul ignore next -- @preserve */\n if (clientSubscriptions.has(id)) {\n // duplicate request ids for client\n\n throw new TRPCError({\n message: `Duplicate id ${id}`,\n code: 'BAD_REQUEST',\n });\n }\n\n const iterable = isObservable(result)\n ? observableToAsyncIterable(result, abortController.signal)\n : result;\n\n run(async () => {\n await using iterator = iteratorResource(iterable);\n\n const abortPromise = new Promise<'abort'>((resolve) => {\n abortController.signal.onabort = () => resolve('abort');\n });\n // We need those declarations outside the loop for garbage collection reasons. If they\n // were declared inside, they would not be freed until the next value is present.\n let next:\n | null\n | TRPCError\n | Awaited<\n typeof abortPromise | ReturnType<(typeof iterator)['next']>\n >;\n let result: null | TRPCResultMessage<unknown>['result'];\n\n while (true) {\n next = await Unpromise.race([\n iterator.next().catch(getTRPCErrorFromUnknown),\n abortPromise,\n ]);\n\n if (next === 'abort') {\n await iterator.return?.();\n break;\n }\n if (next instanceof Error) {\n const error = getTRPCErrorFromUnknown(next);\n opts.onError?.({ error, path, type, ctx, req, input });\n respond({\n id,\n jsonrpc,\n error: getErrorShape({\n config: router._def._config,\n error,\n type,\n path,\n input,\n ctx,\n }),\n });\n break;\n }\n if (next.done) {\n break;\n }\n\n result = {\n type: 'data',\n data: next.value,\n };\n\n if (isTrackedEnvelope(next.value)) {\n const [id, data] = next.value;\n result.id = id;\n result.data = {\n id,\n data,\n };\n }\n\n respond({\n id,\n jsonrpc,\n result,\n });\n\n // free up references for garbage collection\n next = null;\n result = null;\n }\n\n respond({\n id,\n jsonrpc,\n result: {\n type: 'stopped',\n },\n });\n clientSubscriptions.delete(id);\n }).catch((cause) => {\n clientSubscriptions.delete(id);\n const error = getTRPCErrorFromUnknown(cause);\n opts.onError?.({ error, path, type, ctx, req, input });\n respond({\n id,\n jsonrpc,\n error: getErrorShape({\n config: router._def._config,\n error,\n type,\n path,\n input,\n ctx,\n }),\n });\n abortController.abort();\n });\n clientSubscriptions.set(id, abortController);\n\n respond({\n id,\n jsonrpc,\n result: {\n type: 'started',\n },\n });\n }).catch((cause) => {\n // procedure threw an error\n const error = getTRPCErrorFromUnknown(cause);\n opts.onError?.({ error, path, type, ctx, req, input });\n respond({\n id,\n jsonrpc,\n error: getErrorShape({\n config: router._def._config,\n error,\n type,\n path,\n input,\n ctx,\n }),\n });\n });\n }\n client.on('message', (rawData, isBinary) => {\n // Handle PING/PONG as text regardless of encoder\n if (!isBinary) {\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n const msgStr = rawData.toString();\n if (msgStr === 'PONG') {\n return;\n }\n if (msgStr === 'PING') {\n if (!opts.dangerouslyDisablePong) {\n client.send('PONG');\n }\n return;\n }\n }\n\n // Convert rawData to a format our encoder accepts\n // ws gives us Buffer for both text and binary frames\n if (!Buffer.isBuffer(rawData)) {\n const error = new TRPCError({\n code: 'UNPROCESSABLE_CONTENT',\n message: 'Unexpected WebSocket message format',\n });\n respond({\n id: null,\n error: getErrorShape({\n config: router._def._config,\n error,\n type: 'unknown',\n path: undefined,\n input: undefined,\n ctx,\n }),\n });\n return;\n }\n const data: string | Uint8Array = isBinary\n ? rawData\n : rawData.toString('utf8');\n\n if (!ctxPromise) {\n // If the ctxPromise wasn't created immediately, we're expecting the first message to be a TRPCConnectionParamsMessage\n ctxPromise = createCtxPromise(() => {\n let msg;\n try {\n msg = encoder.decode(data) as TRPCConnectionParamsMessage;\n\n if (!isObject(msg)) {\n throw new Error('Message was not an object');\n }\n } catch (cause) {\n throw new TRPCError({\n code: 'PARSE_ERROR',\n message: `Malformed TRPCConnectionParamsMessage`,\n cause,\n });\n }\n\n const connectionParams = parseConnectionParamsFromUnknown(msg.data);\n\n return connectionParams;\n });\n return;\n }\n\n const parsedMsgs = run(() => {\n try {\n const msgJSON: unknown = encoder.decode(data);\n const msgs: unknown[] = Array.isArray(msgJSON) ? msgJSON : [msgJSON];\n\n return msgs.map((raw) => parseTRPCMessage(raw, transformer));\n } catch (cause) {\n const error = new TRPCError({\n code: 'PARSE_ERROR',\n cause,\n });\n\n respond({\n id: null,\n error: getErrorShape({\n config: router._def._config,\n error,\n type: 'unknown',\n path: undefined,\n input: undefined,\n ctx,\n }),\n });\n\n return [];\n }\n });\n\n parsedMsgs.map((msg, index) => handleRequest(msg, index));\n });\n\n // WebSocket errors should be handled, as otherwise unhandled exceptions will crash Node.js.\n // This line was introduced after the following error brought down production systems:\n // \"RangeError: Invalid WebSocket frame: RSV2 and RSV3 must be clear\"\n // Here is the relevant discussion: https://github.com/websockets/ws/issues/1354#issuecomment-774616962\n client.on('error', (cause) => {\n opts.onError?.({\n ctx,\n error: getTRPCErrorFromUnknown(cause),\n input: undefined,\n path: undefined,\n type: 'unknown',\n req,\n });\n });\n\n client.once('close', () => {\n for (const sub of clientSubscriptions.values()) {\n sub.abort();\n }\n clientSubscriptions.clear();\n abortController.abort();\n });\n };\n}\n\n/**\n * Handle WebSocket keep-alive messages\n */\nexport function handleKeepAlive(\n client: ws.WebSocket,\n pingMs = 30_000,\n pongWaitMs = 5_000,\n) {\n let timeout: NodeJS.Timeout | undefined = undefined;\n let ping: NodeJS.Timeout | undefined = undefined;\n\n const schedulePing = () => {\n const scheduleTimeout = () => {\n timeout = setTimeout(() => {\n client.terminate();\n }, pongWaitMs);\n };\n ping = setTimeout(() => {\n client.send('PING');\n\n scheduleTimeout();\n }, pingMs);\n };\n\n const onMessage = () => {\n clearTimeout(ping);\n clearTimeout(timeout);\n\n schedulePing();\n };\n\n client.on('message', onMessage);\n\n client.on('close', () => {\n clearTimeout(ping);\n clearTimeout(timeout);\n });\n\n schedulePing();\n}\n\nexport function applyWSSHandler<TRouter extends AnyRouter>(\n opts: WSSHandlerOptions<TRouter>,\n) {\n const encoder = opts.experimental_encoder ?? jsonEncoder;\n const onConnection = getWSConnectionHandler(opts);\n opts.wss.on('connection', (client, req) => {\n if (opts.prefix && !req.url?.startsWith(opts.prefix)) {\n return;\n }\n\n onConnection(client, req);\n });\n\n return {\n broadcastReconnectNotification: () => {\n const response: TRPCReconnectNotification = {\n id: null,\n method: 'reconnect',\n };\n const data = encoder.encode(response);\n for (const client of opts.wss.clients) {\n if (client.readyState === WEBSOCKET_OPEN) {\n client.send(data);\n }\n }\n },\n };\n}\n\nexport type { Encoder } from './wsEncoder';\nexport { jsonEncoder } from './wsEncoder';\n"],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@trpc/server",
3
3
  "type": "module",
4
4
  "sideEffects": false,
5
- "version": "11.18.1-canary.6+66d054454",
5
+ "version": "11.19.0",
6
6
  "description": "The tRPC server library",
7
7
  "author": "KATT",
8
8
  "license": "MIT",
@@ -196,33 +196,33 @@
196
196
  "access": "public"
197
197
  },
198
198
  "devDependencies": {
199
- "@fastify/websocket": "^11.0.0",
199
+ "@fastify/websocket": "catalog:",
200
200
  "@oxc-project/runtime": "0.123.0",
201
201
  "@tanstack/intent": "^0.0.27",
202
202
  "@tanstack/react-query": "^5.80.3",
203
203
  "@types/aws-lambda": "^8.10.149",
204
204
  "@types/express": "^5.0.0",
205
205
  "@types/hash-sum": "^1.0.0",
206
- "@types/node": "^22.13.5",
206
+ "@types/node": "catalog:",
207
207
  "@types/react": "^19.1.0",
208
208
  "@types/react-dom": "^19.1.1",
209
209
  "@types/ws": "^8.2.0",
210
- "devalue": "^5.0.0",
211
- "eslint": "^9.26.0",
210
+ "devalue": "catalog:",
211
+ "eslint": "catalog:",
212
212
  "express": "^5.0.0",
213
- "fastify": "^5.0.0",
214
- "fastify-plugin": "^5.0.0",
213
+ "fastify": "catalog:",
214
+ "fastify-plugin": "catalog:",
215
215
  "hash-sum": "^2.0.0",
216
216
  "myzod": "^1.3.1",
217
- "next": "^15.3.8",
217
+ "next": "catalog:",
218
218
  "react": "^19.1.0",
219
219
  "react-dom": "^19.1.0",
220
220
  "superjson": "^1.12.4",
221
221
  "superstruct": "^2.0.0",
222
- "tsdown": "0.12.7",
223
- "typescript": "^5.9.2",
224
- "valibot": "1.3.1",
225
- "ws": "^8.0.0",
222
+ "tsdown": "catalog:",
223
+ "typescript": "catalog:",
224
+ "valibot": "catalog:",
225
+ "ws": "catalog:",
226
226
  "yup": "^1.0.0",
227
227
  "zod": "^4.2.1"
228
228
  },
@@ -238,5 +238,5 @@
238
238
  "bin": {
239
239
  "intent": "./bin/intent.js"
240
240
  },
241
- "gitHead": "66d054454a3339dd8421da9dcf0648f92816f704"
241
+ "gitHead": "fcc6bca0ece2762e393e6d8c8527bbaa17a878d2"
242
242
  }
@@ -11,8 +11,7 @@ import { splitSetCookieString } from '../../vendor/cookie-es/set-cookie/split';
11
11
  export type LambdaEvent = APIGatewayProxyEvent | APIGatewayProxyEventV2;
12
12
 
13
13
  export type APIGatewayResult =
14
- | APIGatewayProxyResult
15
- | APIGatewayProxyStructuredResultV2;
14
+ APIGatewayProxyResult | APIGatewayProxyStructuredResultV2;
16
15
 
17
16
  function determinePayloadFormat(event: LambdaEvent): string {
18
17
  // https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html
@@ -47,8 +47,7 @@ export type AWSLambdaCreateContextFn<
47
47
  context,
48
48
  info,
49
49
  }: CreateAWSLambdaContextOptions<TEvent>) =>
50
- | inferRouterContext<TRouter>
51
- | Promise<inferRouterContext<TRouter>>;
50
+ inferRouterContext<TRouter> | Promise<inferRouterContext<TRouter>>;
52
51
 
53
52
  export function awsLambdaRequestHandler<
54
53
  TRouter extends AnyRouter,