@qorejs/qore 1.0.6 → 1.0.7
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/README.md +30 -4
- package/dist/src/core/stream-types.d.ts +18 -2
- package/dist/src/core/stream-types.d.ts.map +1 -1
- package/dist/src/core/stream.d.ts +1 -1
- package/dist/src/core/stream.d.ts.map +1 -1
- package/dist/src/core/stream.js +123 -9
- package/dist/src/core/stream.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/docs/api.md +35 -2
- package/docs/comparisons.md +13 -0
- package/docs/providers.md +17 -0
- package/docs/runtime.md +49 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -69,11 +69,37 @@ const text = events.select('text', {
|
|
|
69
69
|
reduce: (current, event) => current + event.text
|
|
70
70
|
});
|
|
71
71
|
const tools = events.select('tool_call');
|
|
72
|
-
const status = events.select('status');
|
|
72
|
+
const status = events.select('status', { maxItems: 20 });
|
|
73
73
|
const diff = events.select('diff');
|
|
74
74
|
```
|
|
75
75
|
|
|
76
|
-
Each selected stream is still a signal and an async iterable. A timeline can render every event, while a markdown pane can bind only to `text()`. The runnable shape is captured in [`examples/agent-event-stream.ts`](./examples/agent-event-stream.ts).
|
|
76
|
+
Each selected stream is still a signal and an async iterable. A timeline can render every event, while a markdown pane can bind only to `text()`. Use `maxItems` on the full timeline or selected timelines when an agent can run for minutes. The runnable shape is captured in [`examples/agent-event-stream.ts`](./examples/agent-event-stream.ts), with focused examples for [`streaming-markdown-diff`](./examples/streaming-markdown-diff.ts) and [`server-sse-to-qore-client`](./examples/server-sse-to-qore-client.ts).
|
|
77
|
+
|
|
78
|
+
## Structured Output
|
|
79
|
+
|
|
80
|
+
Structured AI output should also flow through the same runtime path:
|
|
81
|
+
|
|
82
|
+
```ts
|
|
83
|
+
const result = stream.json<{ title: string; items: string[] }>(provider.chat(prompt));
|
|
84
|
+
|
|
85
|
+
result(); // null until valid JSON is available, then the parsed object
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
For line-delimited event streams, use the same idea per line:
|
|
89
|
+
|
|
90
|
+
```ts
|
|
91
|
+
const events = stream.ndjson<{ type: string; value: unknown }>(fetch('/api/events').then((r) => r.body));
|
|
92
|
+
|
|
93
|
+
events(); // accumulated structured events
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Use `validate` when you want a typed guard before publishing parsed output into UI state. Invalid JSON or NDJSON fails through the normal stream lifecycle instead of becoming hidden glue code.
|
|
97
|
+
|
|
98
|
+
For long-running feeds, bound only the signal window while keeping the stream lifecycle and async iteration intact:
|
|
99
|
+
|
|
100
|
+
```ts
|
|
101
|
+
const timeline = stream.ndjson(agent.events(), { maxItems: 200 });
|
|
102
|
+
```
|
|
77
103
|
|
|
78
104
|
|
|
79
105
|
## React Adapter
|
|
@@ -101,7 +127,7 @@ See [React Adapter](./docs/react.md) for lifecycle, status, abort, and signal su
|
|
|
101
127
|
|
|
102
128
|
## Provider Safety
|
|
103
129
|
|
|
104
|
-
Provider adapters are intended for server-side or trusted runtimes. Do not put `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, or any vendor secret in browser code. For browsers, expose your own SSE or NDJSON endpoint and stream that endpoint into Qore.
|
|
130
|
+
Provider adapters are intended for server-side or trusted runtimes. Do not put `OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, or any vendor secret in browser code. For browsers, expose your own SSE or NDJSON endpoint and stream that endpoint into Qore. See [`examples/server-sse-to-qore-client.ts`](./examples/server-sse-to-qore-client.ts) for the recommended boundary.
|
|
105
131
|
|
|
106
132
|
## Inspect Streams
|
|
107
133
|
|
|
@@ -140,7 +166,7 @@ The inspector is zero-dependency and built on the same `__QORE_DEVTOOLS__` hook
|
|
|
140
166
|
| Node runtime | Supported | `Node >= 18` |
|
|
141
167
|
| Browser runtime | Supported | DOM entrypoints require `document` |
|
|
142
168
|
| Reactive core | Supported | `signal`, `computed`, `effect`, `batch`, `createRoot`, `onCleanup` |
|
|
143
|
-
| Stream runtime | Supported | backpressure, retry, orchestration, async iteration, abort, and DevTools hooks |
|
|
169
|
+
| Stream runtime | Supported | backpressure, bounded collections, retry, orchestration, structured JSON/NDJSON, async iteration, abort, and DevTools hooks |
|
|
144
170
|
| Provider adapters | Supported | OpenAI, Anthropic, OpenRouter, DeepSeek, Ollama, generic SSE, generic line-stream |
|
|
145
171
|
| Browser DOM layer | Supported | `h`, `text`, `dynamic`, `list`, `mount`, `createApp(...).mount(...)` |
|
|
146
172
|
| React adapter | Release-ready | `packages/react` bridges Qore streams through `useSyncExternalStore`; npm publishing is waiting on scope access |
|
|
@@ -30,8 +30,21 @@ export type StreamEventType<TEvent extends StreamEventBase> = TEvent['type'] & s
|
|
|
30
30
|
export type StreamEventOf<TEvent extends StreamEventBase, TType extends StreamEventType<TEvent>> = Extract<TEvent, {
|
|
31
31
|
type: TType;
|
|
32
32
|
}>;
|
|
33
|
-
export type StreamEventOptions<TEvent extends StreamEventBase> = Omit<
|
|
33
|
+
export type StreamEventOptions<TEvent extends StreamEventBase> = Omit<StreamCollectionOptions<TEvent>, 'seed' | 'reduce'>;
|
|
34
|
+
export interface StreamCollectionOptions<TChunk> extends StreamOptions<TChunk, TChunk[]> {
|
|
35
|
+
maxItems?: number;
|
|
36
|
+
}
|
|
37
|
+
export interface StructuredStreamOptions<TValue> extends Omit<StreamOptions<TValue, TValue | null>, 'seed' | 'reduce'> {
|
|
38
|
+
seed?: TValue | null;
|
|
39
|
+
parse?: (text: string) => TValue;
|
|
40
|
+
validate?: (value: unknown) => value is TValue;
|
|
41
|
+
}
|
|
42
|
+
export interface StructuredLineStreamOptions<TValue> extends Omit<StreamCollectionOptions<TValue>, 'reduce'> {
|
|
43
|
+
parse?: (text: string) => TValue;
|
|
44
|
+
validate?: (value: unknown) => value is TValue;
|
|
45
|
+
}
|
|
34
46
|
export type StreamSelectOptions<TEvent extends StreamEventBase, TValue> = StreamOptions<TEvent, TValue>;
|
|
47
|
+
export type StreamSelectCollectionOptions<TEvent extends StreamEventBase> = StreamCollectionOptions<TEvent>;
|
|
35
48
|
export interface RetryableStreamOptions<TChunk = unknown, TValue = string> extends StreamOptions<TChunk, TValue> {
|
|
36
49
|
maxRetries?: number;
|
|
37
50
|
backoff?: RetryBackoff;
|
|
@@ -69,6 +82,7 @@ export interface QoreStream<TChunk = unknown, TValue = string> extends ReadonlyS
|
|
|
69
82
|
}
|
|
70
83
|
export interface QoreEventStream<TEvent extends StreamEventBase = StreamEventBase> extends QoreStream<TEvent, TEvent[]> {
|
|
71
84
|
select<TType extends StreamEventType<TEvent>>(type: TType): QoreStream<StreamEventOf<TEvent, TType>, Array<StreamEventOf<TEvent, TType>>>;
|
|
85
|
+
select<TType extends StreamEventType<TEvent>>(type: TType, options: StreamSelectCollectionOptions<StreamEventOf<TEvent, TType>>): QoreStream<StreamEventOf<TEvent, TType>, Array<StreamEventOf<TEvent, TType>>>;
|
|
72
86
|
select<TType extends StreamEventType<TEvent>, TValue>(type: TType, options: StreamSelectOptions<StreamEventOf<TEvent, TType>, TValue>): QoreStream<StreamEventOf<TEvent, TType>, TValue>;
|
|
73
87
|
}
|
|
74
88
|
export interface StreamFactory {
|
|
@@ -78,8 +92,10 @@ export interface StreamFactory {
|
|
|
78
92
|
delay?: number;
|
|
79
93
|
}): QoreStream<TChunk, TValue>;
|
|
80
94
|
text<TChunk = unknown>(sourceOrSetup: StreamInput<TChunk, string>, options?: StreamOptions<TChunk, string>): QoreStream<TChunk, string>;
|
|
81
|
-
list<TChunk>(sourceOrSetup: StreamInput<TChunk, TChunk[]>, options?:
|
|
95
|
+
list<TChunk>(sourceOrSetup: StreamInput<TChunk, TChunk[]>, options?: StreamCollectionOptions<TChunk>): QoreStream<TChunk, TChunk[]>;
|
|
82
96
|
latest<TChunk>(sourceOrSetup: StreamInput<TChunk, TChunk | null>, options?: StreamOptions<TChunk, TChunk | null>): QoreStream<TChunk, TChunk | null>;
|
|
97
|
+
json<TValue = unknown>(source: SourceLike<string>, options?: StructuredStreamOptions<TValue>): QoreStream<TValue, TValue | null>;
|
|
98
|
+
ndjson<TValue = unknown>(source: SourceLike<string>, options?: StructuredLineStreamOptions<TValue>): QoreStream<TValue, TValue[]>;
|
|
83
99
|
events<TEvent extends StreamEventBase>(sourceOrSetup: StreamInput<TEvent, TEvent[]>, options?: StreamEventOptions<TEvent>): QoreEventStream<TEvent>;
|
|
84
100
|
withBackpressure<TChunk = unknown, TValue = string>(sourceOrSetup: StreamInput<TChunk, TValue>, backpressure: number | BackpressureOptions, options?: StreamOptions<TChunk, TValue>): QoreStream<TChunk, TValue>;
|
|
85
101
|
paced<TChunk = unknown, TValue = string>(sourceOrSetup: StreamInput<TChunk, TValue>, interval: number, options?: StreamOptions<TChunk, TValue>): QoreStream<TChunk, TValue>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-types.d.ts","sourceRoot":"","sources":["../../../src/core/stream-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,UAAU,EACX,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,aAAa,GAAG,aAAa,GAAG,OAAO,CAAC;AAEhF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,MAAM,EAAE,GACR,aAAa,GACb,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AAE9D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAED,MAAM,WAAW,QAAQ,CAAC,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IACzC,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,aAAa,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,GAAG,MAAM;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACxE,YAAY,CAAC,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,eAAe,CAAC,KAAK,SAAS,MAAM,GAAG,MAAM;IAC5D,IAAI,EAAE,KAAK,CAAC;CACb;AAED,MAAM,MAAM,eAAe,CAAC,MAAM,SAAS,eAAe,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAEtF,MAAM,MAAM,aAAa,CACvB,MAAM,SAAS,eAAe,EAC9B,KAAK,SAAS,eAAe,CAAC,MAAM,CAAC,IACnC,OAAO,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAErC,MAAM,MAAM,kBAAkB,CAAC,MAAM,SAAS,eAAe,IAAI,IAAI,CACnE,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAC/B,MAAM,
|
|
1
|
+
{"version":3,"file":"stream-types.d.ts","sourceRoot":"","sources":["../../../src/core/stream-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,6 @@ export declare function from<TChunk, TValue = string>(source: SourceLike<TChunk>
|
|
|
7
7
|
export declare function mapStream<TInput, TOutput, TValue = string>(source: SourceLike<TInput>, mapper: (chunk: TInput, index: number) => MaybePromise<TOutput>, options?: StreamOptions<TOutput, TValue>): QoreStream<TOutput, TValue>;
|
|
8
8
|
export declare function scanStream<TInput, TOutput>(source: SourceLike<TInput>, reducer: (currentValue: TOutput, chunk: TInput, index: number) => MaybePromise<TOutput>, seed: TOutput, options?: Omit<StreamOptions<TOutput, TOutput>, 'seed' | 'reduce'>): QoreStream<TOutput, TOutput>;
|
|
9
9
|
export { createStream } from './stream-runtime.js';
|
|
10
|
-
export type { BackpressureOptions, QoreEventStream, QoreStream, RetryBackoff, RetryableStreamOptions, StreamController, StreamEventBase, StreamEventOf, StreamEventOptions, StreamEventType, StreamFactory, StreamInput, StreamOptions, StreamSelectOptions, StreamSetup } from './stream-types.js';
|
|
10
|
+
export type { BackpressureOptions, QoreEventStream, QoreStream, RetryBackoff, RetryableStreamOptions, StreamCollectionOptions, StreamController, StreamEventBase, StreamEventOf, StreamEventOptions, StreamEventType, StreamFactory, StreamInput, StreamOptions, StreamSelectCollectionOptions, StreamSelectOptions, StreamSetup, StructuredLineStreamOptions, StructuredStreamOptions } from './stream-types.js';
|
|
11
11
|
export { toAsyncIterable } from './iterable.js';
|
|
12
12
|
//# sourceMappingURL=stream.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../src/core/stream.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAGV,UAAU,
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../src/core/stream.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,KAAK,EAGV,UAAU,EAQV,aAAa,EAKb,aAAa,EAGd,MAAM,mBAAmB,CAAC;AAsX3B,eAAO,MAAM,MAAM,eAAgB,CAAC;AAwIpC,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAC1C,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAC1B,OAAO,GAAE,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/D,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAgB5B;AAGD,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EACxD,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAC1B,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,YAAY,CAAC,OAAO,CAAC,EAC/D,OAAO,GAAE,aAAa,CAAC,OAAO,EAAE,MAAM,CAAM,GAC3C,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAa7B;AAGD,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,EACxC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,EAC1B,OAAO,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,YAAY,CAAC,OAAO,CAAC,EACvF,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAM,GACrE,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAmB9B;AAGD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,UAAU,EACV,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,WAAW,EACX,aAAa,EACb,6BAA6B,EAC7B,mBAAmB,EACnB,WAAW,EACX,2BAA2B,EAC3B,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/src/core/stream.js
CHANGED
|
@@ -18,9 +18,9 @@ streamFactory.text = (sourceOrSetup, options = {}) => createStream(sourceOrSetup
|
|
|
18
18
|
});
|
|
19
19
|
// Convenience constructor for streams that accumulate every chunk into an array.
|
|
20
20
|
streamFactory.list = (sourceOrSetup, options = {}) => createStream(sourceOrSetup, {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
...options,
|
|
22
|
+
seed: trimCollection(options.seed ?? [], options.maxItems),
|
|
23
|
+
reduce: createCollectionReducer(options)
|
|
24
24
|
});
|
|
25
25
|
// Convenience constructor for streams that only expose the latest chunk as current value.
|
|
26
26
|
streamFactory.latest = (sourceOrSetup, options = {}) => createStream(sourceOrSetup, {
|
|
@@ -28,10 +28,84 @@ streamFactory.latest = (sourceOrSetup, options = {}) => createStream(sourceOrSet
|
|
|
28
28
|
reduce: (_, chunk) => chunk,
|
|
29
29
|
...options
|
|
30
30
|
});
|
|
31
|
+
streamFactory.json = (source, options = {}) => {
|
|
32
|
+
const { seed = null, parse = JSON.parse, validate, ...streamOptions } = options;
|
|
33
|
+
return createStream(async (controller) => {
|
|
34
|
+
let buffer = '';
|
|
35
|
+
let parsedOnce = false;
|
|
36
|
+
let lastParsedText = '';
|
|
37
|
+
let lastParseError = null;
|
|
38
|
+
for await (const chunk of toAsyncIterable(source)) {
|
|
39
|
+
if (controller.signal.aborted) {
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
buffer += chunk;
|
|
43
|
+
const candidateText = buffer.trim();
|
|
44
|
+
try {
|
|
45
|
+
const parsed = parseStructuredValue(candidateText, parse, validate);
|
|
46
|
+
parsedOnce = true;
|
|
47
|
+
lastParseError = null;
|
|
48
|
+
if (candidateText !== lastParsedText) {
|
|
49
|
+
lastParsedText = candidateText;
|
|
50
|
+
await controller.push(parsed);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
lastParseError = error;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (!controller.signal.aborted && (!parsedOnce || lastParseError !== null)) {
|
|
58
|
+
throw lastParseError instanceof Error
|
|
59
|
+
? lastParseError
|
|
60
|
+
: new SyntaxError('Structured stream did not produce valid JSON.');
|
|
61
|
+
}
|
|
62
|
+
}, {
|
|
63
|
+
seed,
|
|
64
|
+
reduce: (_, chunk) => chunk,
|
|
65
|
+
...streamOptions
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
streamFactory.ndjson = (source, options = {}) => {
|
|
69
|
+
const { seed = [], parse = JSON.parse, validate, maxItems, ...streamOptions } = options;
|
|
70
|
+
const collectionOptions = maxItems === undefined
|
|
71
|
+
? { ...streamOptions, seed }
|
|
72
|
+
: { ...streamOptions, seed, maxItems };
|
|
73
|
+
return createStream(async (controller) => {
|
|
74
|
+
let buffer = '';
|
|
75
|
+
const publishLine = async (line) => {
|
|
76
|
+
const text = line.trim();
|
|
77
|
+
if (text.length === 0) {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
await controller.push(parseStructuredValue(text, parse, validate));
|
|
81
|
+
};
|
|
82
|
+
for await (const chunk of toAsyncIterable(source)) {
|
|
83
|
+
if (controller.signal.aborted) {
|
|
84
|
+
break;
|
|
85
|
+
}
|
|
86
|
+
buffer += chunk;
|
|
87
|
+
const lines = buffer.split(/\r?\n/);
|
|
88
|
+
buffer = lines.pop() ?? '';
|
|
89
|
+
for (const line of lines) {
|
|
90
|
+
if (controller.signal.aborted) {
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
await publishLine(line);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (!controller.signal.aborted) {
|
|
97
|
+
await publishLine(buffer);
|
|
98
|
+
}
|
|
99
|
+
}, {
|
|
100
|
+
...streamOptions,
|
|
101
|
+
seed: trimCollection(seed, maxItems),
|
|
102
|
+
reduce: createCollectionReducer(collectionOptions)
|
|
103
|
+
});
|
|
104
|
+
};
|
|
31
105
|
streamFactory.events = (sourceOrSetup, options = {}) => attachEventSelectors(createStream(sourceOrSetup, {
|
|
106
|
+
...options,
|
|
32
107
|
seed: [],
|
|
33
|
-
reduce: (
|
|
34
|
-
...options
|
|
108
|
+
reduce: createCollectionReducer(options)
|
|
35
109
|
}));
|
|
36
110
|
// Attach backpressure behavior without changing the reducer semantics.
|
|
37
111
|
streamFactory.withBackpressure = (sourceOrSetup, backpressure, options = {}) => createStream(sourceOrSetup, {
|
|
@@ -180,10 +254,13 @@ function attachEventSelectors(events) {
|
|
|
180
254
|
eventStream.select = function select(type, options) {
|
|
181
255
|
let seen = 0;
|
|
182
256
|
let drain = Promise.resolve();
|
|
183
|
-
const selectedOptions = options
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
257
|
+
const selectedOptions = isCollectionSelectOptions(options)
|
|
258
|
+
? {
|
|
259
|
+
...options,
|
|
260
|
+
seed: trimCollection(options?.seed ?? [], options?.maxItems),
|
|
261
|
+
reduce: createCollectionReducer(options ?? {})
|
|
262
|
+
}
|
|
263
|
+
: options;
|
|
187
264
|
return createStream(async (controller) => {
|
|
188
265
|
const emitFrom = async (chunks) => {
|
|
189
266
|
while (seen < chunks.length && !controller.signal.aborted) {
|
|
@@ -214,6 +291,9 @@ function attachEventSelectors(events) {
|
|
|
214
291
|
};
|
|
215
292
|
return eventStream;
|
|
216
293
|
}
|
|
294
|
+
function isCollectionSelectOptions(options) {
|
|
295
|
+
return options === undefined || Array.isArray(options.seed) || 'maxItems' in options;
|
|
296
|
+
}
|
|
217
297
|
async function resolveRetryDelay(backoff, retry, error) {
|
|
218
298
|
if (typeof backoff === 'function') {
|
|
219
299
|
return Math.max(0, await backoff(retry, error));
|
|
@@ -227,6 +307,40 @@ async function resolveRetryDelay(backoff, retry, error) {
|
|
|
227
307
|
}
|
|
228
308
|
return Math.max(0, backoff);
|
|
229
309
|
}
|
|
310
|
+
function parseStructuredValue(text, parse, validate) {
|
|
311
|
+
const parsed = parse(text);
|
|
312
|
+
if (validate && !validate(parsed)) {
|
|
313
|
+
throw new TypeError('Structured stream value failed validation.');
|
|
314
|
+
}
|
|
315
|
+
return parsed;
|
|
316
|
+
}
|
|
317
|
+
function createCollectionReducer(options) {
|
|
318
|
+
return (currentValue, chunk, index) => {
|
|
319
|
+
const nextValue = options.reduce
|
|
320
|
+
? options.reduce(currentValue, chunk, index)
|
|
321
|
+
: [...currentValue, chunk];
|
|
322
|
+
return trimCollection(nextValue, options.maxItems);
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
function trimCollection(items, maxItems) {
|
|
326
|
+
const normalizedMaxItems = normalizeMaxItems(maxItems);
|
|
327
|
+
if (normalizedMaxItems === null || items.length <= normalizedMaxItems) {
|
|
328
|
+
return items;
|
|
329
|
+
}
|
|
330
|
+
if (normalizedMaxItems === 0) {
|
|
331
|
+
return [];
|
|
332
|
+
}
|
|
333
|
+
return items.slice(items.length - normalizedMaxItems);
|
|
334
|
+
}
|
|
335
|
+
function normalizeMaxItems(maxItems) {
|
|
336
|
+
if (maxItems === undefined) {
|
|
337
|
+
return null;
|
|
338
|
+
}
|
|
339
|
+
if (!Number.isFinite(maxItems)) {
|
|
340
|
+
return null;
|
|
341
|
+
}
|
|
342
|
+
return Math.max(0, Math.floor(maxItems));
|
|
343
|
+
}
|
|
230
344
|
// Turn any iterable or async iterable into a stream, optionally adding source delay.
|
|
231
345
|
export function from(source, options = {}) {
|
|
232
346
|
const { delay = 0, ...streamOptions } = options;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../src/core/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAkB/C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,aAAa,GAAG,CAAC,CACrB,aAA0C,EAC1C,UAAyC,EAAE,EACf,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE;IAC3D,IAAI,EAAE,EAAE;IACR,MAAM,EAAE,UAAU;IAClB,GAAG,OAAO;CACX,CAAC,CAAkB,CAAC;AAErB,mFAAmF;AACnF,aAAa,CAAC,MAAM,GAAG,YAAY,CAAC;AAEpC,qDAAqD;AACrD,aAAa,CAAC,IAAI,GAAG,CACnB,aAA0C,EAC1C,UAAyC,EAAE,EACf,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE;IAC3D,IAAI,EAAE,EAAE;IACR,MAAM,EAAE,UAAU;IAClB,GAAG,OAAO;CACX,CAAC,CAAC;AAEH,iFAAiF;AACjF,aAAa,CAAC,IAAI,GAAG,CACnB,aAA4C,EAC5C,UAA2C,EAAE,EACf,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE;IAC7D,IAAI,EAAE,EAAE;IACR,MAAM,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,YAAY,EAAE,KAAK,CAAC;IACzD,GAAG,OAAO;CACX,CAAC,CAAC;AAEH,0FAA0F;AAC1F,aAAa,CAAC,MAAM,GAAG,CACrB,aAAiD,EACjD,UAAgD,EAAE,EACf,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE;IAClE,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK;IAC3B,GAAG,OAAO;CACX,CAAC,CAAC;AAEH,aAAa,CAAC,MAAM,GAAG,CACrB,aAA4C,EAC5C,UAAsC,EAAE,EACf,EAAE,CAAC,oBAAoB,CAAC,YAAY,CAAC,aAAa,EAAE;IAC7E,IAAI,EAAE,EAAc;IACpB,MAAM,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,YAAY,EAAE,KAAK,CAAC;IACzD,GAAG,OAAO;CACX,CAAC,CAAC,CAAC;AAEJ,uEAAuE;AACvE,aAAa,CAAC,gBAAgB,GAAG,CAC/B,aAA0C,EAC1C,YAA0C,EAC1C,UAAyC,EAAE,EACf,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE;IAC3D,GAAG,OAAO;IACV,YAAY,EAAE,OAAO,OAAO,CAAC,YAAY,KAAK,QAAQ,IAAI,OAAO,CAAC,YAAY,KAAK,IAAI,IAAI,OAAO,YAAY,KAAK,QAAQ;QACzH,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,GAAG,YAAY,EAAE;QAC9C,CAAC,CAAC,YAAY;CACjB,CAAC,CAAC;AAEH,mFAAmF;AACnF,aAAa,CAAC,KAAK,GAAG,CACpB,aAA0C,EAC1C,QAAgB,EAChB,UAAyC,EAAE,EACf,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAC7D,aAAa,EACb,EAAE,QAAQ,EAAE,EACZ,OAAO,CACR,CAAC;AAEF,aAAa,CAAC,KAAK,GAAG,CACpB,OAAkC,EAClC,UAAyC,EAAE,EACf,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;IACjE,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;QAC7C,MAAM,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC,CAAC;AACN,CAAC,EAAE,OAAO,CAAC,CAAC;AAEZ,aAAa,CAAC,MAAM,GAAG,CACrB,OAAkC,EAClC,UAAyC,EAAE,EACf,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;IACjE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM;QACR,CAAC;QAED,MAAM,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC;AACH,CAAC,EAAE,OAAO,CAAC,CAAC;AAEZ,aAAa,CAAC,IAAI,GAAG,CACnB,aAA0C,EAC1C,MAA8C,EAC9C,UAAyC,EAAE,EACf,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;IACjE,MAAM,aAAa,GAAG,KAAK,EAAE,aAA0C,EAAmB,EAAE;QAC1F,MAAM,aAAa,GAAG,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAE3D,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YACxC,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC9B,MAAM;YACR,CAAC;YAED,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,aAAa,CAAC,KAAK,CAAC;IAC7B,CAAC,CAAC;IAEF,IAAI,YAAY,GAAG,MAAM,aAAa,CAAC,aAAa,CAAC,CAAC;IAEtD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;QAC9C,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM;QACR,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACpD,YAAY,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;AACH,CAAC,EAAE,OAAO,CAAC,CAAC;AAEZ,aAAa,CAAC,IAAI,GAAG,CACnB,OAAkC,EAClC,UAAyC,EAAE,EACf,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;IACjE,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACtD,KAAK;QACL,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;KAC1D,CAAC,CAAC,CAAC;IAEJ,IAAI,MAAM,GAAiC,IAAI,CAAC;IAEhD,IAAI,CAAC;QACH,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,KAAK,IAAI,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnF,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;gBACxF,KAAK;gBACL,MAAM,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE;aAC9B,CAAC,CAAC,CAAC,CAAC;YAEL,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC3B,MAAM,cAAc,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,CAAC,CAAC;gBAE5F,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;oBACxB,eAAe,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;gBAC5C,CAAC;gBAED,SAAS;YACX,CAAC;YAED,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAC;YAC3F,MAAM,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACzC,OAAO;QACT,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,eAAe,EAAE,CAAC;YACxC,IAAI,SAAS,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;gBAClC,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACtC,CAAC;QACH,CAAC;QAED,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAEtC,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;gBACnB,MAAM;YACR,CAAC;YAED,MAAM,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;YAAS,CAAC;QACT,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,eAAe,EAAE,CAAC;YAC3C,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACxB,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,EAAE,OAAO,CAAC,CAAC;AAEZ,aAAa,CAAC,SAAS,GAAG,CACxB,aAA+D,EAC/D,UAAkD,EAAE,EACxB,EAAE;IAC9B,MAAM,EACJ,UAAU,GAAG,CAAC,EACd,OAAO,GAAG,aAAa,EACvB,GAAG,aAAa,EACjB,GAAG,OAAO,CAAC;IAEZ,OAAO,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;QACvC,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,MAAM,WAAW,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC;gBACtD,OAAO;YACT,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,OAAO,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACvD,MAAM,KAAK,CAAC;gBACd,CAAC;gBAED,OAAO,IAAI,CAAC,CAAC;gBACb,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;gBAE/D,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;oBACd,MAAM,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,EAAE,aAAa,CAAC,CAAC;AACpB,CAAC,CAAC;AAEF,aAAa,CAAC,SAAS,GAAG,CACxB,MAA0B,EAC1B,MAA0E,EAC1E,UAAyC,EAAE,EACf,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;IACjE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,UAAU,GAAyB,IAAI,CAAC;IAE5C,MAAM,UAAU,GAAG,CAAC,KAAa,EAAE,WAA+B,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;QACjF,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC;YACvD,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;gBACvD,MAAM;YACR,CAAC;YAED,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACnB,IAAI,KAAK,KAAK,WAAW,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACvD,OAAO;QACT,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC9B,MAAM;QACR,CAAC;QAED,WAAW,IAAI,CAAC,CAAC;QACjB,MAAM,KAAK,GAAG,WAAW,CAAC;QAC1B,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/C,UAAU,GAAG,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC5C,KAAK,IAAI,CAAC,CAAC;IACb,CAAC;IAED,MAAM,UAAU,CAAC;AACnB,CAAC,EAAE,OAAO,CAAC,CAAC;AAEZ,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;AAE1B,gDAAgD;AAChD,MAAM,CAAC,MAAM,MAAM,GAAG,aAAa,CAAC;AAEpC,SAAS,oBAAoB,CAC3B,MAAoC;IAEpC,MAAM,WAAW,GAAG,MAAiC,CAAC;IAEtD,WAAW,CAAC,MAAM,GAAG,SAAS,MAAM,CAClC,IAAW,EACX,OAAmE;QAInE,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAE9B,MAAM,eAAe,GAAG,OAAO,IAAI;YACjC,IAAI,EAAE,EAAqB;YAC3B,MAAM,EAAE,CAAC,YAA6B,EAAE,KAAoB,EAAE,EAAE,CAAC,CAAC,GAAG,YAAY,EAAE,KAAK,CAAC;SAC1F,CAAC;QAEF,OAAO,YAAY,CAA0C,KAAK,EAAE,UAAU,EAAE,EAAE;YAChF,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAgB,EAAiB,EAAE;gBACzD,OAAO,IAAI,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC3B,IAAI,IAAI,CAAC,CAAC;oBAEV,IAAI,KAAK,EAAE,IAAI,KAAK,IAAI,EAAE,CAAC;wBACzB,MAAM,UAAU,CAAC,IAAI,CAAC,KAAsB,CAAC,CAAC;oBAChD,CAAC;gBACH,CAAC;YACH,CAAC,CAAC;YAEF,MAAM,UAAU,GAAG,CAAC,MAAgB,EAAQ,EAAE;gBAC5C,KAAK,GAAG,KAAK;qBACV,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;qBAC5B,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;oBACxB,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzB,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YAEF,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACjC,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YAE9E,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,KAAK,CAAC;gBACnB,MAAM,KAAK,CAAC;YACd,CAAC;oBAAS,CAAC;gBACT,WAAW,EAAE,CAAC;YAChB,CAAC;QACH,CAAC,EAAE,eAAyE,CAAC,CAAC;IAChF,CAAC,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,OAAqB,EAAE,KAAa,EAAE,KAAc;IACnF,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;QAC9B,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,IAAI,CAClB,MAA0B,EAC1B,UAA8D,EAAE;IAEhE,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;IAEhD,OAAO,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;QACvC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC9B,MAAM;YACR,CAAC;YAED,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,MAAM,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC;YAED,MAAM,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,EAAE,aAAa,CAAC,CAAC;AACpB,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,SAAS,CACvB,MAA0B,EAC1B,MAA+D,EAC/D,UAA0C,EAAE;IAE5C,OAAO,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;QACvC,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC9B,MAAM;YACR,CAAC;YAED,MAAM,UAAU,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;YAClD,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;IACH,CAAC,EAAE,OAAO,CAAC,CAAC;AACd,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CACxB,MAA0B,EAC1B,OAAuF,EACvF,IAAa,EACb,UAAoE,EAAE;IAEtE,OAAO,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;QACvC,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;YAClD,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC9B,MAAM;YACR,CAAC;YAED,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAC/C,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/B,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;IACH,CAAC,EAAE;QACD,IAAI;QACJ,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK;QAC3B,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAkBnD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../src/core/stream.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export type { EffectOptions, EffectScheduler, SubscribeOptions } from './core/si
|
|
|
4
4
|
export { createStreamInspector } from './core/devtools.js';
|
|
5
5
|
export type { QoreDevtoolsEvent, QoreDevtoolsHook, QoreDevtoolsStreamEvent, QoreDevtoolsStreamPhase, QoreInspectedStream, QoreStreamInspector, StreamInspectorOptions } from './core/devtools.js';
|
|
6
6
|
export { stream, createStream, from, mapStream, scanStream, toAsyncIterable } from './core/stream.js';
|
|
7
|
-
export type { BackpressureOptions, QoreEventStream, QoreStream, RetryBackoff, RetryableStreamOptions, StreamController, StreamEventBase, StreamEventOf, StreamEventOptions, StreamEventType, StreamFactory, StreamInput, StreamOptions, StreamSelectOptions, StreamSetup } from './core/stream.js';
|
|
7
|
+
export type { BackpressureOptions, QoreEventStream, QoreStream, RetryBackoff, RetryableStreamOptions, StreamCollectionOptions, StreamController, StreamEventBase, StreamEventOf, StreamEventOptions, StreamEventType, StreamFactory, StreamInput, StreamOptions, StreamSelectCollectionOptions, StreamSelectOptions, StreamSetup, StructuredLineStreamOptions, StructuredStreamOptions } from './core/stream.js';
|
|
8
8
|
export { createResponse, response } from './core/response.js';
|
|
9
9
|
export type { CreateResponseOptions, GlobalAbortSignal, MaybePromise, ResponseConsumeContext, ResponseExecutorContext, ResponseFactory, ResponseReactiveState, ResponseRunOptions, ResponseSnapshot, ResponseSource, ResponseSourceFactory, ResponseState, ResponseStatus, SourceLike } from './core/response.js';
|
|
10
10
|
export { createApp } from './dom/app.js';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC7G,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/E,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/F,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACtG,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,UAAU,EACV,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG7G,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAU3D,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG7G,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAU3D,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAsBtG,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAiB9D,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAoB7D,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACtB,MAAM,oBAAoB,CAAC;AAiD5B,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC"}
|
package/docs/api.md
CHANGED
|
@@ -24,6 +24,8 @@ import { stream } from '@qorejs/qore';
|
|
|
24
24
|
- `stream(source, options?)`: accumulate chunks into a text signal
|
|
25
25
|
- `stream.list(source, options?)`: accumulate chunks into an array signal
|
|
26
26
|
- `stream.latest(source, options?)`: keep only the latest chunk
|
|
27
|
+
- `stream.json(source, options?)`: parse JSON text into structured signal state
|
|
28
|
+
- `stream.ndjson(source, options?)`: parse line-delimited JSON text into a structured event signal
|
|
27
29
|
- `stream.from(source, options?)`: normalize any iterable source, optionally with source delay
|
|
28
30
|
- `stream.events(source, options?)`: accumulate typed runtime events into a timeline signal
|
|
29
31
|
- `stream.withBackpressure(source, options?)`: pace stream commits
|
|
@@ -44,7 +46,7 @@ const text = events.select('text', {
|
|
|
44
46
|
reduce: (current, event) => current + event.text
|
|
45
47
|
});
|
|
46
48
|
const tools = events.select('tool_call');
|
|
47
|
-
const status = events.select('status');
|
|
49
|
+
const status = events.select('status', { maxItems: 20 });
|
|
48
50
|
const diff = events.select('diff', {
|
|
49
51
|
seed: '',
|
|
50
52
|
reduce: (current, event) => current + event.patch
|
|
@@ -53,7 +55,38 @@ const diff = events.select('diff', {
|
|
|
53
55
|
|
|
54
56
|
`from(source, options?)` remains available as a standalone export for callers that prefer named helpers. `stream.from(source, options?)` is the same helper exposed on the factory for API discoverability.
|
|
55
57
|
|
|
56
|
-
`stream.events(...)` returns a `QoreEventStream`: a `QoreStream` whose current value is the full event timeline. `select(type)` projects one event type into another stream signal. Without a custom reducer, selected streams accumulate matching events into an array. See [`examples/agent-event-stream.ts`](../examples/agent-event-stream.ts) for a complete typed agent surface.
|
|
58
|
+
`stream.events(...)` returns a `QoreEventStream`: a `QoreStream` whose current value is the full event timeline. `select(type)` projects one event type into another stream signal. Without a custom reducer, selected streams accumulate matching events into an array. `select(type, { maxItems })` bounds only that selected signal window, which is useful for long-running status, retry, and tool-call panes. See [`examples/agent-event-stream.ts`](../examples/agent-event-stream.ts) for a complete typed agent surface.
|
|
59
|
+
|
|
60
|
+
### Structured JSON
|
|
61
|
+
|
|
62
|
+
```js
|
|
63
|
+
const result = stream.json(provider.chat(prompt), {
|
|
64
|
+
validate(value) {
|
|
65
|
+
return typeof value === 'object' && value !== null;
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
`stream.json(...)` parses accumulated text after each chunk. The signal value is `null` until valid JSON is available, then it becomes the parsed object. If the source finishes without valid JSON, the stream fails through the normal `status`, `error`, and `ready` lifecycle.
|
|
71
|
+
|
|
72
|
+
```js
|
|
73
|
+
const events = stream.ndjson(source);
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
`stream.ndjson(...)` parses each complete line as JSON, publishes each parsed object as a chunk, and exposes the accumulated event list as signal state. Blank lines are ignored. An invalid trailing line fails the stream while preserving already-published events.
|
|
77
|
+
|
|
78
|
+
Collection-style streams accept `maxItems` to keep the signal value bounded for
|
|
79
|
+
long-running feeds:
|
|
80
|
+
|
|
81
|
+
```js
|
|
82
|
+
const events = stream.events(agent.run(task), { maxItems: 200 });
|
|
83
|
+
const status = events.select('status', { maxItems: 20 });
|
|
84
|
+
const lines = stream.ndjson(source, { maxItems: 500 });
|
|
85
|
+
const rows = stream.list(source, { maxItems: 100 });
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
`maxItems` limits the current signal array. It does not hide chunks from async
|
|
89
|
+
iteration or lifecycle counters.
|
|
57
90
|
|
|
58
91
|
## DOM
|
|
59
92
|
|
package/docs/comparisons.md
CHANGED
|
@@ -33,3 +33,16 @@ RxJS is a powerful observable toolkit. Qore is smaller and UI-directed: the resu
|
|
|
33
33
|
Do not use Qore as a replacement for a full app framework if you need routing, forms, UI component catalogs, or a large ecosystem surface.
|
|
34
34
|
|
|
35
35
|
Use Qore where the hard part is streamed data becoming reactive interface state.
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
## Benchmark Language
|
|
39
|
+
|
|
40
|
+
Qore should not claim to be faster than React as a brand. The precise claim is narrower and more defensible:
|
|
41
|
+
|
|
42
|
+
```text
|
|
43
|
+
Fine-grained stream updates
|
|
44
|
+
vs
|
|
45
|
+
snapshot transcript rewrites
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Qore optimizes the path where each token updates the stream signal and only the dependent UI surface changes. Snapshot baselines rewrite a larger transcript region. The benchmark should measure mutation count, added nodes, rewritten bytes, and update scope instead of turning framework names into a scoreboard.
|
package/docs/providers.md
CHANGED
|
@@ -56,3 +56,20 @@ const answer = stream(openai.chat('Explain stream = signal'));
|
|
|
56
56
|
```
|
|
57
57
|
|
|
58
58
|
Keep this code on the server when it uses real secrets.
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
## Server Boundary
|
|
62
|
+
|
|
63
|
+
Provider adapters are designed for server-side or otherwise trusted runtimes. A browser application should not receive provider API keys. The recommended production path is:
|
|
64
|
+
|
|
65
|
+
```text
|
|
66
|
+
Browser UI -> your SSE / NDJSON endpoint -> provider adapter -> model provider
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Then the browser consumes your endpoint as a Qore stream:
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
const answer = stream(fetch('/api/agent').then((response) => response.body));
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
For a complete application boundary example, see [`examples/server-sse-to-qore-client.ts`](../examples/server-sse-to-qore-client.ts).
|
package/docs/runtime.md
CHANGED
|
@@ -50,6 +50,55 @@ stream.switchMap(promptChanges, (prompt) => openai.chat(prompt));
|
|
|
50
50
|
|
|
51
51
|
The composed result is still a stream signal.
|
|
52
52
|
|
|
53
|
+
## Structured JSON
|
|
54
|
+
|
|
55
|
+
AI providers increasingly return structured output as streamed text. Keep that
|
|
56
|
+
boundary reactive too:
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
const result = stream.json<{ title: string; items: string[] }>(provider.chat(prompt), {
|
|
60
|
+
validate(value): value is { title: string; items: string[] } {
|
|
61
|
+
return typeof value === 'object'
|
|
62
|
+
&& value !== null
|
|
63
|
+
&& 'title' in value
|
|
64
|
+
&& 'items' in value;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
result(); // null until valid JSON is available, then the parsed object
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
`stream.json()` parses the accumulated text after each chunk. It publishes valid
|
|
72
|
+
JSON as signal state and fails the stream if the source completes without valid
|
|
73
|
+
JSON. It intentionally does not pretend that arbitrary half-written JSON can be
|
|
74
|
+
parsed safely.
|
|
75
|
+
|
|
76
|
+
For event streams that arrive as line-delimited JSON, use `stream.ndjson()`:
|
|
77
|
+
|
|
78
|
+
```ts
|
|
79
|
+
const events = stream.ndjson<{ type: string; value: unknown }>(agentEvents);
|
|
80
|
+
|
|
81
|
+
events(); // accumulated structured events
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Each valid line is published as a chunk and added to the signal array. Blank
|
|
85
|
+
lines are ignored, and an invalid final line fails the stream while keeping the
|
|
86
|
+
events that were already safely published.
|
|
87
|
+
|
|
88
|
+
## Bounded Collections
|
|
89
|
+
|
|
90
|
+
Agent timelines, logs, and tool-event feeds can run much longer than a chat
|
|
91
|
+
answer. Use `maxItems` when the UI only needs the latest window:
|
|
92
|
+
|
|
93
|
+
```ts
|
|
94
|
+
const timeline = stream.events(agent.run(task), { maxItems: 200 });
|
|
95
|
+
const logs = stream.ndjson(logSource, { maxItems: 500 });
|
|
96
|
+
const rows = stream.list(rowSource, { maxItems: 100 });
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
The current signal value keeps the newest items. Async iteration, chunk history,
|
|
100
|
+
and `chunkCount()` still reflect the full stream lifecycle.
|
|
101
|
+
|
|
53
102
|
## Event Streams
|
|
54
103
|
|
|
55
104
|
Provider streams are only the transport boundary. Agent interfaces need a richer runtime surface: text tokens, tool calls, status updates, reasoning notes, diffs, artifacts, retries, and errors can all be modeled as typed events.
|