@trpc/server 10.0.0-proxy-beta.12 → 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.
Files changed (81) hide show
  1. package/dist/{TRPCError-281ac25a.mjs → TRPCError-e99e7cbe.mjs} +1 -1
  2. package/dist/adapters/aws-lambda/index.js +2 -3
  3. package/dist/adapters/aws-lambda/index.mjs +3 -4
  4. package/dist/adapters/express.js +3 -3
  5. package/dist/adapters/express.mjs +4 -4
  6. package/dist/adapters/fastify/fastifyRequestHandler.d.ts.map +1 -1
  7. package/dist/adapters/fastify/index.js +2 -3
  8. package/dist/adapters/fastify/index.mjs +3 -4
  9. package/dist/adapters/fetch/fetchRequestHandler.d.ts.map +1 -1
  10. package/dist/adapters/fetch/index.js +2 -3
  11. package/dist/adapters/fetch/index.mjs +3 -4
  12. package/dist/adapters/next.js +3 -3
  13. package/dist/adapters/next.mjs +4 -4
  14. package/dist/adapters/node-http/index.js +3 -3
  15. package/dist/adapters/node-http/index.mjs +4 -4
  16. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
  17. package/dist/adapters/standalone.js +3 -3
  18. package/dist/adapters/standalone.mjs +4 -4
  19. package/dist/adapters/ws.d.ts.map +1 -1
  20. package/dist/adapters/ws.js +10 -3
  21. package/dist/adapters/ws.mjs +11 -4
  22. package/dist/core/index.d.ts +1 -1
  23. package/dist/core/index.d.ts.map +1 -1
  24. package/dist/core/initTRPC.d.ts +22 -5
  25. package/dist/core/initTRPC.d.ts.map +1 -1
  26. package/dist/core/internals/config.d.ts +13 -0
  27. package/dist/core/internals/config.d.ts.map +1 -1
  28. package/dist/core/internals/procedureBuilder.d.ts +24 -24
  29. package/dist/core/internals/procedureBuilder.d.ts.map +1 -1
  30. package/dist/core/middleware.d.ts +1 -1
  31. package/dist/core/middleware.d.ts.map +1 -1
  32. package/dist/core/procedure.d.ts +7 -15
  33. package/dist/core/procedure.d.ts.map +1 -1
  34. package/dist/core/router.d.ts +8 -3
  35. package/dist/core/router.d.ts.map +1 -1
  36. package/dist/deprecated/internals/procedure.d.ts.map +1 -1
  37. package/dist/deprecated/interop.d.ts +2 -2
  38. package/dist/deprecated/interop.d.ts.map +1 -1
  39. package/dist/deprecated/router.d.ts.map +1 -1
  40. package/dist/http/index.d.ts.map +1 -1
  41. package/dist/index.d.ts +0 -1
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +739 -25
  44. package/dist/index.mjs +724 -9
  45. package/dist/internals.d.ts +1 -2
  46. package/dist/internals.d.ts.map +1 -1
  47. package/dist/{nodeHTTPRequestHandler-f627eff7.mjs → nodeHTTPRequestHandler-205f7545.mjs} +2 -3
  48. package/dist/{nodeHTTPRequestHandler-831afd20.js → nodeHTTPRequestHandler-efc38711.js} +1 -2
  49. package/dist/resolveHTTPResponse-4ceb1785.mjs +205 -0
  50. package/dist/resolveHTTPResponse-bf4c6ceb.js +207 -0
  51. package/dist/subscription.mjs +1 -1
  52. package/dist/{resolveHTTPResponse-190892ac.js → transformTRPCResponse-05aa84c1.js} +22 -202
  53. package/dist/{resolveHTTPResponse-75ea5653.mjs → transformTRPCResponse-959de787.mjs} +21 -202
  54. package/dist/types.d.ts +9 -2
  55. package/dist/types.d.ts.map +1 -1
  56. package/package.json +6 -6
  57. package/src/adapters/fastify/fastifyRequestHandler.ts +0 -3
  58. package/src/adapters/fetch/fetchRequestHandler.ts +0 -3
  59. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +0 -3
  60. package/src/adapters/ws.ts +13 -3
  61. package/src/core/index.ts +1 -0
  62. package/src/core/initTRPC.ts +12 -0
  63. package/src/core/internals/config.ts +19 -0
  64. package/src/core/internals/procedureBuilder.ts +38 -47
  65. package/src/core/middleware.ts +1 -1
  66. package/src/core/procedure.ts +7 -18
  67. package/src/core/router.ts +20 -13
  68. package/src/deprecated/internals/procedure.ts +0 -3
  69. package/src/deprecated/interop.ts +2 -12
  70. package/src/deprecated/router.ts +0 -3
  71. package/src/http/index.ts +0 -4
  72. package/src/index.ts +0 -1
  73. package/src/internals.ts +4 -6
  74. package/src/types.ts +28 -7
  75. package/dist/assertNotBrowser.d.ts +0 -2
  76. package/dist/assertNotBrowser.d.ts.map +0 -1
  77. package/dist/router-133cf4a4.mjs +0 -718
  78. package/dist/router-3bad08e5.js +0 -724
  79. package/dist/transformTRPCResponse-11ac69cc.js +0 -27
  80. package/dist/transformTRPCResponse-c8138d5f.mjs +0 -25
  81. package/src/assertNotBrowser.ts +0 -12
@@ -3,13 +3,6 @@
3
3
  var TRPCError = require('./TRPCError-fe9113e5.js');
4
4
  var codes = require('./codes-76c38a34.js');
5
5
  var index = require('./index-62d46c97.js');
6
- var transformTRPCResponse = require('./transformTRPCResponse-11ac69cc.js');
7
-
8
- /* istanbul ignore file */ 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
6
 
14
7
  const defaultFormatter = ({ shape })=>{
15
8
  return shape;
@@ -137,7 +130,6 @@ const emptyRouter = {
137
130
  */ 'then'
138
131
  ];
139
132
  /**
140
- *
141
133
  * @internal
142
134
  */ function createRouterFactory(defaults) {
143
135
  return function createRouterInner(opts) {
@@ -256,214 +248,42 @@ const emptyRouter = {
256
248
  return procedure(opts);
257
249
  }
258
250
 
259
- const HTTP_METHOD_PROCEDURE_TYPE_MAP = {
260
- GET: 'query',
261
- POST: 'mutation'
262
- };
263
- function getRawProcedureInputOrThrow(req) {
264
- try {
265
- if (req.method === 'GET') {
266
- if (!req.query.has('input')) {
267
- return undefined;
268
- }
269
- const raw = req.query.get('input');
270
- return JSON.parse(raw);
271
- }
272
- if (typeof req.body === 'string') {
273
- // A mutation with no inputs will have req.body === ''
274
- return req.body.length === 0 ? undefined : JSON.parse(req.body);
275
- }
276
- return req.body;
277
- } catch (err) {
278
- throw new TRPCError.TRPCError({
279
- code: 'PARSE_ERROR',
280
- cause: TRPCError.getCauseFromUnknown(err)
281
- });
282
- }
283
- }
284
- async function resolveHTTPResponse(opts) {
285
- const { createContext , onError , router , req } = opts;
286
- const batchingEnabled = opts.batching?.enabled ?? true;
287
- if (req.method === 'HEAD') {
288
- // can be used for lambda warmup
251
+ /**
252
+ * The default check to see if we're in a server
253
+ */ const isServerDefault = typeof window === 'undefined' || 'Deno' in window || process.env.NODE_ENV === 'test' || !!process.env.JEST_WORKER_ID;
254
+
255
+ function transformTRPCResponseItem(router, item) {
256
+ if ('error' in item) {
289
257
  return {
290
- status: 204
258
+ ...item,
259
+ error: router._def.transformer.output.serialize(item.error)
291
260
  };
292
261
  }
293
- const type = HTTP_METHOD_PROCEDURE_TYPE_MAP[req.method] ?? 'unknown';
294
- let ctx = undefined;
295
- let paths = undefined;
296
- const isBatchCall = !!req.query.get('batch');
297
- function endResponse(untransformedJSON, errors) {
298
- let status = getHTTPStatusCode(untransformedJSON);
299
- const headers = {
300
- 'Content-Type': 'application/json'
301
- };
302
- const meta = opts.responseMeta?.({
303
- ctx,
304
- paths,
305
- type,
306
- data: Array.isArray(untransformedJSON) ? untransformedJSON : [
307
- untransformedJSON
308
- ],
309
- errors
310
- }) ?? {};
311
- for (const [key, value] of Object.entries(meta.headers ?? {})){
312
- headers[key] = value;
313
- }
314
- if (meta.status) {
315
- status = meta.status;
316
- }
317
- const transformedJSON = transformTRPCResponse.transformTRPCResponse(router, untransformedJSON);
318
- const body = JSON.stringify(transformedJSON);
262
+ if ('data' in item.result) {
319
263
  return {
320
- body,
321
- status,
322
- headers
323
- };
324
- }
325
- try {
326
- if (opts.error) {
327
- throw opts.error;
328
- }
329
- if (isBatchCall && !batchingEnabled) {
330
- throw new Error(`Batching is not enabled on the server`);
331
- }
332
- if (type === 'subscription') {
333
- throw new TRPCError.TRPCError({
334
- message: 'Subscriptions should use wsLink',
335
- code: 'METHOD_NOT_SUPPORTED'
336
- });
337
- }
338
- if (type === 'unknown') {
339
- throw new TRPCError.TRPCError({
340
- message: `Unexpected request method ${req.method}`,
341
- code: 'METHOD_NOT_SUPPORTED'
342
- });
343
- }
344
- const rawInput = getRawProcedureInputOrThrow(req);
345
- paths = isBatchCall ? opts.path.split(',') : [
346
- opts.path
347
- ];
348
- ctx = await createContext();
349
- const deserializeInputValue = (rawValue)=>{
350
- return typeof rawValue !== 'undefined' ? router._def.transformer.input.deserialize(rawValue) : rawValue;
351
- };
352
- const getInputs = ()=>{
353
- if (!isBatchCall) {
354
- return {
355
- 0: deserializeInputValue(rawInput)
356
- };
357
- }
358
- if (rawInput == null || typeof rawInput !== 'object' || Array.isArray(rawInput)) {
359
- throw new TRPCError.TRPCError({
360
- code: 'BAD_REQUEST',
361
- message: '"input" needs to be an object when doing a batch call'
362
- });
363
- }
364
- const input = {};
365
- for(const key in rawInput){
366
- const k = key;
367
- const rawValue = rawInput[k];
368
- const value = deserializeInputValue(rawValue);
369
- input[k] = value;
264
+ ...item,
265
+ result: {
266
+ ...item.result,
267
+ data: router._def.transformer.output.serialize(item.result.data)
370
268
  }
371
- return input;
372
269
  };
373
- const inputs = getInputs();
374
- const rawResults = await Promise.all(paths.map(async (path, index)=>{
375
- const input = inputs[index];
376
- try {
377
- const output = await callProcedure({
378
- procedures: router._def.procedures,
379
- path,
380
- rawInput: input,
381
- ctx,
382
- type
383
- });
384
- return {
385
- input,
386
- path,
387
- data: output
388
- };
389
- } catch (cause) {
390
- const error = TRPCError.getTRPCErrorFromUnknown(cause);
391
- onError?.({
392
- error,
393
- path,
394
- input,
395
- ctx,
396
- type: type,
397
- req
398
- });
399
- return {
400
- input,
401
- path,
402
- error
403
- };
404
- }
405
- }));
406
- const errors = rawResults.flatMap((obj)=>obj.error ? [
407
- obj.error
408
- ] : []);
409
- const resultEnvelopes = rawResults.map((obj)=>{
410
- const { path , input } = obj;
411
- if (obj.error) {
412
- return {
413
- error: router.getErrorShape({
414
- error: obj.error,
415
- type,
416
- path,
417
- input,
418
- ctx
419
- })
420
- };
421
- } else {
422
- return {
423
- result: {
424
- data: obj.data
425
- }
426
- };
427
- }
428
- });
429
- const result = isBatchCall ? resultEnvelopes : resultEnvelopes[0];
430
- return endResponse(result, errors);
431
- } catch (cause) {
432
- // we get here if
433
- // - batching is called when it's not enabled
434
- // - `createContext()` throws
435
- // - post body is too large
436
- // - input deserialization fails
437
- const error = TRPCError.getTRPCErrorFromUnknown(cause);
438
- onError?.({
439
- error,
440
- path: undefined,
441
- input: undefined,
442
- ctx,
443
- type: type,
444
- req
445
- });
446
- return endResponse({
447
- error: router.getErrorShape({
448
- error,
449
- type,
450
- path: undefined,
451
- input: undefined,
452
- ctx
453
- })
454
- }, [
455
- error
456
- ]);
457
270
  }
271
+ return item;
272
+ }
273
+ /**
274
+ * Takes a unserialized `TRPCResponse` and serializes it with the router's transformers
275
+ **/ function transformTRPCResponse(router, itemOrItems) {
276
+ return Array.isArray(itemOrItems) ? itemOrItems.map((item)=>transformTRPCResponseItem(router, item)) : transformTRPCResponseItem(router, itemOrItems);
458
277
  }
459
278
 
460
- exports.assertNotBrowser = assertNotBrowser;
461
279
  exports.callProcedure = callProcedure;
462
280
  exports.createRouterFactory = createRouterFactory;
463
281
  exports.defaultFormatter = defaultFormatter;
464
282
  exports.defaultTransformer = defaultTransformer;
465
283
  exports.getDataTransformer = getDataTransformer;
284
+ exports.getHTTPStatusCode = getHTTPStatusCode;
466
285
  exports.getHTTPStatusCodeFromError = getHTTPStatusCodeFromError;
286
+ exports.isServerDefault = isServerDefault;
467
287
  exports.mergeWithoutOverrides = mergeWithoutOverrides;
468
288
  exports.procedureTypes = procedureTypes;
469
- exports.resolveHTTPResponse = resolveHTTPResponse;
289
+ exports.transformTRPCResponse = transformTRPCResponse;
@@ -1,13 +1,6 @@
1
- import { T as TRPCError, g as getTRPCErrorFromUnknown, a as getCauseFromUnknown } from './TRPCError-281ac25a.mjs';
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;
@@ -135,7 +128,6 @@ const emptyRouter = {
135
128
  */ 'then'
136
129
  ];
137
130
  /**
138
- *
139
131
  * @internal
140
132
  */ function createRouterFactory(defaults) {
141
133
  return function createRouterInner(opts) {
@@ -254,205 +246,32 @@ const emptyRouter = {
254
246
  return procedure(opts);
255
247
  }
256
248
 
257
- const HTTP_METHOD_PROCEDURE_TYPE_MAP = {
258
- GET: 'query',
259
- POST: 'mutation'
260
- };
261
- function getRawProcedureInputOrThrow(req) {
262
- try {
263
- if (req.method === 'GET') {
264
- if (!req.query.has('input')) {
265
- return undefined;
266
- }
267
- const raw = req.query.get('input');
268
- return JSON.parse(raw);
269
- }
270
- if (typeof req.body === 'string') {
271
- // A mutation with no inputs will have req.body === ''
272
- return req.body.length === 0 ? undefined : JSON.parse(req.body);
273
- }
274
- return req.body;
275
- } catch (err) {
276
- throw new TRPCError({
277
- code: 'PARSE_ERROR',
278
- cause: getCauseFromUnknown(err)
279
- });
280
- }
281
- }
282
- async function resolveHTTPResponse(opts) {
283
- const { createContext , onError , router , req } = opts;
284
- const batchingEnabled = opts.batching?.enabled ?? true;
285
- if (req.method === 'HEAD') {
286
- // 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) {
287
255
  return {
288
- status: 204
256
+ ...item,
257
+ error: router._def.transformer.output.serialize(item.error)
289
258
  };
290
259
  }
291
- const type = HTTP_METHOD_PROCEDURE_TYPE_MAP[req.method] ?? 'unknown';
292
- let ctx = undefined;
293
- let paths = undefined;
294
- const isBatchCall = !!req.query.get('batch');
295
- function endResponse(untransformedJSON, errors) {
296
- let status = getHTTPStatusCode(untransformedJSON);
297
- const headers = {
298
- 'Content-Type': 'application/json'
299
- };
300
- const meta = opts.responseMeta?.({
301
- ctx,
302
- paths,
303
- type,
304
- data: Array.isArray(untransformedJSON) ? untransformedJSON : [
305
- untransformedJSON
306
- ],
307
- errors
308
- }) ?? {};
309
- for (const [key, value] of Object.entries(meta.headers ?? {})){
310
- headers[key] = value;
311
- }
312
- if (meta.status) {
313
- status = meta.status;
314
- }
315
- const transformedJSON = transformTRPCResponse(router, untransformedJSON);
316
- const body = JSON.stringify(transformedJSON);
260
+ if ('data' in item.result) {
317
261
  return {
318
- body,
319
- status,
320
- headers
321
- };
322
- }
323
- try {
324
- if (opts.error) {
325
- throw opts.error;
326
- }
327
- if (isBatchCall && !batchingEnabled) {
328
- throw new Error(`Batching is not enabled on the server`);
329
- }
330
- if (type === 'subscription') {
331
- throw new TRPCError({
332
- message: 'Subscriptions should use wsLink',
333
- code: 'METHOD_NOT_SUPPORTED'
334
- });
335
- }
336
- if (type === 'unknown') {
337
- throw new TRPCError({
338
- message: `Unexpected request method ${req.method}`,
339
- code: 'METHOD_NOT_SUPPORTED'
340
- });
341
- }
342
- const rawInput = getRawProcedureInputOrThrow(req);
343
- paths = isBatchCall ? opts.path.split(',') : [
344
- opts.path
345
- ];
346
- ctx = await createContext();
347
- const deserializeInputValue = (rawValue)=>{
348
- return typeof rawValue !== 'undefined' ? router._def.transformer.input.deserialize(rawValue) : rawValue;
349
- };
350
- const getInputs = ()=>{
351
- if (!isBatchCall) {
352
- return {
353
- 0: deserializeInputValue(rawInput)
354
- };
355
- }
356
- if (rawInput == null || typeof rawInput !== 'object' || Array.isArray(rawInput)) {
357
- throw new TRPCError({
358
- code: 'BAD_REQUEST',
359
- message: '"input" needs to be an object when doing a batch call'
360
- });
361
- }
362
- const input = {};
363
- for(const key in rawInput){
364
- const k = key;
365
- const rawValue = rawInput[k];
366
- const value = deserializeInputValue(rawValue);
367
- input[k] = value;
262
+ ...item,
263
+ result: {
264
+ ...item.result,
265
+ data: router._def.transformer.output.serialize(item.result.data)
368
266
  }
369
- return input;
370
267
  };
371
- const inputs = getInputs();
372
- const rawResults = await Promise.all(paths.map(async (path, index)=>{
373
- const input = inputs[index];
374
- try {
375
- const output = await callProcedure({
376
- procedures: router._def.procedures,
377
- path,
378
- rawInput: input,
379
- ctx,
380
- type
381
- });
382
- return {
383
- input,
384
- path,
385
- data: output
386
- };
387
- } catch (cause) {
388
- const error = getTRPCErrorFromUnknown(cause);
389
- onError?.({
390
- error,
391
- path,
392
- input,
393
- ctx,
394
- type: type,
395
- req
396
- });
397
- return {
398
- input,
399
- path,
400
- error
401
- };
402
- }
403
- }));
404
- const errors = rawResults.flatMap((obj)=>obj.error ? [
405
- obj.error
406
- ] : []);
407
- const resultEnvelopes = rawResults.map((obj)=>{
408
- const { path , input } = obj;
409
- if (obj.error) {
410
- return {
411
- error: router.getErrorShape({
412
- error: obj.error,
413
- type,
414
- path,
415
- input,
416
- ctx
417
- })
418
- };
419
- } else {
420
- return {
421
- result: {
422
- data: obj.data
423
- }
424
- };
425
- }
426
- });
427
- const result = isBatchCall ? resultEnvelopes : resultEnvelopes[0];
428
- return endResponse(result, errors);
429
- } catch (cause) {
430
- // we get here if
431
- // - batching is called when it's not enabled
432
- // - `createContext()` throws
433
- // - post body is too large
434
- // - input deserialization fails
435
- const error = getTRPCErrorFromUnknown(cause);
436
- onError?.({
437
- error,
438
- path: undefined,
439
- input: undefined,
440
- ctx,
441
- type: type,
442
- req
443
- });
444
- return endResponse({
445
- error: router.getErrorShape({
446
- error,
447
- type,
448
- path: undefined,
449
- input: undefined,
450
- ctx
451
- })
452
- }, [
453
- error
454
- ]);
455
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);
456
275
  }
457
276
 
458
- export { defaultTransformer as a, assertNotBrowser as b, createRouterFactory as c, defaultFormatter as d, callProcedure as e, getHTTPStatusCodeFromError as f, getDataTransformer as g, mergeWithoutOverrides as m, procedureTypes as p, resolveHTTPResponse as r };
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> = identity<{
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
  */
@@ -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,CAAC;KAChD,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,CAAC,CAAC;AAEH;;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"}
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.12",
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.12",
126
- "@trpc/next": "10.0.0-proxy-beta.12",
127
- "@trpc/react": "10.0.0-proxy-beta.12",
128
- "@trpc/server": "10.0.0-proxy-beta.12",
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": "5b25e9483cdd7d3c58e0843232acef790eeaf425"
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,
@@ -1,6 +1,11 @@
1
1
  import { IncomingMessage } from 'http';
2
2
  import ws from 'ws';
3
- import { AnyRouter, ProcedureType, inferRouterContext } from '../core';
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 caller = router.createCaller(ctx);
164
- const result = await caller[type](path, input as any);
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/index.ts CHANGED
@@ -2,6 +2,7 @@ export type {
2
2
  AnyRouter,
3
3
  ProcedureRecord,
4
4
  ProcedureRouterRecord,
5
+ CreateRouterInner,
5
6
  } from './router';
6
7
  export { callProcedure } from './router';
7
8
  export type {
@@ -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,