feat: implement directory size check and seed abort

This commit is contained in:
Hachi-R 2024-12-22 09:08:20 -03:00
parent bd184fceda
commit abb3db4e30
2 changed files with 53 additions and 11 deletions

View file

@ -1,3 +1,6 @@
import path from "node:path";
import fs from "node:fs";
export const calculateETA = (
totalLength: number,
completedLength: number,
@ -11,3 +14,26 @@ export const calculateETA = (
return -1;
};
export const getDirSize = async (dir: string): Promise<number> => {
const getItemSize = async (filePath: string): Promise<number> => {
const stat = await fs.promises.stat(filePath);
if (stat.isDirectory()) {
return getDirSize(filePath);
}
return stat.size;
};
try {
const files = await fs.promises.readdir(dir);
const filePaths = files.map((file) => path.join(dir, file));
const sizes = await Promise.all(filePaths.map(getItemSize));
return sizes.reduce((total, size) => total + size, 0);
} catch (error) {
console.error(error);
return 0;
}
};