Sobre el proyecto

Diffuse es un reproductor de música que se conecta a almacenamiento en la nube y distribuido. Está construido como una colección de elementos DOM personalizados independientes de framework (componentes web) que permiten a los desarrolladores ensamblar un reproductor de audio, procesar y explorar metadatos de audio, listar archivos y transmisiones de audio de varias fuentes, APIs y servidores, y definir cómo se guardan o sincronizan los datos de usuario. Partes clave del proyecto: - Elementos personalizados: componentes web reutilizables para construir reproductores, manejo de metadatos, listado de fuentes y persistencia de datos de usuario. - Cargador HTML: carga "interfaces" desde la caché local de datos de usuario, el conjunto predeterminado de Diffuse, URLs HTTP(S), o URIs de AT Protocol. Las interfaces reciben "funciones" opcionales llamadas facets, también cargadas desde la caché local. - La base: una configuración predeterminada de los elementos personalizados utilizada en los facets predeterminados. Los elementos pueden comunicarse entre pestañas y marcos mediante un atributo `group`. - Léxicos: esquemas de datos en forma de léxicos de atproto, almacenados en el directorio `lexicons`. El objetivo es software cooperativo y maleable. Más detalles están en el sitio web del proyecto. Uso para desarrolladores: la librería se puede consumir a través de la instancia desplegada (los elementos enlazan a archivos JavaScript) o mediante el paquete JavaScript en JSR. Los elementos personalizados se usan como cualquier otro elemento DOM, ya sea en HTML o instanciando una clase. Un ejemplo muestra la carga del elemento del motor de cola mediante una etiqueta script o importándolo y añadiéndolo al cuerpo del documento con un atributo `group`. La compilación desde el código fuente requiere Deno. Los comandos incluyen generar definiciones de tipos, compilar y servir. La pila incluye Deno, componentes web, web workers (shared y service workers), signals (actualmente alien-signals, con esperanza en la propuesta de TC39), lit-html, music-metadata, Lume y ESBuild.