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

plbls-markdown-parser

v0.0.1

Published

**plbls-markdown** est une librairie ESM écrite en TypeScript qui convertit du contenu Markdown en HTML. Elle couvre la majorité des fonctionnalités du Markdown standard ainsi que plusieurs extensions avancées.

Readme

Documentation de plbls-markdown

plbls-markdown est une librairie ESM écrite en TypeScript qui convertit du contenu Markdown en HTML. Elle couvre la majorité des fonctionnalités du Markdown standard ainsi que plusieurs extensions avancées.

1. Fonctionnalités Supportées

La librairie prend en charge :

  • Titres (Headings)
    Convertit les lignes commençant par un ou plusieurs # en balises <h1> à <h6>.

  • Texte en Gras et Italique

    • Gras : Convertit **texte** ou __texte__ en <strong>texte</strong>.
    • Italique : Convertit *texte* ou _texte_ en <em>texte</em>.
  • Texte Barré (Strikethrough)
    Convertit ~~texte~~ en <del>texte</del>.

  • Code Inline et Blocs de Code

    • Code inline : Transforme du code entouré de backticks `code` en <code>code</code>.
    • Blocs de code : Convertit les blocs délimités par trois backticks en <pre><code> (avec option de spécifier la langue via une classe).
  • Liens et Images

    • Liens : Transforme [texte](url "titre optionnel") en <a href="url" title="titre optionnel">texte</a>.
    • Images : Convertit ![texte alternatif](url) en <img src="url" alt="texte alternatif">.
  • Blockquote
    Convertit les lignes débutant par > en balises <blockquote>.

  • Listes (Ordonnées et Non Ordonnées)
    Prend en charge les listes à puces, numérotées et imbriquées, avec support pour les checkboxes (exemple : [x] ou [ ]).

  • Règles Horizontales et Retours à la Ligne

    • Horizontal Rule : Convertit les lignes contenant uniquement ---, *** ou ___ en <hr>.
    • Line Break : Transforme les retours à la ligne forcés (par exemple deux espaces en fin de ligne) en <br>.
  • Paragraphes
    Découpe le texte en paragraphes en enveloppant chaque bloc séparé par une ligne vide dans des balises <p>.

  • Tables
    Convertit la syntaxe Markdown des tables (avec en-tête, ligne d’alignement et lignes de données) en <table>, avec <thead> et <tbody> et gère l’alignement des colonnes.

  • Footnotes (Notes de Bas de Page)

    • Les définitions sous la forme [^id]: contenu sont extraites.
    • Les références [^id] dans le texte sont remplacées par des liens vers les notes.
    • Une section finale affiche toutes les notes sous forme d’une liste dans une balise <div class="footnotes">.
  • Subscript et Superscript

    • Subscript : Convertit ~texte~ (en utilisant un tilde simple, pour éviter le conflit avec le strikethrough) en <sub>texte</sub>.
    • Superscript : Transforme ^texte^ en <sup>texte</sup>.
  • Autolinks
    Convertit automatiquement les URL encadrées par des chevrons (ex. <http://example.com>) et les URL en texte brut en liens HTML. Le parser gère également les adresses email encadrées par des chevrons.

  • Emojis
    Remplace les codes emoji du format :alias: par leur équivalent Unicode. Le mapping est construit dynamiquement en chargeant un fichier JSON (par exemple, emoji.json) qui contient la liste des emojis, leurs alias et autres informations.

2. Architecture et Structure du Code

La librairie est modulable et chaque fonctionnalité est encapsulée dans un fichier dédié situé dans le dossier parsers/. Par exemple :

  • headings.parser.ts – Gestion des titres.
  • bold.parser.ts, italic.parser.ts, strikethrough.parser.ts – Gestion du style du texte.
  • inlineCode.parser.ts et codeBlock.parser.ts – Gestion du code.
  • link.parser.ts et image.parser.ts – Gestion des liens et images.
  • blockquote.parser.ts, list.parser.ts, horizontalRule.parser.ts, lineBreak.parser.ts, paragraph.parser.ts – Gestion des blocs et de la structure.
  • table.parser.ts – Conversion des tables.
  • footnotes.parser.ts – Traitement des notes de bas de page.
  • subscript.parser.ts et superscript.parser.ts – Traitement des indices et exposants.
  • autolink.parser.ts – Conversion automatique des URL.
  • emoji.parser.ts – Conversion des codes emoji à partir du mapping JSON.

La fonction principale, parseMarkdown, orchestre l'exécution des différents parsers dans un ordre précis. Elle intègre également un mécanisme de protection et restauration des zones sensibles (blocs de code et code inline) pour éviter que leur contenu ne soit modifié par d'autres parsers.

3. Pipeline de Parsing

L’ordre d’exécution est crucial pour éviter les interférences entre les parsers. Par exemple, le mécanisme de protection des zones sensibles garantit que les blocs de code et le code inline ne subissent pas d’altérations lorsqu’ils sont traités par d’autres parsers (comme le bold, italic, etc.). Le pipeline typique est le suivant :

  1. Protection des zones sensibles (code inline et blocs de code).
  2. Application des parsers de structure et de style (titres, blockquote, listes, etc.).
  3. Traitement des éléments spécifiques (tables, footnotes, subscript, superscript, autolinks, emojis).
  4. Restauration des zones protégées.
  5. Application finale des parsers pour le code (bloc et inline).

4. Utilisation

Pour utiliser la librairie, il suffit d'importer la fonction principale parseMarkdown et de lui fournir une chaîne de caractères contenant du Markdown. Des options (comme hardLineBreak) peuvent être passées pour adapter le comportement.

Exemple d’utilisation :

import { parseMarkdown } from 'plbls-markdown';

const markdownContent = `
# Bienvenue

Ceci est du **Markdown** avec des emojis :smile: et un lien <http://example.com>.

Voici une note[^1].

[^1]: C'est une note de bas de page.
`;

const htmlOutput = parseMarkdown(markdownContent, { hardLineBreak: true });
console.log(htmlOutput);

5. Extensibilité et Personnalisation

La structure modulaire permet d’ajouter ou de remplacer facilement des parsers. Tu peux :

  • Désactiver certains parsers via des options.
  • Ajouter des règles personnalisées.
  • Étendre le mapping des emojis en modifiant le fichier JSON associé.

6. Compatibilité et Performances

  • TypeScript & ESM : La librairie est développée en TypeScript et compilée en modules ESM, ce qui garantit une bonne intégration dans des environnements modernes (navigateur, Node.js, frameworks comme Angular, React, etc.).
  • Légèreté : Aucun dépendance externe n’est requise pour le parsing, ce qui maintient un bundle léger.
  • Tests : Chaque parser est testé individuellement, assurant une couverture complète et une maintenance facilitée.