@trpc/server 11.0.0-rc.417 → 11.0.0-rc.419

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 (95) hide show
  1. package/dist/@trpc/server/index.d.ts +1 -1
  2. package/dist/@trpc/server/index.d.ts.map +1 -1
  3. package/dist/adapters/aws-lambda/getPlanner.d.ts.map +1 -1
  4. package/dist/adapters/next-app-dir/redirect.d.ts.map +1 -1
  5. package/dist/adapters/node-http/incomingMessageToRequest.d.ts +0 -1
  6. package/dist/adapters/node-http/incomingMessageToRequest.d.ts.map +1 -1
  7. package/dist/adapters/node-http/incomingMessageToRequest.js +3 -1
  8. package/dist/adapters/node-http/incomingMessageToRequest.mjs +3 -1
  9. package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
  10. package/dist/adapters/node-http/nodeHTTPRequestHandler.js +30 -7
  11. package/dist/adapters/node-http/nodeHTTPRequestHandler.mjs +30 -7
  12. package/dist/adapters/node-http/types.d.ts +0 -1
  13. package/dist/adapters/node-http/types.d.ts.map +1 -1
  14. package/dist/adapters/standalone.d.ts +0 -1
  15. package/dist/adapters/standalone.d.ts.map +1 -1
  16. package/dist/adapters/ws.d.ts +1 -2
  17. package/dist/adapters/ws.d.ts.map +1 -1
  18. package/dist/adapters/ws.js +98 -81
  19. package/dist/adapters/ws.mjs +98 -81
  20. package/dist/bundle-analysis.json +196 -137
  21. package/dist/index.js +5 -3
  22. package/dist/index.mjs +2 -1
  23. package/dist/observable/observable.d.ts +1 -0
  24. package/dist/observable/observable.d.ts.map +1 -1
  25. package/dist/observable/observable.js +55 -0
  26. package/dist/observable/observable.mjs +55 -1
  27. package/dist/unstable-core-do-not-import/createProxy.d.ts.map +1 -1
  28. package/dist/unstable-core-do-not-import/http/contentType.d.ts +7 -4
  29. package/dist/unstable-core-do-not-import/http/contentType.d.ts.map +1 -1
  30. package/dist/unstable-core-do-not-import/http/contentType.js +55 -17
  31. package/dist/unstable-core-do-not-import/http/contentType.mjs +56 -18
  32. package/dist/unstable-core-do-not-import/http/resolveResponse.d.ts.map +1 -1
  33. package/dist/unstable-core-do-not-import/http/resolveResponse.js +302 -149
  34. package/dist/unstable-core-do-not-import/http/resolveResponse.mjs +301 -148
  35. package/dist/unstable-core-do-not-import/http/types.d.ts +34 -5
  36. package/dist/unstable-core-do-not-import/http/types.d.ts.map +1 -1
  37. package/dist/unstable-core-do-not-import/initTRPC.d.ts +12 -12
  38. package/dist/unstable-core-do-not-import/initTRPC.d.ts.map +1 -1
  39. package/dist/unstable-core-do-not-import/middleware.d.ts +3 -3
  40. package/dist/unstable-core-do-not-import/middleware.d.ts.map +1 -1
  41. package/dist/unstable-core-do-not-import/procedureBuilder.d.ts +3 -1
  42. package/dist/unstable-core-do-not-import/procedureBuilder.d.ts.map +1 -1
  43. package/dist/unstable-core-do-not-import/rootConfig.d.ts +12 -0
  44. package/dist/unstable-core-do-not-import/rootConfig.d.ts.map +1 -1
  45. package/dist/unstable-core-do-not-import/router.d.ts +2 -2
  46. package/dist/unstable-core-do-not-import/router.d.ts.map +1 -1
  47. package/dist/unstable-core-do-not-import/router.js +6 -0
  48. package/dist/unstable-core-do-not-import/router.mjs +6 -0
  49. package/dist/unstable-core-do-not-import/stream/{stream.d.ts → jsonl.d.ts} +5 -5
  50. package/dist/unstable-core-do-not-import/stream/jsonl.d.ts.map +1 -0
  51. package/dist/unstable-core-do-not-import/stream/{stream.js → jsonl.js} +90 -89
  52. package/dist/unstable-core-do-not-import/stream/{stream.mjs → jsonl.mjs} +89 -88
  53. package/dist/unstable-core-do-not-import/stream/sse.d.ts +95 -0
  54. package/dist/unstable-core-do-not-import/stream/sse.d.ts.map +1 -0
  55. package/dist/unstable-core-do-not-import/stream/sse.js +175 -0
  56. package/dist/unstable-core-do-not-import/stream/sse.mjs +169 -0
  57. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.d.ts +18 -0
  58. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.d.ts.map +1 -0
  59. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.js +46 -0
  60. package/dist/unstable-core-do-not-import/stream/utils/createDeferred.mjs +43 -0
  61. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.d.ts +10 -0
  62. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.d.ts.map +1 -0
  63. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.js +31 -0
  64. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.mjs +29 -0
  65. package/dist/unstable-core-do-not-import/stream/utils/createServer.d.ts +7 -0
  66. package/dist/unstable-core-do-not-import/stream/utils/createServer.d.ts.map +1 -0
  67. package/dist/unstable-core-do-not-import/transformer.d.ts +5 -5
  68. package/dist/unstable-core-do-not-import/utils.d.ts +4 -0
  69. package/dist/unstable-core-do-not-import/utils.d.ts.map +1 -1
  70. package/dist/unstable-core-do-not-import/utils.js +4 -0
  71. package/dist/unstable-core-do-not-import/utils.mjs +4 -1
  72. package/dist/unstable-core-do-not-import.d.ts +2 -1
  73. package/dist/unstable-core-do-not-import.d.ts.map +1 -1
  74. package/dist/unstable-core-do-not-import.js +11 -4
  75. package/dist/unstable-core-do-not-import.mjs +3 -2
  76. package/package.json +3 -3
  77. package/src/@trpc/server/index.ts +1 -0
  78. package/src/adapters/node-http/incomingMessageToRequest.ts +3 -2
  79. package/src/adapters/node-http/nodeHTTPRequestHandler.ts +32 -7
  80. package/src/adapters/ws.ts +101 -75
  81. package/src/observable/observable.ts +63 -0
  82. package/src/unstable-core-do-not-import/http/contentType.ts +78 -21
  83. package/src/unstable-core-do-not-import/http/resolveResponse.ts +331 -164
  84. package/src/unstable-core-do-not-import/http/types.ts +42 -5
  85. package/src/unstable-core-do-not-import/procedureBuilder.ts +8 -1
  86. package/src/unstable-core-do-not-import/rootConfig.ts +12 -0
  87. package/src/unstable-core-do-not-import/router.ts +12 -0
  88. package/src/unstable-core-do-not-import/stream/{stream.ts → jsonl.ts} +99 -85
  89. package/src/unstable-core-do-not-import/stream/sse.ts +291 -0
  90. package/src/unstable-core-do-not-import/stream/utils/createDeferred.ts +48 -0
  91. package/src/unstable-core-do-not-import/stream/utils/createReadableStream.ts +31 -0
  92. package/src/unstable-core-do-not-import/stream/utils/createServer.ts +46 -0
  93. package/src/unstable-core-do-not-import/utils.ts +5 -0
  94. package/src/unstable-core-do-not-import.ts +2 -1
  95. package/dist/unstable-core-do-not-import/stream/stream.d.ts.map +0 -1
package/dist/index.js CHANGED
@@ -3,11 +3,12 @@
3
3
  var createProxy = require('./unstable-core-do-not-import/createProxy.js');
4
4
  var TRPCError = require('./unstable-core-do-not-import/error/TRPCError.js');
5
5
  var getErrorShape = require('./unstable-core-do-not-import/error/getErrorShape.js');
6
- var router = require('./unstable-core-do-not-import/router.js');
6
+ var sse = require('./unstable-core-do-not-import/stream/sse.js');
7
7
  var transformer = require('./unstable-core-do-not-import/transformer.js');
8
8
  var initTRPC = require('./unstable-core-do-not-import/initTRPC.js');
9
9
  var middleware = require('./unstable-core-do-not-import/middleware.js');
10
10
  require('./unstable-core-do-not-import/rootConfig.js');
11
+ var router = require('./unstable-core-do-not-import/router.js');
11
12
 
12
13
 
13
14
 
@@ -15,9 +16,10 @@ exports.createTRPCFlatProxy = createProxy.createFlatProxy;
15
16
  exports.TRPCError = TRPCError.TRPCError;
16
17
  exports.getTRPCErrorFromUnknown = TRPCError.getTRPCErrorFromUnknown;
17
18
  exports.getErrorShape = getErrorShape.getErrorShape;
18
- exports.callProcedure = router.callProcedure;
19
- exports.callTRPCProcedure = router.callProcedure;
19
+ exports.sse = sse.sse;
20
20
  exports.transformTRPCResponse = transformer.transformTRPCResponse;
21
21
  exports.initTRPC = initTRPC.initTRPC;
22
22
  exports.experimental_standaloneMiddleware = middleware.experimental_standaloneMiddleware;
23
23
  exports.experimental_trpcMiddleware = middleware.experimental_standaloneMiddleware;
24
+ exports.callProcedure = router.callProcedure;
25
+ exports.callTRPCProcedure = router.callProcedure;
package/dist/index.mjs CHANGED
@@ -1,8 +1,9 @@
1
1
  export { createFlatProxy as createTRPCFlatProxy } from './unstable-core-do-not-import/createProxy.mjs';
2
2
  export { TRPCError, getTRPCErrorFromUnknown } from './unstable-core-do-not-import/error/TRPCError.mjs';
3
3
  export { getErrorShape } from './unstable-core-do-not-import/error/getErrorShape.mjs';
4
- export { callProcedure, callProcedure as callTRPCProcedure } from './unstable-core-do-not-import/router.mjs';
4
+ export { sse } from './unstable-core-do-not-import/stream/sse.mjs';
5
5
  export { transformTRPCResponse } from './unstable-core-do-not-import/transformer.mjs';
6
6
  export { initTRPC } from './unstable-core-do-not-import/initTRPC.mjs';
7
7
  export { experimental_standaloneMiddleware, experimental_standaloneMiddleware as experimental_trpcMiddleware } from './unstable-core-do-not-import/middleware.mjs';
8
8
  import './unstable-core-do-not-import/rootConfig.mjs';
9
+ export { callProcedure, callProcedure as callTRPCProcedure } from './unstable-core-do-not-import/router.mjs';
@@ -10,4 +10,5 @@ export declare function observableToPromise<TValue>(observable: Observable<TValu
10
10
  promise: Promise<TValue>;
11
11
  abort: () => void;
12
12
  };
13
+ export declare function observableToAsyncIterable<TValue>(observable: Observable<TValue, unknown>): AsyncIterable<TValue>;
13
14
  //# sourceMappingURL=observable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"observable.d.ts","sourceRoot":"","sources":["../../src/observable/observable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EAER,aAAa,EAEd,MAAM,SAAS,CAAC;AAEjB,cAAc;AACd,MAAM,MAAM,oBAAoB,CAAC,WAAW,IAAI,WAAW,SAAS,UAAU,CAC5E,MAAM,MAAM,EACZ,OAAO,CACR,GACG,MAAM,GACN,KAAK,CAAC;AAEV,cAAc;AACd,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAE1E;AAED,cAAc;AACd,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,EACjD,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,aAAa,GAC/D,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CA6D5B;AAcD,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,MAAM,EACxC,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;;iBAEtB,IAAI;EAkCtB"}
1
+ {"version":3,"file":"observable.d.ts","sourceRoot":"","sources":["../../src/observable/observable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EAER,aAAa,EAGd,MAAM,SAAS,CAAC;AAEjB,cAAc;AACd,MAAM,MAAM,oBAAoB,CAAC,WAAW,IAAI,WAAW,SAAS,UAAU,CAC5E,MAAM,MAAM,EACZ,OAAO,CACR,GACG,MAAM,GACN,KAAK,CAAC;AAEV,cAAc;AACd,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAE1E;AAED,cAAc;AACd,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,EACjD,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,aAAa,GAC/D,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CA6D5B;AAcD,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,MAAM,EACxC,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC;;iBAEtB,IAAI;EAkCtB;AA6BD,wBAAgB,yBAAyB,CAAC,MAAM,EAC9C,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,GACtC,aAAa,CAAC,MAAM,CAAC,CA+BvB"}
@@ -108,7 +108,62 @@ class ObservableAbortError extends Error {
108
108
  abort: abort
109
109
  };
110
110
  }
111
+ /**
112
+ * @internal
113
+ */ function observableToReadableStream(observable) {
114
+ let unsub = null;
115
+ return new ReadableStream({
116
+ start (controller) {
117
+ unsub = observable.subscribe({
118
+ next (data) {
119
+ controller.enqueue(data);
120
+ },
121
+ error (err) {
122
+ controller.error(err);
123
+ },
124
+ complete () {
125
+ controller.close();
126
+ }
127
+ });
128
+ },
129
+ cancel () {
130
+ unsub?.unsubscribe();
131
+ }
132
+ });
133
+ }
134
+ function observableToAsyncIterable(observable) {
135
+ const stream = observableToReadableStream(observable);
136
+ const reader = stream.getReader();
137
+ const iterator = {
138
+ async next () {
139
+ const value = await reader.read();
140
+ if (value.done) {
141
+ return {
142
+ value: undefined,
143
+ done: true
144
+ };
145
+ }
146
+ return {
147
+ value: value.value,
148
+ done: false
149
+ };
150
+ },
151
+ async return () {
152
+ await reader.cancel();
153
+ return {
154
+ value: undefined,
155
+ done: true
156
+ };
157
+ }
158
+ };
159
+ return {
160
+ [Symbol.asyncIterator] () {
161
+ return iterator;
162
+ }
163
+ };
164
+ }
111
165
 
112
166
  exports.isObservable = isObservable;
113
167
  exports.observable = observable;
168
+ exports.observableToAsyncIterable = observableToAsyncIterable;
114
169
  exports.observableToPromise = observableToPromise;
@@ -106,5 +106,59 @@ class ObservableAbortError extends Error {
106
106
  abort: abort
107
107
  };
108
108
  }
109
+ /**
110
+ * @internal
111
+ */ function observableToReadableStream(observable) {
112
+ let unsub = null;
113
+ return new ReadableStream({
114
+ start (controller) {
115
+ unsub = observable.subscribe({
116
+ next (data) {
117
+ controller.enqueue(data);
118
+ },
119
+ error (err) {
120
+ controller.error(err);
121
+ },
122
+ complete () {
123
+ controller.close();
124
+ }
125
+ });
126
+ },
127
+ cancel () {
128
+ unsub?.unsubscribe();
129
+ }
130
+ });
131
+ }
132
+ function observableToAsyncIterable(observable) {
133
+ const stream = observableToReadableStream(observable);
134
+ const reader = stream.getReader();
135
+ const iterator = {
136
+ async next () {
137
+ const value = await reader.read();
138
+ if (value.done) {
139
+ return {
140
+ value: undefined,
141
+ done: true
142
+ };
143
+ }
144
+ return {
145
+ value: value.value,
146
+ done: false
147
+ };
148
+ },
149
+ async return () {
150
+ await reader.cancel();
151
+ return {
152
+ value: undefined,
153
+ done: true
154
+ };
155
+ }
156
+ };
157
+ return {
158
+ [Symbol.asyncIterator] () {
159
+ return iterator;
160
+ }
161
+ };
162
+ }
109
163
 
110
- export { isObservable, observable, observableToPromise };
164
+ export { isObservable, observable, observableToAsyncIterable, observableToPromise };
@@ -1 +1 @@
1
- {"version":3,"file":"createProxy.d.ts","sourceRoot":"","sources":["../../src/unstable-core-do-not-import/createProxy.ts"],"names":[],"mappings":"AAAA,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AACD,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,oBAAoB,KAAK,OAAO,CAAC;AA6C7D;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,8BACrB,aAAa,KACtB,KAAqE,CAAC;AAEzE;;;;GAIG;AACH,eAAO,MAAM,eAAe,2BACT,MAAM,GAAG,MAAM,KAAK,KAAK,GAAG,KAC5C,KAWF,CAAC"}
1
+ {"version":3,"file":"createProxy.d.ts","sourceRoot":"","sources":["../../src/unstable-core-do-not-import/createProxy.ts"],"names":[],"mappings":"AAAA,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AACD,KAAK,aAAa,GAAG,CAAC,IAAI,EAAE,oBAAoB,KAAK,OAAO,CAAC;AA6C7D;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAI,KAAK,sBAC9B,aAAa,KACtB,KAAqE,CAAC;AAEzE;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,KAAK,YACzB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,KAAK,KAAK,GAAG,KAC5C,KAWF,CAAC"}
@@ -1,9 +1,12 @@
1
- import type { RootConfig } from '../rootConfig';
1
+ import type { AnyRouter } from '../router';
2
2
  import type { TRPCRequestInfo } from './types';
3
- export declare function getRequestInfo(opts: {
3
+ type GetRequestInfoOptions = {
4
4
  path: string;
5
5
  req: Request;
6
6
  searchParams: URLSearchParams;
7
- config: RootConfig<any>;
8
- }): TRPCRequestInfo;
7
+ headers: Headers;
8
+ router: AnyRouter;
9
+ };
10
+ export declare function getRequestInfo(opts: GetRequestInfoOptions): TRPCRequestInfo;
11
+ export {};
9
12
  //# sourceMappingURL=contentType.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contentType.d.ts","sourceRoot":"","sources":["../../../src/unstable-core-do-not-import/http/contentType.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AA4M/C,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,YAAY,EAAE,eAAe,CAAC;IAC9B,MAAM,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;CACzB,GAAG,eAAe,CAGlB"}
1
+ {"version":3,"file":"contentType.d.ts","sourceRoot":"","sources":["../../../src/unstable-core-do-not-import/http/contentType.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,KAAK,EAEV,eAAe,EAEhB,MAAM,SAAS,CAAC;AAEjB,KAAK,qBAAqB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,OAAO,CAAC;IACb,YAAY,EAAE,eAAe,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,SAAS,CAAC;CACnB,CAAC;AA6PF,wBAAgB,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,eAAe,CAG3E"}
@@ -65,7 +65,7 @@ const jsonContentTypeHandler = {
65
65
  }
66
66
  if (!isBatchCall) {
67
67
  return {
68
- 0: opts.config.transformer.input.deserialize(inputs)
68
+ 0: opts.router._def._config.transformer.input.deserialize(inputs)
69
69
  };
70
70
  }
71
71
  if (!utils.isObject(inputs)) {
@@ -78,24 +78,56 @@ const jsonContentTypeHandler = {
78
78
  for (const index of paths.keys()){
79
79
  const input = inputs[index];
80
80
  if (input !== undefined) {
81
- acc[index] = opts.config.transformer.input.deserialize(input);
81
+ acc[index] = opts.router._def._config.transformer.input.deserialize(input);
82
82
  }
83
83
  }
84
84
  return acc;
85
85
  });
86
- return {
87
- isBatchCall,
88
- calls: paths.map((path, index)=>({
89
- path,
90
- getRawInput: async ()=>{
91
- const inputs = await getInputs.read();
92
- return inputs[index];
93
- },
94
- result: ()=>{
95
- return getInputs.result()?.[index];
86
+ const calls = paths.map((path, index)=>{
87
+ const procedure = opts.router._def.procedures[path] ?? null;
88
+ return {
89
+ path,
90
+ procedure,
91
+ getRawInput: async ()=>{
92
+ const inputs = await getInputs.read();
93
+ let input = inputs[index];
94
+ if (procedure?._def.type === 'subscription') {
95
+ const lastEventId = opts.headers.get('last-event-id') ?? opts.searchParams.get('lastEventId') ?? opts.searchParams.get('Last-Event-Id');
96
+ if (lastEventId) {
97
+ if (utils.isObject(input)) {
98
+ input = {
99
+ ...input,
100
+ lastEventId: lastEventId
101
+ };
102
+ } else {
103
+ input ?? (input = {
104
+ lastEventId: lastEventId
105
+ });
106
+ }
107
+ }
96
108
  }
97
- }))
109
+ return input;
110
+ },
111
+ result: ()=>{
112
+ return getInputs.result()?.[index];
113
+ }
114
+ };
115
+ });
116
+ const types = new Set(calls.map((call)=>call.procedure?._def.type).filter(Boolean));
117
+ /* istanbul ignore if -- @preserve */ if (types.size > 1) {
118
+ throw new TRPCError.TRPCError({
119
+ code: 'BAD_REQUEST',
120
+ message: `Cannot mix procedure types in call: ${Array.from(types).join(', ')}`
121
+ });
122
+ }
123
+ const type = types.values().next().value ?? 'unknown';
124
+ const info = {
125
+ isBatchCall,
126
+ accept: req.headers.get('trpc-accept'),
127
+ calls,
128
+ type
98
129
  };
130
+ return info;
99
131
  }
100
132
  };
101
133
  const formDataContentTypeHandler = {
@@ -115,14 +147,17 @@ const formDataContentTypeHandler = {
115
147
  return fd;
116
148
  });
117
149
  return {
150
+ accept: null,
118
151
  calls: [
119
152
  {
120
153
  path: opts.path,
121
154
  getRawInput: getInputs.read,
122
- result: getInputs.result
155
+ result: getInputs.result,
156
+ procedure: opts.router._def.procedures[opts.path] ?? null
123
157
  }
124
158
  ],
125
- isBatchCall: false
159
+ isBatchCall: false,
160
+ type: 'mutation'
126
161
  };
127
162
  }
128
163
  };
@@ -146,10 +181,13 @@ const octetStreamContentTypeHandler = {
146
181
  {
147
182
  path: opts.path,
148
183
  getRawInput: getInputs.read,
149
- result: getInputs.result
184
+ result: getInputs.result,
185
+ procedure: opts.router._def.procedures[opts.path] ?? null
150
186
  }
151
187
  ],
152
- isBatchCall: false
188
+ isBatchCall: false,
189
+ accept: null,
190
+ type: 'mutation'
153
191
  };
154
192
  }
155
193
  };
@@ -1,5 +1,5 @@
1
1
  import { TRPCError } from '../error/TRPCError.mjs';
2
- import { unsetMarker, isObject } from '../utils.mjs';
2
+ import { isObject, unsetMarker } from '../utils.mjs';
3
3
 
4
4
  /**
5
5
  * Memoize a function that takes no arguments
@@ -63,7 +63,7 @@ const jsonContentTypeHandler = {
63
63
  }
64
64
  if (!isBatchCall) {
65
65
  return {
66
- 0: opts.config.transformer.input.deserialize(inputs)
66
+ 0: opts.router._def._config.transformer.input.deserialize(inputs)
67
67
  };
68
68
  }
69
69
  if (!isObject(inputs)) {
@@ -76,24 +76,56 @@ const jsonContentTypeHandler = {
76
76
  for (const index of paths.keys()){
77
77
  const input = inputs[index];
78
78
  if (input !== undefined) {
79
- acc[index] = opts.config.transformer.input.deserialize(input);
79
+ acc[index] = opts.router._def._config.transformer.input.deserialize(input);
80
80
  }
81
81
  }
82
82
  return acc;
83
83
  });
84
- return {
85
- isBatchCall,
86
- calls: paths.map((path, index)=>({
87
- path,
88
- getRawInput: async ()=>{
89
- const inputs = await getInputs.read();
90
- return inputs[index];
91
- },
92
- result: ()=>{
93
- return getInputs.result()?.[index];
84
+ const calls = paths.map((path, index)=>{
85
+ const procedure = opts.router._def.procedures[path] ?? null;
86
+ return {
87
+ path,
88
+ procedure,
89
+ getRawInput: async ()=>{
90
+ const inputs = await getInputs.read();
91
+ let input = inputs[index];
92
+ if (procedure?._def.type === 'subscription') {
93
+ const lastEventId = opts.headers.get('last-event-id') ?? opts.searchParams.get('lastEventId') ?? opts.searchParams.get('Last-Event-Id');
94
+ if (lastEventId) {
95
+ if (isObject(input)) {
96
+ input = {
97
+ ...input,
98
+ lastEventId: lastEventId
99
+ };
100
+ } else {
101
+ input ?? (input = {
102
+ lastEventId: lastEventId
103
+ });
104
+ }
105
+ }
94
106
  }
95
- }))
107
+ return input;
108
+ },
109
+ result: ()=>{
110
+ return getInputs.result()?.[index];
111
+ }
112
+ };
113
+ });
114
+ const types = new Set(calls.map((call)=>call.procedure?._def.type).filter(Boolean));
115
+ /* istanbul ignore if -- @preserve */ if (types.size > 1) {
116
+ throw new TRPCError({
117
+ code: 'BAD_REQUEST',
118
+ message: `Cannot mix procedure types in call: ${Array.from(types).join(', ')}`
119
+ });
120
+ }
121
+ const type = types.values().next().value ?? 'unknown';
122
+ const info = {
123
+ isBatchCall,
124
+ accept: req.headers.get('trpc-accept'),
125
+ calls,
126
+ type
96
127
  };
128
+ return info;
97
129
  }
98
130
  };
99
131
  const formDataContentTypeHandler = {
@@ -113,14 +145,17 @@ const formDataContentTypeHandler = {
113
145
  return fd;
114
146
  });
115
147
  return {
148
+ accept: null,
116
149
  calls: [
117
150
  {
118
151
  path: opts.path,
119
152
  getRawInput: getInputs.read,
120
- result: getInputs.result
153
+ result: getInputs.result,
154
+ procedure: opts.router._def.procedures[opts.path] ?? null
121
155
  }
122
156
  ],
123
- isBatchCall: false
157
+ isBatchCall: false,
158
+ type: 'mutation'
124
159
  };
125
160
  }
126
161
  };
@@ -144,10 +179,13 @@ const octetStreamContentTypeHandler = {
144
179
  {
145
180
  path: opts.path,
146
181
  getRawInput: getInputs.read,
147
- result: getInputs.result
182
+ result: getInputs.result,
183
+ procedure: opts.router._def.procedures[opts.path] ?? null
148
184
  }
149
185
  ],
150
- isBatchCall: false
186
+ isBatchCall: false,
187
+ accept: null,
188
+ type: 'mutation'
151
189
  };
152
190
  }
153
191
  };
@@ -1 +1 @@
1
- {"version":3,"file":"resolveResponse.d.ts","sourceRoot":"","sources":["../../../src/unstable-core-do-not-import/http/resolveResponse.ts"],"names":[],"mappings":"AAEA,OAAO,EAA2B,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,EAEL,KAAK,SAAS,EAGf,MAAM,WAAW,CAAC;AAOnB,OAAO,KAAK,EACV,sBAAsB,EACtB,kCAAkC,EAEnC,MAAM,SAAS,CAAC;AAUjB,UAAU,yBAAyB,CAAC,OAAO,SAAS,SAAS,CAC3D,SAAQ,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC;IAChD,aAAa,EAAE,kCAAkC,CAAC,OAAO,CAAC,CAAC;IAC3D,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;CACzB;AAsHD,wBAAsB,eAAe,CAAC,OAAO,SAAS,SAAS,EAC7D,IAAI,EAAE,yBAAyB,CAAC,OAAO,CAAC,GACvC,OAAO,CAAC,QAAQ,CAAC,CA8QnB"}
1
+ {"version":3,"file":"resolveResponse.d.ts","sourceRoot":"","sources":["../../../src/unstable-core-do-not-import/http/resolveResponse.ts"],"names":[],"mappings":"AAMA,OAAO,EAA2B,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,EACL,KAAK,SAAS,EAGf,MAAM,WAAW,CAAC;AAQnB,OAAO,KAAK,EACV,sBAAsB,EACtB,kCAAkC,EAEnC,MAAM,SAAS,CAAC;AA0BjB,UAAU,yBAAyB,CAAC,OAAO,SAAS,SAAS,CAC3D,SAAQ,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC;IAChD,aAAa,EAAE,kCAAkC,CAAC,OAAO,CAAC,CAAC;IAC3D,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;CACzB;AAyID,wBAAsB,eAAe,CAAC,OAAO,SAAS,SAAS,EAC7D,IAAI,EAAE,yBAAyB,CAAC,OAAO,CAAC,GACvC,OAAO,CAAC,QAAQ,CAAC,CA8YnB"}