npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

huffman-data-compressor

v0.0.3

Published

Ce module implémente l'algorithme de codage de Huffman pour la compression et la décompression de données. Il permet de réduire la taille des données en attribuant des codes binaires de longueur variable aux symboles, les symboles les plus fréquents recev

Downloads

29

Readme

Guide d'utilisation du module huffman-data-compressor

Ce module implémente l'algorithme de codage de Huffman pour la compression et la décompression de données. Il permet de réduire la taille des données en attribuant des codes binaires de longueur variable aux symboles, les symboles les plus fréquents recevant des codes plus courts.

Table des matières

Introduction

Le module huffman-data-compressor permet d'implémenter l'algorithme de Huffman pour la compression et la décompression de données. Cette technique est particulièrement utile pour réduire la taille des données dans des environnements avec une bande passante limitée ou pour optimiser le stockage.

Installation

Pour installer le module, utilisez npm :

npm install huffman-data-compressor

Utilisation

Compression et décompression de chaînes de caractères

L'exemple suivant montre comment compresser et décompresser une chaîne de caractères :

const { Huffman } = require('huffman-data-compressor');

// Chaîne à compresser
const data = 'exemple de chaîne à compresser';

// Création d'une instance de Huffman
const huffman = new Huffman();

// Calcul des fréquences des symboles
const freq = huffman.getFrequency(data);

// Construction de l'arbre de Huffman
const root = huffman.createHuffmanTree(freq);

// Génération de la bibliothèque de codes
const codes = new Map();
huffman.createLibrary(root, '', codes);

// Compression de la chaîne
const encodedData = huffman.encode(data, codes);
console.log('Données compressées :', encodedData);

// Décompression de la chaîne
const decodedData = huffman.decode(encodedData, codes);
console.log('Données décompressées :', decodedData);

Compression et décompression de fichiers

Le module offre également des fonctionnalités pour compresser et décompresser des fichiers. L'exemple ci-dessous montre comment décompresser un fichier :

const { fileConversion } = require('huffman-data-compressor');

// Création d'une instance de fileConversion
const file = new fileConversion();

// Décompression d'un fichier compressé
// 'chemin/vers/fichier_compressé.huf' : chemin du fichier compressé
// 'chemin/vers/dossier_de_sortie' : dossier où sera placé le fichier décompressé
file.decompressFile('chemin/vers/fichier_compressé.huf', 'chemin/vers/dossier_de_sortie');

Pour compresser un fichier, utilisez la méthode compressFile :

// Compression d'un fichier
file.compressFile('chemin/vers/fichier_à_compresser');

API

Classe Huffman

  • getFrequency(data: string): Map<string, number>
    Calcule la fréquence d'apparition de chaque symbole dans la chaîne data et retourne une Map associant chaque symbole à sa fréquence.

  • createHuffmanTree(freq: Map<string, number>): Node
    Construit l'arbre de Huffman à partir des fréquences et retourne la racine de l'arbre.

  • createLibrary(root: Node, code: string, codes: Map<string, string>): void
    Parcourt l'arbre de Huffman pour générer une bibliothèque (Map) associant à chaque symbole son code binaire.

  • encode(data: string, codes: Map<string, string>): string
    Encode la chaîne data en utilisant la Map des codes générée. Retourne la chaîne encodée.

  • decode(encodedData: string, codes: Map<string, string>): string
    Décode la chaîne encodée encodedData en utilisant la Map des codes et retourne la chaîne originale.

Classe fileConversion

  • compressFile(inputPath: string): void
    Compresse le fichier situé à inputPath.

  • decompressFile(inputPath: string, outputDir: string): void
    Décompresse le fichier situé à inputPath et sauvegarde le fichier décompressé dans le répertoire outputDir.

Remarques

  • Assurez-vous que les données à compresser ou décompresser sont valides (chaînes de caractères pour la compression de texte, fichiers existants pour la compression/décompression de fichiers).
  • La méthode decompressFile crée le fichier décompressé dans le répertoire de sortie spécifié.
  • Le module est conçu pour être utilisé dans un environnement Node.js.

Références