{ "name": "koel", "author": "Phan An ", "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", "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/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/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" }