@trpc/server 10.0.0-alpha.44 → 10.0.0-alpha.47

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 (146) hide show
  1. package/adapters/aws-lambda/index.js +1 -1
  2. package/adapters/fastify/index.js +1 -1
  3. package/adapters/fetch/index.js +1 -1
  4. package/adapters/node-http/index.js +1 -1
  5. package/dist/TRPCError-6f61762c.mjs +54 -0
  6. package/dist/TRPCError-9c7830b4.js +58 -0
  7. package/dist/adapters/aws-lambda/index.d.ts.map +1 -1
  8. package/dist/adapters/aws-lambda/index.js +119 -156
  9. package/dist/adapters/aws-lambda/index.mjs +119 -156
  10. package/dist/adapters/aws-lambda/utils.d.ts.map +1 -1
  11. package/dist/adapters/express.d.ts.map +1 -1
  12. package/dist/adapters/express.js +14 -14
  13. package/dist/adapters/express.mjs +14 -14
  14. package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
  15. package/dist/adapters/fastify/fastifyTRPCPlugin.d.ts.map +1 -1
  16. package/dist/adapters/fastify/index.d.ts.map +1 -1
  17. package/dist/adapters/fastify/index.js +68 -89
  18. package/dist/adapters/fastify/index.mjs +68 -89
  19. package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -1
  20. package/dist/adapters/fetch/index.d.ts.map +1 -1
  21. package/dist/adapters/fetch/index.js +45 -57
  22. package/dist/adapters/fetch/index.mjs +45 -57
  23. package/dist/adapters/fetch/types.d.ts.map +1 -1
  24. package/dist/adapters/lambda/index.d.ts.map +1 -1
  25. package/dist/adapters/next.d.ts.map +1 -1
  26. package/dist/adapters/next.js +42 -46
  27. package/dist/adapters/next.mjs +42 -46
  28. package/dist/adapters/node-http/index.d.ts.map +1 -1
  29. package/dist/adapters/node-http/index.js +5 -5
  30. package/dist/adapters/node-http/index.mjs +5 -5
  31. package/dist/adapters/node-http/internals/getPostBody.d.ts.map +1 -1
  32. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
  33. package/dist/adapters/node-http/types.d.ts.map +1 -1
  34. package/dist/adapters/standalone.d.ts.map +1 -1
  35. package/dist/adapters/standalone.js +30 -32
  36. package/dist/adapters/standalone.mjs +30 -32
  37. package/dist/adapters/ws.d.ts.map +1 -1
  38. package/dist/adapters/ws.js +272 -352
  39. package/dist/adapters/ws.mjs +272 -352
  40. package/dist/codes-1c24d919.js +47 -0
  41. package/dist/codes-aaa7d554.mjs +44 -0
  42. package/dist/core/index.d.ts.map +1 -1
  43. package/dist/core/initTRPC.d.ts.map +1 -1
  44. package/dist/core/internals/__generated__/mergeRoutersGeneric.d.ts.map +1 -1
  45. package/dist/core/internals/config.d.ts.map +1 -1
  46. package/dist/core/internals/getParseFn.d.ts.map +1 -1
  47. package/dist/core/internals/mergeRouters.d.ts.map +1 -1
  48. package/dist/core/internals/mergeWithoutOverrides.d.ts.map +1 -1
  49. package/dist/core/internals/omitPrototype.d.ts.map +1 -1
  50. package/dist/core/internals/prefixObjectKeys.d.ts.map +1 -1
  51. package/dist/core/internals/procedureBuilder.d.ts.map +1 -1
  52. package/dist/core/internals/utils.d.ts.map +1 -1
  53. package/dist/core/middleware.d.ts.map +1 -1
  54. package/dist/core/parser.d.ts.map +1 -1
  55. package/dist/core/procedure.d.ts.map +1 -1
  56. package/dist/core/router.d.ts.map +1 -1
  57. package/dist/core/types.d.ts.map +1 -1
  58. package/dist/deprecated/internals/callProcedure.d.ts.map +1 -1
  59. package/dist/deprecated/internals/middlewares.d.ts.map +1 -1
  60. package/dist/deprecated/internals/procedure.d.ts.map +1 -1
  61. package/dist/deprecated/interop.d.ts.map +1 -1
  62. package/dist/deprecated/router.d.ts.map +1 -1
  63. package/dist/error/TRPCError.d.ts.map +1 -1
  64. package/dist/error/formatter.d.ts.map +1 -1
  65. package/dist/error/utils.d.ts.map +1 -1
  66. package/dist/http/index.d.ts.map +1 -1
  67. package/dist/http/internals/getHTTPStatusCode.d.ts.map +1 -1
  68. package/dist/http/internals/types.d.ts.map +1 -1
  69. package/dist/http/resolveHTTPResponse.d.ts.map +1 -1
  70. package/dist/http/types.d.ts.map +1 -1
  71. package/dist/index-47817162.mjs +26 -0
  72. package/dist/index-9d687d33.js +28 -0
  73. package/dist/index.js +59 -95
  74. package/dist/index.mjs +60 -96
  75. package/dist/internals/invert.d.ts.map +1 -1
  76. package/dist/internals/transformTRPCResponse.d.ts.map +1 -1
  77. package/dist/internals/types.d.ts.map +1 -1
  78. package/dist/nodeHTTPRequestHandler-7c2a3037.js +82 -0
  79. package/dist/nodeHTTPRequestHandler-b37609f7.mjs +80 -0
  80. package/dist/observable/index.d.ts.map +1 -1
  81. package/dist/observable/index.js +125 -172
  82. package/dist/observable/index.mjs +125 -172
  83. package/dist/observable/internals/identity.d.ts.map +1 -1
  84. package/dist/observable/internals/observableToPromise.d.ts.map +1 -1
  85. package/dist/observable/internals/pipe.d.ts.map +1 -1
  86. package/dist/observable/observable.d.ts.map +1 -1
  87. package/dist/observable/operators/index.d.ts.map +1 -1
  88. package/dist/observable/operators/map.d.ts.map +1 -1
  89. package/dist/observable/operators/share.d.ts.map +1 -1
  90. package/dist/observable/operators/tap.d.ts.map +1 -1
  91. package/dist/observable/types.d.ts.map +1 -1
  92. package/dist/observable-b651bf11.js +84 -0
  93. package/dist/observable-e129ac9d.mjs +81 -0
  94. package/dist/resolveHTTPResponse-83703ee8.mjs +251 -0
  95. package/dist/resolveHTTPResponse-b486996d.js +255 -0
  96. package/dist/router-8372703e.js +886 -0
  97. package/dist/router-f21b6d06.mjs +876 -0
  98. package/dist/rpc/codes.d.ts.map +1 -1
  99. package/dist/rpc/envelopes.d.ts.map +1 -1
  100. package/dist/rpc/index.d.ts.map +1 -1
  101. package/dist/rpc/index.js +3 -7
  102. package/dist/rpc/index.mjs +1 -1
  103. package/dist/rpc/internals/invert.d.ts.map +1 -1
  104. package/dist/shared/createProxy/index.d.ts.map +1 -1
  105. package/dist/shared/index.d.ts.map +1 -1
  106. package/dist/shared/index.js +1 -1
  107. package/dist/shared/index.mjs +1 -1
  108. package/dist/subscription.js +24 -34
  109. package/dist/subscription.mjs +24 -34
  110. package/dist/transformTRPCResponse-11ac69cc.js +27 -0
  111. package/dist/transformTRPCResponse-c8138d5f.mjs +25 -0
  112. package/observable/index.js +1 -1
  113. package/package.json +12 -16
  114. package/rpc/index.js +1 -1
  115. package/shared/index.js +1 -1
  116. package/subscription/index.d.ts +1 -0
  117. package/subscription/index.js +1 -0
  118. package/dist/TRPCError-9050a68d.js +0 -69
  119. package/dist/TRPCError-97212592.mjs +0 -65
  120. package/dist/adapters/aws-lambda/index.ts.js +0 -1
  121. package/dist/adapters/express.ts.js +0 -1
  122. package/dist/adapters/fastify/index.ts.js +0 -1
  123. package/dist/adapters/fetch/index.ts.js +0 -1
  124. package/dist/adapters/next.ts.js +0 -1
  125. package/dist/adapters/node-http/index.ts.js +0 -1
  126. package/dist/adapters/standalone.ts.js +0 -1
  127. package/dist/adapters/ws.ts.js +0 -1
  128. package/dist/envelopes-2ae27c9f.js +0 -85
  129. package/dist/envelopes-b9f49d4d.mjs +0 -82
  130. package/dist/index-1a25ccbd.js +0 -33
  131. package/dist/index-a3bd54c7.mjs +0 -31
  132. package/dist/index.ts.js +0 -1
  133. package/dist/nodeHTTPRequestHandler-bee7aacc.js +0 -107
  134. package/dist/nodeHTTPRequestHandler-f1656eba.mjs +0 -105
  135. package/dist/observable/index.ts.js +0 -1
  136. package/dist/observable-341a0506.js +0 -109
  137. package/dist/observable-cfedfa30.mjs +0 -106
  138. package/dist/resolveHTTPResponse-455f1e51.mjs +0 -293
  139. package/dist/resolveHTTPResponse-5d90abc5.js +0 -297
  140. package/dist/router-4e50a6ac.js +0 -1104
  141. package/dist/router-a3db8f3a.mjs +0 -1094
  142. package/dist/rpc/index.ts.js +0 -1
  143. package/dist/shared/index.ts.js +0 -1
  144. package/dist/subscription.ts.js +0 -1
  145. package/dist/transformTRPCResponse-0c261655.js +0 -29
  146. package/dist/transformTRPCResponse-747b9a68.mjs +0 -27
@@ -1,293 +0,0 @@
1
- import { T as TRPCError, g as getErrorFromUnknown, a as getCauseFromUnknown } from './TRPCError-97212592.mjs';
2
- import { t as transformTRPCResponse } from './transformTRPCResponse-747b9a68.mjs';
3
- import { T as TRPC_ERROR_CODES_BY_KEY } from './envelopes-b9f49d4d.mjs';
4
-
5
- /* istanbul ignore file */
6
- function assertNotBrowser() {
7
- if (typeof window !== 'undefined' && !('Deno' in window) && process.env.NODE_ENV !== 'test' && process.env.JEST_WORKER_ID === undefined) {
8
- throw new Error('Imported server-only code in the browser');
9
- }
10
- }
11
-
12
- function invert(obj) {
13
- const newObj = Object.create(null);
14
-
15
- for (const key in obj) {
16
- const v = obj[key];
17
- newObj[v] = key;
18
- }
19
-
20
- return newObj;
21
- }
22
-
23
- const TRPC_ERROR_CODES_BY_NUMBER = /*#__PURE__*/invert(TRPC_ERROR_CODES_BY_KEY);
24
- const JSONRPC2_TO_HTTP_CODE = {
25
- PARSE_ERROR: 400,
26
- BAD_REQUEST: 400,
27
- NOT_FOUND: 404,
28
- INTERNAL_SERVER_ERROR: 500,
29
- UNAUTHORIZED: 401,
30
- FORBIDDEN: 403,
31
- TIMEOUT: 408,
32
- CONFLICT: 409,
33
- CLIENT_CLOSED_REQUEST: 499,
34
- PRECONDITION_FAILED: 412,
35
- PAYLOAD_TOO_LARGE: 413,
36
- METHOD_NOT_SUPPORTED: 405
37
- };
38
-
39
- function getStatusCodeFromKey(code) {
40
- var _JSONRPC2_TO_HTTP_COD;
41
-
42
- return (_JSONRPC2_TO_HTTP_COD = JSONRPC2_TO_HTTP_CODE[code]) !== null && _JSONRPC2_TO_HTTP_COD !== void 0 ? _JSONRPC2_TO_HTTP_COD : 500;
43
- }
44
-
45
- function getHTTPStatusCode(json) {
46
- const arr = Array.isArray(json) ? json : [json];
47
- const httpStatuses = new Set(arr.map(res => {
48
- if ('error' in res) {
49
- const data = res.error.data;
50
-
51
- if (typeof data.httpStatus === 'number') {
52
- return data.httpStatus;
53
- }
54
-
55
- const code = TRPC_ERROR_CODES_BY_NUMBER[res.error.code];
56
- return getStatusCodeFromKey(code);
57
- }
58
-
59
- return 200;
60
- }));
61
-
62
- if (httpStatuses.size !== 1) {
63
- return 207;
64
- }
65
-
66
- const httpStatus = httpStatuses.values().next().value;
67
- return httpStatus;
68
- }
69
- function getHTTPStatusCodeFromError(error) {
70
- const {
71
- code
72
- } = error;
73
- return getStatusCodeFromKey(code);
74
- }
75
-
76
- /* eslint-disable @typescript-eslint/no-non-null-assertion */
77
- const HTTP_METHOD_PROCEDURE_TYPE_MAP = {
78
- GET: 'query',
79
- POST: 'mutation',
80
- PATCH: 'subscription'
81
- };
82
-
83
- function getRawProcedureInputOrThrow(req) {
84
- try {
85
- if (req.method === 'GET') {
86
- if (!req.query.has('input')) {
87
- return undefined;
88
- }
89
-
90
- const raw = req.query.get('input');
91
- return JSON.parse(raw);
92
- }
93
-
94
- return typeof req.body === 'string' ? JSON.parse(req.body) : req.body;
95
- } catch (err) {
96
- throw new TRPCError({
97
- code: 'PARSE_ERROR',
98
- cause: getCauseFromUnknown(err)
99
- });
100
- }
101
- }
102
-
103
- async function resolveHTTPResponse(opts) {
104
- var _opts$batching$enable, _opts$batching, _HTTP_METHOD_PROCEDUR;
105
-
106
- const {
107
- createContext,
108
- onError,
109
- router,
110
- req
111
- } = opts;
112
- const batchingEnabled = (_opts$batching$enable = (_opts$batching = opts.batching) === null || _opts$batching === void 0 ? void 0 : _opts$batching.enabled) !== null && _opts$batching$enable !== void 0 ? _opts$batching$enable : true;
113
-
114
- if (req.method === 'HEAD') {
115
- // can be used for lambda warmup
116
- return {
117
- status: 204
118
- };
119
- }
120
-
121
- const type = (_HTTP_METHOD_PROCEDUR = HTTP_METHOD_PROCEDURE_TYPE_MAP[req.method]) !== null && _HTTP_METHOD_PROCEDUR !== void 0 ? _HTTP_METHOD_PROCEDUR : 'unknown';
122
- let ctx = undefined;
123
- let paths = undefined;
124
- const isBatchCall = !!req.query.get('batch');
125
-
126
- function endResponse(untransformedJSON, errors) {
127
- var _opts$responseMeta, _opts$responseMeta2;
128
-
129
- let status = getHTTPStatusCode(untransformedJSON);
130
- const headers = {
131
- 'Content-Type': 'application/json'
132
- };
133
- const meta = (_opts$responseMeta = (_opts$responseMeta2 = opts.responseMeta) === null || _opts$responseMeta2 === void 0 ? void 0 : _opts$responseMeta2.call(opts, {
134
- ctx,
135
- paths,
136
- type,
137
- data: Array.isArray(untransformedJSON) ? untransformedJSON : [untransformedJSON],
138
- errors
139
- })) !== null && _opts$responseMeta !== void 0 ? _opts$responseMeta : {};
140
-
141
- for (const [key, value] of Object.entries((_meta$headers = meta.headers) !== null && _meta$headers !== void 0 ? _meta$headers : {})) {
142
- var _meta$headers;
143
-
144
- headers[key] = value;
145
- }
146
-
147
- if (meta.status) {
148
- status = meta.status;
149
- }
150
-
151
- const transformedJSON = transformTRPCResponse(router, untransformedJSON);
152
- const body = JSON.stringify(transformedJSON);
153
- return {
154
- body,
155
- status,
156
- headers
157
- };
158
- }
159
-
160
- try {
161
- if (opts.error) {
162
- throw opts.error;
163
- }
164
-
165
- if (isBatchCall && !batchingEnabled) {
166
- throw new Error(`Batching is not enabled on the server`);
167
- }
168
-
169
- if (type === 'unknown' || type === 'subscription') {
170
- throw new TRPCError({
171
- message: `Unexpected request method ${req.method}`,
172
- code: 'METHOD_NOT_SUPPORTED'
173
- });
174
- }
175
-
176
- const rawInput = getRawProcedureInputOrThrow(req);
177
- paths = isBatchCall ? opts.path.split(',') : [opts.path];
178
- ctx = await createContext();
179
-
180
- const deserializeInputValue = rawValue => {
181
- return typeof rawValue !== 'undefined' ? router._def.transformer.input.deserialize(rawValue) : rawValue;
182
- };
183
-
184
- const getInputs = () => {
185
- if (!isBatchCall) {
186
- return {
187
- 0: deserializeInputValue(rawInput)
188
- };
189
- }
190
-
191
- if (rawInput == null || typeof rawInput !== 'object' || Array.isArray(rawInput)) {
192
- throw new TRPCError({
193
- code: 'BAD_REQUEST',
194
- message: '"input" needs to be an object when doing a batch call'
195
- });
196
- }
197
-
198
- const input = {};
199
-
200
- for (const key in rawInput) {
201
- const k = key;
202
- const rawValue = rawInput[k];
203
- const value = deserializeInputValue(rawValue);
204
- input[k] = value;
205
- }
206
-
207
- return input;
208
- };
209
-
210
- const inputs = getInputs();
211
- const rawResults = await Promise.all(paths.map(async (path, index) => {
212
- const input = inputs[index];
213
-
214
- try {
215
- const caller = router.createCaller(ctx);
216
- const output = await caller[type](path, input);
217
- return {
218
- input,
219
- path,
220
- data: output
221
- };
222
- } catch (cause) {
223
- const error = getErrorFromUnknown(cause);
224
- onError === null || onError === void 0 ? void 0 : onError({
225
- error,
226
- path,
227
- input,
228
- ctx,
229
- type: type,
230
- req
231
- });
232
- return {
233
- input,
234
- path,
235
- error
236
- };
237
- }
238
- }));
239
- const errors = rawResults.flatMap(obj => obj.error ? [obj.error] : []);
240
- const resultEnvelopes = rawResults.map(obj => {
241
- const {
242
- path,
243
- input
244
- } = obj;
245
-
246
- if (obj.error) {
247
- return {
248
- error: router.getErrorShape({
249
- error: obj.error,
250
- type,
251
- path,
252
- input,
253
- ctx
254
- })
255
- };
256
- } else {
257
- return {
258
- result: {
259
- data: obj.data
260
- }
261
- };
262
- }
263
- });
264
- const result = isBatchCall ? resultEnvelopes : resultEnvelopes[0];
265
- return endResponse(result, errors);
266
- } catch (cause) {
267
- // we get here if
268
- // - batching is called when it's not enabled
269
- // - `createContext()` throws
270
- // - post body is too large
271
- // - input deserialization fails
272
- const error = getErrorFromUnknown(cause);
273
- onError === null || onError === void 0 ? void 0 : onError({
274
- error,
275
- path: undefined,
276
- input: undefined,
277
- ctx,
278
- type: type,
279
- req
280
- });
281
- return endResponse({
282
- error: router.getErrorShape({
283
- error,
284
- type,
285
- path: undefined,
286
- input: undefined,
287
- ctx
288
- })
289
- }, [error]);
290
- }
291
- }
292
-
293
- export { assertNotBrowser as a, getHTTPStatusCodeFromError as g, resolveHTTPResponse as r };
@@ -1,297 +0,0 @@
1
- 'use strict';
2
-
3
- var TRPCError = require('./TRPCError-9050a68d.js');
4
- var transformTRPCResponse = require('./transformTRPCResponse-0c261655.js');
5
- var envelopes = require('./envelopes-2ae27c9f.js');
6
-
7
- /* istanbul ignore file */
8
- function assertNotBrowser() {
9
- if (typeof window !== 'undefined' && !('Deno' in window) && process.env.NODE_ENV !== 'test' && process.env.JEST_WORKER_ID === undefined) {
10
- throw new Error('Imported server-only code in the browser');
11
- }
12
- }
13
-
14
- function invert(obj) {
15
- const newObj = Object.create(null);
16
-
17
- for (const key in obj) {
18
- const v = obj[key];
19
- newObj[v] = key;
20
- }
21
-
22
- return newObj;
23
- }
24
-
25
- const TRPC_ERROR_CODES_BY_NUMBER = /*#__PURE__*/invert(envelopes.TRPC_ERROR_CODES_BY_KEY);
26
- const JSONRPC2_TO_HTTP_CODE = {
27
- PARSE_ERROR: 400,
28
- BAD_REQUEST: 400,
29
- NOT_FOUND: 404,
30
- INTERNAL_SERVER_ERROR: 500,
31
- UNAUTHORIZED: 401,
32
- FORBIDDEN: 403,
33
- TIMEOUT: 408,
34
- CONFLICT: 409,
35
- CLIENT_CLOSED_REQUEST: 499,
36
- PRECONDITION_FAILED: 412,
37
- PAYLOAD_TOO_LARGE: 413,
38
- METHOD_NOT_SUPPORTED: 405
39
- };
40
-
41
- function getStatusCodeFromKey(code) {
42
- var _JSONRPC2_TO_HTTP_COD;
43
-
44
- return (_JSONRPC2_TO_HTTP_COD = JSONRPC2_TO_HTTP_CODE[code]) !== null && _JSONRPC2_TO_HTTP_COD !== void 0 ? _JSONRPC2_TO_HTTP_COD : 500;
45
- }
46
-
47
- function getHTTPStatusCode(json) {
48
- const arr = Array.isArray(json) ? json : [json];
49
- const httpStatuses = new Set(arr.map(res => {
50
- if ('error' in res) {
51
- const data = res.error.data;
52
-
53
- if (typeof data.httpStatus === 'number') {
54
- return data.httpStatus;
55
- }
56
-
57
- const code = TRPC_ERROR_CODES_BY_NUMBER[res.error.code];
58
- return getStatusCodeFromKey(code);
59
- }
60
-
61
- return 200;
62
- }));
63
-
64
- if (httpStatuses.size !== 1) {
65
- return 207;
66
- }
67
-
68
- const httpStatus = httpStatuses.values().next().value;
69
- return httpStatus;
70
- }
71
- function getHTTPStatusCodeFromError(error) {
72
- const {
73
- code
74
- } = error;
75
- return getStatusCodeFromKey(code);
76
- }
77
-
78
- /* eslint-disable @typescript-eslint/no-non-null-assertion */
79
- const HTTP_METHOD_PROCEDURE_TYPE_MAP = {
80
- GET: 'query',
81
- POST: 'mutation',
82
- PATCH: 'subscription'
83
- };
84
-
85
- function getRawProcedureInputOrThrow(req) {
86
- try {
87
- if (req.method === 'GET') {
88
- if (!req.query.has('input')) {
89
- return undefined;
90
- }
91
-
92
- const raw = req.query.get('input');
93
- return JSON.parse(raw);
94
- }
95
-
96
- return typeof req.body === 'string' ? JSON.parse(req.body) : req.body;
97
- } catch (err) {
98
- throw new TRPCError.TRPCError({
99
- code: 'PARSE_ERROR',
100
- cause: TRPCError.getCauseFromUnknown(err)
101
- });
102
- }
103
- }
104
-
105
- async function resolveHTTPResponse(opts) {
106
- var _opts$batching$enable, _opts$batching, _HTTP_METHOD_PROCEDUR;
107
-
108
- const {
109
- createContext,
110
- onError,
111
- router,
112
- req
113
- } = opts;
114
- const batchingEnabled = (_opts$batching$enable = (_opts$batching = opts.batching) === null || _opts$batching === void 0 ? void 0 : _opts$batching.enabled) !== null && _opts$batching$enable !== void 0 ? _opts$batching$enable : true;
115
-
116
- if (req.method === 'HEAD') {
117
- // can be used for lambda warmup
118
- return {
119
- status: 204
120
- };
121
- }
122
-
123
- const type = (_HTTP_METHOD_PROCEDUR = HTTP_METHOD_PROCEDURE_TYPE_MAP[req.method]) !== null && _HTTP_METHOD_PROCEDUR !== void 0 ? _HTTP_METHOD_PROCEDUR : 'unknown';
124
- let ctx = undefined;
125
- let paths = undefined;
126
- const isBatchCall = !!req.query.get('batch');
127
-
128
- function endResponse(untransformedJSON, errors) {
129
- var _opts$responseMeta, _opts$responseMeta2;
130
-
131
- let status = getHTTPStatusCode(untransformedJSON);
132
- const headers = {
133
- 'Content-Type': 'application/json'
134
- };
135
- const meta = (_opts$responseMeta = (_opts$responseMeta2 = opts.responseMeta) === null || _opts$responseMeta2 === void 0 ? void 0 : _opts$responseMeta2.call(opts, {
136
- ctx,
137
- paths,
138
- type,
139
- data: Array.isArray(untransformedJSON) ? untransformedJSON : [untransformedJSON],
140
- errors
141
- })) !== null && _opts$responseMeta !== void 0 ? _opts$responseMeta : {};
142
-
143
- for (const [key, value] of Object.entries((_meta$headers = meta.headers) !== null && _meta$headers !== void 0 ? _meta$headers : {})) {
144
- var _meta$headers;
145
-
146
- headers[key] = value;
147
- }
148
-
149
- if (meta.status) {
150
- status = meta.status;
151
- }
152
-
153
- const transformedJSON = transformTRPCResponse.transformTRPCResponse(router, untransformedJSON);
154
- const body = JSON.stringify(transformedJSON);
155
- return {
156
- body,
157
- status,
158
- headers
159
- };
160
- }
161
-
162
- try {
163
- if (opts.error) {
164
- throw opts.error;
165
- }
166
-
167
- if (isBatchCall && !batchingEnabled) {
168
- throw new Error(`Batching is not enabled on the server`);
169
- }
170
-
171
- if (type === 'unknown' || type === 'subscription') {
172
- throw new TRPCError.TRPCError({
173
- message: `Unexpected request method ${req.method}`,
174
- code: 'METHOD_NOT_SUPPORTED'
175
- });
176
- }
177
-
178
- const rawInput = getRawProcedureInputOrThrow(req);
179
- paths = isBatchCall ? opts.path.split(',') : [opts.path];
180
- ctx = await createContext();
181
-
182
- const deserializeInputValue = rawValue => {
183
- return typeof rawValue !== 'undefined' ? router._def.transformer.input.deserialize(rawValue) : rawValue;
184
- };
185
-
186
- const getInputs = () => {
187
- if (!isBatchCall) {
188
- return {
189
- 0: deserializeInputValue(rawInput)
190
- };
191
- }
192
-
193
- if (rawInput == null || typeof rawInput !== 'object' || Array.isArray(rawInput)) {
194
- throw new TRPCError.TRPCError({
195
- code: 'BAD_REQUEST',
196
- message: '"input" needs to be an object when doing a batch call'
197
- });
198
- }
199
-
200
- const input = {};
201
-
202
- for (const key in rawInput) {
203
- const k = key;
204
- const rawValue = rawInput[k];
205
- const value = deserializeInputValue(rawValue);
206
- input[k] = value;
207
- }
208
-
209
- return input;
210
- };
211
-
212
- const inputs = getInputs();
213
- const rawResults = await Promise.all(paths.map(async (path, index) => {
214
- const input = inputs[index];
215
-
216
- try {
217
- const caller = router.createCaller(ctx);
218
- const output = await caller[type](path, input);
219
- return {
220
- input,
221
- path,
222
- data: output
223
- };
224
- } catch (cause) {
225
- const error = TRPCError.getErrorFromUnknown(cause);
226
- onError === null || onError === void 0 ? void 0 : onError({
227
- error,
228
- path,
229
- input,
230
- ctx,
231
- type: type,
232
- req
233
- });
234
- return {
235
- input,
236
- path,
237
- error
238
- };
239
- }
240
- }));
241
- const errors = rawResults.flatMap(obj => obj.error ? [obj.error] : []);
242
- const resultEnvelopes = rawResults.map(obj => {
243
- const {
244
- path,
245
- input
246
- } = obj;
247
-
248
- if (obj.error) {
249
- return {
250
- error: router.getErrorShape({
251
- error: obj.error,
252
- type,
253
- path,
254
- input,
255
- ctx
256
- })
257
- };
258
- } else {
259
- return {
260
- result: {
261
- data: obj.data
262
- }
263
- };
264
- }
265
- });
266
- const result = isBatchCall ? resultEnvelopes : resultEnvelopes[0];
267
- return endResponse(result, errors);
268
- } catch (cause) {
269
- // we get here if
270
- // - batching is called when it's not enabled
271
- // - `createContext()` throws
272
- // - post body is too large
273
- // - input deserialization fails
274
- const error = TRPCError.getErrorFromUnknown(cause);
275
- onError === null || onError === void 0 ? void 0 : onError({
276
- error,
277
- path: undefined,
278
- input: undefined,
279
- ctx,
280
- type: type,
281
- req
282
- });
283
- return endResponse({
284
- error: router.getErrorShape({
285
- error,
286
- type,
287
- path: undefined,
288
- input: undefined,
289
- ctx
290
- })
291
- }, [error]);
292
- }
293
- }
294
-
295
- exports.assertNotBrowser = assertNotBrowser;
296
- exports.getHTTPStatusCodeFromError = getHTTPStatusCodeFromError;
297
- exports.resolveHTTPResponse = resolveHTTPResponse;