{
  "name": "multi-scrobbler",
  "version": "0.10.3",
  "type": "module",
  "description": "scrobble plays from multiple sources to multiple clients",
  "scripts": {
    "schema": "tsx src/backend/utils/SchemaStaticUtil.ts",
    "circular": "madge --circular --extensions ts src/index.ts",
    "test": "npm run -s test:backend",
    "test:backend": "mocha --reporter spec",
    "dev": "nodemon -w src/backend -x tsx src/backend/index.ts",
    "start": "NODE_ENV=production tsx src/backend/index.ts",
    "build:frontend": "vite build",
    "build:backend": "tsc -p src/backend",
    "build": "npm run -s build:backend && npm run -s build:frontend && npm run -s docs:build",
    "build:parallel": "concurrently --kill-others-on-fail --names backend,frontend,docs \"npm run -s build:backend\" \"npm run -s build:frontend\" \"npm run docs:build\"",
    "docs:install": "cd docsite && npm ci --no-audit",
    "docs:start": "cd docsite && npm start",
    "docs:build": "npm run schema && cd docsite && npm run build",
    "postinstall": "patch-package",
    "install:parallel": "concurrently --kill-others-on-fail --names app,docs \"npm ci --no-audit\" \"npm run docs:install\""
  },
  "exports": {
    ".": {
      "types": "./src/backend/common/infrastructure/typings/lastfm-node-client.d.ts",
      "import": "./src/backend/index.js"
    }
  },
  "engines": {
    "node": ">=18.19.1",
    "npm": ">=9.1.0"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/FoxxMD/multi-scrobbler.git"
  },
  "author": "",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/FoxxMD/multi-scrobbler/issues"
  },
  "private": true,
  "homepage": ".",
  "dependencies": {
    "@astronautlabs/mdns": "^1.0.7",
    "@atcute/identity-resolver-node": "^1.0.3",
    "@atproto/api": "^0.18.0",
    "@atproto/oauth-client-node": "^0.3.10",
    "@awaitjs/express": "^0.6.3",
    "@curvenote/ansi-to-react": "^7.0.0",
    "@donedeal0/superdiff": "^1.1.1",
    "@fortawesome/fontawesome-svg-core": "^6.4.2",
    "@fortawesome/free-solid-svg-icons": "^6.4.2",
    "@fortawesome/react-fontawesome": "^0.2.0",
    "@foxxmd/chromecast-client": "^1.0.4",
    "@foxxmd/get-version": "^0.0.3",
    "@foxxmd/logging": "^0.2.3",
    "@foxxmd/redact-string": "^0.1.2",
    "@foxxmd/regex-buddy-core": "^0.1.2",
    "@foxxmd/string-sameness": "^0.4.0",
    "@jellyfin/sdk": "^0.11.0",
    "@kenyip/backoff-strategies": "^1.0.4",
    "@keyv/valkey": "^1.0.8",
    "@lukehagar/plexjs": "^0.39.0",
    "@react-nano/use-event-source": "^0.13.0",
    "@reduxjs/toolkit": "^1.9.5",
    "@supercharge/promise-pool": "^3.0.0",
    "@tailwindcss/vite": "^4.1.16",
    "@types/express-serve-static-core": "^4.19.6",
    "address": "^1.2.2",
    "ajv": "^8.12.0",
    "autoprefixer": "^10.4.17",
    "avahi-browse": "^1.1.4",
    "better-sse": "^0.8.0",
    "body-parser": "^1.19.0",
    "cacheable": "^1.10.4",
    "castv2": "^0.1.10",
    "clone": "^2.1.2",
    "clsx": "^2.0.0",
    "common-tags": "^1.8.2",
    "compare-versions": "^4.1.2",
    "concat-stream": "^2.0.0",
    "cors": "^2.8.5",
    "dayjs": "^1.10.4",
    "dbus-ts": "^0.0.7",
    "dotenv": "^10.0.0",
    "express": "^4.17.1",
    "express-session": "^1.17.2",
    "fast-deep-equal": "^3.1.3",
    "fixed-size-list": "^0.3.0",
    "flat-cache": "^6.1.13",
    "formidable": "^3.5",
    "glob": "^11.0.0",
    "google-auth-library": "^9.15.0",
    "gotify": "^1.1.0",
    "http-cookie-agent": "^7.0.1",
    "icecast-metadata-stats": "^0.1.12",
    "iso-websocket": "^0.3.0",
    "iti": "^0.7.0",
    "json5": "^2.2.3",
    "keyv": "^5.5.0",
    "kodi-api": "^0.2.1",
    "lastfm-node-client": "^2.2.0",
    "mopidy": "^1.3.0",
    "mpd-api": "^1.1.2",
    "nanoid": "^3.3.1",
    "node-object-hash": "^3.1.1",
    "normalize-url": "^8.0.1",
    "ntfy": "^1.7.6",
    "p-event": "^4.2.0",
    "passport": "^0.6.0",
    "passport-deezer": "^0.2.0",
    "patch-package": "^8.0.0",
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "react-redux": "^8.1.2",
    "react-router-dom": "^6.15.0",
    "sass": "^1.93.3",
    "spotify-web-api-node": "^5.0.2",
    "superagent": "^8.0.9",
    "tailwindcss": "^4.1.16",
    "toad-scheduler": "^3.0.0",
    "tough-cookie": "^5.1.2",
    "ts-json-schema-generator": "^2.3.0",
    "tsx": "^4.7.0",
    "typeson": "^9.0.4",
    "typeson-registry": "^11.1.1",
    "vite-express": "^0.16.0",
    "vlc-client": "^1.1.1",
    "xml2js": "0.6.1",
    "youtubei.js": "^15.0.1"
  },
  "devDependencies": {
    "@dbus-types/notifications": "^0.0.5",
    "@eslint/js": "^8.56.0",
    "@faker-js/faker": "^9.0.1",
    "@gr2m/net-interceptor": "^1.0.0",
    "@istanbuljs/nyc-config-typescript": "^1.0.2",
    "@testing-library/jest-dom": "^5.17.0",
    "@testing-library/react": "^13.4.0",
    "@testing-library/user-event": "^13.5.0",
    "@tsconfig/node18": "^1.0.1",
    "@types/chai": "^4.3.0",
    "@types/chai-as-promised": "^7.1.5",
    "@types/clone": "^2.1.2",
    "@types/common-tags": "^1.8.1",
    "@types/concat-stream": "^2.0.0",
    "@types/cors": "^2.8.17",
    "@types/express": "^4.17.13",
    "@types/express-session": "^1.17.4",
    "@types/formidable": "^3.4.5",
    "@types/jest": "^27.5.2",
    "@types/jscodeshift": "^0.11.6",
    "@types/mocha": "^9.1.0",
    "@types/node": "^18.0.0",
    "@types/object-hash": "^3.0.0",
    "@types/passport": "^1.0.12",
    "@types/react": "^18.2.18",
    "@types/react-dom": "^18.2.7",
    "@types/react-window": "^1.8.5",
    "@types/spotify-web-api-node": "^5.0.7",
    "@types/superagent": "^8.1.9",
    "@types/xml2js": "^0.4.11",
    "@vitejs/plugin-react": "^4.2.1",
    "chai": "^4.3.6",
    "chai-as-promised": "^7.1.1",
    "eslint": "^8.56.0",
    "eslint-plugin-prefer-arrow-functions": "^3.2.4",
    "mocha": "^10.3.0",
    "mockdate": "^3.0.5",
    "msw": "^2.1.2",
    "nodemon": "^3.0.3",
    "ts-essentials": "^9.1.2",
    "typescript": "5.5.4",
    "typescript-eslint": "^7.0.1",
    "vite": "^5.2.12",
    "with-local-tmp-dir": "^6.0.0"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  },
  "overrides": {
    "spotify-web-api-node": {
      "superagent": "$superagent"
    }
  }
}
