@trpc/server 11.0.0-rc.359 → 11.0.0-rc.362

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 (168) hide show
  1. package/dist/@trpc/server/http.d.ts +7 -6
  2. package/dist/@trpc/server/http.d.ts.map +1 -1
  3. package/dist/@trpc/server/index.d.ts +1 -1
  4. package/dist/@trpc/server/index.d.ts.map +1 -1
  5. package/dist/adapters/aws-lambda/getPlanner.d.ts +13 -0
  6. package/dist/adapters/aws-lambda/getPlanner.d.ts.map +1 -0
  7. package/dist/adapters/aws-lambda/getPlanner.js +143 -0
  8. package/dist/adapters/aws-lambda/getPlanner.mjs +141 -0
  9. package/dist/adapters/aws-lambda/index.d.ts +12 -9
  10. package/dist/adapters/aws-lambda/index.d.ts.map +1 -1
  11. package/dist/adapters/aws-lambda/index.js +6 -65
  12. package/dist/adapters/aws-lambda/index.mjs +8 -61
  13. package/dist/adapters/express.d.ts.map +1 -1
  14. package/dist/adapters/express.js +1 -1
  15. package/dist/adapters/express.mjs +1 -1
  16. package/dist/adapters/fastify/fastifyRequestHandler.d.ts +10 -1
  17. package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
  18. package/dist/adapters/fastify/fastifyRequestHandler.js +12 -55
  19. package/dist/adapters/fastify/fastifyRequestHandler.mjs +13 -56
  20. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +1 -1
  21. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -1
  22. package/dist/adapters/fetch/fetchRequestHandler.d.ts +1 -5
  23. package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -1
  24. package/dist/adapters/fetch/fetchRequestHandler.js +28 -71
  25. package/dist/adapters/fetch/fetchRequestHandler.mjs +29 -72
  26. package/dist/adapters/fetch/types.d.ts +9 -12
  27. package/dist/adapters/fetch/types.d.ts.map +1 -1
  28. package/dist/adapters/next-app-dir/nextAppDirCaller.d.ts +2 -7
  29. package/dist/adapters/next-app-dir/nextAppDirCaller.d.ts.map +1 -1
  30. package/dist/adapters/next.d.ts.map +1 -1
  31. package/dist/adapters/next.js +1 -2
  32. package/dist/adapters/next.mjs +1 -2
  33. package/dist/adapters/node-http/incomingMessageToRequest.d.ts +18 -0
  34. package/dist/adapters/node-http/incomingMessageToRequest.d.ts.map +1 -0
  35. package/dist/adapters/node-http/incomingMessageToRequest.js +71 -0
  36. package/dist/adapters/node-http/incomingMessageToRequest.mjs +69 -0
  37. package/dist/adapters/node-http/index.d.ts +1 -0
  38. package/dist/adapters/node-http/index.d.ts.map +1 -1
  39. package/dist/adapters/node-http/index.js +2 -0
  40. package/dist/adapters/node-http/index.mjs +1 -0
  41. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +1 -1
  42. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
  43. package/dist/adapters/node-http/nodeHTTPRequestHandler.js +27 -72
  44. package/dist/adapters/node-http/nodeHTTPRequestHandler.mjs +28 -73
  45. package/dist/adapters/node-http/types.d.ts +2 -14
  46. package/dist/adapters/node-http/types.d.ts.map +1 -1
  47. package/dist/adapters/standalone.d.ts.map +1 -1
  48. package/dist/adapters/standalone.js +0 -1
  49. package/dist/adapters/standalone.mjs +0 -1
  50. package/dist/adapters/ws.d.ts +2 -12
  51. package/dist/adapters/ws.d.ts.map +1 -1
  52. package/dist/adapters/ws.js +1 -1
  53. package/dist/adapters/ws.mjs +1 -1
  54. package/dist/bundle-analysis.json +173 -259
  55. package/dist/http.js +4 -4
  56. package/dist/http.mjs +2 -2
  57. package/dist/index.js +2 -2
  58. package/dist/index.mjs +1 -1
  59. package/dist/unstable-core-do-not-import/http/contentType.d.ts +8 -28
  60. package/dist/unstable-core-do-not-import/http/contentType.d.ts.map +1 -1
  61. package/dist/unstable-core-do-not-import/http/contentType.js +164 -38
  62. package/dist/unstable-core-do-not-import/http/contentType.mjs +164 -38
  63. package/dist/unstable-core-do-not-import/http/contentTypeParsers.d.ts +14 -0
  64. package/dist/unstable-core-do-not-import/http/contentTypeParsers.d.ts.map +1 -0
  65. package/dist/unstable-core-do-not-import/http/contentTypeParsers.js +14 -0
  66. package/dist/unstable-core-do-not-import/http/contentTypeParsers.mjs +12 -0
  67. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.d.ts +1 -1
  68. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.d.ts.map +1 -1
  69. package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.d.ts +7 -43
  70. package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.d.ts.map +1 -1
  71. package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.js +115 -124
  72. package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.mjs +116 -125
  73. package/dist/unstable-core-do-not-import/http/types.d.ts +25 -29
  74. package/dist/unstable-core-do-not-import/http/types.d.ts.map +1 -1
  75. package/dist/unstable-core-do-not-import/initTRPC.d.ts +1 -1
  76. package/dist/unstable-core-do-not-import/procedureBuilder.d.ts +1 -3
  77. package/dist/unstable-core-do-not-import/procedureBuilder.d.ts.map +1 -1
  78. package/dist/unstable-core-do-not-import/procedureBuilder.js +0 -2
  79. package/dist/unstable-core-do-not-import/procedureBuilder.mjs +1 -2
  80. package/dist/unstable-core-do-not-import/rootConfig.d.ts +12 -0
  81. package/dist/unstable-core-do-not-import/rootConfig.d.ts.map +1 -1
  82. package/dist/unstable-core-do-not-import/utils.d.ts +3 -0
  83. package/dist/unstable-core-do-not-import/utils.d.ts.map +1 -1
  84. package/dist/unstable-core-do-not-import/utils.js +2 -0
  85. package/dist/unstable-core-do-not-import/utils.mjs +2 -1
  86. package/dist/unstable-core-do-not-import.d.ts +9 -3
  87. package/dist/unstable-core-do-not-import.d.ts.map +1 -1
  88. package/dist/unstable-core-do-not-import.js +11 -9
  89. package/dist/unstable-core-do-not-import.mjs +7 -6
  90. package/package.json +3 -14
  91. package/src/@trpc/server/http.ts +7 -13
  92. package/src/@trpc/server/index.ts +1 -0
  93. package/src/adapters/aws-lambda/getPlanner.ts +191 -0
  94. package/src/adapters/aws-lambda/index.ts +43 -92
  95. package/src/adapters/express.ts +1 -6
  96. package/src/adapters/fastify/fastifyRequestHandler.ts +22 -77
  97. package/src/adapters/fastify/fastifyTRPCPlugin.ts +1 -1
  98. package/src/adapters/fetch/fetchRequestHandler.ts +34 -98
  99. package/src/adapters/fetch/types.ts +24 -15
  100. package/src/adapters/next-app-dir/nextAppDirCaller.ts +2 -9
  101. package/src/adapters/next.ts +1 -6
  102. package/src/adapters/node-http/incomingMessageToRequest.ts +94 -0
  103. package/src/adapters/node-http/index.ts +1 -0
  104. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +31 -110
  105. package/src/adapters/node-http/types.ts +9 -19
  106. package/src/adapters/standalone.ts +1 -2
  107. package/src/adapters/ws.ts +9 -14
  108. package/src/unstable-core-do-not-import/http/contentType.ts +199 -82
  109. package/src/unstable-core-do-not-import/http/contentTypeParsers.ts +29 -0
  110. package/src/unstable-core-do-not-import/http/getHTTPStatusCode.ts +2 -2
  111. package/src/unstable-core-do-not-import/http/resolveHTTPResponse.ts +133 -205
  112. package/src/unstable-core-do-not-import/http/types.ts +25 -32
  113. package/src/unstable-core-do-not-import/procedureBuilder.ts +2 -4
  114. package/src/unstable-core-do-not-import/rootConfig.ts +21 -0
  115. package/src/unstable-core-do-not-import/utils.ts +4 -0
  116. package/src/unstable-core-do-not-import.ts +9 -3
  117. package/adapters/node-http/content-type/form-data/index.d.ts +0 -1
  118. package/adapters/node-http/content-type/form-data/index.js +0 -1
  119. package/adapters/node-http/content-type/json/index.d.ts +0 -1
  120. package/adapters/node-http/content-type/json/index.js +0 -1
  121. package/dist/adapters/aws-lambda/utils.d.ts +0 -40
  122. package/dist/adapters/aws-lambda/utils.d.ts.map +0 -1
  123. package/dist/adapters/aws-lambda/utils.js +0 -100
  124. package/dist/adapters/aws-lambda/utils.mjs +0 -93
  125. package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.d.ts +0 -73
  126. package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.d.ts.map +0 -1
  127. package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.js +0 -161
  128. package/dist/adapters/node-http/content-type/form-data/fileUploadHandler.mjs +0 -157
  129. package/dist/adapters/node-http/content-type/form-data/index.d.ts +0 -26
  130. package/dist/adapters/node-http/content-type/form-data/index.d.ts.map +0 -1
  131. package/dist/adapters/node-http/content-type/form-data/index.js +0 -135
  132. package/dist/adapters/node-http/content-type/form-data/index.mjs +0 -108
  133. package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.d.ts +0 -31
  134. package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.d.ts.map +0 -1
  135. package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.js +0 -29
  136. package/dist/adapters/node-http/content-type/form-data/memoryUploadHandler.mjs +0 -27
  137. package/dist/adapters/node-http/content-type/form-data/streamSlice.d.ts +0 -16
  138. package/dist/adapters/node-http/content-type/form-data/streamSlice.d.ts.map +0 -1
  139. package/dist/adapters/node-http/content-type/form-data/streamSlice.js +0 -46
  140. package/dist/adapters/node-http/content-type/form-data/streamSlice.mjs +0 -44
  141. package/dist/adapters/node-http/content-type/form-data/uploadHandler.d.ts +0 -45
  142. package/dist/adapters/node-http/content-type/form-data/uploadHandler.d.ts.map +0 -1
  143. package/dist/adapters/node-http/content-type/form-data/uploadHandler.js +0 -30
  144. package/dist/adapters/node-http/content-type/form-data/uploadHandler.mjs +0 -26
  145. package/dist/adapters/node-http/content-type/json/getPostBody.d.ts +0 -7
  146. package/dist/adapters/node-http/content-type/json/getPostBody.d.ts.map +0 -1
  147. package/dist/adapters/node-http/content-type/json/getPostBody.js +0 -53
  148. package/dist/adapters/node-http/content-type/json/getPostBody.mjs +0 -51
  149. package/dist/adapters/node-http/content-type/json/index.d.ts +0 -2
  150. package/dist/adapters/node-http/content-type/json/index.d.ts.map +0 -1
  151. package/dist/adapters/node-http/content-type/json/index.js +0 -16
  152. package/dist/adapters/node-http/content-type/json/index.mjs +0 -14
  153. package/dist/adapters/node-http/internals/contentType.d.ts +0 -9
  154. package/dist/adapters/node-http/internals/contentType.d.ts.map +0 -1
  155. package/dist/adapters/node-http/internals/contentType.js +0 -8
  156. package/dist/adapters/node-http/internals/contentType.mjs +0 -6
  157. package/dist/unstable-core-do-not-import/http/index.d.ts +0 -12
  158. package/dist/unstable-core-do-not-import/http/index.d.ts.map +0 -1
  159. package/src/adapters/aws-lambda/utils.ts +0 -164
  160. package/src/adapters/node-http/content-type/form-data/fileUploadHandler.ts +0 -277
  161. package/src/adapters/node-http/content-type/form-data/index.ts +0 -163
  162. package/src/adapters/node-http/content-type/form-data/memoryUploadHandler.ts +0 -56
  163. package/src/adapters/node-http/content-type/form-data/streamSlice.ts +0 -56
  164. package/src/adapters/node-http/content-type/form-data/uploadHandler.ts +0 -89
  165. package/src/adapters/node-http/content-type/json/getPostBody.ts +0 -58
  166. package/src/adapters/node-http/content-type/json/index.ts +0 -11
  167. package/src/adapters/node-http/internals/contentType.ts +0 -31
  168. package/src/unstable-core-do-not-import/http/index.ts +0 -29
@@ -0,0 +1,71 @@
1
+ 'use strict';
2
+
3
+ var TRPCError = require('../../unstable-core-do-not-import/error/TRPCError.js');
4
+ require('../../unstable-core-do-not-import/rootConfig.js');
5
+
6
+ /**
7
+ * Convert an incoming message to a body stream with a max size
8
+ */ function incomingMessageToBodyStream(req, opts) {
9
+ let size = 0;
10
+ const maxBodySize = opts.maxBodySize;
11
+ let controller = null;
12
+ const stream = new ReadableStream({
13
+ start (c) {
14
+ controller = c;
15
+ },
16
+ async pull (c) {
17
+ const chunk = req.read();
18
+ if (chunk) {
19
+ size += chunk.length;
20
+ }
21
+ if (maxBodySize !== null && size > maxBodySize) {
22
+ controller.error(new TRPCError.TRPCError({
23
+ code: 'PAYLOAD_TOO_LARGE'
24
+ }));
25
+ return;
26
+ }
27
+ if (chunk === null) {
28
+ c.close();
29
+ return;
30
+ }
31
+ controller.enqueue(chunk);
32
+ },
33
+ cancel () {
34
+ req.destroy();
35
+ }
36
+ });
37
+ return stream;
38
+ }
39
+ const bodyMethods = [
40
+ 'POST',
41
+ 'PUT',
42
+ 'PATCH'
43
+ ];
44
+ /**
45
+ * Convert an [`IncomingMessage`](https://nodejs.org/api/http.html#class-httpincomingmessage) to a [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request)
46
+ */ function incomingMessageToRequest(req, opts) {
47
+ const ac = new AbortController();
48
+ const headers = new Headers(req.headers);
49
+ const url = `http://${headers.get('host')}${req.url}`;
50
+ req.once('aborted', ()=>ac.abort());
51
+ const init = {
52
+ headers,
53
+ method: req.method,
54
+ signal: ac.signal,
55
+ // @ts-expect-error this is fine
56
+ duplex: 'half'
57
+ };
58
+ if (req.method && bodyMethods.includes(req.method)) {
59
+ if (!('body' in req)) {
60
+ init.body = incomingMessageToBodyStream(req, opts);
61
+ } else if (typeof req.body === 'string') {
62
+ init.body = req.body;
63
+ } else if (req.body !== undefined) {
64
+ init.body = JSON.stringify(req.body);
65
+ }
66
+ }
67
+ const request = new Request(url, init);
68
+ return request;
69
+ }
70
+
71
+ exports.incomingMessageToRequest = incomingMessageToRequest;
@@ -0,0 +1,69 @@
1
+ import { TRPCError } from '../../unstable-core-do-not-import/error/TRPCError.mjs';
2
+ import '../../unstable-core-do-not-import/rootConfig.mjs';
3
+
4
+ /**
5
+ * Convert an incoming message to a body stream with a max size
6
+ */ function incomingMessageToBodyStream(req, opts) {
7
+ let size = 0;
8
+ const maxBodySize = opts.maxBodySize;
9
+ let controller = null;
10
+ const stream = new ReadableStream({
11
+ start (c) {
12
+ controller = c;
13
+ },
14
+ async pull (c) {
15
+ const chunk = req.read();
16
+ if (chunk) {
17
+ size += chunk.length;
18
+ }
19
+ if (maxBodySize !== null && size > maxBodySize) {
20
+ controller.error(new TRPCError({
21
+ code: 'PAYLOAD_TOO_LARGE'
22
+ }));
23
+ return;
24
+ }
25
+ if (chunk === null) {
26
+ c.close();
27
+ return;
28
+ }
29
+ controller.enqueue(chunk);
30
+ },
31
+ cancel () {
32
+ req.destroy();
33
+ }
34
+ });
35
+ return stream;
36
+ }
37
+ const bodyMethods = [
38
+ 'POST',
39
+ 'PUT',
40
+ 'PATCH'
41
+ ];
42
+ /**
43
+ * Convert an [`IncomingMessage`](https://nodejs.org/api/http.html#class-httpincomingmessage) to a [`Request`](https://developer.mozilla.org/en-US/docs/Web/API/Request)
44
+ */ function incomingMessageToRequest(req, opts) {
45
+ const ac = new AbortController();
46
+ const headers = new Headers(req.headers);
47
+ const url = `http://${headers.get('host')}${req.url}`;
48
+ req.once('aborted', ()=>ac.abort());
49
+ const init = {
50
+ headers,
51
+ method: req.method,
52
+ signal: ac.signal,
53
+ // @ts-expect-error this is fine
54
+ duplex: 'half'
55
+ };
56
+ if (req.method && bodyMethods.includes(req.method)) {
57
+ if (!('body' in req)) {
58
+ init.body = incomingMessageToBodyStream(req, opts);
59
+ } else if (typeof req.body === 'string') {
60
+ init.body = req.body;
61
+ } else if (req.body !== undefined) {
62
+ init.body = JSON.stringify(req.body);
63
+ }
64
+ }
65
+ const request = new Request(url, init);
66
+ return request;
67
+ }
68
+
69
+ export { incomingMessageToRequest };
@@ -1,3 +1,4 @@
1
1
  export * from './nodeHTTPRequestHandler';
2
2
  export * from './types';
3
+ export * from './incomingMessageToRequest';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/node-http/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/node-http/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,SAAS,CAAC;AACxB,cAAc,4BAA4B,CAAC"}
@@ -1,7 +1,9 @@
1
1
  'use strict';
2
2
 
3
3
  var nodeHTTPRequestHandler = require('./nodeHTTPRequestHandler.js');
4
+ var incomingMessageToRequest = require('./incomingMessageToRequest.js');
4
5
 
5
6
 
6
7
 
7
8
  exports.nodeHTTPRequestHandler = nodeHTTPRequestHandler.nodeHTTPRequestHandler;
9
+ exports.incomingMessageToRequest = incomingMessageToRequest.incomingMessageToRequest;
@@ -1 +1,2 @@
1
1
  export { nodeHTTPRequestHandler } from './nodeHTTPRequestHandler.mjs';
2
+ export { incomingMessageToRequest } from './incomingMessageToRequest.mjs';
@@ -7,7 +7,7 @@
7
7
  * import type { HTTPBaseHandlerOptions } from '@trpc/server/http'
8
8
  * ```
9
9
  */
10
- import type { AnyRouter } from '../../@trpc/server';
10
+ import { type AnyRouter } from '../../@trpc/server';
11
11
  import type { NodeHTTPRequest, NodeHTTPRequestHandlerOptions, NodeHTTPResponse } from './types';
12
12
  export declare function nodeHTTPRequestHandler<TRouter extends AnyRouter, TRequest extends NodeHTTPRequest, TResponse extends NodeHTTPResponse>(opts: NodeHTTPRequestHandlerOptions<TRouter, TRequest, TResponse>): Promise<void>;
13
13
  //# sourceMappingURL=nodeHTTPRequestHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nodeHTTPRequestHandler.d.ts","sourceRoot":"","sources":["../../../src/adapters/node-http/nodeHTTPRequestHandler.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAapD,OAAO,KAAK,EACV,eAAe,EACf,6BAA6B,EAC7B,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAIjB,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,iBA2HlE"}
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;AAUjB,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,iBA8ClE"}
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
+ var TRPCError = require('../../unstable-core-do-not-import/error/TRPCError.js');
3
4
  var resolveHTTPResponse = require('../../unstable-core-do-not-import/http/resolveHTTPResponse.js');
4
- var batchStreamFormatter = require('../../unstable-core-do-not-import/http/batchStreamFormatter.js');
5
5
  require('../../unstable-core-do-not-import/rootConfig.js');
6
- var index = require('./content-type/json/index.js');
6
+ var incomingMessageToRequest = require('./incomingMessageToRequest.js');
7
7
 
8
8
  /**
9
9
  * 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`
@@ -13,13 +13,18 @@ var index = require('./content-type/json/index.js');
13
13
  * import type { AnyTRPCRouter } from '@trpc/server'
14
14
  * import type { HTTPBaseHandlerOptions } from '@trpc/server/http'
15
15
  * ```
16
- */ /* eslint-disable @typescript-eslint/no-non-null-assertion */ // @trpc/server
17
- const defaultJSONContentTypeHandler = index.nodeHTTPJSONContentTypeHandler();
16
+ */ // @trpc/server
17
+ function assertAsyncIterable(value) {
18
+ if (!(Symbol.asyncIterator in value)) {
19
+ throw new Error('Expected AsyncIterable - are you using Node >= 18.0.0?');
20
+ }
21
+ }
18
22
  async function nodeHTTPRequestHandler(opts) {
19
23
  const handleViaMiddleware = opts.middleware ?? ((_req, _res, next)=>next());
20
24
  return handleViaMiddleware(opts.req, opts.res, async (err)=>{
21
- if (err) throw err;
22
- //
25
+ const req = incomingMessageToRequest.incomingMessageToRequest(opts.req, {
26
+ maxBodySize: opts.maxBodySize ?? null
27
+ });
23
28
  // Build tRPC dependencies
24
29
  const createContext = async (innerOpts)=>{
25
30
  return await opts.createContext?.({
@@ -27,82 +32,32 @@ async function nodeHTTPRequestHandler(opts) {
27
32
  ...innerOpts
28
33
  });
29
34
  };
30
- const query = opts.req.query ? new URLSearchParams(opts.req.query) : new URLSearchParams(opts.req.url.split('?')[1]);
31
- const jsonContentTypeHandler = defaultJSONContentTypeHandler;
32
- const contentTypeHandlers = opts.experimental_contentTypeHandlers ?? [
33
- jsonContentTypeHandler
34
- ];
35
- const contentTypeHandler = contentTypeHandlers.find((handler)=>handler.isMatch({
36
- // FIXME: no typecasting should be needed here
37
- ...opts,
38
- query
39
- })) ?? // fallback to json
40
- jsonContentTypeHandler;
41
- const bodyResult = await contentTypeHandler.getBody({
42
- // FIXME: no typecasting should be needed here
43
- ...opts,
44
- query
45
- });
46
- const req = {
47
- method: opts.req.method,
48
- headers: opts.req.headers,
49
- query,
50
- body: bodyResult.ok ? bodyResult.data : undefined
51
- };
52
- let isStream = false;
53
- let formatter;
54
- const unstable_onHead = (head, isStreaming)=>{
55
- if ('status' in head && (!opts.res.statusCode || opts.res.statusCode === 200)) {
56
- opts.res.statusCode = head.status;
57
- }
58
- for (const [key, value] of Object.entries(head.headers ?? {})){
59
- /* istanbul ignore if -- @preserve */ if (typeof value === 'undefined') {
60
- continue;
61
- }
62
- opts.res.setHeader(key, value);
63
- }
64
- if (isStreaming) {
65
- opts.res.setHeader('Transfer-Encoding', 'chunked');
66
- const vary = opts.res.getHeader('Vary');
67
- opts.res.setHeader('Vary', vary ? 'trpc-batch-mode, ' + vary : 'trpc-batch-mode');
68
- isStream = true;
69
- formatter = batchStreamFormatter.getBatchStreamFormatter();
70
- opts.res.flushHeaders();
71
- }
72
- };
73
- const unstable_onChunk = ([index, string])=>{
74
- if (index === -1) {
75
- /**
76
- * Full response, no streaming. This can happen
77
- * - if the response is an error
78
- * - if response is empty (HEAD request)
79
- */ opts.res.end(string);
80
- } else {
81
- opts.res.write(formatter(index, string));
82
- opts.res.flush?.();
83
- }
84
- };
85
- await resolveHTTPResponse.resolveHTTPResponse({
35
+ const response = await resolveHTTPResponse.resolveResponse({
86
36
  ...opts,
87
37
  req,
38
+ error: err ? TRPCError.getTRPCErrorFromUnknown(err) : null,
88
39
  createContext,
89
- error: bodyResult.ok ? null : bodyResult.error,
90
- preprocessedBody: bodyResult.ok ? bodyResult.preprocessed : false,
91
40
  onError (o) {
92
41
  opts?.onError?.({
93
42
  ...o,
94
43
  req: opts.req
95
44
  });
96
- },
97
- contentTypeHandler,
98
- unstable_onHead,
99
- unstable_onChunk
45
+ }
100
46
  });
101
- if (isStream) {
102
- opts.res.write(formatter.end());
103
- opts.res.end();
47
+ if (opts.res.statusCode === 200) {
48
+ // if the status code is set, we assume that it's been manually overridden
49
+ opts.res.statusCode = response.status;
50
+ }
51
+ for (const [key, value] of response.headers){
52
+ opts.res.setHeader(key, value);
53
+ }
54
+ if (response.body) {
55
+ assertAsyncIterable(response.body);
56
+ for await (const chunk of response.body){
57
+ opts.res.write(chunk);
58
+ }
104
59
  }
105
- return opts.res;
60
+ opts.res.end();
106
61
  });
107
62
  }
108
63
 
@@ -1,7 +1,7 @@
1
- import { resolveHTTPResponse } from '../../unstable-core-do-not-import/http/resolveHTTPResponse.mjs';
2
- import { getBatchStreamFormatter } from '../../unstable-core-do-not-import/http/batchStreamFormatter.mjs';
1
+ import { getTRPCErrorFromUnknown } from '../../unstable-core-do-not-import/error/TRPCError.mjs';
2
+ import { resolveResponse } from '../../unstable-core-do-not-import/http/resolveHTTPResponse.mjs';
3
3
  import '../../unstable-core-do-not-import/rootConfig.mjs';
4
- import { nodeHTTPJSONContentTypeHandler } from './content-type/json/index.mjs';
4
+ import { incomingMessageToRequest } from './incomingMessageToRequest.mjs';
5
5
 
6
6
  /**
7
7
  * 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`
@@ -11,13 +11,18 @@ import { nodeHTTPJSONContentTypeHandler } from './content-type/json/index.mjs';
11
11
  * import type { AnyTRPCRouter } from '@trpc/server'
12
12
  * import type { HTTPBaseHandlerOptions } from '@trpc/server/http'
13
13
  * ```
14
- */ /* eslint-disable @typescript-eslint/no-non-null-assertion */ // @trpc/server
15
- const defaultJSONContentTypeHandler = nodeHTTPJSONContentTypeHandler();
14
+ */ // @trpc/server
15
+ function assertAsyncIterable(value) {
16
+ if (!(Symbol.asyncIterator in value)) {
17
+ throw new Error('Expected AsyncIterable - are you using Node >= 18.0.0?');
18
+ }
19
+ }
16
20
  async function nodeHTTPRequestHandler(opts) {
17
21
  const handleViaMiddleware = opts.middleware ?? ((_req, _res, next)=>next());
18
22
  return handleViaMiddleware(opts.req, opts.res, async (err)=>{
19
- if (err) throw err;
20
- //
23
+ const req = incomingMessageToRequest(opts.req, {
24
+ maxBodySize: opts.maxBodySize ?? null
25
+ });
21
26
  // Build tRPC dependencies
22
27
  const createContext = async (innerOpts)=>{
23
28
  return await opts.createContext?.({
@@ -25,82 +30,32 @@ async function nodeHTTPRequestHandler(opts) {
25
30
  ...innerOpts
26
31
  });
27
32
  };
28
- const query = opts.req.query ? new URLSearchParams(opts.req.query) : new URLSearchParams(opts.req.url.split('?')[1]);
29
- const jsonContentTypeHandler = defaultJSONContentTypeHandler;
30
- const contentTypeHandlers = opts.experimental_contentTypeHandlers ?? [
31
- jsonContentTypeHandler
32
- ];
33
- const contentTypeHandler = contentTypeHandlers.find((handler)=>handler.isMatch({
34
- // FIXME: no typecasting should be needed here
35
- ...opts,
36
- query
37
- })) ?? // fallback to json
38
- jsonContentTypeHandler;
39
- const bodyResult = await contentTypeHandler.getBody({
40
- // FIXME: no typecasting should be needed here
41
- ...opts,
42
- query
43
- });
44
- const req = {
45
- method: opts.req.method,
46
- headers: opts.req.headers,
47
- query,
48
- body: bodyResult.ok ? bodyResult.data : undefined
49
- };
50
- let isStream = false;
51
- let formatter;
52
- const unstable_onHead = (head, isStreaming)=>{
53
- if ('status' in head && (!opts.res.statusCode || opts.res.statusCode === 200)) {
54
- opts.res.statusCode = head.status;
55
- }
56
- for (const [key, value] of Object.entries(head.headers ?? {})){
57
- /* istanbul ignore if -- @preserve */ if (typeof value === 'undefined') {
58
- continue;
59
- }
60
- opts.res.setHeader(key, value);
61
- }
62
- if (isStreaming) {
63
- opts.res.setHeader('Transfer-Encoding', 'chunked');
64
- const vary = opts.res.getHeader('Vary');
65
- opts.res.setHeader('Vary', vary ? 'trpc-batch-mode, ' + vary : 'trpc-batch-mode');
66
- isStream = true;
67
- formatter = getBatchStreamFormatter();
68
- opts.res.flushHeaders();
69
- }
70
- };
71
- const unstable_onChunk = ([index, string])=>{
72
- if (index === -1) {
73
- /**
74
- * Full response, no streaming. This can happen
75
- * - if the response is an error
76
- * - if response is empty (HEAD request)
77
- */ opts.res.end(string);
78
- } else {
79
- opts.res.write(formatter(index, string));
80
- opts.res.flush?.();
81
- }
82
- };
83
- await resolveHTTPResponse({
33
+ const response = await resolveResponse({
84
34
  ...opts,
85
35
  req,
36
+ error: err ? getTRPCErrorFromUnknown(err) : null,
86
37
  createContext,
87
- error: bodyResult.ok ? null : bodyResult.error,
88
- preprocessedBody: bodyResult.ok ? bodyResult.preprocessed : false,
89
38
  onError (o) {
90
39
  opts?.onError?.({
91
40
  ...o,
92
41
  req: opts.req
93
42
  });
94
- },
95
- contentTypeHandler,
96
- unstable_onHead,
97
- unstable_onChunk
43
+ }
98
44
  });
99
- if (isStream) {
100
- opts.res.write(formatter.end());
101
- opts.res.end();
45
+ if (opts.res.statusCode === 200) {
46
+ // if the status code is set, we assume that it's been manually overridden
47
+ opts.res.statusCode = response.status;
48
+ }
49
+ for (const [key, value] of response.headers){
50
+ opts.res.setHeader(key, value);
51
+ }
52
+ if (response.body) {
53
+ assertAsyncIterable(response.body);
54
+ for await (const chunk of response.body){
55
+ opts.res.write(chunk);
56
+ }
102
57
  }
103
- return opts.res;
58
+ opts.res.end();
104
59
  });
105
60
  }
106
61
 
@@ -9,10 +9,9 @@
9
9
  * ```
10
10
  */
11
11
  import type * as http from 'http';
12
- import type { AnyRouter, inferRouterContext } from '../../@trpc/server';
12
+ import type { AnyRouter, CreateContextCallback, inferRouterContext } from '../../@trpc/server';
13
13
  import type { HTTPBaseHandlerOptions, TRPCRequestInfo } from '../../@trpc/server/http';
14
14
  import type { MaybePromise } from '../../unstable-core-do-not-import';
15
- import type { NodeHTTPContentTypeHandler } from './internals/contentType';
16
15
  interface ParsedQs {
17
16
  [key: string]: ParsedQs | ParsedQs[] | string[] | string | undefined;
18
17
  }
@@ -31,17 +30,7 @@ export type NodeHTTPResponse = http.ServerResponse & {
31
30
  */
32
31
  flush?: () => void;
33
32
  };
34
- export type NodeHTTPCreateContextOption<TRouter extends AnyRouter, TRequest, TResponse> = object extends inferRouterContext<TRouter> ? {
35
- /**
36
- * @link https://trpc.io/docs/v11/context
37
- **/
38
- createContext?: NodeHTTPCreateContextFn<TRouter, TRequest, TResponse>;
39
- } : {
40
- /**
41
- * @link https://trpc.io/docs/v11/context
42
- **/
43
- createContext: NodeHTTPCreateContextFn<TRouter, TRequest, TResponse>;
44
- };
33
+ export type NodeHTTPCreateContextOption<TRouter extends AnyRouter, TRequest, TResponse> = CreateContextCallback<inferRouterContext<TRouter>, NodeHTTPCreateContextFn<TRouter, TRequest, TResponse>>;
45
34
  /**
46
35
  * @internal
47
36
  */
@@ -65,7 +54,6 @@ export type NodeHTTPHandlerOptions<TRouter extends AnyRouter, TRequest extends N
65
54
  */
66
55
  middleware?: ConnectMiddleware;
67
56
  maxBodySize?: number;
68
- experimental_contentTypeHandlers?: NodeHTTPContentTypeHandler<TRequest, TResponse>[];
69
57
  };
70
58
  export type NodeHTTPRequestHandlerOptions<TRouter extends AnyRouter, TRequest extends NodeHTTPRequest, TResponse extends NodeHTTPResponse> = {
71
59
  req: TRequest;
@@ -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,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EAChB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAE1E,UAAU,QAAQ;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;CACtE;AAED,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,GAAG;IACnD,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,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,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,GAC1C;IACE;;QAEI;IACJ,aAAa,CAAC,EAAE,uBAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;CACvE,GACD;IACE;;QAEI;IACJ,aAAa,EAAE,uBAAuB,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;CACtE,CAAC;AAEN;;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;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC,CAAC,EAAE,0BAA0B,CAC3D,QAAQ,EACR,SAAS,CACV,EAAE,CAAC;CACL,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,UAAU,QAAQ;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;CACtE;AAED,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,GAAG;IACnD,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,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;IAC/B,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 +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,mBAelE;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,KAAK,eAAe,OAAO,KAAK,cAAc,mBAclE;AAED,wBAAgB,gBAAgB,CAAC,OAAO,SAAS,SAAS,EACxD,IAAI,EAAE,wBAAwB,CAAC,OAAO,CAAC,wEAIxC"}
@@ -12,7 +12,6 @@ function createHTTPHandler(opts) {
12
12
  // /procedure -> procedure
13
13
  const path = url.pathname.slice(1);
14
14
  await nodeHTTPRequestHandler.nodeHTTPRequestHandler({
15
- // FIXME: no typecasting should be needed here
16
15
  ...opts,
17
16
  req,
18
17
  res,
@@ -10,7 +10,6 @@ function createHTTPHandler(opts) {
10
10
  // /procedure -> procedure
11
11
  const path = url.pathname.slice(1);
12
12
  await nodeHTTPRequestHandler({
13
- // FIXME: no typecasting should be needed here
14
13
  ...opts,
15
14
  req,
16
15
  res,
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import type { IncomingMessage } from 'http';
3
3
  import type ws from 'ws';
4
- import type { AnyRouter, inferRouterContext } from '../@trpc/server';
4
+ import type { AnyRouter, CreateContextCallback, inferRouterContext } from '../@trpc/server';
5
5
  import type { BaseHandlerOptions } from '../@trpc/server/http';
6
6
  import type { MaybePromise } from '../unstable-core-do-not-import';
7
7
  import type { NodeHTTPCreateContextFnOptions } from './node-http';
@@ -13,17 +13,7 @@ export type CreateWSSContextFnOptions = Omit<NodeHTTPCreateContextFnOptions<Inco
13
13
  * @public
14
14
  */
15
15
  export type CreateWSSContextFn<TRouter extends AnyRouter> = (opts: CreateWSSContextFnOptions) => MaybePromise<inferRouterContext<TRouter>>;
16
- export type WSConnectionHandlerOptions<TRouter extends AnyRouter> = BaseHandlerOptions<TRouter, IncomingMessage> & (object extends inferRouterContext<TRouter> ? {
17
- /**
18
- * @link https://trpc.io/docs/v11/context
19
- **/
20
- createContext?: CreateWSSContextFn<TRouter>;
21
- } : {
22
- /**
23
- * @link https://trpc.io/docs/v11/context
24
- **/
25
- createContext: CreateWSSContextFn<TRouter>;
26
- });
16
+ export type WSConnectionHandlerOptions<TRouter extends AnyRouter> = BaseHandlerOptions<TRouter, IncomingMessage> & CreateContextCallback<inferRouterContext<TRouter>, CreateWSSContextFn<TRouter>>;
27
17
  /**
28
18
  * Web socket server handler
29
19
  */
@@ -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,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAQrE,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,CAAC,MAAM,SAAS,kBAAkB,CAAC,OAAO,CAAC,GACvC;IACE;;QAEI;IACJ,aAAa,CAAC,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;CAC7C,GACD;IACE;;QAEI;IACJ,aAAa,EAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;CAC5C,CAAC,CAAC;AAEX;;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;CACjB,CAAC;AAEJ,wBAAgB,sBAAsB,CAAC,OAAO,SAAS,SAAS,EAC9D,IAAI,EAAE,0BAA0B,CAAC,OAAO,CAAC,YAKnB,YAAY,OAAO,eAAe,mBAoPzD;AAED,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;;EA2BjC"}
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;CACjB,CAAC;AAEJ,wBAAgB,sBAAsB,CAAC,OAAO,SAAS,SAAS,EAC9D,IAAI,EAAE,0BAA0B,CAAC,OAAO,CAAC,YAKnB,YAAY,OAAO,eAAe,mBAoPzD;AAED,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC;;EA2BjC"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var getErrorShape = require('../unstable-core-do-not-import/error/getErrorShape.js');
4
3
  var TRPCError = require('../unstable-core-do-not-import/error/TRPCError.js');
4
+ var getErrorShape = require('../unstable-core-do-not-import/error/getErrorShape.js');
5
5
  var parseTRPCMessage = require('../unstable-core-do-not-import/rpc/parseTRPCMessage.js');
6
6
  var router = require('../unstable-core-do-not-import/router.js');
7
7
  var transformer = require('../unstable-core-do-not-import/transformer.js');
@@ -1,5 +1,5 @@
1
- import { getErrorShape } from '../unstable-core-do-not-import/error/getErrorShape.mjs';
2
1
  import { TRPCError, getTRPCErrorFromUnknown } from '../unstable-core-do-not-import/error/TRPCError.mjs';
2
+ import { getErrorShape } from '../unstable-core-do-not-import/error/getErrorShape.mjs';
3
3
  import { parseTRPCMessage } from '../unstable-core-do-not-import/rpc/parseTRPCMessage.mjs';
4
4
  import { callProcedure } from '../unstable-core-do-not-import/router.mjs';
5
5
  import { transformTRPCResponse } from '../unstable-core-do-not-import/transformer.mjs';