mirror of
https://github.com/Onewon/claude-code.git
synced 2026-04-26 23:01:23 +03:00
31 lines
1.0 KiB
JavaScript
31 lines
1.0 KiB
JavaScript
import { AnthropicError } from "../../error.mjs";
|
|
import { ReadableStreamToAsyncIterable } from "../stream-utils.mjs";
|
|
import { LineDecoder } from "./line.mjs";
|
|
export class JSONLDecoder {
|
|
constructor(iterator, controller) {
|
|
this.iterator = iterator;
|
|
this.controller = controller;
|
|
}
|
|
async *decoder() {
|
|
const lineDecoder = new LineDecoder();
|
|
for await (const chunk of this.iterator) {
|
|
for (const line of lineDecoder.decode(chunk)) {
|
|
yield JSON.parse(line);
|
|
}
|
|
}
|
|
for (const line of lineDecoder.flush()) {
|
|
yield JSON.parse(line);
|
|
}
|
|
}
|
|
[Symbol.asyncIterator]() {
|
|
return this.decoder();
|
|
}
|
|
static fromResponse(response, controller) {
|
|
if (!response.body) {
|
|
controller.abort();
|
|
throw new AnthropicError(`Attempted to iterate over a response with no body`);
|
|
}
|
|
return new JSONLDecoder(ReadableStreamToAsyncIterable(response.body), controller);
|
|
}
|
|
}
|
|
//# sourceMappingURL=jsonl.mjs.map
|