@trpc/server 11.0.0-rc.361 → 11.0.0-rc.363

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 (178) hide show
  1. package/dist/@trpc/server/http.d.ts +7 -5
  2. package/dist/@trpc/server/http.d.ts.map +1 -1
  3. package/dist/@trpc/server/index.d.ts +1 -2
  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 +8 -77
  12. package/dist/adapters/aws-lambda/index.mjs +9 -72
  13. package/dist/adapters/express.js +1 -0
  14. package/dist/adapters/express.mjs +1 -0
  15. package/dist/adapters/fastify/fastifyRequestHandler.d.ts +19 -2
  16. package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
  17. package/dist/adapters/fastify/fastifyRequestHandler.js +22 -64
  18. package/dist/adapters/fastify/fastifyRequestHandler.mjs +22 -64
  19. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts +1 -1
  20. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -1
  21. package/dist/adapters/fastify/fastifyTRPCPlugin.js +1 -0
  22. package/dist/adapters/fastify/fastifyTRPCPlugin.mjs +1 -0
  23. package/dist/adapters/fetch/fetchRequestHandler.d.ts +2 -2
  24. package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -1
  25. package/dist/adapters/fetch/fetchRequestHandler.js +29 -86
  26. package/dist/adapters/fetch/fetchRequestHandler.mjs +29 -86
  27. package/dist/adapters/fetch/types.d.ts +2 -2
  28. package/dist/adapters/fetch/types.d.ts.map +1 -1
  29. package/dist/adapters/next.js +1 -1
  30. package/dist/adapters/next.mjs +1 -1
  31. package/dist/adapters/node-http/incomingMessageToRequest.d.ts +18 -0
  32. package/dist/adapters/node-http/incomingMessageToRequest.d.ts.map +1 -0
  33. package/dist/adapters/node-http/incomingMessageToRequest.js +71 -0
  34. package/dist/adapters/node-http/incomingMessageToRequest.mjs +69 -0
  35. package/dist/adapters/node-http/index.d.ts +1 -0
  36. package/dist/adapters/node-http/index.d.ts.map +1 -1
  37. package/dist/adapters/node-http/index.js +2 -0
  38. package/dist/adapters/node-http/index.mjs +1 -0
  39. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts +1 -1
  40. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
  41. package/dist/adapters/node-http/nodeHTTPRequestHandler.js +28 -71
  42. package/dist/adapters/node-http/nodeHTTPRequestHandler.mjs +28 -71
  43. package/dist/adapters/node-http/types.d.ts +7 -8
  44. package/dist/adapters/node-http/types.d.ts.map +1 -1
  45. package/dist/adapters/ws.js +1 -1
  46. package/dist/adapters/ws.mjs +1 -1
  47. package/dist/bundle-analysis.json +174 -271
  48. package/dist/http.js +4 -2
  49. package/dist/http.mjs +2 -1
  50. package/dist/index.js +2 -4
  51. package/dist/index.mjs +1 -2
  52. package/dist/unstable-core-do-not-import/http/contentType.d.ts +8 -20
  53. package/dist/unstable-core-do-not-import/http/contentType.d.ts.map +1 -1
  54. package/dist/unstable-core-do-not-import/http/contentType.js +180 -0
  55. package/dist/unstable-core-do-not-import/http/contentType.mjs +178 -0
  56. package/dist/unstable-core-do-not-import/http/contentTypeParsers.d.ts +14 -0
  57. package/dist/unstable-core-do-not-import/http/contentTypeParsers.d.ts.map +1 -0
  58. package/dist/unstable-core-do-not-import/http/contentTypeParsers.js +14 -0
  59. package/dist/unstable-core-do-not-import/http/contentTypeParsers.mjs +12 -0
  60. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.d.ts +1 -1
  61. package/dist/unstable-core-do-not-import/http/getHTTPStatusCode.d.ts.map +1 -1
  62. package/dist/unstable-core-do-not-import/http/resolveResponse.d.ts +15 -0
  63. package/dist/unstable-core-do-not-import/http/resolveResponse.d.ts.map +1 -0
  64. package/dist/unstable-core-do-not-import/http/{resolveHTTPResponse.js → resolveResponse.js} +119 -134
  65. package/dist/unstable-core-do-not-import/http/{resolveHTTPResponse.mjs → resolveResponse.mjs} +119 -134
  66. package/dist/unstable-core-do-not-import/http/types.d.ts +25 -27
  67. package/dist/unstable-core-do-not-import/http/types.d.ts.map +1 -1
  68. package/dist/unstable-core-do-not-import/initTRPC.d.ts +1 -1
  69. package/dist/unstable-core-do-not-import/procedureBuilder.d.ts +1 -3
  70. package/dist/unstable-core-do-not-import/procedureBuilder.d.ts.map +1 -1
  71. package/dist/unstable-core-do-not-import/procedureBuilder.js +0 -2
  72. package/dist/unstable-core-do-not-import/procedureBuilder.mjs +1 -2
  73. package/dist/unstable-core-do-not-import/rootConfig.d.ts +0 -9
  74. package/dist/unstable-core-do-not-import/rootConfig.d.ts.map +1 -1
  75. package/dist/unstable-core-do-not-import/utils.d.ts +3 -0
  76. package/dist/unstable-core-do-not-import/utils.d.ts.map +1 -1
  77. package/dist/unstable-core-do-not-import/utils.js +2 -0
  78. package/dist/unstable-core-do-not-import/utils.mjs +2 -1
  79. package/dist/unstable-core-do-not-import.d.ts +9 -3
  80. package/dist/unstable-core-do-not-import.d.ts.map +1 -1
  81. package/dist/unstable-core-do-not-import.js +12 -8
  82. package/dist/unstable-core-do-not-import.mjs +7 -5
  83. package/package.json +3 -13
  84. package/src/@trpc/server/http.ts +7 -12
  85. package/src/@trpc/server/index.ts +0 -3
  86. package/src/adapters/aws-lambda/getPlanner.ts +191 -0
  87. package/src/adapters/aws-lambda/index.ts +43 -107
  88. package/src/adapters/express.ts +1 -1
  89. package/src/adapters/fastify/fastifyRequestHandler.ts +43 -90
  90. package/src/adapters/fastify/fastifyTRPCPlugin.ts +4 -3
  91. package/src/adapters/fetch/fetchRequestHandler.ts +35 -111
  92. package/src/adapters/fetch/types.ts +4 -2
  93. package/src/adapters/next.ts +1 -1
  94. package/src/adapters/node-http/incomingMessageToRequest.ts +94 -0
  95. package/src/adapters/node-http/index.ts +1 -0
  96. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +31 -97
  97. package/src/adapters/node-http/types.ts +27 -37
  98. package/src/adapters/standalone.ts +1 -1
  99. package/src/unstable-core-do-not-import/http/contentType.ts +214 -22
  100. package/src/unstable-core-do-not-import/http/contentTypeParsers.ts +29 -0
  101. package/src/unstable-core-do-not-import/http/getHTTPStatusCode.ts +2 -2
  102. package/src/unstable-core-do-not-import/http/resolveResponse.ts +386 -0
  103. package/src/unstable-core-do-not-import/http/types.ts +25 -30
  104. package/src/unstable-core-do-not-import/procedureBuilder.ts +2 -4
  105. package/src/unstable-core-do-not-import/rootConfig.ts +0 -10
  106. package/src/unstable-core-do-not-import/utils.ts +4 -0
  107. package/src/unstable-core-do-not-import.ts +9 -3
  108. package/adapters/node-http/content-type/form-data/index.d.ts +0 -1
  109. package/adapters/node-http/content-type/form-data/index.js +0 -1
  110. package/adapters/node-http/content-type/json/index.d.ts +0 -1
  111. package/adapters/node-http/content-type/json/index.js +0 -1
  112. package/dist/adapters/aws-lambda/content-type/json/index.d.ts +0 -10
  113. package/dist/adapters/aws-lambda/content-type/json/index.d.ts.map +0 -1
  114. package/dist/adapters/aws-lambda/content-type/json/index.js +0 -62
  115. package/dist/adapters/aws-lambda/content-type/json/index.mjs +0 -60
  116. package/dist/adapters/aws-lambda/utils.d.ts +0 -31
  117. package/dist/adapters/aws-lambda/utils.d.ts.map +0 -1
  118. package/dist/adapters/aws-lambda/utils.js +0 -111
  119. package/dist/adapters/aws-lambda/utils.mjs +0 -103
  120. package/dist/adapters/content-handlers/concurrentCache.d.ts +0 -7
  121. package/dist/adapters/content-handlers/concurrentCache.d.ts.map +0 -1
  122. package/dist/adapters/content-handlers/concurrentCache.js +0 -17
  123. package/dist/adapters/content-handlers/concurrentCache.mjs +0 -15
  124. package/dist/adapters/content-handlers/selectContentHandlerOrUnsupportedMediaType.d.ts +0 -10
  125. package/dist/adapters/content-handlers/selectContentHandlerOrUnsupportedMediaType.d.ts.map +0 -1
  126. package/dist/adapters/content-handlers/selectContentHandlerOrUnsupportedMediaType.js +0 -33
  127. package/dist/adapters/content-handlers/selectContentHandlerOrUnsupportedMediaType.mjs +0 -31
  128. package/dist/adapters/fastify/content-type/json/index.d.ts +0 -8
  129. package/dist/adapters/fastify/content-type/json/index.d.ts.map +0 -1
  130. package/dist/adapters/fastify/content-type/json/index.js +0 -62
  131. package/dist/adapters/fastify/content-type/json/index.mjs +0 -60
  132. package/dist/adapters/fastify/types.d.ts +0 -11
  133. package/dist/adapters/fastify/types.d.ts.map +0 -1
  134. package/dist/adapters/fetch/content-type/json/index.d.ts +0 -9
  135. package/dist/adapters/fetch/content-type/json/index.d.ts.map +0 -1
  136. package/dist/adapters/fetch/content-type/json/index.js +0 -55
  137. package/dist/adapters/fetch/content-type/json/index.mjs +0 -53
  138. package/dist/adapters/node-http/content-type/form-data/index.d.ts +0 -5
  139. package/dist/adapters/node-http/content-type/form-data/index.d.ts.map +0 -1
  140. package/dist/adapters/node-http/content-type/form-data/index.js +0 -32
  141. package/dist/adapters/node-http/content-type/form-data/index.mjs +0 -30
  142. package/dist/adapters/node-http/content-type/json/getPostBody.d.ts +0 -7
  143. package/dist/adapters/node-http/content-type/json/getPostBody.d.ts.map +0 -1
  144. package/dist/adapters/node-http/content-type/json/getPostBody.js +0 -45
  145. package/dist/adapters/node-http/content-type/json/getPostBody.mjs +0 -43
  146. package/dist/adapters/node-http/content-type/json/index.d.ts +0 -5
  147. package/dist/adapters/node-http/content-type/json/index.d.ts.map +0 -1
  148. package/dist/adapters/node-http/content-type/json/index.js +0 -68
  149. package/dist/adapters/node-http/content-type/json/index.mjs +0 -66
  150. package/dist/adapters/node-http/content-type/octet/index.d.ts +0 -5
  151. package/dist/adapters/node-http/content-type/octet/index.d.ts.map +0 -1
  152. package/dist/adapters/node-http/content-type/octet/index.js +0 -19
  153. package/dist/adapters/node-http/content-type/octet/index.mjs +0 -17
  154. package/dist/adapters/node-http/content-type/types.d.ts +0 -8
  155. package/dist/adapters/node-http/content-type/types.d.ts.map +0 -1
  156. package/dist/unstable-core-do-not-import/contentTypeParsers.d.ts +0 -16
  157. package/dist/unstable-core-do-not-import/contentTypeParsers.d.ts.map +0 -1
  158. package/dist/unstable-core-do-not-import/contentTypeParsers.js +0 -23
  159. package/dist/unstable-core-do-not-import/contentTypeParsers.mjs +0 -21
  160. package/dist/unstable-core-do-not-import/http/index.d.ts +0 -11
  161. package/dist/unstable-core-do-not-import/http/index.d.ts.map +0 -1
  162. package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.d.ts +0 -51
  163. package/dist/unstable-core-do-not-import/http/resolveHTTPResponse.d.ts.map +0 -1
  164. package/src/adapters/aws-lambda/content-type/json/index.ts +0 -108
  165. package/src/adapters/aws-lambda/utils.ts +0 -170
  166. package/src/adapters/content-handlers/concurrentCache.ts +0 -16
  167. package/src/adapters/content-handlers/selectContentHandlerOrUnsupportedMediaType.ts +0 -45
  168. package/src/adapters/fastify/content-type/json/index.ts +0 -106
  169. package/src/adapters/fastify/types.ts +0 -22
  170. package/src/adapters/fetch/content-type/json/index.ts +0 -90
  171. package/src/adapters/node-http/content-type/form-data/index.ts +0 -37
  172. package/src/adapters/node-http/content-type/json/getPostBody.ts +0 -49
  173. package/src/adapters/node-http/content-type/json/index.ts +0 -100
  174. package/src/adapters/node-http/content-type/octet/index.ts +0 -27
  175. package/src/adapters/node-http/content-type/types.ts +0 -19
  176. package/src/unstable-core-do-not-import/contentTypeParsers.ts +0 -37
  177. package/src/unstable-core-do-not-import/http/index.ts +0 -28
  178. package/src/unstable-core-do-not-import/http/resolveHTTPResponse.ts +0 -461
@@ -1,12 +1,14 @@
1
1
  'use strict';
2
2
 
3
3
  var createProxy = require('./unstable-core-do-not-import/createProxy.js');
4
+ var TRPCError = require('./unstable-core-do-not-import/error/TRPCError.js');
4
5
  var formatter = require('./unstable-core-do-not-import/error/formatter.js');
5
6
  var getErrorShape = require('./unstable-core-do-not-import/error/getErrorShape.js');
6
- var TRPCError = require('./unstable-core-do-not-import/error/TRPCError.js');
7
- var getHTTPStatusCode = require('./unstable-core-do-not-import/http/getHTTPStatusCode.js');
8
- var resolveHTTPResponse = require('./unstable-core-do-not-import/http/resolveHTTPResponse.js');
9
7
  var batchStreamFormatter = require('./unstable-core-do-not-import/http/batchStreamFormatter.js');
8
+ var contentType = require('./unstable-core-do-not-import/http/contentType.js');
9
+ var contentTypeParsers = require('./unstable-core-do-not-import/http/contentTypeParsers.js');
10
+ var getHTTPStatusCode = require('./unstable-core-do-not-import/http/getHTTPStatusCode.js');
11
+ var resolveResponse = require('./unstable-core-do-not-import/http/resolveResponse.js');
10
12
  var toURL = require('./unstable-core-do-not-import/http/toURL.js');
11
13
  var initTRPC = require('./unstable-core-do-not-import/initTRPC.js');
12
14
  var middleware = require('./unstable-core-do-not-import/middleware.js');
@@ -25,15 +27,17 @@ var utils = require('./unstable-core-do-not-import/utils.js');
25
27
 
26
28
  exports.createFlatProxy = createProxy.createFlatProxy;
27
29
  exports.createRecursiveProxy = createProxy.createRecursiveProxy;
28
- exports.defaultFormatter = formatter.defaultFormatter;
29
- exports.getErrorShape = getErrorShape.getErrorShape;
30
30
  exports.TRPCError = TRPCError.TRPCError;
31
31
  exports.getCauseFromUnknown = TRPCError.getCauseFromUnknown;
32
32
  exports.getTRPCErrorFromUnknown = TRPCError.getTRPCErrorFromUnknown;
33
+ exports.defaultFormatter = formatter.defaultFormatter;
34
+ exports.getErrorShape = getErrorShape.getErrorShape;
35
+ exports.getBatchStreamFormatter = batchStreamFormatter.getBatchStreamFormatter;
36
+ exports.getRequestInfo = contentType.getRequestInfo;
37
+ exports.octetInputParser = contentTypeParsers.octetInputParser;
33
38
  exports.getHTTPStatusCode = getHTTPStatusCode.getHTTPStatusCode;
34
39
  exports.getHTTPStatusCodeFromError = getHTTPStatusCode.getHTTPStatusCodeFromError;
35
- exports.resolveHTTPResponse = resolveHTTPResponse.resolveHTTPResponse;
36
- exports.getBatchStreamFormatter = batchStreamFormatter.getBatchStreamFormatter;
40
+ exports.resolveResponse = resolveResponse.resolveResponse;
37
41
  exports.toURL = toURL.toURL;
38
42
  exports.initTRPC = initTRPC.initTRPC;
39
43
  exports.createInputMiddleware = middleware.createInputMiddleware;
@@ -44,7 +48,6 @@ exports.middlewareMarker = middleware.middlewareMarker;
44
48
  exports.getParseFn = parser.getParseFn;
45
49
  exports.procedureTypes = procedure.procedureTypes;
46
50
  exports.createBuilder = procedureBuilder.createBuilder;
47
- exports.unsetMarker = procedureBuilder.unsetMarker;
48
51
  exports.isServerDefault = rootConfig.isServerDefault;
49
52
  exports.callProcedure = router.callProcedure;
50
53
  exports.createCallerFactory = router.createCallerFactory;
@@ -62,3 +65,4 @@ exports.isFunction = utils.isFunction;
62
65
  exports.isObject = utils.isObject;
63
66
  exports.mergeWithoutOverrides = utils.mergeWithoutOverrides;
64
67
  exports.omitPrototype = utils.omitPrototype;
68
+ exports.unsetMarker = utils.unsetMarker;
@@ -1,20 +1,22 @@
1
1
  export { createFlatProxy, createRecursiveProxy } from './unstable-core-do-not-import/createProxy.mjs';
2
+ export { TRPCError, getCauseFromUnknown, getTRPCErrorFromUnknown } from './unstable-core-do-not-import/error/TRPCError.mjs';
2
3
  export { defaultFormatter } from './unstable-core-do-not-import/error/formatter.mjs';
3
4
  export { getErrorShape } from './unstable-core-do-not-import/error/getErrorShape.mjs';
4
- export { TRPCError, getCauseFromUnknown, getTRPCErrorFromUnknown } from './unstable-core-do-not-import/error/TRPCError.mjs';
5
- export { getHTTPStatusCode, getHTTPStatusCodeFromError } from './unstable-core-do-not-import/http/getHTTPStatusCode.mjs';
6
- export { resolveHTTPResponse } from './unstable-core-do-not-import/http/resolveHTTPResponse.mjs';
7
5
  export { getBatchStreamFormatter } from './unstable-core-do-not-import/http/batchStreamFormatter.mjs';
6
+ export { getRequestInfo } from './unstable-core-do-not-import/http/contentType.mjs';
7
+ export { octetInputParser } from './unstable-core-do-not-import/http/contentTypeParsers.mjs';
8
+ export { getHTTPStatusCode, getHTTPStatusCodeFromError } from './unstable-core-do-not-import/http/getHTTPStatusCode.mjs';
9
+ export { resolveResponse } from './unstable-core-do-not-import/http/resolveResponse.mjs';
8
10
  export { toURL } from './unstable-core-do-not-import/http/toURL.mjs';
9
11
  export { initTRPC } from './unstable-core-do-not-import/initTRPC.mjs';
10
12
  export { createInputMiddleware, createMiddlewareFactory, createOutputMiddleware, experimental_standaloneMiddleware, middlewareMarker } from './unstable-core-do-not-import/middleware.mjs';
11
13
  export { getParseFn } from './unstable-core-do-not-import/parser.mjs';
12
14
  export { procedureTypes } from './unstable-core-do-not-import/procedure.mjs';
13
- export { createBuilder, unsetMarker } from './unstable-core-do-not-import/procedureBuilder.mjs';
15
+ export { createBuilder } from './unstable-core-do-not-import/procedureBuilder.mjs';
14
16
  export { isServerDefault } from './unstable-core-do-not-import/rootConfig.mjs';
15
17
  export { callProcedure, createCallerFactory, createRouterFactory, mergeRouters } from './unstable-core-do-not-import/router.mjs';
16
18
  export { TRPC_ERROR_CODES_BY_KEY, TRPC_ERROR_CODES_BY_NUMBER } from './unstable-core-do-not-import/rpc/codes.mjs';
17
19
  export { parseTRPCMessage } from './unstable-core-do-not-import/rpc/parseTRPCMessage.mjs';
18
20
  export { defaultTransformer, getDataTransformer, transformResult, transformTRPCResponse } from './unstable-core-do-not-import/transformer.mjs';
19
21
  export { ERROR_SYMBOL } from './unstable-core-do-not-import/types.mjs';
20
- export { isFunction, isObject, mergeWithoutOverrides, omitPrototype } from './unstable-core-do-not-import/utils.mjs';
22
+ export { isFunction, isObject, mergeWithoutOverrides, omitPrototype, unsetMarker } from './unstable-core-do-not-import/utils.mjs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trpc/server",
3
- "version": "11.0.0-rc.361+5ad570aa5",
3
+ "version": "11.0.0-rc.363+64448a773",
4
4
  "description": "The tRPC server library",
5
5
  "author": "KATT",
6
6
  "license": "MIT",
@@ -58,16 +58,6 @@
58
58
  "require": "./dist/adapters/next.js",
59
59
  "default": "./dist/adapters/next.js"
60
60
  },
61
- "./adapters/node-http/content-type/form-data": {
62
- "import": "./dist/adapters/node-http/content-type/form-data/index.mjs",
63
- "require": "./dist/adapters/node-http/content-type/form-data/index.js",
64
- "default": "./dist/adapters/node-http/content-type/form-data/index.js"
65
- },
66
- "./adapters/node-http/content-type/json": {
67
- "import": "./dist/adapters/node-http/content-type/json/index.mjs",
68
- "require": "./dist/adapters/node-http/content-type/json/index.js",
69
- "default": "./dist/adapters/node-http/content-type/json/index.js"
70
- },
71
61
  "./adapters/node-http": {
72
62
  "import": "./dist/adapters/node-http/index.mjs",
73
63
  "require": "./dist/adapters/node-http/index.js",
@@ -128,7 +118,7 @@
128
118
  "devDependencies": {
129
119
  "@fastify/websocket": "^10.0.1",
130
120
  "@tanstack/react-query": "^5.25.0",
131
- "@types/aws-lambda": "^8.10.97",
121
+ "@types/aws-lambda": "^8.10.137",
132
122
  "@types/express": "^4.17.17",
133
123
  "@types/hash-sum": "^1.0.0",
134
124
  "@types/node": "^20.10.0",
@@ -159,5 +149,5 @@
159
149
  "funding": [
160
150
  "https://trpc.io/sponsor"
161
151
  ],
162
- "gitHead": "5ad570aa5e1d8951e31900d4c2ee8c1766235e6d"
152
+ "gitHead": "64448a7739caa0ea7464336316de0c11366161ea"
163
153
  }
@@ -1,26 +1,21 @@
1
1
  export {
2
2
  getHTTPStatusCode,
3
3
  getHTTPStatusCodeFromError,
4
+ resolveResponse,
4
5
  } from '../../unstable-core-do-not-import';
5
- export { resolveHTTPResponse } from '../../unstable-core-do-not-import';
6
6
  export type {
7
7
  BaseHandlerOptions,
8
8
  HTTPBaseHandlerOptions,
9
- HTTPHeaders,
10
- HTTPRequest,
11
- HTTPResponse,
12
- OnErrorFunction,
13
- ProcedureCall,
9
+ HTTPErrorHandler,
10
+ /**
11
+ * @deprecated Use `HTTPErrorHandler` instead
12
+ */
13
+ HTTPErrorHandler as OnErrorFunction,
14
14
  ResolveHTTPRequestOptionsContextFn,
15
- ResponseChunk,
16
15
  ResponseMeta,
17
16
  ResponseMetaFn,
18
17
  TRPCRequestInfo,
19
18
  } from '../../unstable-core-do-not-import';
20
19
 
21
20
  export { getBatchStreamFormatter } from '../../unstable-core-do-not-import';
22
- export type {
23
- BaseContentTypeHandler,
24
- BodyResult,
25
- } from '../../unstable-core-do-not-import';
26
- export { toURL } from '../../unstable-core-do-not-import';
21
+ export { octetInputParser, toURL } from '../../unstable-core-do-not-import';
@@ -33,7 +33,6 @@ export {
33
33
  type AnySubscriptionProcedure as AnyTRPCSubscriptionProcedure,
34
34
  type ProcedureOptions as TRPCProcedureOptions,
35
35
  type CreateContextCallback,
36
- type WrapCreateContext,
37
36
  type MutationProcedure as TRPCMutationProcedure,
38
37
  type QueryProcedure as TRPCQueryProcedure,
39
38
  type SubscriptionProcedure as TRPCSubscriptionProcedure,
@@ -104,5 +103,3 @@ export {
104
103
  */
105
104
  export type inferAsyncReturnType<TFunction extends (...args: any[]) => any> =
106
105
  Awaited<ReturnType<TFunction>>;
107
-
108
- export { parseOctetInput } from '../../unstable-core-do-not-import/contentTypeParsers';
@@ -0,0 +1,191 @@
1
+ import type {
2
+ APIGatewayProxyEvent,
3
+ APIGatewayProxyEventV2,
4
+ APIGatewayProxyResult,
5
+ APIGatewayProxyStructuredResultV2,
6
+ } from 'aws-lambda';
7
+
8
+ export type LambdaEvent = APIGatewayProxyEvent | APIGatewayProxyEventV2;
9
+
10
+ export type APIGatewayResult =
11
+ | APIGatewayProxyResult
12
+ | APIGatewayProxyStructuredResultV2;
13
+
14
+ function determinePayloadFormat(event: LambdaEvent): string {
15
+ // https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html
16
+ // According to AWS support, version is is extracted from the version property in the event.
17
+ // If there is no version property, then the version is implied as 1.0
18
+ const unknownEvent = event as { version?: string };
19
+ if (typeof unknownEvent.version === 'undefined') {
20
+ return '1.0';
21
+ } else {
22
+ return unknownEvent.version;
23
+ }
24
+ }
25
+
26
+ /** 1:1 mapping of v1 or v2 input events, deduces which is which.
27
+ * @internal
28
+ **/
29
+ export type inferAPIGWReturn<TEvent> = TEvent extends APIGatewayProxyEvent
30
+ ? APIGatewayProxyResult
31
+ : TEvent extends APIGatewayProxyEventV2
32
+ ? APIGatewayProxyStructuredResultV2
33
+ : never;
34
+
35
+ interface Processor<TEvent extends LambdaEvent> {
36
+ getTRPCPath: (event: TEvent) => string;
37
+ url(event: TEvent): Pick<URL, 'hostname' | 'pathname' | 'search'>;
38
+ getHeaders: (event: TEvent) => Headers;
39
+ getMethod: (event: TEvent) => string;
40
+ toResult: (response: Response) => Promise<inferAPIGWReturn<TEvent>>;
41
+ }
42
+
43
+ const v1Processor: Processor<APIGatewayProxyEvent> = {
44
+ // same as getPath above
45
+ getTRPCPath: (event) => {
46
+ if (!event.pathParameters) {
47
+ // Then this event was not triggered by a resource denoted with {proxy+}
48
+ return event.path.split('/').pop() ?? '';
49
+ }
50
+ const matches = event.resource.matchAll(/\{(.*?)\}/g);
51
+ for (const match of matches) {
52
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
53
+ const group = match[1]!;
54
+ if (group.includes('+') && event.pathParameters) {
55
+ return event.pathParameters[group.replace('+', '')] ?? '';
56
+ }
57
+ }
58
+ return event.path.slice(1);
59
+ },
60
+ url(event) {
61
+ const hostname: string =
62
+ event.requestContext.domainName ??
63
+ event.headers['host'] ??
64
+ event.multiValueHeaders?.['host']?.[0] ??
65
+ 'localhost';
66
+
67
+ const searchParams = new URLSearchParams();
68
+
69
+ for (const [key, value] of Object.entries(
70
+ event.queryStringParameters ?? {},
71
+ )) {
72
+ if (value !== undefined) {
73
+ searchParams.append(key, value);
74
+ }
75
+ }
76
+ const qs = searchParams.toString();
77
+ return {
78
+ hostname,
79
+ pathname: event.path,
80
+ search: qs && `?${qs}`,
81
+ };
82
+ },
83
+ getHeaders: (event) => {
84
+ const headers = new Headers();
85
+ for (const [key, value] of Object.entries(event.headers ?? {})) {
86
+ if (value !== undefined) {
87
+ headers.append(key, value);
88
+ }
89
+ }
90
+
91
+ for (const [k, values] of Object.entries(event.multiValueHeaders ?? {})) {
92
+ if (values) {
93
+ values.forEach((v) => headers.append(k, v));
94
+ }
95
+ }
96
+
97
+ return headers;
98
+ },
99
+ getMethod: (event) => event.httpMethod,
100
+ toResult: async (response) => {
101
+ const result: APIGatewayProxyResult = {
102
+ statusCode: response.status,
103
+ body: await response.text(),
104
+ headers: Object.fromEntries(response.headers.entries()),
105
+ };
106
+
107
+ return result;
108
+ },
109
+ };
110
+
111
+ const v2Processor: Processor<APIGatewayProxyEventV2> = {
112
+ getTRPCPath: (event) => {
113
+ const matches = event.routeKey.matchAll(/\{(.*?)\}/g);
114
+ for (const match of matches) {
115
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
116
+ const group = match[1]!;
117
+ if (group.includes('+') && event.pathParameters) {
118
+ return event.pathParameters[group.replace('+', '')] ?? '';
119
+ }
120
+ }
121
+ return event.rawPath.slice(1);
122
+ },
123
+ url(event) {
124
+ return {
125
+ hostname: event.requestContext.domainName,
126
+ pathname: event.rawPath,
127
+ search: event.rawQueryString && `?${event.rawQueryString}`,
128
+ };
129
+ },
130
+ getHeaders: (event) => {
131
+ const headers = new Headers();
132
+ for (const [key, value] of Object.entries(event.headers ?? {})) {
133
+ if (value !== undefined) {
134
+ headers.append(key, value);
135
+ }
136
+ }
137
+
138
+ if (event.cookies) {
139
+ headers.append('cookie', event.cookies.join('; '));
140
+ }
141
+ return headers;
142
+ },
143
+ getMethod: (event) => event.requestContext.http.method,
144
+ toResult: async (response) => {
145
+ const result: APIGatewayProxyStructuredResultV2 = {
146
+ statusCode: response.status,
147
+ body: await response.text(),
148
+ headers: Object.fromEntries(response.headers.entries()),
149
+ };
150
+
151
+ return result;
152
+ },
153
+ };
154
+
155
+ export function getPlanner<TEvent extends LambdaEvent>(event: TEvent) {
156
+ const version = determinePayloadFormat(event);
157
+ let processor: Processor<TEvent>;
158
+ switch (version) {
159
+ case '1.0':
160
+ processor = v1Processor as Processor<TEvent>;
161
+ break;
162
+ case '2.0':
163
+ processor = v2Processor as Processor<TEvent>;
164
+ break;
165
+ default:
166
+ throw new Error(`Unsupported version: ${version}`);
167
+ }
168
+
169
+ const urlParts = processor.url(event);
170
+ const url = `https://${urlParts.hostname}${urlParts.pathname}${urlParts.search}`;
171
+
172
+ const init: RequestInit = {
173
+ headers: processor.getHeaders(event),
174
+ method: processor.getMethod(event),
175
+ // @ts-expect-error this is fine
176
+ duplex: 'half',
177
+ };
178
+ if (event.body) {
179
+ init.body = event.isBase64Encoded
180
+ ? Buffer.from(event.body, 'base64')
181
+ : event.body;
182
+ }
183
+
184
+ const request = new Request(url, init);
185
+
186
+ return {
187
+ path: processor.getTRPCPath(event),
188
+ request,
189
+ toResult: processor.toResult,
190
+ };
191
+ }
@@ -7,102 +7,58 @@
7
7
  * import type { HTTPBaseHandlerOptions } from '@trpc/server/http'
8
8
  * ```
9
9
  */
10
- import type {
11
- APIGatewayProxyEvent,
12
- APIGatewayProxyEventV2,
13
- APIGatewayProxyResult,
14
- APIGatewayProxyStructuredResultV2,
15
- Context as APIGWContext,
16
- } from 'aws-lambda';
10
+ import type { Context as APIGWContext } from 'aws-lambda';
17
11
  // @trpc/server
18
- import type { AnyRouter } from '../../@trpc/server';
12
+ import type {
13
+ AnyRouter,
14
+ CreateContextCallback,
15
+ inferRouterContext,
16
+ } from '../../@trpc/server';
19
17
  // @trpc/server
20
- import { TRPCError } from '../../@trpc/server';
21
18
  import type {
22
- HTTPRequest,
23
- HTTPResponse,
19
+ HTTPBaseHandlerOptions,
24
20
  ResolveHTTPRequestOptionsContextFn,
21
+ TRPCRequestInfo,
25
22
  } from '../../@trpc/server/http';
26
- import { resolveHTTPResponse } from '../../@trpc/server/http';
27
- import { selectContentHandlerOrUnsupportedMediaType } from '../content-handlers/selectContentHandlerOrUnsupportedMediaType';
28
- import { getLambdaHTTPJSONContentTypeHandler } from './content-type/json';
29
- import type {
30
- APIGatewayEvent,
31
- APIGatewayResult,
32
- AWSLambdaOptions,
33
- } from './utils';
34
- import {
35
- getHTTPMethod,
36
- getPath,
37
- isPayloadV1,
38
- isPayloadV2,
39
- transformHeaders,
40
- UNKNOWN_PAYLOAD_FORMAT_VERSION_ERROR_MESSAGE,
41
- } from './utils';
42
-
43
- export * from './utils';
23
+ import { resolveResponse } from '../../@trpc/server/http';
24
+ import type { inferAPIGWReturn, LambdaEvent } from './getPlanner';
25
+ import { getPlanner } from './getPlanner';
44
26
 
45
- function lambdaEventToHTTPRequest(event: APIGatewayEvent): HTTPRequest {
46
- const query = new URLSearchParams();
47
- for (const [key, value] of Object.entries(
48
- event.queryStringParameters ?? {},
49
- )) {
50
- if (typeof value !== 'undefined') {
51
- query.append(key, value);
52
- }
53
- }
27
+ export type CreateAWSLambdaContextOptions<TEvent extends LambdaEvent> = {
28
+ event: TEvent;
29
+ context: APIGWContext;
30
+ info: TRPCRequestInfo;
31
+ };
54
32
 
55
- return {
56
- method: getHTTPMethod(event),
57
- query: query,
58
- headers: event.headers,
59
- };
60
- }
33
+ export type AWSLambdaOptions<
34
+ TRouter extends AnyRouter,
35
+ TEvent extends LambdaEvent,
36
+ > =
37
+ | HTTPBaseHandlerOptions<TRouter, TEvent> &
38
+ CreateContextCallback<
39
+ inferRouterContext<AnyRouter>,
40
+ AWSLambdaCreateContextFn<TRouter, TEvent>
41
+ >;
61
42
 
62
- function tRPCOutputToAPIGatewayOutput<
63
- TEvent extends APIGatewayEvent,
64
- TResult extends APIGatewayResult,
65
- >(event: TEvent, response: HTTPResponse): TResult {
66
- if (isPayloadV1(event)) {
67
- const resp: APIGatewayProxyResult = {
68
- statusCode: response.status,
69
- body: response.body ?? '',
70
- headers: transformHeaders(response.headers ?? {}),
71
- };
72
- return resp as TResult;
73
- } else if (isPayloadV2(event)) {
74
- const resp: APIGatewayProxyStructuredResultV2 = {
75
- statusCode: response.status,
76
- body: response.body ?? undefined,
77
- headers: transformHeaders(response.headers ?? {}),
78
- };
79
- return resp as TResult;
80
- } else {
81
- throw new TRPCError({
82
- code: 'INTERNAL_SERVER_ERROR',
83
- message: UNKNOWN_PAYLOAD_FORMAT_VERSION_ERROR_MESSAGE,
84
- });
85
- }
86
- }
43
+ export type AWSLambdaCreateContextFn<
44
+ TRouter extends AnyRouter,
45
+ TEvent extends LambdaEvent,
46
+ > = ({
47
+ event,
48
+ context,
49
+ info,
50
+ }: CreateAWSLambdaContextOptions<TEvent>) =>
51
+ | inferRouterContext<TRouter>
52
+ | Promise<inferRouterContext<TRouter>>;
87
53
 
88
- /** 1:1 mapping of v1 or v2 input events, deduces which is which.
89
- * @internal
90
- **/
91
- type inferAPIGWReturn<TType> = TType extends APIGatewayProxyEvent
92
- ? APIGatewayProxyResult
93
- : TType extends APIGatewayProxyEventV2
94
- ? APIGatewayProxyStructuredResultV2
95
- : never;
96
54
  export function awsLambdaRequestHandler<
97
55
  TRouter extends AnyRouter,
98
- TEvent extends APIGatewayEvent,
99
- TResult extends inferAPIGWReturn<TEvent>,
56
+ TEvent extends LambdaEvent,
100
57
  >(
101
58
  opts: AWSLambdaOptions<TRouter, TEvent>,
102
- ): (event: TEvent, context: APIGWContext) => Promise<TResult> {
59
+ ): (event: TEvent, context: APIGWContext) => Promise<inferAPIGWReturn<TEvent>> {
103
60
  return async (event, context) => {
104
- const req = lambdaEventToHTTPRequest(event);
105
- const path = getPath(event);
61
+ const planner = getPlanner(event);
106
62
 
107
63
  const createContext: ResolveHTTPRequestOptionsContextFn<TRouter> = async (
108
64
  innerOpts,
@@ -110,32 +66,12 @@ export function awsLambdaRequestHandler<
110
66
  return await opts.createContext?.({ event, context, ...innerOpts });
111
67
  };
112
68
 
113
- const [contentTypeHandler, unsupportedMediaTypeError] =
114
- selectContentHandlerOrUnsupportedMediaType(
115
- [getLambdaHTTPJSONContentTypeHandler<TRouter, TEvent>()],
116
- {
117
- ...opts,
118
- event,
119
- req,
120
- },
121
- );
122
-
123
- const response = await resolveHTTPResponse({
69
+ const response = await resolveResponse({
124
70
  ...opts,
125
71
  createContext,
126
- req,
127
- path,
128
- error: unsupportedMediaTypeError,
129
- async getInput(info) {
130
- return await contentTypeHandler?.getInputs(
131
- {
132
- ...opts,
133
- event,
134
- req,
135
- },
136
- info,
137
- );
138
- },
72
+ req: planner.request,
73
+ path: planner.path,
74
+ error: null,
139
75
  onError(o) {
140
76
  opts?.onError?.({
141
77
  ...o,
@@ -144,6 +80,6 @@ export function awsLambdaRequestHandler<
144
80
  },
145
81
  });
146
82
 
147
- return tRPCOutputToAPIGatewayOutput<TEvent, TResult>(event, response);
83
+ return await planner.toResult(response);
148
84
  };
149
85
  }
@@ -27,7 +27,7 @@ export function createExpressMiddleware<TRouter extends AnyRouter>(
27
27
  const endpoint = req.path.slice(1);
28
28
 
29
29
  await nodeHTTPRequestHandler({
30
- ...opts,
30
+ ...(opts as any),
31
31
  req,
32
32
  res,
33
33
  path: endpoint,