{ "name": "dvinyl", "version": "3.3.0", "description": "", "main": "app.ts", "scripts": { "start": "node --env-file=.env --import tsx app.ts", "test": "node --import tsx --test tests/extraFieldIdentity.test.ts tests/hardcoverEditions.test.ts tests/hardcoverRefresh.test.ts tests/searchHighlight.test.ts tests/markdown.test.ts tests/shelfHelpers.test.ts tests/spine.test.ts tests/screenscraper.test.ts tests/openLibraryEdition.test.ts tests/releaseValidation.test.ts tests/distinctTitles.test.ts tests/copySeed.test.ts tests/filterFields.test.ts tests/aiBarcode.test.ts tests/aiClient.test.ts tests/aiConfig.test.ts tests/aiExtract.test.ts tests/aiJsonExtract.test.ts tests/aiPluginGenerate.test.ts tests/aiPrompt.test.ts tests/aiProviders.test.ts tests/aiSecret.test.ts tests/aiPhoto.test.ts tests/searchWithGuess.test.ts tests/tmdbAuth.test.ts tests/inlineScriptEscape.test.ts", "test:integration": "node --import tsx --test tests/extraFieldMigration.integration.test.ts tests/distinctTitles.integration.test.ts", "build:css": "npx tailwindcss -i ./website/src/input.css -o ./website/public/styles/tailwind.css --watch" }, "author": "Kyo'", "license": "ISC", "dependencies": { "bcrypt": "^6.0.0", "bwip-js": "^4.11.4", "cookie-parser": "^1.4.7", "ejs": "^3.1.10", "express": "^5.1.0", "express-session": "^1.18.1", "fast-xml-parser": "^5.11.0", "i18next": "^25.8.0", "i18next-http-middleware": "^3.9.2", "jsonwebtoken": "^9.0.2", "mongoose": "^8.14.1", "multer": "^2.1.1", "openid-client": "^6.8.4", "qrcode": "^1.5.4", "socket.io": "^4.8.1", "yauzl": "^3.4.0", "yazl": "^3.3.1" }, "devDependencies": { "@types/bcrypt": "^6.0.0", "@types/cookie-parser": "^1.4.10", "@types/express": "^5.0.6", "@types/express-session": "^1.19.0", "@types/jsonwebtoken": "^9.0.10", "@types/multer": "^2.1.0", "@types/node": "^25.9.3", "@types/qrcode": "^1.5.6", "@types/yauzl": "^3.4.0", "@types/yazl": "^3.3.1", "autoprefixer": "^10.4.21", "nodemon": "^3.1.10", "postcss": "^8.5.3", "tailwindcss": "^4.1.5", "tsx": "^4.22.4", "typescript": "^5.9.3" } }