@trpc/server 11.0.0-rc.417 → 11.0.0-rc.419

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 (95) hide show
  1. package/dist/@trpc/server/index.d.ts +1 -1
  2. package/dist/@trpc/server/index.d.ts.map +1 -1
  3. package/dist/adapters/aws-lambda/getPlanner.d.ts.map +1 -1
  4. package/dist/adapters/next-app-dir/redirect.d.ts.map +1 -1
  5. package/dist/adapters/node-http/incomingMessageToRequest.d.ts +0 -1
  6. package/dist/adapters/node-http/incomingMessageToRequest.d.ts.map +1 -1
  7. package/dist/adapters/node-http/incomingMessageToRequest.js +3 -1
  8. package/dist/adapters/node-http/incomingMessageToRequest.mjs +3 -1
  9. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
  10. package/dist/adapters/node-http/nodeHTTPRequestHandler.js +30 -7
  11. package/dist/adapters/node-http/nodeHTTPRequestHandler.mjs +30 -7
  12. package/dist/adapters/node-http/types.d.ts +0 -1
  13. package/dist/adapters/node-http/types.d.ts.map +1 -1
  14. package/dist/adapters/standalone.d.ts +0 -1
  15. package/dist/adapters/standalone.d.ts.map +1 -1
  16. package/dist/adapters/ws.d.ts +1 -2
  17. package/dist/adapters/ws.d.ts.map +1 -1
  18. package/dist/adapters/ws.js +98 -81
  19. package/dist/adapters/ws.mjs +98 -81
  20. package/dist/bundle-analysis.json +196 -137
  21. package/dist/index.js +5 -3
  22. package/dist/index.mjs +2 -1
  23. package/dist/observable/observable.d.ts +1 -0
  24. package/dist/observable/observable.d.ts.map +1 -1
  25. package/dist/observable/observable.js +55 -0
  26. package/dist/observable/observable.mjs +55 -1
  27. package/dist/unstable-core-do-not-import/createProxy.d.ts.map +1 -1
  28. package/dist/unstable-core-do-not-import/http/contentType.d.ts +7 -4
  29. package/dist/unstable-core-do-not-import/http/contentType.d.ts.map +1 -1
  30. package/dist/unstable-core-do-not-import/http/contentType.js +55 -17
  31. package/dist/unstable-core-do-not-import/http/contentType.mjs +56 -18
  32. package/dist/unstable-core-do-not-import/http/resolveResponse.d.ts.map +1 -1
  33. package/dist/unstable-core-do-not-import/http/resolveResponse.js +302 -149
  34. package/dist/unstable-core-do-not-import/http/resolveResponse.mjs +301 -148
  35. package/dist/unstable-core-do-not-import/http/types.d.ts +34 -5
  36. package/dist/unstable-core-do-not-import/http/types.d.ts.map +1 -1
  37. package/dist/unstable-core-do-not-import/initTRPC.d.ts +12 -12
  38. package/dist/unstable-core-do-not-import/initTRPC.d.ts.map +1 -1
  39. package/dist/unstable-core-do-not-import/middleware.d.ts +3 -3
  40. package/dist/unstable-core-do-not-import/middleware.d.ts.map +1 -1
  41. package/dist/unstable-core-do-not-import/procedureBuilder.d.ts +3 -1
  42. package/dist/unstable-core-do-not-import/procedureBuilder.d.ts.map +1 -1
  43. package/dist/unstable-core-do-not-import/rootConfig.d.ts +12 -0
  44. package/dist/unstable-core-do-not-import/rootConfig.d.ts.map +1 -1
  45. package/dist/unstable-core-do-not-import/router.d.ts +2 -2
  46. package/dist/unstable-core-do-not-import/router.d.ts.map +1 -1
  47. package/dist/unstable-core-do-not-import/router.js +6 -0
  48. package/dist/unstable-core-do-not-import/router.mjs +6 -0
  49. package/dist/unstable-core-do-not-import/stream/{stream.d.ts → jsonl.d.ts} +5 -5
  50. package/dist/unstable-core-do-not-import/stream/jsonl.d.ts.map +1 -0
  51. package/dist/unstable-core-do-not-import/stream/{stream.js → jsonl.js} +90 -89
  52. package/dist/unstable-core-do-not-import/stream/{stream.mjs → jsonl.mjs} +89 -88
  53. package/dist/unstable-core-do-not-import/stream/sse.d.ts +95 -0
  54. package/dist/unstable-core-do-not-import/stream/sse.d.ts.map +1 -0
  55. package/dist/unstable-core-do-not-import/stream/sse.js +175 -0
  56. package/dist/unstable-core-do-not-import/stream/sse.mjs +169 -0
  57. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.d.ts +18 -0
  58. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.d.ts.map +1 -0
  59. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.js +46 -0
  60. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.mjs +43 -0
  61. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.d.ts +10 -0
  62. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.d.ts.map +1 -0
  63. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.js +31 -0
  64. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.mjs +29 -0
  65. package/dist/unstable-core-do-not-import/stream/utils/createServer.d.ts +7 -0
  66. package/dist/unstable-core-do-not-import/stream/utils/createServer.d.ts.map +1 -0
  67. package/dist/unstable-core-do-not-import/transformer.d.ts +5 -5
  68. package/dist/unstable-core-do-not-import/utils.d.ts +4 -0
  69. package/dist/unstable-core-do-not-import/utils.d.ts.map +1 -1
  70. package/dist/unstable-core-do-not-import/utils.js +4 -0
  71. package/dist/unstable-core-do-not-import/utils.mjs +4 -1
  72. package/dist/unstable-core-do-not-import.d.ts +2 -1
  73. package/dist/unstable-core-do-not-import.d.ts.map +1 -1
  74. package/dist/unstable-core-do-not-import.js +11 -4
  75. package/dist/unstable-core-do-not-import.mjs +3 -2
  76. package/package.json +3 -3
  77. package/src/@trpc/server/index.ts +1 -0
  78. package/src/adapters/node-http/incomingMessageToRequest.ts +3 -2
  79. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +32 -7
  80. package/src/adapters/ws.ts +101 -75
  81. package/src/observable/observable.ts +63 -0
  82. package/src/unstable-core-do-not-import/http/contentType.ts +78 -21
  83. package/src/unstable-core-do-not-import/http/resolveResponse.ts +331 -164
  84. package/src/unstable-core-do-not-import/http/types.ts +42 -5
  85. package/src/unstable-core-do-not-import/procedureBuilder.ts +8 -1
  86. package/src/unstable-core-do-not-import/rootConfig.ts +12 -0
  87. package/src/unstable-core-do-not-import/router.ts +12 -0
  88. package/src/unstable-core-do-not-import/stream/{stream.ts → jsonl.ts} +99 -85
  89. package/src/unstable-core-do-not-import/stream/sse.ts +291 -0
  90. package/src/unstable-core-do-not-import/stream/utils/createDeferred.ts +48 -0
  91. package/src/unstable-core-do-not-import/stream/utils/createReadableStream.ts +31 -0
  92. package/src/unstable-core-do-not-import/stream/utils/createServer.ts +46 -0
  93. package/src/unstable-core-do-not-import/utils.ts +5 -0
  94. package/src/unstable-core-do-not-import.ts +2 -1
  95. package/dist/unstable-core-do-not-import/stream/stream.d.ts.map +0 -1
@@ -2,7 +2,7 @@ export { TRPCError,
2
2
  /**
3
3
  * @deprecated use `experimental_trpcMiddleware` instead
4
4
  */
5
- experimental_standaloneMiddleware, experimental_standaloneMiddleware as experimental_trpcMiddleware, initTRPC, callProcedure as callTRPCProcedure, getTRPCErrorFromUnknown, transformTRPCResponse, createFlatProxy as createTRPCFlatProxy, type inferProcedureInput, type inferProcedureOutput, type inferProcedureBuilderResolverOptions, type inferRouterError, type inferRouterInputs, type inferRouterOutputs, type inferRouterContext, type inferClientTypes as inferTRPCClientTypes, type AnyClientTypes as AnyTRPCClientTypes, type inferTransformedProcedureOutput, type inferTransformedSubscriptionOutput, type AnyProcedure as AnyTRPCProcedure, type AnyRouter as AnyTRPCRouter, type AnyMiddlewareFunction as AnyTRPCMiddlewareFunction, type CombinedDataTransformer as TRPCCombinedDataTransformer, type ProcedureType as TRPCProcedureType, type AnyMutationProcedure as AnyTRPCMutationProcedure, type AnyQueryProcedure as AnyTRPCQueryProcedure, type RouterRecord as TRPCRouterRecord, type AnySubscriptionProcedure as AnyTRPCSubscriptionProcedure, type ProcedureOptions as TRPCProcedureOptions, type CreateContextCallback, type MutationProcedure as TRPCMutationProcedure, type QueryProcedure as TRPCQueryProcedure, type SubscriptionProcedure as TRPCSubscriptionProcedure, type TRPCBuilder, } from '../../unstable-core-do-not-import';
5
+ experimental_standaloneMiddleware, experimental_standaloneMiddleware as experimental_trpcMiddleware, initTRPC, callProcedure as callTRPCProcedure, getTRPCErrorFromUnknown, transformTRPCResponse, createFlatProxy as createTRPCFlatProxy, type inferProcedureInput, type inferProcedureOutput, type inferProcedureBuilderResolverOptions, type inferRouterError, type inferRouterInputs, type inferRouterOutputs, type inferRouterContext, type inferClientTypes as inferTRPCClientTypes, type AnyClientTypes as AnyTRPCClientTypes, type inferTransformedProcedureOutput, type inferTransformedSubscriptionOutput, type AnyProcedure as AnyTRPCProcedure, type AnyRouter as AnyTRPCRouter, type AnyMiddlewareFunction as AnyTRPCMiddlewareFunction, type CombinedDataTransformer as TRPCCombinedDataTransformer, type ProcedureType as TRPCProcedureType, type AnyMutationProcedure as AnyTRPCMutationProcedure, type AnyQueryProcedure as AnyTRPCQueryProcedure, type RouterRecord as TRPCRouterRecord, type AnySubscriptionProcedure as AnyTRPCSubscriptionProcedure, type ProcedureOptions as TRPCProcedureOptions, type CreateContextCallback, type MutationProcedure as TRPCMutationProcedure, type QueryProcedure as TRPCQueryProcedure, type SubscriptionProcedure as TRPCSubscriptionProcedure, type TRPCBuilder, sse, } from '../../unstable-core-do-not-import';
6
6
  export type {
7
7
  /**
8
8
  * @deprecated use `AnyTRPCProcedure` instead
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/@trpc/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS;AACT;;GAEG;AACH,iCAAiC,EACjC,iCAAiC,IAAI,2BAA2B,EAChE,QAAQ,EAER,aAAa,IAAI,iBAAiB,EAClC,uBAAuB,EACvB,qBAAqB,EACrB,eAAe,IAAI,mBAAmB,EACtC,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,oCAAoC,EACzC,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,IAAI,oBAAoB,EAC7C,KAAK,cAAc,IAAI,kBAAkB,EACzC,KAAK,+BAA+B,EACpC,KAAK,kCAAkC,EACvC,KAAK,YAAY,IAAI,gBAAgB,EACrC,KAAK,SAAS,IAAI,aAAa,EAC/B,KAAK,qBAAqB,IAAI,yBAAyB,EACvD,KAAK,uBAAuB,IAAI,2BAA2B,EAC3D,KAAK,aAAa,IAAI,iBAAiB,EACvC,KAAK,oBAAoB,IAAI,wBAAwB,EACrD,KAAK,iBAAiB,IAAI,qBAAqB,EAC/C,KAAK,YAAY,IAAI,gBAAgB,EACrC,KAAK,wBAAwB,IAAI,4BAA4B,EAC7D,KAAK,gBAAgB,IAAI,oBAAoB,EAC7C,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,IAAI,qBAAqB,EAC/C,KAAK,cAAc,IAAI,kBAAkB,EACzC,KAAK,qBAAqB,IAAI,yBAAyB,EACvD,KAAK,WAAW,GACjB,MAAM,mCAAmC,CAAC;AAE3C,YAAY;AACV;;GAEG;AACH,YAAY;AACZ;;GAEG;AACH,SAAS;AACT;;GAEG;AACH,qBAAqB;AACrB;;GAEG;AACH,uBAAuB;AAEvB;;GAEG;AACH,IAAI;AAEJ;;GAEG;AACH,WAAW;AACX;;GAEG;AACH,aAAa;AACb;;GAEG;AACH,oBAAoB;AAEpB;;GAEG;AACH,iBAAiB;AACjB;;GAEG;AACH,wBAAwB,GACzB,MAAM,mCAAmC,CAAC;AAE3C,OAAO;AACL;;GAEG;AACH,aAAa;AAEb;;GAEG;AACH,aAAa,GACd,MAAM,mCAAmC,CAAC;AAE3C;;;GAGG;AACH,MAAM,MAAM,oBAAoB,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,IACxE,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/@trpc/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS;AACT;;GAEG;AACH,iCAAiC,EACjC,iCAAiC,IAAI,2BAA2B,EAChE,QAAQ,EAER,aAAa,IAAI,iBAAiB,EAClC,uBAAuB,EACvB,qBAAqB,EACrB,eAAe,IAAI,mBAAmB,EACtC,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,oCAAoC,EACzC,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,IAAI,oBAAoB,EAC7C,KAAK,cAAc,IAAI,kBAAkB,EACzC,KAAK,+BAA+B,EACpC,KAAK,kCAAkC,EACvC,KAAK,YAAY,IAAI,gBAAgB,EACrC,KAAK,SAAS,IAAI,aAAa,EAC/B,KAAK,qBAAqB,IAAI,yBAAyB,EACvD,KAAK,uBAAuB,IAAI,2BAA2B,EAC3D,KAAK,aAAa,IAAI,iBAAiB,EACvC,KAAK,oBAAoB,IAAI,wBAAwB,EACrD,KAAK,iBAAiB,IAAI,qBAAqB,EAC/C,KAAK,YAAY,IAAI,gBAAgB,EACrC,KAAK,wBAAwB,IAAI,4BAA4B,EAC7D,KAAK,gBAAgB,IAAI,oBAAoB,EAC7C,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,IAAI,qBAAqB,EAC/C,KAAK,cAAc,IAAI,kBAAkB,EACzC,KAAK,qBAAqB,IAAI,yBAAyB,EACvD,KAAK,WAAW,EAChB,GAAG,GACJ,MAAM,mCAAmC,CAAC;AAE3C,YAAY;AACV;;GAEG;AACH,YAAY;AACZ;;GAEG;AACH,SAAS;AACT;;GAEG;AACH,qBAAqB;AACrB;;GAEG;AACH,uBAAuB;AAEvB;;GAEG;AACH,IAAI;AAEJ;;GAEG;AACH,WAAW;AACX;;GAEG;AACH,aAAa;AACb;;GAEG;AACH,oBAAoB;AAEpB;;GAEG;AACH,iBAAiB;AACjB;;GAEG;AACH,wBAAwB,GACzB,MAAM,mCAAmC,CAAC;AAE3C,OAAO;AACL;;GAEG;AACH,aAAa;AAEb;;GAEG;AACH,aAAa,GACd,MAAM,mCAAmC,CAAC;AAE3C;;;GAGG;AACH,MAAM,MAAM,oBAAoB,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,IACxE,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getPlanner.d.ts","sourceRoot":"","sources":["../../../src/adapters/aws-lambda/getPlanner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,iCAAiC,EAClC,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,WAAW,GAAG,oBAAoB,GAAG,sBAAsB,CAAC;AAExE,MAAM,MAAM,gBAAgB,GACxB,qBAAqB,GACrB,iCAAiC,CAAC;AActC;;IAEI;AACJ,MAAM,MAAM,gBAAgB,CAAC,MAAM,IAAI,MAAM,SAAS,oBAAoB,GACtE,qBAAqB,GACrB,MAAM,SAAS,sBAAsB,GACrC,iCAAiC,GACjC,KAAK,CAAC;AA6IV,wBAAgB,UAAU,CAAC,MAAM,SAAS,WAAW,EAAE,KAAK,EAAE,MAAM;;;;EAoCnE"}
1
+ {"version":3,"file":"getPlanner.d.ts","sourceRoot":"","sources":["../../../src/adapters/aws-lambda/getPlanner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,iCAAiC,EAClC,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,WAAW,GAAG,oBAAoB,GAAG,sBAAsB,CAAC;AAExE,MAAM,MAAM,gBAAgB,GACxB,qBAAqB,GACrB,iCAAiC,CAAC;AActC;;IAEI;AACJ,MAAM,MAAM,gBAAgB,CAAC,MAAM,IAAI,MAAM,SAAS,oBAAoB,GACtE,qBAAqB,GACrB,MAAM,SAAS,sBAAsB,GACrC,iCAAiC,GACjC,KAAK,CAAC;AA6IV,wBAAgB,UAAU,CAAC,MAAM,SAAS,WAAW,EAAE,KAAK,EAAE,MAAM;;;yBAtI7C,QAAQ,KAAK,OAAO,CAAC,gBAAgB,QAAQ,CAAC;EA0KpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"redirect.d.ts","sourceRoot":"","sources":["../../../src/adapters/next-app-dir/redirect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,SAAS;IAC9C,SAAgB,IAAI,8CAAC;gBACT,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY;CAS3D;AAED;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,QAAS,GAAG,GAAG,MAAM,iBAAiB,YAAY,cAGtE,CAAC"}
1
+ {"version":3,"file":"redirect.d.ts","sourceRoot":"","sources":["../../../src/adapters/next-app-dir/redirect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,SAAS;IAC9C,SAAgB,IAAI,8CAAC;gBACT,GAAG,EAAE,GAAG,GAAG,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY;CAS3D;AAED;;;;;;GAMG;AACH,eAAO,MAAM,QAAQ,QAAS,GAAG,GAAG,MAAM,iBAAiB,YAAY,KAEP,SAC/D,CAAC"}
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import type * as http from 'http';
3
2
  export interface IncomingMessageWithBody extends http.IncomingMessage {
4
3
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"incomingMessageToRequest.d.ts","sourceRoot":"","sources":["../../../src/adapters/node-http/incomingMessageToRequest.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,MAAM,CAAC;AAGlC,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,eAAe;IACnE;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AA+CD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,IAAI,EAAE;IACJ;;OAEG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,GACA,OAAO,CA2BT"}
1
+ {"version":3,"file":"incomingMessageToRequest.d.ts","sourceRoot":"","sources":["../../../src/adapters/node-http/incomingMessageToRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,IAAI,MAAM,MAAM,CAAC;AAGlC,MAAM,WAAW,uBAAwB,SAAQ,IAAI,CAAC,eAAe;IACnE;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AA+CD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,IAAI,EAAE;IACJ;;OAEG;IACH,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,GACA,OAAO,CA4BT"}
@@ -49,7 +49,9 @@ const bodyMethods = [
49
49
  const ac = new AbortController();
50
50
  const headers = new Headers(req.headers);
51
51
  const url = `http://${headers.get('host')}${req.url}`;
52
- req.once('aborted', ()=>ac.abort());
52
+ req.once('aborted', ()=>{
53
+ ac.abort();
54
+ });
53
55
  const init = {
54
56
  headers,
55
57
  method: req.method,
@@ -47,7 +47,9 @@ const bodyMethods = [
47
47
  const ac = new AbortController();
48
48
  const headers = new Headers(req.headers);
49
49
  const url = `http://${headers.get('host')}${req.url}`;
50
- req.once('aborted', ()=>ac.abort());
50
+ req.once('aborted', ()=>{
51
+ ac.abort();
52
+ });
51
53
  const init = {
52
54
  headers,
53
55
  method: req.method,
@@ -1 +1 @@
1
- {"version":3,"file":"nodeHTTPRequestHandler.d.ts","sourceRoot":"","sources":["../../../src/adapters/node-http/nodeHTTPRequestHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI7E,OAAO,KAAK,EACV,eAAe,EACf,6BAA6B,EAC7B,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,wBAAsB,sBAAsB,CAC1C,OAAO,SAAS,SAAS,EACzB,QAAQ,SAAS,eAAe,EAChC,SAAS,SAAS,gBAAgB,EAClC,IAAI,EAAE,6BAA6B,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,iBA4ClE"}
1
+ {"version":3,"file":"nodeHTTPRequestHandler.d.ts","sourceRoot":"","sources":["../../../src/adapters/node-http/nodeHTTPRequestHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAA2B,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI7E,OAAO,KAAK,EACV,eAAe,EACf,6BAA6B,EAC7B,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,wBAAsB,sBAAsB,CAC1C,OAAO,SAAS,SAAS,EACzB,QAAQ,SAAS,eAAe,EAChC,SAAS,SAAS,gBAAgB,EAClC,IAAI,EAAE,6BAA6B,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,iBAsElE"}
@@ -1,6 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var node_stream = require('node:stream');
4
3
  var TRPCError = require('../../unstable-core-do-not-import/error/TRPCError.js');
5
4
  var resolveResponse = require('../../unstable-core-do-not-import/http/resolveResponse.js');
6
5
  require('../../unstable-core-do-not-import/rootConfig.js');
@@ -40,18 +39,42 @@ async function nodeHTTPRequestHandler(opts) {
40
39
  });
41
40
  }
42
41
  });
43
- if (opts.res.statusCode === 200) {
42
+ const { res } = opts;
43
+ if (res.statusCode === 200) {
44
44
  // if the status code is set, we assume that it's been manually overridden
45
- opts.res.statusCode = response.status;
45
+ res.statusCode = response.status;
46
46
  }
47
47
  for (const [key, value] of response.headers){
48
- opts.res.setHeader(key, value);
48
+ res.setHeader(key, value);
49
49
  }
50
50
  if (response.body) {
51
- node_stream.Readable.fromWeb(response.body).pipe(opts.res);
52
- } else {
53
- opts.res.end();
51
+ const reader = response.body.getReader();
52
+ const onAbort = ()=>{
53
+ // cancelling the reader will cause the whole stream to be cancelled
54
+ reader.cancel().catch(()=>{
55
+ // console.error('reader.cancel() error', err);
56
+ });
57
+ };
58
+ req.signal.addEventListener('abort', onAbort);
59
+ while(true){
60
+ const { done , value: value1 } = await reader.read();
61
+ if (done) {
62
+ break;
63
+ }
64
+ if (!res.writable) {
65
+ break;
66
+ }
67
+ if (!res.write(value1)) {
68
+ await new Promise((resolve)=>{
69
+ res.once('drain', resolve);
70
+ });
71
+ }
72
+ // IMPORTANT - flush the response buffer, otherwise the client will not receive the data until `.end()`
73
+ res.flush?.();
74
+ }
75
+ req.signal.removeEventListener('abort', onAbort);
54
76
  }
77
+ res.end();
55
78
  });
56
79
  }
57
80
 
@@ -1,4 +1,3 @@
1
- import { Readable } from 'node:stream';
2
1
  import { getTRPCErrorFromUnknown } from '../../unstable-core-do-not-import/error/TRPCError.mjs';
3
2
  import { resolveResponse } from '../../unstable-core-do-not-import/http/resolveResponse.mjs';
4
3
  import '../../unstable-core-do-not-import/rootConfig.mjs';
@@ -38,18 +37,42 @@ async function nodeHTTPRequestHandler(opts) {
38
37
  });
39
38
  }
40
39
  });
41
- if (opts.res.statusCode === 200) {
40
+ const { res } = opts;
41
+ if (res.statusCode === 200) {
42
42
  // if the status code is set, we assume that it's been manually overridden
43
- opts.res.statusCode = response.status;
43
+ res.statusCode = response.status;
44
44
  }
45
45
  for (const [key, value] of response.headers){
46
- opts.res.setHeader(key, value);
46
+ res.setHeader(key, value);
47
47
  }
48
48
  if (response.body) {
49
- Readable.fromWeb(response.body).pipe(opts.res);
50
- } else {
51
- opts.res.end();
49
+ const reader = response.body.getReader();
50
+ const onAbort = ()=>{
51
+ // cancelling the reader will cause the whole stream to be cancelled
52
+ reader.cancel().catch(()=>{
53
+ // console.error('reader.cancel() error', err);
54
+ });
55
+ };
56
+ req.signal.addEventListener('abort', onAbort);
57
+ while(true){
58
+ const { done , value: value1 } = await reader.read();
59
+ if (done) {
60
+ break;
61
+ }
62
+ if (!res.writable) {
63
+ break;
64
+ }
65
+ if (!res.write(value1)) {
66
+ await new Promise((resolve)=>{
67
+ res.once('drain', resolve);
68
+ });
69
+ }
70
+ // IMPORTANT - flush the response buffer, otherwise the client will not receive the data until `.end()`
71
+ res.flush?.();
72
+ }
73
+ req.signal.removeEventListener('abort', onAbort);
52
74
  }
75
+ res.end();
53
76
  });
54
77
  }
55
78
 
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  /**
3
2
  * If you're making an adapter for tRPC and looking at this file for reference, you should import types and functions from `@trpc/server` and `@trpc/server/http`
4
3
  *
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/node-http/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,KAAK,IAAI,MAAM,MAAM,CAAC;AAElC,OAAO,KAAK,EACV,SAAS,EACT,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EAChB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEtE,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,GAAG;IACnD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,GAAG;IACnD;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,2BAA2B,CACrC,OAAO,SAAS,SAAS,EACzB,QAAQ,EACR,SAAS,IACP,qBAAqB,CACvB,kBAAkB,CAAC,OAAO,CAAC,EAC3B,uBAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CACtD,CAAC;AAEF;;GAEG;AACH,KAAK,iBAAiB,CACpB,QAAQ,SAAS,eAAe,GAAG,eAAe,EAClD,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,IACnD,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,GAAG,KAAK,IAAI,CAAC;AAEtE,MAAM,MAAM,sBAAsB,CAChC,OAAO,SAAS,SAAS,EACzB,QAAQ,SAAS,eAAe,EAChC,SAAS,SAAS,gBAAgB,IAChC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,GAC3C,2BAA2B,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG;IAC1D;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEJ,MAAM,MAAM,6BAA6B,CACvC,OAAO,SAAS,SAAS,EACzB,QAAQ,SAAS,eAAe,EAChC,SAAS,SAAS,gBAAgB,IAChC;IACF,GAAG,EAAE,QAAQ,CAAC;IACd,GAAG,EAAE,SAAS,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAEzD,MAAM,MAAM,8BAA8B,CAAC,QAAQ,EAAE,SAAS,IAAI;IAChE,GAAG,EAAE,QAAQ,CAAC;IACd,GAAG,EAAE,SAAS,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;CACvB,CAAC;AACF,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,SAAS,EACzB,QAAQ,EACR,SAAS,IACP,CACF,IAAI,EAAE,8BAA8B,CAAC,QAAQ,EAAE,SAAS,CAAC,KACtD,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapters/node-http/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,KAAK,IAAI,MAAM,MAAM,CAAC;AAElC,OAAO,KAAK,EACV,SAAS,EACT,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EAChB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEtE,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,GAAG;IACnD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,GAAG;IACnD;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,2BAA2B,CACrC,OAAO,SAAS,SAAS,EACzB,QAAQ,EACR,SAAS,IACP,qBAAqB,CACvB,kBAAkB,CAAC,OAAO,CAAC,EAC3B,uBAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CACtD,CAAC;AAEF;;GAEG;AACH,KAAK,iBAAiB,CACpB,QAAQ,SAAS,eAAe,GAAG,eAAe,EAClD,SAAS,SAAS,gBAAgB,GAAG,gBAAgB,IACnD,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,KAAK,GAAG,KAAK,IAAI,CAAC;AAEtE,MAAM,MAAM,sBAAsB,CAChC,OAAO,SAAS,SAAS,EACzB,QAAQ,SAAS,eAAe,EAChC,SAAS,SAAS,gBAAgB,IAChC,sBAAsB,CAAC,OAAO,EAAE,QAAQ,CAAC,GAC3C,2BAA2B,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,GAAG;IAC1D;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEJ,MAAM,MAAM,6BAA6B,CACvC,OAAO,SAAS,SAAS,EACzB,QAAQ,SAAS,eAAe,EAChC,SAAS,SAAS,gBAAgB,IAChC;IACF,GAAG,EAAE,QAAQ,CAAC;IACd,GAAG,EAAE,SAAS,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd,GAAG,sBAAsB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAEzD,MAAM,MAAM,8BAA8B,CAAC,QAAQ,EAAE,SAAS,IAAI;IAChE,GAAG,EAAE,QAAQ,CAAC;IACd,GAAG,EAAE,SAAS,CAAC;IACf,IAAI,EAAE,eAAe,CAAC;CACvB,CAAC;AACF,MAAM,MAAM,uBAAuB,CACjC,OAAO,SAAS,SAAS,EACzB,QAAQ,EACR,SAAS,IACP,CACF,IAAI,EAAE,8BAA8B,CAAC,QAAQ,EAAE,SAAS,CAAC,KACtD,YAAY,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC"}
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  /**
3
2
  * If you're making an adapter for tRPC and looking at this file for reference, you should import types and functions from `@trpc/server` and `@trpc/server/http`
4
3
  *
@@ -1 +1 @@
1
- {"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../src/adapters/standalone.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EACV,8BAA8B,EAC9B,sBAAsB,EACvB,MAAM,aAAa,CAAC;AAGrB,MAAM,MAAM,wBAAwB,CAAC,OAAO,SAAS,SAAS,IAC5D,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAE7E,MAAM,MAAM,wBAAwB,GAAG,8BAA8B,CACnE,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,CACpB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,SAAS,EACzD,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,SAEpB,KAAK,eAAe,OAAO,KAAK,cAAc,mBAclE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,SAAS,SAAS,EACxD,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,wEAIxC"}
1
+ {"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../../src/adapters/standalone.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,EACV,8BAA8B,EAC9B,sBAAsB,EACvB,MAAM,aAAa,CAAC;AAGrB,MAAM,MAAM,wBAAwB,CAAC,OAAO,SAAS,SAAS,IAC5D,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;AAE7E,MAAM,MAAM,wBAAwB,GAAG,8BAA8B,CACnE,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,cAAc,CACpB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,SAAS,EACzD,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,SAEpB,IAAI,CAAC,eAAe,OAAO,IAAI,CAAC,cAAc,mBAclE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,SAAS,SAAS,EACxD,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,wEAIxC"}
@@ -1,9 +1,8 @@
1
- /// <reference types="node" />
2
1
  import type { IncomingMessage } from 'http';
3
2
  import type ws from 'ws';
4
3
  import type { AnyRouter, CreateContextCallback, inferRouterContext } from '../@trpc/server';
5
4
  import type { BaseHandlerOptions } from '../@trpc/server/http';
6
- import type { MaybePromise } from '../unstable-core-do-not-import';
5
+ import { type MaybePromise } from '../unstable-core-do-not-import';
7
6
  import type { NodeHTTPCreateContextFnOptions } from './node-http';
8
7
  /**
9
8
  * @public
@@ -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;AAQzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAY/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAQlE;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,8BAA8B,CAAC,eAAe,EAAE,EAAE,CAAC,SAAS,CAAC,EAC7D,MAAM,CACP,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;AAEJ,wBAAgB,sBAAsB,CAAC,OAAO,SAAS,SAAS,EAC9D,IAAI,EAAE,0BAA0B,CAAC,OAAO,CAAC,YAKnB,YAAY,OAAO,eAAe,mBAoPzD;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;AAQzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAW/D,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,aAAa,CAAC;AAQlE;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAC1C,8BAA8B,CAAC,eAAe,EAAE,EAAE,CAAC,SAAS,CAAC,EAC7D,MAAM,CACP,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;AAEJ,wBAAgB,sBAAsB,CAAC,OAAO,SAAS,SAAS,EAC9D,IAAI,EAAE,0BAA0B,CAAC,OAAO,CAAC,YAKnB,EAAE,CAAC,SAAS,OAAO,eAAe,mBA2QzD;AAiCD,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;;EA+BjC"}
@@ -2,11 +2,12 @@
2
2
 
3
3
  var TRPCError = require('../unstable-core-do-not-import/error/TRPCError.js');
4
4
  var getErrorShape = require('../unstable-core-do-not-import/error/getErrorShape.js');
5
+ var utils = require('../unstable-core-do-not-import/utils.js');
5
6
  var parseTRPCMessage = require('../unstable-core-do-not-import/rpc/parseTRPCMessage.js');
6
- var router = require('../unstable-core-do-not-import/router.js');
7
+ var observable = require('../observable/observable.js');
7
8
  var transformer = require('../unstable-core-do-not-import/transformer.js');
8
9
  require('../unstable-core-do-not-import/rootConfig.js');
9
- var observable = require('../observable/observable.js');
10
+ var router = require('../unstable-core-do-not-import/router.js');
10
11
 
11
12
  /**
12
13
  * Importing ws causes a build error
@@ -20,16 +21,6 @@ function getWSConnectionHandler(opts) {
20
21
  function respond(untransformedJSON) {
21
22
  client.send(JSON.stringify(transformer.transformTRPCResponse(router$1._def._config, untransformedJSON)));
22
23
  }
23
- function stopSubscription(subscription, { id , jsonrpc }) {
24
- subscription.unsubscribe();
25
- respond({
26
- id,
27
- jsonrpc,
28
- result: {
29
- type: 'stopped'
30
- }
31
- });
32
- }
33
24
  const ctxPromise = createContext?.({
34
25
  req,
35
26
  res: client
@@ -44,14 +35,7 @@ function getWSConnectionHandler(opts) {
44
35
  });
45
36
  }
46
37
  if (msg.method === 'subscription.stop') {
47
- const sub = clientSubscriptions.get(id);
48
- if (sub) {
49
- stopSubscription(sub, {
50
- id,
51
- jsonrpc
52
- });
53
- }
54
- clientSubscriptions.delete(id);
38
+ clientSubscriptions.get(id)?.abort();
55
39
  return;
56
40
  }
57
41
  const { path , input } = msg.params;
@@ -65,14 +49,7 @@ function getWSConnectionHandler(opts) {
65
49
  ctx,
66
50
  type
67
51
  });
68
- if (type === 'subscription') {
69
- if (!observable.isObservable(result)) {
70
- throw new TRPCError.TRPCError({
71
- message: `Subscription ${path} did not return an observable`,
72
- code: 'INTERNAL_SERVER_ERROR'
73
- });
74
- }
75
- } else {
52
+ if (type !== 'subscription') {
76
53
  // send the value as data if the method is not a subscription
77
54
  respond({
78
55
  id,
@@ -84,69 +61,110 @@ function getWSConnectionHandler(opts) {
84
61
  });
85
62
  return;
86
63
  }
87
- const observable$1 = result;
88
- const sub1 = observable$1.subscribe({
89
- next (data) {
90
- respond({
91
- id,
92
- jsonrpc,
93
- result: {
94
- type: 'data',
95
- data
96
- }
97
- });
98
- },
99
- error (err) {
100
- const error = TRPCError.getTRPCErrorFromUnknown(err);
101
- opts.onError?.({
102
- error,
103
- path,
104
- type,
105
- ctx,
106
- req,
107
- input
108
- });
109
- respond({
110
- id,
111
- jsonrpc,
112
- error: getErrorShape.getErrorShape({
113
- config: router$1._def._config,
114
- error,
115
- type,
116
- path,
117
- input,
118
- ctx
119
- })
120
- });
121
- },
122
- complete () {
123
- respond({
124
- id,
125
- jsonrpc,
126
- result: {
127
- type: 'stopped'
128
- }
129
- });
130
- }
131
- });
64
+ if (!observable.isObservable(result) && !utils.isAsyncIterable(result)) {
65
+ throw new TRPCError.TRPCError({
66
+ message: `Subscription ${path} did not return an observable or a AsyncGenerator`,
67
+ code: 'INTERNAL_SERVER_ERROR'
68
+ });
69
+ }
132
70
  /* istanbul ignore next -- @preserve */ if (client.readyState !== WEBSOCKET_OPEN) {
133
71
  // if the client got disconnected whilst initializing the subscription
134
72
  // no need to send stopped message if the client is disconnected
135
- sub1.unsubscribe();
136
73
  return;
137
74
  }
138
75
  /* istanbul ignore next -- @preserve */ if (clientSubscriptions.has(id)) {
139
76
  // duplicate request ids for client
140
- stopSubscription(sub1, {
141
- id,
142
- jsonrpc
143
- });
144
77
  throw new TRPCError.TRPCError({
145
78
  message: `Duplicate id ${id}`,
146
79
  code: 'BAD_REQUEST'
147
80
  });
148
81
  }
149
- clientSubscriptions.set(id, sub1);
82
+ const iterable = observable.isObservable(result) ? observable.observableToAsyncIterable(result) : result;
83
+ const iterator = iterable[Symbol.asyncIterator]();
84
+ const abortController = new AbortController();
85
+ const abortPromise = new Promise((resolve)=>{
86
+ abortController.signal.onabort = ()=>resolve('abort');
87
+ });
88
+ utils.run(async ()=>{
89
+ while(true){
90
+ const next = await Promise.race([
91
+ iterator.next().catch(TRPCError.getTRPCErrorFromUnknown),
92
+ abortPromise
93
+ ]);
94
+ if (next === 'abort') {
95
+ await iterator.return?.();
96
+ break;
97
+ }
98
+ if (next instanceof Error) {
99
+ const error = TRPCError.getTRPCErrorFromUnknown(next);
100
+ opts.onError?.({
101
+ error,
102
+ path,
103
+ type,
104
+ ctx,
105
+ req,
106
+ input
107
+ });
108
+ respond({
109
+ id,
110
+ jsonrpc,
111
+ error: getErrorShape.getErrorShape({
112
+ config: router$1._def._config,
113
+ error,
114
+ type,
115
+ path,
116
+ input,
117
+ ctx
118
+ })
119
+ });
120
+ break;
121
+ }
122
+ if (next.done) {
123
+ break;
124
+ }
125
+ respond({
126
+ id,
127
+ jsonrpc,
128
+ result: {
129
+ type: 'data',
130
+ data: next.value
131
+ }
132
+ });
133
+ }
134
+ await iterator.return?.();
135
+ respond({
136
+ id,
137
+ jsonrpc,
138
+ result: {
139
+ type: 'stopped'
140
+ }
141
+ });
142
+ clientSubscriptions.delete(id);
143
+ }).catch((cause)=>{
144
+ const error = TRPCError.getTRPCErrorFromUnknown(cause);
145
+ opts.onError?.({
146
+ error,
147
+ path,
148
+ type,
149
+ ctx,
150
+ req,
151
+ input
152
+ });
153
+ respond({
154
+ id,
155
+ jsonrpc,
156
+ error: getErrorShape.getErrorShape({
157
+ config: router$1._def._config,
158
+ error,
159
+ type,
160
+ path,
161
+ input,
162
+ ctx
163
+ })
164
+ });
165
+ abortController.abort();
166
+ });
167
+ clientSubscriptions.set(id, abortController);
150
168
  respond({
151
169
  id,
152
170
  jsonrpc,
@@ -181,7 +199,6 @@ function getWSConnectionHandler(opts) {
181
199
  }
182
200
  client.on('message', async (message)=>{
183
201
  try {
184
- // eslint-disable-next-line @typescript-eslint/no-base-to-string
185
202
  const msgJSON = JSON.parse(message.toString());
186
203
  const msgs = Array.isArray(msgJSON) ? msgJSON : [
187
204
  msgJSON
@@ -222,7 +239,7 @@ function getWSConnectionHandler(opts) {
222
239
  });
223
240
  client.once('close', ()=>{
224
241
  for (const sub of clientSubscriptions.values()){
225
- sub.unsubscribe();
242
+ sub.abort();
226
243
  }
227
244
  clientSubscriptions.clear();
228
245
  });