{ "name": "@monkeytype/frontend", "private": true, "license": "GPL-3.0", "type": "module", "scripts": { "lint": "oxlint . --type-aware --type-check", "lint-fast": "oxlint .", "lint-json": "eslint static/**/*.json", "check-assets": "tsx ./scripts/check-assets.ts", "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", "test": "vitest run", "test-coverage": "vitest run --coverage", "dev-test": "concurrently --kill-others \"vite dev\" \"vitest\"", "tsc": "tsc", "docker": "docker compose -f docker/compose.dev.yml up", "storybook": "cd storybook && pnpm run storybook", "import-tree": "tsx ./scripts/import-tree.ts" }, "dependencies": { "@date-fns/utc": "1.2.0", "@leonabcd123/modern-caps-lock": "3.0.4", "@monkeytype/contracts": "workspace:*", "@monkeytype/funbox": "workspace:*", "@monkeytype/schemas": "workspace:*", "@monkeytype/util": "workspace:*", "@sentry/browser": "10.44.0", "@sentry/vite-plugin": "5.2.0", "@solid-devtools/overlay": "0.33.5", "@solid-primitives/refs": "1.1.2", "@solid-primitives/transition-group": "1.1.2", "@solidjs/meta": "0.29.4", "@tanstack/pacer-lite": "0.2.1", "@tanstack/query-db-collection": "1.0.27", "@tanstack/solid-db": "0.2.10", "@tanstack/solid-devtools": "0.8.0", "@tanstack/solid-form": "1.28.4", "@tanstack/solid-hotkeys": "0.4.2", "@tanstack/solid-hotkeys-devtools": "0.4.3", "@tanstack/solid-query": "5.90.23", "@tanstack/solid-query-devtools": "5.91.3", "@tanstack/solid-table": "8.21.3", "@ts-rest/core": "3.52.1", "animejs": "4.2.2", "balloon-css": "1.2.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": "3.2.0", "clsx": "2.1.1", "color-blend": "4.0.0", "damerau-levenshtein": "1.0.8", "date-fns": "3.6.0", "disposable-email-domains-js": "^1.0.35", "firebase": "12.0.0", "hangul-js": "0.2.6", "howler": "2.2.3", "idb": "8.0.3", "lz-ts": "1.1.2", "modern-screenshot": "4.6.8", "object-hash": "3.0.0", "slim-select": "2.9.2", "stemmer": "2.0.1", "tailwind-merge": "3.4.0", "throttle-debounce": "5.0.2", "zod": "3.23.8", "zod-urlsearchparams": "0.0.16" }, "devDependencies": { "@eslint/json": "1.0.1", "@fortawesome/fontawesome-free": "5.15.4", "@monkeytype/oxlint-config": "workspace:*", "@monkeytype/typescript-config": "workspace:*", "@solidjs/testing-library": "0.8.10", "@tailwindcss/vite": "4.2.1", "@tanstack/eslint-plugin-query": "5.91.4", "@testing-library/dom": "10.4.1", "@testing-library/jest-dom": "6.9.1", "@testing-library/user-event": "14.6.1", "@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/node": "24.9.1", "@types/object-hash": "3.0.6", "@types/subset-font": "1.4.3", "@types/throttle-debounce": "5.0.2", "@vitest/coverage-v8": "4.0.15", "autoprefixer": "10.4.27", "caniuse-lite": "1.0.30001778", "concurrently": "8.2.2", "eslint": "9.39.1", "eslint-plugin-compat": "7.0.0", "eslint-plugin-solid": "0.14.5", "firebase-tools": "13.15.1", "fontawesome-subset": "4.4.0", "happy-dom": "20.8.9", "jsdom": "27.4.0", "madge": "8.0.0", "magic-string": "0.30.17", "normalize.css": "8.0.1", "oxlint": "1.60.0", "oxlint-tsgolint": "0.21.0", "postcss": "8.5.8", "sass": "1.70.0", "solid-devtools": "0.34.5", "solid-js": "1.9.10", "subset-font": "2.3.0", "tailwindcss": "4.1.18", "tsx": "4.21.0", "typescript": "6.0.2", "unplugin-inject-preload": "3.0.0", "vite": "8.0.5", "vite-bundle-visualizer": "1.2.1", "vite-plugin-html-inject": "1.1.2", "vite-plugin-inspect": "11.3.3", "vite-plugin-minify": "2.1.0", "vite-plugin-pwa": "1.1.0", "vite-plugin-solid": "2.11.11", "vitest": "4.1.0" }, "lint-staged": { "*": [ "oxfmt --no-error-on-unmatched-pattern -c ../.oxfmtrc.json" ], "*.{ts,js,tsx}": [ "oxlint --type-aware --type-check" ] }, "browserslist": [ "baseline widely available and > 0.002%" ], "engines": { "node": ">=24.0.0 <25" } }