@trpc/server 11.0.0-rc.642 → 11.0.0-rc.645
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/adapters/next-app-dir/rethrowNextErrors.js +1 -1
- package/dist/adapters/next-app-dir/rethrowNextErrors.mjs +1 -1
- package/dist/adapters/node-http/writeResponse.d.ts.map +1 -1
- package/dist/adapters/node-http/writeResponse.js +2 -0
- package/dist/adapters/node-http/writeResponse.mjs +2 -0
- package/dist/adapters/ws.js +1 -1
- package/dist/adapters/ws.mjs +1 -1
- package/dist/bundle-analysis.json +114 -128
- package/dist/observable/observable.d.ts +1 -1
- package/dist/observable/observable.d.ts.map +1 -1
- package/dist/observable/observable.js +16 -4
- package/dist/observable/observable.mjs +16 -4
- package/dist/unstable-core-do-not-import/http/resolveResponse.d.ts.map +1 -1
- package/dist/unstable-core-do-not-import/http/resolveResponse.js +4 -9
- package/dist/unstable-core-do-not-import/http/resolveResponse.mjs +5 -10
- package/dist/unstable-core-do-not-import/stream/jsonl.d.ts +41 -4
- package/dist/unstable-core-do-not-import/stream/jsonl.d.ts.map +1 -1
- package/dist/unstable-core-do-not-import/stream/jsonl.js +223 -213
- package/dist/unstable-core-do-not-import/stream/jsonl.mjs +224 -214
- package/dist/unstable-core-do-not-import/stream/sse.d.ts +1 -1
- package/dist/unstable-core-do-not-import/stream/sse.d.ts.map +1 -1
- package/dist/unstable-core-do-not-import/stream/sse.js +46 -54
- package/dist/unstable-core-do-not-import/stream/sse.mjs +47 -55
- package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.d.ts +8 -0
- package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.d.ts.map +1 -0
- package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.js +25 -0
- package/dist/unstable-core-do-not-import/stream/utils/readableStreamFrom.mjs +23 -0
- package/package.json +2 -9
- package/src/adapters/next-app-dir/rethrowNextErrors.ts +1 -1
- package/src/adapters/node-http/writeResponse.ts +3 -0
- package/src/adapters/ws.ts +1 -1
- package/src/observable/observable.ts +17 -2
- package/src/unstable-core-do-not-import/http/resolveResponse.ts +5 -12
- package/src/unstable-core-do-not-import/stream/jsonl.ts +271 -226
- package/src/unstable-core-do-not-import/stream/sse.ts +59 -64
- package/src/unstable-core-do-not-import/stream/utils/readableStreamFrom.ts +28 -0
- package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.d.ts +0 -9
- package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.d.ts.map +0 -1
- package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.js +0 -25
- package/dist/unstable-core-do-not-import/stream/utils/createReadableStream.mjs +0 -23
- package/dist/unstable-core-do-not-import/stream/utils/withRefCount.d.ts +0 -17
- package/dist/unstable-core-do-not-import/stream/utils/withRefCount.d.ts.map +0 -1
- package/dist/unstable-core-do-not-import/stream/utils/withRefCount.js +0 -59
- package/dist/unstable-core-do-not-import/stream/utils/withRefCount.mjs +0 -57
- package/src/unstable-core-do-not-import/stream/utils/createReadableStream.ts +0 -25
- package/src/unstable-core-do-not-import/stream/utils/withRefCount.ts +0 -93
|
@@ -8,5 +8,5 @@ export declare function observable<TValue, TError = unknown>(subscribe: (observe
|
|
|
8
8
|
/** @internal */
|
|
9
9
|
export declare function observableToPromise<TValue>(observable: Observable<TValue, unknown>): Promise<TValue>;
|
|
10
10
|
/** @internal */
|
|
11
|
-
export declare function observableToAsyncIterable<TValue>(observable: Observable<TValue, unknown
|
|
11
|
+
export declare function observableToAsyncIterable<TValue>(observable: Observable<TValue, unknown>, signal: AbortSignal): AsyncIterable<TValue>;
|
|
12
12
|
//# sourceMappingURL=observable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observable.d.ts","sourceRoot":"","sources":["../../src/observable/observable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EAER,aAAa,EAGd,MAAM,SAAS,CAAC;AAEjB,cAAc;AACd,MAAM,MAAM,oBAAoB,CAAC,WAAW,IAC1C,WAAW,SAAS,UAAU,CAAC,MAAM,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC;AAEzE,cAAc;AACd,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAE1E;AAED,cAAc;AACd,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,EACjD,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,aAAa,GAC/D,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CA6D5B;AAMD,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,MAAM,EACxC,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,mBA+BxC;
|
|
1
|
+
{"version":3,"file":"observable.d.ts","sourceRoot":"","sources":["../../src/observable/observable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,QAAQ,EAER,aAAa,EAGd,MAAM,SAAS,CAAC;AAEjB,cAAc;AACd,MAAM,MAAM,oBAAoB,CAAC,WAAW,IAC1C,WAAW,SAAS,UAAU,CAAC,MAAM,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC;AAEzE,cAAc;AACd,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAE1E;AAED,cAAc;AACd,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,EACjD,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,aAAa,GAC/D,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CA6D5B;AAMD,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,MAAM,EACxC,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,mBA+BxC;AA4CD,gBAAgB;AAChB,wBAAgB,yBAAyB,CAAC,MAAM,EAC9C,UAAU,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,MAAM,EAAE,WAAW,GAClB,aAAa,CAAC,MAAM,CAAC,CAmCvB"}
|
|
@@ -98,8 +98,13 @@ function pipeReducer(prev, fn) {
|
|
|
98
98
|
}
|
|
99
99
|
/**
|
|
100
100
|
* @internal
|
|
101
|
-
*/ function observableToReadableStream(observable) {
|
|
101
|
+
*/ function observableToReadableStream(observable, signal) {
|
|
102
102
|
let unsub = null;
|
|
103
|
+
const onAbort = ()=>{
|
|
104
|
+
unsub?.unsubscribe();
|
|
105
|
+
unsub = null;
|
|
106
|
+
signal.removeEventListener('abort', onAbort);
|
|
107
|
+
};
|
|
103
108
|
return new ReadableStream({
|
|
104
109
|
start (controller) {
|
|
105
110
|
unsub = observable.subscribe({
|
|
@@ -120,14 +125,21 @@ function pipeReducer(prev, fn) {
|
|
|
120
125
|
controller.close();
|
|
121
126
|
}
|
|
122
127
|
});
|
|
128
|
+
if (signal.aborted) {
|
|
129
|
+
onAbort();
|
|
130
|
+
} else {
|
|
131
|
+
signal.addEventListener('abort', onAbort, {
|
|
132
|
+
once: true
|
|
133
|
+
});
|
|
134
|
+
}
|
|
123
135
|
},
|
|
124
136
|
cancel () {
|
|
125
|
-
|
|
137
|
+
onAbort();
|
|
126
138
|
}
|
|
127
139
|
});
|
|
128
140
|
}
|
|
129
|
-
/** @internal */ function observableToAsyncIterable(observable) {
|
|
130
|
-
const stream = observableToReadableStream(observable);
|
|
141
|
+
/** @internal */ function observableToAsyncIterable(observable, signal) {
|
|
142
|
+
const stream = observableToReadableStream(observable, signal);
|
|
131
143
|
const reader = stream.getReader();
|
|
132
144
|
const iterator = {
|
|
133
145
|
async next () {
|
|
@@ -96,8 +96,13 @@ function pipeReducer(prev, fn) {
|
|
|
96
96
|
}
|
|
97
97
|
/**
|
|
98
98
|
* @internal
|
|
99
|
-
*/ function observableToReadableStream(observable) {
|
|
99
|
+
*/ function observableToReadableStream(observable, signal) {
|
|
100
100
|
let unsub = null;
|
|
101
|
+
const onAbort = ()=>{
|
|
102
|
+
unsub?.unsubscribe();
|
|
103
|
+
unsub = null;
|
|
104
|
+
signal.removeEventListener('abort', onAbort);
|
|
105
|
+
};
|
|
101
106
|
return new ReadableStream({
|
|
102
107
|
start (controller) {
|
|
103
108
|
unsub = observable.subscribe({
|
|
@@ -118,14 +123,21 @@ function pipeReducer(prev, fn) {
|
|
|
118
123
|
controller.close();
|
|
119
124
|
}
|
|
120
125
|
});
|
|
126
|
+
if (signal.aborted) {
|
|
127
|
+
onAbort();
|
|
128
|
+
} else {
|
|
129
|
+
signal.addEventListener('abort', onAbort, {
|
|
130
|
+
once: true
|
|
131
|
+
});
|
|
132
|
+
}
|
|
121
133
|
},
|
|
122
134
|
cancel () {
|
|
123
|
-
|
|
135
|
+
onAbort();
|
|
124
136
|
}
|
|
125
137
|
});
|
|
126
138
|
}
|
|
127
|
-
/** @internal */ function observableToAsyncIterable(observable) {
|
|
128
|
-
const stream = observableToReadableStream(observable);
|
|
139
|
+
/** @internal */ function observableToAsyncIterable(observable, signal) {
|
|
140
|
+
const stream = observableToReadableStream(observable, signal);
|
|
129
141
|
const reader = stream.getReader();
|
|
130
142
|
const iterator = {
|
|
131
143
|
async next () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveResponse.d.ts","sourceRoot":"","sources":["../../../src/unstable-core-do-not-import/http/resolveResponse.ts"],"names":[],"mappings":"AAMA,OAAO,EAA2B,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,EACL,KAAK,SAAS,EAGf,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"resolveResponse.d.ts","sourceRoot":"","sources":["../../../src/unstable-core-do-not-import/http/resolveResponse.ts"],"names":[],"mappings":"AAMA,OAAO,EAA2B,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAExE,OAAO,EACL,KAAK,SAAS,EAGf,MAAM,WAAW,CAAC;AAQnB,OAAO,KAAK,EACV,sBAAsB,EACtB,kCAAkC,EAEnC,MAAM,SAAS,CAAC;AAqCjB,UAAU,yBAAyB,CAAC,OAAO,SAAS,SAAS,CAC3D,SAAQ,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC;IAChD,aAAa,EAAE,kCAAkC,CAAC,OAAO,CAAC,CAAC;IAC3D,GAAG,EAAE,OAAO,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;CACzB;AA2ID,wBAAsB,eAAe,CAAC,OAAO,SAAS,SAAS,EAC7D,IAAI,EAAE,yBAAyB,CAAC,OAAO,CAAC,GACvC,OAAO,CAAC,QAAQ,CAAC,CAqfnB"}
|
|
@@ -254,22 +254,17 @@ async function resolveResponse(opts) {
|
|
|
254
254
|
});
|
|
255
255
|
}
|
|
256
256
|
}
|
|
257
|
-
const abortCtrl = new AbortController();
|
|
258
257
|
const data = await proc({
|
|
259
258
|
path: call.path,
|
|
260
259
|
getRawInput: call.getRawInput,
|
|
261
260
|
ctx: ctxManager.value(),
|
|
262
261
|
type: proc._def.type,
|
|
263
|
-
signal:
|
|
264
|
-
opts.req.signal,
|
|
265
|
-
abortCtrl.signal
|
|
266
|
-
])
|
|
262
|
+
signal: opts.req.signal
|
|
267
263
|
});
|
|
268
264
|
return [
|
|
269
265
|
undefined,
|
|
270
266
|
{
|
|
271
|
-
data
|
|
272
|
-
abortCtrl
|
|
267
|
+
data
|
|
273
268
|
}
|
|
274
269
|
];
|
|
275
270
|
} catch (cause) {
|
|
@@ -356,7 +351,7 @@ async function resolveResponse(opts) {
|
|
|
356
351
|
code: 'INTERNAL_SERVER_ERROR'
|
|
357
352
|
}));
|
|
358
353
|
}
|
|
359
|
-
const dataAsIterable = observable.isObservable(result.data) ? observable.observableToAsyncIterable(result.data) : result.data;
|
|
354
|
+
const dataAsIterable = observable.isObservable(result.data) ? observable.observableToAsyncIterable(result.data, opts.req.signal) : result.data;
|
|
360
355
|
return dataAsIterable;
|
|
361
356
|
});
|
|
362
357
|
const stream = sse.sseStreamProducer({
|
|
@@ -450,7 +445,7 @@ async function resolveResponse(opts) {
|
|
|
450
445
|
/**
|
|
451
446
|
* Not very pretty, but we need to wrap nested data in promises
|
|
452
447
|
* Our stream producer will only resolve top-level async values or async values that are directly nested in another async value
|
|
453
|
-
*/ const iterable = observable.isObservable(result.data) ? observable.observableToAsyncIterable(result.data) : Promise.resolve(result.data);
|
|
448
|
+
*/ const iterable = observable.isObservable(result.data) ? observable.observableToAsyncIterable(result.data, opts.req.signal) : Promise.resolve(result.data);
|
|
454
449
|
return {
|
|
455
450
|
result: Promise.resolve({
|
|
456
451
|
data: iterable
|
|
@@ -4,7 +4,7 @@ import { getTRPCErrorFromUnknown, TRPCError } from '../error/TRPCError.mjs';
|
|
|
4
4
|
import { jsonlStreamProducer, isPromise } from '../stream/jsonl.mjs';
|
|
5
5
|
import { sseStreamProducer, sseHeaders } from '../stream/sse.mjs';
|
|
6
6
|
import { transformTRPCResponse } from '../transformer.mjs';
|
|
7
|
-
import { run,
|
|
7
|
+
import { run, isAsyncIterable, isObject } from '../utils.mjs';
|
|
8
8
|
import { getRequestInfo } from './contentType.mjs';
|
|
9
9
|
import { getHTTPStatusCode } from './getHTTPStatusCode.mjs';
|
|
10
10
|
|
|
@@ -252,22 +252,17 @@ async function resolveResponse(opts) {
|
|
|
252
252
|
});
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
|
-
const abortCtrl = new AbortController();
|
|
256
255
|
const data = await proc({
|
|
257
256
|
path: call.path,
|
|
258
257
|
getRawInput: call.getRawInput,
|
|
259
258
|
ctx: ctxManager.value(),
|
|
260
259
|
type: proc._def.type,
|
|
261
|
-
signal:
|
|
262
|
-
opts.req.signal,
|
|
263
|
-
abortCtrl.signal
|
|
264
|
-
])
|
|
260
|
+
signal: opts.req.signal
|
|
265
261
|
});
|
|
266
262
|
return [
|
|
267
263
|
undefined,
|
|
268
264
|
{
|
|
269
|
-
data
|
|
270
|
-
abortCtrl
|
|
265
|
+
data
|
|
271
266
|
}
|
|
272
267
|
];
|
|
273
268
|
} catch (cause) {
|
|
@@ -354,7 +349,7 @@ async function resolveResponse(opts) {
|
|
|
354
349
|
code: 'INTERNAL_SERVER_ERROR'
|
|
355
350
|
}));
|
|
356
351
|
}
|
|
357
|
-
const dataAsIterable = isObservable(result.data) ? observableToAsyncIterable(result.data) : result.data;
|
|
352
|
+
const dataAsIterable = isObservable(result.data) ? observableToAsyncIterable(result.data, opts.req.signal) : result.data;
|
|
358
353
|
return dataAsIterable;
|
|
359
354
|
});
|
|
360
355
|
const stream = sseStreamProducer({
|
|
@@ -448,7 +443,7 @@ async function resolveResponse(opts) {
|
|
|
448
443
|
/**
|
|
449
444
|
* Not very pretty, but we need to wrap nested data in promises
|
|
450
445
|
* Our stream producer will only resolve top-level async values or async values that are directly nested in another async value
|
|
451
|
-
*/ const iterable = isObservable(result.data) ? observableToAsyncIterable(result.data) : Promise.resolve(result.data);
|
|
446
|
+
*/ const iterable = isObservable(result.data) ? observableToAsyncIterable(result.data, opts.req.signal) : Promise.resolve(result.data);
|
|
452
447
|
return {
|
|
453
448
|
result: Promise.resolve({
|
|
454
449
|
data: iterable
|
|
@@ -18,8 +18,8 @@ declare const PROMISE_STATUS_REJECTED = 1;
|
|
|
18
18
|
type PROMISE_STATUS_REJECTED = typeof PROMISE_STATUS_REJECTED;
|
|
19
19
|
declare const ASYNC_ITERABLE_STATUS_RETURN = 0;
|
|
20
20
|
type ASYNC_ITERABLE_STATUS_RETURN = typeof ASYNC_ITERABLE_STATUS_RETURN;
|
|
21
|
-
declare const
|
|
22
|
-
type
|
|
21
|
+
declare const ASYNC_ITERABLE_STATUS_YIELD = 1;
|
|
22
|
+
type ASYNC_ITERABLE_STATUS_YIELD = typeof ASYNC_ITERABLE_STATUS_YIELD;
|
|
23
23
|
declare const ASYNC_ITERABLE_STATUS_ERROR = 2;
|
|
24
24
|
type ASYNC_ITERABLE_STATUS_ERROR = typeof ASYNC_ITERABLE_STATUS_ERROR;
|
|
25
25
|
type ChunkDefinitionKey = null | number | string;
|
|
@@ -49,7 +49,7 @@ type IterableChunk = [
|
|
|
49
49
|
value: EncodedValue
|
|
50
50
|
] | [
|
|
51
51
|
chunkIndex: ChunkIndex,
|
|
52
|
-
status:
|
|
52
|
+
status: ASYNC_ITERABLE_STATUS_YIELD,
|
|
53
53
|
value: EncodedValue
|
|
54
54
|
] | [
|
|
55
55
|
chunkIndex: ChunkIndex,
|
|
@@ -86,6 +86,35 @@ declare class StreamInterruptedError extends Error {
|
|
|
86
86
|
export type ConsumerOnError = (opts: {
|
|
87
87
|
error: unknown;
|
|
88
88
|
}) => void;
|
|
89
|
+
/**
|
|
90
|
+
* Represents a chunk of data or stream interruption error that can be enqueued to a controller
|
|
91
|
+
*/
|
|
92
|
+
type ControllerChunk = ChunkData | StreamInterruptedError;
|
|
93
|
+
/**
|
|
94
|
+
* Interface for a controller that can enqueue chunks and be closed
|
|
95
|
+
*/
|
|
96
|
+
/**
|
|
97
|
+
* Interface for controlling a stream's lifecycle and data flow
|
|
98
|
+
*/
|
|
99
|
+
interface StreamController {
|
|
100
|
+
/**
|
|
101
|
+
* Enqueues a chunk of data or error into the stream
|
|
102
|
+
* @param chunk The data chunk or error to enqueue
|
|
103
|
+
*/
|
|
104
|
+
enqueue: (chunk: ControllerChunk) => void;
|
|
105
|
+
/**
|
|
106
|
+
* Closes the stream and prevents further data from being enqueued
|
|
107
|
+
*/
|
|
108
|
+
close: () => void;
|
|
109
|
+
/**
|
|
110
|
+
* Whether the stream has been closed
|
|
111
|
+
*/
|
|
112
|
+
closed: boolean;
|
|
113
|
+
/**
|
|
114
|
+
* Gets a reader for consuming the stream's data
|
|
115
|
+
*/
|
|
116
|
+
getReader: () => ReadableStreamDefaultReader<ControllerChunk>;
|
|
117
|
+
}
|
|
89
118
|
/**
|
|
90
119
|
* JSON Lines stream consumer
|
|
91
120
|
* @see https://jsonlines.org/
|
|
@@ -102,7 +131,15 @@ export declare function jsonlStreamConsumer<THead>(opts: {
|
|
|
102
131
|
*/
|
|
103
132
|
abortController: AbortController;
|
|
104
133
|
}): Promise<readonly [Awaited<THead>, {
|
|
105
|
-
|
|
134
|
+
getOrCreate(chunkId: ChunkIndex): StreamController;
|
|
135
|
+
/**
|
|
136
|
+
* Check if there are no pending controllers
|
|
137
|
+
**/
|
|
138
|
+
isEmpty: () => boolean;
|
|
139
|
+
/**
|
|
140
|
+
* Cancels all pending controllers and rejects deferred promises
|
|
141
|
+
*/
|
|
142
|
+
cancelAll(reason: unknown): void;
|
|
106
143
|
}]>;
|
|
107
144
|
export {};
|
|
108
145
|
//# 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":"AAMA;;;GAGG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,MAAM,2BAA2B,CAAC,UAAU,CAAC,CAAC;CAC1D,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,EAAE,CACA,SAAS,EAAE,MAAM,GAAG,MAAM,EAC1B,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GACjC,yBAAyB,CAAC;CAC9B,CAAC;
|
|
1
|
+
{"version":3,"file":"jsonl.d.ts","sourceRoot":"","sources":["../../../src/unstable-core-do-not-import/stream/jsonl.ts"],"names":[],"mappings":"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"}
|