{ "name": "radionica3d", "private": true, "version": "0.1.0", "type": "module", "scripts": { "dev": "npm run i18n:generate && vite", "build": "npm run i18n:generate && npm run sitemap:generate && vue-tsc && vite build", "i18n:generate": "node -e \"const cp=require('child_process'),fs=require('fs'); let p='python'; if(fs.existsSync('backend/venv/Scripts/python.exe')) p='backend\\\\venv\\\\Scripts\\python.exe'; else if(fs.existsSync('backend/venv/bin/python3')) p='backend/venv/bin/python3'; else if(fs.existsSync('backend/venv/bin/python')) p='backend/venv/bin/python'; cp.execSync(p+' scripts/manage_locales.py split', {stdio:'inherit'})\"", "sitemap:generate": "node -e \"const cp=require('child_process'),fs=require('fs'); let p='python'; if(fs.existsSync('backend/venv/Scripts/python.exe')) p='backend\\\\venv\\\\Scripts\\python.exe'; else if(fs.existsSync('backend/venv/bin/python3')) p='backend/venv/bin/python3'; else if(fs.existsSync('backend/venv/bin/python')) p='backend/venv/bin/python'; cp.execSync(p+' scripts/generate_sitemap.py', {stdio:'inherit'})\"", "i18n:merge": "node -e \"const cp=require('child_process'),fs=require('fs'); let p='python'; if(fs.existsSync('backend/venv/Scripts/python.exe')) p='backend\\\\venv\\\\Scripts\\python.exe'; else if(fs.existsSync('backend/venv/bin/python3')) p='backend/venv/bin/python3'; else if(fs.existsSync('backend/venv/bin/python')) p='backend/venv/bin/python'; cp.execSync(p+' scripts/manage_locales.py merge', {stdio:'inherit'})\"", "i18n:check": "node -e \"const cp=require('child_process'),fs=require('fs'); let p='python'; if(fs.existsSync('backend/venv/Scripts/python.exe')) p='backend\\\\venv\\\\Scripts\\python.exe'; else if(fs.existsSync('backend/venv/bin/python3')) p='backend/venv/bin/python3'; else if(fs.existsSync('backend/venv/bin/python')) p='backend/venv/bin/python'; cp.execSync(p+' scripts/manage_locales.py missing', {stdio:'inherit'})\"", "lint": "eslint . --ext ts,vue --report-unused-disable-directives --max-warnings 0", "preview": "vite preview", "test": "vitest run" }, "dependencies": { "@tanstack/vue-query": "^5.25.0", "@types/three": "^0.183.1", "@unhead/schema": "^3.0.5", "@unhead/vue": "^3.0.5", "@vueuse/core": "^10.11.1", "@vueuse/motion": "^3.0.3", "class-variance-authority": "^0.7.0", "clsx": "^2.1.0", "date-fns": "^3.6.0", "i18next-browser-languagedetector": "^8.2.1", "lucide-vue-next": "^0.354.0", "pinia": "^2.3.1", "tailwind-merge": "^2.6.1", "tailwindcss-animate": "^1.0.7", "three": "^0.183.2", "vue": "^3.4.21", "vue-i18n": "^9.14.5", "vue-router": "^4.6.4", "vue-sonner": "^1.3.2", "zod": "^3.25.76" }, "devDependencies": { "@types/node": "^20.11.25", "@vitejs/plugin-vue": "^6.0.6", "@vue/test-utils": "^2.4.6", "autoprefixer": "^10.5.0", "jsdom": "^29.0.2", "postcss": "^8.5.10", "tailwindcss": "^3.4.19", "typescript": "^5.3.3", "vite": "^6.0.0", "vite-plugin-prerender": "^1.0.8", "vitest": "^4.1.4", "vue-tsc": "^2.2.12" }, "overrides": { "esbuild": "0.25.0", "braces": "3.0.3", "micromatch": "4.0.8", "http-proxy-middleware": "3.0.5", "html-minifier": "npm:html-minifier-terser@^7.2.0", "@vue/devtools-api": "8.1.1" } }