RevelaOS/src/index.ts
2024-01-14 19:51:08 +00:00

66 lines
1.6 KiB
TypeScript

import 'material-symbols'
import './assets/style.less'
import Preloader from './instances/Preloader'
import StatusBar from './instances/StatusBar'
import WindowManager from './instances/WindowManager'
import Flow from './instances/Flow'
import { VirtualFS } from './fs'
import { version } from '../package.json'
const flowDetails = {
version,
codename: 'Mochi'
}
declare global {
interface Window {
flowDetails: typeof flowDetails
preloader: Preloader
flow: Flow
fs: VirtualFS
statusBar: StatusBar
wm: WindowManager
}
}
const params = new URLSearchParams(window.location.search)
async function enableDebug (): Promise<void> {
const { default: eruda } = await import('eruda')
eruda.init()
return await Promise.resolve()
}
if (params.get('debug') !== null && params.get('debug') !== undefined) {
enableDebug().catch(e => console.error(e))
}
window.preloader = new Preloader()
window.flow = new Flow()
window.statusBar = new StatusBar()
window.wm = new WindowManager();
(async function () {
window.preloader.setPending('filesystem')
window.fs = new VirtualFS()
const registrations = await navigator.serviceWorker.getRegistrations()
for (const registration of registrations) {
await registration.unregister()
}
await navigator.serviceWorker.register('/uv-sw.js?url=' + encodeURIComponent(btoa('https://server.flow-works.me')), {
scope: '/service/'
})
await window.preloader.setDone('filesystem')
await window.wm.init()
await window.flow.init()
await window.statusBar.init()
window.preloader.setStatus('')
window.preloader.finish()
})().catch(e => console.error)