Skip to content

Commit

Permalink
fix(client): event stream response check
Browse files Browse the repository at this point in the history
  • Loading branch information
drochetti committed Sep 19, 2024
1 parent 4da11f3 commit 9e21c33
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 5 deletions.
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@

/dist
/coverage
/docs
package-lock.json
2 changes: 1 addition & 1 deletion libs/client/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@fal-ai/serverless-client",
"description": "The fal serverless JS/TS client",
"version": "0.14.2",
"version": "0.14.3",
"license": "MIT",
"repository": {
"type": "git",
Expand Down
11 changes: 8 additions & 3 deletions libs/client/src/streaming.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import { storageImpl } from "./storage";

export type StreamingConnectionMode = "client" | "server";

const CONTENT_TYPE_EVENT_STREAM = "text/event-stream";

/**
* The stream API options. It requires the API input and also
* offers configuration options.
Expand Down Expand Up @@ -135,7 +137,7 @@ export class FalStream<Input, Output> {
const response = await fetch(parsedUrl.toString(), {
method: method.toUpperCase(),
headers: {
accept: options.accept ?? "text/event-stream",
accept: options.accept ?? CONTENT_TYPE_EVENT_STREAM,
"content-type": "application/json",
},
body: input && method !== "get" ? JSON.stringify(input) : undefined,
Expand All @@ -145,7 +147,7 @@ export class FalStream<Input, Output> {
}
return await dispatchRequest(method.toUpperCase(), this.url, input, {
headers: {
accept: options.accept ?? "text/event-stream",
accept: options.accept ?? CONTENT_TYPE_EVENT_STREAM,
},
responseHandler: this.handleResponse,
signal: this.abortController.signal,
Expand Down Expand Up @@ -180,8 +182,11 @@ export class FalStream<Input, Output> {
return;
}

const isEventStream = response.headers
.get("content-type")
.startsWith(CONTENT_TYPE_EVENT_STREAM);
// any response that is not a text/event-stream will be handled as a binary stream
if (response.headers.get("content-type") !== "text/event-stream") {
if (!isEventStream) {
const reader = body.getReader();
const emitRawChunk = () => {
reader.read().then(({ done, value }) => {
Expand Down
6 changes: 5 additions & 1 deletion typedoc.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,11 @@
"excludeInternal": false,
"includeVersion": true,
"githubPages": true,
"plugin": ["typedoc-plugin-mdn-links", "typedoc-plugin-extras", "typedoc-github-theme"],
"plugin": [
"typedoc-plugin-mdn-links",
"typedoc-plugin-extras",
"typedoc-github-theme"
],
"readme": "none",
"hideGenerator": true
}

0 comments on commit 9e21c33

Please sign in to comment.