Repository navigation
Releases
Releases · moxondev/api
6.1.0
Version 6.1.0 - October 2026
- This is the first real release of the API under its new name
@moxon/api, and the documentation moves to moxon.dev. - A new experimental export,
@moxon/api/manifest, describes the endpoints as data (method, path, category, parameters and a request example) for tools that document or call the API, as shown in the Endpoint manifest section of the README. - The
hashendpoint is the first one declared this way, and it behaves exactly as before on every version, fromv4tov6. - The dependencies receive their security fixes, including the critical one in
proxy-addr. - The server no longer serves
/favicon.ico, which also makes the package about 250 kB lighter.
If you still use @20syldev/api, switching only takes npm uninstall @20syldev/api && npm i @moxon/api and a rename in your imports.
Version 6.1.0 - Octobre 2026
- C'est la première vraie version de l'API sous son nouveau nom
@moxon/api, et la documentation déménage sur moxon.dev. - Un nouvel export expérimental,
@moxon/api/manifest, décrit les endpoints sous forme de données (méthode, chemin, catégorie, paramètres et exemple de requête) pour les outils qui documentent ou appellent l'API, comme le montre la section Endpoint manifest du README. - L'endpoint
hashest le premier déclaré de cette façon, et il se comporte exactement comme avant sur toutes les versions, dev4àv6. - Les dépendances reçoivent leurs correctifs de sécurité, dont celui, critique, de
proxy-addr. - Le serveur ne sert plus
/favicon.ico, ce qui allège aussi le paquet d'environ 250 ko.
Si vous utilisez encore @20syldev/api, il suffit de npm uninstall @20syldev/api && npm i @moxon/api et de renommer vos imports.
6.0.0-pre
Version 6.0.0-pre - October 2026
- The API is renamed:
@20syldev/apibecomes@moxon/api, and the repository becomes 20syldev/moxon. - The code is exactly that of
@20syldev/api@6.0.0: same exports (.,./v4,./v5,./v6,./server), same/v6HTTP API, nothing new. - To migrate, switch packages with
npm uninstall @20syldev/api && npm i @moxon/api, then replace the name in your imports, as described in the Migrating from @20syldev/api section of the README. - The old
@20syldev/apipackage remains installable, but future releases will ship only as@moxon/api.
6.1.0 will be the first real release of moxon.
Version 6.0.0-pre - Octobre 2026
- L'API change de nom :
@20syldev/apidevient@moxon/api, et le dépôt devient 20syldev/moxon. - Le code est exactement celui de
@20syldev/api@6.0.0: mêmes exports (.,./v4,./v5,./v6,./server), même API HTTP/v6, rien de nouveau. - Pour migrer, il suffit de changer de paquet avec
npm uninstall @20syldev/api && npm i @moxon/api, puis de remplacer le nom dans vos imports, comme l'explique la section Migrating from @20syldev/api du README. - L'ancien paquet
@20syldev/apireste installable, mais les prochaines versions sortiront uniquement sous@moxon/api.
La 6.1.0 sera la première vraie version de moxon.
6.0.0
Version 6.0.0 - Septembre 2026
- L'endpoint
/captcharépond désormais en modechallengepar défaut : l'image arrive avec un jeton signé plutôt qu'avec la réponse en clair, et son rendu est durci contre la lecture automatique. Le générateur historique reste disponible via?mode=image, pour qui a besoin de récupérer la réponse côté serveur. - Les versions
v1,v2etv3sont retirées, avec tout le JavaScript non typé qu'elles partageaient. L'API ne sert plus quev4,v5etv6; installer@20syldev/api@5.9.0pour qui en a encore besoin. - L'endpoint
/levenshteinpasse enPOST: les deux textes comparés ne transitent plus par l'URL, donc plus par l'historique de navigation ni les journaux d'un intermédiaire. - Les identifiants sensibles sortent des URL :
DELETE /chat/:tokendevientPOST /chat/clear, etPATCH/DELETE /tic-tac-toe/:gamedeviennentPOST /tic-tac-toe/playetPOST /tic-tac-toe/forfeit. Les méthodesPATCHetDELETEdisparaissent de l'API. - Les réponses d'erreur renvoient
statusen nombre plutôt qu'en chaîne de caractères. - Toute réponse porte désormais les en-têtes
X-RateLimit-Limit,X-RateLimit-RemainingetX-RateLimit-Reset, et unRetry-Afteraccompagne les refus429— un client peut enfin s'auto-réguler au lieu de découvrir sa limite en la dépassant. - L'endpoint
/hyperplanningest déprécié : il continue de fonctionner sur toutes les versions, maisv6ne le liste plus parmi ses endpoints disponibles. Il sera retiré pour de bon en7.0.0.
5.9.0
Version 5.9.0 - Septembre 2026
- Ajout de l'endpoint
/pow: une preuve de travail en remplacement du captcha — le serveur émet unsaltet une difficulté, le client cherche unnoncedont l'empreintesha256commence par autant de zéros, puis le renvoie enPOSTpour vérification. À la difficulté par défaut de4, la résolution prend moins d'une seconde dans un navigateur et reste imperceptible pour une personne, mais devient ruineuse pour un robot qui la répète des milliers de fois. C'est la seule protection anti-bot qu'un modèle de vision ne sait pas contourner, et la documentation recommande désormais de la préférer au captcha visuel. - L'endpoint
/captchagagne un modechallenge: l'image arrive accompagnée d'un jeton signé dans l'en-têteX-Captcha-Token, et la réponse n'est plus livrée en clair. Elle n'existe que dans la signature du jeton — impossible à extraire, même en interceptant la réponse. UnPOST /captchaportanttokenetanswerrenvoie ensuite{ "valid": true }. - Le rendu de ce mode
challengeest durci contre la lecture automatique : les glyphes se chevauchent pour empêcher leur découpage, suivent une ligne de base sinusoïdale, mélangent plusieurs polices, et sont traversés par des traits de la même couleur que le texte, qu'aucun filtre ne peut donc retirer. Le mode par défaut, lui, ne change pas d'un pixel. - Les jetons de captcha et de preuve de travail sont à usage unique et expirent au bout de
5minutes : un jeton rejoué répondused, un jeton périméexpired, un jeton falsifié ou issu d'une autre instancewrong. - La variable
CHALLENGE_SECRETsigne ces jetons. Tant qu'elle n'est pas définie, chaque processus s'invente sa propre clé : les jetons cessent d'être valides après un redémarrage et sont rejetés par les instances voisines — à définir pour tout déploiement qui fait tourner plus d'un processus. - Les en-têtes
X-Captcha-TextetX-Captcha-Tokensont désormais exposés au JavaScript des navigateurs ; ils restaient jusqu'ici invisibles depuis une page web, faute de déclaration CORS. - Les journaux distinguent maintenant les niveaux de gravité : une erreur serveur est enregistrée en
error, un refus client enwarn, et le reste eninfo.
5.8.0
Version 5.8.0 - Septembre 2026
- Ajout de l'endpoint
/base: conversion d'un nombre entre deux bases numériques de2à36—?value=255&from=10&to=16renvoieff— avec10et16comme valeurs par défaut. Les très grands nombres conservent leur précision exacte, bien au-delà de ce qu'un entier JavaScript sait représenter. - Ajout de l'endpoint
/uuid: génère un UUID v4 conforme à la RFC 4122, jusqu'à50d'un coup aveccount, ou analyse un identifiant existant (?uuid={uuid}) pour en extraire sa version et son variant. Un UUID mal formé répondvalid: falseau lieu d'une erreur, ce qui permet de s'en servir comme validateur. - Ajout de l'endpoint
/semver: décompose une version sémantique —1.2.3-beta.1+build.42livre sesmajor,minor,patch,prereleaseetbuild—, l'incrémente (action=bump&part=minordonne1.3.0) ou compare deux versions (action=compare&other=1.3.0). La comparaison respecte la spécification jusqu'aux identifiants de préversion :1.0.0-alphaprécède1.0.0-beta, qui précède1.0.0. - Ajout de l'endpoint
/read: calcule les scores de lisibilité Flesch d'un texte, avec le détail des mots, phrases et syllabes ainsi qu'un temps de lecture estimé. Le français est pris en charge parlang=fr, qui applique l'adaptation Kandel & Moles ; l'anglais reste la langue par défaut. - Ajout de l'endpoint
/diff: compare deux textes et renvoie la suite des segments identiques, ajoutés et supprimés, ligne par ligne ou mot par mot (mode=word), accompagnée du décompte des ajouts et des suppressions. - L'endpoint
/logsest désormais fermé par défaut : sansLOGS_TOKEN, il répond comme un chemin inconnu au lieu de laisser le trafic de l'instance accessible à qui devine l'URL. Il ne s'ouvre qu'une fois le jeton configuré, toujours via l'en-têteX-Logs-Token. - Des limites protègent les nouveaux endpoints :
100caractères pour une valeur à convertir,256pour une version,10 000caractères et2000segments pour un diff,50 000caractères pour un texte analysé.
5.7.0
Version 5.7.0 - Septembre 2026
- Le paquet s'importe désormais directement :
import { evaluate } from '@20syldev/api'cible la dernière version,@20syldev/api/serverdémarre l'API complète avec toutes ses versions montées, et les déclarations TypeScript sont livrées avec. Les sous-chemins/v1et/v2pointaient vers des fichiers inexistants — c'est corrigé. - L'endpoint
/urlrenvoie le port par défaut du schéma quand l'URL n'en précise aucun :443pourhttpsetwss,80pourhttpetws,21pourftp;nullreste réservé aux schémas sans port connu. - Les métadonnées d'instance deviennent configurables —
DOCS_URL,REPO_URL,INSTANCE_CREATED— et chaque champ disparaît de la réponse tant qu'il n'est pas renseigné : une instance auto-hébergée n'affiche plus la documentation ni le dépôt de quelqu'un d'autre. - L'endpoint
/logspeut être fermé par un jeton, attendu dans l'en-têteX-Logs-Tokenet défini parLOGS_TOKEN; sans cette variable il reste ouvert, comme avant. - Les journaux ne conservent plus les valeurs passées en paramètre :
?text=secretest tracé en?text. Les jetons de conversation privée et de partie portés dans le chemin sont également masqués. TRUSTED_PROXIESdécrit les sauts de confiance derrière un CDN ou un routeur de plateforme, en blocs CIDR ou via les raccourcisloopback,linklocaletuniquelocal, séparés par des espaces ou des virgules.- Les réponses d'erreur sont allégées du lien de documentation qu'elles portaient.
- Node 22.12 devient le minimum requis, ce qui permet d'utiliser le paquet aussi bien en ESM qu'en CommonJS.
5.6.0
Version 5.6.0 - Août 2026
- Ajout de l'endpoint
/url: décompose une URL en ses composants — schéma, hôte, port, chemin, paramètres et fragment ; les paramètres de requête dupliqués sont conservés et regroupés en tableau (?tag=js&tag=ts→["js", "ts"]). - Ajout de l'endpoint
/csv: conversion bidirectionnelle entre CSV et JSON —parsetransforme un CSV en tableau d'objets,formatfait l'inverse — avec délimiteur personnalisé (delimiter) et en-têtes optionnels (headers). - Le parseur CSV gère les champs entre guillemets, y compris les guillemets échappés (
"") et les sauts de ligne à l'intérieur d'un champ. - Des limites protègent les deux endpoints :
2048caractères pour une URL,50 000caractères et1000lignes pour un CSV.
5.5.0
Version 5.5.0 - Juillet 2026
- Ajout de l'endpoint
/auth: vérifie un tokenBeareret renvoie son tier et ses limites (hourly,burst) ; sans token il renvoie le tierdefault, et un token invalide donne un401. Idéal pour tester une clé ou surveiller ses quotas (code HTTP200/401). - La redirection
/latestvaut désormais pour toutes les méthodes HTTP : un307préserve la méthode et le corps, doncPOST /latest/…,PATCHetDELETEsont correctement redirigés vers la version courante — avant, seulGETfonctionnait. - Le package
@20syldev/apiest désormais générique : l'endpoint personnel/websiteest sorti du cœur vers un système de plugins optionnels, exclu du paquet npm. - Robustesse interne : correction d'un test temporel non déterministe et passe de formatage.
5.4.0
Version 5.4.0 - Juillet 2026
- Correction de
/address(ordre des mots de rue pour les adresses US, UK et DE, ex.42 Main Street) et de/textqui écrit désormais correctementsoixante et onzeen français. - Fiabilisation des modules cryptographiques :
/otpcorrige l'underflow du compteur à zéro et passe à une comparaison à temps constant,/symmetricajoute un MAC d'intégrité en mode CBC, et/asymmetriccalcule sa limite de taille à partir du module réel de la clé. - Corrections des modules de calcul et de rendu :
/evaluate(priorité de l'unaire-et nombres malformés),/matrix(plus de fausse matrice singulière due à l'arrondi du déterminant),/algorithms(validation des entiers pourisprimeetfactorial) et/chart(données nulles, à tranche unique ou à label unique). - Corrections de
/barcode(rendu inversé et chiffre de contrôle EAN-8),/jwt(rejet desheader/payloadnon-objets),/case(rejet des entrées composées uniquement de séparateurs),/chat(éviction de session et purge des salons privés) et/tic-tac-toe(inscription des joueurs, casse et minuteurs de nettoyage). - Durcissement des routes
GETface aux paramètres en tableau, aux valeursNaNet aux modules absents, gestionnaire d'erreurs repositionné après les routes, et repli 404 en JSON pour tout endpoint inconnu. - Fiabilisation du contrôle de débit (correction d'un off-by-one et éviction des utilisateurs inactifs) et conservation du chemin et des paramètres lors des redirections vers
/latest. - Ajout d'une large batterie de tests unitaires et d'intégration couvrant ces correctifs.
5.3.0
Version 5.3.0 - Juin 2026
- Ajout de l'endpoint
/case: conversion de texte entre neuf formats de casse sans dépendance externe (camel,pascal,snake,kebab,constant,title,sentence,upper,lower), avec une tokenisation universelle qui gère automatiquement les séparateurs_,-,., les espaces et les transitions camelCase. - Ajout de l'endpoint
/jwt: décodage d'un JSON Web Token (header, payload, signature) sans vérification de la signature, avec détection automatique de l'expiration via le champexp. Utile pour inspecter le contenu d'un token en débogage ou audit.