2022-04-17 22:43:58 +00:00
|
|
|
import logger from '~/logging'
|
|
|
|
import router from '~/router'
|
|
|
|
import VueLazyload from 'vue-lazyload'
|
|
|
|
import store from '~/store'
|
|
|
|
import { sync } from 'vuex-router-sync'
|
|
|
|
import VueCompositionAPI, { createApp } from '@vue/composition-api'
|
2022-04-18 00:40:34 +00:00
|
|
|
import Vue, { CreateElement } from 'vue'
|
2022-04-23 07:26:25 +00:00
|
|
|
import useTheme from '~/composables/useTheme'
|
|
|
|
useTheme()
|
2022-04-18 00:40:34 +00:00
|
|
|
|
|
|
|
Vue.config.devtools = true
|
2022-04-17 22:43:58 +00:00
|
|
|
|
|
|
|
logger.default.info('Loading environment:', import.meta.env.MODE)
|
|
|
|
logger.default.debug('Environment variables:', import.meta.env)
|
|
|
|
|
|
|
|
sync(store, router)
|
|
|
|
|
|
|
|
const app = createApp({
|
|
|
|
store,
|
|
|
|
router,
|
2022-04-18 00:40:34 +00:00
|
|
|
components: {
|
|
|
|
App: () => import('~/App.vue')
|
|
|
|
},
|
2022-04-17 23:24:50 +00:00
|
|
|
data: () => ({ isMounted: false }),
|
|
|
|
async mounted () {
|
|
|
|
this.isMounted = true
|
|
|
|
},
|
|
|
|
render (h: CreateElement) {
|
|
|
|
if (this.isMounted) {
|
2022-04-23 07:37:43 +00:00
|
|
|
return h('app')
|
2022-04-17 23:24:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return h()
|
|
|
|
}
|
2022-04-17 22:43:58 +00:00
|
|
|
})
|
|
|
|
|
|
|
|
app.use(VueCompositionAPI)
|
|
|
|
app.use(VueLazyload)
|
|
|
|
|
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-17 23:24:50 +00:00
|
|
|
store.dispatch('instance/fetchFrontSettings').finally(async () => {
|
|
|
|
// Wait for all modules to load
|
|
|
|
await Promise.all(modules)
|
|
|
|
|
2022-04-17 22:43:58 +00:00
|
|
|
app.mount('#app')
|
|
|
|
logger.default.info('Everything loaded!')
|
|
|
|
})
|