{ "name": "cozsweet-frontend-nextjs", "version": "0.1.0", "private": true, "packageManager": "pnpm@10.30.3", "engines": { "node": "24.x" }, "scripts": { "dev": "next dev", "build": "next build", "build:deploy": "pnpm install && pnpm run build", "start": "sh -c 'BRANCH=$(git branch --show-current); PORT=${PORT:-}; if [ -z \"$PORT\" ]; then if [ \"$BRANCH\" = \"main\" ]; then PORT=9185; else PORT=9135; fi; fi; next start -p \"$PORT\"'", "start:test": "next start -p 9135", "start:main": "next start -p 9185", "build:start": "pnpm install && pnpm run build && pnpm run start", "lint": "eslint", "lint:fix": "eslint --fix", "typecheck": "tsc --noEmit", "quality": "pnpm lint && pnpm typecheck && pnpm test && pnpm test:contracts", "test": "vitest run", "test:watch": "vitest", "test:ui": "vitest --ui", "test:e2e": "playwright test --project=mock-chromium", "test:e2e:chrome": "PLAYWRIGHT_USE_SYSTEM_CHROME=1 playwright test --project=mock-chromium", "test:e2e:headed": "playwright test --project=mock-chromium --headed", "test:e2e:ui": "playwright test --ui", "test:e2e:mobile-smoke": "playwright test --project=mock-mobile-chrome e2e/specs/mock/auth/email-login-from-other-options.spec.ts e2e/specs/mock/auth/logout-from-profile.spec.ts e2e/specs/mock/chat/chat-send-token-refresh-retry.spec.ts e2e/specs/mock/unlock-message/image-unlock-insufficient-credits.spec.ts", "test:e2e:real": "E2E_REAL_BACKEND=1 PLAYWRIGHT_BASE_URL=${PLAYWRIGHT_BASE_URL:-https://frontend-test.banlv-ai.com} E2E_API_BASE_URL=${E2E_API_BASE_URL:-https://proapi.banlv-ai.com} playwright test --project=real-backend", "test:e2e:prod": "E2E_REAL_BACKEND=1 PLAYWRIGHT_BASE_URL=${PLAYWRIGHT_BASE_URL:-https://cozsweet.com} E2E_API_BASE_URL=${E2E_API_BASE_URL:-https://api.banlv-ai.com} playwright test --project=prod-smoke", "contract:check": "node scripts/contracts/check-openapi.mjs", "test:contracts": "node --test scripts/contracts/__tests__/*.test.mjs", "perf:bundle": "next experimental-analyze --output && node scripts/performance/report-bundle.mjs", "perf:bundle:check": "PERF_BUNDLE_ENFORCE=1 pnpm perf:bundle", "perf:vitals": "node scripts/performance/collect-web-vitals.mjs", "generate-barrels": "barrelsby --delete -c barrelsby.json" }, "dependencies": { "@fingerprintjs/fingerprintjs": "^5.2.0", "@sentry/nextjs": "^10.61.0", "@serwist/turbopack": "^9.0.0", "@stripe/react-stripe-js": "^6.6.0", "@stripe/stripe-js": "^9.8.0", "@xstate/react": "^5", "classnames": "^2.5.1", "dexie": "^4.4.3", "esbuild": "^0.28.0", "lucide-react": "^1.18.0", "next": "16.2.7", "next-auth": "^4.24.14", "ofetch": "^1.5.1", "pino": "^10.3.1", "react": "19.2.4", "react-dom": "19.2.4", "react-icons": "^5.6.0", "serwist": "^9.0.0", "ua-parser-js": "^2.0.10", "unstorage": "^1.17.5", "xstate": "^5", "zod": "^4.4.3" }, "devDependencies": { "@playwright/test": "^1.61.1", "@tailwindcss/postcss": "^4", "@types/node": "^24", "@types/react": "^19", "@types/react-dom": "^19", "@vitest/coverage-v8": "^4.1.8", "@vitest/ui": "^4.1.8", "barrelsby": "^2.8.1", "eslint": "^9", "eslint-config-next": "16.2.7", "fake-indexeddb": "^6.2.5", "jsdom": "^29.1.1", "tailwindcss": "^4", "typescript": "^5", "vitest": "^4.1.8" }, "pnpm": { "onlyBuiltDependencies": [ "*" ] } }