{"_id":"@armsteadj1/whoop-sync","name":"@armsteadj1/whoop-sync","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@armsteadj1/whoop-sync","version":"1.0.0","bin":{"whoop-sync":"dist/index.js"},"scripts":{"build":"tsc","start":"ts-node src/index.ts","prepublishOnly":"npm run build"},"publishConfig":{"access":"public"},"dependencies":{"better-sqlite3":"^9.4.3","ts-node":"^10.9.2","typescript":"^5.4.5"},"devDependencies":{"@types/better-sqlite3":"^7.6.10","@types/node":"^20.12.7"},"_id":"@armsteadj1/whoop-sync@1.0.0","gitHead":"75d97e8b82b8cfdf4a0703f99576b3fbed626cbe","description":"Syncs Whoop workout, sleep, and cycle data to a local SQLite database.","_nodeVersion":"20.20.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-7ipDj4olMY+IAIcvKx1Rhj554VkrTFHtIusaByN5CNHibrhz/RblIw7Nf9VtPUjniYyWhV62ksduZV61U9pvHA==","shasum":"c85cb8d681c7631baa5cb6a731eb06b768bbc3bc","tarball":"https://registry.npmjs.org/@armsteadj1/whoop-sync/-/whoop-sync-1.0.0.tgz","fileCount":14,"unpackedSize":31392,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCZ+zF+x6U68rVMFz28uNthtLpjZQ3aX+5E+KakZf+aHAIgbhK3fHaowPqN1jhMFXrZ5lrJ8iWSir4ELEOduzpBibQ="}]},"_npmUser":{"name":"armsteadj1","email":"armsteadj1@gmail.com"},"directories":{},"maintainers":[{"name":"armsteadj1","email":"armsteadj1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/whoop-sync_1.0.0_1773018134576_0.7741994580421077"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-09T01:02:14.498Z","1.0.0":"2026-03-09T01:02:14.719Z","modified":"2026-03-09T01:02:14.894Z"},"maintainers":[{"name":"armsteadj1","email":"armsteadj1@gmail.com"}],"description":"Syncs Whoop workout, sleep, and cycle data to a local SQLite database.","readme":"# whoop-sync\n\nSyncs Whoop workout, sleep, and cycle data to a local SQLite database.\n\n## Setup\n\n1. Copy `config.example.json` to `config.json` and fill in your credentials:\n   ```json\n   {\n     \"access_token\": \"your-whoop-access-token\"\n   }\n   ```\n\n2. Install dependencies:\n   ```bash\n   npm install\n   ```\n\n## Usage\n\nIncremental sync (only fetches new data since last sync):\n```bash\nnpm run sync\n```\n\nFull sync (fetches all available history):\n```bash\nnpm run sync -- --full\n```\n\n## Database\n\nData is stored in `fitness.db` (SQLite) with tables:\n- `workouts` — workout sessions with strain, HR zones, etc.\n- `sleep` — sleep sessions with HRV, performance %, resting HR\n- `cycles` — daily physiological cycles\n- `sync_state` — tracks last sync timestamps for incremental syncs\n\n## Notes\n\n- If the access token is expired (401), the tool logs a warning and exits cleanly (exit code 0).\n- No OAuth flow is implemented — supply a valid token in `config.json`.\n","readmeFilename":"README.md","_rev":"1-d832384c4ab8a96e9177d4cb57175778"}