{ "name": "isitdown", "version": "2.40.0", "private": true, "description": "Polls the public status pages of third-party providers and notifies on state transitions", "license": "MIT", "type": "module", "engines": { "node": ">=24" }, "scripts": { "build": "tsc -p tsconfig.json && vite build && node tools/copy-assets.mjs", "build:light": "tsc -p tsconfig.light.json && node tools/copy-assets.mjs", "build:ui": "tsc -p tsconfig.json && vite build && node tools/copy-assets.mjs", "build:cli": "tsc -p tsconfig.cli.json && node tools/copy-assets.mjs", "build:sea": "node tools/build-sea.mjs", "check:config": "node src/light/check.ts", "canary": "node tools/canary.mjs", "check:bundle": "node tools/bundle-budget.mjs", "check:readme": "node tools/readme-parity.mjs", "coverage": "npm run coverage:server && npm run coverage:web", "coverage:server": "node --test --experimental-test-coverage --test-coverage-exclude=\"test/**\" --test-coverage-exclude=\"tools/**\" --test-coverage-exclude=\"src/ui/web/**\" --test-coverage-exclude=\"**/isitdown-plugins-*/**\" --test-coverage-lines=95 --test-coverage-branches=88 --test-coverage-functions=93 \"test/**/*.test.ts\"", "coverage:web": "vitest run --coverage", "coverage:web:shard": "vitest run --coverage --coverage.thresholds.lines=0 --coverage.thresholds.branches=0 --coverage.thresholds.functions=0 --coverage.thresholds.statements=0 --reporter=default --reporter=blob", "coverage:web:merge": "vitest run --merge-reports=src/ui/web/.vitest-reports --coverage", "dev:ui": "concurrently -n server,vite -c blue,magenta \"DB_PATH=./data/isitdown.db WEB_DIR=./dist/ui/public node --watch --env-file-if-exists=.env src/ui/server.ts\" \"vite\"", "dev:docker": "docker compose -f docker-compose.yml -f docker-compose.dev.yml --profile ui up -d", "lint": "biome lint .", "preversion": "npm run typecheck && npm test && npm run test:integration", "record-fixture": "node tools/record-fixture.mjs", "release-notes": "node tools/release-notes.mjs", "test": "node --test \"test/**/*.test.ts\" && vitest run", "test:integration": "node --test \"test/**/*.itest.ts\"", "test:load": "node tools/loadtest.mjs", "test:mutation": "node tools/mutation.mjs", "test:visual": "node tools/visual-regression.mjs", "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.web.json --noEmit" }, "dependencies": { "express": "^5.2.1", "qrcode-generator": "^2.0.4", "web-push": "^3.6.7", "yaml": "^2.5.0", "zod": "^3.25.0" }, "devDependencies": { "@biomejs/biome": "2.5.15", "@tailwindcss/vite": "^4.3.3", "@tanstack/react-query": "^5.101.4", "@tanstack/react-table": "^9.1.2", "@testing-library/jest-dom": "^7.0.1", "@testing-library/react": "^16.3.2", "@testing-library/user-event": "^14.6.5", "@types/express": "^5.0.6", "@types/node": "^24.0.0", "@types/react": "^19.2.18", "@types/react-dom": "^19.2.4", "@types/web-push": "^3.6.4", "@vitejs/plugin-react": "^6.1.0", "@vitest/coverage-v8": "^4.1.11", "axe-core": "^4.14.0", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", "cmdk": "^1.1.1", "cobe": "^2.0.1", "concurrently": "^10.0.5", "dotted-map": "^3.1.0", "happy-dom": "^20.11.6", "i18next": "^26.4.0", "lucide-react": "^1.33.0", "motion": "^13.1.1", "radix-ui": "^1.6.7", "react": "^19.2.8", "react-dom": "^19.2.8", "react-i18next": "^17.0.12", "react-router": "^8.3.0", "recharts": "^3.8.0", "shadcn": "^4.21.0", "tailwind-merge": "^3.6.0", "tailwindcss": "^4.3.3", "typescript": "^5.9.0", "vite": "^8.2.2", "vitest": "^4.1.11" } }