Skip to content

Commit 0ea2380

Browse files
chore(internal): refactor sse event parsing
1 parent fa5fc31 commit 0ea2380

File tree

5 files changed

+18
-3
lines changed

5 files changed

+18
-3
lines changed

src/core/streaming.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export class Stream<Item> implements AsyncIterable<Item> {
3535
response: Response,
3636
controller: AbortController,
3737
client?: OpenAI,
38+
synthesizeEventData?: boolean,
3839
): Stream<Item> {
3940
let consumed = false;
4041
const logger = client ? loggerFor(client) : console;
@@ -69,7 +70,7 @@ export class Stream<Item> implements AsyncIterable<Item> {
6970
throw new APIError(undefined, data.error, undefined, response.headers);
7071
}
7172

72-
yield data;
73+
yield synthesizeEventData ? { event: sse.event, data } : data;
7374
} else {
7475
let data;
7576
try {

src/internal/parse.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,20 @@ 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, client) as any;
31+
return props.options.__streamClass.fromSSEResponse(
32+
response,
33+
props.controller,
34+
client,
35+
props.options.__synthesizeEventData,
36+
) as any;
3237
}
3338

34-
return Stream.fromSSEResponse(response, props.controller, client) as any;
39+
return Stream.fromSSEResponse(
40+
response,
41+
props.controller,
42+
client,
43+
props.options.__synthesizeEventData,
44+
) as any;
3545
}
3646

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

src/internal/request-options.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export type RequestOptions = {
7979
__metadata?: Record<string, unknown>;
8080
__binaryResponse?: boolean | undefined;
8181
__streamClass?: typeof Stream;
82+
__synthesizeEventData?: boolean;
8283
};
8384

8485
export type EncodedContent = { bodyHeaders: HeadersLike; body: BodyInit };

src/resources/beta/threads/runs/runs.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ export class Runs extends APIResource {
7575
...options,
7676
headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),
7777
stream: params.stream ?? false,
78+
__synthesizeEventData: true,
7879
}) as APIPromise<Run> | APIPromise<Stream<AssistantsAPI.AssistantStreamEvent>>;
7980
}
8081

@@ -259,6 +260,7 @@ export class Runs extends APIResource {
259260
...options,
260261
headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),
261262
stream: params.stream ?? false,
263+
__synthesizeEventData: true,
262264
}) as APIPromise<Run> | APIPromise<Stream<AssistantsAPI.AssistantStreamEvent>>;
263265
}
264266

src/resources/beta/threads/threads.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,7 @@ export class Threads extends APIResource {
152152
...options,
153153
headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),
154154
stream: body.stream ?? false,
155+
__synthesizeEventData: true,
155156
}) as APIPromise<RunsAPI.Run> | APIPromise<Stream<AssistantsAPI.AssistantStreamEvent>>;
156157
}
157158

0 commit comments

Comments
 (0)