{ "name": "sendou.ink", "version": "3.0.0", "private": true, "packageManager": "pnpm@10.33.0", "sideEffects": false, "type": "module", "scripts": { "deploy": "pnpm install --frozen-lockfile && pnpm run build", "build": "react-router build", "dev": "cross-env DB_PATH=db.sqlite3 pnpm run migrate up && pnpm run setup && react-router dev --host", "dev:prod": "cross-env DB_PATH=db-prod.sqlite3 VITE_PROD_MODE=true react-router dev --host", "start": "pnpm run migrate up && react-router-serve build/server/index.js", "migrate": "ley", "migrate:prod": "cross-env DB_PATH=db-prod.sqlite3 pnpm run migrate up", "check-translation-jsons": "node --experimental-strip-types scripts/check-translation-jsons.ts", "check-translation-jsons:no-write": "node --experimental-strip-types scripts/check-translation-jsons.ts --no-write", "check-homemade-badges": "node --experimental-strip-types scripts/check-homemade-badges.ts", "check-articles": "tsx scripts/check-articles.ts", "refresh-prod-db": "node --experimental-strip-types scripts/refresh-prod-db.ts && pnpm run migrate:prod", "biome:check": "biome check --error-on-warnings .", "biome:fix": "biome check --error-on-warnings --write .", "biome:fix:unsafe": "biome check --error-on-warnings --write --unsafe .", "typecheck": "react-router typegen && tsc --noEmit", "typecheck:scripts": "tsc --noEmit -p scripts", "test:unit:browser": "cross-env VITE_SITE_DOMAIN=http://localhost:5173 BROWSER_HEADLESS=true vitest --silent=passed-only run", "test:browser:ui": "cross-env VITE_SITE_DOMAIN=http://localhost:5173 vitest --silent=passed-only --project browser", "test:unit:browser:ui": "cross-env VITE_SITE_DOMAIN=http://localhost:5173 vitest --silent=passed-only", "test:e2e": "playwright test", "test:e2e:flaky-detect": "playwright test --repeat-each=10 --max-failures=1", "test:e2e:generate-seeds": "cross-env DB_PATH=db-test.sqlite3 pnpm run migrate up && cross-env DB_PATH=db-test.sqlite3 vite-node scripts/generate-e2e-seed-dbs.ts", "check-test-db-migrations": "node --experimental-strip-types scripts/check-test-db-migrations.ts", "checks": "pnpm run biome:fix && pnpm run test:unit:browser && pnpm run check-translation-jsons && pnpm run typecheck && pnpm run knip && pnpm run check-test-db-migrations", "setup": "cross-env DB_PATH=db.sqlite3 vite-node ./scripts/setup.ts", "i18n:sync": "i18next-locales-sync -e true -p en -s da de es-ES es-US fr-CA fr-EU he it ja ko nl pl pt-BR ru zh -l locales && pnpm run biome:fix", "knip": "knip", "sync-weapon-params": "tsx scripts/sync-weapon-params.ts" }, "dependencies": { "@aws-sdk/client-s3": "3.1035.0", "@aws-sdk/lib-storage": "3.1035.0", "@date-fns/tz": "1.4.1", "@dnd-kit/core": "6.3.1", "@dnd-kit/modifiers": "9.0.0", "@dnd-kit/sortable": "10.0.0", "@dnd-kit/utilities": "3.2.2", "@epic-web/cachified": "5.6.2", "@faker-js/faker": "10.4.0", "@formatjs/intl-durationformat": "0.10.4", "@internationalized/date": "3.12.1", "@react-router/node": "7.14.2", "@react-router/serve": "7.14.2", "@remix-run/form-data-parser": "0.16.0", "@tldraw/tldraw": "3.12.1", "@zumer/snapdom": "2.9.0", "aws-sdk": "2.1693.0", "better-sqlite3": "12.9.0", "clsx": "2.1.1", "compressorjs": "1.3.0", "date-fns": "4.1.0", "edmonds-blossom-fixed": "1.0.1", "gray-matter": "4.0.3", "i18next": "25.10.10", "i18next-browser-languagedetector": "8.2.1", "i18next-http-backend": "3.0.5", "ics": "3.11.0", "isbot": "5.1.39", "jsoncrush": "1.1.8", "kysely": "0.28.16", "lru-cache": "11.3.5", "lucide-react": "1.8.0", "markdown-to-jsx": "9.7.16", "nanoid": "5.1.9", "neverthrow": "8.2.0", "node-cron": "4.2.1", "nprogress": "0.2.0", "openskill": "4.1.1", "p-limit": "7.3.0", "partysocket": "1.1.18", "react": "19.2.5", "react-aria-components": "1.17.0", "react-charts": "3.0.0-beta.57", "react-dom": "19.2.5", "react-error-boundary": "6.1.1", "react-flip-toolkit": "7.2.4", "react-i18next": "16.6.6", "react-router": "7.14.2", "react-use": "17.6.0", "react-use-draggable-scroll": "0.4.7", "remeda": "2.33.7", "remix-auth": "4.2.0", "remix-auth-oauth2": "3.4.1", "remix-i18next": "7.5.0", "slugify": "1.6.9", "swr": "2.4.1", "web-push": "3.6.7", "zod": "4.3.6" }, "devDependencies": { "@biomejs/biome": "2.4.13", "@playwright/test": "1.59.1", "@react-router/dev": "7.14.2", "@types/better-sqlite3": "7.6.13", "@types/node": "25.6.0", "@types/node-cron": "3.0.11", "@types/nprogress": "0.2.3", "@types/react": "19.2.14", "@types/react-dom": "19.2.3", "@types/web-push": "3.6.4", "@vitest/browser-playwright": "4.1.5", "@vitest/ui": "4.1.5", "babel-plugin-react-compiler": "19.1.0-rc.3", "cross-env": "10.1.0", "dotenv": "17.4.2", "i18next-locales-sync": "2.1.1", "knip": "6.6.1", "ley": "0.8.1", "sql-formatter": "15.7.3", "tsx": "4.21.0", "typescript": "6.0.3", "vite": "8.0.10", "vite-node": "6.0.0", "vite-plugin-babel": "1.6.0", "vitest": "4.1.5", "vitest-browser-react": "2.2.0" }, "pnpm": { "onlyBuiltDependencies": [ "better-sqlite3", "esbuild" ] } }