{ "name": "iot-dc3-web", "version": "2026.5.22", "private": true, "author": "pnoker", "description": "IoT DC3 platform frontend — Vue 3 + TypeScript + Element Plus", "license": "Apache-2.0", "homepage": "https://github.com/pnoker/iot-dc3", "repository": { "type": "git", "url": "https://github.com/pnoker/iot-dc3.git" }, "keywords": [ "iot", "dc3", "web", "vue3", "typescript", "element-plus" ], "engines": { "node": ">=22.0.0" }, "packageManager": "pnpm@11.15.0", "type": "module", "scripts": { "dev": "vite --host --mode dev", "dev:prod": "vite --host --mode production", "serve:e2e": "vite build --mode dev && node scripts/testing/e2e-server.mjs", "build": "vite build", "build:mock": "vite build --mode mock", "preview": "vite preview", "check": "vue-tsc --noEmit --skipLibCheck", "type-check": "pnpm run check", "lint": "eslint . --fix", "lint:check": "eslint .", "test": "vitest run", "test:unit": "vitest run tests/unit", "test:api": "vitest run tests/api", "test:component": "vitest run tests/component", "test:views": "vitest run tests/views", "test:guard": "vitest run tests/guardrails", "test:impact": "node scripts/testing/changed-test-plan.mjs", "test:ci": "vitest run --coverage", "test:coverage": "vitest run --coverage", "test:e2e": "playwright test", "test:e2e:headed": "E2E_HEADLESS=false playwright test", "test:e2e:ui": "playwright test --ui", "test:e2e:sweep": "node tests/e2e/browser-sweep.mjs", "test:e2e:sweep:headed": "E2E_HEADLESS=false node tests/e2e/browser-sweep.mjs", "test:all": "pnpm run test && pnpm run test:e2e", "prepare": "cd .. && git config core.hooksPath .husky/_", "clean": "rimraf dist" }, "dependencies": { "@amap/amap-jsapi-loader": "^1.0.1", "@antv/g2": "^5.4.8", "@antv/g6": "^5.1.1", "@element-plus/icons-vue": "^2.3.2", "axios": "^1.18.1", "dayjs": "^1.11.21", "dompurify": "^3.4.12", "element-plus": "^2.14.3", "highlight.js": "^11.11.1", "js-base64": "^3.9.1", "js-cookie": "^3.0.8", "json-bigint": "^1.0.0", "marked": "^18.0.6", "mitt": "^3.0.1", "nprogress": "^0.2.0", "pinia": "^4.0.2", "vue": "^3.5.40", "vue-element-plus-x": "^2.0.3", "vue-i18n": "^11.4.6", "vue-router": "^5.2.0" }, "devDependencies": { "@eslint/js": "^10.0.1", "@playwright/test": "^1.62.0", "@types/js-cookie": "^3.0.6", "@types/json-bigint": "^1.0.4", "@types/node": "^26.1.1", "@types/nprogress": "^0.2.3", "@typescript-eslint/eslint-plugin": "^8.64.0", "@typescript-eslint/parser": "^8.64.0", "@vitejs/plugin-vue": "^6.0.8", "@vitest/coverage-v8": "^4.1.10", "@vue/eslint-config-typescript": "^14.9.0", "@vue/test-utils": "^2.4.11", "eslint": "^10.7.0", "eslint-plugin-vue": "^10.10.0", "globals": "^17.8.0", "happy-dom": "^20.11.0", "jsdom": "^30.0.1", "lint-staged": "^17.1.0", "playwright": "^1.61.1", "sass": "^1.102.0", "typescript": "~6.0.3", "unplugin-auto-import": "^21.0.0", "unplugin-vue-components": "^32.1.0", "vite": "^8.1.5", "vitest": "^4.1.10", "vue-eslint-parser": "^10.4.1", "vue-tsc": "^3.3.7" }, "lint-staged": { "*.{vue,js,mjs,cjs,ts,jsx,tsx}": [ "eslint --fix --config eslint.config.mjs" ] } }