Skip to content

Commit 139fb89

Browse files
committed
Transform URLs in streaming responses when useFileOutput is enabled
1 parent 4430e6b commit 139fb89

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

lib/stream.js

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,18 @@ class ServerSentEvent {
4848
* @param {string} config.url The URL to connect to.
4949
* @param {typeof fetch} [config.fetch] The URL to connect to.
5050
* @param {object} [config.options] The EventSource options.
51+
* @param {boolean} [config.options.useFileOutput] Whether to use the file output stream.
5152
* @returns {ReadableStream<ServerSentEvent> & AsyncIterable<ServerSentEvent>}
5253
*/
5354
function createReadableStream({ url, fetch, options = {} }) {
55+
const { useFileOutput = false, headers = {}, ...initOptions } = options;
56+
5457
return new ReadableStream({
5558
async start(controller) {
5659
const init = {
57-
...options,
60+
...initOptions,
5861
headers: {
59-
...options.headers,
62+
...headers,
6063
Accept: "text/event-stream",
6164
},
6265
};
@@ -88,9 +91,15 @@ function createReadableStream({ url, fetch, options = {} }) {
8891
break;
8992
}
9093

91-
controller.enqueue(
92-
new ServerSentEvent(event.event, event.data, event.id)
93-
);
94+
let data = event.data;
95+
if (
96+
useFileOutput &&
97+
typeof data === "string" &&
98+
(data.startsWith("https:") || data.startsWith("data:"))
99+
) {
100+
data = createFileOutput({ data, fetch });
101+
}
102+
controller.enqueue(new ServerSentEvent(event.event, data, event.id));
94103
}
95104

96105
controller.close();

0 commit comments

Comments
 (0)