Skip to content

Commit e5ab01d

Browse files
fix: avoid console usage
1 parent 572e7b2 commit e5ab01d

File tree

2 files changed

+26
-12
lines changed

2 files changed

+26
-12
lines changed

src/core/streaming.ts

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ import { ReadableStreamToAsyncIterable } from '../internal/shims';
66
import { isAbortError } from '../internal/errors';
77
import { safeJSON } from '../internal/utils/values';
88
import { encodeUTF8 } from '../internal/utils/bytes';
9+
import { loggerFor } from '../internal/utils/log';
10+
import type { BaseAnthropic } from '../client';
911

1012
import { APIError } from './error';
1113

@@ -19,16 +21,24 @@ export type ServerSentEvent = {
1921

2022
export class Stream<Item> implements AsyncIterable<Item> {
2123
controller: AbortController;
24+
#client: BaseAnthropic | undefined;
2225

2326
constructor(
2427
private iterator: () => AsyncIterator<Item>,
2528
controller: AbortController,
29+
client?: BaseAnthropic,
2630
) {
2731
this.controller = controller;
32+
this.#client = client;
2833
}
2934

30-
static fromSSEResponse<Item>(response: Response, controller: AbortController): Stream<Item> {
35+
static fromSSEResponse<Item>(
36+
response: Response,
37+
controller: AbortController,
38+
client?: BaseAnthropic,
39+
): Stream<Item> {
3140
let consumed = false;
41+
const logger = client ? loggerFor(client) : console;
3242

3343
async function* iterator(): AsyncIterator<Item, any, undefined> {
3444
if (consumed) {
@@ -42,8 +52,8 @@ export class Stream<Item> implements AsyncIterable<Item> {
4252
try {
4353
yield JSON.parse(sse.data);
4454
} catch (e) {
45-
console.error(`Could not parse message into JSON:`, sse.data);
46-
console.error(`From chunk:`, sse.raw);
55+
logger.error(`Could not parse message into JSON:`, sse.data);
56+
logger.error(`From chunk:`, sse.raw);
4757
throw e;
4858
}
4959
}
@@ -59,8 +69,8 @@ export class Stream<Item> implements AsyncIterable<Item> {
5969
try {
6070
yield JSON.parse(sse.data);
6171
} catch (e) {
62-
console.error(`Could not parse message into JSON:`, sse.data);
63-
console.error(`From chunk:`, sse.raw);
72+
logger.error(`Could not parse message into JSON:`, sse.data);
73+
logger.error(`From chunk:`, sse.raw);
6474
throw e;
6575
}
6676
}
@@ -84,14 +94,18 @@ export class Stream<Item> implements AsyncIterable<Item> {
8494
}
8595
}
8696

87-
return new Stream(iterator, controller);
97+
return new Stream(iterator, controller, client);
8898
}
8999

90100
/**
91101
* Generates a Stream from a newline-separated ReadableStream
92102
* where each item is a JSON value.
93103
*/
94-
static fromReadableStream<Item>(readableStream: ReadableStream, controller: AbortController): Stream<Item> {
104+
static fromReadableStream<Item>(
105+
readableStream: ReadableStream,
106+
controller: AbortController,
107+
client?: BaseAnthropic,
108+
): Stream<Item> {
95109
let consumed = false;
96110

97111
async function* iterLines(): AsyncGenerator<string, void, unknown> {
@@ -131,7 +145,7 @@ export class Stream<Item> implements AsyncIterable<Item> {
131145
}
132146
}
133147

134-
return new Stream(iterator, controller);
148+
return new Stream(iterator, controller, client);
135149
}
136150

137151
[Symbol.asyncIterator](): AsyncIterator<Item> {
@@ -161,8 +175,8 @@ export class Stream<Item> implements AsyncIterable<Item> {
161175
};
162176

163177
return [
164-
new Stream(() => teeIterator(left), this.controller),
165-
new Stream(() => teeIterator(right), this.controller),
178+
new Stream(() => teeIterator(left), this.controller, this.#client),
179+
new Stream(() => teeIterator(right), this.controller, this.#client),
166180
];
167181
}
168182

src/internal/parse.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@ export async function defaultParseResponse<T>(
2828
// that if you set `stream: true` the response type must also be `Stream<T>`
2929

3030
if (props.options.__streamClass) {
31-
return props.options.__streamClass.fromSSEResponse(response, props.controller) as any;
31+
return props.options.__streamClass.fromSSEResponse(response, props.controller, client) as any;
3232
}
3333

34-
return Stream.fromSSEResponse(response, props.controller) as any;
34+
return Stream.fromSSEResponse(response, props.controller, client) as any;
3535
}
3636

3737
// fetch refuses to read the body when the status code is 204.

0 commit comments

Comments
 (0)