Repository navigation
Releases: 20syldev/dropr
Releases · 20syldev/dropr
Release list
3.5.0
Version 3.5.0 - Novembre 2026
- Le routage est réécrit : un routeur propre à dropr lit l'URL une seule fois (décodage unique,
.et..résolus par l'URL) à la place de la table d'expressions régulières héritée d'Express. - Un nom de projet se coupe au dernier
@:projet@,projet@@1.0.0etprojet@1.0.0@xrépondent désormais 404 au lieu de lister les versions ou de servir la 1.0.0. - Les routes fixes (
download,search,changelog) distinguent les majuscules, etchangelogne s'écrit plus que/<type>/<projet>/changelog: sous@version, c'est un fichier comme un autre. - Un chemin avec un segment vide (
//), un%2F, un%5Cou un caractère de contrôle répond 404, un antislash vaut/, et un/final n'est accepté que sur les listings et les dossiers. - Un chemin plus profond sous un projet sans
@(/npm/lib/n/importe/quoi) répond 404 au lieu de lister les versions. - Un pourcent-encodage invalide répond 400 avant tout 404, avec un message fixe et sans les en-têtes
DeprecationetLink. - Le 404 d'une route inconnue renvoie le chemin encodé sans la requête.
- Un dossier de type nommé
health,manifestou comme un fichier statique de la configuration est ignoré au démarrage, avec une ligne dans les logs.
3.4.0
Version 3.4.0 - Octobre 2026
- Tout ce qui est propre à une instance (nom, port, dossier des paquets, en-tête de l'adresse du client, URL de base, favicons et
robots.txt) se règle désormais dans un fichierdropr.config.json: sans lui, ou s'il est invalide, le serveur refuse de démarrer en nommant la clé en cause. - Le serveur se construit par
createApp(config), qui ne lit ni l'environnement ni le disque et n'écoute aucun port : l'écoute,PORT,PACKAGES_DIRet le scan du démarrage passent par la nouvelle entréedist/serve.js, que lancenpm start. - La page
/manifestest désormais en anglais, avec les paramètres{project}et{file}à la place de{projet}et{fichier}; chaque instance peut remplacer ces textes dans sa propre configuration. - Le fichier
.htaccess, que rien ne servait, est supprimé. - Les tests lancent l'application dans le même processus au lieu d'un serveur à part, et vérifient aussi la configuration,
createAppet l'entréeserve.
3.3.2
Version 3.3.2 - Octobre 2026
- Le serveur lit désormais les paquets une seule fois, au démarrage : listings, tailles, sommes de contrôle et dates sont servis depuis cet index, et
?checksumsne relit plus tous les fichiers de la version à chaque appel. - Les archives sont écrites par dropr lui-même, sans le programme
tar: leur contenu ne change pas, mais tous les fichiers portent la date de publication de la version, si bien qu'une même version donne la même archive d'un déploiement à l'autre. - Un téléchargement d'archive abandonné arrête aussitôt la lecture des fichiers, et une requête
HEADsur une archive répond sans la construire. - Correction de plusieurs erreurs au démarrage : un dossier illisible n'efface plus les tailles des autres versions, un type illisible ne fait plus planter le serveur, et un dossier
packages/absent donne un catalogue vide au lieu d'un arrêt. - Un fichier nommé
__proto__apparaît désormais dans les sommes de contrôle de sa version. - Chaque push sur
masteret chaque pull request lancent une vérification automatique sur GitHub : types, lint, formatage, puis tous les tests.
3.3.1
Version 3.3.1 - Octobre 2026
- Un téléchargement d'archive qui échoue en cours de route est désormais coupé au lieu de se terminer normalement :
curl -fsignale l'erreur au lieu d'enregistrer une archive à laquelle il manque des fichiers. - Les listings et les sommes de contrôle suivent la même règle que les fichiers pour les liens symboliques : un lien qui sort de sa version n'apparaît plus et ne dévoile plus la taille ni l'empreinte de sa cible, et un lien vers un dossier ne fait plus échouer
?checksums. - Une requête autre que
GETouHEADreçoit une erreur 405 qui l'indique clairement, au lieu d'une 404 trompeuse ou, sur un fichier, du fichier lui-même. - Une erreur de lecture d'un dossier ne révèle plus l'emplacement des fichiers sur le serveur.
- Le serveur s'arrête au démarrage si son port est déjà pris, au lieu d'annoncer qu'il tourne sans rien servir.
- Les dépendances sont figées : chaque déploiement installe exactement les versions testées, au lieu des dernières parues.
3.3.0
Version 3.3.0 - Octobre 2026
- Le CDN devient dropr, avec un nouveau favicon et une nouvelle adresse, dropr.sylvain.sh, vers laquelle les anciens liens redirigent.
- Toutes les erreurs suivent désormais le même format JSON, y compris pour une requête autre que GET :
statusest un nombre,errordonne l'intitulé HTTP etmessagele détail, alors que ces deux champs étaient inversés jusqu'ici. - Les fichiers sont servis avec leur vrai type (
application/json,text/javascript, images…) au lieu de tout passer en texte brut, et les scripts sans extension restent lisibles dans le navigateur. - Les adresses en
@latestou en version partielle ne restent plus en cache pendant un an : une nouvelle version y apparaît au bout de 5 minutes, et seules les versions exactes gardent ce cache d'un an. - Ajout de la route
/manifest, qui décrit toutes les routes du CDN en JSON. - Correction d'une faille de sécurité qui permettait, avec un
..dans le chemin ou un lien symbolique, de lire un fichier situé en dehors de la version demandée. - Correction de plusieurs erreurs : les fichiers dont le nom commence par un point s'ouvrent comme les autres, une adresse mal formée renvoie une 400, et des adresses comme
/npm/listrenvoient une 404 au lieu d'une erreur serveur. - Le changelog accepte une version dans l'adresse, comme
/npm/moxon@6.1.0/changelog, au lieu de répondre que le projet n'existe pas. - Le script de publication peut récupérer un paquet directement depuis npm, en résolvant une plage ou un tag comme
latestvers la version exacte.
3.2.2
Version 3.2.2 - Octobre 2026
- Ajout des paquets moxon@6.0.0-pre et moxon@6.1.0, qui remplacent api, désormais déprécié.
3.2.1
3.2.0
Version 3.2.0 - Septembre 2026
- Ajout des paquets logger@1.0.2, gft@1.0.6 et api@5.9.0.
- Correction d'une faille de sécurité qui permettait d'accéder à des fichiers situés en dehors des paquets publiés.
- La recherche accepte désormais un type de paquet :
?q=npmrenvoie tous les paquets npm, en plus de la recherche par nom. - Le quota de requêtes s'applique par client et non plus à tout le trafic confondu, un visiteur trop bavard ne bloque donc plus les autres.
- Les archives
.tar.gzsont transmises au fil de leur création au lieu d'être assemblées en mémoire, avec un premier octet reçu bien plus tôt. - Le changelog affiche les vraies dates de publication de chaque version, à la place de la date à laquelle le CDN avait récupéré les fichiers.