fix node-fetch vs. fetch compatibility

This commit is contained in:
Viet Huynh
2023-09-26 12:53:22 +07:00
parent a521b13323
commit 4135102371
+10 -11
View File
@@ -1,8 +1,7 @@
import { once } from "events"; import { once } from "events";
import { createReadStream, createWriteStream } from "fs"; import { ReadStream, createReadStream, createWriteStream } from "fs";
import { basename } from "path"; import { basename } from "path";
import { createInterface } from "readline"; import { createInterface } from "readline";
import { WritableStream } from "stream/web";
if (!globalThis.fetch) { if (!globalThis.fetch) {
globalThis.fetch = (await import("node-fetch")).default; globalThis.fetch = (await import("node-fetch")).default;
@@ -58,19 +57,19 @@ export const isComment = (value) =>
*/ */
export const downloadFiles = async (filePath, urls) => { export const downloadFiles = async (filePath, urls) => {
const writeStream = createWriteStream(filePath, { flags: "a" }); 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))); const responses = await Promise.all(urls.map((url) => fetch(url)));
for (const response of responses) { for (const response of responses) {
await response.body?.pipeTo(writableStream, { preventClose: true }); const readable = ReadStream.from(response.body, {
writeStream.write("\n"); autoDestroy: true,
} });
await writableStream.close(); readable.on("end", () => {
writeStream.write("\n");
});
readable.pipe(writeStream, { end: false });
}
}; };
/** /**