@trpc/server 11.0.0-alpha-tmp-issues-5851-take-two.452 → 11.0.0-alpha-tmp-issues-5851-take-two.457
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/bundle-analysis.json +24 -24
- package/dist/unstable-core-do-not-import/stream/jsonl.d.ts +2 -1
- package/dist/unstable-core-do-not-import/stream/jsonl.d.ts.map +1 -1
- package/dist/unstable-core-do-not-import/stream/jsonl.js +14 -7
- package/dist/unstable-core-do-not-import/stream/jsonl.mjs +14 -7
- package/package.json +2 -2
- package/src/unstable-core-do-not-import/stream/jsonl.ts +20 -12
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
|
-
"bundleSize":
|
|
3
|
-
"bundleOrigSize":
|
|
4
|
-
"bundleReduction": 27.
|
|
2
|
+
"bundleSize": 131878,
|
|
3
|
+
"bundleOrigSize": 181211,
|
|
4
|
+
"bundleReduction": 27.22,
|
|
5
5
|
"modules": [
|
|
6
6
|
{
|
|
7
7
|
"id": "/src/unstable-core-do-not-import/stream/jsonl.ts",
|
|
8
|
-
"size":
|
|
9
|
-
"origSize":
|
|
8
|
+
"size": 17766,
|
|
9
|
+
"origSize": 18448,
|
|
10
10
|
"renderedExports": [
|
|
11
11
|
"isPromise",
|
|
12
12
|
"jsonlStreamProducer",
|
|
@@ -17,8 +17,8 @@
|
|
|
17
17
|
"/src/unstable-core-do-not-import.ts",
|
|
18
18
|
"/src/unstable-core-do-not-import/http/resolveResponse.ts"
|
|
19
19
|
],
|
|
20
|
-
"percent": 13.
|
|
21
|
-
"reduction":
|
|
20
|
+
"percent": 13.47,
|
|
21
|
+
"reduction": 3.7
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"id": "/src/unstable-core-do-not-import/http/resolveResponse.ts",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"dependents": [
|
|
32
32
|
"/src/unstable-core-do-not-import.ts"
|
|
33
33
|
],
|
|
34
|
-
"percent": 12.
|
|
34
|
+
"percent": 12.95,
|
|
35
35
|
"reduction": 0
|
|
36
36
|
},
|
|
37
37
|
{
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"dependents": [
|
|
47
47
|
"/src/adapters/fastify/fastifyTRPCPlugin.ts"
|
|
48
48
|
],
|
|
49
|
-
"percent": 10.
|
|
49
|
+
"percent": 10.82,
|
|
50
50
|
"reduction": 0
|
|
51
51
|
},
|
|
52
52
|
{
|
|
@@ -113,7 +113,7 @@
|
|
|
113
113
|
"/src/unstable-core-do-not-import.ts",
|
|
114
114
|
"/src/unstable-core-do-not-import/http/resolveResponse.ts"
|
|
115
115
|
],
|
|
116
|
-
"percent": 4.
|
|
116
|
+
"percent": 4.27,
|
|
117
117
|
"reduction": 24.48
|
|
118
118
|
},
|
|
119
119
|
{
|
|
@@ -290,7 +290,7 @@
|
|
|
290
290
|
"/src/adapters/node-http/index.ts",
|
|
291
291
|
"/src/adapters/node-http/nodeHTTPRequestHandler.ts"
|
|
292
292
|
],
|
|
293
|
-
"percent": 1.
|
|
293
|
+
"percent": 1.66,
|
|
294
294
|
"reduction": 13.79
|
|
295
295
|
},
|
|
296
296
|
{
|
|
@@ -304,7 +304,7 @@
|
|
|
304
304
|
"dependents": [
|
|
305
305
|
"/src/adapters/next-app-dir/nextAppDirCaller.ts"
|
|
306
306
|
],
|
|
307
|
-
"percent": 1.
|
|
307
|
+
"percent": 1.55,
|
|
308
308
|
"reduction": 5.79
|
|
309
309
|
},
|
|
310
310
|
{
|
|
@@ -328,7 +328,7 @@
|
|
|
328
328
|
"/src/unstable-core-do-not-import/procedureBuilder.ts",
|
|
329
329
|
"/src/unstable-core-do-not-import/stream/jsonl.ts"
|
|
330
330
|
],
|
|
331
|
-
"percent": 1.
|
|
331
|
+
"percent": 1.31,
|
|
332
332
|
"reduction": 19.47
|
|
333
333
|
},
|
|
334
334
|
{
|
|
@@ -786,16 +786,6 @@
|
|
|
786
786
|
"percent": 0,
|
|
787
787
|
"reduction": 100
|
|
788
788
|
},
|
|
789
|
-
{
|
|
790
|
-
"id": "/src/adapters/fetch/index.ts",
|
|
791
|
-
"size": 0,
|
|
792
|
-
"origSize": 64,
|
|
793
|
-
"renderedExports": [],
|
|
794
|
-
"removedExports": [],
|
|
795
|
-
"dependents": [],
|
|
796
|
-
"percent": 0,
|
|
797
|
-
"reduction": 100
|
|
798
|
-
},
|
|
799
789
|
{
|
|
800
790
|
"id": "/src/adapters/fastify/index.ts",
|
|
801
791
|
"size": 0,
|
|
@@ -814,12 +804,22 @@
|
|
|
814
804
|
"removedExports": [],
|
|
815
805
|
"dependents": [
|
|
816
806
|
"/src/adapters/express.ts",
|
|
817
|
-
"/src/adapters/standalone.ts",
|
|
818
807
|
"/src/adapters/next.ts",
|
|
808
|
+
"/src/adapters/standalone.ts",
|
|
819
809
|
"/src/adapters/fastify/fastifyRequestHandler.ts"
|
|
820
810
|
],
|
|
821
811
|
"percent": 0,
|
|
822
812
|
"reduction": 100
|
|
813
|
+
},
|
|
814
|
+
{
|
|
815
|
+
"id": "/src/adapters/fetch/index.ts",
|
|
816
|
+
"size": 0,
|
|
817
|
+
"origSize": 64,
|
|
818
|
+
"renderedExports": [],
|
|
819
|
+
"removedExports": [],
|
|
820
|
+
"dependents": [],
|
|
821
|
+
"percent": 0,
|
|
822
|
+
"reduction": 100
|
|
823
823
|
}
|
|
824
824
|
],
|
|
825
825
|
"moduleCount": 55
|
|
@@ -96,8 +96,9 @@ export declare function jsonlStreamConsumer<THead>(opts: {
|
|
|
96
96
|
}): Promise<readonly [Awaited<THead>, {
|
|
97
97
|
readonly controllers: Map<ChunkIndex, {
|
|
98
98
|
controller: ReadableStreamDefaultController<ChunkData | StreamInterruptedError>;
|
|
99
|
-
|
|
99
|
+
returned: boolean;
|
|
100
100
|
}>;
|
|
101
|
+
readonly streamAbortController: AbortController;
|
|
101
102
|
}]>;
|
|
102
103
|
export {};
|
|
103
104
|
//# sourceMappingURL=jsonl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonl.d.ts","sourceRoot":"","sources":["../../../src/unstable-core-do-not-import/stream/jsonl.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"jsonl.d.ts","sourceRoot":"","sources":["../../../src/unstable-core-do-not-import/stream/jsonl.ts"],"names":[],"mappings":"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"}
|
|
@@ -333,12 +333,18 @@ function createConsumerStream(from) {
|
|
|
333
333
|
let headDeferred = createDeferred.createDeferred();
|
|
334
334
|
const chunkDeferred = new Map();
|
|
335
335
|
const controllers = new Map();
|
|
336
|
+
const maybeAbortStream = ()=>{
|
|
337
|
+
if (chunkDeferred.size === 0 && Array.from(controllers.values()).every((it)=>it.returned)) {
|
|
338
|
+
// nothing is listening to the stream anymore
|
|
339
|
+
streamAbortController.abort();
|
|
340
|
+
}
|
|
341
|
+
};
|
|
336
342
|
function hydrateChunkDefinition(value, path) {
|
|
337
343
|
const [_path, type, chunkId] = value;
|
|
338
344
|
const { readable , controller } = createReadableStream.createReadableStream();
|
|
339
345
|
const wrapper = {
|
|
340
346
|
controller,
|
|
341
|
-
|
|
347
|
+
returned: false
|
|
342
348
|
};
|
|
343
349
|
controllers.set(chunkId, wrapper);
|
|
344
350
|
// resolve chunk deferred if it exists
|
|
@@ -377,6 +383,7 @@ function createConsumerStream(from) {
|
|
|
377
383
|
}).catch(reject).finally(()=>{
|
|
378
384
|
// reader.releaseLock();
|
|
379
385
|
controllers.delete(chunkId);
|
|
386
|
+
maybeAbortStream();
|
|
380
387
|
});
|
|
381
388
|
});
|
|
382
389
|
}
|
|
@@ -407,23 +414,22 @@ function createConsumerStream(from) {
|
|
|
407
414
|
};
|
|
408
415
|
case ASYNC_ITERABLE_STATUS_DONE:
|
|
409
416
|
controllers.delete(chunkId);
|
|
417
|
+
maybeAbortStream();
|
|
410
418
|
return {
|
|
411
419
|
done: true,
|
|
412
420
|
value: undefined
|
|
413
421
|
};
|
|
414
422
|
case ASYNC_ITERABLE_STATUS_ERROR:
|
|
415
423
|
controllers.delete(chunkId);
|
|
424
|
+
maybeAbortStream();
|
|
416
425
|
throw opts.formatError?.({
|
|
417
426
|
error: data
|
|
418
427
|
}) ?? new AsyncError(data);
|
|
419
428
|
}
|
|
420
429
|
},
|
|
421
430
|
return: async ()=>{
|
|
422
|
-
wrapper.
|
|
423
|
-
|
|
424
|
-
// nothing is listening to the stream anymore
|
|
425
|
-
streamAbortController.abort();
|
|
426
|
-
}
|
|
431
|
+
wrapper.returned = true;
|
|
432
|
+
maybeAbortStream();
|
|
427
433
|
return {
|
|
428
434
|
done: true,
|
|
429
435
|
value: undefined
|
|
@@ -507,7 +513,8 @@ function createConsumerStream(from) {
|
|
|
507
513
|
return [
|
|
508
514
|
await headDeferred.promise,
|
|
509
515
|
{
|
|
510
|
-
controllers
|
|
516
|
+
controllers,
|
|
517
|
+
streamAbortController
|
|
511
518
|
}
|
|
512
519
|
];
|
|
513
520
|
}
|
|
@@ -331,12 +331,18 @@ function createConsumerStream(from) {
|
|
|
331
331
|
let headDeferred = createDeferred();
|
|
332
332
|
const chunkDeferred = new Map();
|
|
333
333
|
const controllers = new Map();
|
|
334
|
+
const maybeAbortStream = ()=>{
|
|
335
|
+
if (chunkDeferred.size === 0 && Array.from(controllers.values()).every((it)=>it.returned)) {
|
|
336
|
+
// nothing is listening to the stream anymore
|
|
337
|
+
streamAbortController.abort();
|
|
338
|
+
}
|
|
339
|
+
};
|
|
334
340
|
function hydrateChunkDefinition(value, path) {
|
|
335
341
|
const [_path, type, chunkId] = value;
|
|
336
342
|
const { readable , controller } = createReadableStream();
|
|
337
343
|
const wrapper = {
|
|
338
344
|
controller,
|
|
339
|
-
|
|
345
|
+
returned: false
|
|
340
346
|
};
|
|
341
347
|
controllers.set(chunkId, wrapper);
|
|
342
348
|
// resolve chunk deferred if it exists
|
|
@@ -375,6 +381,7 @@ function createConsumerStream(from) {
|
|
|
375
381
|
}).catch(reject).finally(()=>{
|
|
376
382
|
// reader.releaseLock();
|
|
377
383
|
controllers.delete(chunkId);
|
|
384
|
+
maybeAbortStream();
|
|
378
385
|
});
|
|
379
386
|
});
|
|
380
387
|
}
|
|
@@ -405,23 +412,22 @@ function createConsumerStream(from) {
|
|
|
405
412
|
};
|
|
406
413
|
case ASYNC_ITERABLE_STATUS_DONE:
|
|
407
414
|
controllers.delete(chunkId);
|
|
415
|
+
maybeAbortStream();
|
|
408
416
|
return {
|
|
409
417
|
done: true,
|
|
410
418
|
value: undefined
|
|
411
419
|
};
|
|
412
420
|
case ASYNC_ITERABLE_STATUS_ERROR:
|
|
413
421
|
controllers.delete(chunkId);
|
|
422
|
+
maybeAbortStream();
|
|
414
423
|
throw opts.formatError?.({
|
|
415
424
|
error: data
|
|
416
425
|
}) ?? new AsyncError(data);
|
|
417
426
|
}
|
|
418
427
|
},
|
|
419
428
|
return: async ()=>{
|
|
420
|
-
wrapper.
|
|
421
|
-
|
|
422
|
-
// nothing is listening to the stream anymore
|
|
423
|
-
streamAbortController.abort();
|
|
424
|
-
}
|
|
429
|
+
wrapper.returned = true;
|
|
430
|
+
maybeAbortStream();
|
|
425
431
|
return {
|
|
426
432
|
done: true,
|
|
427
433
|
value: undefined
|
|
@@ -505,7 +511,8 @@ function createConsumerStream(from) {
|
|
|
505
511
|
return [
|
|
506
512
|
await headDeferred.promise,
|
|
507
513
|
{
|
|
508
|
-
controllers
|
|
514
|
+
controllers,
|
|
515
|
+
streamAbortController
|
|
509
516
|
}
|
|
510
517
|
];
|
|
511
518
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trpc/server",
|
|
3
|
-
"version": "11.0.0-alpha-tmp-issues-5851-take-two.
|
|
3
|
+
"version": "11.0.0-alpha-tmp-issues-5851-take-two.457+d001d20ed",
|
|
4
4
|
"description": "The tRPC server library",
|
|
5
5
|
"author": "KATT",
|
|
6
6
|
"license": "MIT",
|
|
@@ -149,5 +149,5 @@
|
|
|
149
149
|
"funding": [
|
|
150
150
|
"https://trpc.io/sponsor"
|
|
151
151
|
],
|
|
152
|
-
"gitHead": "
|
|
152
|
+
"gitHead": "d001d20ed0a9cda4a71c3a32276c1914bf0c2214"
|
|
153
153
|
}
|
|
@@ -442,11 +442,21 @@ export async function jsonlStreamConsumer<THead>(opts: {
|
|
|
442
442
|
type ChunkController = ReadableStreamDefaultController<ControllerChunk>;
|
|
443
443
|
type ControllerWrapper = {
|
|
444
444
|
controller: ChunkController;
|
|
445
|
-
|
|
445
|
+
returned: boolean;
|
|
446
446
|
};
|
|
447
447
|
const chunkDeferred = new Map<ChunkIndex, Deferred<ControllerWrapper>>();
|
|
448
448
|
const controllers = new Map<ChunkIndex, ControllerWrapper>();
|
|
449
449
|
|
|
450
|
+
const maybeAbortStream = () => {
|
|
451
|
+
if (
|
|
452
|
+
chunkDeferred.size === 0 &&
|
|
453
|
+
Array.from(controllers.values()).every((it) => it.returned)
|
|
454
|
+
) {
|
|
455
|
+
// nothing is listening to the stream anymore
|
|
456
|
+
streamAbortController.abort();
|
|
457
|
+
}
|
|
458
|
+
};
|
|
459
|
+
|
|
450
460
|
function hydrateChunkDefinition(value: ChunkDefinition, path: PathArray) {
|
|
451
461
|
const [_path, type, chunkId] = value;
|
|
452
462
|
|
|
@@ -454,7 +464,7 @@ export async function jsonlStreamConsumer<THead>(opts: {
|
|
|
454
464
|
|
|
455
465
|
const wrapper: ControllerWrapper = {
|
|
456
466
|
controller,
|
|
457
|
-
|
|
467
|
+
returned: false,
|
|
458
468
|
};
|
|
459
469
|
controllers.set(chunkId, wrapper);
|
|
460
470
|
|
|
@@ -486,6 +496,7 @@ export async function jsonlStreamConsumer<THead>(opts: {
|
|
|
486
496
|
switch (status) {
|
|
487
497
|
case PROMISE_STATUS_FULFILLED:
|
|
488
498
|
resolve(hydrate(data, path));
|
|
499
|
+
|
|
489
500
|
break;
|
|
490
501
|
case PROMISE_STATUS_REJECTED:
|
|
491
502
|
reject(
|
|
@@ -498,6 +509,8 @@ export async function jsonlStreamConsumer<THead>(opts: {
|
|
|
498
509
|
.finally(() => {
|
|
499
510
|
// reader.releaseLock();
|
|
500
511
|
controllers.delete(chunkId);
|
|
512
|
+
|
|
513
|
+
maybeAbortStream();
|
|
501
514
|
});
|
|
502
515
|
});
|
|
503
516
|
}
|
|
@@ -529,12 +542,14 @@ export async function jsonlStreamConsumer<THead>(opts: {
|
|
|
529
542
|
};
|
|
530
543
|
case ASYNC_ITERABLE_STATUS_DONE:
|
|
531
544
|
controllers.delete(chunkId);
|
|
545
|
+
maybeAbortStream();
|
|
532
546
|
return {
|
|
533
547
|
done: true,
|
|
534
548
|
value: undefined,
|
|
535
549
|
};
|
|
536
550
|
case ASYNC_ITERABLE_STATUS_ERROR:
|
|
537
551
|
controllers.delete(chunkId);
|
|
552
|
+
maybeAbortStream();
|
|
538
553
|
throw (
|
|
539
554
|
opts.formatError?.({ error: data }) ??
|
|
540
555
|
new AsyncError(data)
|
|
@@ -542,16 +557,8 @@ export async function jsonlStreamConsumer<THead>(opts: {
|
|
|
542
557
|
}
|
|
543
558
|
},
|
|
544
559
|
return: async () => {
|
|
545
|
-
wrapper.
|
|
546
|
-
|
|
547
|
-
chunkDeferred.size === 0 &&
|
|
548
|
-
Array.from(controllers.values()).every(
|
|
549
|
-
(it) => it.abortController.signal.aborted,
|
|
550
|
-
)
|
|
551
|
-
) {
|
|
552
|
-
// nothing is listening to the stream anymore
|
|
553
|
-
streamAbortController.abort();
|
|
554
|
-
}
|
|
560
|
+
wrapper.returned = true;
|
|
561
|
+
maybeAbortStream();
|
|
555
562
|
return {
|
|
556
563
|
done: true,
|
|
557
564
|
value: undefined,
|
|
@@ -645,6 +652,7 @@ export async function jsonlStreamConsumer<THead>(opts: {
|
|
|
645
652
|
await headDeferred.promise,
|
|
646
653
|
{
|
|
647
654
|
controllers,
|
|
655
|
+
streamAbortController,
|
|
648
656
|
},
|
|
649
657
|
] as const;
|
|
650
658
|
}
|