mirror of
https://github.com/bookorbit/bookorbit.git
synced 2026-11-03 00:11:37 -06:00
d0047bbf18
Add server support for writing metadata, embedded covers, and FictionBook XML structures directly into FB2 format files. Introduce migration 0058 to persist FB2 file write preferences per library, and update library creator UI and locale catalogs.
143 lines
5.2 KiB
JSON
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",
|
|
"ms": "^2.1.3",
|
|
"mysql2": "^3.23.1",
|
|
"nestjs-pino": "^4.6.1",
|
|
"node-unrar-js": "^2.0.2",
|
|
"nodemailer": "^9.0.3",
|
|
"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.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/node": "^26.1.1",
|
|
"@types/nodemailer": "^8.0.1",
|
|
"@types/opentype.js": "^1.3.10",
|
|
"@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"
|
|
}
|
|
}
|