From 4135102371764222932691fd2b605e9a830eb200 Mon Sep 17 00:00:00 2001 From: Viet Huynh Date: Tue, 26 Sep 2023 12:53:22 +0700 Subject: [PATCH] fix node-fetch vs. fetch compatibility --- lib/utils.js | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/lib/utils.js b/lib/utils.js index 0eb065c..607be0f 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -1,8 +1,7 @@ import { once } from "events"; -import { createReadStream, createWriteStream } from "fs"; +import { ReadStream, createReadStream, createWriteStream } from "fs"; import { basename } from "path"; import { createInterface } from "readline"; -import { WritableStream } from "stream/web"; if (!globalThis.fetch) { globalThis.fetch = (await import("node-fetch")).default; @@ -58,19 +57,19 @@ export const isComment = (value) => */ export const downloadFiles = async (filePath, urls) => { const writeStream = createWriteStream(filePath, { flags: "a" }); - const writableStream = new WritableStream({ - write(chunk) { - writeStream.write(chunk); - }, - }); const responses = await Promise.all(urls.map((url) => fetch(url))); for (const response of responses) { - await response.body?.pipeTo(writableStream, { preventClose: true }); - writeStream.write("\n"); - } + const readable = ReadStream.from(response.body, { + autoDestroy: true, + }); - await writableStream.close(); + readable.on("end", () => { + writeStream.write("\n"); + }); + + readable.pipe(writeStream, { end: false }); + } }; /**