{ "name": "sky-phone-frontend", "private": true, "version": "0.1.0", "type": "module", "scripts": { "dev": "concurrently -k -n FRONTEND,BACKEND -c cyan,green \"vite --port 5174 --strictPort\" \"node testserver/index.cjs 3002\"", "dev:dev-branch": "concurrently -k -n DEV-UI,DEV-DATA -c blue,magenta \"vite --port 5175 --strictPort\" \"node testserver/index.cjs 3003\"", "build": "pnpm typecheck && pnpm build-only", "build-only": "vite build && node build.cjs", "preview": "vite preview", "typecheck": "vue-tsc --build", "lint": "eslint .", "format": "prettier --write src/ testserver/ build.cjs", "test": "vitest run && pnpm test:browser-mocks", "test:browser-mocks": "node testserver/smoke.cjs" }, "pnpm": { "overrides": { "nanoid@<3.3.18": "3.3.18" } }, "dependencies": { "@tiptap/core": "^3.29.2", "@tiptap/extension-placeholder": "^3.29.2", "@tiptap/markdown": "^3.29.2", "@tiptap/pm": "^3.29.2", "@tiptap/starter-kit": "^3.29.2", "@tiptap/vue-3": "^3.29.2", "dompurify": "^3.4.13", "emoji-picker-element-data": "^1.8.0", "fix-webm-duration": "^1.0.6", "framework7-icons": "^5.0.5", "konsta": "~5.2.0", "lucide-vue-next": "^0.525.0", "pinia": "^3.0.3", "vue": "^3.5.17", "vue-router": "^4.5.1" }, "devDependencies": { "@tailwindcss/vite": "^4.0.0", "@tsconfig/node22": "^22.0.2", "@types/node": "^22.15.32", "@vitejs/plugin-vue": "^6.0.0", "@vue/eslint-config-prettier": "^10.2.0", "@vue/eslint-config-typescript": "^14.5.1", "@vue/tsconfig": "^0.7.0", "concurrently": "^9.2.0", "cors": "^2.8.5", "eslint": "^9.29.0", "eslint-plugin-vue": "~10.2.0", "express": "^5.1.0", "prettier": "3.5.3", "tailwindcss": "^4.0.0", "typescript": "~5.8.0", "vite": "^7.0.0", "vite-plugin-vue-devtools": "^8.2.1", "vitest": "^3.2.4", "vue-tsc": "^2.2.10" } }