À propos du projet

Diffuse est un lecteur de musique qui se connecte au cloud et au stockage distribué. Il est construit comme une collection d'éléments DOM personnalisés agnostiques aux frameworks (composants web) qui permettent aux développeurs d'assembler un lecteur audio, de traiter et parcourir les métadonnées audio, de lister les fichiers audio et les flux provenant de diverses sources, API et serveurs, et de définir comment les données utilisateur sont enregistrées ou synchronisées. Éléments clés du projet : - Éléments personnalisés : composants web réutilisables pour construire des lecteurs, gérer les métadonnées, lister les sources et assurer la persistance des données utilisateur. - Chargeur HTML : charge des « interfaces » depuis le cache local des données utilisateur, l'ensemble Diffuse par défaut, des URL HTTP(S) ou des URI AT Protocol. Les interfaces reçoivent des « fonctionnalités » optionnelles appelées facets, également chargées depuis le cache local. - La fondation : une configuration par défaut des éléments personnalisés utilisés à travers les facets par défaut. Les éléments peuvent communiquer entre onglets et cadres via un attribut `group`. - Lexicons : des schémas de données sous forme de lexicons atproto, stockés dans le répertoire `lexicons`. L'objectif est un logiciel coopératif et malléable. Plus de détails sont disponibles sur le site web du projet. Utilisation par les développeurs : la bibliothèque peut être consommée soit via l'instance déployée (les éléments pointent vers des fichiers JavaScript), soit via le paquet JavaScript sur JSR. Les éléments personnalisés s'utilisent comme n'importe quel autre élément DOM, soit en HTML, soit en instanciant une classe. Un exemple montre le chargement de l'élément du moteur de file d'attente via une balise script ou son importation et son ajout au corps du document avec un attribut `group`. La compilation depuis les sources nécessite Deno. Les commandes incluent la génération des définitions de types, la compilation et le service. La pile technique comprend Deno, les composants web, les web workers (shared et service workers), les signals (actuellement alien-signals, avec l'espoir du proposition TC39), lit-html, music-metadata, Lume et ESBuild.