mirror of
https://github.com/bookorbit/bookorbit.git
synced 2026-11-03 00:11:37 -06:00
2065af41f9
Introduces Swagger and OpenAPI documentation generation for the backend API. Configures bearer authentication globally while allowing explicit bypasses for public endpoints. Exports nested DTO classes across several modules so the NestJS Swagger plugin can correctly reflect their schema definitions. Closes #399
141 lines
4.9 KiB
JSON
141 lines
4.9 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",
|
|
"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'",
|
|
"start:debug": "nest start --debug --watch",
|
|
"start:prod": "node dist/main",
|
|
"db:generate": "drizzle-kit generate --name",
|
|
"db:migrate": "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.0.0",
|
|
"@fastify/cookie": "^11.0.2",
|
|
"@fastify/formbody": "^8.0.2",
|
|
"@fastify/helmet": "^13.0.2",
|
|
"@fastify/multipart": "^10.0.0",
|
|
"@fastify/static": "^9.1.3",
|
|
"@nestjs/common": "^11.1.27",
|
|
"@nestjs/config": "^4.0.4",
|
|
"@nestjs/core": "^11.1.27",
|
|
"@nestjs/jwt": "^11.0.2",
|
|
"@nestjs/passport": "^11.0.5",
|
|
"@nestjs/platform-fastify": "^11.1.27",
|
|
"@nestjs/platform-socket.io": "^11.1.27",
|
|
"@nestjs/schedule": "^6.1.3",
|
|
"@nestjs/swagger": "^11.4.4",
|
|
"@nestjs/terminus": "^11.1.1",
|
|
"@nestjs/throttler": "^6.5.0",
|
|
"@nestjs/websockets": "^11.1.27",
|
|
"@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.9.3",
|
|
"fastest-levenshtein": "^1.0.16",
|
|
"fastify": "^5.8.5",
|
|
"jose": "^6.2.3",
|
|
"ms": "^2.1.3",
|
|
"mysql2": "^3.22.5",
|
|
"nestjs-pino": "^4.6.1",
|
|
"node-unrar-js": "^2.0.2",
|
|
"nodemailer": "^9.0.1",
|
|
"opentype.js": "^2.0.0",
|
|
"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.2",
|
|
"socket.io": "^4.8.3",
|
|
"unzipper": "^0.12.3",
|
|
"zod": "^4.4.3"
|
|
},
|
|
"devDependencies": {
|
|
"@eslint/eslintrc": "^3.3.5",
|
|
"@eslint/js": "^10.0.1",
|
|
"@ffmpeg-installer/ffmpeg": "^1.1.0",
|
|
"@ffprobe-installer/ffprobe": "^2.1.2",
|
|
"@nestjs/cli": "^11.0.23",
|
|
"@nestjs/schematics": "^11.1.0",
|
|
"@nestjs/testing": "^11.1.27",
|
|
"@swc/cli": "^0.8.1",
|
|
"@swc/core": "^1.15.41",
|
|
"@types/bcrypt": "^6.0.0",
|
|
"@types/express": "^5.0.6",
|
|
"@types/node": "^26.0.0",
|
|
"@types/nodemailer": "^8.0.1",
|
|
"@types/opentype.js": "^1.3.10",
|
|
"@types/passport-jwt": "^4.0.1",
|
|
"@types/pg": "^8.18.0",
|
|
"@types/supertest": "^7.2.0",
|
|
"@types/unzipper": "^0.10.11",
|
|
"@vitest/coverage-v8": "^4.1.9",
|
|
"drizzle-kit": "^0.31.10",
|
|
"eslint": "^10.5.0",
|
|
"eslint-config-prettier": "^10.1.8",
|
|
"eslint-plugin-prettier": "^5.5.6",
|
|
"globals": "^17.6.0",
|
|
"pino-pretty": "^13.1.3",
|
|
"prettier": "^3.8.4",
|
|
"source-map-support": "^0.5.21",
|
|
"supertest": "^7.2.2",
|
|
"ts-loader": "^9.6.1",
|
|
"ts-node": "^10.9.2",
|
|
"tsconfig-paths": "^4.2.0",
|
|
"tsx": "^4.22.4",
|
|
"typescript": "^6.0.3",
|
|
"typescript-eslint": "^8.61.1",
|
|
"vitest": "^4.1.9"
|
|
}
|
|
}
|