{
  "name": "tonline-erp-backend",
  "version": "0.1.0",
  "private": true,
  "type": "module",
  "engines": {
    "node": ">=20.0.0"
  },
  "scripts": {
    "dev": "npm run runtime:sync && tsx watch src/server.ts",
    "build": "tsc -p tsconfig.json",
    "start": "npm run runtime:sync && tsx src/server.ts",
    "typecheck": "tsc -p tsconfig.json --noEmit",
    "test:auth": "tsx --test src/auth/auth.test.ts",
    "test:compat": "tsx --test src/compat/supabase.test.ts",
    "test:kv": "tsx --test src/repositories/kv-store.test.ts",
    "test:storage": "tsx --test src/storage/storage.test.ts",
    "test:scheduler": "tsx --test src/scheduler.test.ts",
    "db:migrate": "tsx scripts/migrate.ts",
    "db:migrate:remote-kv": "tsx scripts/migrate-remote-kv.ts",
    "db:backfill:remote-kv": "tsx scripts/backfill-remote-kv.ts",
    "source:export": "tsx scripts/export-source.ts",
    "source:archive": "tsx scripts/export-source-archive.ts --page-size 5000",
    "source:archive:verify": "tsx scripts/verify-source-archive.ts",
    "source:import": "tsx scripts/import-source.ts",
    "source:verify": "tsx scripts/verify-export.ts",
    "storage:mirror": "tsx scripts/mirror-storage.ts",
    "storage:verify": "tsx scripts/verify-storage.ts",
    "secrets:ensure": "tsx scripts/ensure-local-secrets.ts",
    "runtime:sync": "tsx scripts/sync-legacy-runtime.ts",
    "legacy:start": "npm run runtime:sync && tsx src/legacy-entry.ts"
  },
  "dependencies": {
    "@hono/node-server": "^2.0.12",
    "bcryptjs": "^3.0.3",
    "croner": "^10.0.1",
    "dotenv": "^17.4.2",
    "hono": "^4.12.34",
    "jose": "^6.2.8",
    "pg": "^8.22.0",
    "zod": "^4.3.6"
  },
  "devDependencies": {
    "@types/node": "^20.19.43",
    "@types/pg": "^8.20.3",
    "tsx": "^4.23.5",
    "typescript": "^5.9.3"
  }
}
