Files
bookorbit/server/package.json
T
neon 93c8136899 fix(series): repair legacy series index upgrades
Normalize legacy float values before migration 0076 so 2.7 databases can upgrade without constraint failures or precision loss. Serialize the compatibility conversion across concurrent startup processes.

Fixes #1189
2026-08-29 00:23:39 +00:00

146 lines
5.4 KiB
JSON

{
"name": "server",
"version": "0.0.1",
"description": "BookOrbit server - self-hosted library management and reading platform",
"author": "neonsolstice",
"private": true,
"license": "AGPL-3.0",
"homepage": "https://bookorbit.app",
"repository": {
"type": "git",
"url": "https://github.com/bookorbit/bookorbit"
},
"bugs": {
"url": "https://github.com/bookorbit/bookorbit/issues"
},
"scripts": {
"setup:kobo-cloudscraper": "tsx src/scripts/setup-kobo-cloudscraper.ts",
"prestart": "pnpm --filter @bookorbit/types build",
"prestart:dev": "pnpm --filter @bookorbit/types build",
"prestart:debug": "pnpm --filter @bookorbit/types build",
"prebuild": "pnpm --filter @bookorbit/types build && pnpm clean:swagger-metadata",
"clean:swagger-metadata": "node -e \"require('node:fs').rmSync('src/metadata.ts', { force: true })\"",
"build": "nest build",
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
"format:check": "prettier --check \"src/**/*.ts\" \"test/**/*.ts\"",
"start": "nest start",
"start:dev": "sh -c 'export $(grep -v \"^#\" .env | xargs) 2>/dev/null; exec nest start --watch --config nest-cli.dev.json'",
"start:debug": "nest start --debug --watch --config nest-cli.dev.json",
"start:prod": "node dist/main",
"db:generate": "drizzle-kit generate --name",
"db:migrate": "tsx --env-file-if-exists=.env src/scripts/migrate.ts",
"e2e:db:migrate": "DATABASE_URL=postgres://bookorbit:bookorbit@localhost:5432/bookorbit_e2e pnpm db:migrate",
"db:migrate:runtime": "node dist/scripts/migrate.js",
"e2e:db:prepare": "tsx src/scripts/db-prepare-e2e.ts",
"db:studio": "drizzle-kit studio",
"predb:seed": "pnpm --filter @bookorbit/types build",
"db:seed": "tsx src/scripts/db-seed.ts",
"whats-new:preview": "tsx src/scripts/whats-new-preview.ts",
"whats-new:lint": "tsx src/scripts/whats-new-lint.ts",
"whats-new:check": "tsx src/scripts/whats-new-check.ts",
"whats-new:images": "tsx src/scripts/whats-new-images.ts",
"pretype-check": "pnpm --filter @bookorbit/types build",
"type-check": "tsc --noEmit -p tsconfig.build.json",
"lint": "pnpm run lint:check",
"prelint:check": "pnpm --filter @bookorbit/types build",
"lint:check": "eslint \"{src,apps,libs,test}/**/*.ts\"",
"prelint:fix": "pnpm --filter @bookorbit/types build",
"lint:fix": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"test": "node ../scripts/dev/with-test-lock.mjs -- vitest run --exclude test/scanner-scenarios.e2e-spec.ts --exclude test/scanner-file-operations.e2e-spec.ts",
"test:watch": "vitest",
"test:cov": "node ../scripts/dev/with-test-lock.mjs -- vitest run --coverage",
"e2e:run": "vitest run test/app-smoke.e2e-spec.ts"
},
"dependencies": {
"7z-wasm": "^1.2.0",
"@bookorbit/types": "workspace:*",
"@fastify/compress": "^9.2.0",
"@fastify/cookie": "^11.1.2",
"@fastify/helmet": "^13.1.1",
"@fastify/multipart": "^10.1.1",
"@fastify/static": "^10.1.3",
"@nestjs/common": "^11.2.3",
"@nestjs/config": "^4.0.4",
"@nestjs/core": "^11.2.3",
"@nestjs/jwt": "^11.0.2",
"@nestjs/passport": "^11.0.5",
"@nestjs/platform-fastify": "^11.2.3",
"@nestjs/platform-socket.io": "^11.2.3",
"@nestjs/schedule": "^6.1.3",
"@nestjs/swagger": "^11.4.7",
"@nestjs/terminus": "^11.1.1",
"@nestjs/throttler": "^6.5.0",
"@nestjs/websockets": "^11.2.3",
"@types/archiver": "^8.0.0",
"archiver": "~8.0.0",
"bcryptjs": "^3.0.3",
"cheerio": "^1.2.0",
"chokidar": "^5.0.0",
"class-transformer": "^0.5.1",
"class-validator": "^0.15.1",
"cron": "^4.4.0",
"date-fns-tz": "^3.2.0",
"drizzle-orm": "^0.45.2",
"fast-xml-parser": "^5.11.1",
"fastest-levenshtein": "^1.0.16",
"fastify": "^5.12.1",
"iconv-lite": "^0.7.3",
"jose": "^6.2.10",
"langs": "^2.0.0",
"ms": "^2.1.3",
"mysql2": "^3.24.2",
"nestjs-pino": "^4.6.1",
"node-unrar-js": "^2.0.2",
"nodemailer": "^9.0.6",
"passport": "^0.7.0",
"passport-jwt": "^4.0.1",
"pdf-lib": "^1.17.1",
"pg": "^8.23.0",
"pg-connection-string": "^2.14.0",
"pino-http": "^11.0.0",
"reflect-metadata": "^0.2.2",
"rxjs": "^7.8.2",
"sharp": "^0.35.4",
"socket.io": "^4.8.3",
"unzipper": "^0.12.5",
"zod": "^4.4.3"
},
"devDependencies": {
"@eslint/eslintrc": "^3.3.6",
"@eslint/js": "^10.0.1",
"@ffmpeg-installer/ffmpeg": "^1.1.0",
"@ffprobe-installer/ffprobe": "^2.1.2",
"@nestjs/cli": "^11.0.24",
"@nestjs/schematics": "^11.1.0",
"@nestjs/testing": "^11.2.3",
"@swc/cli": "^0.8.1",
"@swc/core": "^1.16.1",
"@types/bcrypt": "^6.0.0",
"@types/express": "^5.0.6",
"@types/langs": "^2.0.5",
"@types/node": "^26.4.0",
"@types/nodemailer": "^8.0.1",
"@types/passport-jwt": "^4.0.1",
"@types/pg": "^8.23.1",
"@types/supertest": "^7.2.1",
"@types/unzipper": "^0.10.11",
"@vitest/coverage-v8": "^4.1.11",
"drizzle-kit": "^0.31.10",
"eslint": "^10.9.1",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.5.6",
"globals": "^17.11.0",
"pino-pretty": "^13.1.3",
"prettier": "^3.9.6",
"source-map-support": "^0.5.21",
"supertest": "^7.2.2",
"ts-loader": "^9.6.2",
"ts-node": "^10.9.2",
"tsconfig-paths": "^4.2.0",
"tsx": "^4.23.12",
"typescript": "^6.0.3",
"typescript-eslint": "^8.68.0",
"vitest": "^4.1.11"
}
}