{ "name": "sendou.ink", "version": "3.0.0", "private": true, "sideEffects": false, "type": "module", "scripts": { "deploy": "npm ci && npm run build", "build": "remix vite:build", "dev": "remix vite:dev --host", "dev:prod": "cross-env DB_PATH=db-prod.sqlite3 npm run dev", "dev:ci": "cp .env.example .env && npm run migrate up && npm run dev", "start": "npm run migrate up && remix-serve ./build/server/index.js", "start:nr": "npm run migrate up && NODE_OPTIONS='--import newrelic/esm-loader.mjs -r newrelic' remix-serve ./build/server/index.js", "migrate": "ley", "migrate:reset": "node scripts/delete-db-files.mjs && npm run migrate up", "check-translation-jsons": "node --experimental-specifier-resolution=node --import @swc-node/register/esm-register -r tsconfig-paths/register scripts/check-translation-jsons.ts", "check-translation-jsons:no-write": "node --experimental-specifier-resolution=node --import @swc-node/register/esm-register -r tsconfig-paths/register scripts/check-translation-jsons.ts --no-write", "refresh-prod-db": "node --experimental-specifier-resolution=node --import @swc-node/register/esm-register -r tsconfig-paths/register scripts/refresh-prod-db.ts && cross-env DB_PATH=db-prod.sqlite3 npm run migrate up", "lint:ts": "eslint . --ext .ts,.tsx", "lint:css": "stylelint \"app/styles/**/*.css\"", "prettier:check": "prettier --check . --log-level warn", "prettier:write": "prettier --write . --log-level warn", "typecheck": "tsc --noEmit", "test:unit": "cross-env DB_PATH=:memory: NODE_ENV=test BASE_URL=https://example.com SKALOP_SYSTEM_MESSAGE_URL=http://skalop.test SKALOP_TOKEN=test uvu -r tsm -r tsconfig-paths/register -r ignore-styles -i e2e", "test:e2e": "npx playwright test", "checks": "npm run test:unit && npm run lint:css && npm run lint:ts && npm run prettier:check && npm run typecheck", "cf": "npm run test:unit && npm run check-translation-jsons && npm run lint:css -- --fix && npm run lint:ts -- --fix && npm run prettier:write && npm run typecheck && npm run test:e2e", "cf:noe2e": "npm run test:unit && npm run check-translation-jsons && npm run lint:css -- --fix && npm run lint:ts -- --fix && npm run prettier:write && npm run typecheck", "db": "sqlite3 --column --header db.sqlite3", "db:prod": "sqlite3 --column --header db-prod.sqlite3" }, "dependencies": { "@aws-sdk/client-s3": "^3.564.0", "@aws-sdk/lib-storage": "^3.564.0", "@dnd-kit/core": "^6.1.0", "@dnd-kit/sortable": "^8.0.0", "@dnd-kit/utilities": "^3.2.2", "@epic-web/cachified": "^5.1.2", "@faker-js/faker": "^8.4.1", "@headlessui/react": "^1.7.19", "@popperjs/core": "^2.11.8", "@remix-run/node": "^2.9.1", "@remix-run/react": "^2.9.1", "@remix-run/serve": "^2.9.1", "@tldraw/tldraw": "^1.29.2", "aws-sdk": "^2.1608.0", "better-sqlite3": "^9.6.0", "clsx": "^2.1.1", "compressorjs": "^1.2.1", "countries-list": "^3.1.0", "date-fns": "^3.6.0", "fuse.js": "^7.0.0", "gray-matter": "^4.0.3", "i18next": "^23.11.2", "i18next-browser-languagedetector": "^7.2.1", "i18next-fs-backend": "^2.3.1", "i18next-http-backend": "^2.5.1", "isbot": "^5.1.5", "just-capitalize": "^3.2.0", "just-clone": "^6.2.0", "just-random-integer": "^4.2.0", "just-shuffle": "^4.2.0", "kysely": "^0.27.3", "lru-cache": "10.2.1", "markdown-to-jsx": "^7.4.7", "nanoid": "~5.0.7", "newrelic": "^11.15.0", "node-cron": "3.0.3", "nprogress": "^0.2.0", "openskill": "^3.1.0", "react": "^18.3.1", "react-charts": "^3.0.0-beta.57", "react-dom": "^18.3.1", "react-flip-toolkit": "^7.1.0", "react-i18next": "^14.1.1", "react-popper": "^2.3.0", "react-responsive-masonry": "^2.2.0", "react-use": "^17.5.0", "react-use-draggable-scroll": "^0.4.7", "reconnecting-websocket": "^4.4.0", "remix-auth": "^3.6.0", "remix-auth-oauth2": "^1.11.2", "remix-i18next": "^6.1.0", "remix-utils": "^7.6.0", "slugify": "^1.6.6", "swr": "^2.2.5", "tiny-invariant": "^1.3.3", "zod": "^3.23.4" }, "devDependencies": { "@playwright/test": "^1.43.1", "@remix-run/dev": "^2.9.1", "@swc-node/register": "^1.9.0", "@types/better-sqlite3": "7.6.10", "@types/i18next-fs-backend": "^1.1.5", "@types/newrelic": "^9.14.3", "@types/node-cron": "^3.0.11", "@types/nprogress": "^0.2.3", "@types/react": "^18.3.1", "@types/react-dom": "^18.3.0", "@types/react-responsive-masonry": "^2.1.3", "@typescript-eslint/eslint-plugin": "^7.5.0", "@typescript-eslint/parser": "^7.5.0", "cross-env": "^7.0.3", "dotenv": "^16.4.5", "eslint": "^8.57.0", "eslint-plugin-react": "^7.34.1", "eslint-plugin-react-hooks": "^4.6.2", "ignore-styles": "^5.0.1", "ley": "^0.8.1", "mockdate": "^3.0.5", "prettier": "3.2.5", "stylelint": "^16.4.0", "stylelint-config-standard": "^36.0.0", "tsconfig-paths": "^4.2.0", "tsm": "^2.3.0", "typescript": "^5.4.5", "uvu": "^0.5.6", "vite": "^5.2.10", "vite-tsconfig-paths": "^4.3.2" } }