Document Compilation & Pipelines
O workspace do Renderer possui um mecanismo de compilação de modelos Markdown altamente flexível e extensível, projetado para combinar elementos gráficos SVG dinâmicos, tipografia codificada em base64 e arquivos textuais com interpolação de tokens.
Fluxo de Pipeline Extensível
O mecanismo compila documentos utilizando pipelines desacoplados que seguem o Princípio Aberto/Fechado (SOLID). Pipelines padrão, como o github-renderer.pipeline.ts, orquestram o processo de compilação de documentos:
- Execução do Pipeline: O executor principal (
src/index.ts) inicia os pipelines ativos registrados. - Análise de Modelo: Lê modelos brutos, como
src/templates/docs/README.template.mde os modelos de cartão SVG. - Substituição de Token: Verifica espaços reservados com chaves duplas (
\{\{ variable \}\}) e os substitui por dados resolvidos pelo pipeline. - Codificação de Tipografia: Codifica em base64 o arquivo de fonte local Nunito, incorporando-o como um
@font-faceembutido dentro de elementos SVG. Isso contorna o sandbox restrito de imagens HTML do GitHub e renderiza o texto com fidelidade de marca perfeita ao nível de pixel. - Gravação de Saída: Compila e gera tanto cartões SVG planos quanto arquivos
.mdtextuais finais na raiz do monorepo ou nos diretórios de destino do pacote.
Referência de Tokens
Os seguintes espaços reservados são suportados dentro do modelo README padrão e são substituídos dinamicamente:
\{\{ name \}\}: O nome de exibição ou login do desenvolvedor.\{\{ user \}\}: O nome de usuário/login do GitHub.\{\{ contributions \}\}: Total de commits, issues, pull requests e revisões de código.\{\{ stars \}\}: Contagem agregada de estrelas em todos os repositórios contabilizados.\{\{ forks \}\}: Contagem agregada de forks em todos os repositórios contabilizados.\{\{ lines_changed \}\}: Adições e exclusões agregadas de código.\{\{ views \}\}: Soma das visualizações de tráfego das últimas duas semanas.\{\{ repos \}\}: Número de repositórios ativos nos quais houve contribuição.
Integração de Picture HTML com Tema Dual
Para suportar os esquemas de cores claro e escuro do GitHub nativamente em um único documento Markdown, o README.md compilado utiliza elementos HTML \<picture> padrão.
Durante a compilação, o pipeline gera SVGs separados para claro e escuro em generated/cards/ (cópias planas: overview-light.svg, overview-dark.svg, header-light.svg, header-dark.svg), que são embutidos no Markdown da seguinte forma:
<picture>
<source
media="(prefers-color-scheme: dark)"
srcset="./renderer/generated/cards/overview-dark.svg"
/>
<source
media="(prefers-color-scheme: light)"
srcset="./renderer/generated/cards/overview-light.svg"
/>
<img alt="GitHub Stats" src="./renderer/generated/cards/overview-light.svg" height="200px" />
</picture>
Quando o GitHub renderiza a página do perfil:
- Modo Escuro: Resolve para o cartão
overview-dark.svg, renderizando fundo escuro e cores baseadas em tokens. - Modo Claro: Resolve para o cartão
overview-light.svg, exibindo cores claras de alto contraste. - Esta abordagem evita o uso de hashes de URL frágeis (
#gh-dark-mode-only) e baseia-se no isolamento de arquivos nativo e limpo para absoluta segurança de renderização.