{ "name": "iot-dc3-web", "version": "2026.5.22", "private": true, "author": "pnoker", "description": "IoT DC3 Industrial AI IoT Platform frontend — Vue 3 + TypeScript + Element Plus", "license": "AGPL-3.0-or-later", "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@12.3.4", "type": "module", "scripts": { "dev": "vite --host --mode dev", "dev:mock": "vite --host --mode mock", "dev:prod": "vite --host --mode production", "serve:e2e": "vite build --mode dev && node scripts/testing/e2e-server.mjs", "serve:e2e:mock": "vite build --mode mock && 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:responsive": "E2E_SERVER_MODE=mock playwright test tests/e2e/specs/responsive.spec.ts", "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": { "@antv/g2": "^5.4.8", "@antv/g6": "^5.1.1", "@element-plus/icons-vue": "^2.3.2", "axios": "^1.20.0", "dayjs": "^1.11.23", "dompurify": "^3.4.14", "element-plus": "^2.14.5", "marked": "^18.0.11", "nprogress": "^0.2.0", "pinia": "^4.0.3", "vue": "^3.5.42", "vue-element-plus-x": "^2.0.3", "vue-i18n": "^11.4.10", "vue-router": "^5.3.1" }, "devDependencies": { "@eslint/js": "^10.0.1", "@playwright/test": "^1.63.0", "@types/node": "^26.4.1", "@types/nprogress": "^0.2.3", "@typescript-eslint/eslint-plugin": "^8.69.0", "@typescript-eslint/parser": "^8.69.0", "@vitejs/plugin-vue": "^6.0.8", "@vitest/coverage-v8": "^5.0.0", "@vue/eslint-config-typescript": "^14.9.0", "@vue/test-utils": "^2.5.0", "eslint": "^10.10.0", "eslint-plugin-vue": "^10.11.0", "globals": "^17.12.0", "happy-dom": "^20.14.0", "jsdom": "^30.0.1", "lint-staged": "^17.5.0", "playwright": "^1.63.0", "sass": "^1.104.0", "typescript": "~6.0.3", "unplugin-auto-import": "^21.1.0", "unplugin-vue-components": "^32.1.0", "vite": "^8.2.2", "vitest": "^5.0.0", "vue-eslint-parser": "^10.4.1", "vue-tsc": "^3.3.11" }, "lint-staged": { "*.{vue,js,mjs,cjs,ts,jsx,tsx}": [ "eslint --fix --config eslint.config.mjs" ] } }