{ "name": "kavita-webui", "version": "0.7.12.1", "scripts": { "ng": "ng", "start": "npm run cache-locale && ng serve --host 0.0.0.0", "start-proxy": "npm run cache-locale && ng serve --configuration proxy --host 0.0.0.0 --proxy-config proxy.conf.json", "build": "npm run cache-locale && ng build", "build-backend": "ng build && rm -r ../../API/wwwroot/* && cp -r dist/browser/* ../../API/wwwroot", "build-backend-prod": "ng build --configuration production && rm -r ../../API/wwwroot/* && cp -r dist/browser/* ../../API/wwwroot", "minify-langs": "node minify-json.js", "cache-locale": "node hash-localization.js", "cache-locale-prime": "node hash-localization-prime.js", "sync-locale": "node sync-locales.js", "prod": "npm run cache-locale-prime && ng build --configuration production && npm run minify-langs && npm run cache-locale", "explore": "ng build --stats-json && webpack-bundle-analyzer dist/stats.json", "lint": "ng lint", "e2e": "ng e2e" }, "private": true, "dependencies": { "@angular-slider/ngx-slider": "^20.0.0", "@angular/animations": "^20.3.2", "@angular/cdk": "^20.2.5", "@angular/common": "^20.3.2", "@angular/compiler": "^20.3.2", "@angular/core": "^20.3.2", "@angular/forms": "^20.3.2", "@angular/localize": "^20.3.2", "@angular/platform-browser": "^20.3.2", "@angular/platform-browser-dynamic": "^20.3.2", "@angular/router": "^20.3.2", "@fortawesome/fontawesome-free": "^7.0.1", "@iharbeck/ngx-virtual-scroller": "^19.0.1", "@iplab/ngx-color-picker": "^20.0.0", "@iplab/ngx-file-upload": "^20.0.0", "@jsverse/transloco": "^8.0.2", "@jsverse/transloco-locale": "^8.0.2", "@jsverse/transloco-persist-lang": "^8.0.2", "@jsverse/transloco-persist-translations": "^8.0.2", "@jsverse/transloco-preload-langs": "^8.0.2", "@microsoft/signalr": "^9.0.6", "@ng-bootstrap/ng-bootstrap": "^19.0.1", "@popperjs/core": "^2.11.7", "@siemens/ngx-datatable": "^22.4.1", "@swimlane/ngx-charts": "^23.0.0-alpha.0", "@tweenjs/tween.js": "^25.0.0", "afterframe": "^1.0.2", "bootstrap": "^5.3.2", "charts.css": "^1.2.0", "file-saver": "^2.0.5", "luxon": "^3.7.1", "ng-circle-progress": "^1.7.1", "ng-lazyload-image": "^9.1.3", "ng-select2-component": "^17.2.4", "ngx-extended-pdf-viewer": "^24.1.0", "ngx-file-drop": "^16.0.0", "ngx-quill": "^28.0.1", "ngx-stars": "^1.6.5", "ngx-toastr": "^19.1.0", "nosleep.js": "^0.12.0", "quill": "^2.0.3", "rxjs": "^7.8.2", "screenfull": "^6.0.2", "swiper": "^11.2.10", "tslib": "^2.8.1", "zone.js": "^0.15.1" }, "devDependencies": { "@angular-eslint/builder": "^20.3.0", "@angular-eslint/eslint-plugin": "^20.3.0", "@angular-eslint/eslint-plugin-template": "^20.3.0", "@angular-eslint/schematics": "^20.3.0", "@angular-eslint/template-parser": "^20.3.0", "@angular/build": "^20.3.3", "@angular/cli": "^20.3.3", "@angular/compiler-cli": "^20.3.2", "@types/d3": "^7.4.3", "@types/file-saver": "^2.0.7", "@types/luxon": "^3.6.2", "@types/marked": "^5.0.2", "@types/node": "^24.0.14", "@typescript-eslint/eslint-plugin": "^8.38.0", "@typescript-eslint/parser": "^8.44.1", "eslint": "^9.31.0", "jsonminify": "^0.4.2", "karma-coverage": "~2.2.0", "ts-node": "~10.9.1", "typescript": "^5.8.3", "webpack-bundle-analyzer": "^4.10.2" } }