इस प्रोजेक्ट के बारे में

SwiftTUI Web दो npm पैकेज प्रदान करता है जो SwiftTUI ऐप्स—टर्मिनल सेल में खींचे गए SwiftUI सेमेंटिक्स—को ब्राउज़र में लाते हैं। एक बार App लिखें और उसी View ट्री, @State, और @FocusState को वेब पेज पर भेजें, जो Canvas या DOM के माध्यम से सिमेंटिक एक्सेसिबिलिटी ट्री के साथ रेंडर होता है, बिना फिर से लिखे या xterm.js जैसे टर्मिनल एमुलेटर का उपयोग किए। एक SwiftTUI ऐप wasm32-wasi में संकलित होता है और एक संरचित रास्टर सतह स्ट्रीम करता है। @swifttui/web पैकेज उस सतह को DOM या canvas इंजन के माध्यम से पेज में पेंट करता है और एक वास्तविक ARIA एक्सेसिबिलिटी ट्री माउंट करता है। ARIA ट्री एक-तरफ़ा सिमेंटिक प्रस्तुति पूर्वावलोकन है: पढ़ने का क्रम, नाम, भूमिकाएँ, छिपी स्थिति, घोषणाएँ, और रनटाइम-मूल फोकस प्रस्तुत किए जाते हैं, लेकिन सहायक-मूल फोकस, सक्रियण, समायोजन, और संपादन SwiftTUI में वापस रूट नहीं होते। इस रिपॉजिटरी में SwiftTUI के पाँच होस्ट में से दो शामिल हैं: एक स्थिर WASI बंडल और एक localhost WebHost। फ्रेमवर्क स्वयं SwiftTUI/swift-tui में रहता है। यह विभाजन ब्राउज़र-सुरक्षित रनटाइम से बिल्ड-टाइम Swift प्रक्रियाओं और फ़ाइलसिस्टम कार्य को बाहर रखता है, ताकि कोई भी बंडलर रनटाइम आयात कर सके। पैकेज: - @swifttui/web: ब्राउज़र रनटाइम—सीन-मैनिफेस्ट लोडिंग, DOM + canvas रेंडरिंग, ARIA माउंटिंग, WebSocket + WASI सीन ब्रिज। - @swifttui/build: बिल्ड टूलिंग—मैनिफेस्ट जनरेशन, Swift WASI बिल्ड, wasm सत्यापन, और swifttui-web CLI। स्थापना: दोनों पैकेज npm पर ESM के रूप में बंडल किए गए TypeScript घोषणाओं के साथ प्रकाशित होते हैं। कोई Bun या TypeScript टूलचेन आवश्यक नहीं; उनमें संकलित dist/ JavaScript और घोषणाएँ होती हैं। npm या GitHub रिलीज़ टारबॉल से स्थापित करें। मूल उपयोग: `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 हेडर प्रदान करना आवश्यक है; उनके बिना canvas खाली रहता है। स्थिति: बीटा; सार्वजनिक API बदल सकता है। एक लाइव डेमो https://swifttui.sh/webexample पर चलता है। दस्तावेज़ीकरण और API संदर्भ https://swifttui.sh/docs/documentation/ पर। अन्य होस्ट में टर्मिनल (डिफ़ॉल्ट SwiftTUI आयात), नेटिव SwiftUI (swift-tui-swiftui), और Jetpack Compose (swift-tui-android) शामिल हैं। लाइसेंस: MIT।