text: import { createApp } from 'vue'
  import App from '@/scripts/App.vue'
  import { createI18n } from 'vue-i18n'
  import messages from '@/scripts/locales/locales'
  import router from '@/scripts/router/index'
  import { defineGlobalComponents } from './global-components'
  import utils from '@/scripts/helpers/utilities.js'
  import _ from 'lodash'
  import Maska from 'maska'
  import { VTooltip } from 'v-tooltip'
  
  const app = createApp(App)
  
  export default class Crater {
    constructor() {
      this.bootingCallbacks = []
      this.messages = messages
    }
  
    booting(callback) {
      this.bootingCallbacks.push(callback)
    }
  
    executeCallbacks() {
      this.bootingCallbacks.forEach((callback) => {
        callback(app, router)
      })
    }
  
    addMessages(moduleMessages = []) {
      _.merge(this.messages, moduleMessages)
    }
  
    start() {
      this.executeCallbacks()
  
      defineGlobalComponents(app)
  
      app.provide('$utils', utils)
  
      const i18n = createI18n({
        locale: 'en',
        fallbackLocale: 'en',
        globalInjection: true,
        messages: this.messages,
      })
  
      window.i18n = i18n
  
      const { createPinia } = window.pinia
  
      app.use(router)
      app.use(Maska)
      app.use(i18n)
      app.use(createPinia())
      app.provide('utils', utils)
      app.directive('tooltip', VTooltip)
  
      app.mount('body')
    }
  }
  