@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
@@ -56,7 +56,7 @@ export interface SSEStreamProducerOptions<TValue = unknown> {
56
56
  */
57
57
  export declare function sseStreamProducer<TValue = unknown>(opts: SSEStreamProducerOptions<TValue>): ReadableStream<string>;
58
58
  interface ConsumerStreamResultBase<TConfig extends ConsumerConfig> {
59
- eventSource: InstanceType<TConfig['EventSource']>;
59
+ eventSource: InstanceType<TConfig['EventSource']> | null;
60
60
  }
61
61
  interface ConsumerStreamResultData<TConfig extends ConsumerConfig> extends ConsumerStreamResultBase<TConfig> {
62
62
  type: 'data';
@@ -1 +1 @@
1
- {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../../src/unstable-core-do-not-import/stream/sse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../../../src/unstable-core-do-not-import/stream/sse.ts"],"names":[],"mappings":"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"}
@@ -6,9 +6,76 @@ var isAbortError = require('../http/isAbortError.js');
6
6
  var utils = require('../utils.js');
7
7
  var tracked = require('./tracked.js');
8
8
  var asyncIterable = require('./utils/asyncIterable.js');
9
- var createReadableStream = require('./utils/createReadableStream.js');
9
+ var disposable = require('./utils/disposable.js');
10
+ var readableStreamFrom = require('./utils/readableStreamFrom.js');
11
+ var timerResource = require('./utils/timerResource.js');
10
12
  var withPing = require('./utils/withPing.js');
11
13
 
14
+ function _ts_add_disposable_resource(env, value, async) {
15
+ if (value !== null && value !== void 0) {
16
+ if (typeof value !== "object" && typeof value !== "function") throw new TypeError("Object expected.");
17
+ var dispose, inner;
18
+ if (async) {
19
+ if (!Symbol.asyncDispose) throw new TypeError("Symbol.asyncDispose is not defined.");
20
+ dispose = value[Symbol.asyncDispose];
21
+ }
22
+ if (dispose === void 0) {
23
+ if (!Symbol.dispose) throw new TypeError("Symbol.dispose is not defined.");
24
+ dispose = value[Symbol.dispose];
25
+ if (async) inner = dispose;
26
+ }
27
+ if (typeof dispose !== "function") throw new TypeError("Object not disposable.");
28
+ if (inner) dispose = function() {
29
+ try {
30
+ inner.call(this);
31
+ } catch (e) {
32
+ return Promise.reject(e);
33
+ }
34
+ };
35
+ env.stack.push({
36
+ value: value,
37
+ dispose: dispose,
38
+ async: async
39
+ });
40
+ } else if (async) {
41
+ env.stack.push({
42
+ async: true
43
+ });
44
+ }
45
+ return value;
46
+ }
47
+ function _ts_dispose_resources(env) {
48
+ var _SuppressedError = typeof SuppressedError === "function" ? SuppressedError : function(error, suppressed, message) {
49
+ var e = new Error(message);
50
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
51
+ };
52
+ return (_ts_dispose_resources = function _ts_dispose_resources(env) {
53
+ function fail(e) {
54
+ env.error = env.hasError ? new _SuppressedError(e, env.error, "An error was suppressed during disposal.") : e;
55
+ env.hasError = true;
56
+ }
57
+ var r, s = 0;
58
+ function next() {
59
+ while(r = env.stack.pop()){
60
+ try {
61
+ if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);
62
+ if (r.dispose) {
63
+ var result = r.dispose.call(r.value);
64
+ if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) {
65
+ fail(e);
66
+ return next();
67
+ });
68
+ } else s |= 1;
69
+ } catch (e) {
70
+ fail(e);
71
+ }
72
+ }
73
+ if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();
74
+ if (env.hasError) throw env.error;
75
+ }
76
+ return next();
77
+ })(env);
78
+ }
12
79
  const PING_EVENT = 'ping';
13
80
  const SERIALIZED_ERROR_EVENT = 'serialized-error';
14
81
  const CONNECTED_EVENT = 'connected';
@@ -16,21 +83,20 @@ const CONNECTED_EVENT = 'connected';
16
83
  *
17
84
  * @see https://html.spec.whatwg.org/multipage/server-sent-events.html
18
85
  */ function sseStreamProducer(opts) {
19
- const stream = createReadableStream.createReadableStream();
20
86
  const { serialize = utils.identity } = opts;
21
87
  const ping = {
22
88
  enabled: opts.ping?.enabled ?? false,
23
89
  intervalMs: opts.ping?.intervalMs ?? 1000
24
90
  };
25
91
  const client = opts.client ?? {};
26
- stream.controller.enqueue({
27
- event: CONNECTED_EVENT,
28
- data: JSON.stringify(client)
29
- });
30
92
  if (ping.enabled && client.reconnectAfterInactivityMs && ping.intervalMs > client.reconnectAfterInactivityMs) {
31
93
  throw new Error(`Ping interval must be less than client reconnect interval to prevent unnecessary reconnection - ping.intervalMs: ${ping.intervalMs} client.reconnectAfterInactivityMs: ${client.reconnectAfterInactivityMs}`);
32
94
  }
33
- utils.run(async ()=>{
95
+ async function* generator() {
96
+ yield {
97
+ event: CONNECTED_EVENT,
98
+ data: JSON.stringify(client)
99
+ };
34
100
  let iterable = opts.data;
35
101
  if (opts.emitAndEndImmediately) {
36
102
  iterable = asyncIterable.takeWithGrace(iterable, {
@@ -46,60 +112,53 @@ const CONNECTED_EVENT = 'connected';
46
112
  if (ping.enabled && ping.intervalMs !== Infinity && ping.intervalMs > 0) {
47
113
  iterable = withPing.withPing(iterable, ping.intervalMs);
48
114
  }
49
- try {
50
- // We need those declarations outside the loop for garbage collection reasons. If they were
51
- // declared inside, they would not be freed until the next value is present.
52
- let value;
53
- let chunk;
54
- for await (value of iterable){
55
- if (value === withPing.PING_SYM) {
56
- stream.controller.enqueue({
57
- event: PING_EVENT,
58
- data: ''
59
- });
60
- continue;
61
- }
62
- chunk = tracked.isTrackedEnvelope(value) ? {
63
- id: value[0],
64
- data: value[1]
65
- } : {
66
- data: value
115
+ // We need those declarations outside the loop for garbage collection reasons. If they were
116
+ // declared inside, they would not be freed until the next value is present.
117
+ let value;
118
+ let chunk;
119
+ for await (value of iterable){
120
+ if (value === withPing.PING_SYM) {
121
+ yield {
122
+ event: PING_EVENT,
123
+ data: ''
67
124
  };
68
- if ('data' in chunk) {
69
- chunk.data = JSON.stringify(serialize(chunk.data));
70
- }
71
- stream.controller.enqueue(chunk);
72
- // free up references for garbage collection
73
- value = null;
74
- chunk = null;
125
+ continue;
75
126
  }
76
- } catch (err) {
77
- if (isAbortError.isAbortError(err)) {
127
+ chunk = tracked.isTrackedEnvelope(value) ? {
128
+ id: value[0],
129
+ data: value[1]
130
+ } : {
131
+ data: value
132
+ };
133
+ chunk.data = JSON.stringify(serialize(chunk.data));
134
+ yield chunk;
135
+ // free up references for garbage collection
136
+ value = null;
137
+ chunk = null;
138
+ }
139
+ }
140
+ async function* generatorWithErrorHandling() {
141
+ try {
142
+ yield* generator();
143
+ } catch (cause) {
144
+ if (isAbortError.isAbortError(cause)) {
78
145
  // ignore abort errors, send any other errors
79
146
  return;
80
147
  }
81
148
  // `err` must be caused by `opts.data`, `JSON.stringify` or `serialize`.
82
149
  // So, a user error in any case.
83
- const error = TRPCError.getTRPCErrorFromUnknown(err);
150
+ const error = TRPCError.getTRPCErrorFromUnknown(cause);
84
151
  const data = opts.formatError?.({
85
152
  error
86
153
  }) ?? null;
87
- stream.controller.enqueue({
154
+ yield {
88
155
  event: SERIALIZED_ERROR_EVENT,
89
156
  data: JSON.stringify(serialize(data))
90
- });
91
- } finally{
92
- try {
93
- stream.controller.close();
94
- } catch {
95
- // ignore
96
- }
157
+ };
97
158
  }
98
- }).catch((err)=>{
99
- // should not be reached; just in case...
100
- stream.controller.error(err);
101
- });
102
- return stream.readable.pipeThrough(new TransformStream({
159
+ }
160
+ const stream = readableStreamFrom.readableStreamFrom(generatorWithErrorHandling());
161
+ return stream.pipeThrough(new TransformStream({
103
162
  transform (chunk, controller) {
104
163
  if ('event' in chunk) {
105
164
  controller.enqueue(`event: ${chunk.event}\n`);
@@ -118,26 +177,28 @@ const CONNECTED_EVENT = 'connected';
118
177
  }));
119
178
  }
120
179
  async function withTimeout(opts) {
121
- let timeoutId;
122
- const timeoutPromise = new Promise((resolve)=>{
123
- timeoutId = setTimeout(()=>{
124
- resolve(null);
125
- }, opts.timeoutMs);
126
- });
127
- let res;
180
+ const env = {
181
+ stack: [],
182
+ error: void 0,
183
+ hasError: false
184
+ };
128
185
  try {
129
- res = await unpromise.Unpromise.race([
186
+ const timeoutPromise = _ts_add_disposable_resource(env, timerResource.timerResource(opts.timeoutMs), false);
187
+ ;
188
+ const res = await unpromise.Unpromise.race([
130
189
  opts.promise,
131
- timeoutPromise
190
+ timeoutPromise.start()
132
191
  ]);
192
+ if (res === timerResource.disposablePromiseTimerResult) {
193
+ return await opts.onTimeout();
194
+ }
195
+ return res;
196
+ } catch (e) {
197
+ env.error = e;
198
+ env.hasError = true;
133
199
  } finally{
134
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
135
- clearTimeout(timeoutId);
200
+ _ts_dispose_resources(env);
136
201
  }
137
- if (res === null) {
138
- return await opts.onTimeout();
139
- }
140
- return res;
141
202
  }
142
203
  /**
143
204
  * @see https://html.spec.whatwg.org/multipage/server-sent-events.html
@@ -222,69 +283,69 @@ async function withTimeout(opts) {
222
283
  _es?.close();
223
284
  }
224
285
  });
225
- const getNewStreamAndReader = ()=>{
226
- const stream = createStream();
227
- const reader = stream.getReader();
228
- return {
229
- reader,
230
- cancel: ()=>{
231
- reader.releaseLock();
232
- return stream.cancel();
286
+ const getStreamResource = ()=>{
287
+ let stream = createStream();
288
+ let reader = stream.getReader();
289
+ async function dispose() {
290
+ await reader.cancel();
291
+ _es = null;
292
+ }
293
+ return disposable.makeAsyncResource({
294
+ read () {
295
+ return reader.read();
296
+ },
297
+ async recreate () {
298
+ await dispose();
299
+ stream = createStream();
300
+ reader = stream.getReader();
233
301
  }
234
- };
302
+ }, dispose);
235
303
  };
236
- return {
237
- [Symbol.asyncIterator] () {
238
- let stream = getNewStreamAndReader();
239
- const iterator = {
240
- async next () {
241
- let promise = stream.reader.read();
242
- const timeoutMs = clientOptions.reconnectAfterInactivityMs;
243
- if (timeoutMs) {
244
- promise = withTimeout({
245
- promise,
246
- timeoutMs,
247
- onTimeout: async ()=>{
248
- // Close and release old reader
249
- await stream.cancel();
250
- // Create new reader
251
- stream = getNewStreamAndReader();
252
- return {
253
- value: {
254
- type: 'timeout',
255
- ms: timeoutMs,
256
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
257
- eventSource: _es
258
- },
259
- done: false
260
- };
261
- }
262
- });
263
- }
264
- const result = await promise;
265
- // console.debug('result', result, 'done', result.done);
266
- if (result.done) {
267
- return {
268
- value: result.value,
269
- done: true
270
- };
271
- }
272
- return {
273
- value: result.value,
274
- done: false
275
- };
276
- },
277
- async return () {
278
- await stream.cancel();
279
- return {
280
- value: undefined,
281
- done: true
282
- };
304
+ return utils.run(async function*() {
305
+ const env = {
306
+ stack: [],
307
+ error: void 0,
308
+ hasError: false
309
+ };
310
+ try {
311
+ const stream = _ts_add_disposable_resource(env, getStreamResource(), true);
312
+ ;
313
+ while(true){
314
+ let promise = stream.read();
315
+ const timeoutMs = clientOptions.reconnectAfterInactivityMs;
316
+ if (timeoutMs) {
317
+ promise = withTimeout({
318
+ promise,
319
+ timeoutMs,
320
+ onTimeout: async ()=>{
321
+ const res = {
322
+ value: {
323
+ type: 'timeout',
324
+ ms: timeoutMs,
325
+ eventSource: _es
326
+ },
327
+ done: false
328
+ };
329
+ // Close and release old reader
330
+ await stream.recreate();
331
+ return res;
332
+ }
333
+ });
283
334
  }
284
- };
285
- return iterator;
335
+ const result = await promise;
336
+ if (result.done) {
337
+ return result.value;
338
+ }
339
+ yield result.value;
340
+ }
341
+ } catch (e) {
342
+ env.error = e;
343
+ env.hasError = true;
344
+ } finally{
345
+ const result = _ts_dispose_resources(env);
346
+ if (result) await result;
286
347
  }
287
- };
348
+ });
288
349
  }
289
350
  const sseHeaders = {
290
351
  'Content-Type': 'text/event-stream',