@trpc/server 10.0.0-proxy-beta.13 → 10.0.0-proxy-beta.14
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.
- package/dist/{TRPCError-281ac25a.mjs → TRPCError-e99e7cbe.mjs} +1 -1
- package/dist/adapters/aws-lambda/index.js +2 -3
- package/dist/adapters/aws-lambda/index.mjs +3 -4
- package/dist/adapters/express.js +3 -3
- package/dist/adapters/express.mjs +4 -4
- package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
- package/dist/adapters/fastify/index.js +2 -3
- package/dist/adapters/fastify/index.mjs +3 -4
- package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -1
- package/dist/adapters/fetch/index.js +2 -3
- package/dist/adapters/fetch/index.mjs +3 -4
- package/dist/adapters/next.js +3 -3
- package/dist/adapters/next.mjs +4 -4
- package/dist/adapters/node-http/index.js +3 -3
- package/dist/adapters/node-http/index.mjs +4 -4
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
- package/dist/adapters/standalone.js +3 -3
- package/dist/adapters/standalone.mjs +4 -4
- package/dist/adapters/ws.d.ts.map +1 -1
- package/dist/adapters/ws.js +10 -3
- package/dist/adapters/ws.mjs +11 -4
- package/dist/core/initTRPC.d.ts +16 -4
- package/dist/core/initTRPC.d.ts.map +1 -1
- package/dist/core/internals/config.d.ts +13 -0
- package/dist/core/internals/config.d.ts.map +1 -1
- package/dist/core/middleware.d.ts +1 -1
- package/dist/core/middleware.d.ts.map +1 -1
- package/dist/deprecated/internals/procedure.d.ts.map +1 -1
- package/dist/deprecated/router.d.ts.map +1 -1
- package/dist/http/index.d.ts.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +739 -25
- package/dist/index.mjs +724 -9
- package/dist/{nodeHTTPRequestHandler-1bf460cc.mjs → nodeHTTPRequestHandler-205f7545.mjs} +2 -3
- package/dist/{nodeHTTPRequestHandler-71717219.js → nodeHTTPRequestHandler-efc38711.js} +1 -2
- package/dist/resolveHTTPResponse-4ceb1785.mjs +205 -0
- package/dist/resolveHTTPResponse-bf4c6ceb.js +207 -0
- package/dist/subscription.mjs +1 -1
- package/dist/{resolveHTTPResponse-c6e31b55.js → transformTRPCResponse-05aa84c1.js} +22 -201
- package/dist/{resolveHTTPResponse-f2b378b6.mjs → transformTRPCResponse-959de787.mjs} +21 -201
- package/dist/types.d.ts +9 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/adapters/fastify/fastifyRequestHandler.ts +0 -3
- package/src/adapters/fetch/fetchRequestHandler.ts +0 -3
- package/src/adapters/node-http/nodeHTTPRequestHandler.ts +0 -3
- package/src/adapters/ws.ts +13 -3
- package/src/core/initTRPC.ts +12 -0
- package/src/core/internals/config.ts +19 -0
- package/src/core/middleware.ts +1 -1
- package/src/deprecated/internals/procedure.ts +0 -3
- package/src/deprecated/router.ts +0 -3
- package/src/http/index.ts +0 -4
- package/src/index.ts +0 -1
- package/src/types.ts +28 -7
- package/dist/assertNotBrowser.d.ts +0 -2
- package/dist/assertNotBrowser.d.ts.map +0 -1
- package/dist/router-15f9618e.js +0 -724
- package/dist/router-28a2c129.mjs +0 -718
- package/dist/transformTRPCResponse-11ac69cc.js +0 -27
- package/dist/transformTRPCResponse-c8138d5f.mjs +0 -25
- package/src/assertNotBrowser.ts +0 -12
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
import { T as TRPCError
|
|
1
|
+
import { T as TRPCError } from './TRPCError-e99e7cbe.mjs';
|
|
2
2
|
import { i as invert, T as TRPC_ERROR_CODES_BY_KEY } from './codes-7d21f749.mjs';
|
|
3
3
|
import { c as createRecursiveProxy } from './index-5a6a2e91.mjs';
|
|
4
|
-
import { t as transformTRPCResponse } from './transformTRPCResponse-c8138d5f.mjs';
|
|
5
|
-
|
|
6
|
-
/* istanbul ignore file */ 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
4
|
|
|
12
5
|
const defaultFormatter = ({ shape })=>{
|
|
13
6
|
return shape;
|
|
@@ -253,205 +246,32 @@ const emptyRouter = {
|
|
|
253
246
|
return procedure(opts);
|
|
254
247
|
}
|
|
255
248
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
function
|
|
261
|
-
|
|
262
|
-
if (req.method === 'GET') {
|
|
263
|
-
if (!req.query.has('input')) {
|
|
264
|
-
return undefined;
|
|
265
|
-
}
|
|
266
|
-
const raw = req.query.get('input');
|
|
267
|
-
return JSON.parse(raw);
|
|
268
|
-
}
|
|
269
|
-
if (typeof req.body === 'string') {
|
|
270
|
-
// A mutation with no inputs will have req.body === ''
|
|
271
|
-
return req.body.length === 0 ? undefined : JSON.parse(req.body);
|
|
272
|
-
}
|
|
273
|
-
return req.body;
|
|
274
|
-
} catch (err) {
|
|
275
|
-
throw new TRPCError({
|
|
276
|
-
code: 'PARSE_ERROR',
|
|
277
|
-
cause: getCauseFromUnknown(err)
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
async function resolveHTTPResponse(opts) {
|
|
282
|
-
const { createContext , onError , router , req } = opts;
|
|
283
|
-
const batchingEnabled = opts.batching?.enabled ?? true;
|
|
284
|
-
if (req.method === 'HEAD') {
|
|
285
|
-
// can be used for lambda warmup
|
|
249
|
+
/**
|
|
250
|
+
* The default check to see if we're in a server
|
|
251
|
+
*/ const isServerDefault = typeof window === 'undefined' || 'Deno' in window || process.env.NODE_ENV === 'test' || !!process.env.JEST_WORKER_ID;
|
|
252
|
+
|
|
253
|
+
function transformTRPCResponseItem(router, item) {
|
|
254
|
+
if ('error' in item) {
|
|
286
255
|
return {
|
|
287
|
-
|
|
256
|
+
...item,
|
|
257
|
+
error: router._def.transformer.output.serialize(item.error)
|
|
288
258
|
};
|
|
289
259
|
}
|
|
290
|
-
|
|
291
|
-
let ctx = undefined;
|
|
292
|
-
let paths = undefined;
|
|
293
|
-
const isBatchCall = !!req.query.get('batch');
|
|
294
|
-
function endResponse(untransformedJSON, errors) {
|
|
295
|
-
let status = getHTTPStatusCode(untransformedJSON);
|
|
296
|
-
const headers = {
|
|
297
|
-
'Content-Type': 'application/json'
|
|
298
|
-
};
|
|
299
|
-
const meta = opts.responseMeta?.({
|
|
300
|
-
ctx,
|
|
301
|
-
paths,
|
|
302
|
-
type,
|
|
303
|
-
data: Array.isArray(untransformedJSON) ? untransformedJSON : [
|
|
304
|
-
untransformedJSON
|
|
305
|
-
],
|
|
306
|
-
errors
|
|
307
|
-
}) ?? {};
|
|
308
|
-
for (const [key, value] of Object.entries(meta.headers ?? {})){
|
|
309
|
-
headers[key] = value;
|
|
310
|
-
}
|
|
311
|
-
if (meta.status) {
|
|
312
|
-
status = meta.status;
|
|
313
|
-
}
|
|
314
|
-
const transformedJSON = transformTRPCResponse(router, untransformedJSON);
|
|
315
|
-
const body = JSON.stringify(transformedJSON);
|
|
260
|
+
if ('data' in item.result) {
|
|
316
261
|
return {
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
}
|
|
322
|
-
try {
|
|
323
|
-
if (opts.error) {
|
|
324
|
-
throw opts.error;
|
|
325
|
-
}
|
|
326
|
-
if (isBatchCall && !batchingEnabled) {
|
|
327
|
-
throw new Error(`Batching is not enabled on the server`);
|
|
328
|
-
}
|
|
329
|
-
if (type === 'subscription') {
|
|
330
|
-
throw new TRPCError({
|
|
331
|
-
message: 'Subscriptions should use wsLink',
|
|
332
|
-
code: 'METHOD_NOT_SUPPORTED'
|
|
333
|
-
});
|
|
334
|
-
}
|
|
335
|
-
if (type === 'unknown') {
|
|
336
|
-
throw new TRPCError({
|
|
337
|
-
message: `Unexpected request method ${req.method}`,
|
|
338
|
-
code: 'METHOD_NOT_SUPPORTED'
|
|
339
|
-
});
|
|
340
|
-
}
|
|
341
|
-
const rawInput = getRawProcedureInputOrThrow(req);
|
|
342
|
-
paths = isBatchCall ? opts.path.split(',') : [
|
|
343
|
-
opts.path
|
|
344
|
-
];
|
|
345
|
-
ctx = await createContext();
|
|
346
|
-
const deserializeInputValue = (rawValue)=>{
|
|
347
|
-
return typeof rawValue !== 'undefined' ? router._def.transformer.input.deserialize(rawValue) : rawValue;
|
|
348
|
-
};
|
|
349
|
-
const getInputs = ()=>{
|
|
350
|
-
if (!isBatchCall) {
|
|
351
|
-
return {
|
|
352
|
-
0: deserializeInputValue(rawInput)
|
|
353
|
-
};
|
|
354
|
-
}
|
|
355
|
-
if (rawInput == null || typeof rawInput !== 'object' || Array.isArray(rawInput)) {
|
|
356
|
-
throw new TRPCError({
|
|
357
|
-
code: 'BAD_REQUEST',
|
|
358
|
-
message: '"input" needs to be an object when doing a batch call'
|
|
359
|
-
});
|
|
360
|
-
}
|
|
361
|
-
const input = {};
|
|
362
|
-
for(const key in rawInput){
|
|
363
|
-
const k = key;
|
|
364
|
-
const rawValue = rawInput[k];
|
|
365
|
-
const value = deserializeInputValue(rawValue);
|
|
366
|
-
input[k] = value;
|
|
262
|
+
...item,
|
|
263
|
+
result: {
|
|
264
|
+
...item.result,
|
|
265
|
+
data: router._def.transformer.output.serialize(item.result.data)
|
|
367
266
|
}
|
|
368
|
-
return input;
|
|
369
267
|
};
|
|
370
|
-
const inputs = getInputs();
|
|
371
|
-
const rawResults = await Promise.all(paths.map(async (path, index)=>{
|
|
372
|
-
const input = inputs[index];
|
|
373
|
-
try {
|
|
374
|
-
const output = await callProcedure({
|
|
375
|
-
procedures: router._def.procedures,
|
|
376
|
-
path,
|
|
377
|
-
rawInput: input,
|
|
378
|
-
ctx,
|
|
379
|
-
type
|
|
380
|
-
});
|
|
381
|
-
return {
|
|
382
|
-
input,
|
|
383
|
-
path,
|
|
384
|
-
data: output
|
|
385
|
-
};
|
|
386
|
-
} catch (cause) {
|
|
387
|
-
const error = getTRPCErrorFromUnknown(cause);
|
|
388
|
-
onError?.({
|
|
389
|
-
error,
|
|
390
|
-
path,
|
|
391
|
-
input,
|
|
392
|
-
ctx,
|
|
393
|
-
type: type,
|
|
394
|
-
req
|
|
395
|
-
});
|
|
396
|
-
return {
|
|
397
|
-
input,
|
|
398
|
-
path,
|
|
399
|
-
error
|
|
400
|
-
};
|
|
401
|
-
}
|
|
402
|
-
}));
|
|
403
|
-
const errors = rawResults.flatMap((obj)=>obj.error ? [
|
|
404
|
-
obj.error
|
|
405
|
-
] : []);
|
|
406
|
-
const resultEnvelopes = rawResults.map((obj)=>{
|
|
407
|
-
const { path , input } = obj;
|
|
408
|
-
if (obj.error) {
|
|
409
|
-
return {
|
|
410
|
-
error: router.getErrorShape({
|
|
411
|
-
error: obj.error,
|
|
412
|
-
type,
|
|
413
|
-
path,
|
|
414
|
-
input,
|
|
415
|
-
ctx
|
|
416
|
-
})
|
|
417
|
-
};
|
|
418
|
-
} else {
|
|
419
|
-
return {
|
|
420
|
-
result: {
|
|
421
|
-
data: obj.data
|
|
422
|
-
}
|
|
423
|
-
};
|
|
424
|
-
}
|
|
425
|
-
});
|
|
426
|
-
const result = isBatchCall ? resultEnvelopes : resultEnvelopes[0];
|
|
427
|
-
return endResponse(result, errors);
|
|
428
|
-
} catch (cause) {
|
|
429
|
-
// we get here if
|
|
430
|
-
// - batching is called when it's not enabled
|
|
431
|
-
// - `createContext()` throws
|
|
432
|
-
// - post body is too large
|
|
433
|
-
// - input deserialization fails
|
|
434
|
-
const error = getTRPCErrorFromUnknown(cause);
|
|
435
|
-
onError?.({
|
|
436
|
-
error,
|
|
437
|
-
path: undefined,
|
|
438
|
-
input: undefined,
|
|
439
|
-
ctx,
|
|
440
|
-
type: type,
|
|
441
|
-
req
|
|
442
|
-
});
|
|
443
|
-
return endResponse({
|
|
444
|
-
error: router.getErrorShape({
|
|
445
|
-
error,
|
|
446
|
-
type,
|
|
447
|
-
path: undefined,
|
|
448
|
-
input: undefined,
|
|
449
|
-
ctx
|
|
450
|
-
})
|
|
451
|
-
}, [
|
|
452
|
-
error
|
|
453
|
-
]);
|
|
454
268
|
}
|
|
269
|
+
return item;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Takes a unserialized `TRPCResponse` and serializes it with the router's transformers
|
|
273
|
+
**/ function transformTRPCResponse(router, itemOrItems) {
|
|
274
|
+
return Array.isArray(itemOrItems) ? itemOrItems.map((item)=>transformTRPCResponseItem(router, item)) : transformTRPCResponseItem(router, itemOrItems);
|
|
455
275
|
}
|
|
456
276
|
|
|
457
|
-
export { defaultTransformer as a,
|
|
277
|
+
export { defaultTransformer as a, getHTTPStatusCodeFromError as b, createRouterFactory as c, defaultFormatter as d, callProcedure as e, getHTTPStatusCode as f, getDataTransformer as g, isServerDefault as i, mergeWithoutOverrides as m, procedureTypes as p, transformTRPCResponse as t };
|
package/dist/types.d.ts
CHANGED
|
@@ -2,12 +2,19 @@
|
|
|
2
2
|
* @internal
|
|
3
3
|
*/
|
|
4
4
|
export declare type identity<TType> = TType;
|
|
5
|
+
declare type InferOptional<TType, TKeys extends keyof TType> = Partial<Pick<TType, TKeys>> & Omit<TType, TKeys>;
|
|
6
|
+
declare type OmitNever<TType> = Pick<TType, {
|
|
7
|
+
[K in keyof TType]: TType[K] extends never ? never : K;
|
|
8
|
+
}[keyof TType]>;
|
|
9
|
+
declare type UndefinedKeys<TType> = keyof OmitNever<{
|
|
10
|
+
[K in keyof TType]: TType[K] extends undefined ? TType : never;
|
|
11
|
+
}>;
|
|
5
12
|
/**
|
|
6
13
|
* @internal
|
|
7
14
|
*/
|
|
8
|
-
export declare type FlatOverwrite<TType, TWith> =
|
|
15
|
+
export declare type FlatOverwrite<TType, TWith> = Simplify<InferOptional<{
|
|
9
16
|
[TKey in keyof TWith | keyof TType]: TKey extends keyof TWith ? TWith[TKey] : TKey extends keyof TType ? TType[TKey] : never;
|
|
10
|
-
}
|
|
17
|
+
}, UndefinedKeys<TType> | UndefinedKeys<TWith>>>;
|
|
11
18
|
/**
|
|
12
19
|
* @public
|
|
13
20
|
*/
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,oBAAY,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC;AAEpC;;GAEG;AACH,oBAAY,aAAa,CAAC,KAAK,EAAE,KAAK,IAAI,QAAQ,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,oBAAY,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC;AAEpC,aAAK,aAAa,CAAC,KAAK,EAAE,KAAK,SAAS,MAAM,KAAK,IAAI,OAAO,CAC5D,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CACnB,GACC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAErB,aAAK,SAAS,CAAC,KAAK,IAAI,IAAI,CAC1B,KAAK,EACL;KACG,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,GAAG,CAAC;CACvD,CAAC,MAAM,KAAK,CAAC,CACf,CAAC;AAEF,aAAK,aAAa,CAAC,KAAK,IAAI,MAAM,SAAS,CAAC;KACzC,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK;CAC/D,CAAC,CAAC;AAEH;;GAEG;AACH,oBAAY,aAAa,CAAC,KAAK,EAAE,KAAK,IAAI,QAAQ,CAChD,aAAa,CACX;KACG,IAAI,IAAI,MAAM,KAAK,GAAG,MAAM,KAAK,GAAG,IAAI,SAAS,MAAM,KAAK,GACzD,KAAK,CAAC,IAAI,CAAC,GACX,IAAI,SAAS,MAAM,KAAK,GACxB,KAAK,CAAC,IAAI,CAAC,GACX,KAAK;CACV,EACD,aAAa,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAC5C,CACF,CAAC;AAEF;;GAEG;AACH,oBAAY,KAAK,CAAC,KAAK,IAAI,KAAK,GAAG,SAAS,GAAG,IAAI,CAAC;AAEpD;;GAEG;AACH,oBAAY,OAAO,CAAC,KAAK,IAAI,KAAK,SAAS,WAAW,CAAC,MAAM,CAAC,CAAC,GAC3D,OAAO,CAAC,CAAC,CAAC,GACV,KAAK,CAAC;AAEV;;GAEG;AACH,oBAAY,QAAQ,CAAC,KAAK,IAAI;KAAG,OAAO,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;CAAE,CAAC;AAE3E;;GAEG;AACH,oBAAY,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC,CAAC;AAE5D;;GAEG;AACH,oBAAY,YAAY,CAAC,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;AAEzD;;;;;GAKG;AACH,oBAAY,SAAS,CAAC,KAAK,IAAI,KAAK,GAAG;KACpC,OAAO,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,oBAAY,oBAAoB,CAAC,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,IACtE,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AAEjC,aAAK,UAAU,CAAC,IAAI,SAAS,MAAM,EAAE,OAAO,IAAI;KAC7C,IAAI,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,OAAO,GAAG,IAAI,GAAG,KAAK;CAChE,CAAC,MAAM,IAAI,CAAC,CAAC;AAEd;;GAEG;AACH,oBAAY,MAAM,CAAC,IAAI,SAAS,MAAM,EAAE,OAAO,IAAI,IAAI,CACrD,IAAI,EACJ,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAC1B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trpc/server",
|
|
3
|
-
"version": "10.0.0-proxy-beta.
|
|
3
|
+
"version": "10.0.0-proxy-beta.14",
|
|
4
4
|
"description": "tRPC Server",
|
|
5
5
|
"author": "KATT",
|
|
6
6
|
"license": "MIT",
|
|
@@ -122,10 +122,10 @@
|
|
|
122
122
|
"@testing-library/jest-dom": "^5.16.5",
|
|
123
123
|
"@testing-library/react": "^13.4.0",
|
|
124
124
|
"@testing-library/user-event": "^14.4.3",
|
|
125
|
-
"@trpc/client": "10.0.0-proxy-beta.
|
|
126
|
-
"@trpc/next": "10.0.0-proxy-beta.
|
|
127
|
-
"@trpc/react": "10.0.0-proxy-beta.
|
|
128
|
-
"@trpc/server": "10.0.0-proxy-beta.
|
|
125
|
+
"@trpc/client": "10.0.0-proxy-beta.14",
|
|
126
|
+
"@trpc/next": "10.0.0-proxy-beta.14",
|
|
127
|
+
"@trpc/react": "10.0.0-proxy-beta.14",
|
|
128
|
+
"@trpc/server": "10.0.0-proxy-beta.14",
|
|
129
129
|
"@types/aws-lambda": "^8.10.97",
|
|
130
130
|
"@types/express": "^4.17.12",
|
|
131
131
|
"@types/hash-sum": "^1.0.0",
|
|
@@ -161,5 +161,5 @@
|
|
|
161
161
|
"yup": "^0.32.8",
|
|
162
162
|
"zod": "^3.0.0"
|
|
163
163
|
},
|
|
164
|
-
"gitHead": "
|
|
164
|
+
"gitHead": "55d4775d90e8620889a6828a4a3d3373c1bdd5f5"
|
|
165
165
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { FastifyReply, FastifyRequest } from 'fastify';
|
|
2
|
-
import { assertNotBrowser } from '../../assertNotBrowser';
|
|
3
2
|
import { AnyRouter, inferRouterContext } from '../../core';
|
|
4
3
|
import {
|
|
5
4
|
HTTPBaseHandlerOptions,
|
|
@@ -8,8 +7,6 @@ import {
|
|
|
8
7
|
import { resolveHTTPResponse } from '../../http/resolveHTTPResponse';
|
|
9
8
|
import { NodeHTTPCreateContextOption } from '../node-http';
|
|
10
9
|
|
|
11
|
-
assertNotBrowser();
|
|
12
|
-
|
|
13
10
|
export type FastifyHandlerOptions<
|
|
14
11
|
TRouter extends AnyRouter,
|
|
15
12
|
TRequest extends FastifyRequest,
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import { assertNotBrowser } from '../../assertNotBrowser';
|
|
2
1
|
import { AnyRouter } from '../../core';
|
|
3
2
|
import { HTTPRequest } from '../../http/internals/types';
|
|
4
3
|
import { resolveHTTPResponse } from '../../http/resolveHTTPResponse';
|
|
5
4
|
import { FetchHandlerOptions } from './types';
|
|
6
5
|
|
|
7
|
-
assertNotBrowser();
|
|
8
|
-
|
|
9
6
|
export type FetchHandlerRequestOptions<TRouter extends AnyRouter> = {
|
|
10
7
|
req: Request;
|
|
11
8
|
endpoint: string;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
2
|
-
import { assertNotBrowser } from '../../assertNotBrowser';
|
|
3
2
|
import { AnyRouter } from '../../core';
|
|
4
3
|
import { inferRouterDef } from '../../core/types';
|
|
5
4
|
import { HTTPRequest } from '../../http/internals/types';
|
|
@@ -11,8 +10,6 @@ import {
|
|
|
11
10
|
NodeHTTPResponse,
|
|
12
11
|
} from './types';
|
|
13
12
|
|
|
14
|
-
assertNotBrowser();
|
|
15
|
-
|
|
16
13
|
type NodeHTTPRequestHandlerOptions<
|
|
17
14
|
TRouter extends AnyRouter,
|
|
18
15
|
TRequest extends NodeHTTPRequest,
|
package/src/adapters/ws.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { IncomingMessage } from 'http';
|
|
2
2
|
import ws from 'ws';
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
AnyRouter,
|
|
5
|
+
ProcedureType,
|
|
6
|
+
callProcedure,
|
|
7
|
+
inferRouterContext,
|
|
8
|
+
} from '../core';
|
|
4
9
|
import { TRPCError } from '../error/TRPCError';
|
|
5
10
|
import { getCauseFromUnknown, getTRPCErrorFromUnknown } from '../error/utils';
|
|
6
11
|
import { transformTRPCResponse } from '../internals/transformTRPCResponse';
|
|
@@ -160,8 +165,13 @@ export function applyWSSHandler<TRouter extends AnyRouter>(
|
|
|
160
165
|
try {
|
|
161
166
|
await ctxPromise; // asserts context has been set
|
|
162
167
|
|
|
163
|
-
const
|
|
164
|
-
|
|
168
|
+
const result = await callProcedure({
|
|
169
|
+
procedures: router._def.procedures,
|
|
170
|
+
path,
|
|
171
|
+
rawInput: input,
|
|
172
|
+
ctx,
|
|
173
|
+
type,
|
|
174
|
+
});
|
|
165
175
|
|
|
166
176
|
if (type === 'subscription') {
|
|
167
177
|
if (!isObservable(result)) {
|
package/src/core/initTRPC.ts
CHANGED
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
CreateRootConfig,
|
|
19
19
|
InitGenerics,
|
|
20
20
|
InitOptions,
|
|
21
|
+
isServerDefault,
|
|
21
22
|
} from './internals/config';
|
|
22
23
|
import { createBuilder } from './internals/procedureBuilder';
|
|
23
24
|
import { PickFirstDefined, ValidateShape } from './internals/utils';
|
|
@@ -95,6 +96,17 @@ function createTRPCInner<TParams extends Partial<InitGenerics>>() {
|
|
|
95
96
|
transformer: $Transformer;
|
|
96
97
|
}>;
|
|
97
98
|
|
|
99
|
+
{
|
|
100
|
+
// Server check
|
|
101
|
+
const isServer: boolean = options?.isServer ?? isServerDefault;
|
|
102
|
+
|
|
103
|
+
if (!isServer && options?.allowOutsideOfServer !== true) {
|
|
104
|
+
throw new Error(
|
|
105
|
+
`You're trying to use @trpc/server in a non-server environment. This is not supported by default.`,
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
98
110
|
const errorFormatter = options?.errorFormatter ?? defaultFormatter;
|
|
99
111
|
const transformer = getDataTransformer(
|
|
100
112
|
options?.transformer ?? defaultTransformer,
|
|
@@ -12,6 +12,16 @@ export interface InitGenerics {
|
|
|
12
12
|
ctx: Record<string, unknown>;
|
|
13
13
|
meta: Record<string, unknown>;
|
|
14
14
|
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* The default check to see if we're in a server
|
|
18
|
+
*/
|
|
19
|
+
export const isServerDefault: boolean =
|
|
20
|
+
typeof window === 'undefined' ||
|
|
21
|
+
'Deno' in window ||
|
|
22
|
+
process.env.NODE_ENV === 'test' ||
|
|
23
|
+
!!process.env.JEST_WORKER_ID;
|
|
24
|
+
|
|
15
25
|
/**
|
|
16
26
|
* The initial params that are used and actually represents real values underneath
|
|
17
27
|
* @internal
|
|
@@ -19,6 +29,15 @@ export interface InitGenerics {
|
|
|
19
29
|
export interface InitOptions<TType extends InitGenerics> {
|
|
20
30
|
transformer: DataTransformerOptions;
|
|
21
31
|
errorFormatter: ErrorFormatter<TType['ctx'], any>;
|
|
32
|
+
/**
|
|
33
|
+
* Allow `@trpc/server` to run in non-server environments
|
|
34
|
+
* @default false
|
|
35
|
+
*/
|
|
36
|
+
allowOutsideOfServer: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Is this a server environment?
|
|
39
|
+
*/
|
|
40
|
+
isServer: boolean;
|
|
22
41
|
}
|
|
23
42
|
|
|
24
43
|
/**
|
package/src/core/middleware.ts
CHANGED
|
@@ -57,7 +57,7 @@ export type MiddlewareFunction<
|
|
|
57
57
|
path: string;
|
|
58
58
|
input: TParams['_input_out'];
|
|
59
59
|
rawInput: unknown;
|
|
60
|
-
meta: TParams['_meta'];
|
|
60
|
+
meta: TParams['_meta'] | undefined;
|
|
61
61
|
next: {
|
|
62
62
|
(): Promise<MiddlewareResult<TParams>>;
|
|
63
63
|
<TContext>(opts: { ctx: TContext }): Promise<
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { assertNotBrowser } from '../../assertNotBrowser';
|
|
3
2
|
import { TRPCError } from '../../error/TRPCError';
|
|
4
3
|
import {
|
|
5
4
|
getCauseFromUnknown,
|
|
@@ -13,8 +12,6 @@ import {
|
|
|
13
12
|
middlewareMarker,
|
|
14
13
|
} from './middlewares';
|
|
15
14
|
|
|
16
|
-
assertNotBrowser();
|
|
17
|
-
|
|
18
15
|
export type ProcedureParserZodEsque<TInput, TOutput> = {
|
|
19
16
|
_input: TInput;
|
|
20
17
|
_output: TOutput;
|
package/src/deprecated/router.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { assertNotBrowser } from '../assertNotBrowser';
|
|
3
2
|
import { TRPCError } from '../error/TRPCError';
|
|
4
3
|
import { defaultFormatter } from '../error/formatter';
|
|
5
4
|
import { getHTTPStatusCodeFromError } from '../http/internals/getHTTPStatusCode';
|
|
@@ -29,8 +28,6 @@ import {
|
|
|
29
28
|
} from './internals/procedure';
|
|
30
29
|
import { MigrateRouter, migrateRouter } from './interop';
|
|
31
30
|
|
|
32
|
-
assertNotBrowser();
|
|
33
|
-
|
|
34
31
|
export type { Procedure } from './internals/procedure';
|
|
35
32
|
|
|
36
33
|
/**
|
package/src/http/index.ts
CHANGED
package/src/index.ts
CHANGED
package/src/types.ts
CHANGED
|
@@ -5,16 +5,37 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export type identity<TType> = TType;
|
|
7
7
|
|
|
8
|
+
type InferOptional<TType, TKeys extends keyof TType> = Partial<
|
|
9
|
+
Pick<TType, TKeys>
|
|
10
|
+
> &
|
|
11
|
+
Omit<TType, TKeys>;
|
|
12
|
+
|
|
13
|
+
type OmitNever<TType> = Pick<
|
|
14
|
+
TType,
|
|
15
|
+
{
|
|
16
|
+
[K in keyof TType]: TType[K] extends never ? never : K;
|
|
17
|
+
}[keyof TType]
|
|
18
|
+
>;
|
|
19
|
+
|
|
20
|
+
type UndefinedKeys<TType> = keyof OmitNever<{
|
|
21
|
+
[K in keyof TType]: TType[K] extends undefined ? TType : never;
|
|
22
|
+
}>;
|
|
23
|
+
|
|
8
24
|
/**
|
|
9
25
|
* @internal
|
|
10
26
|
*/
|
|
11
|
-
export type FlatOverwrite<TType, TWith> =
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
27
|
+
export type FlatOverwrite<TType, TWith> = Simplify<
|
|
28
|
+
InferOptional<
|
|
29
|
+
{
|
|
30
|
+
[TKey in keyof TWith | keyof TType]: TKey extends keyof TWith
|
|
31
|
+
? TWith[TKey]
|
|
32
|
+
: TKey extends keyof TType
|
|
33
|
+
? TType[TKey]
|
|
34
|
+
: never;
|
|
35
|
+
},
|
|
36
|
+
UndefinedKeys<TType> | UndefinedKeys<TWith>
|
|
37
|
+
>
|
|
38
|
+
>;
|
|
18
39
|
|
|
19
40
|
/**
|
|
20
41
|
* @public
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"assertNotBrowser.d.ts","sourceRoot":"","sources":["../src/assertNotBrowser.ts"],"names":[],"mappings":"AAEA,wBAAgB,gBAAgB,SAS/B"}
|