Skip to content

Releases: 20syldev/dropr

3.5.0

Choose a tag to compare

@20syldev 20syldev released this 01 Nov 19:33
3.5.0
7fa5612

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.0 et projet@1.0.0@x ré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, et changelog ne 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 %5C ou 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 Deprecation et Link.
  • Le 404 d'une route inconnue renvoie le chemin encodé sans la requête.
  • Un dossier de type nommé health, manifest ou comme un fichier statique de la configuration est ignoré au démarrage, avec une ligne dans les logs.

3.4.0

Choose a tag to compare

@20syldev 20syldev released this 31 Oct 17:30
3.4.0
feb1e35

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 fichier dropr.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_DIR et le scan du démarrage passent par la nouvelle entrée dist/serve.js, que lance npm start.
  • La page /manifest est 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, createApp et l'entrée serve.

3.3.2

Choose a tag to compare

@20syldev 20syldev released this 31 Oct 01:17
3.3.2
fb04978

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 ?checksums ne 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 HEAD sur 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 master et chaque pull request lancent une vérification automatique sur GitHub : types, lint, formatage, puis tous les tests.

3.3.1

Choose a tag to compare

@20syldev 20syldev released this 30 Oct 20:52
3.3.1
bbf0e1f

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 -f signale 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 GET ou HEAD reç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

Choose a tag to compare

@20syldev 20syldev released this 28 Oct 23:20
3.3.0
9832e46

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 : status est un nombre, error donne l'intitulé HTTP et message le 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 @latest ou 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/list renvoient 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 latest vers la version exacte.

3.2.2

Choose a tag to compare

@20syldev 20syldev released this 24 Oct 13:42
3.2.2
aed2ac6

Version 3.2.2 - Octobre 2026

3.2.1

Choose a tag to compare

@20syldev 20syldev released this 13 Sep 09:47
3.2.1
334ad87

Version 3.2.1 - Septembre 2026

3.2.0

Choose a tag to compare

@20syldev 20syldev released this 08 Sep 16:17
3.2.0
faac014

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=npm renvoie 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.gz sont 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.

3.1.9

Choose a tag to compare

@20syldev 20syldev released this 07 Sep 21:38
3.1.9
b1a6532

Version 3.1.9 - Septembre 2026

  • Les dossiers affichent désormais leur taille cumulée dans les listings de fichiers, au lieu d'une valeur vide.

3.1.8

Choose a tag to compare

@20syldev 20syldev released this 07 Sep 19:43
3.1.8
0156b68

Version 3.1.8 - Septembre 2026