Files
bookorbit/package.json
T
Kyungwook Park 6677f2f5ea feat(metadata): add Aladin Korean book metadata provider (#351)
* feat(metadata): add Aladin Korean book metadata provider

Add support for fetching Korean book metadata from Aladin OpenAPI.
Includes search by title/author/ISBN and lookup by ISBN-10/13.

- Add ALADIN to MetadataProviderKey in @bookorbit/types
- Add AladinProviderConfig to ProviderConfigurations
- Create AladinProvider with IdentifiableProvider interface
- Add mapper for Aladin API response to MetadataCandidate
- Register provider in MetadataFetchModule
- Add provider config merge, validation, and connection test
- Include 24 unit tests (provider + mapper)

* feat(client): add Aladin provider UI integration

* refactor(metadata): use 'Aladin' label and favicon-based icon

* feat(metadata): complete Aladin provider end-to-end wiring

Persist the Aladin ItemId across fetch, scoring, locks, and file metadata round-trip, and update the affected tests.

Co-authored-by: Kyungwook Park <288273+kyungw00k@users.noreply.github.com>

---------

Co-authored-by: neon <18559658+neonsolstice@users.noreply.github.com>
Co-authored-by: Kyungwook Park <288273+kyungw00k@users.noreply.github.com>
2026-06-17 13:33:35 -06:00

101 lines
3.9 KiB
JSON

{
"name": "bookorbit",
"description": "Self-hosted library management and reading platform for ebooks, PDFs, audiobooks, and comics",
"author": "neonsolstice",
"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"
},
"private": true,
"packageManager": "pnpm@10.32.1",
"scripts": {
"setup": "bash ./scripts/bootstrap/local.sh",
"dev": "concurrently --names \"types,server,client\" --prefix-colors \"cyan,blue,green\" \"pnpm --filter @bookorbit/types dev\" \"pnpm run dev:server\" \"pnpm run dev:client\"",
"dev:client": "cd client && pnpm dev -- --host",
"dev:server": "cd server && pnpm start:dev",
"verify:fast": "pnpm run lint:check && pnpm run typecheck",
"verify": "pnpm run lint:check && pnpm run typecheck && pnpm run test",
"verify:strict": "pnpm run format:check && pnpm run lint:check && pnpm run typecheck:full && pnpm run test",
"build:client": "pnpm --filter client build",
"build:server": "pnpm --filter server build",
"typecheck": "pnpm run typecheck:server && pnpm run typecheck:client",
"typecheck:full": "pnpm run typecheck:server && pnpm run typecheck:client",
"typecheck:server": "pnpm --filter server type-check",
"typecheck:client": "pnpm --filter client type-check",
"lint:check": "pnpm --filter server lint:check && pnpm --filter client lint:check",
"lint:fix": "pnpm --filter server lint:fix && pnpm --filter client lint:fix",
"format": "pnpm --filter server format && pnpm --filter client format",
"format:check": "pnpm --filter server format:check && pnpm --filter client format:check",
"test": "pnpm run test:server && pnpm run test:client",
"test:server": "pnpm --filter server test",
"test:client": "pnpm --filter client test:unit --run",
"e2e:run": "node ./scripts/e2e/run-suite.mjs",
"e2e:all": "node ./scripts/e2e/run-suite.mjs all",
"e2e:list": "node ./scripts/e2e/run-suite.mjs --list",
"coverage": "pnpm run coverage:server && pnpm run coverage:client",
"coverage:server": "pnpm --filter server test:cov",
"coverage:client": "pnpm --filter client test:cov --run",
"db:up": "docker compose -f docker-compose.dev.yml up -d --wait",
"prod:up": "docker compose up -d --wait",
"prod:down": "docker compose down",
"db:migrate": "pnpm --filter server db:migrate",
"db:reset": "bash ./scripts/db/reset.sh",
"db:seed": "bash ./scripts/db/seed-baseline.sh",
"e2e:db:prepare": "bash ./scripts/e2e/prepare-db.sh",
"e2e:db:migrate": "pnpm --filter server e2e:db:migrate",
"prepare": "husky"
},
"engines": {
"node": ">=24",
"pnpm": ">=9"
},
"devDependencies": {
"@commitlint/cli": "^19.8.1",
"@commitlint/config-conventional": "^21.0.1",
"@semantic-release/commit-analyzer": "^13.0.1",
"@semantic-release/github": "^12.0.8",
"@semantic-release/release-notes-generator": "^14.1.1",
"concurrently": "^9.2.1",
"conventional-changelog-conventionalcommits": "^8.0.0",
"husky": "^9.1.7",
"lint-staged": "^17.0.4",
"prettier": "^3.8.3",
"semantic-release": "^24.2.5"
},
"lint-staged": {
"*.{md,json,yml,yaml}": [
"pnpm exec prettier --write"
],
"client/src/**/*.{ts,vue}": [
"pnpm --dir client exec eslint --fix --max-warnings 0",
"pnpm exec prettier --write"
],
"server/{src,test}/**/*.ts": [
"pnpm --dir server exec eslint --fix",
"pnpm exec prettier --write"
]
},
"pnpm": {
"overrides": {
"@esbuild-kit/core-utils>esbuild": "^0.25.12",
"fastify": "^5.8.5",
"fast-uri": "^3.1.1",
"fast-xml-builder": "^1.1.7",
"ws": "^8.21.0"
},
"onlyBuiltDependencies": [
"@nestjs/core",
"@parcel/watcher",
"@swc/core",
"esbuild",
"sharp",
"unrs-resolver"
]
}
}