@trpc/server 11.0.0-rc.630 → 11.0.0-rc.632
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.
- package/dist/@trpc/server/http.d.ts +1 -1
- package/dist/@trpc/server/http.d.ts.map +1 -1
- package/dist/adapters/aws-lambda/index.js +1 -0
- package/dist/adapters/aws-lambda/index.mjs +1 -0
- package/dist/adapters/express.js +1 -0
- package/dist/adapters/express.mjs +1 -0
- package/dist/adapters/fastify/fastifyRequestHandler.js +2 -1
- package/dist/adapters/fastify/fastifyRequestHandler.mjs +2 -1
- package/dist/adapters/fetch/fetchRequestHandler.js +1 -0
- package/dist/adapters/fetch/fetchRequestHandler.mjs +1 -0
- package/dist/adapters/next-app-dir/nextAppDirCaller.js +1 -0
- package/dist/adapters/next-app-dir/nextAppDirCaller.mjs +1 -0
- package/dist/adapters/next-app-dir/notFound.js +1 -0
- package/dist/adapters/next-app-dir/notFound.mjs +1 -0
- package/dist/adapters/next-app-dir/redirect.js +1 -0
- package/dist/adapters/next-app-dir/redirect.mjs +1 -0
- package/dist/adapters/next.js +1 -0
- package/dist/adapters/next.mjs +1 -0
- package/dist/adapters/node-http/incomingMessageToRequest.d.ts +1 -1
- package/dist/adapters/node-http/incomingMessageToRequest.d.ts.map +1 -1
- package/dist/adapters/node-http/incomingMessageToRequest.js +7 -5
- package/dist/adapters/node-http/incomingMessageToRequest.mjs +7 -5
- package/dist/adapters/node-http/nodeHTTPRequestHandler.d.ts.map +1 -1
- package/dist/adapters/node-http/nodeHTTPRequestHandler.js +9 -42
- package/dist/adapters/node-http/nodeHTTPRequestHandler.mjs +9 -42
- package/dist/adapters/node-http/writeResponse.d.ts +18 -0
- package/dist/adapters/node-http/writeResponse.d.ts.map +1 -0
- package/dist/adapters/node-http/writeResponse.js +85 -0
- package/dist/adapters/node-http/writeResponse.mjs +82 -0
- package/dist/adapters/standalone.js +1 -0
- package/dist/adapters/standalone.mjs +1 -0
- package/dist/adapters/ws.js +2 -1
- package/dist/adapters/ws.mjs +2 -1
- package/dist/bundle-analysis.json +146 -119
- package/dist/http.js +1 -2
- package/dist/http.mjs +1 -1
- package/dist/index.js +2 -1
- package/dist/index.mjs +2 -1
- package/dist/rpc.js +1 -0
- package/dist/rpc.mjs +1 -0
- package/dist/shared.js +1 -0
- package/dist/shared.mjs +1 -0
- package/dist/unstable-core-do-not-import/http/isAbortError.d.ts +4 -0
- package/dist/unstable-core-do-not-import/http/isAbortError.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/http/isAbortError.js +9 -0
- package/dist/unstable-core-do-not-import/http/isAbortError.mjs +7 -0
- package/dist/unstable-core-do-not-import/stream/jsonl.d.ts +6 -9
- package/dist/unstable-core-do-not-import/stream/jsonl.d.ts.map +1 -1
- package/dist/unstable-core-do-not-import/stream/jsonl.js +75 -124
- package/dist/unstable-core-do-not-import/stream/jsonl.mjs +76 -125
- package/dist/unstable-core-do-not-import/stream/sse.d.ts.map +1 -1
- package/dist/unstable-core-do-not-import/stream/sse.js +25 -21
- package/dist/unstable-core-do-not-import/stream/sse.mjs +26 -22
- package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.d.ts +10 -10
- package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.d.ts.map +1 -1
- package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.js +47 -34
- package/dist/unstable-core-do-not-import/stream/utils/asyncIterable.mjs +47 -34
- package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.d.ts +0 -4
- package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.d.ts.map +1 -1
- package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.js +0 -11
- package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.mjs +1 -11
- package/dist/unstable-core-do-not-import/stream/utils/disposablePromiseTimer.d.ts +6 -0
- package/dist/unstable-core-do-not-import/stream/utils/disposablePromiseTimer.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/stream/utils/disposablePromiseTimer.js +28 -0
- package/dist/unstable-core-do-not-import/stream/utils/disposablePromiseTimer.mjs +25 -0
- package/dist/unstable-core-do-not-import/stream/utils/withPing.d.ts.map +1 -1
- package/dist/unstable-core-do-not-import/stream/utils/withPing.js +17 -17
- package/dist/unstable-core-do-not-import/stream/utils/withPing.mjs +17 -17
- package/dist/unstable-core-do-not-import/stream/utils/withRefCount.d.ts +17 -0
- package/dist/unstable-core-do-not-import/stream/utils/withRefCount.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/stream/utils/withRefCount.js +59 -0
- package/dist/unstable-core-do-not-import/stream/utils/withRefCount.mjs +57 -0
- package/dist/unstable-core-do-not-import.d.ts +2 -2
- package/dist/unstable-core-do-not-import.d.ts.map +1 -1
- package/dist/unstable-core-do-not-import.js +2 -2
- package/dist/unstable-core-do-not-import.mjs +1 -1
- package/package.json +3 -3
- package/src/@trpc/server/http.ts +0 -1
- package/src/adapters/fastify/fastifyRequestHandler.ts +1 -1
- package/src/adapters/node-http/incomingMessageToRequest.ts +8 -4
- package/src/adapters/node-http/nodeHTTPRequestHandler.ts +8 -46
- package/src/adapters/node-http/writeResponse.ts +96 -0
- package/src/unstable-core-do-not-import/http/isAbortError.ts +7 -0
- package/src/unstable-core-do-not-import/stream/jsonl.ts +85 -154
- package/src/unstable-core-do-not-import/stream/sse.ts +24 -25
- package/src/unstable-core-do-not-import/stream/utils/asyncIterable.ts +58 -37
- package/src/unstable-core-do-not-import/stream/utils/createReadableStream.ts +0 -13
- package/src/unstable-core-do-not-import/stream/utils/disposablePromiseTimer.ts +27 -0
- package/src/unstable-core-do-not-import/stream/utils/withPing.ts +31 -19
- package/src/unstable-core-do-not-import/stream/utils/withRefCount.ts +93 -0
- package/src/unstable-core-do-not-import.ts +2 -2
- package/dist/unstable-core-do-not-import/http/batchStreamFormatter.d.ts +0 -24
- package/dist/unstable-core-do-not-import/http/batchStreamFormatter.d.ts.map +0 -1
- package/dist/unstable-core-do-not-import/http/batchStreamFormatter.js +0 -32
- package/dist/unstable-core-do-not-import/http/batchStreamFormatter.mjs +0 -30
- package/dist/unstable-core-do-not-import/stream/utils/promiseTimer.d.ts +0 -8
- package/dist/unstable-core-do-not-import/stream/utils/promiseTimer.d.ts.map +0 -1
- package/dist/unstable-core-do-not-import/stream/utils/promiseTimer.js +0 -38
- package/dist/unstable-core-do-not-import/stream/utils/promiseTimer.mjs +0 -36
- package/src/unstable-core-do-not-import/http/batchStreamFormatter.ts +0 -29
- package/src/unstable-core-do-not-import/stream/utils/promiseTimer.ts +0 -40
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var _define_property = require('../../node_modules/.pnpm/@swc_helpers@0.5.13/node_modules/@swc/helpers/esm/_define_property.js');
|
|
4
|
-
var unpromise = require('../../vendor/unpromise/unpromise.js');
|
|
5
|
-
var TRPCError = require('../error/TRPCError.js');
|
|
6
4
|
var utils = require('../utils.js');
|
|
7
5
|
var createDeferred = require('./utils/createDeferred.js');
|
|
8
6
|
var createReadableStream = require('./utils/createReadableStream.js');
|
|
7
|
+
var withRefCount = require('./utils/withRefCount.js');
|
|
9
8
|
|
|
10
9
|
// ---------- types
|
|
11
10
|
const CHUNK_VALUE_TYPE_PROMISE = 0;
|
|
@@ -28,41 +27,43 @@ function createBatchStreamProducer(opts) {
|
|
|
28
27
|
let counter = 0;
|
|
29
28
|
const placeholder = 0;
|
|
30
29
|
const stream = createReadableStream.createReadableStream();
|
|
31
|
-
const pending = new Set()
|
|
32
|
-
|
|
33
|
-
if (pending.size === 0 && !stream.cancelled()) {
|
|
30
|
+
const pending = withRefCount.withRefCount(new Set(), ()=>{
|
|
31
|
+
if (!stream.cancelled()) {
|
|
34
32
|
stream.controller.close();
|
|
35
33
|
}
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
});
|
|
35
|
+
const maybeEnqueue = (chunk)=>{
|
|
36
|
+
if (!stream.cancelled()) {
|
|
37
|
+
stream.controller.enqueue(chunk);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
function encodePromise(promise, path) {
|
|
39
41
|
const error = checkMaxDepth(path);
|
|
40
42
|
if (error) {
|
|
41
|
-
promise
|
|
42
|
-
|
|
43
|
+
// Catch any errors from the original promise to ensure they're reported
|
|
44
|
+
promise.catch((cause)=>{
|
|
45
|
+
opts.onError?.({
|
|
46
|
+
error: cause,
|
|
47
|
+
path
|
|
48
|
+
});
|
|
43
49
|
});
|
|
50
|
+
// Replace the promise with a rejected one containing the max depth error
|
|
44
51
|
promise = Promise.reject(error);
|
|
45
52
|
}
|
|
46
53
|
const idx = counter++;
|
|
47
54
|
pending.add(idx);
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
stream.cancelledPromise
|
|
51
|
-
]).then((it)=>{
|
|
52
|
-
if (createReadableStream.isCancelledStreamResult(it)) {
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
stream.controller.enqueue([
|
|
55
|
+
promise.then((it)=>{
|
|
56
|
+
maybeEnqueue([
|
|
56
57
|
idx,
|
|
57
58
|
PROMISE_STATUS_FULFILLED,
|
|
58
|
-
|
|
59
|
+
encode(it, path)
|
|
59
60
|
]);
|
|
60
61
|
}).catch((cause)=>{
|
|
61
62
|
opts.onError?.({
|
|
62
63
|
error: cause,
|
|
63
64
|
path
|
|
64
65
|
});
|
|
65
|
-
|
|
66
|
+
maybeEnqueue([
|
|
66
67
|
idx,
|
|
67
68
|
PROMISE_STATUS_REJECTED,
|
|
68
69
|
opts.formatError?.({
|
|
@@ -72,73 +73,53 @@ function createBatchStreamProducer(opts) {
|
|
|
72
73
|
]);
|
|
73
74
|
}).finally(()=>{
|
|
74
75
|
pending.delete(idx);
|
|
75
|
-
maybeClose();
|
|
76
76
|
});
|
|
77
77
|
return idx;
|
|
78
78
|
}
|
|
79
|
-
function
|
|
80
|
-
const error = checkMaxDepth(path);
|
|
81
|
-
if (error) {
|
|
82
|
-
iterable = {
|
|
83
|
-
[Symbol.asyncIterator] () {
|
|
84
|
-
throw error;
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
}
|
|
79
|
+
function encodeAsyncIterable(iterable, path) {
|
|
88
80
|
const idx = counter++;
|
|
89
81
|
pending.add(idx);
|
|
90
82
|
utils.run(async ()=>{
|
|
83
|
+
const error = checkMaxDepth(path);
|
|
84
|
+
if (error) {
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
91
87
|
const iterator = iterable[Symbol.asyncIterator]();
|
|
92
88
|
while(true){
|
|
93
|
-
|
|
94
|
-
iterator.
|
|
95
|
-
|
|
96
|
-
]);
|
|
97
|
-
if (next instanceof Error) {
|
|
98
|
-
opts.onError?.({
|
|
99
|
-
error: next,
|
|
100
|
-
path
|
|
101
|
-
});
|
|
102
|
-
stream.controller.enqueue([
|
|
103
|
-
idx,
|
|
104
|
-
ASYNC_ITERABLE_STATUS_ERROR,
|
|
105
|
-
opts.formatError?.({
|
|
106
|
-
error: next,
|
|
107
|
-
path
|
|
108
|
-
})
|
|
109
|
-
]);
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
if (createReadableStream.isCancelledStreamResult(next)) {
|
|
113
|
-
await iterator.return?.();
|
|
114
|
-
break;
|
|
89
|
+
if (stream.cancelled()) {
|
|
90
|
+
const res = await iterator.return?.();
|
|
91
|
+
return res?.value;
|
|
115
92
|
}
|
|
93
|
+
const next = await iterator.next();
|
|
116
94
|
if (next.done) {
|
|
117
|
-
|
|
95
|
+
maybeEnqueue([
|
|
118
96
|
idx,
|
|
119
97
|
ASYNC_ITERABLE_STATUS_RETURN,
|
|
120
|
-
|
|
98
|
+
encode(next.value, path)
|
|
121
99
|
]);
|
|
122
100
|
break;
|
|
123
101
|
}
|
|
124
|
-
|
|
102
|
+
maybeEnqueue([
|
|
125
103
|
idx,
|
|
126
104
|
ASYNC_ITERABLE_STATUS_VALUE,
|
|
127
|
-
|
|
105
|
+
encode(next.value, path)
|
|
128
106
|
]);
|
|
129
107
|
}
|
|
130
|
-
pending.delete(idx);
|
|
131
|
-
maybeClose();
|
|
132
108
|
}).catch((cause)=>{
|
|
133
|
-
// this shouldn't happen, but node crashes if we don't catch it
|
|
134
109
|
opts.onError?.({
|
|
135
|
-
error:
|
|
136
|
-
// @ts-ignore https://github.com/tc39/proposal-error-cause
|
|
137
|
-
{
|
|
138
|
-
cause
|
|
139
|
-
}),
|
|
110
|
+
error: cause,
|
|
140
111
|
path
|
|
141
112
|
});
|
|
113
|
+
maybeEnqueue([
|
|
114
|
+
idx,
|
|
115
|
+
ASYNC_ITERABLE_STATUS_ERROR,
|
|
116
|
+
opts.formatError?.({
|
|
117
|
+
error: cause,
|
|
118
|
+
path
|
|
119
|
+
})
|
|
120
|
+
]);
|
|
121
|
+
}).finally(()=>{
|
|
122
|
+
pending.delete(idx);
|
|
142
123
|
});
|
|
143
124
|
return idx;
|
|
144
125
|
}
|
|
@@ -148,11 +129,11 @@ function createBatchStreamProducer(opts) {
|
|
|
148
129
|
}
|
|
149
130
|
return null;
|
|
150
131
|
}
|
|
151
|
-
function
|
|
132
|
+
function encodeAsync(value, path) {
|
|
152
133
|
if (isPromise(value)) {
|
|
153
134
|
return [
|
|
154
135
|
CHUNK_VALUE_TYPE_PROMISE,
|
|
155
|
-
|
|
136
|
+
encodePromise(value, path)
|
|
156
137
|
];
|
|
157
138
|
}
|
|
158
139
|
if (utils.isAsyncIterable(value)) {
|
|
@@ -161,12 +142,12 @@ function createBatchStreamProducer(opts) {
|
|
|
161
142
|
}
|
|
162
143
|
return [
|
|
163
144
|
CHUNK_VALUE_TYPE_ASYNC_ITERABLE,
|
|
164
|
-
|
|
145
|
+
encodeAsyncIterable(value, path)
|
|
165
146
|
];
|
|
166
147
|
}
|
|
167
148
|
return null;
|
|
168
149
|
}
|
|
169
|
-
function
|
|
150
|
+
function encode(value, path) {
|
|
170
151
|
if (value === undefined) {
|
|
171
152
|
return [
|
|
172
153
|
[]
|
|
@@ -179,7 +160,7 @@ function createBatchStreamProducer(opts) {
|
|
|
179
160
|
]
|
|
180
161
|
];
|
|
181
162
|
}
|
|
182
|
-
const reg =
|
|
163
|
+
const reg = encodeAsync(value, path);
|
|
183
164
|
if (reg) {
|
|
184
165
|
return [
|
|
185
166
|
[
|
|
@@ -194,7 +175,7 @@ function createBatchStreamProducer(opts) {
|
|
|
194
175
|
const newObj = {};
|
|
195
176
|
const asyncValues = [];
|
|
196
177
|
for (const [key, item] of Object.entries(value)){
|
|
197
|
-
const transformed =
|
|
178
|
+
const transformed = encodeAsync(item, [
|
|
198
179
|
...path,
|
|
199
180
|
key
|
|
200
181
|
]);
|
|
@@ -217,10 +198,11 @@ function createBatchStreamProducer(opts) {
|
|
|
217
198
|
}
|
|
218
199
|
const newHead = {};
|
|
219
200
|
for (const [key, item] of Object.entries(data)){
|
|
220
|
-
newHead[key] =
|
|
201
|
+
newHead[key] = encode(item, [
|
|
221
202
|
key
|
|
222
203
|
]);
|
|
223
204
|
}
|
|
205
|
+
pending.activate();
|
|
224
206
|
return [
|
|
225
207
|
newHead,
|
|
226
208
|
stream.readable
|
|
@@ -336,34 +318,19 @@ function createConsumerStream(from) {
|
|
|
336
318
|
}));
|
|
337
319
|
}
|
|
338
320
|
let headDeferred = createDeferred.createDeferred();
|
|
339
|
-
const
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
// nothing is listening to the stream anymore
|
|
344
|
-
opts.abortController?.abort();
|
|
345
|
-
}
|
|
346
|
-
};
|
|
347
|
-
function hydrateChunkDefinition(value) {
|
|
321
|
+
const controllers = withRefCount.withRefCount(new Map(), ()=>{
|
|
322
|
+
opts.abortController?.abort();
|
|
323
|
+
});
|
|
324
|
+
function decodeChunkDefinition(value) {
|
|
348
325
|
const [_path, type, chunkId] = value;
|
|
349
|
-
const
|
|
350
|
-
|
|
351
|
-
controller,
|
|
352
|
-
returned: false
|
|
353
|
-
};
|
|
354
|
-
controllers.set(chunkId, wrapper);
|
|
355
|
-
// resolve chunk deferred if it exists
|
|
356
|
-
const deferred = chunkDeferred.get(chunkId);
|
|
357
|
-
if (deferred) {
|
|
358
|
-
deferred.resolve(wrapper);
|
|
359
|
-
chunkDeferred.delete(chunkId);
|
|
360
|
-
}
|
|
326
|
+
const stream = createReadableStream.createReadableStream();
|
|
327
|
+
controllers.set(chunkId, stream.controller);
|
|
361
328
|
switch(type){
|
|
362
329
|
case CHUNK_VALUE_TYPE_PROMISE:
|
|
363
330
|
{
|
|
364
331
|
return new Promise((resolve, reject)=>{
|
|
365
332
|
// listen for next value in the stream
|
|
366
|
-
const reader = readable.getReader();
|
|
333
|
+
const reader = stream.readable.getReader();
|
|
367
334
|
reader.read().then((it)=>{
|
|
368
335
|
if (it.done) {
|
|
369
336
|
reject(new Error('Promise chunk ended without value'));
|
|
@@ -377,7 +344,7 @@ function createConsumerStream(from) {
|
|
|
377
344
|
const [_chunkId, status, data] = value;
|
|
378
345
|
switch(status){
|
|
379
346
|
case PROMISE_STATUS_FULFILLED:
|
|
380
|
-
resolve(
|
|
347
|
+
resolve(decode(data));
|
|
381
348
|
break;
|
|
382
349
|
case PROMISE_STATUS_REJECTED:
|
|
383
350
|
reject(opts.formatError?.({
|
|
@@ -386,9 +353,7 @@ function createConsumerStream(from) {
|
|
|
386
353
|
break;
|
|
387
354
|
}
|
|
388
355
|
}).catch(reject).finally(()=>{
|
|
389
|
-
// reader.releaseLock();
|
|
390
356
|
controllers.delete(chunkId);
|
|
391
|
-
maybeAbort();
|
|
392
357
|
});
|
|
393
358
|
});
|
|
394
359
|
}
|
|
@@ -396,7 +361,7 @@ function createConsumerStream(from) {
|
|
|
396
361
|
{
|
|
397
362
|
return {
|
|
398
363
|
[Symbol.asyncIterator]: ()=>{
|
|
399
|
-
const reader = readable.getReader();
|
|
364
|
+
const reader = stream.readable.getReader();
|
|
400
365
|
const iterator = {
|
|
401
366
|
next: async ()=>{
|
|
402
367
|
const { done, value } = await reader.read();
|
|
@@ -405,7 +370,6 @@ function createConsumerStream(from) {
|
|
|
405
370
|
}
|
|
406
371
|
if (done) {
|
|
407
372
|
controllers.delete(chunkId);
|
|
408
|
-
maybeAbort();
|
|
409
373
|
return {
|
|
410
374
|
done: true,
|
|
411
375
|
value: undefined
|
|
@@ -416,26 +380,23 @@ function createConsumerStream(from) {
|
|
|
416
380
|
case ASYNC_ITERABLE_STATUS_VALUE:
|
|
417
381
|
return {
|
|
418
382
|
done: false,
|
|
419
|
-
value:
|
|
383
|
+
value: decode(data)
|
|
420
384
|
};
|
|
421
385
|
case ASYNC_ITERABLE_STATUS_RETURN:
|
|
422
386
|
controllers.delete(chunkId);
|
|
423
|
-
maybeAbort();
|
|
424
387
|
return {
|
|
425
388
|
done: true,
|
|
426
|
-
value:
|
|
389
|
+
value: decode(data)
|
|
427
390
|
};
|
|
428
391
|
case ASYNC_ITERABLE_STATUS_ERROR:
|
|
429
392
|
controllers.delete(chunkId);
|
|
430
|
-
maybeAbort();
|
|
431
393
|
throw opts.formatError?.({
|
|
432
394
|
error: data
|
|
433
395
|
}) ?? new AsyncError(data);
|
|
434
396
|
}
|
|
435
397
|
},
|
|
436
398
|
return: async ()=>{
|
|
437
|
-
|
|
438
|
-
maybeAbort();
|
|
399
|
+
controllers.delete(chunkId);
|
|
439
400
|
return {
|
|
440
401
|
done: true,
|
|
441
402
|
value: undefined
|
|
@@ -448,26 +409,22 @@ function createConsumerStream(from) {
|
|
|
448
409
|
}
|
|
449
410
|
}
|
|
450
411
|
}
|
|
451
|
-
function
|
|
412
|
+
function decode(value) {
|
|
452
413
|
const [[data], ...asyncProps] = value;
|
|
453
414
|
for (const value of asyncProps){
|
|
454
415
|
const [key] = value;
|
|
455
|
-
const
|
|
416
|
+
const decoded = decodeChunkDefinition(value);
|
|
456
417
|
if (key === null) {
|
|
457
|
-
return
|
|
418
|
+
return decoded;
|
|
458
419
|
}
|
|
459
|
-
data[key] =
|
|
420
|
+
data[key] = decoded;
|
|
460
421
|
}
|
|
461
422
|
return data;
|
|
462
423
|
}
|
|
463
424
|
const closeOrAbort = (reason)=>{
|
|
464
425
|
const error = new StreamInterruptedError(reason);
|
|
465
426
|
headDeferred?.reject(error);
|
|
466
|
-
for (const
|
|
467
|
-
deferred.reject(error);
|
|
468
|
-
}
|
|
469
|
-
chunkDeferred.clear();
|
|
470
|
-
for (const { controller } of controllers.values()){
|
|
427
|
+
for (const controller of controllers.values()){
|
|
471
428
|
controller.enqueue(error);
|
|
472
429
|
controller.close();
|
|
473
430
|
}
|
|
@@ -478,25 +435,19 @@ function createConsumerStream(from) {
|
|
|
478
435
|
if (headDeferred) {
|
|
479
436
|
const head = chunkOrHead;
|
|
480
437
|
for (const [key, value] of Object.entries(chunkOrHead)){
|
|
481
|
-
const parsed =
|
|
438
|
+
const parsed = decode(value);
|
|
482
439
|
head[key] = parsed;
|
|
483
440
|
}
|
|
484
441
|
headDeferred.resolve(head);
|
|
485
442
|
headDeferred = null;
|
|
443
|
+
controllers.activate();
|
|
486
444
|
return;
|
|
487
445
|
}
|
|
488
446
|
const chunk = chunkOrHead;
|
|
489
447
|
const [idx] = chunk;
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
if (!deferred) {
|
|
494
|
-
deferred = createDeferred.createDeferred();
|
|
495
|
-
chunkDeferred.set(idx, deferred);
|
|
496
|
-
}
|
|
497
|
-
wrapper = await deferred.promise;
|
|
498
|
-
}
|
|
499
|
-
wrapper.controller.enqueue(chunk);
|
|
448
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
449
|
+
const controller = controllers.get(idx);
|
|
450
|
+
controller.enqueue(chunk);
|
|
500
451
|
},
|
|
501
452
|
close: closeOrAbort,
|
|
502
453
|
abort: closeOrAbort
|