@trpc/server 11.0.0-rc.643 → 11.0.0-rc.648

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 (107) 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.d.ts.map +1 -1
  22. package/dist/adapters/node-http/writeResponse.js +3 -1
  23. package/dist/adapters/node-http/writeResponse.mjs +3 -1
  24. package/dist/adapters/standalone.js +1 -1
  25. package/dist/adapters/standalone.mjs +1 -1
  26. package/dist/adapters/ws.d.ts.map +1 -1
  27. package/dist/adapters/ws.js +145 -66
  28. package/dist/adapters/ws.mjs +145 -66
  29. package/dist/bundle-analysis.json +194 -201
  30. package/dist/http.js +1 -1
  31. package/dist/http.mjs +1 -1
  32. package/dist/index.js +1 -1
  33. package/dist/index.mjs +1 -1
  34. package/dist/node_modules/.pnpm/@rollup_plugin-typescript@12.1.1_rollup@4.27.4_tslib@2.8.1_typescript@5.6.2/node_modules/tslib/tslib.es6.js +73 -0
  35. package/dist/observable/observable.d.ts +1 -1
  36. package/dist/observable/observable.d.ts.map +1 -1
  37. package/dist/observable/observable.js +16 -4
  38. package/dist/observable/observable.mjs +16 -4
  39. package/dist/rpc.js +1 -1
  40. package/dist/rpc.mjs +1 -1
  41. package/dist/shared.js +1 -1
  42. package/dist/shared.mjs +1 -1
  43. package/dist/unstable-core-do-not-import/error/TRPCError.d.ts +1 -1
  44. package/dist/unstable-core-do-not-import/error/TRPCError.js +14 -2
  45. package/dist/unstable-core-do-not-import/error/TRPCError.mjs +13 -1
  46. package/dist/unstable-core-do-not-import/http/resolveResponse.d.ts.map +1 -1
  47. package/dist/unstable-core-do-not-import/http/resolveResponse.js +7 -18
  48. package/dist/unstable-core-do-not-import/http/resolveResponse.mjs +8 -19
  49. package/dist/unstable-core-do-not-import/stream/jsonl.d.ts +15 -4
  50. package/dist/unstable-core-do-not-import/stream/jsonl.d.ts.map +1 -1
  51. package/dist/unstable-core-do-not-import/stream/jsonl.js +430 -291
  52. package/dist/unstable-core-do-not-import/stream/jsonl.mjs +428 -289
  53. package/dist/unstable-core-do-not-import/stream/sse.d.ts +1 -1
  54. package/dist/unstable-core-do-not-import/stream/sse.d.ts.map +1 -1
  55. package/dist/unstable-core-do-not-import/stream/sse.js +183 -122
  56. package/dist/unstable-core-do-not-import/stream/sse.mjs +183 -122
  57. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.d.ts +1 -0
  58. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.d.ts.map +1 -1
  59. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.js +103 -10
  60. package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.mjs +104 -12
  61. package/dist/unstable-core-do-not-import/stream/utils/disposable.d.ts +17 -0
  62. package/dist/unstable-core-do-not-import/stream/utils/disposable.d.ts.map +1 -0
  63. package/dist/unstable-core-do-not-import/stream/utils/disposable.js +44 -0
  64. package/dist/unstable-core-do-not-import/stream/utils/disposable.mjs +41 -0
  65. package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.d.ts +8 -0
  66. package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.d.ts.map +1 -0
  67. package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.js +25 -0
  68. package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.mjs +23 -0
  69. package/dist/unstable-core-do-not-import/stream/utils/timerResource.d.ts +1 -2
  70. package/dist/unstable-core-do-not-import/stream/utils/timerResource.d.ts.map +1 -1
  71. package/dist/unstable-core-do-not-import/stream/utils/timerResource.js +8 -10
  72. package/dist/unstable-core-do-not-import/stream/utils/timerResource.mjs +8 -10
  73. package/dist/unstable-core-do-not-import/stream/utils/withPing.d.ts.map +1 -1
  74. package/dist/unstable-core-do-not-import/stream/utils/withPing.js +113 -24
  75. package/dist/unstable-core-do-not-import/stream/utils/withPing.mjs +114 -25
  76. package/dist/unstable-core-do-not-import/transformer.d.ts +1 -1
  77. package/dist/unstable-core-do-not-import.d.ts +1 -0
  78. package/dist/unstable-core-do-not-import.d.ts.map +1 -1
  79. package/dist/unstable-core-do-not-import.js +3 -0
  80. package/dist/unstable-core-do-not-import.mjs +1 -0
  81. package/dist/vendor/unpromise/unpromise.js +17 -6
  82. package/dist/vendor/unpromise/unpromise.mjs +13 -2
  83. package/package.json +2 -3
  84. package/src/adapters/node-http/writeResponse.ts +3 -0
  85. package/src/adapters/ws.ts +8 -9
  86. package/src/observable/observable.ts +17 -2
  87. package/src/unstable-core-do-not-import/http/resolveResponse.ts +8 -21
  88. package/src/unstable-core-do-not-import/stream/jsonl.ts +236 -216
  89. package/src/unstable-core-do-not-import/stream/sse.ts +112 -132
  90. package/src/unstable-core-do-not-import/stream/utils/asyncIterable.ts +50 -48
  91. package/src/unstable-core-do-not-import/stream/utils/disposable.ts +52 -0
  92. package/src/unstable-core-do-not-import/stream/utils/readableStreamFrom.ts +28 -0
  93. package/src/unstable-core-do-not-import/stream/utils/timerResource.ts +17 -15
  94. package/src/unstable-core-do-not-import/stream/utils/withPing.ts +18 -19
  95. package/src/unstable-core-do-not-import.ts +1 -0
  96. package/dist/node_modules/.pnpm/@swc_helpers@0.5.13/node_modules/@swc/helpers/esm/_define_property.js +0 -11
  97. package/dist/node_modules/.pnpm/@swc_helpers@0.5.13/node_modules/@swc/helpers/esm/_define_property.mjs +0 -9
  98. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.d.ts +0 -9
  99. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.d.ts.map +0 -1
  100. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.js +0 -25
  101. package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.mjs +0 -23
  102. package/dist/unstable-core-do-not-import/stream/utils/withRefCount.d.ts +0 -17
  103. package/dist/unstable-core-do-not-import/stream/utils/withRefCount.d.ts.map +0 -1
  104. package/dist/unstable-core-do-not-import/stream/utils/withRefCount.js +0 -59
  105. package/dist/unstable-core-do-not-import/stream/utils/withRefCount.mjs +0 -57
  106. package/src/unstable-core-do-not-import/stream/utils/createReadableStream.ts +0 -25
  107. package/src/unstable-core-do-not-import/stream/utils/withRefCount.ts +0 -93
@@ -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
@@ -155,82 +221,95 @@ function getWSConnectionHandler(opts) {
155
221
  code: 'BAD_REQUEST'
156
222
  });
157
223
  }
158
- const iterable = isObservable(result) ? observableToAsyncIterable(result) : result;
159
- const iterator = iterable[Symbol.asyncIterator]();
160
- const abortPromise = new Promise((resolve)=>{
161
- abortController.signal.onabort = ()=>resolve('abort');
162
- });
224
+ const iterable = isObservable(result) ? observableToAsyncIterable(result, abortController.signal) : result;
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?.({