{ "name": "sparkyfitnessserver", "version": "1.11.0", "main": "SparkyFitnessServer.js", "type": "module", "scripts": { "set-version": "pnpm -w run set-version", "start": "nodemon", "test:migrations": "tsx tests/migrate.script.ts", "validate": "pnpm run typecheck && pnpm run lint && pnpm run format:check", "typecheck": "tsc --noEmit", "test": "vitest run", "test:watch": "vitest", "test:coverage": "vitest run --coverage", "test:ci": "vitest run --coverage --reporter=verbose", "lint": "eslint . --max-warnings 0", "lint:fix": "eslint . --fix", "format:check": "prettier . --check", "format": "prettier . --write --log-level warn" }, "keywords": [], "author": "", "license": "ISC", "description": "", "dependencies": { "@ai-sdk/anthropic": "^4.0.87", "@ai-sdk/google": "^4.0.104", "@ai-sdk/openai": "^4.0.101", "@better-auth/api-key": "^1.7.12", "@better-auth/expo": "1.7.12", "@better-auth/mcp": "1.7.12", "@better-auth/oauth-provider": "1.7.12", "@better-auth/passkey": "^1.7.12", "@better-auth/sso": "^1.7.12", "@garmin/fitsdk": "^21.218.0", "@modelcontextprotocol/sdk": "^1.32.1", "@workspace/shared": "workspace:*", "ai": "^7.0.150", "axios": "^1.20.0", "bcryptjs": "^3.0.3", "better-auth": "^1.7.12", "better-call": "1.4.4", "cookie-parser": "^1.4.7", "cors": "^2.8.5", "date-fns": "^4.4.0", "dotenv": "^18.0.9", "express": "^5.3.0", "express-validator": "^7.3.2", "heic-convert": "^2.1.0", "http-proxy-agent": "^9.1.0", "https-proxy-agent": "^9.1.0", "ipaddr.js": "^2.5.0", "jose": "^6.2.13", "moment": "^2.31.0", "multer": "^2.5.0", "node-cache": "^5.1.2", "node-cron": "^4.6.0", "nodemailer": "^10.2.1", "papaparse": "^5.7.0", "pg": "^8.23.1", "pg-format": "^1.0.4", "proxy-from-env": "^2.1.0", "redoc-express": "^2.1.3", "sharp": "^0.35.5", "swagger-jsdoc": "^6.3.0", "swagger-ui-express": "^5.0.1", "undici": "^8.12.3", "uuid": "^14.0.3", "zod": "^4.6.7" }, "devDependencies": { "@eslint/js": "^10.0.1", "@types/eslint-plugin-security": "^3.0.1", "@types/express": "^5.0.6", "@types/heic-convert": "^2.1.1", "@types/node": "^26.6.5", "@types/nodemailer": "^8.0.2", "@types/papaparse": "^5.5.2", "@types/pg": "^8.23.1", "@types/proxy-from-env": "^1.0.4", "@typescript-eslint/eslint-plugin": "^8.72.0", "@typescript-eslint/parser": "^8.72.0", "@vitest/coverage-v8": "^5.0.5", "eslint": "^10.13.0", "eslint-plugin-n": "^18.5.0", "eslint-plugin-security": "^4.2.0", "globals": "^17.13.0", "nodemon": "^3.1.14", "prettier": "3.9.10", "supertest": "^7.3.1", "tsx": "^4.23.15", "typescript": "^6.0.3", "typescript-eslint": "^8.72.0", "vitest": "^5.0.5" } }