diff --git a/package.json b/package.json index 379d4ff..20b9fe5 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,7 @@ "version": "0.1.2", "type": "module", "scripts": { - "build": "nuxt build", + "build": "nuxt build && node scripts/fix-vite-mapdeps.js", "dev": "nuxt dev", "drizzle:generate": "drizzle-kit generate", "drizzle:migrate": "drizzle-kit migrate", diff --git a/scripts/fix-vite-mapdeps.js b/scripts/fix-vite-mapdeps.js new file mode 100644 index 0000000..2699b51 --- /dev/null +++ b/scripts/fix-vite-mapdeps.js @@ -0,0 +1,52 @@ +#!/usr/bin/env node + +/** + * Post-build script to fix the Vite 7.x TDZ error in __vite__mapDeps + * This script patches the generated JavaScript files after the build + */ + +import { readdir, readFile, writeFile } from 'node:fs/promises' +import { join } from 'node:path' + +const NUXT_DIR = join(process.cwd(), '.output/public/_nuxt') + +async function fixFile(filePath) { + const content = await readFile(filePath, 'utf-8') + const fixedContent = content.replace( + /const __vite__mapDeps=\(i,m=__vite__mapDeps,/g, + 'let __vite__mapDeps;__vite__mapDeps=(i,m=__vite__mapDeps,' + ) + + if (fixedContent !== content) { + await writeFile(filePath, fixedContent, 'utf-8') + console.log(`āœ“ Fixed TDZ error in ${filePath.split('/').pop()}`) + return true + } + + return false +} + +async function main() { + try { + const files = await readdir(NUXT_DIR) + const jsFiles = files.filter((f) => f.endsWith('.js')) + + let fixedCount = 0 + for (const file of jsFiles) { + const filePath = join(NUXT_DIR, file) + const fixed = await fixFile(filePath) + if (fixed) fixedCount++ + } + + if (fixedCount > 0) { + console.log(`\nāœ“ Fixed __vite__mapDeps TDZ error in ${fixedCount} file(s)`) + } else { + console.log('\nāœ“ No __vite__mapDeps TDZ errors found') + } + } catch (error) { + console.error('Error fixing __vite__mapDeps:', error) + process.exit(1) + } +} + +main() diff --git a/src/plugins/init-logger.ts b/src/plugins/init-logger.ts new file mode 100644 index 0000000..e5874b2 --- /dev/null +++ b/src/plugins/init-logger.ts @@ -0,0 +1,25 @@ +export default defineNuxtPlugin({ + name: 'init-logger', + enforce: 'pre', + parallel: false, + setup() { + // Add global error handler for better debugging + window.addEventListener('error', (event) => { + console.error('[HaexHub] Global error caught:', { + message: event.message, + filename: event.filename, + lineno: event.lineno, + colno: event.colno, + error: event.error, + stack: event.error?.stack, + }) + }) + + window.addEventListener('unhandledrejection', (event) => { + console.error('[HaexHub] Unhandled rejection:', { + reason: event.reason, + promise: event.promise, + }) + }) + }, +}) diff --git a/src/stores/ui/index.ts b/src/stores/ui/index.ts index 1fddcb7..c5a6dfb 100644 --- a/src/stores/ui/index.ts +++ b/src/stores/ui/index.ts @@ -1,5 +1,6 @@ import { breakpointsTailwind } from '@vueuse/core' import { broadcastContextToAllExtensions } from '~/composables/extensionMessageHandler' + import de from './de.json' import en from './en.json' @@ -13,7 +14,6 @@ export const useUiStore = defineStore('uiStore', () => { const { locale } = useI18n({ useScope: 'global', }) - const { platform } = useDeviceStore() $i18n.setLocaleMessage('de', { ui: de, @@ -62,11 +62,13 @@ export const useUiStore = defineStore('uiStore', () => { }) // Broadcast theme and locale changes to extensions - watch([currentThemeName, locale], () => { + watch([currentThemeName, locale], async () => { + const deviceStore = useDeviceStore() + const platformValue = await deviceStore.platform broadcastContextToAllExtensions({ theme: currentThemeName.value, locale: locale.value, - platform, + platform: platformValue, }) })