50 lines
1.4 KiB
JavaScript
50 lines
1.4 KiB
JavaScript
import App from '@/App.vue'
|
|
import '@/assets/main.scss'
|
|
import '@/utils/yup-locale'
|
|
import router from '@/router'
|
|
import { createApp } from 'vue'
|
|
import { createPinia } from 'pinia'
|
|
import { http } from '@/services/api'
|
|
import 'vue3-toastify/dist/index.css'
|
|
import Vue3Toastify from 'vue3-toastify'
|
|
import { setupMocks } from '@/services/mock'
|
|
import { handleError } from '@/utils/error-handler'
|
|
import { globalComponents } from '@/utils/global-components'
|
|
import { MutationCache, QueryCache, QueryClient, VueQueryPlugin } from '@tanstack/vue-query'
|
|
|
|
setupMocks(http)
|
|
|
|
const app = createApp(App)
|
|
const pinia = createPinia()
|
|
|
|
Object.entries(globalComponents).forEach(([name, component]) => app.component(name, component))
|
|
|
|
const queryClient = new QueryClient({
|
|
queryCache: new QueryCache({ onError: (error) => handleError(error) }),
|
|
mutationCache: new MutationCache({ onError: (error) => handleError(error) }),
|
|
defaultOptions: {
|
|
queries: {
|
|
retry: false,
|
|
staleTime: 5 * 60 * 1000,
|
|
refetchInterval: false,
|
|
refetchOnMount: false,
|
|
refetchOnWindowFocus: false,
|
|
gcTime: 5 * 60 * 1000,
|
|
},
|
|
},
|
|
})
|
|
|
|
app.use(VueQueryPlugin, { queryClient })
|
|
|
|
app.use(Vue3Toastify, {
|
|
theme: 'colored',
|
|
type: 'default',
|
|
position: 'bottom-right',
|
|
autoClose: 1500,
|
|
transition: 'slide',
|
|
rtl: true,
|
|
dangerouslyHTMLString: true,
|
|
})
|
|
|
|
app.use(router).use(pinia).mount('#app')
|