@mostajs/orm-copy-data-ui-html
v0.1.0
Published
IHM zéro-dépendance de @mostajs/orm-copy-data : source/destinations, entités, progression et journal en direct, rapport de copie. Rendu pur (état → HTML), l'hôte exécute.
Maintainers
Readme
@mostajs/orm-copy-data-ui-html
Auteur : Dr Hamid MADANI [email protected] · Licence : AGPL-3.0-or-later Niveau : N2 (composé / UI) · Zéro dépendance runtime
IHM de @mostajs/orm-copy-data : copier, migrer, exporter et
sauvegarder les données d'une application @mostajs sans ligne de commande.
Couvre toutes les capacités du moteur :
| | |
|---|---|
| Sources | db (13 dialectes) · csv · json · sql |
| Destinations (multiples) | db · csv · json · sql-dump |
| Options | entités à copier · batchSize · progression · journal |
| Résultat | copiés / erreurs / durée par entité, première erreur |
Architecture — qui exécute quoi
Ce module est une bibliothèque de rendu pure : des fonctions état → chaîne HTML.
Elle ne copie rien, n'ouvre aucune connexion, et est donc testable sous Node sans
navigateur ni base de données.
L'exécution appartient à l'application hôte, qui implémente un contrat HTTP de 4 routes. C'est délibéré : cette IHM manipule des URI de bases de production. L'authentification et les droits doivent rester chez l'hôte, pas dans une couche de présentation.
GET /copy → l'IHM (copyPage)
POST /copy/inspect → teste la source, liste les entités
POST /copy/run → lance la copie → { jobId }
GET /copy/events/:jobId → SSE : progress · log · resultexamples/server.mjs implémente ce contrat de bout en bout : c'est la démo ET le modèle
à recopier.
Garde-fous
- Simulation (
dry-run) par défaut — l'écriture réelle est un choix explicite, confirmé. - Mots de passe masqués dans tout rendu et tout journal (
postgres://user:***@hôte/base). - Confirmation obligatoire avant d'écrire vers une base de destination.
- Aucune URI persistée par le module : l'hôte décide s'il les stocke, et où.
Installation
npm i @mostajs/orm-copy-data-ui-html
# peer (côté hôte, pour exécuter) : @mostajs/orm-copy-data >= 0.3.1Exemple
import { copyPage } from '@mostajs/orm-copy-data-ui-html';
app.get('/copy', (req, res) => {
res.send(copyPage({
source: { type: 'db', dialect: 'sqljs', uri: './data/app.sqlite' },
dests: [{ type: 'db', dialect: 'postgres', uri: process.env.PG_URI }],
dryRun: true,
}));
});Démo
npm run example # http://localhost:8788Copie un JSON vers JSON + CSV — une vraie copie par le vrai moteur, sans exiger de base de données. Basculer vers PostgreSQL ne change qu'un champ du formulaire.
Tests
npm test # 17 tests de rendu (mjs-unit, §11.1.bis)
node test-scripts/e2e-demo.mjs # E2E : contrat HTTP + SSE + copie réelle sur disqueLes tests couvrent en priorité ce qui fait mal : fuite de mot de passe dans le HTML/le journal/le rapport, injection HTML, simulation qui écrirait par erreur, et rapport qui présenterait une copie partiellement en erreur comme un succès.
API
copyPage · sourceForm · destForm · entityPicker · progressPanel · logPanel ·
resultReport · dryRunBadge · maskUri · escapeHtml · CSS · SOURCE_TYPES ·
DEST_TYPES · DIALECTS.
Voir llms.txt pour les signatures.
