@trpc/server 11.0.0-rc.645 → 11.0.0-rc.657

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 (85) hide show
  1. package/dist/adapters/aws-lambda/index.js +1 -1
  2. package/dist/adapters/aws-lambda/index.mjs +1 -1
  3. package/dist/adapters/express.js +1 -1
  4. package/dist/adapters/express.mjs +1 -1
  5. package/dist/adapters/fastify/fastifyRequestHandler.js +1 -1
  6. package/dist/adapters/fastify/fastifyRequestHandler.mjs +1 -1
  7. package/dist/adapters/fetch/fetchRequestHandler.js +1 -1
  8. package/dist/adapters/fetch/fetchRequestHandler.mjs +1 -1
  9. package/dist/adapters/next-app-dir/nextAppDirCaller.js +1 -1
  10. package/dist/adapters/next-app-dir/nextAppDirCaller.mjs +1 -1
  11. package/dist/adapters/next-app-dir/notFound.js +1 -1
  12. package/dist/adapters/next-app-dir/notFound.mjs +1 -1
  13. package/dist/adapters/next-app-dir/redirect.js +15 -3
  14. package/dist/adapters/next-app-dir/redirect.mjs +14 -2
  15. package/dist/adapters/next.js +1 -1
  16. package/dist/adapters/next.mjs +1 -1
  17. package/dist/adapters/node-http/incomingMessageToRequest.js +1 -1
  18. package/dist/adapters/node-http/incomingMessageToRequest.mjs +1 -1
  19. package/dist/adapters/node-http/nodeHTTPRequestHandler.js +1 -1
  20. package/dist/adapters/node-http/nodeHTTPRequestHandler.mjs +1 -1
  21. package/dist/adapters/node-http/writeResponse.js +1 -1
  22. package/dist/adapters/node-http/writeResponse.mjs +1 -1
  23. package/dist/adapters/standalone.js +1 -1
  24. package/dist/adapters/standalone.mjs +1 -1
  25. package/dist/adapters/ws.d.ts.map +1 -1
  26. package/dist/adapters/ws.js +144 -65
  27. package/dist/adapters/ws.mjs +144 -65
  28. package/dist/bundle-analysis.json +190 -183
  29. package/dist/http.js +1 -1
  30. package/dist/http.mjs +1 -1
  31. package/dist/index.js +1 -1
  32. package/dist/index.mjs +1 -1
  33. package/dist/node_modules/.pnpm/@rollup_plugin-typescript@12.1.1_rollup@4.27.4_tslib@2.8.1_typescript@5.7.2/node_modules/tslib/tslib.es6.js +73 -0
  34. package/dist/rpc.js +1 -1
  35. package/dist/rpc.mjs +1 -1
  36. package/dist/shared.js +1 -1
  37. package/dist/shared.mjs +1 -1
  38. package/dist/unstable-core-do-not-import/error/TRPCError.d.ts +1 -1
  39. package/dist/unstable-core-do-not-import/error/TRPCError.js +14 -2
  40. package/dist/unstable-core-do-not-import/error/TRPCError.mjs +13 -1
  41. package/dist/unstable-core-do-not-import/http/resolveResponse.d.ts.map +1 -1
  42. package/dist/unstable-core-do-not-import/http/resolveResponse.js +3 -9
  43. package/dist/unstable-core-do-not-import/http/resolveResponse.mjs +3 -9
  44. package/dist/unstable-core-do-not-import/middleware.d.ts.map +1 -1
  45. package/dist/unstable-core-do-not-import/stream/jsonl.d.ts +8 -34
  46. package/dist/unstable-core-do-not-import/stream/jsonl.d.ts.map +1 -1
  47. package/dist/unstable-core-do-not-import/stream/jsonl.js +338 -209
  48. package/dist/unstable-core-do-not-import/stream/jsonl.mjs +337 -208
  49. package/dist/unstable-core-do-not-import/stream/sse.d.ts.map +1 -1
  50. package/dist/unstable-core-do-not-import/stream/sse.js +143 -74
  51. package/dist/unstable-core-do-not-import/stream/sse.mjs +144 -75
  52. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.d.ts +1 -0
  53. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.d.ts.map +1 -1
  54. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.js +103 -10
  55. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.mjs +104 -12
  56. package/dist/unstable-core-do-not-import/stream/utils/disposable.d.ts +17 -0
  57. package/dist/unstable-core-do-not-import/stream/utils/disposable.d.ts.map +1 -0
  58. package/dist/unstable-core-do-not-import/stream/utils/disposable.js +44 -0
  59. package/dist/unstable-core-do-not-import/stream/utils/disposable.mjs +41 -0
  60. package/dist/unstable-core-do-not-import/stream/utils/timerResource.d.ts +1 -2
  61. package/dist/unstable-core-do-not-import/stream/utils/timerResource.d.ts.map +1 -1
  62. package/dist/unstable-core-do-not-import/stream/utils/timerResource.js +8 -10
  63. package/dist/unstable-core-do-not-import/stream/utils/timerResource.mjs +8 -10
  64. package/dist/unstable-core-do-not-import/stream/utils/withPing.d.ts.map +1 -1
  65. package/dist/unstable-core-do-not-import/stream/utils/withPing.js +113 -24
  66. package/dist/unstable-core-do-not-import/stream/utils/withPing.mjs +114 -25
  67. package/dist/unstable-core-do-not-import/transformer.d.ts +1 -1
  68. package/dist/unstable-core-do-not-import.d.ts +1 -0
  69. package/dist/unstable-core-do-not-import.d.ts.map +1 -1
  70. package/dist/unstable-core-do-not-import.js +3 -0
  71. package/dist/unstable-core-do-not-import.mjs +1 -0
  72. package/dist/vendor/unpromise/unpromise.js +17 -6
  73. package/dist/vendor/unpromise/unpromise.mjs +13 -2
  74. package/package.json +3 -4
  75. package/src/adapters/ws.ts +7 -8
  76. package/src/unstable-core-do-not-import/http/resolveResponse.ts +3 -9
  77. package/src/unstable-core-do-not-import/stream/jsonl.ts +128 -153
  78. package/src/unstable-core-do-not-import/stream/sse.ts +64 -79
  79. package/src/unstable-core-do-not-import/stream/utils/asyncIterable.ts +50 -48
  80. package/src/unstable-core-do-not-import/stream/utils/disposable.ts +52 -0
  81. package/src/unstable-core-do-not-import/stream/utils/timerResource.ts +17 -15
  82. package/src/unstable-core-do-not-import/stream/utils/withPing.ts +18 -19
  83. package/src/unstable-core-do-not-import.ts +1 -0
  84. package/dist/node_modules/.pnpm/@swc_helpers@0.5.13/node_modules/@swc/helpers/esm/_define_property.js +0 -11
  85. package/dist/node_modules/.pnpm/@swc_helpers@0.5.13/node_modules/@swc/helpers/esm/_define_property.mjs +0 -9
@@ -5,13 +5,79 @@ import { parseConnectionParamsFromUnknown } from '../unstable-core-do-not-import
5
5
  import { parseTRPCMessage } from '../unstable-core-do-not-import/rpc/parseTRPCMessage.mjs';
6
6
  import { isObservable, observableToAsyncIterable } from '../observable/observable.mjs';
7
7
  import { Unpromise } from '../vendor/unpromise/unpromise.mjs';
8
+ import { iteratorResource } from '../unstable-core-do-not-import/stream/utils/asyncIterable.mjs';
9
+ import '../unstable-core-do-not-import/stream/utils/disposable.mjs';
8
10
  import { isTrackedEnvelope } from '../unstable-core-do-not-import/stream/tracked.mjs';
9
- import '../unstable-core-do-not-import/stream/utils/timerResource.mjs';
10
11
  import { transformTRPCResponse } from '../unstable-core-do-not-import/transformer.mjs';
11
12
  import '../unstable-core-do-not-import/rootConfig.mjs';
12
13
  import { callProcedure } from '../unstable-core-do-not-import/router.mjs';
13
14
  import { createURL } from './node-http/incomingMessageToRequest.mjs';
14
15
 
16
+ function _ts_add_disposable_resource(env, value, async) {
17
+ if (value !== null && value !== void 0) {
18
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
19
+ var dispose, inner;
20
+ {
21
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
22
+ dispose = value[Symbol.asyncDispose];
23
+ }
24
+ if (dispose === void 0) {
25
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
26
+ dispose = value[Symbol.dispose];
27
+ inner = dispose;
28
+ }
29
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
30
+ if (inner) dispose = function() {
31
+ try {
32
+ inner.call(this);
33
+ } catch (e) {
34
+ return Promise.reject(e);
35
+ }
36
+ };
37
+ env.stack.push({
38
+ value: value,
39
+ dispose: dispose,
40
+ async: async
41
+ });
42
+ } else {
43
+ env.stack.push({
44
+ async: true
45
+ });
46
+ }
47
+ return value;
48
+ }
49
+ function _ts_dispose_resources(env) {
50
+ var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
51
+ var e = new Error(message);
52
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
53
+ };
54
+ return (_ts_dispose_resources = function _ts_dispose_resources(env) {
55
+ function fail(e) {
56
+ env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
57
+ env.hasError = true;
58
+ }
59
+ var r, s = 0;
60
+ function next() {
61
+ while(r = env.stack.pop()){
62
+ try {
63
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
64
+ if (r.dispose) {
65
+ var result = r.dispose.call(r.value);
66
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) {
67
+ fail(e);
68
+ return next();
69
+ });
70
+ } else s |= 1;
71
+ } catch (e) {
72
+ fail(e);
73
+ }
74
+ }
75
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
76
+ if (env.hasError) throw env.error;
77
+ }
78
+ return next();
79
+ })(env);
80
+ }
15
81
  /**
16
82
  * Importing ws causes a build error
17
83
  * @see https://github.com/trpc/trpc/pull/5279
@@ -156,81 +222,94 @@ function getWSConnectionHandler(opts) {
156
222
  });
157
223
  }
158
224
  const iterable = isObservable(result) ? observableToAsyncIterable(result, abortController.signal) : result;
159
- const iterator = iterable[Symbol.asyncIterator]();
160
- const abortPromise = new Promise((resolve)=>{
161
- abortController.signal.onabort = ()=>resolve('abort');
162
- });
163
225
  run(async ()=>{
164
- // We need those declarations outside the loop for garbage collection reasons. If they
165
- // were declared inside, they would not be freed until the next value is present.
166
- let next;
167
- let result;
168
- while(true){
169
- next = await Unpromise.race([
170
- iterator.next().catch(getTRPCErrorFromUnknown),
171
- abortPromise
172
- ]);
173
- if (next === 'abort') {
174
- await iterator.return?.();
175
- break;
176
- }
177
- if (next instanceof Error) {
178
- const error = getTRPCErrorFromUnknown(next);
179
- opts.onError?.({
180
- error,
181
- path,
182
- type,
183
- ctx,
184
- req,
185
- input
186
- });
226
+ const env = {
227
+ stack: [],
228
+ error: void 0,
229
+ hasError: false
230
+ };
231
+ try {
232
+ const iterator = _ts_add_disposable_resource(env, iteratorResource(iterable), true);
233
+ ;
234
+ const abortPromise = new Promise((resolve)=>{
235
+ abortController.signal.onabort = ()=>resolve('abort');
236
+ });
237
+ // We need those declarations outside the loop for garbage collection reasons. If they
238
+ // were declared inside, they would not be freed until the next value is present.
239
+ let next;
240
+ let result;
241
+ while(true){
242
+ next = await Unpromise.race([
243
+ iterator.next().catch(getTRPCErrorFromUnknown),
244
+ abortPromise
245
+ ]);
246
+ if (next === 'abort') {
247
+ await iterator.return?.();
248
+ break;
249
+ }
250
+ if (next instanceof Error) {
251
+ const error = getTRPCErrorFromUnknown(next);
252
+ opts.onError?.({
253
+ error,
254
+ path,
255
+ type,
256
+ ctx,
257
+ req,
258
+ input
259
+ });
260
+ respond({
261
+ id,
262
+ jsonrpc,
263
+ error: getErrorShape({
264
+ config: router._def._config,
265
+ error,
266
+ type,
267
+ path,
268
+ input,
269
+ ctx
270
+ })
271
+ });
272
+ break;
273
+ }
274
+ if (next.done) {
275
+ break;
276
+ }
277
+ result = {
278
+ type: 'data',
279
+ data: next.value
280
+ };
281
+ if (isTrackedEnvelope(next.value)) {
282
+ const [id, data] = next.value;
283
+ result.id = id;
284
+ result.data = {
285
+ id,
286
+ data
287
+ };
288
+ }
187
289
  respond({
188
290
  id,
189
291
  jsonrpc,
190
- error: getErrorShape({
191
- config: router._def._config,
192
- error,
193
- type,
194
- path,
195
- input,
196
- ctx
197
- })
292
+ result
198
293
  });
199
- break;
200
- }
201
- if (next.done) {
202
- break;
203
- }
204
- result = {
205
- type: 'data',
206
- data: next.value
207
- };
208
- if (isTrackedEnvelope(next.value)) {
209
- const [id, data] = next.value;
210
- result.id = id;
211
- result.data = {
212
- id,
213
- data
214
- };
294
+ // free up references for garbage collection
295
+ next = null;
296
+ result = null;
215
297
  }
216
298
  respond({
217
299
  id,
218
300
  jsonrpc,
219
- result
301
+ result: {
302
+ type: 'stopped'
303
+ }
220
304
  });
221
- // free up references for garbage collection
222
- next = null;
223
- result = null;
305
+ clientSubscriptions.delete(id);
306
+ } catch (e) {
307
+ env.error = e;
308
+ env.hasError = true;
309
+ } finally{
310
+ const result = _ts_dispose_resources(env);
311
+ if (result) await result;
224
312
  }
225
- await iterator.return?.();
226
- respond({
227
- id,
228
- jsonrpc,
229
- result: {
230
- type: 'stopped'
231
- }
232
- });
233
- clientSubscriptions.delete(id);
234
313
  }).catch((cause)=>{
235
314
  const error = getTRPCErrorFromUnknown(cause);
236
315
  opts.onError?.({