diff --git a/_posts/2023-04-12-un-outil-sans-daemon-pour-gérer-ses-artefacts-de-build.md b/_posts/2023-04-12-un-outil-sans-daemon-pour-gérer-ses-artefacts-de-build.md index 636fe1b..e243cb5 100644 --- a/_posts/2023-04-12-un-outil-sans-daemon-pour-gérer-ses-artefacts-de-build.md +++ b/_posts/2023-04-12-un-outil-sans-daemon-pour-gérer-ses-artefacts-de-build.md @@ -113,9 +113,46 @@ e
list
+ + ``` +On va avoir besoin d'une API du navigateur nommée `FileReader` mais cette dernière utilise la sémantique des callbacks. On va créer un wrapper avec des Promises pour simplifier son utilisation : + +```javascript +const reader = blob => { + const tmp = new FileReader(); + return new Promise((resolve, reject) => { + tmp.onerror = () => { + tmp.abort() + reject(new DOMException("Problem parsing blob")) + } + tmp.onload = () => { + resolve(tmp.result) + } + tmp.readAsText(blob) + }) +} +``` + +Et maintenant on peut simplement écrire notre logique pour récupérer la liste des tags : + +```javascript +const albatros_tags = async () => { + const res = await fetch('https://registry.deuxfleurs.org/v2/albatros/tags/list') + const blob = await res.blob() + const txt = await reader(blob) + const tags = JSON.parse(txt) + return tags +} + +(async () => console.log(await albatros_tags()))() +``` + +Ensuite il ne reste plus qu'à l'insérer dans le DOM de la page : +