@trpc/server 10.37.1 → 10.38.1

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 (35) hide show
  1. package/README.md +3 -0
  2. package/dist/adapters/aws-lambda/index.js +1 -1
  3. package/dist/adapters/aws-lambda/index.mjs +1 -1
  4. package/dist/adapters/express.js +2 -2
  5. package/dist/adapters/express.mjs +2 -2
  6. package/dist/adapters/fastify/index.js +1 -1
  7. package/dist/adapters/fastify/index.mjs +1 -1
  8. package/dist/adapters/fetch/index.js +1 -1
  9. package/dist/adapters/fetch/index.mjs +1 -1
  10. package/dist/adapters/next.js +2 -2
  11. package/dist/adapters/next.mjs +2 -2
  12. package/dist/adapters/node-http/index.js +2 -2
  13. package/dist/adapters/node-http/index.mjs +2 -2
  14. package/dist/adapters/standalone.js +2 -2
  15. package/dist/adapters/standalone.mjs +2 -2
  16. package/dist/core/index.d.ts +1 -1
  17. package/dist/core/index.d.ts.map +1 -1
  18. package/dist/core/middleware.d.ts +34 -5
  19. package/dist/core/middleware.d.ts.map +1 -1
  20. package/dist/http/index.js +1 -1
  21. package/dist/http/index.mjs +1 -1
  22. package/dist/index.js +4 -0
  23. package/dist/index.mjs +4 -1
  24. package/dist/{nodeHTTPRequestHandler-842a1461.mjs → nodeHTTPRequestHandler-2503a117.mjs} +1 -1
  25. package/dist/{nodeHTTPRequestHandler-34adf7b8.js → nodeHTTPRequestHandler-70149627.js} +1 -1
  26. package/dist/{nodeHTTPRequestHandler-b7bc691f.js → nodeHTTPRequestHandler-ec69aab4.js} +1 -1
  27. package/dist/{resolveHTTPResponse-3aef2178.mjs → resolveHTTPResponse-67085326.mjs} +10 -1
  28. package/dist/{resolveHTTPResponse-d6110ed7.js → resolveHTTPResponse-a885ce7b.js} +10 -1
  29. package/dist/{resolveHTTPResponse-11792475.js → resolveHTTPResponse-d21ca7c2.js} +10 -1
  30. package/package.json +3 -3
  31. package/src/core/index.ts +5 -1
  32. package/src/core/middleware.ts +35 -8
  33. package/src/http/resolveHTTPResponse.ts +11 -1
  34. package/adapters/zodFileSchema/index.d.ts +0 -1
  35. package/adapters/zodFileSchema/index.js +0 -1
package/README.md CHANGED
@@ -31,6 +31,9 @@ yarn add @trpc/server
31
31
 
32
32
  # pnpm
33
33
  pnpm add @trpc/server
34
+
35
+ # Bun
36
+ bun add @trpc/server
34
37
  ```
35
38
 
36
39
  We also recommend installing `zod` to validate procedure inputs.
@@ -6,7 +6,7 @@ var TRPCError = require('../../TRPCError-d07099d1.js');
6
6
  require('../../index-784ff647.js');
7
7
  require('../../codes-87f6824b.js');
8
8
  require('../../config-3156a1f1.js');
9
- var resolveHTTPResponse = require('../../resolveHTTPResponse-11792475.js');
9
+ var resolveHTTPResponse = require('../../resolveHTTPResponse-d21ca7c2.js');
10
10
  require('../../transformTRPCResponse-e65f34e9.js');
11
11
  require('../../contentType-5b601838.js');
12
12
 
@@ -2,7 +2,7 @@ import { T as TRPCError } from '../../TRPCError-6a1653a4.mjs';
2
2
  import '../../index-f91d720c.mjs';
3
3
  import '../../codes-c924c3db.mjs';
4
4
  import '../../config-cd32070b.mjs';
5
- import { r as resolveHTTPResponse } from '../../resolveHTTPResponse-3aef2178.mjs';
5
+ import { r as resolveHTTPResponse } from '../../resolveHTTPResponse-67085326.mjs';
6
6
  import '../../transformTRPCResponse-1153b421.mjs';
7
7
  import '../../contentType-53e30af8.mjs';
8
8
 
@@ -2,10 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var nodeHTTPRequestHandler = require('../nodeHTTPRequestHandler-34adf7b8.js');
5
+ var nodeHTTPRequestHandler = require('../nodeHTTPRequestHandler-70149627.js');
6
6
  require('../index-784ff647.js');
7
7
  require('../codes-87f6824b.js');
8
- require('../resolveHTTPResponse-11792475.js');
8
+ require('../resolveHTTPResponse-d21ca7c2.js');
9
9
  require('../config-3156a1f1.js');
10
10
  require('../TRPCError-d07099d1.js');
11
11
  require('../transformTRPCResponse-e65f34e9.js');
@@ -1,7 +1,7 @@
1
- import { n as nodeHTTPRequestHandler } from '../nodeHTTPRequestHandler-842a1461.mjs';
1
+ import { n as nodeHTTPRequestHandler } from '../nodeHTTPRequestHandler-2503a117.mjs';
2
2
  import '../index-f91d720c.mjs';
3
3
  import '../codes-c924c3db.mjs';
4
- import '../resolveHTTPResponse-3aef2178.mjs';
4
+ import '../resolveHTTPResponse-67085326.mjs';
5
5
  import '../config-cd32070b.mjs';
6
6
  import '../TRPCError-6a1653a4.mjs';
7
7
  import '../transformTRPCResponse-1153b421.mjs';
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var node_stream = require('node:stream');
6
6
  require('../../index-784ff647.js');
7
- var resolveHTTPResponse = require('../../resolveHTTPResponse-11792475.js');
7
+ var resolveHTTPResponse = require('../../resolveHTTPResponse-d21ca7c2.js');
8
8
  var batchStreamFormatter = require('../../batchStreamFormatter-93cdcdd4.js');
9
9
  var adapters_ws = require('../ws.js');
10
10
  require('../../codes-87f6824b.js');
@@ -1,6 +1,6 @@
1
1
  import { Readable } from 'node:stream';
2
2
  import '../../index-f91d720c.mjs';
3
- import { r as resolveHTTPResponse } from '../../resolveHTTPResponse-3aef2178.mjs';
3
+ import { r as resolveHTTPResponse } from '../../resolveHTTPResponse-67085326.mjs';
4
4
  import { g as getBatchStreamFormatter } from '../../batchStreamFormatter-fc1ffb26.mjs';
5
5
  import { applyWSSHandler } from '../ws.mjs';
6
6
  import '../../codes-c924c3db.mjs';
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  require('../../index-784ff647.js');
6
- var resolveHTTPResponse = require('../../resolveHTTPResponse-11792475.js');
6
+ var resolveHTTPResponse = require('../../resolveHTTPResponse-d21ca7c2.js');
7
7
  var batchStreamFormatter = require('../../batchStreamFormatter-93cdcdd4.js');
8
8
  require('../../codes-87f6824b.js');
9
9
  require('../../config-3156a1f1.js');
@@ -1,5 +1,5 @@
1
1
  import '../../index-f91d720c.mjs';
2
- import { r as resolveHTTPResponse } from '../../resolveHTTPResponse-3aef2178.mjs';
2
+ import { r as resolveHTTPResponse } from '../../resolveHTTPResponse-67085326.mjs';
3
3
  import { g as getBatchStreamFormatter } from '../../batchStreamFormatter-fc1ffb26.mjs';
4
4
  import '../../codes-c924c3db.mjs';
5
5
  import '../../config-cd32070b.mjs';
@@ -4,10 +4,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var TRPCError = require('../TRPCError-d07099d1.js');
6
6
  var transformTRPCResponse = require('../transformTRPCResponse-e65f34e9.js');
7
- var nodeHTTPRequestHandler = require('../nodeHTTPRequestHandler-34adf7b8.js');
7
+ var nodeHTTPRequestHandler = require('../nodeHTTPRequestHandler-70149627.js');
8
8
  require('../index-784ff647.js');
9
9
  require('../codes-87f6824b.js');
10
- require('../resolveHTTPResponse-11792475.js');
10
+ require('../resolveHTTPResponse-d21ca7c2.js');
11
11
  require('../config-3156a1f1.js');
12
12
  require('../contentType-5b601838.js');
13
13
  require('../batchStreamFormatter-93cdcdd4.js');
@@ -1,9 +1,9 @@
1
1
  import { T as TRPCError } from '../TRPCError-6a1653a4.mjs';
2
2
  import { g as getErrorShape } from '../transformTRPCResponse-1153b421.mjs';
3
- import { n as nodeHTTPRequestHandler } from '../nodeHTTPRequestHandler-842a1461.mjs';
3
+ import { n as nodeHTTPRequestHandler } from '../nodeHTTPRequestHandler-2503a117.mjs';
4
4
  import '../index-f91d720c.mjs';
5
5
  import '../codes-c924c3db.mjs';
6
- import '../resolveHTTPResponse-3aef2178.mjs';
6
+ import '../resolveHTTPResponse-67085326.mjs';
7
7
  import '../config-cd32070b.mjs';
8
8
  import '../contentType-53e30af8.mjs';
9
9
  import '../batchStreamFormatter-fc1ffb26.mjs';
@@ -2,10 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var nodeHTTPRequestHandler = require('../../nodeHTTPRequestHandler-34adf7b8.js');
5
+ var nodeHTTPRequestHandler = require('../../nodeHTTPRequestHandler-70149627.js');
6
6
  require('../../index-784ff647.js');
7
7
  require('../../codes-87f6824b.js');
8
- require('../../resolveHTTPResponse-11792475.js');
8
+ require('../../resolveHTTPResponse-d21ca7c2.js');
9
9
  require('../../config-3156a1f1.js');
10
10
  require('../../TRPCError-d07099d1.js');
11
11
  require('../../transformTRPCResponse-e65f34e9.js');
@@ -1,7 +1,7 @@
1
- export { n as nodeHTTPRequestHandler } from '../../nodeHTTPRequestHandler-842a1461.mjs';
1
+ export { n as nodeHTTPRequestHandler } from '../../nodeHTTPRequestHandler-2503a117.mjs';
2
2
  import '../../index-f91d720c.mjs';
3
3
  import '../../codes-c924c3db.mjs';
4
- import '../../resolveHTTPResponse-3aef2178.mjs';
4
+ import '../../resolveHTTPResponse-67085326.mjs';
5
5
  import '../../config-cd32070b.mjs';
6
6
  import '../../TRPCError-6a1653a4.mjs';
7
7
  import '../../transformTRPCResponse-1153b421.mjs';
@@ -3,10 +3,10 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var http = require('node:http');
6
- var nodeHTTPRequestHandler = require('../nodeHTTPRequestHandler-34adf7b8.js');
6
+ var nodeHTTPRequestHandler = require('../nodeHTTPRequestHandler-70149627.js');
7
7
  require('../index-784ff647.js');
8
8
  require('../codes-87f6824b.js');
9
- require('../resolveHTTPResponse-11792475.js');
9
+ require('../resolveHTTPResponse-d21ca7c2.js');
10
10
  require('../config-3156a1f1.js');
11
11
  require('../TRPCError-d07099d1.js');
12
12
  require('../transformTRPCResponse-e65f34e9.js');
@@ -1,8 +1,8 @@
1
1
  import http from 'node:http';
2
- import { n as nodeHTTPRequestHandler } from '../nodeHTTPRequestHandler-842a1461.mjs';
2
+ import { n as nodeHTTPRequestHandler } from '../nodeHTTPRequestHandler-2503a117.mjs';
3
3
  import '../index-f91d720c.mjs';
4
4
  import '../codes-c924c3db.mjs';
5
- import '../resolveHTTPResponse-3aef2178.mjs';
5
+ import '../resolveHTTPResponse-67085326.mjs';
6
6
  import '../config-cd32070b.mjs';
7
7
  import '../TRPCError-6a1653a4.mjs';
8
8
  import '../transformTRPCResponse-1153b421.mjs';
@@ -2,7 +2,7 @@ export type { AnyRouter, ProcedureRecord, ProcedureRouterRecord, CreateRouterInn
2
2
  export { callProcedure } from './router';
3
3
  export type { Procedure, AnyProcedure, AnyQueryProcedure, AnyMutationProcedure, AnySubscriptionProcedure, ProcedureParams, ProcedureArgs, ProcedureOptions, } from './procedure';
4
4
  export type { inferParser } from './parser';
5
- export { createInputMiddleware, createOutputMiddleware } from './middleware';
5
+ export { createInputMiddleware, createOutputMiddleware, experimental_standaloneMiddleware, } from './middleware';
6
6
  export type { MiddlewareFunction, MiddlewareBuilder } from './middleware';
7
7
  export { initTRPC } from './initTRPC';
8
8
  export * from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,SAAS,EACT,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,MAAM,GACP,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EACV,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACxB,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC7E,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,SAAS,EACT,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,MAAM,GACP,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EACV,SAAS,EACT,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACxB,eAAe,EACf,aAAa,EACb,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,iCAAiC,GAClC,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,cAAc,SAAS,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { TRPCError } from '../error/TRPCError';
2
2
  import { Simplify } from '../types';
3
- import { AnyRootConfig } from './internals/config';
3
+ import { AnyRootConfig, RootConfig } from './internals/config';
4
4
  import { ParseFn } from './internals/getParseFn';
5
5
  import { ProcedureBuilderMiddleware } from './internals/procedureBuilder';
6
6
  import { DefaultValue as FallbackValue, MiddlewareMarker, Overwrite } from './internals/utils';
@@ -71,11 +71,11 @@ type CreateMiddlewareReturnInput<TRoot extends ProcedureParams, TPrev extends Pr
71
71
  /**
72
72
  * @internal
73
73
  */
74
- type deriveParamsFromConfig<TConfig extends AnyRootConfig> = {
74
+ type deriveParamsFromConfig<TConfig extends AnyRootConfig, TInputIn = unknown> = {
75
75
  _config: TConfig;
76
76
  _ctx_out: {};
77
- _input_out: unknown;
78
- _input_in: unknown;
77
+ _input_out: TInputIn;
78
+ _input_in: TInputIn;
79
79
  _output_in: unknown;
80
80
  _output_out: unknown;
81
81
  _meta: TConfig['$types']['meta'];
@@ -114,7 +114,36 @@ export type MiddlewareFunction<TParams extends ProcedureParams, TParamsAfter ext
114
114
  /**
115
115
  * @internal
116
116
  */
117
- export declare function createMiddlewareFactory<TConfig extends AnyRootConfig>(): <TNewParams extends ProcedureParams<AnyRootConfig, unknown, unknown, unknown, unknown, unknown, unknown>>(fn: MiddlewareFunction<deriveParamsFromConfig<TConfig>, TNewParams>) => MiddlewareBuilder<deriveParamsFromConfig<TConfig>, TNewParams>;
117
+ export declare function createMiddlewareFactory<TConfig extends AnyRootConfig, TInputIn = unknown>(): <TNewParams extends ProcedureParams<AnyRootConfig, unknown, unknown, unknown, unknown, unknown, unknown>>(fn: MiddlewareFunction<deriveParamsFromConfig<TConfig, TInputIn>, TNewParams>) => MiddlewareBuilder<deriveParamsFromConfig<TConfig, TInputIn>, TNewParams>;
118
+ export declare const experimental_standaloneMiddleware: <TCtx extends {
119
+ ctx?: object | undefined;
120
+ meta?: object | undefined;
121
+ input?: unknown;
122
+ }>() => {
123
+ create: <TNewParams extends ProcedureParams<AnyRootConfig, unknown, unknown, unknown, unknown, unknown, unknown>>(fn: MiddlewareFunction<deriveParamsFromConfig<RootConfig<{
124
+ ctx: TCtx extends {
125
+ ctx: infer T extends object;
126
+ } ? T : object;
127
+ meta: TCtx extends {
128
+ meta: infer T_1 extends object;
129
+ } ? T_1 : object;
130
+ errorShape: object;
131
+ transformer: object;
132
+ }>, TCtx extends {
133
+ input: infer T_2;
134
+ } ? T_2 : unknown>, TNewParams>) => MiddlewareBuilder<deriveParamsFromConfig<RootConfig<{
135
+ ctx: TCtx extends {
136
+ ctx: infer T extends object;
137
+ } ? T : object;
138
+ meta: TCtx extends {
139
+ meta: infer T_1 extends object;
140
+ } ? T_1 : object;
141
+ errorShape: object;
142
+ transformer: object;
143
+ }>, TCtx extends {
144
+ input: infer T_2;
145
+ } ? T_2 : unknown>, TNewParams>;
146
+ };
118
147
  /**
119
148
  * @internal
120
149
  * Please note, `trpc-openapi` uses this function.
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/core/middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/core/middleware.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var index = require('../index-784ff647.js');
6
- var resolveHTTPResponse = require('../resolveHTTPResponse-11792475.js');
6
+ var resolveHTTPResponse = require('../resolveHTTPResponse-d21ca7c2.js');
7
7
  var batchStreamFormatter = require('../batchStreamFormatter-93cdcdd4.js');
8
8
  require('../codes-87f6824b.js');
9
9
  require('../config-3156a1f1.js');
@@ -1,5 +1,5 @@
1
1
  export { T as TRPC_ERROR_CODES_BY_NUMBER, b as getHTTPStatusCode, g as getHTTPStatusCodeFromError } from '../index-f91d720c.mjs';
2
- export { r as resolveHTTPResponse } from '../resolveHTTPResponse-3aef2178.mjs';
2
+ export { r as resolveHTTPResponse } from '../resolveHTTPResponse-67085326.mjs';
3
3
  export { g as getBatchStreamFormatter } from '../batchStreamFormatter-fc1ffb26.mjs';
4
4
  import '../codes-c924c3db.mjs';
5
5
  import '../config-cd32070b.mjs';
package/dist/index.js CHANGED
@@ -263,6 +263,9 @@ function getParseFn(procedureParser) {
263
263
  }
264
264
  return createMiddleware;
265
265
  }
266
+ const experimental_standaloneMiddleware = ()=>({
267
+ create: createMiddlewareFactory()
268
+ });
266
269
  function isPlainObject(obj) {
267
270
  return obj && typeof obj === 'object' && !Array.isArray(obj);
268
271
  }
@@ -872,5 +875,6 @@ exports.TRPCError = TRPCError.TRPCError;
872
875
  exports.getTRPCErrorFromUnknown = TRPCError.getTRPCErrorFromUnknown;
873
876
  exports.createInputMiddleware = createInputMiddleware;
874
877
  exports.createOutputMiddleware = createOutputMiddleware;
878
+ exports.experimental_standaloneMiddleware = experimental_standaloneMiddleware;
875
879
  exports.initTRPC = initTRPC;
876
880
  exports.router = router;
package/dist/index.mjs CHANGED
@@ -261,6 +261,9 @@ function getParseFn(procedureParser) {
261
261
  }
262
262
  return createMiddleware;
263
263
  }
264
+ const experimental_standaloneMiddleware = ()=>({
265
+ create: createMiddlewareFactory()
266
+ });
264
267
  function isPlainObject(obj) {
265
268
  return obj && typeof obj === 'object' && !Array.isArray(obj);
266
269
  }
@@ -862,4 +865,4 @@ function createTRPCInner() {
862
865
  };
863
866
  }
864
867
 
865
- export { createInputMiddleware, createOutputMiddleware, initTRPC, router };
868
+ export { createInputMiddleware, createOutputMiddleware, experimental_standaloneMiddleware, initTRPC, router };
@@ -1,5 +1,5 @@
1
1
  import './index-f91d720c.mjs';
2
- import { r as resolveHTTPResponse } from './resolveHTTPResponse-3aef2178.mjs';
2
+ import { r as resolveHTTPResponse } from './resolveHTTPResponse-67085326.mjs';
3
3
  import { g as getBatchStreamFormatter } from './batchStreamFormatter-fc1ffb26.mjs';
4
4
  import { nodeHTTPJSONContentTypeHandler } from './adapters/node-http/content-type/json/index.mjs';
5
5
 
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  require('./index-784ff647.js');
4
- var resolveHTTPResponse = require('./resolveHTTPResponse-11792475.js');
4
+ var resolveHTTPResponse = require('./resolveHTTPResponse-d21ca7c2.js');
5
5
  var batchStreamFormatter = require('./batchStreamFormatter-93cdcdd4.js');
6
6
  var adapters_nodeHttp_contentType_json_index = require('./adapters/node-http/content-type/json/index.js');
7
7
 
@@ -1,5 +1,5 @@
1
1
  import './index-46cb3130.js';
2
- import { r as resolveHTTPResponse } from './resolveHTTPResponse-d6110ed7.js';
2
+ import { r as resolveHTTPResponse } from './resolveHTTPResponse-a885ce7b.js';
3
3
  import { g as getBatchStreamFormatter } from './batchStreamFormatter-2c1405a1.js';
4
4
  import { nodeHTTPJSONContentTypeHandler } from './adapters/node-http/content-type/json/index.js';
5
5
 
@@ -129,6 +129,16 @@ async function resolveHTTPResponse(opts) {
129
129
  const isBatchCall = !!req.query.get('batch');
130
130
  const isStreamCall = isBatchCall && unstable_onHead && unstable_onChunk && req.headers['trpc-batch-mode'] === 'stream';
131
131
  try {
132
+ // we create context first so that (unless `createContext()` throws)
133
+ // error handler may access context information
134
+ //
135
+ // this way even if the client sends malformed input that might cause an exception:
136
+ // - `opts.error` has value,
137
+ // - batching is not enabled,
138
+ // - `type` is unknown,
139
+ // - `getInputs` throws because of malformed JSON,
140
+ // context value is still available to the error handler
141
+ ctx = await opts.createContext();
132
142
  if (opts.error) {
133
143
  throw opts.error;
134
144
  }
@@ -156,7 +166,6 @@ async function resolveHTTPResponse(opts) {
156
166
  paths = isBatchCall ? decodeURIComponent(opts.path).split(',') : [
157
167
  opts.path
158
168
  ];
159
- ctx = await opts.createContext();
160
169
  const promises = paths.map((path, index)=>inputToProcedureCall({
161
170
  opts,
162
171
  ctx,
@@ -125,6 +125,16 @@ async function resolveHTTPResponse(opts) {
125
125
  unstable_onChunk &&
126
126
  req.headers['trpc-batch-mode'] === 'stream';
127
127
  try {
128
+ // we create context first so that (unless `createContext()` throws)
129
+ // error handler may access context information
130
+ //
131
+ // this way even if the client sends malformed input that might cause an exception:
132
+ // - `opts.error` has value,
133
+ // - batching is not enabled,
134
+ // - `type` is unknown,
135
+ // - `getInputs` throws because of malformed JSON,
136
+ // context value is still available to the error handler
137
+ ctx = await opts.createContext();
128
138
  if (opts.error) {
129
139
  throw opts.error;
130
140
  }
@@ -153,7 +163,6 @@ async function resolveHTTPResponse(opts) {
153
163
  paths = isBatchCall
154
164
  ? decodeURIComponent(opts.path).split(',')
155
165
  : [opts.path];
156
- ctx = await opts.createContext();
157
166
  const promises = paths.map((path, index) => inputToProcedureCall({ opts, ctx, type, input: inputs[index], path }));
158
167
  if (!isStreamCall) {
159
168
  /**
@@ -131,6 +131,16 @@ async function resolveHTTPResponse(opts) {
131
131
  const isBatchCall = !!req.query.get('batch');
132
132
  const isStreamCall = isBatchCall && unstable_onHead && unstable_onChunk && req.headers['trpc-batch-mode'] === 'stream';
133
133
  try {
134
+ // we create context first so that (unless `createContext()` throws)
135
+ // error handler may access context information
136
+ //
137
+ // this way even if the client sends malformed input that might cause an exception:
138
+ // - `opts.error` has value,
139
+ // - batching is not enabled,
140
+ // - `type` is unknown,
141
+ // - `getInputs` throws because of malformed JSON,
142
+ // context value is still available to the error handler
143
+ ctx = await opts.createContext();
134
144
  if (opts.error) {
135
145
  throw opts.error;
136
146
  }
@@ -158,7 +168,6 @@ async function resolveHTTPResponse(opts) {
158
168
  paths = isBatchCall ? decodeURIComponent(opts.path).split(',') : [
159
169
  opts.path
160
170
  ];
161
- ctx = await opts.createContext();
162
171
  const promises = paths.map((path, index)=>inputToProcedureCall({
163
172
  opts,
164
173
  ctx,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trpc/server",
3
- "version": "10.37.1",
3
+ "version": "10.38.1",
4
4
  "description": "The tRPC server library",
5
5
  "author": "KATT",
6
6
  "license": "MIT",
@@ -165,7 +165,7 @@
165
165
  "tslib": "^2.5.0",
166
166
  "tsx": "^3.12.7",
167
167
  "typescript": "^5.1.3",
168
- "valibot": "^0.8.0",
168
+ "valibot": "^0.12.0",
169
169
  "vitest": "^0.32.0",
170
170
  "ws": "^8.0.0",
171
171
  "yup": "^1.0.0",
@@ -174,5 +174,5 @@
174
174
  "funding": [
175
175
  "https://trpc.io/sponsor"
176
176
  ],
177
- "gitHead": "9ebca19eb2690d4717601d9d54f39e4ffeff369f"
177
+ "gitHead": "c48811ab55efbec8d1a9db778c46be2dc5c25818"
178
178
  }
package/src/core/index.ts CHANGED
@@ -17,7 +17,11 @@ export type {
17
17
  ProcedureOptions,
18
18
  } from './procedure';
19
19
  export type { inferParser } from './parser';
20
- export { createInputMiddleware, createOutputMiddleware } from './middleware';
20
+ export {
21
+ createInputMiddleware,
22
+ createOutputMiddleware,
23
+ experimental_standaloneMiddleware,
24
+ } from './middleware';
21
25
  export type { MiddlewareFunction, MiddlewareBuilder } from './middleware';
22
26
  export { initTRPC } from './initTRPC';
23
27
  export * from './types';
@@ -1,6 +1,6 @@
1
1
  import { TRPCError } from '../error/TRPCError';
2
2
  import { Simplify } from '../types';
3
- import { AnyRootConfig } from './internals/config';
3
+ import { AnyRootConfig, RootConfig } from './internals/config';
4
4
  import { ParseFn } from './internals/getParseFn';
5
5
  import { ProcedureBuilderMiddleware } from './internals/procedureBuilder';
6
6
  import {
@@ -111,12 +111,15 @@ type CreateMiddlewareReturnInput<
111
111
  /**
112
112
  * @internal
113
113
  */
114
- type deriveParamsFromConfig<TConfig extends AnyRootConfig> = {
114
+ type deriveParamsFromConfig<
115
+ TConfig extends AnyRootConfig,
116
+ TInputIn = unknown,
117
+ > = {
115
118
  _config: TConfig;
116
119
  // eslint-disable-next-line @typescript-eslint/ban-types
117
120
  _ctx_out: {};
118
- _input_out: unknown;
119
- _input_in: unknown;
121
+ _input_out: TInputIn;
122
+ _input_in: TInputIn;
120
123
  _output_in: unknown;
121
124
  _output_out: unknown;
122
125
  _meta: TConfig['$types']['meta'];
@@ -159,10 +162,13 @@ export type MiddlewareFunction<
159
162
  /**
160
163
  * @internal
161
164
  */
162
- export function createMiddlewareFactory<TConfig extends AnyRootConfig>() {
165
+ export function createMiddlewareFactory<
166
+ TConfig extends AnyRootConfig,
167
+ TInputIn = unknown,
168
+ >() {
163
169
  function createMiddlewareInner<TNewParams extends ProcedureParams>(
164
170
  middlewares: MiddlewareFunction<any, any>[],
165
- ): MiddlewareBuilder<deriveParamsFromConfig<TConfig>, TNewParams> {
171
+ ): MiddlewareBuilder<deriveParamsFromConfig<TConfig, TInputIn>, TNewParams> {
166
172
  return {
167
173
  _middlewares: middlewares,
168
174
  unstable_pipe(middlewareBuilderOrFn) {
@@ -180,14 +186,35 @@ export function createMiddlewareFactory<TConfig extends AnyRootConfig>() {
180
186
  }
181
187
 
182
188
  function createMiddleware<TNewParams extends ProcedureParams>(
183
- fn: MiddlewareFunction<deriveParamsFromConfig<TConfig>, TNewParams>,
184
- ): MiddlewareBuilder<deriveParamsFromConfig<TConfig>, TNewParams> {
189
+ fn: MiddlewareFunction<
190
+ deriveParamsFromConfig<TConfig, TInputIn>,
191
+ TNewParams
192
+ >,
193
+ ): MiddlewareBuilder<deriveParamsFromConfig<TConfig, TInputIn>, TNewParams> {
185
194
  return createMiddlewareInner([fn]);
186
195
  }
187
196
 
188
197
  return createMiddleware;
189
198
  }
190
199
 
200
+ export const experimental_standaloneMiddleware = <
201
+ TCtx extends {
202
+ ctx?: object;
203
+ meta?: object;
204
+ input?: unknown;
205
+ },
206
+ >() => ({
207
+ create: createMiddlewareFactory<
208
+ RootConfig<{
209
+ ctx: TCtx extends { ctx: infer T extends object } ? T : object;
210
+ meta: TCtx extends { meta: infer T extends object } ? T : object;
211
+ errorShape: object;
212
+ transformer: object;
213
+ }>,
214
+ TCtx extends { input: infer T } ? T : unknown
215
+ >(),
216
+ });
217
+
191
218
  function isPlainObject(obj: unknown) {
192
219
  return obj && typeof obj === 'object' && !Array.isArray(obj);
193
220
  }
@@ -287,6 +287,17 @@ export async function resolveHTTPResponse<
287
287
  req.headers['trpc-batch-mode'] === 'stream';
288
288
 
289
289
  try {
290
+ // we create context first so that (unless `createContext()` throws)
291
+ // error handler may access context information
292
+ //
293
+ // this way even if the client sends malformed input that might cause an exception:
294
+ // - `opts.error` has value,
295
+ // - batching is not enabled,
296
+ // - `type` is unknown,
297
+ // - `getInputs` throws because of malformed JSON,
298
+ // context value is still available to the error handler
299
+ ctx = await opts.createContext();
300
+
290
301
  if (opts.error) {
291
302
  throw opts.error;
292
303
  }
@@ -317,7 +328,6 @@ export async function resolveHTTPResponse<
317
328
  paths = isBatchCall
318
329
  ? decodeURIComponent(opts.path).split(',')
319
330
  : [opts.path];
320
- ctx = await opts.createContext();
321
331
  const promises = paths.map((path, index) =>
322
332
  inputToProcedureCall({ opts, ctx, type, input: inputs[index], path }),
323
333
  );
@@ -1 +0,0 @@
1
- export * from '../../dist/adapters/zodFileSchema';
@@ -1 +0,0 @@
1
- module.exports = require('../../dist/adapters/zodFileSchema');