super-productivity/packages/super-sync-server/package.json
Johannes Millan 46e98c67dd
fix(sync): harden passkey registration verification (#8985)
* fix(sync): preserve offline ops and harden auth

* fix(sync): prevent unverified passkey replacement

Keep existing credentials until email ownership is verified and scope failed-delivery cleanup to the exact pending registration. Reject negative operation timestamps while still allowing old offline operations.\n\nRefs #8961

* test(sync): cover registration races in PostgreSQL

* ci(sync): run PostgreSQL integration tests

* fix(sync): bind passkeys to email verification
2026-07-13 22:58:37 +02:00

70 lines
2.9 KiB
JSON

{
"name": "@super-productivity/super-sync-server",
"version": "1.0.0",
"description": "SuperSync server for Super Productivity",
"main": "dist/src/index.js",
"scripts": {
"build": "tsc",
"start": "node dist/src/index.js",
"dev": "nodemon --watch src --ext ts --exec ts-node src/index.ts",
"pretest": "prisma generate",
"test": "vitest run",
"test:integration:postgres": "vitest run --config vitest.integration.config.ts --maxWorkers=1 tests/integration/registration-races.integration.spec.ts tests/integration/clean-slate-atomicity-sql.integration.spec.ts tests/integration/conflict-detection-sql.integration.spec.ts tests/integration/snapshot-vector-clock-sql.integration.spec.ts",
"docker:build": "./scripts/build-and-push.sh",
"docker:deploy": "./scripts/deploy.sh",
"docker:deploy:build": "./scripts/deploy.sh --build",
"docker:backup": "./scripts/backup.sh",
"docker:logs": "docker logs supersync-server -f",
"docker:monitor": "./scripts/docker-monitor.sh",
"docker:monitor:usage": "./scripts/docker-monitor.sh usage",
"docker:monitor:all": "./scripts/docker-monitor.sh monitor-all --save",
"docker:shell": "./scripts/docker-monitor.sh shell",
"delete-user": "ts-node scripts/delete-user.ts",
"clear-data": "ts-node scripts/clear-data.ts",
"recover-user": "ts-node --transpile-only scripts/recover-user.ts",
"monitor": "node dist/scripts/monitor.js",
"monitor:dev": "tsx scripts/monitor.ts",
"analyze-storage": "node dist/scripts/analyze-storage.js",
"analyze-storage:dev": "tsx scripts/analyze-storage.ts",
"monitor:all": "node dist/scripts/run-all-monitoring.js",
"monitor:all:dev": "tsx scripts/run-all-monitoring.ts",
"monitor:all:quick": "node dist/scripts/run-all-monitoring.js --quick",
"monitor:all:save": "node dist/scripts/run-all-monitoring.js --save",
"migrate-payload-bytes": "node dist/scripts/migrate-payload-bytes.js",
"migrate-payload-bytes:dev": "ts-node scripts/migrate-payload-bytes.ts"
},
"dependencies": {
"@fastify/cors": "^11.1.0",
"@fastify/helmet": "^13.0.2",
"@fastify/rate-limit": "^10.3.0",
"@fastify/static": "^9.1.1",
"@fastify/websocket": "^11.2.0",
"@prisma/client": "5.22.0",
"@simplewebauthn/server": "^13.2.2",
"@simplewebauthn/types": "^12.0.0",
"@sp/shared-schema": "*",
"@sp/sync-core": "*",
"bcryptjs": "^3.0.3",
"dotenv": "^17.2.3",
"fastify": "^5.8.5",
"jsonwebtoken": "^9.0.2",
"nodemailer": "^9.0.1",
"uuidv7": "^1.1.0",
"zod": "^4.4.3"
},
"devDependencies": {
"@electric-sql/pglite": "^0.5.3",
"@types/bcryptjs": "^2.4.6",
"@types/jsonwebtoken": "^9.0.10",
"@types/node": "^20.0.0",
"@types/nodemailer": "^7.0.5",
"@types/supertest": "^7.2.0",
"@types/ws": "^8.18.1",
"nodemon": "^3.1.11",
"prisma": "5.22.0",
"supertest": "^7.1.4",
"ts-node": "^10.9.1",
"typescript": "^5.0.0",
"vitest": "^4.1.6"
}
}