{ "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", "alertify.js": "^1.0.12", "axios": "^0.21.1", "blueimp-md5": "^2.3.0", "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", "vue": "^3.2.32", "vue-global-events": "^2.1.1", "youtube-player": "^3.0.4" }, "devDependencies": { "@babel/core": "^7.17.9", "@babel/polyfill": "^7.8.7", "@babel/preset-env": "^7.9.6", "@faker-js/faker": "^6.2.0", "@testing-library/cypress": "^8.0.2", "@testing-library/vue": "^6.5.1", "@types/axios": "^0.14.0", "@types/blueimp-md5": "^2.7.0", "@types/local-storage": "^1.4.0", "@types/lodash": "^4.14.150", "@types/nprogress": "^0.2.0", "@types/pusher-js": "^4.2.2", "@types/youtube-player": "^5.5.2", "@typescript-eslint/eslint-plugin": "^5.22.0", "@typescript-eslint/parser": "^4.11.1", "@vitejs/plugin-vue": "^2.3.1", "@vue/test-utils": "^2.0.0-rc.21", "cross-env": "^7.0.3", "crypto-random-string": "^1.0.0", "css-loader": "^0.28.7", "cypress": "^9.5.4", "deepmerge": "^4.2.2", "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", "factoria": "^4.0.0", "file-loader": "^1.1.6", "husky": "^4.2.5", "jest-serializer-vue": "^2.0.2", "jsdom": "^19.0.0", "kill-port": "^1.6.1", "laravel-vite-plugin": "^0.2.4", "lint-staged": "^10.3.0", "postcss": "^8.4.12", "resolve-url-loader": "^3.1.1", "sass": "^1.50.0", "sass-loader": "^12.6.0", "start-server-and-test": "^1.14.0", "ts-loader": "^9.3.0", "typescript": "^4.6.3", "vite": "^2.9.13", "vitest": "^0.10.0", "vue-loader": "^16.2.0", "webpack": "^5.72.0", "webpack-node-externals": "^3.0.0" }, "scripts": { "lint": "eslint ./resources/assets/js/**/*.ts --no-error-on-unmatched-pattern && eslint ./cypress/**/*.ts --no-error-on-unmatched-pattern", "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-get://localhost:8000/api/ping hot", "development": "mix", "watch": "mix watch", "watch-poll": "mix watch -- --watch-options-poll=1000", "hot": "vite", "prod": "npm run production", "production": "mix --production" }, "husky": { "hooks": { "pre-commit": "lint-staged" } }, "lint-staged": { "**/*.php": [ "composer cs" ], "resources/assets/**/*.ts": [ "eslint" ], "cypress/**/*.ts": [ "eslint" ] } }