Une bibliothèque de fonctions utilitaires pour le développement de gestionnaires de serveur, spécialement conçue pour la gestion de fichiers, la compression/décompression et les interactions console.
npm install valkream-function-libconst {
cleanGameFolder,
consoleQuestion,
consoleStreamAnswer,
downloadZip,
formatBytes,
getAllFilesInAFolder,
hashFolder,
sendZip,
zipFolder,
unZip,
} = require("valkream-function-lib");Convertit des bytes en format lisible (B, KB, MB, GB, TB).
const { formatBytes } = require("valkream-function-lib");
console.log(formatBytes(1024)); // "1.0 KB"
console.log(formatBytes(1048576)); // "1.0 MB"Pose une question à l'utilisateur via la console et retourne sa réponse.
const { consoleQuestion } = require("valkream-function-lib");
const answer = await consoleQuestion("Voulez-vous continuer ? (y/n)");
console.log(`Réponse: ${answer}`);Affiche un message formaté dans la console avec timestamp.
const { consoleStreamAnswer } = require("valkream-function-lib");
consoleStreamAnswer("Téléchargement en cours...");Récupère tous les fichiers d'un dossier et ses sous-dossiers.
const { getAllFilesInAFolder } = require("valkream-function-lib");
const files = getAllFilesInAFolder("./mon-dossier");
console.log(files); // Array de chemins de fichiersGénère un hash SHA-256 de tous les fichiers d'un dossier.
const { hashFolder } = require("valkream-function-lib");
const hash = await hashFolder("./mon-dossier", "SHA-256");
console.log(`Hash du dossier: ${hash}`);Nettoie un dossier de jeu en supprimant les fichiers temporaires.
const { cleanGameFolder } = require("valkream-function-lib");
const foldersToClean = [
/* exemple */ "/folder1/temp",
"/folder40/subfolder2/cache",
];
await cleanGameFolder("./mon-jeu", foldersToClean);Compresse un dossier en fichier ZIP avec progression.
const { zipFolder } = require("valkream-function-lib");
await zipFolder(
"./dossier-a-compresser",
"./archive.zip",
(processedBytes, totalBytes, fileName, speed) => {
console.log(`Compression: ${fileName} - ${formatBytes(processedBytes)}`);
}
);Décompresse un fichier ZIP avec progression.
const { unZip } = require("valkream-function-lib");
await unZip(
"./archive.zip",
"./dossier-destination",
(processedBytes, totalBytes, fileName, speed) => {
console.log(`Décompression: ${fileName} - ${formatBytes(processedBytes)}`);
}
);Télécharge un fichier ZIP avec barre de progression et limitation de vitesse.
const { downloadZip } = require("valkream-function-lib");
await downloadZip(
"https://example.com/file.zip",
"./telechargement.zip",
(downloadedBytes, totalBytes, percent, speed) => {
console.log(`Téléchargement: ${percent}% - ${formatBytes(speed)}/s`);
}
);Envoie un fichier ZIP vers une URL avec progression.
const { sendZip } = require("valkream-function-lib");
await sendZip(
"./archive.zip",
"https://api.example.com/upload",
(uploadedBytes, totalBytes, percent, speed) => {
console.log(`Envoi: ${percent}% - ${formatBytes(speed)}/s`);
}
);Toutes les fonctions de compression, décompression, téléchargement et envoi acceptent des callbacks personnalisés :
const callback = (processedBytes, totalBytes, fileName, speed) => {
const percent =
totalBytes > 0 ? ((processedBytes / totalBytes) * 100).toFixed(1) : 0;
console.log(`${fileName}: ${percent}% - ${formatBytes(speed)}/s`);
};Les opérations longues peuvent être annulées :
const cancellationToken = { cancelled: false };
// Dans une autre partie du code
cancellationToken.cancelled = true;archiver- Compression ZIPaxios- Requêtes HTTPextract-zip- Décompression ZIPform-data- Envoi de données multipartprogress-stream- Suivi de progressionstream-throttle- Limitation de vitesseunzipper- Décompression ZIP alternative
Les contributions sont les bienvenues ! N'hésitez pas à :
- Fork le projet
- Créer une branche pour votre fonctionnalité
- Commiter vos changements
- Pousser vers la branche
- Ouvrir une Pull Request
Ce projet est sous licence MIT.
Valkream Team
Version: 1.0.6
