mirror of
https://github.com/bookorbit/bookorbit.git
synced 2026-11-03 00:11:37 -06:00
cb2ea1e898
Each run sized its worker pool to the whole machine, so simultaneous runs drove the box into swap until no suite finished and tests began failing on the 5s default timeout. Serialize runs behind a lock, cap worker counts, and raise testTimeout. See scripts/dev/with-test-lock.mjs.
143 lines
5.3 KiB
JSON
143 lines
5.3 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": "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.0",
|
|
"@fastify/multipart": "^10.1.1",
|
|
"@fastify/static": "^10.1.3",
|
|
"@nestjs/common": "^11.2.1",
|
|
"@nestjs/config": "^4.0.4",
|
|
"@nestjs/core": "^11.2.1",
|
|
"@nestjs/jwt": "^11.0.2",
|
|
"@nestjs/passport": "^11.0.5",
|
|
"@nestjs/platform-fastify": "^11.2.1",
|
|
"@nestjs/platform-socket.io": "^11.2.1",
|
|
"@nestjs/schedule": "^6.1.3",
|
|
"@nestjs/swagger": "^11.4.6",
|
|
"@nestjs/terminus": "^11.1.1",
|
|
"@nestjs/throttler": "^6.5.0",
|
|
"@nestjs/websockets": "^11.2.1",
|
|
"@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.10.1",
|
|
"fastest-levenshtein": "^1.0.16",
|
|
"fastify": "^5.11.3",
|
|
"iconv-lite": "^0.7.3",
|
|
"jose": "^6.2.9",
|
|
"langs": "^2.0.0",
|
|
"ms": "^2.1.3",
|
|
"mysql2": "^3.23.3",
|
|
"nestjs-pino": "^4.6.1",
|
|
"node-unrar-js": "^2.0.2",
|
|
"nodemailer": "^9.0.5",
|
|
"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.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.2.1",
|
|
"@swc/cli": "^0.8.1",
|
|
"@swc/core": "^1.16.0",
|
|
"@types/bcrypt": "^6.0.0",
|
|
"@types/express": "^5.0.6",
|
|
"@types/langs": "^2.0.5",
|
|
"@types/node": "^26.2.0",
|
|
"@types/nodemailer": "^8.0.1",
|
|
"@types/passport-jwt": "^4.0.1",
|
|
"@types/pg": "^8.21.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.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.67.0",
|
|
"vitest": "^4.1.10"
|
|
}
|
|
}
|