{ "name": "@monkeytype/frontend", "license": "GPL-3.0", "private": true, "type": "module", "scripts": { "lint": "eslint \"./**/*.ts\"", "validate-json": "npx gulp validate-json-schema", "audit": "vite-bundle-visualizer", "dep-graph": "madge -c -i \"dep-graph.png\" ./src/ts", "ts-check": "tsc --noEmit", "build": "npm run madge && vite build", "madge": " madge --circular --extensions ts ./src", "start": "vite preview --port 3000", "dev": "vite dev", "deploy-live": "npm run validate-json && npm run build && firebase deploy -P live --only hosting", "deploy-preview": "npm run validate-json && npm run build && firebase hosting:channel:deploy preview -P live --expires 2h", "test": "vitest run", "test-coverage": "vitest run --coverage", "dev-test": "concurrently --kill-others \"vite dev\" \"vitest\"", "tsc": "tsc", "knip": "knip", "docker": "docker compose -f docker/compose.dev.yml up" }, "engines": { "node": "20.16.0" }, "browserslist": [ "defaults" ], "devDependencies": { "@fortawesome/fontawesome-free": "5.15.4", "@monkeytype/eslint-config": "workspace:*", "@monkeytype/typescript-config": "workspace:*", "@types/canvas-confetti": "1.4.3", "@types/chartjs-plugin-trendline": "1.0.1", "@types/damerau-levenshtein": "1.0.0", "@types/howler": "2.2.7", "@types/jquery": "3.5.14", "@types/node": "20.14.11", "@types/object-hash": "3.0.6", "@types/subset-font": "1.4.3", "@types/throttle-debounce": "2.1.0", "@vitest/coverage-v8": "2.0.5", "ajv": "8.12.0", "autoprefixer": "10.4.20", "concurrently": "8.2.2", "dotenv": "16.4.5", "eslint": "8.57.0", "firebase-tools": "13.15.1", "fontawesome-subset": "4.4.0", "gulp": "4.0.2", "gulp-eslint-new": "1.9.1", "happy-dom": "15.10.2", "madge": "8.0.0", "normalize.css": "8.0.1", "postcss": "8.4.31", "sass": "1.70.0", "subset-font": "2.3.0", "typescript": "5.5.4", "vite": "5.2.14", "vite-bundle-visualizer": "1.0.1", "vite-plugin-checker": "0.7.2", "vite-plugin-filter-replace": "0.1.13", "vite-plugin-html-inject": "1.1.2", "vite-plugin-inspect": "0.8.3", "vite-plugin-pwa": "0.20.0", "vitest": "2.0.5" }, "dependencies": { "@date-fns/utc": "1.2.0", "@monkeytype/contracts": "workspace:*", "@monkeytype/funbox": "workspace:*", "@monkeytype/util": "workspace:*", "@ts-rest/core": "3.51.0", "canvas-confetti": "1.5.1", "chart.js": "3.7.1", "chartjs-adapter-date-fns": "3.0.0", "chartjs-plugin-annotation": "2.2.1", "chartjs-plugin-trendline": "1.0.2", "color-blend": "4.0.0", "damerau-levenshtein": "1.0.8", "date-fns": "3.6.0", "firebase": "10.12.4", "hangul-js": "0.2.6", "howler": "2.2.3", "html2canvas": "1.4.1", "jquery": "3.7.1", "jquery-color": "2.2.0", "jquery.easing": "1.4.1", "konami": "1.6.3", "lz-ts": "1.1.2", "object-hash": "3.0.0", "slim-select": "2.9.2", "stemmer": "2.0.1", "throttle-debounce": "5.0.2", "zod": "3.23.8" } }