Sobre o projeto
Diffuse é um reprodutor de música que se conecta a armazenamento em nuvem e distribuído. É construído como uma coleção de elementos DOM personalizados agnósticos de frameworks (componentes web) que permitem aos desenvolvedores montar um reprodutor de áudio, processar e navegar por metadados de áudio, listar arquivos de áudio e streams de várias fontes, APIs e servidores, e definir como os dados do usuário são salvos ou sincronizados.
Partes principais do projeto:
- Elementos personalizados: componentes web reutilizáveis para construir reprodutores, tratamento de metadados, listagem de fontes e persistência de dados do usuário.
- Carregador HTML: carrega "interfaces" do cache local de dados do usuário, do conjunto padrão do Diffuse, de URLs HTTP(S) ou de URIs do AT Protocol. As interfaces recebem "features" opcionais chamadas facets, também carregadas do cache local.
- A fundação: uma configuração padrão dos elementos personalizados usados nos facets padrão. Os elementos podem se comunicar entre abas e frames por meio de um atributo `group`.
- Lexicons: esquemas de dados na forma de lexicons atproto, armazenados no diretório `lexicons`.
O objetivo é software cooperativo e maleável. Mais detalhes estão no site do projeto.
Uso por desenvolvedores: a biblioteca pode ser consumida tanto pela instância implantada (os elementos apontam para arquivos JavaScript) quanto pelo pacote JavaScript no JSR. Os elementos personalizados são usados como qualquer outro elemento DOM, seja em HTML ou instanciando uma classe. Um exemplo mostra o carregamento do elemento do motor de fila por meio de uma tag script ou importando-o e anexando-o ao corpo do documento com um atributo `group`.
Compilar a partir do código-fonte requer Deno. Os comandos incluem gerar definições de tipo, compilar e servir. A stack inclui Deno, componentes web, web workers (shared e service workers), signals (atualmente alien-signals, com esperança na proposta do TC39), lit-html, music-metadata, Lume e ESBuild.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.