Sobre o projeto
SwiftTUI Web fornece dois pacotes npm que trazem aplicativos SwiftTUI—semântica SwiftUI desenhada em células de terminal—para o navegador. Crie um App uma vez e envie a mesma árvore de Views, @State e @FocusState para uma página web, renderizada via Canvas ou DOM com uma árvore de acessibilidade semântica, sem reescrever ou usar um emulador de terminal como xterm.js.
Um aplicativo SwiftTUI compila para wasm32-wasi e transmite uma superfície raster estruturada. O pacote @swifttui/web pinta essa superfície na página via motores DOM ou canvas e monta uma árvore ARIA de acessibilidade real. A árvore ARIA é uma prévia de apresentação semântica unidirecional: ordem de leitura, nomes, papéis, estado oculto, anúncios e foco de origem em tempo de execução são apresentados, mas foco de origem assistiva, ativação, ajuste e edição não retornam para SwiftTUI.
Este repositório contém dois dos cinco hosts do SwiftTUI: um pacote WASI estático e um WebHost localhost. A estrutura em si vive em SwiftTUI/swift-tui. A divisão mantém processos Swift e trabalho de sistema de arquivos em tempo de compilação fora do runtime seguro para navegador, para que qualquer bundler possa importar o runtime.
Pacotes:
- @swifttui/web: Runtime do navegador—carregamento de manifesto de cena, renderização DOM + canvas, montagem ARIA, pontes de cena WebSocket + WASI.
- @swifttui/build: Ferramentas de build—geração de manifesto, builds Swift WASI, validação wasm e a CLI swifttui-web.
Instalação: Ambos os pacotes publicam no npm como ESM com declarações TypeScript empacotadas. Nenhuma ferramenta Bun ou TypeScript é necessária; eles contêm JavaScript dist/ compilado e declarações. Instale via npm ou a partir de tarballs de lançamento do GitHub.
Uso básico: Compile um aplicativo SwiftTUI para WASI com `npx swifttui-web build --package-path ./TerminalApp --app MyApp`, depois monte o manifesto e wasm resultantes do runtime do navegador usando createWebHostApp e createWasmSceneRuntimeFactory. O runtime WASI requer que a página host sirva cabeçalhos Cross-Origin-Opener-Policy: same-origin e Cross-Origin-Embedder-Policy: require-corp para stdin com suporte a SharedArrayBuffer; sem eles, o canvas permanece em branco.
Status: beta; a API pública pode mudar. Uma demonstração ao vivo roda em https://swifttui.sh/webexample. Documentação e referência de API em https://swifttui.sh/docs/documentation/. Outros hosts incluem terminal (importação padrão SwiftTUI), SwiftUI nativo (swift-tui-swiftui) e Jetpack Compose (swift-tui-android). Licença: MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.