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

@mostajs/enrollment-ui-html

v0.1.0

Published

IHM console de @mostajs/enrollment : demandes en attente, alerte de ré-enrôlement BLOQUANTE, code affiché une seule fois, révocation. Rendu pur (état → HTML), zéro dépendance.

Readme

@mostajs/enrollment-ui-html

Auteur : Dr Hamid MADANI [email protected] · Licence : AGPL-3.0-or-later Niveau : N2 · Zéro dépendance

IHM console de @mostajs/enrollment. Rendu pur (état → HTML) : elle n'enrôle rien, n'approuve rien, ne détient aucune clé.

Ce que cette IHM rend IMPOSSIBLE

Un écran d'approbation est un écran où l'on clique vite, entre deux tâches. Trois choses doivent donc être impossibles à faire par inadvertance :

1. Approuver une usurpation sans s'en rendre compte. Une machine connue qui revient avec une autre clé publique : disque remplacé, ou attaquant ? On ne peut pas deviner. L'alerte est rouge, la demande est marquée suspecte, et le bouton d'approbation est désactivé tant qu'on n'a pas coché « j'ai vérifié auprès du client ».

Et ce n'est pas qu'une garde d'interface : le service lui-même refuse (reenrolement_non_confirme). Une IHM qui protège seule protège mal.

2. Croire que le code se retrouve plus tard. Il n'est stocké que sous forme d'empreinte — comme un mot de passe. Il s'affiche une seule fois, et l'IHM le dit. Sans cet avertissement, on ferme l'écran en pensant le retrouver dans la liste.

3. Voir un secret qui ne devrait pas être là. Aucun jeton, aucune clé privée n'est rendu. Les clés publiques sont raccourcies (aaaaaaaa…aaaaaaaa) : lisibles, sans être illisibles.

Intégration dans une console React

Cette IHM produit des chaînes HTML rendues côté serveur. Si votre console est une SPA React (comme ticket-admin), deux voies — c'est le patron de l'écosystème (qa-ui-html / qa-ui-react) :

  • immédiat : servir /enroll comme une page dédiée depuis le serveur Node de la console — utilisable aujourd'hui, sans une ligne de React ;
  • ensuite : @mostajs/enrollment-ui-react, pour un onglet de la SPA.

Demo-app

npm run example   # http://localhost:8795

Ce n'est pas une maquette. La console tourne, de vrais agents @mostajs/enrollment s'y présentent par HTTP, vous approuvez d'un clic, et ils se rattachent tout seuls. Deux boutons jouent les scénarios qui comptent : une nouvelle machine, et une machine connue qui revient avec une autre clé.

Tests

npm test                          # 13 tests de rendu (mjs-unit)
node test-scripts/e2e-demo.mjs    # E2E : enrôlement RÉEL + usurpation bloquée