2022-04-17 22:43:58 +00:00
|
|
|
import router from '~/router'
|
|
|
|
import store from '~/store'
|
2022-04-19 19:40:25 +00:00
|
|
|
import { configureCompat, createApp, defineAsyncComponent, h } from 'vue'
|
2022-04-18 18:39:30 +00:00
|
|
|
import useLogger from '~/composables/useLogger'
|
2022-04-23 07:26:25 +00:00
|
|
|
import useTheme from '~/composables/useTheme'
|
|
|
|
useTheme()
|
2022-04-18 00:40:34 +00:00
|
|
|
|
2022-04-19 19:40:25 +00:00
|
|
|
configureCompat({
|
|
|
|
RENDER_FUNCTION: false
|
|
|
|
})
|
|
|
|
|
2022-04-18 18:39:30 +00:00
|
|
|
const logger = useLogger()
|
|
|
|
logger.info('Loading environment:', import.meta.env.MODE)
|
|
|
|
logger.debug('Environment variables:', import.meta.env)
|
2022-04-17 22:43:58 +00:00
|
|
|
|
|
|
|
const app = createApp({
|
2022-04-19 19:40:25 +00:00
|
|
|
name: 'Root',
|
|
|
|
data: () => ({ ready: false }),
|
|
|
|
mounted () {
|
|
|
|
this.ready = true
|
2022-04-17 23:24:50 +00:00
|
|
|
},
|
2022-04-19 19:40:25 +00:00
|
|
|
render () {
|
|
|
|
if (this.ready) {
|
|
|
|
return h(defineAsyncComponent(() => import('~/App.vue')))
|
2022-04-17 23:24:50 +00:00
|
|
|
}
|
|
|
|
|
2022-04-19 19:40:25 +00:00
|
|
|
return null
|
2022-04-17 23:24:50 +00:00
|
|
|
}
|
2022-04-17 22:43:58 +00:00
|
|
|
})
|
|
|
|
|
2022-04-18 16:17:51 +00:00
|
|
|
app.use(router)
|
|
|
|
app.use(store)
|
2022-04-17 22:43:58 +00:00
|
|
|
|
2022-04-17 23:24:50 +00:00
|
|
|
const modules: Promise<unknown>[] = []
|
2022-04-23 12:10:36 +00:00
|
|
|
for (const module of Object.values(import.meta.globEager('./init/*.ts'))) {
|
2022-04-17 23:24:50 +00:00
|
|
|
modules.push(module.install?.({
|
2022-04-17 22:43:58 +00:00
|
|
|
app,
|
|
|
|
router,
|
|
|
|
store
|
2022-04-17 23:24:50 +00:00
|
|
|
}))
|
2022-04-17 22:43:58 +00:00
|
|
|
}
|
|
|
|
|
2022-04-18 18:39:30 +00:00
|
|
|
// Wait for all modules to load
|
|
|
|
Promise.all(modules).finally(() => {
|
2022-04-17 22:43:58 +00:00
|
|
|
app.mount('#app')
|
2022-04-18 18:39:30 +00:00
|
|
|
logger.info('Everything loaded!')
|
2022-04-17 22:43:58 +00:00
|
|
|
})
|