openreader/package.json
Richard R 9b9206f50d refactor(audiobooks): migrate audiobook pipeline to object storage
This commit restructures the audiobook generation and serving layer to rely exclusively on S3-compatible blob storage, removing the dependency on local filesystem paths.

- Bundle `ffmpeg` and `ffprobe` binaries via npm to ensure portability across environments.
- Update API routes to stream audio directly from blob storage instead of local disk.
- Remove legacy migration endpoints and filesystem-based indexing logic.
- Add startup scripts to facilitate the transition from local to remote storage.

BREAKING CHANGE: Audiobook functionality is now strictly dependent on S3 configuration. The previous filesystem-based storage method has been removed.
2026-02-11 02:44:34 -07:00

89 lines
2.7 KiB
JSON

{
"name": "openreader-webui",
"version": "v1.3.0",
"private": true,
"scripts": {
"dev": "node scripts/openreader-entrypoint.mjs -- pnpm dev:raw",
"dev:raw": "next dev --turbopack -p 3003",
"build": "next build",
"start": "node scripts/openreader-entrypoint.mjs -- pnpm start:raw",
"start:raw": "next start -p 3003",
"lint": "next lint",
"test": "playwright test",
"migrate": "node drizzle/scripts/migrate.mjs",
"migrate-fs": "node scripts/migrate-fs-v2.mjs",
"migrate-fs:dry-run": "node scripts/migrate-fs-v2.mjs --dry-run true",
"generate": "node drizzle/scripts/generate.mjs",
"docs:init": "pnpm --dir docs-site install",
"docs:dev": "pnpm --dir docs-site start",
"docs:build": "pnpm --dir docs-site build",
"docs:serve": "pnpm --dir docs-site serve",
"docs:version": "pnpm --dir docs-site docusaurus docs:version",
"docs:clear": "pnpm --dir docs-site clear"
},
"dependencies": {
"@aws-sdk/client-s3": "^3.987.0",
"@aws-sdk/s3-request-presigner": "^3.987.0",
"@headlessui/react": "^2.2.9",
"@vercel/analytics": "^1.6.1",
"better-auth": "^1.4.18",
"better-sqlite3": "^12.6.2",
"cmpstr": "^3.2.1",
"compromise": "^14.14.5",
"core-js": "^3.48.0",
"dexie": "^4.3.0",
"dexie-react-hooks": "^4.2.0",
"dotenv": "^17.2.4",
"drizzle-kit": "^0.31.9",
"drizzle-orm": "^0.45.1",
"epubjs": "^0.3.93",
"ffmpeg-static": "^5.3.0",
"ffprobe-static": "^3.1.0",
"howler": "^2.2.4",
"lru-cache": "^11.2.6",
"next": "^15.5.12",
"openai": "^6.21.0",
"pdfjs-dist": "4.8.69",
"pg": "^8.18.0",
"react": "^19.2.4",
"react-dnd": "^16.0.1",
"react-dnd-html5-backend": "^16.0.1",
"react-dom": "^19.2.4",
"react-dropzone": "^14.4.1",
"react-hot-toast": "^2.6.0",
"react-markdown": "^10.1.0",
"react-pdf": "^9.2.1",
"react-reader": "^2.0.15",
"remark-gfm": "^4.0.1",
"uuid": "^11.1.0"
},
"devDependencies": {
"@eslint/eslintrc": "^3.3.3",
"@playwright/test": "^1.58.2",
"@tailwindcss/typography": "^0.5.19",
"@types/better-sqlite3": "^7.6.13",
"@types/ffprobe-static": "^2.0.3",
"@types/node": "^20.19.33",
"@types/pg": "^8.16.0",
"@types/react": "^19.2.13",
"@types/react-dom": "^19.2.3",
"@types/howler": "^2.2.12",
"@types/uuid": "^10.0.0",
"eslint": "^9.39.2",
"eslint-config-next": "^15.5.12",
"postcss": "^8.5.6",
"tailwindcss": "^3.4.19",
"typescript": "^5.9.3"
},
"pnpm": {
"onlyBuiltDependencies": [
"better-sqlite3",
"ffmpeg-static"
],
"overrides": {
"lodash": "^4.17.23",
"@xmldom/xmldom": "^0.9.8",
"@types/localforage": "npm:empty-module@0.0.2"
}
}
}