import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import { pinia } from './stores'
import versionInfo from 'virtual:version-info'
import { getErrorHandler } from '@tianyio/fast-util-lib'

console.log('📦 应用版本:', versionInfo)

// 样式文件
import './style.css'

// 创建 Vue 应用实例
const app = createApp(App)
// 设置全局错误处理
app.config.errorHandler = getErrorHandler()

app.use(pinia)
app.use(router)

// 初始化 stores（如果需要）
// initializeStores()

// 开发环境下的调试信息和性能监控
if (import.meta.env.DEV) {
  // 性能监控
  const startTime = performance.now()
  app.mount('#root')
  const mountTime = performance.now() - startTime
  console.log(`⚡ 应用挂载耗时: ${mountTime.toFixed(2)}ms`)

  // 内存使用情况（如果浏览器支持）
  if ('memory' in performance) {
    const { memory } = performance as {
      memory: { usedJSHeapSize: number; totalJSHeapSize: number; jsHeapSizeLimit: number }
    }
    console.log('💾 内存使用情况:', {
      used: `${(memory.usedJSHeapSize / 1024 / 1024).toFixed(2)}MB`,
      total: `${(memory.totalJSHeapSize / 1024 / 1024).toFixed(2)}MB`,
      limit: `${(memory.jsHeapSizeLimit / 1024 / 1024).toFixed(2)}MB`,
    })
  }
}

// 生产环境优化
if (import.meta.env.PROD) {
  // 挂载应用
  app.mount('#root')
  // 禁用开发者工具
  app.config.devtools = false

  // 性能标记
  performance.mark('app-start')

  // 应用加载完成后的性能测量
  window.addEventListener('load', () => {
    performance.mark('app-loaded')
    performance.measure('app-load-time', 'app-start', 'app-loaded')

    const [measure] = performance.getEntriesByName('app-load-time')
    console.log(`📊 应用加载时间: ${measure?.duration.toFixed(2)}ms`)
  })
}

// 导出应用实例供测试使用
export default app
