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/backup-ui-html

v0.1.0

Published

IHM zéro-dépendance de @mostajs/backup : liste des sauvegardes, intégrité ET authenticité en verdicts distincts, test de restauration avec recomptage, restauration en simulation par défaut. Rendu pur (état → HTML) — l'hôte exécute.

Readme

@mostajs/backup-ui-html

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

IHM de @mostajs/backup. Rendu pur (état → HTML) : elle ne sauvegarde rien, ne restaure rien, n'ouvre aucune base et ne détient aucune clé. L'hôte exécute.

Ce que l'IHM rend évident

Une IHM de sauvegarde n'est pas un tableau de fichiers. Trois choses doivent sauter aux yeux, parce que ce sont les trois façons de perdre les données d'un client :

1. Une sauvegarde jamais restaurée n'est pas une sauvegarde. Une archive « présente » n'est pas une archive « restaurable ». Tant que le test de restauration n'a pas tourné, elle s'affiche NON TESTÉE — jamais verte. C'est la panne la plus banale du métier, et elle vient toujours d'un voyant vert accordé trop tôt.

2. Intégrité ≠ authenticité. Deux colonnes distinctes, jamais fondues. L'empreinte dit « pas corrompue » ; la signature dit « produite par nous ». Un attaquant qui modifie un fichier et recalcule son empreinte passe l'intégrité — seule la signature le trahit. Et une archive valide signée par un tiers est le piège le plus subtil : tout est cryptographiquement correct, mais ce n'est pas la vôtre.

3. Une restauration est destructrice. Simulation par défaut, confirmation explicite, et le bouton change de couleur quand il devient dangereux. Le rapport confronte annoncé et relu en base : une restauration qu'on ne recompte pas n'est pas vérifiée.

Garde-fous

  • Aucune clé privée n'est jamais rendue ni renvoyée au navigateur (les publiques sont masquées).
  • Une archive scellée l'affiche : l'hébergeur voit qu'il ne peut pas l'ouvrir.
  • L'IHM réclame une clé de secours — une clé perdue rend l'archive irrécupérable.
  • Le module ne persiste rien.

Demo-app

npm run example   # http://localhost:8790

Ce n'est pas une maquette : le serveur peuple une vraie base sqljs, la sauvegarde (signée + scellée pour le client), la vérifie, la restaure dans une base jetable et recompte, puis la restaure pour de vrai. C'est à la fois la démo et le modèle à recopier.

Tests

npm test                          # 19 tests de rendu (mjs-unit)
node test-scripts/e2e-demo.mjs    # E2E : la demo-app sauvegarde et restaure VRAIMENT

Les tests vérifient ce que l'IHM refuse d'afficher en vert — et l'E2E prouve qu'elle ne passe au vert qu'après le test de restauration.