Files
bookorbit/server/package.json
T
neon 494b59562f fix(kobo): sync normalized language and ISBN metadata
Normalize heterogeneous language metadata at the Kobo boundary and include validated ISBN values so device details remain accurate. Version metadata hashes to refresh previously synchronized books.

Fixes #920
2026-08-08 04:58:52 +00:00

143 lines
5.2 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/install-postgres-extensions.ts && drizzle-kit migrate",
"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",
"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",
"lint:check": "eslint \"{src,apps,libs,test}/**/*.ts\"",
"lint:fix": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"test": "vitest run --exclude test/scanner-scenarios.e2e-spec.ts --exclude test/scanner-file-operations.e2e-spec.ts",
"test:watch": "vitest",
"test:cov": "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.1.0",
"@fastify/cookie": "^11.1.2",
"@fastify/formbody": "^8.0.2",
"@fastify/helmet": "^13.1.0",
"@fastify/multipart": "^10.1.0",
"@fastify/static": "^10.1.2",
"@nestjs/common": "^11.1.28",
"@nestjs/config": "^4.0.4",
"@nestjs/core": "^11.1.28",
"@nestjs/jwt": "^11.0.2",
"@nestjs/passport": "^11.0.5",
"@nestjs/platform-fastify": "^11.1.28",
"@nestjs/platform-socket.io": "^11.1.28",
"@nestjs/schedule": "^6.1.3",
"@nestjs/swagger": "^11.4.6",
"@nestjs/terminus": "^11.1.1",
"@nestjs/throttler": "^6.5.0",
"@nestjs/websockets": "^11.1.28",
"@types/archiver": "^8.0.0",
"archiver": "~8.0.0",
"bcryptjs": "^3.0.3",
"cheerio": "^1.2.0",
"chokidar": "^4.0.3",
"class-transformer": "^0.5.1",
"class-validator": "^0.15.1",
"date-fns-tz": "^3.2.0",
"drizzle-orm": "^0.45.2",
"fast-xml-parser": "^5.10.1",
"fastest-levenshtein": "^1.0.16",
"fastify": "^5.10.0",
"iconv-lite": "^0.7.3",
"jose": "^6.2.4",
"langs": "^2.0.0",
"ms": "^2.1.3",
"mysql2": "^3.23.2",
"nestjs-pino": "^4.6.1",
"node-unrar-js": "^2.0.2",
"nodemailer": "^9.0.3",
"passport": "^0.7.0",
"passport-jwt": "^4.0.1",
"pdf-lib": "^1.17.1",
"pg": "^8.22.0",
"pg-connection-string": "^2.14.0",
"pino-http": "^11.0.0",
"reflect-metadata": "^0.2.2",
"rxjs": "^7.8.2",
"sharp": "^0.35.3",
"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.1.28",
"@swc/cli": "^0.8.1",
"@swc/core": "^1.15.46",
"@types/bcrypt": "^6.0.0",
"@types/express": "^5.0.6",
"@types/langs": "^2.0.5",
"@types/node": "^26.1.1",
"@types/nodemailer": "^8.0.1",
"@types/passport-jwt": "^4.0.1",
"@types/pg": "^8.20.0",
"@types/supertest": "^7.2.1",
"@types/unzipper": "^0.10.11",
"@vitest/coverage-v8": "^4.1.10",
"drizzle-kit": "^0.31.10",
"eslint": "^10.8.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-prettier": "^5.5.6",
"globals": "^17.8.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.1",
"typescript": "^6.0.3",
"typescript-eslint": "^8.65.0",
"vitest": "^4.1.10"
}
}