{
  "name": "koel",
  "author": "Phan An <me@phanan.net>",
  "homepage": "https://koel.dev",
  "license": "MIT",
  "description": "A personal music streaming server that works",
  "keywords": [
    "music",
    "audio",
    "stream"
  ],
  "repository": {
    "type": "git",
    "url": "https://github.com/koel/koel"
  },
  "dependencies": {
    "@fortawesome/fontawesome-svg-core": "^6.1.1",
    "@fortawesome/free-brands-svg-icons": "^6.1.1",
    "@fortawesome/free-regular-svg-icons": "^6.1.1",
    "@fortawesome/free-solid-svg-icons": "^6.1.1",
    "@fortawesome/vue-fontawesome": "^3.0.1",
    "axios": "^0.21.1",
    "compare-versions": "^3.5.1",
    "dompurify": "^3.1.4",
    "fuse.js": "^7.0.0",
    "ismobilejs": "^0.4.0",
    "local-storage": "^2.0.0",
    "lodash": "^4.17.19",
    "nouislider": "^14.0.2",
    "nprogress": "^0.2.0",
    "plyr": "1.5.x",
    "pusher-js": "^4.1.0",
    "select": "^1.1.2",
    "sketch-js": "^1.1.3",
    "slugify": "^1.0.2",
    "three": "^0.146.0",
    "tiny-typed-emitter": "^2.1.0",
    "vue": "^3.3.4",
    "youtube-player": "^3.0.4"
  },
  "devDependencies": {
    "@faker-js/faker": "^6.2.0",
    "@floating-ui/dom": "^1.0.3",
    "@testing-library/user-event": "^14.4.3",
    "@testing-library/vue": "^6.6.1",
    "@types/axios": "^0.14.0",
    "@types/dompurify": "^3.0.5",
    "@types/local-storage": "^1.4.0",
    "@types/lodash": "^4.14.150",
    "@types/nprogress": "^0.2.0",
    "@types/pusher-js": "^4.2.2",
    "@types/three": "^0.144.0",
    "@types/youtube-player": "^5.5.2",
    "@typescript-eslint/eslint-plugin": "^5.22.0",
    "@typescript-eslint/parser": "^4.11.1",
    "@vitejs/plugin-vue": "^5.0.4",
    "@vueuse/components": "^10.9.0",
    "@vueuse/core": "^10.9.0",
    "@vueuse/integrations": "^10.9.0",
    "add": "^2.0.6",
    "autoprefixer": "^10.4.19",
    "cross-env": "^7.0.3",
    "cypress": "^9.5.4",
    "eslint": "^8.14.0",
    "eslint-plugin-import": "^2.20.2",
    "eslint-plugin-node": "^11.1.0",
    "eslint-plugin-promise": "^4.2.1",
    "eslint-plugin-standard": "^4.0.1",
    "eslint-plugin-vue": "^8.7.1",
    "events": "^3.3.0",
    "factoria": "^4.0.0",
    "husky": "^4.2.5",
    "jest-serializer-vue": "^2.0.2",
    "js-md5": "^0.8.3",
    "jsdom": "^19.0.0",
    "kill-port": "^1.6.1",
    "laravel-vite-plugin": "^1.0.2",
    "lint-staged": "^10.3.0",
    "lucide-vue-next": "^0.363.0",
    "postcss": "^8.4.38",
    "postcss-mixins": "^10.0.0",
    "postcss-nested": "^6.0.1",
    "qrcode": "^1",
    "start-server-and-test": "^2.0.3",
    "tailwindcss": "^3.4.3",
    "typescript": "^4.8.4",
    "vite": "^5.1.6",
    "vitepress": "^1.0.0-rc.45",
    "vitest": "^0.24.0",
    "vue-advanced-cropper": "^2.8.8",
    "yarn": "^1.22.22"
  },
  "scripts": {
    "lint": "eslint ./resources/assets/js/**/*.ts --no-error-on-unmatched-pattern && eslint ./cypress/**/*.ts  --no-error-on-unmatched-pattern",
    "test": "vitest",
    "test:unit": "vitest",
    "test:e2e": "kill-port 8080 && start-test dev http-get://localhost:8080/api/ping 'cypress open'",
    "test:e2e:ci": "kill-port 8080 && start-test 'php artisan serve --port=8080 --quiet' http-get://localhost:8080/api/ping 'cypress run --browser chromium'",
    "build": "vite build",
    "build-demo": "cross-env VITE_KOEL_ENV=demo vite build",
    "dev": "kill-port 8000 && start-test 'php artisan serve --port=8000 --quiet' 'http://127.0.0.1:8000/api/ping' 'vite'",
    "docs:dev": "vitepress dev docs",
    "docs:build": "vitepress build docs",
    "docs:preview": "vitepress preview docs"
  },
  "husky": {
    "hooks": {
      "pre-commit": "lint-staged"
    }
  },
  "lint-staged": {
    "**/*.php": [
      "composer cs"
    ],
    "resources/assets/**/*.ts": [
      "eslint"
    ],
    "cypress/**/*.ts": [
      "eslint"
    ]
  },
  "type": "module",
  "packageManager": "yarn@1.22.19"
}
