From 392d4c1745ffcbc398eda768ea67e3c6aa9f7d89 Mon Sep 17 00:00:00 2001 From: Quentin Date: Thu, 13 Apr 2023 07:20:03 +0000 Subject: [PATCH] =?UTF-8?q?Update=20Article=20=E2=80=9C2023-04-12-un-outil?= =?UTF-8?q?-sans-daemon-pour-g=C3=A9rer-ses-artefacts-de-build=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...aemon-pour-gérer-ses-artefacts-de-build.md | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) 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 : +