Repository navigation
Bibliotheque Node
Branche : node-library
Même code que CLI (lib/), sans Commander ni interface en ligne de commande : exposé
comme package npm installable, pour être appelé directement depuis un autre programme Node
sans passer par un sous-processus (spawn/exec).
npm install @bloopstudio/anyformconst anyform = require('anyform');
const fs = require('fs');
// Images — Buffer en entrée, Buffer en sortie (chaîne de caractères si la cible est SVG).
const input = fs.readFileSync('photo.png');
const webpBuffer = await anyform.convertImage(input, 'webp', { quality: 80 });
fs.writeFileSync('photo.webp', webpBuffer);
// Compression (même format, taille réduite) — retourne { buffer, ext }.
const { buffer, ext } = await anyform.compressImage(input, 'png', 'strong');
// Données — Buffer en entrée, Buffer en sortie.
const xlsx = anyform.convertData(fs.readFileSync('data.csv'), 'csv', 'xlsx');
// Audio/vidéo — chemins de fichiers (ffmpeg lit/écrit sur disque, pas de Buffer possible).
await anyform.convertMedia('musique.wav', 'musique.mp3');
await anyform.compressVideo('clip.mp4', 'clip-compresse.mp4', 'mp4', 'medium');
// Sous-titres — texte en entrée, texte en sortie.
const vtt = anyform.convertSubtitle(fs.readFileSync('sous-titres.srt', 'utf8'), 'srt', 'vtt');
// Inspection et comparaison — chemins de fichiers, aucune modification du fichier source.
const infos = await anyform.inspectFile('photo.jpg', 'image', 'jpg');
const diff = await anyform.compareFiles('avant.png', 'apres.png', 'image');Voir index.js sur la branche pour la liste complète des fonctions exportées, groupées par
domaine (images, données, audio/vidéo, sous-titres, inspection/comparaison).
cli-converter et node-library partagent le même code de conversion (lib/), mais ont
des cibles différentes : la première s'utilise depuis un terminal, la seconde s'importe
dans un autre programme. Les séparer évite qu'un npm install du CLI installe des
dépendances (Commander) inutiles pour un simple require('anyform'), et inversement.
Même détection que le CLI : $LC_ALL/$LANG/$LANGUAGE de l'environnement, anglais si
l'un commence par en, français sinon (pas de --lang, pas de ligne de commande ici — la
langue se force en définissant la variable d'environnement avant d'importer le module).
anyform.t(key, vars) et anyform.getLanguage() sont exposés directement pour un appelant
qui voudrait afficher ses propres messages dans la même langue que les erreurs internes.
Identiques au CLI :
- Images — entrée : SVG, PNG, JPG, WebP, GIF, BMP, TIFF, AVIF, ICO, HEIC/HEIF. Sortie : PNG, JPG, WebP, TIFF, AVIF, ICO, SVG (vectorisation via potrace).
- Données : CSV ⇄ JSON ⇄ XLSX.
- Audio : WAV, MP3, OGG, FLAC, AAC, M4A, WMA, Opus.
- Vidéo : MP4, WebM, MOV, AVI, MKV, FLV, OGV.
- Sous-titres : SRT ⇄ VTT ⇄ ASS, en pur JavaScript (aucune dépendance).
-
index.js— point d'entrée public, ré-exporte les fonctions delib/ -
lib/convert.js— conversion et compression d'images (sharp + potrace + heic-convert) -
lib/data.js— conversion de données (SheetJS) -
lib/media.js— conversion et compression audio/vidéo (ffmpeg-static) -
lib/subtitles.js— conversion de sous-titres SRT/VTT/ASS (texte pur) -
lib/inspect.js— lecture des propriétés d'un fichier, sans le modifier -
lib/compare.js— diff entre deux fichiers (image, texte ligne à ligne, ou empreinte) -
lib/i18n.js— traduction FR/EN des messages d'erreur
Le patch de package.json est incrémenté automatiquement à chaque push touchant
index.js/lib//package.json sur node-library (workflow publish-npm.yml), qui publie
ensuite la nouvelle version sur npm avec un token stocké dans le secret NPM_TOKEN du
dépôt. Comme les autres workflows du projet, il ne garde que ses 10 runs les plus récents.
Anyform — développé par BloopStudio · Essayer en ligne · Dépôt · Confidentialité