このプロジェクトについて

SwiftTUI Webは、SwiftTUIアプリ(ターミナルセルに描画されるSwiftUIセマンティクス)をブラウザに提供する2つのnpmパッケージを提供します。Appを一度作成すれば、同じViewツリー、@State、@FocusStateをWebページに配信でき、CanvasまたはDOMでレンダリングし、セマンティックアクセシビリティツリーを備え、書き直しやxterm.jsのようなターミナルエミュレータは不要です。 SwiftTUIアプリはwasm32-wasiにコンパイルされ、構造化されたラスタサーフェスをストリーミングします。@swifttui/webパッケージは、DOMまたはキャンバスエンジンを介してそのサーフェスをページに描画し、実際のARIAアクセシビリティツリーをマウントします。ARIAツリーは一方向のセマンティックプレゼンテーションプレビューです。読み上げ順序、名前、ロール、非表示状態、アナウンス、ランタイム起点のフォーカスが提示されますが、支援技術起点のフォーカス、アクティベーション、調整、編集はSwiftTUIにルーティングされません。 このリポジトリには、SwiftTUIの5つのホストのうち2つが含まれています。静的WASIバンドルとlocalhost WebHostです。フレームワーク自体はSwiftTUI/swift-tuiにあります。この分割により、ビルド時のSwiftプロセスとファイルシステムの作業がブラウザセーフなランタイムから分離され、任意のバンドラーがランタイムをインポートできます。 パッケージ: - @swifttui/web: ブラウザランタイム—シーンマニフェストのロード、DOM + キャンバスレンダリング、ARIAマウント、WebSocket + WASIシーンブリッジ。 - @swifttui/build: ビルドツール—マニフェスト生成、Swift WASIビルド、wasm検証、swifttui-web CLI。 インストール: 両方のパッケージは、バンドルされたTypeScript宣言を含むESMとしてnpmに公開されます。BunやTypeScriptツールチェーンは不要です。コンパイル済みのdist/ JavaScriptと宣言が含まれています。npmまたはGitHubリリースのtarballからインストールします。 基本的な使用法: `npx swifttui-web build --package-path ./TerminalApp --app MyApp`でSwiftTUIアプリをWASIにビルドし、createWebHostAppとcreateWasmSceneRuntimeFactoryを使用してブラウザランタイムから結果のマニフェストとwasmをマウントします。WASIランタイムは、SharedArrayBufferバックアップのstdinのために、ホストページがCross-Origin-Opener-Policy: same-originとCross-Origin-Embedder-Policy: require-corpヘッダーを提供する必要があります。これらがないとキャンバスは空白のままです。 ステータス: ベータ版。公開APIは変更される可能性があります。ライブデモはhttps://swifttui.sh/webexampleで実行されています。ドキュメントとAPIリファレンスはhttps://swifttui.sh/docs/documentation/にあります。他のホストには、ターミナル(デフォルトのSwiftTUIインポート)、ネイティブSwiftUI(swift-tui-swiftui)、Jetpack Compose(swift-tui-android)があります。ライセンス: MIT。