DigitalConsumer.ISS/src/main.js
Josh Dassinger ea5836b3e4 Address comments about policy / deductible / coverage calls failing should not bailout and just switch to no coverage
IsVinAddressable API call failure now returns false
Improved logging for cases
Fixed Vehicle Style bailout when selecting select style value
2026-02-19 11:13:29 -06:00

74 lines
2.3 KiB
JavaScript

import { createApp } from 'vue';
import 'bootstrap/dist/js/bootstrap';
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate';
import { useMainStore } from '@/store';
import baseMixin from '@/mixins/base-mixin';
import { createPinia } from 'pinia';
import { vMaska } from 'maska';
import LoadScript from 'vue-plugin-load-script';
import analyticsMixin from '@/mixins/analytics-mixin';
import experimentMixin from '@/mixins/experiment-mixin';
import defineGlobalRules from '@/helpers/global-rule-definer';
import router from './router';
import App from './App.vue';
import Logger from "@/helpers/logger";
import bailoutMessage from '@/constants/bailoutMessage';
import applicationConfig from '@/constants/application-config';
// Instantiate global logging object
global.$logger = new Logger();
// Vue App Setup
const vueApp = createApp(App);
vueApp.config.compilerOptions.isCustomElement = (tag) =>
(tag === 'siteSubHeader'
|| tag === 'ServicePackages'
|| tag === 'servicePackageQuestion');
// Pinia
const pinia = createPinia();
vueApp.use(pinia);
pinia.use(piniaPluginPersistedstate);
useMainStore().populateInitialState(false);
// Additional Vue items to setup
vueApp.use(router);
vueApp.use(LoadScript);
vueApp.directive('maska', vMaska);
vueApp.mixin(baseMixin);
vueApp.mixin(analyticsMixin);
vueApp.mixin(experimentMixin);
function getPageName(vm) {
return vm.$root.getPageNameByQueryString();
}
// Vue Error Handling
vueApp.config.errorHandler = (err, vm, info) => {
const pageName = getPageName(vm);
global.$logger.logError(`[${pageName}] ${info}`, err);
if (applicationConfig.BAILOUT_ON_APPLICATION_ERROR) {
router.navigateBailout(bailoutMessage.applicationError(`[${pageName}] ${info}: ${err.message}\n${err.stack}`));
}
};
// Vue Router Error Handling
router.onError((err) => {
global.$logger.logError('Router Error:', err);
if (applicationConfig.BAILOUT_ON_ROUTER_ERROR) {
router.navigateBailout(bailoutMessage.routerError(`${err.message}\n${err.stack}`));
}
});
global.bailoutOnAxiosError = (error) => {
if (applicationConfig.BAILOUT_ON_API_ERROR) {
router.navigateBailout(bailoutMessage.apiError(error));
}
}
vueApp.mount('#app');
// define global rules
defineGlobalRules();