{"_id":"karaoke-forever","_rev":"49-45cadf693b4450617686eebdb1e6b36e","name":"karaoke-forever","dist-tags":{"latest":"0.9.0"},"versions":{"0.7.4-beta.1":{"name":"karaoke-forever","version":"0.7.4-beta.1","description":"Open karaoke party system","keywords":["karaoke","party","player","lyrics","cdgraphics","cdg","mp3+g","mp4","webgl"],"homepage":"https://www.karaoke-forever.com","main":"./server/main.js","engines":{"node":"^12.13.0","npm":"^6.12.0"},"scripts":{"lint":"eslint .","lint:fix":"npm run lint -- --fix","test":"echo \"Error: no test specified\" && exit 1","dev":"cross-env NODE_ENV=development nodemon --ignore build --ignore dist --ignore src","build":"rimraf build && webpack","serve":"node ./server/main.js","serve:docs":"hugo serve --source ./docs","server":"npm run serve","start":"electron . -p 3000","dist":"cross-env DEBUG=electron-builder:* electron-builder -c ./scripts/electron-builder.config.js","install-app-deps":"electron-builder install-app-deps"},"bin":{"karaoke-forever-server":"./server/main.js"},"repository":{"type":"git","url":"git+https://github.com/bhj/karaoke-forever.git"},"productName":"Karaoke Forever Server","author":{"name":"RadRoot LLC"},"license":"ISC","dependencies":{"@babel/runtime":"^7.6.0","bcrypt":"^3.0.6","blueimp-load-image":"^2.24.0","butterchurn":"^2.6.7","butterchurn-presets":"^2.4.7","cdgraphics":"^2.0.1","ctx-compose":"^3.0.0","electron-log":"^3.0.7","fast-fuzzy":"^1.8.8","jsonwebtoken":"^8.5.1","koa":"^2.8.1","koa-body":"^4.1.1","koa-favicon":"^2.0.1","koa-logger":"^3.2.1","koa-mount":"^4.0.0","koa-range":"^0.3.0","koa-router":"^7.4.0","koa-static":"^5.0.0","music-metadata":"^4.5.3","normalize.css":"^8.0.1","prop-types":"^15.7.2","rc-slider":"^8.7.1","react":"^16.9.0","react-dom":"^16.9.0","react-highlight-words":"^0.16.0","react-measure":"^1.4.7","react-redux":"^6.0.1","react-router":"^3.2.4","react-skylight":"^0.5.1","react-swipeable":"^5.4.0","react-transition-group":"^4.3.0","react-virtualized":"^9.21.1","redux":"^4.0.4","redux-auth-wrapper":"^2.1.0","redux-optimistic-ui":"^3.1.0","redux-persist":"^6.0.0","redux-responsive":"^4.3.8","redux-throttle":"^0.1.1","redux-thunk":"^2.3.0","reselect":"^4.0.0","rimraf":"^3.0.0","screenfull":"^5.0.0","socket.io":"^2.2.0","sqlite":"^3.0.3","squel":"^5.13.0","strip-ansi":"^5.2.0","vm2":"^3.8.3","yargs":"^14.0.0"},"devDependencies":{"@babel/core":"^7.6.0","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-proposal-object-rest-spread":"^7.5.5","@babel/plugin-transform-runtime":"^7.6.0","@babel/preset-env":"^7.6.0","@babel/preset-react":"^7.0.0","babel-eslint":"^10.0.3","babel-loader":"^8.0.6","babel-plugin-react-css-modules":"^5.2.6","case-sensitive-paths-webpack-plugin":"^2.2.0","cross-env":"^5.2.1","css-loader":"^3.2.0","electron":"^6.0.9","electron-builder":"^21.2.0","eslint":"^6.3.0","eslint-config-standard":"^14.1.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-import":"^2.18.2","eslint-plugin-node":"^10.0.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-react":"^7.14.3","eslint-plugin-standard":"^4.0.1","file-loader":"^4.2.0","html-webpack-plugin":"^3.2.0","koa-webpack":"^5.2.4","license-webpack-plugin":"^2.1.2","madge":"^3.4.4","mini-css-extract-plugin":"^0.8.0","nodemon":"^1.19.2","redbox-react":"^1.6.0","resolve-tree":"^0.1.14","url-loader":"^2.1.0","webpack":"^4.39.3","webpack-cli":"^3.3.8","webpack-node-externals":"^1.7.2"},"_resolved":"","_integrity":"","_from":"file:karaoke-forever-0.7.4-beta.1.tgz","bugs":{"url":"https://github.com/bhj/karaoke-forever/issues"},"_id":"karaoke-forever@0.7.4-beta.1","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-SknmN3r9NFxozJ7OheeHK5skRBq80tzV87dfexTJlZcvcnCulW/xa3ZcILo26WSbjMppq3Nxh7pthdxQWfjOUg==","shasum":"9b6da0d6ca16cc8ff65575199496a012977d77ea","tarball":"https://registry.npmjs.org/karaoke-forever/-/karaoke-forever-0.7.4-beta.1.tgz","fileCount":67,"unpackedSize":2112426,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd1O9fCRA9TVsSAnZWagAApfEP/3ZZTtXmNu8D40iGW5g2\nue67aKcEyAflGG1QYdzabS1j1TW1VH/wVjTkJ2QYVjrqP3S7mWjU//r6jrOg\n0IOYIZLWczWvuP2kxqp9R477Zh6fdIRVLXlsujslxA2Ds7JAc2aIb8gQoVCt\n7iumFY9iTs9HkCrFbe8LRpIgVnLD3lUYMpKlO8RdU1gaufeVdlrvr+9viQxk\nwQDsLL7KEj+m7n5WXn0i0HCpqe13u+oSmfr9RoDpnpqmuS5L9ARwHIVDGOBi\n8tKL1KZKPrrojSkJfpD3Edzh58fD4brp+z9zwvmNdPgQHuve8fLPZqhU8PeI\nbLFns4di0C4Pb3XtdB/458XJXhP1E7JWUrlxP7WSXYZYaiDtOD0mDI2Qi0L7\nuCAqDchayedJQC+cx4Fvs/UMeYaUCrjli1YIg4fvaz1yfIFw8W+ExuIDEFQh\nmMW4bv4kFXaME/aLu5fr8er7bSEe4qIsmlKVgg5hXsqPF6HOilv8EYgbCou4\nInobftqWcutFAy0LEljdyPrjWphyS1vsk7O8qRJV+iBYC32AWixkdAQkGOgK\nQIQsPV3rgxbmcedQoANF94ogyGeRk6x4A0q0zeqBygCQNbMEBvuAaaS0CvvG\nVcM8NMylDofyk+AuPpkAybxexKp03vXvrKiR1Qah3Z6ls2FQCNNYuKpNbcu0\n+O32\r\n=+H45\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEM4rNPJzymABmzIhKTffjkNAVBg5WyP5XVjCaoJjitQAiB3Ddlt48+O9MMhplWRJlRh2vhkvb+21/2kN0ZI7PvzYw=="}]},"maintainers":[{"name":"radrootllc","email":"hi@radroot.com"}],"_npmUser":{"name":"radrootllc","email":"hi@radroot.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/karaoke-forever_0.7.4-beta.1_1574235999150_0.6875953397068548"},"_hasShrinkwrap":false,"deprecated":"Use package 'karaoke-eternal' instead."},"0.7.4-beta.4":{"name":"karaoke-forever","version":"0.7.4-beta.4","description":"Open karaoke party system","keywords":["karaoke","party","player","lyrics","cdgraphics","cdg","mp3+g","mp4","webgl"],"homepage":"https://www.karaoke-forever.com","main":"./server/main.js","engines":{"node":"^12.13.0","npm":"^6.12.0"},"scripts":{"lint":"eslint .","lint:fix":"npm run lint -- --fix","test":"echo \"Error: no test specified\" && exit 1","dev":"cross-env NODE_ENV=development nodemon --ignore build --ignore dist --ignore src","build":"rimraf build && webpack","serve":"node ./server/main.js","serve:docs":"hugo serve --source ./docs","server":"npm run serve","start":"electron . -p 3000","dist":"cross-env DEBUG=electron-builder:* electron-builder -c ./scripts/electron-builder.config.js","install-app-deps":"electron-builder install-app-deps"},"bin":{"karaoke-forever-server":"./server/main.js"},"repository":{"type":"git","url":"git+https://github.com/bhj/karaoke-forever.git"},"productName":"Karaoke Forever Server","author":{"name":"RadRoot LLC"},"license":"ISC","dependencies":{"@babel/runtime":"^7.6.0","bcrypt":"^3.0.6","ctx-compose":"^3.0.0","electron-log":"^3.0.7","jsonwebtoken":"^8.5.1","koa":"^2.8.1","koa-body":"^4.1.1","koa-favicon":"^2.0.1","koa-logger":"^3.2.1","koa-mount":"^4.0.0","koa-range":"^0.3.0","koa-router":"^7.4.0","koa-static":"^5.0.0","music-metadata":"^4.9.2","rimraf":"^3.0.0","socket.io":"^2.2.0","sqlate":"^2.1.0","sqlite":"^3.0.3","strip-ansi":"^6.0.0","vm2":"^3.8.3","yargs":"^15.0.2"},"devDependencies":{"@babel/core":"^7.6.0","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-proposal-object-rest-spread":"^7.5.5","@babel/plugin-transform-runtime":"^7.6.0","@babel/preset-env":"^7.6.0","@babel/preset-react":"^7.0.0","babel-eslint":"^10.0.3","babel-loader":"^8.0.6","babel-plugin-react-css-modules":"^5.2.6","blueimp-load-image":"^2.24.0","butterchurn":"^2.6.7","butterchurn-presets":"^2.4.7","case-sensitive-paths-webpack-plugin":"^2.2.0","cdgraphics":"^2.0.1","core-js-compat":"^3.4.7","cross-env":"^6.0.3","css-loader":"^3.2.0","electron":"^7.1.2","electron-builder":"^21.2.0","eslint":"^6.3.0","eslint-config-standard":"^14.1.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-import":"^2.18.2","eslint-plugin-node":"^10.0.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-react":"^7.14.3","eslint-plugin-standard":"^4.0.1","fast-fuzzy":"^1.9.1","file-loader":"^5.0.2","html-webpack-plugin":"^3.2.0","koa-webpack":"^5.2.4","license-webpack-plugin":"^2.1.2","mini-css-extract-plugin":"^0.8.0","nodemon":"^2.0.1","normalize.css":"^8.0.1","prop-types":"^15.7.2","rc-slider":"^8.7.1","react":"^16.12.0","react-dom":"^16.12.0","react-highlight-words":"^0.16.0","react-measure":"^1.4.7","react-redux":"^6.0.1","react-router":"^3.2.5","react-skylight":"^0.5.1","react-swipeable":"^5.5.0","react-transition-group":"^4.3.0","react-virtualized":"^9.21.2","redbox-react":"^1.6.0","redux":"^4.0.4","redux-auth-wrapper":"^2.1.0","redux-optimistic-ui":"^3.1.0","redux-persist":"^6.0.0","redux-responsive":"^4.3.8","redux-throttle":"^0.1.1","redux-thunk":"^2.3.0","reselect":"^4.0.0","resolve-tree":"^0.1.14","screenfull":"^5.0.0","url-loader":"^3.0.0","webpack":"^4.39.3","webpack-cli":"^3.3.8","webpack-node-externals":"^1.7.2"},"_resolved":"","_integrity":"","_from":"file:karaoke-forever-0.7.4-beta.4.tgz","bugs":{"url":"https://github.com/bhj/karaoke-forever/issues"},"_id":"karaoke-forever@0.7.4-beta.4","_nodeVersion":"12.13.0","_npmVersion":"6.12.0","dist":{"integrity":"sha512-jzLDJ2h+ZbGIGz9w59J7gEhSUIj/eyRyXp2S5SymErMdqKZ2U4hwK308OBNqO2xalAo17x6U4CqwF3WGYhBW5w==","shasum":"0860461bdcdfb4c983c992d544521b576c19708a","tarball":"https://registry.npmjs.org/karaoke-forever/-/karaoke-forever-0.7.4-beta.4.tgz","fileCount":70,"unpackedSize":2114741,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd5nsfCRA9TVsSAnZWagAA4vEQAIO2lUlcaU+BZQgp9QQA\nT6qQBg5UwQnyAim0m/HlBKBuHm4DDsiiuOXc0e4hEWZFjKOAJ7Zr2tSVw4jZ\nQNNnt2fM4TDCcBnIffMMHV9NlR1D9sUIaO5EZkYStXKsIUjkJMDAKkdHEgPe\n4NNq9eKsQUWOVFyK61EjwfY1XK5qUJCIVLxatSLJj7THajjYypz3pp4/Kqnm\nZg/HSJ1klx6PNNGVFZU01q1c9A4tQY2Oo3i2kRl59wJpxuSvyTJjja81pUGD\n0gDbImKxl6El/wAJMHv2gOhWNv40s/9Znj+RmbMF0zh2hSpvpeCllov0ZYXZ\nOXZKPLp1/DdBTxgSU3jbxPZsiWXbBuJJRsu2sSq8/JGrAFgo9Bd32EN5mfyT\nnVZkqnK8e37rPxWbkbPDLTG6oyZPsmXtNnX433Ioadw+OYc526uNle+ABCEy\nc9VS4YSQ+mH6G4+5EPSzCRXYQKIcbKFgZkd/K5FiNXQpcTpxVjLEAAiNG1Ua\nBgODdq+6RevgxwJSb2Z5zzfuzcd2GECX8LUa4JsDQqovRw6LkLEWAeaiX5gG\nxxQMD6NJ4tOEf1X2WzjrPEquiE/iKMoxpnhJa+tNFDGPL1TylW0eev4RFeql\nFczzDYYS4Z3W75r/3XtqdkJj9aJHHCuHOhOFXEJO03g7w4JAWfnNHRIwf1sT\n3yca\r\n=u1J5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHSSC8wqgFOSgTquftjKWnFtpRq5Z5q58BbixCGdT03UAiEAyx6XVT7wNKSLBKqc37BtHF5OdUNrpL1P/3ymsXJp2ug="}]},"maintainers":[{"name":"radrootllc","email":"hi@radroot.com"}],"_npmUser":{"name":"radrootllc","email":"hi@radroot.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/karaoke-forever_0.7.4-beta.4_1575385886525_0.46417192639508387"},"_hasShrinkwrap":false,"deprecated":"Use package 'karaoke-eternal' instead."},"0.7.4-beta.5":{"name":"karaoke-forever","version":"0.7.4-beta.5","description":"Open karaoke party system","keywords":["karaoke","party","player","lyrics","cdgraphics","cdg","mp3+g","mp4","webgl"],"homepage":"https://www.karaoke-forever.com","main":"./server/main.js","engines":{"node":"^12.13.0","npm":"^6.12.0"},"scripts":{"lint":"eslint .","lint:fix":"npm run lint -- --fix","test":"echo \"Error: no test specified\" && exit 1","dev":"cross-env NODE_ENV=development nodemon --ignore build --ignore dist --ignore src","build":"rimraf build && webpack","serve":"node ./server/main.js","serve:docs":"hugo serve --source ./docs","server":"npm run serve","start":"electron . -p 3000","dist":"cross-env DEBUG=electron-builder:* electron-builder -c ./scripts/electron-builder.config.js","install-app-deps":"electron-builder install-app-deps"},"bin":{"karaoke-forever-server":"server/main.js"},"repository":{"type":"git","url":"git+https://github.com/bhj/karaoke-forever.git"},"productName":"Karaoke Forever Server","author":{"name":"RadRoot LLC"},"license":"ISC","dependencies":{"@babel/runtime":"^7.7.7","bcrypt":"^3.0.6","ctx-compose":"^3.0.0","electron-log":"^3.0.7","jsonwebtoken":"^8.5.1","koa":"^2.8.1","koa-body":"^4.1.1","koa-favicon":"^2.0.1","koa-logger":"^3.2.1","koa-mount":"^4.0.0","koa-range":"^0.3.0","koa-router":"^7.4.0","koa-static":"^5.0.0","music-metadata":"^5.4.3","rimraf":"^3.0.0","socket.io":"^2.2.0","sqlate":"^2.1.0","sqlite":"^3.0.3","strip-ansi":"^6.0.0","vm2":"^3.8.3","yargs":"^15.0.2"},"devDependencies":{"@babel/core":"^7.7.7","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-proposal-object-rest-spread":"^7.7.7","@babel/plugin-transform-runtime":"^7.7.6","@babel/preset-env":"^7.7.7","@babel/preset-react":"^7.0.0","babel-eslint":"^10.0.3","babel-loader":"^8.0.6","babel-plugin-react-css-modules":"^5.2.6","blueimp-load-image":"^2.26.0","butterchurn":"^2.6.7","butterchurn-presets":"^2.4.7","case-sensitive-paths-webpack-plugin":"^2.2.0","cdgraphics":"^2.0.1","core-js-compat":"^3.6.1","cross-env":"^6.0.3","css-loader":"^3.4.0","electron":"^7.1.7","electron-builder":"^21.2.0","eslint":"^6.8.0","eslint-config-standard":"^14.1.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-import":"^2.19.1","eslint-plugin-node":"^11.0.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-react":"^7.14.3","eslint-plugin-standard":"^4.0.1","fast-fuzzy":"^1.9.1","file-loader":"^5.0.2","html-webpack-plugin":"^3.2.0","koa-webpack":"^5.2.4","license-webpack-plugin":"^2.1.2","mini-css-extract-plugin":"^0.9.0","nodemon":"^2.0.2","normalize.css":"^8.0.1","prop-types":"^15.7.2","rc-slider":"^8.7.1","react":"^16.12.0","react-dom":"^16.12.0","react-highlight-words":"^0.16.0","react-measure":"^1.4.7","react-redux":"^6.0.1","react-router":"^3.2.5","react-skylight":"^0.5.1","react-swipeable":"^5.5.0","react-transition-group":"^4.3.0","react-virtualized":"^9.21.2","redbox-react":"^1.6.0","redux":"^4.0.5","redux-auth-wrapper":"^2.1.0","redux-optimistic-ui":"^3.1.0","redux-persist":"^6.0.0","redux-responsive":"^4.3.8","redux-throttle":"^0.1.1","redux-thunk":"^2.3.0","reselect":"^4.0.0","resolve-tree":"^0.1.14","screenfull":"^5.0.0","url-loader":"^3.0.0","webpack":"^4.41.5","webpack-cli":"^3.3.8","webpack-node-externals":"^1.7.2"},"_resolved":"","_integrity":"","_from":"file:karaoke-forever-0.7.4-beta.5.tgz","bugs":{"url":"https://github.com/bhj/karaoke-forever/issues"},"_id":"karaoke-forever@0.7.4-beta.5","_nodeVersion":"12.14.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-qYJuevhK1ETaxLOsZQmdK7hpPQnVPyNFTQXUn9k2Vb00HzAAbVCOnETBU5DNkx9UJ2Nm4EoxtMlnbFVH+Y9vIw==","shasum":"9afc0cd413298519d4c660758d63043d011ba094","tarball":"https://registry.npmjs.org/karaoke-forever/-/karaoke-forever-0.7.4-beta.5.tgz","fileCount":75,"unpackedSize":2285156,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeCM/+CRA9TVsSAnZWagAAeTgQAINYfBPEHj+1jdlxEEFg\n6UR38qre/V3KiHbRx6aMxxegKG4eC/1bFagIBZG91FQAyywKfzWGrJ9vHnIL\njilYI9vTaiLr8/hT9r8o04slYGB3uIcHkPSA861tuT075aq+nCFTKP6UORPd\nAy66NXCIRGqwLXVU4Of53sl3gCzKNSTOKu4PLQ+5Yl8qYAZ/b75HLbewspcH\n2KbnpBnK0oRsDZ8461z9b1U+UIZB+oaH2gpkgYTafDeThCpBKo40A5UjuzDV\nFJenYQwTVkgeRpn5gQAvKfs3mEOmswOkvAIrEjXzHcoqIwKwrg9Jfz+pnpxu\nZVxjZ0XGc1NR/33epn47QVqHerJDOpkvfB4pTmRWU3mwfnlpjkVEWqqBaSz+\njLPjEYQMK8/qBVeALCAQe0A4sFYJSGl1qPkyROFabYzKOdZ6CdtnLXEJWiro\nniEevaiTvtofcERUYYWRA62ngQ0zgf7f1d5u13DwjqOIaRaeINquIn6iu+QV\noMkGcJqEedF6Sas+rxXW0W76VnW6T8XHc6OhlsMnbmEd6Bi0atngLekX4F3e\nCWnxaRv5CnaSVd7q0Onopr3/Gu5mhIj0kSXvuQrD6YGA70R5arHH/oYULEhp\nKpdCw7AgTfXttKhV5q0aSEjWYMleD48JInj/58mdg2tSteCVOEAZAOriE913\ns2xk\r\n=xtov\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB3DzUlnInEFruUBOFRTgCdjHezzN7L3v2Ssi4OEYIvxAiEAgedWjhasxn5O2LmQej8ZgTCDRTJbBM99e77OXeYcR/U="}]},"maintainers":[{"name":"radrootllc","email":"hi@radroot.com"}],"_npmUser":{"name":"radrootllc","email":"hi@radroot.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/karaoke-forever_0.7.4-beta.5_1577635837558_0.5906200535661588"},"_hasShrinkwrap":false,"deprecated":"Use package 'karaoke-eternal' instead."},"0.7.4":{"name":"karaoke-forever","version":"0.7.4","description":"Open karaoke party system","keywords":["karaoke","party","player","lyrics","cdgraphics","cdg","mp3+g","mp4","webgl"],"homepage":"https://www.karaoke-forever.com","main":"./server/main.js","engines":{"node":"^12.13.0","npm":"^6.12.0"},"scripts":{"lint":"eslint .","lint:fix":"npm run lint -- --fix","test":"echo \"Error: no test specified\" && exit 1","dev":"cross-env NODE_ENV=development nodemon --ignore build --ignore dist --ignore src","build":"rimraf build && webpack","serve":"node ./server/main.js","serve:docs":"hugo serve --source ./docs","server":"npm run serve","start":"electron . -p 3000","dist":"cross-env DEBUG=electron-builder:* electron-builder -c ./scripts/electron-builder.config.js","install-app-deps":"electron-builder install-app-deps"},"bin":{"karaoke-forever-server":"server/main.js"},"repository":{"type":"git","url":"git+https://github.com/bhj/karaoke-forever.git"},"productName":"Karaoke Forever Server","author":{"name":"RadRoot LLC"},"license":"ISC","dependencies":{"@babel/runtime":"^7.7.7","bcrypt":"^3.0.6","ctx-compose":"^3.0.0","electron-log":"^3.0.7","jsonwebtoken":"^8.5.1","koa":"^2.8.1","koa-body":"^4.1.1","koa-favicon":"^2.0.1","koa-logger":"^3.2.1","koa-mount":"^4.0.0","koa-range":"^0.3.0","koa-router":"^7.4.0","koa-static":"^5.0.0","music-metadata":"^5.4.3","rimraf":"^3.0.0","socket.io":"^2.2.0","sqlate":"^2.1.0","sqlite":"^3.0.3","strip-ansi":"^6.0.0","vm2":"^3.8.3","yargs":"^15.0.2"},"devDependencies":{"@babel/core":"^7.7.7","@babel/plugin-proposal-class-properties":"^7.5.5","@babel/plugin-proposal-object-rest-spread":"^7.7.7","@babel/plugin-transform-runtime":"^7.7.6","@babel/preset-env":"^7.7.7","@babel/preset-react":"^7.0.0","babel-eslint":"^10.0.3","babel-loader":"^8.0.6","babel-plugin-react-css-modules":"^5.2.6","blueimp-load-image":"^2.26.0","butterchurn":"^2.6.7","butterchurn-presets":"^2.4.7","case-sensitive-paths-webpack-plugin":"^2.2.0","cdgraphics":"^2.0.1","core-js-compat":"^3.6.1","cross-env":"^6.0.3","css-loader":"^3.4.0","electron":"^7.1.7","electron-builder":"^21.2.0","eslint":"^6.8.0","eslint-config-standard":"^14.1.0","eslint-plugin-babel":"^5.3.0","eslint-plugin-import":"^2.19.1","eslint-plugin-node":"^11.0.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-react":"^7.14.3","eslint-plugin-standard":"^4.0.1","fast-fuzzy":"^1.9.1","file-loader":"^5.0.2","html-webpack-plugin":"^3.2.0","koa-webpack":"^5.2.4","license-webpack-plugin":"^2.1.2","mini-css-extract-plugin":"^0.9.0","nodemon":"^2.0.2","normalize.css":"^8.0.1","prop-types":"^15.7.2","rc-slider":"^8.7.1","react":"^16.12.0","react-dom":"^16.12.0","react-highlight-words":"^0.16.0","react-measure":"^1.4.7","react-redux":"^6.0.1","react-router":"^3.2.5","react-skylight":"^0.5.1","react-swipeable":"^5.5.0","react-transition-group":"^4.3.0","react-virtualized":"^9.21.2","redbox-react":"^1.6.0","redux":"^4.0.5","redux-auth-wrapper":"^2.1.0","redux-optimistic-ui":"^3.1.0","redux-persist":"^6.0.0","redux-responsive":"^4.3.8","redux-throttle":"^0.1.1","redux-thunk":"^2.3.0","reselect":"^4.0.0","resolve-tree":"^0.1.14","screenfull":"^5.0.0","url-loader":"^3.0.0","webpack":"^4.41.5","webpack-cli":"^3.3.8","webpack-node-externals":"^1.7.2"},"_resolved":"","_integrity":"","_from":"file:karaoke-forever-0.7.4.tgz","bugs":{"url":"https://github.com/bhj/karaoke-forever/issues"},"_id":"karaoke-forever@0.7.4","_nodeVersion":"12.14.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-/PrsMgdZI/0+C0ejvCzrMmY9vfAk3GysAT7JJDk8QloFtpdXDiH5buAU5G8qBH3JJ+BrEnw1TVP80W1psHEIRw==","shasum":"d62a3e925e036321a56c1b7e12a137a11346cc70","tarball":"https://registry.npmjs.org/karaoke-forever/-/karaoke-forever-0.7.4.tgz","fileCount":75,"unpackedSize":2284850,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeCq1qCRA9TVsSAnZWagAAqB0P/jT5yVeOSK+7FCxwcnod\n9QJTDFMTRk6rw4E1yn6hlylaRJYeYufIONVtLwH6d0uQGND49MQBYEi5q+sc\naWvIfl0d5SeV9e11Eq3Iys5tD40fqY6sf1gyL3gL3ce2YdEiUSaKTqmunMR+\nOgUhU3SKaDx6LV2iRa7gsUUFkGGrqdltmSgOTXVekIeBU8H9n7rKnSI6c5/3\nSlnF3XKFhyjLoa+Erziq9xAib/NW1Sd8h59ifUNdh/DIy0Vt2n6OpuU3H/uC\nEe5FndEfDpS6QGt4aPamGGRAcB8QeohNSX+suM/Rn+zDJutD7BmGezrxK5wQ\nSTohyE94IYifHZJEY7bgYu0KK928m6ZXZk/QemdIZJQLP8e6hnUejsml7VUh\nx1PV7IwKPGV4AjQmroxw3cmjksGeL11PApD+biLxf4FO25vBBIk1S0Dof6Gz\nTLFi6zQ4t46jwg243QUEduNqhrXas8nGGw//h2/sTirc3tUxbI4aCI0tPNT7\n7zEw1Dyi35hm3D8hh3ADy5YhOtw9m+XyRn/ZUcc2qHLdI989NIGHsinripy9\npJHwmf8Xt9gPWWLmExjxXhmRasgfAE+NuE1pTyPqbYpg1LC9/rXDdOVBb0xK\n1egHv+yKK0zH5lY9D0kuNSO977Z+lUE0jc0y9in0c+5RTcsueu7g4JkJJM4K\nrt/z\r\n=Giye\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBuCUo5+9Hdr2AVHVIaEqkq0gD6Afv5Sm3AAaUybxA9FAiA90f6geMHe6f6FnfL84TW8ICHRi7RzQVOCafhitMI3VQ=="}]},"maintainers":[{"name":"radrootllc","email":"hi@radroot.com"}],"_npmUser":{"name":"radrootllc","email":"hi@radroot.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/karaoke-forever_0.7.4_1577758058004_0.5883384354262198"},"_hasShrinkwrap":false,"deprecated":"Use package 'karaoke-eternal' instead."},"0.8.0":{"name":"karaoke-forever","version":"0.8.0","description":"Open karaoke party system","keywords":["karaoke","party","player","lyrics","cdgraphics","cdg","mp3+g","mp4","webgl"],"homepage":"https://www.karaoke-forever.com","main":"./server/main.js","engines":{"node":"^12.18.0","npm":"^6.14.0"},"scripts":{"lint":"eslint .","lint:fix":"npm run lint -- --fix","test":"echo \"Error: no test specified\" && exit 1","dev":"cross-env NODE_ENV=development nodemon --ignore build --ignore dist --ignore src","build":"rimraf build && webpack","serve":"node ./server/main.js","serve:docs":"hugo serve --source ./docs","server":"npm run serve","start":"electron . -p 3000","dist":"cross-env DEBUG=electron-builder:* electron-builder -c ./scripts/electron-builder.config.js","install-app-deps":"electron-builder install-app-deps"},"bin":{"karaoke-forever-server":"server/main.js"},"repository":{"type":"git","url":"git+https://github.com/bhj/karaoke-forever.git"},"productName":"Karaoke Forever Server","author":{"name":"RadRoot LLC"},"license":"ISC","dependencies":{"@babel/runtime":"^7.10.4","bcrypt":"^5.0.0","ctx-compose":"^3.0.0","electron-log":"^3.0.7","jsonwebtoken":"^8.5.1","koa":"^2.13.0","koa-body":"^4.2.0","koa-favicon":"^2.1.0","koa-logger":"^3.2.1","koa-mount":"^4.0.0","koa-range":"^0.3.0","koa-router":"^9.1.0","koa-static":"^5.0.0","music-metadata":"^6.4.0","react-github-btn":"^1.2.0","react-responsive-modal":"^5.0.2","rimraf":"^3.0.2","socket.io":"^2.2.0","sqlate":"^2.1.0","sqlite":"^3.0.6","strip-ansi":"^6.0.0","vm2":"^3.9.2","yargs":"^15.4.0"},"devDependencies":{"@babel/core":"^7.10.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-object-rest-spread":"^7.10.4","@babel/plugin-transform-runtime":"^7.10.4","@babel/preset-env":"^7.10.4","@babel/preset-react":"^7.10.4","babel-eslint":"^10.1.0","babel-loader":"^8.1.0","babel-plugin-react-css-modules":"^5.2.6","blueimp-load-image":"^5.13.0","butterchurn":"^2.6.7","butterchurn-presets":"^2.4.7","case-sensitive-paths-webpack-plugin":"^2.3.0","cdgraphics":"^4.0.0","core-js-compat":"^3.6.5","cross-env":"^7.0.2","css-loader":"^3.6.0","electron":"^9.0.5","electron-builder":"^22.7.0","eslint":"^7.3.1","eslint-config-standard":"^14.1.1","eslint-plugin-babel":"^5.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-react":"^7.20.3","eslint-plugin-standard":"^4.0.1","fast-fuzzy":"^1.10.1","file-loader":"^6.0.0","html-loader":"^1.1.0","html-webpack-plugin":"^4.3.0","koa-webpack":"^5.3.0","license-webpack-plugin":"^2.2.0","markdown-loader":"^5.1.0","mini-css-extract-plugin":"^0.9.0","nodemon":"^2.0.4","normalize.css":"^8.0.1","prop-types":"^15.7.2","rc-slider":"^9.3.1","react":"^16.13.1","react-dom":"^16.13.1","react-highlight-words":"^0.16.0","react-measure":"^1.4.7","react-redux":"^7.2.0","react-router":"^3.2.6","react-swipeable":"^5.5.1","react-transition-group":"^4.4.1","react-virtualized":"^9.21.2","redbox-react":"^1.6.0","redux":"^4.0.5","redux-auth-wrapper":"^3.0.0","redux-optimistic-ui":"^3.1.0","redux-persist":"^6.0.0","redux-throttle":"^0.1.1","redux-thunk":"^2.3.0","reselect":"^4.0.0","resolve-tree":"^0.1.14","screenfull":"^5.0.2","url-loader":"^4.1.0","webpack":"^4.43.0","webpack-cli":"^3.3.12","webpack-node-externals":"^1.7.2"},"_resolved":"","_integrity":"","_from":"file:karaoke-forever-0.8.0.tgz","bugs":{"url":"https://github.com/bhj/karaoke-forever/issues"},"_id":"karaoke-forever@0.8.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-rkMJm38HyIvuGqeFckMu0K/zYITY34TmuUnxUsAix9udDOLENfATAiYu5k4pMg2iNbWPYyMYsMMbR7O1WQW16A==","shasum":"7aa16f29c07fec9cfbf82b23d9988c9f17831b01","tarball":"https://registry.npmjs.org/karaoke-forever/-/karaoke-forever-0.8.0.tgz","fileCount":75,"unpackedSize":2290135,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/+j3CRA9TVsSAnZWagAAv7IP/0iInCcaoOnDKvsKkcLq\nZuzaagjeAuhu0DnoJ0SK0xYGb5q4ju2vEECpxYDg3erf9L5oh+0FM3DBaLX2\nwD1XXVCMVv5Klbz6Xdz9pLUPFQICgb6Zoief0jvyD2lM6RCOAjOjniBLHfpR\ng0GMjQsyN8xOZqdeVwmlgsTKVVd2Z41cokMFPhUJecyAjYBT5Act6VvfSuA1\n1KXG5dtB4jt0SW063cr3f1wn3Z7GuGGtT3CPqFl5YYCI+DKSiPUjYM0vmwK4\n1K0TZs+32zU8VJafckEVfYoGuWXJjqgb3qmwRJGNj+xjor+uG2cfDfDEY6HY\nO/fgBPNDmzCzkwarn7bAT0Xg2rRbSr28qJp5u4h2cAIXpV3WizNQgP3r0dRI\np4Z4qYOlp6frjMTVdpEJFfsFaeepRYgxDOUMpacsApSOawhD4/4FAdhokIPp\n3OxnMFcbH5sNHskchrsWY67zNX4xNuTLIiQMxc7ioY9fwHCEPqdXt5P8+Hiu\nK5DYkwA6irvmKsevhVURRP7egQC/zesLH94wp/Rj4X06aR5SwKjLyaOaUoyw\n+DlGhvsKLPx2alKKWKBY6UU0nZcQf82ThjKX7MHl7tYA56sqARJU0h0nR9sA\n1sJvNSL/TYWkwAMopcr8Nzq2D2GTJJdwKwchtu1SiziSnm8U0ysYeqDclucQ\nODQm\r\n=sJzD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCkUiUwwFhqyPeb6HuOFFNXU/pMbuEYTjMIfMImURvFPgIhAJVoitHUSTVAGNtoqKG1YH06VacT0fNRQQJh9r+E7LTP"}]},"maintainers":[{"name":"radrootllc","email":"hi@radroot.com"}],"_npmUser":{"name":"radrootllc","email":"hi@radroot.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/karaoke-forever_0.8.0_1593829622737_0.623120976157578"},"_hasShrinkwrap":false,"deprecated":"Use package 'karaoke-eternal' instead."},"0.9.0-alpha.2":{"name":"karaoke-forever","version":"0.9.0-alpha.2","description":"Open karaoke party system","keywords":["karaoke","party","player","lyrics","cdgraphics","cdg","mp3+g","mp4","webgl"],"homepage":"https://www.karaoke-forever.com","main":"./server/main.js","engines":{"node":"^12.18.0","npm":"^6.14.0"},"scripts":{"lint":"eslint .","lint:fix":"npm run lint -- --fix","test":"echo \"Error: no test specified\" && exit 1","dev":"cross-env NODE_ENV=development nodemon --ignore build --ignore dist --ignore src","build":"rimraf build && webpack","serve":"node ./server/main.js","serve:docs":"hugo serve --source ./docs -b http://$(hostname) --bind 0.0.0.0","server":"npm run serve","start":"electron . -p 3000","dist":"cross-env DEBUG=electron-builder:* electron-builder -c ./scripts/electron-builder.config.js","install-app-deps":"electron-builder install-app-deps"},"bin":{"karaoke-forever-server":"server/main.js"},"repository":{"type":"git","url":"git+https://github.com/bhj/karaoke-forever.git"},"productName":"Karaoke Forever Server","author":{"name":"RadRoot LLC"},"license":"ISC","dependencies":{"@babel/runtime":"^7.11.2","bcrypt":"^5.0.0","ctx-compose":"^3.0.0","electron-log":"^3.0.7","jsonwebtoken":"^8.5.1","koa":"^2.13.0","koa-body":"^4.2.0","koa-favicon":"^2.1.0","koa-logger":"^3.2.1","koa-mount":"^4.0.0","koa-range":"^0.3.0","koa-router":"^9.1.0","koa-static":"^5.0.0","music-metadata":"^7.0.0","rimraf":"^3.0.2","socket.io":"^2.2.0","sqlate":"^2.1.0","sqlite":"^3.0.6","strip-ansi":"^6.0.0","vm2":"^3.9.2","yargs":"^15.4.1"},"devDependencies":{"@babel/core":"^7.11.1","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-object-rest-spread":"^7.11.0","@babel/plugin-transform-runtime":"^7.11.0","@babel/preset-env":"^7.11.0","@babel/preset-react":"^7.10.4","babel-eslint":"^10.1.0","babel-loader":"^8.1.0","babel-plugin-react-css-modules":"^5.2.6","blueimp-load-image":"^5.14.0","butterchurn":"^2.6.7","butterchurn-presets":"^2.4.7","case-sensitive-paths-webpack-plugin":"^2.3.0","cdgraphics":"^5.0.0","core-js-compat":"^3.6.5","cross-env":"^7.0.2","css-loader":"^3.6.0","electron":"^9.2.0","electron-builder":"^22.8.0","eslint":"^7.6.0","eslint-config-standard":"^14.1.1","eslint-plugin-babel":"^5.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-react":"^7.20.5","eslint-plugin-standard":"^4.0.1","fast-fuzzy":"^1.10.3","file-loader":"^6.0.0","gl-chromakey":"^1.0.0-beta.2","html-loader":"^1.1.0","html-webpack-plugin":"^4.3.0","koa-webpack":"^5.3.0","license-webpack-plugin":"^2.3.0","markdown-loader":"^5.1.0","mini-css-extract-plugin":"^0.9.0","nodemon":"^2.0.4","normalize.css":"^8.0.1","prop-types":"^15.7.2","rc-slider":"^9.3.1","react":"^16.13.1","react-dom":"^16.13.1","react-github-btn":"^1.2.0","react-highlight-words":"^0.16.0","react-measure":"^1.4.7","react-redux":"^7.2.1","react-responsive-modal":"^5.0.2","react-router":"^3.2.6","react-swipeable":"^5.5.1","react-transition-group":"^4.4.1","react-virtualized":"^9.21.2","redbox-react":"^1.6.0","redux":"^4.0.5","redux-auth-wrapper":"^3.0.0","redux-optimistic-ui":"^3.1.0","redux-persist":"^6.0.0","redux-throttle":"^0.1.1","redux-thunk":"^2.3.0","reselect":"^4.0.0","resolve-tree":"^0.1.14","screenfull":"^5.0.2","url-loader":"^4.1.0","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-node-externals":"^2.5.1"},"_resolved":"","_integrity":"","_from":"file:karaoke-forever-0.9.0-alpha.2.tgz","readme":"# Karaoke Forever\n\nHost awesome karaoke parties where everyone can easily find and queue songs from their phone's web browser. The player is also browser-based with support for MP3+G, MP4 video and WebGL visualizations. The server runs locally, no internet connection required.\n\n[![Karaoke Forever](/docs/assets/images/README.jpg?raw=true)](/docs/assets/images/README.jpg?raw=true)\n\n<p align=\"center\">\n  <i>App in mobile browser (top) controlling player in Firefox/Chrome (bottom)</i>\n</p>\n\nKaraoke Forever basically has 3 parts:\n\n- **[Server:](https://www.karaoke-forever.com/docs/#karaoke-forever-server)** Runs on almost any OS to serve the app and your media files\n- **[App:](https://www.karaoke-forever.com/docs/#karaoke-forever-the-web-app)** Fast, modern browser app designed for \"karaoke conditions\"\n- **[Player:](https://www.karaoke-forever.com/docs/#player)** Just another part of the app, designed to run fullscreen on the system handling audio/video for a [room](https://www.karaoke-forever.com/docs/#rooms-admin-only)\n\n## Features\n\n- [MP3+G](https://en.wikipedia.org/wiki/MP3%2BG) and MP4 video support\n- [MilkDrop](https://en.wikipedia.org/wiki/MilkDrop)-style visualizations via [Butterchurn](https://github.com/jberg/butterchurn) (requires WebGL 2)\n- [ReplayGain](https://en.wikipedia.org/wiki/ReplayGain) volume normalization support\n- Singers prioritized by time since each last sang\n- Multiple simultaneous rooms/queues (optionally password-protected)\n- No telemetry; all data stored locally\n\nKaraoke Forever assumes its player will be mixed with any microphones (either in software or an outboard mixer). See the [F.A.Q.](https://www.karaoke-forever.com/faq#whats-the-recommended-audio-setup) for more information.\n\n## Getting Started\n\nThe [Karaoke Forever website](https://www.karaoke-forever.com/) has a [Quick Start ](https://www.karaoke-forever.com/docs/#quick-start) section as well as the documentation for [Karaoke Forever](https://www.karaoke-forever.com/docs/#karaoke-forever-the-web-app) (the \"web\" app) and [Karaoke Forever Server](https://www.karaoke-forever.com/docs/#karaoke-forever-server).\n\n## Discord / Support\n\nJoin the [Karaoke Forever Discord Server](https://discord.gg/PgqVtFq) for general support and development chat, or just to say hi!\n\n## Contributing & Development\n\nContributions are most welcome! Make sure you have [Node.js](https://nodejs.org/en/) 12 or later, then:\n\n1. Fork and clone the repo\n2. `npm i`\n3. `npm run dev` and look for \"Web server running at\" for the **server URL**\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/bhj/karaoke-forever/issues"},"_id":"karaoke-forever@0.9.0-alpha.2","_nodeVersion":"14.7.0","_npmVersion":"6.14.7","dist":{"integrity":"sha512-4toNjIBfYal10W9+vpjDT3omk9lz97oQIG51RhVgP5Tn9WF7bDYJ9mfOeLRvVKv49pGgJDLWdspWcZcIrGfPxw==","shasum":"42389bb8d3a8ebdbfa8e633334afbc8b4e24e495","tarball":"https://registry.npmjs.org/karaoke-forever/-/karaoke-forever-0.9.0-alpha.2.tgz","fileCount":75,"unpackedSize":2248866,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfLzHLCRA9TVsSAnZWagAA8GIP/1fVbCQr7qwT3gOlDJ4B\nRWFHGoW16G2G2MKgTiLuoHkgcbaSB12Ry88JnZrmQ5oqa3k7SLJRpV4/h/NT\nElkCC73AHy73s1I/9CkEwj/IbTVqe+k29hETl3uB4Vui4RqPKdnAlbNUJtSb\n3prB+brHrtFop8uGPJLFh2SGrd7bRAAVtnV+3XJSA/vD2vsZJL+bGPR4eH1J\nSOw/nqFuG1m7Bw+MdwSiuym8fkJTMpREAsKBHMR1PC+1m0uaH7lTycBEJdY7\npVESfTSkoGS4q1HqOGgBq3wxQZ0j1cGjXtjmUUKmaPYk0JmbrZGxGQhK1jGU\nMwpGR8e1rdeem8pW67PSViQSYFmdjucRVaxtKhrY1KaA1B3VGl6y0QL5m0NG\nCzg6fvBGlataAZ69/omxKoLmx8Yqta1rIE5JiG8V2n+eQ/qkEDafYMJ5SXo5\nQ7tMI6/L9HV6FH1/hZsN2tG4krHljAQD5tIQApzlNecEPcAXkIJTx1F2f8P6\n8t9xGuS/JNcrjfBRN/XhhEj0OcWCaBSQfcbs7QCgoLj0Gk0JY6cpRlHSr3p5\nDCnkUNvTLPgH7EcgVA8mn6C5uSrW+QxUy8MvXm3PUdqiXZXBThJBYkgINHLr\nNLAfYxavRr0uluVmdTJ7zUpsa18hkA9izS47M3/yalFqMdHWeLQVfw/cVKed\n80VD\r\n=elVj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICENMXdh7F9tJ+JT1PvfGGheplv3T/u3Z8DjQoWZwxHNAiEApUQwx1mVc64i1URkUrKxlPPrAO2Xx4Aco3QCrPf05kw="}]},"maintainers":[{"name":"radrootllc","email":"hi@radroot.com"}],"_npmUser":{"name":"radrootllc","email":"hi@radroot.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/karaoke-forever_0.9.0-alpha.2_1596928459035_0.9506671708940566"},"_hasShrinkwrap":false,"deprecated":"Use package 'karaoke-eternal' instead."},"0.9.0-alpha.5":{"name":"karaoke-forever","version":"0.9.0-alpha.5","description":"Open karaoke party system","keywords":["karaoke","party","player","lyrics","cdgraphics","cdg","mp3+g","mp4","webgl"],"homepage":"https://www.karaoke-forever.com","main":"./server/main.js","engines":{"node":"^12.18.0","npm":"^6.14.0"},"scripts":{"lint":"eslint .","lint:fix":"npm run lint -- --fix","test":"echo \"Error: no test specified\" && exit 1","dev":"cross-env NODE_ENV=development nodemon --ignore build --ignore dist --ignore src -- -p3000","build":"rimraf build && webpack --config ./config/webpack.config.js","serve":"node ./server/main.js","serve:docs":"hugo serve --source ./docs -b http://$(hostname) --bind 0.0.0.0","server":"npm run serve","start":"electron . -p 3000","dist":"cross-env DEBUG=electron-builder:* electron-builder -c ./config/electron-builder.config.js","install-app-deps":"electron-builder install-app-deps"},"bin":{"karaoke-forever-server":"server/main.js"},"repository":{"type":"git","url":"git+https://github.com/bhj/karaoke-forever.git"},"productName":"Karaoke Forever Server","author":{"name":"RadRoot LLC"},"license":"ISC","dependencies":{"@babel/runtime":"^7.11.2","@jcoreio/async-throttle":"^1.2.0","bcrypt":"^5.0.0","ctx-compose":"^3.0.0","electron-log":"^4.2.4","jsonwebtoken":"^8.5.1","koa":"^2.13.0","koa-body":"^4.2.0","koa-favicon":"^2.1.0","koa-logger":"^3.2.1","koa-mount":"^4.0.0","koa-range":"^0.3.0","koa-router":"^9.4.0","koa-static":"^5.0.0","music-metadata":"^7.1.1","rimraf":"^3.0.2","socket.io":"^2.2.0","sqlate":"^2.1.0","sqlite":"^4.0.14","sqlite3":"^5.0.0","strip-ansi":"^6.0.0","vm2":"^3.9.2","yargs":"^16.0.2"},"devDependencies":{"@babel/core":"^7.11.6","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-object-rest-spread":"^7.11.0","@babel/plugin-transform-runtime":"^7.11.5","@babel/preset-env":"^7.11.5","@babel/preset-react":"^7.10.4","babel-eslint":"^10.1.0","babel-loader":"^8.1.0","babel-plugin-react-css-modules":"^5.2.6","blueimp-load-image":"^5.14.0","butterchurn":"^2.6.7","butterchurn-presets":"^2.4.7","case-sensitive-paths-webpack-plugin":"^2.3.0","cdgraphics":"^5.0.0","core-js-compat":"^3.6.5","cross-env":"^7.0.2","css-loader":"^3.6.0","electron":"^10.1.1","electron-builder":"^22.8.0","eslint":"^7.8.1","eslint-config-standard":"^14.1.1","eslint-plugin-babel":"^5.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-react":"^7.20.6","eslint-plugin-standard":"^4.0.1","fast-fuzzy":"^1.10.7","file-loader":"^6.1.0","gl-chromakey":"^1.0.0-beta.2","html-loader":"^1.3.0","html-webpack-plugin":"^4.4.1","koa-webpack":"^6.0.0","license-webpack-plugin":"^2.3.0","markdown-loader":"^5.1.0","mini-css-extract-plugin":"^0.11.1","nodemon":"^2.0.4","normalize.css":"^8.0.1","prop-types":"^15.7.2","rc-slider":"^9.3.1","react":"^16.13.1","react-dom":"^16.13.1","react-github-btn":"^1.2.0","react-highlight-words":"^0.16.0","react-redux":"^7.2.1","react-responsive-modal":"^5.1.0","react-router":"^3.2.6","react-swipeable":"^5.5.1","react-transition-group":"^4.4.1","react-virtualized":"^9.22.2","redbox-react":"^1.6.0","redux":"^4.0.5","redux-auth-wrapper":"^3.0.0","redux-optimistic-ui":"^3.1.0","redux-persist":"^6.0.0","redux-throttle":"^0.1.1","redux-thunk":"^2.3.0","reselect":"^4.0.0","resolve-tree":"^0.1.14","screenfull":"^5.0.2","url-loader":"^4.1.0","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-node-externals":"^2.5.2"},"_resolved":"","_integrity":"","_from":"file:karaoke-forever-0.9.0-alpha.5.tgz","readme":"# Karaoke Forever\n\nHost awesome karaoke parties where everyone can easily find and queue songs from their phone's web browser. The player is also browser-based with support for MP3+G, MP4 video and WebGL visualizations. The server is self-hosted with no internet connection required.\n\n[![Karaoke Forever](/docs/assets/images/README.jpg?raw=true)](/docs/assets/images/README.jpg?raw=true)\n\n<p align=\"center\">\n  <i>App in mobile browser (top) controlling player in Firefox/Chrome (bottom)</i>\n</p>\n\n## Features\n\n- [MP3+G](https://en.wikipedia.org/wiki/MP3%2BG) and MP4 video support\n- [MilkDrop](https://en.wikipedia.org/wiki/MilkDrop)-style visualizations via [Butterchurn](https://github.com/jberg/butterchurn) (requires WebGL 2)\n- [ReplayGain](https://en.wikipedia.org/wiki/ReplayGain) volume normalization support\n- Singers prioritized by time since each last sang\n- Multiple simultaneous [rooms](https://www.karaoke-forever.com/docs/#rooms-admin-only)/queues (optionally password-protected)\n- No telemetry; all data stored locally\n\nKaraoke Forever assumes its player will be mixed with any microphones (either in software or an outboard mixer). See the [F.A.Q.](https://www.karaoke-forever.com/faq#whats-the-recommended-audio-setup) for more information.\n\n## Download\n\nIf you'll be running the server on macOS or Windows, you probably want <a href=\"https://github.com/bhj/karaoke-forever/releases\">Releases</a>. You can also easily install it on [any OS with Node.js](https://www.karaoke-forever.com/docs/#any-os-with-nodejs).\n\n## Getting Started\n\n Karaoke Forever basically has 3 parts. You can jump to the documentation for each below, or [Quick Start](https://www.karaoke-forever.com/docs/#quick-start) to get up and running step-by-step.\n\n- **[Server:](https://www.karaoke-forever.com/docs/#karaoke-forever-server)** Runs on almost any OS to serve the app and your media files\n- **[App:](https://www.karaoke-forever.com/docs/#karaoke-forever-the-web-app)** Fast, modern mobile browser app designed for \"karaoke conditions\"\n- **[Player:](https://www.karaoke-forever.com/docs/#player)** Just another part of the app, designed to run fullscreen on the system handling audio/video for a [room](https://www.karaoke-forever.com/docs/#rooms-admin-only)\n\n## Discord / Support\n\nJoin the [Karaoke Forever Discord Server](https://discord.gg/PgqVtFq) for general support and development chat, or just to say hi!\n\n## Contributing & Development\n\nContributions are most welcome! Make sure you have [Node.js](https://nodejs.org/en/) 12 or later, then:\n\n1. Fork and clone the repo\n2. `npm i`\n3. `npm run dev` and look for \"Web server running at\" for the **server URL**\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/bhj/karaoke-forever/issues"},"_id":"karaoke-forever@0.9.0-alpha.5","_nodeVersion":"14.9.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-tO4rB4Njcdg+eCm1CQ2bezYtDfHmg+uwzjzBfL9jRRtKFPb4++fBDuOWP2MjOA8tUO4A2/Vu3yrabuKiRkmRDA==","shasum":"d4e36ee2aa42795929110047d27fb534b61d9666","tarball":"https://registry.npmjs.org/karaoke-forever/-/karaoke-forever-0.9.0-alpha.5.tgz","fileCount":74,"unpackedSize":2215176,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYl/rCRA9TVsSAnZWagAADJYP/1JSxND8O89KgOKzkX0D\nkGlyjztBeB5GahiEAj5XOaX3kaNxTq1prLpUeBRzZVQq+eqOwRxuMsKh38No\ny5sAatTWgYgA3agOwO7C5e6WiyGM9UPYE2B8nWv3HSBmS7ifM+SW4H6wSnr0\nOwwkeozWYYEBIsfu2jvDvGrMPLXhOfAyMv4Y9GiuqdItxlG/jtfHTkiG0XWP\nwnkab62UedDq9GGjxOBQxUmRq7r3nzTRLTFhC+UCXIZrQbGQZ3eeErR9CiXV\nJ1MSej6XMJ1IZlfUqIQLn2NTwmbnKpvPEKoE5bdTvaL172VIM6xhu7kbegYr\nWKqab0HWF3EwjLo/g8h8VYa8SIRoVSY/0AjKYJDK3NfAdSdumHe/mScklCgt\nUcX7UXSN6G0xeF0DmshSsE33PDFRZFlQzqviuihSkAS65g2I1yAOOHVzZiic\nmVmcVN8fCJQS8o1zY6PXXi2jQ3DvBdWOn3JPv13daWG5cYRzMKUXH477bDtW\nOhA0BXdQN2vKu4kITGsIUKVRgIa+lvZEO9UyZNC8S5bcVaBvN+fVKFwn9Uvi\nHD4B/UceIOou6wXe9hagi/mWvf0VA2MLNCRGdUIg4pilBuxP+lVt7TVD74QD\nDxsypSdU79XwCgd+Mr46dUWMXsRgnuuCkahtJ2bJLTmX8pNlg5QdfhiG3Vax\nXe1d\r\n=qutP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBMUzZ0EEdhUe9IpaWheBWp2UemwuhRt/x5FLexgcUsUAiEAnlujv7tNFKxzFF3IfaZCEI4Bgqn6YBvQfTpnzZF8Ksw="}]},"maintainers":[{"name":"radrootllc","email":"hi@radroot.com"}],"_npmUser":{"name":"radrootllc","email":"hi@radroot.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/karaoke-forever_0.9.0-alpha.5_1600282603349_0.18293070246660514"},"_hasShrinkwrap":false,"deprecated":"Use package 'karaoke-eternal' instead."},"0.9.0-alpha.6":{"name":"karaoke-forever","version":"0.9.0-alpha.6","description":"Open karaoke party system","keywords":["karaoke","party","player","lyrics","cdgraphics","cdg","mp3+g","mp4","webgl"],"homepage":"https://www.karaoke-forever.com","main":"./server/main.js","engines":{"node":"^12.18.0","npm":"^6.14.0"},"scripts":{"lint":"eslint .","lint:fix":"npm run lint -- --fix","test":"echo \"Error: no test specified\" && exit 1","dev":"cross-env NODE_ENV=development nodemon --ignore build --ignore dist --ignore src -- -p3000","build":"rimraf build && webpack --config ./config/webpack.config.js","serve":"node ./server/main.js","serve:docs":"hugo serve --source ./docs -b http://$(hostname) --bind 0.0.0.0","server":"npm run serve","start":"electron . -p 3000","dist":"cross-env DEBUG=electron-builder:* electron-builder -c ./config/electron-builder.config.js","install-app-deps":"electron-builder install-app-deps"},"bin":{"karaoke-forever-server":"server/main.js"},"repository":{"type":"git","url":"git+https://github.com/bhj/karaoke-forever.git"},"productName":"Karaoke Forever Server","author":{"name":"RadRoot LLC"},"license":"ISC","dependencies":{"@babel/runtime":"^7.11.2","@jcoreio/async-throttle":"^1.1.2","bcrypt":"^5.0.0","ctx-compose":"^3.0.0","electron-log":"^4.2.4","jsonwebtoken":"^8.5.1","koa":"^2.13.0","koa-body":"^4.2.0","koa-favicon":"^2.1.0","koa-logger":"^3.2.1","koa-mount":"^4.0.0","koa-range":"^0.3.0","koa-router":"^9.4.0","koa-static":"^5.0.0","music-metadata":"^7.3.0","rimraf":"^3.0.2","socket.io":"^2.2.0","sqlate":"^2.1.0","sqlite":"^4.0.14","sqlite3":"^5.0.0","strip-ansi":"^6.0.0","vm2":"^3.9.2","yargs":"^15.4.1"},"devDependencies":{"@babel/core":"^7.11.4","@babel/plugin-proposal-class-properties":"^7.10.4","@babel/plugin-proposal-object-rest-spread":"^7.11.0","@babel/plugin-transform-runtime":"^7.11.0","@babel/preset-env":"^7.11.0","@babel/preset-react":"^7.10.4","babel-eslint":"^10.1.0","babel-loader":"^8.1.0","babel-plugin-react-css-modules":"^5.2.6","blueimp-load-image":"^5.14.0","butterchurn":"^2.6.7","butterchurn-presets":"^2.4.7","case-sensitive-paths-webpack-plugin":"^2.3.0","cdgraphics":"^5.0.0","core-js-compat":"^3.6.5","cross-env":"^7.0.2","css-loader":"^3.6.0","electron":"^9.2.1","electron-builder":"^22.8.0","eslint":"^7.9.0","eslint-config-standard":"^14.1.1","eslint-plugin-babel":"^5.3.1","eslint-plugin-import":"^2.22.0","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-react":"^7.20.6","eslint-plugin-standard":"^4.0.1","fast-fuzzy":"^1.10.6","file-loader":"^6.0.0","gl-chromakey":"^1.0.0-beta.2","html-loader":"^1.3.0","html-webpack-plugin":"^4.3.0","koa-webpack":"^6.0.0","license-webpack-plugin":"^2.3.0","markdown-loader":"^5.1.0","mini-css-extract-plugin":"^0.11.2","nodemon":"^2.0.4","normalize.css":"^8.0.1","prop-types":"^15.7.2","rc-slider":"^9.3.1","react":"^16.13.1","react-dom":"^16.13.1","react-github-btn":"^1.2.0","react-highlight-words":"^0.16.0","react-redux":"^7.2.1","react-responsive-modal":"^5.0.3","react-router":"^3.2.6","react-swipeable":"^5.5.1","react-transition-group":"^4.4.1","react-virtualized":"^9.22.2","redbox-react":"^1.6.0","redux":"^4.0.5","redux-auth-wrapper":"^3.0.0","redux-optimistic-ui":"^3.1.0","redux-persist":"^6.0.0","redux-throttle":"^0.1.1","redux-thunk":"^2.3.0","reselect":"^4.0.0","resolve-tree":"^0.1.14","screenfull":"^5.0.2","url-loader":"^4.1.0","webpack":"^4.44.1","webpack-cli":"^3.3.12","webpack-node-externals":"^2.5.2"},"_resolved":"","_integrity":"","_from":"file:karaoke-forever-0.9.0-alpha.6.tgz","readme":"# Karaoke Forever\n\nHost awesome karaoke parties where everyone can easily find and queue songs from their phone's web browser. The player is also browser-based with support for MP3+G, MP4 video and WebGL visualizations. The server is self-hosted with no internet connection required.\n\n[![Karaoke Forever](/docs/assets/images/README.jpg?raw=true)](/docs/assets/images/README.jpg?raw=true)\n\n<p align=\"center\">\n  <i>App in mobile browser (top) controlling player in Firefox/Chrome (bottom)</i>\n</p>\n\n## Features\n\n- [MP3+G](https://en.wikipedia.org/wiki/MP3%2BG) and MP4 video support\n- [MilkDrop](https://en.wikipedia.org/wiki/MilkDrop)-style visualizations via [Butterchurn](https://github.com/jberg/butterchurn) (requires WebGL 2)\n- [ReplayGain](https://en.wikipedia.org/wiki/ReplayGain) volume normalization support\n- Singers prioritized by time since each last sang\n- Multiple simultaneous [rooms](https://www.karaoke-forever.com/docs/#rooms-admin-only)/queues (optionally password-protected)\n- No telemetry; all data stored locally\n\nKaraoke Forever assumes its player will be mixed with any microphones (either in software or an outboard mixer). See the [F.A.Q.](https://www.karaoke-forever.com/faq#whats-the-recommended-audio-setup) for more information.\n\n## Download\n\nIf you'll be running the server on macOS or Windows, you probably want <a href=\"https://github.com/bhj/karaoke-forever/releases\">Releases</a>. You can also easily install it on [any OS with Node.js](https://www.karaoke-forever.com/docs/#any-os-with-nodejs).\n\n## Getting Started\n\n Karaoke Forever basically has 3 parts. You can jump to the documentation for each below, or [Quick Start](https://www.karaoke-forever.com/docs/#quick-start) to get up and running step-by-step.\n\n- **[Server:](https://www.karaoke-forever.com/docs/#karaoke-forever-server)** Runs on almost any OS to serve the app and your media files\n- **[App:](https://www.karaoke-forever.com/docs/#karaoke-forever-the-web-app)** Fast, modern mobile browser app designed for \"karaoke conditions\"\n- **[Player:](https://www.karaoke-forever.com/docs/#player)** Just another part of the app, designed to run fullscreen on the system handling audio/video for a [room](https://www.karaoke-forever.com/docs/#rooms-admin-only)\n\n## Discord / Support\n\nJoin the [Karaoke Forever Discord Server](https://discord.gg/PgqVtFq) for general support and development chat, or just to say hi!\n\n## Contributing & Development\n\nContributions are most welcome! Make sure you have [Node.js](https://nodejs.org/en/) 12 or later, then:\n\n1. Fork and clone the repo\n2. `npm i`\n3. `npm run dev` and look for \"Web server running at\" for the **server URL**\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/bhj/karaoke-forever/issues"},"_id":"karaoke-forever@0.9.0-alpha.6","_nodeVersion":"14.11.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-rd1W8f2/dOWoulT4GVxZy/ikcf6YYGL9EM123XTX7ctT3VPrqheo2/G6SocCEhugiqpseNrZxsiZw+4x0K9Ujw==","shasum":"185de9f630f411fd72b85918f0ee1290c6a4cd96","tarball":"https://registry.npmjs.org/karaoke-forever/-/karaoke-forever-0.9.0-alpha.6.tgz","fileCount":74,"unpackedSize":2213875,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYmj9CRA9TVsSAnZWagAAZNYP/A8W1JzUmB2Ag7ibXh4a\n5H2Dad41ZwloV1cVQ/FGvb/g9h5jepYwhFw8sWE0aO5uX512WhY9F4r64KFI\nNPsKRjPZ83emwCe6o1p3z3YpRXT+YIJgdbaBMWZt8TxrxrGP3hLM/obE/adc\nC8WcrHPwbzG3SKDOMXTqASKBQ99JeVYmSKJms7UziGOdHQ51gCc8JpnPs9gp\n6tz1HD0TZ0BZd4KDT7TCx7eCZ3NEhSVSsRVZKZs9AYw8Yxi6EVn4VnBkY9ZW\nRIz4X9mC2whqzEo44SubH2SGxSxvYhmfQcqYLAS/PsvlwLZQkLCerDhmQ7WL\nWju7fiVc5sURZZ77unneMTm3EdQN/28cQHEQRDjQBrZtIdtvuk9Dzg18CLQH\n0revfY9c5rOYi/9qAGU9vWZEMjKBDDRoohAQ2tlMjNfqzuRSi+EqN3c2dA3I\n6j93aTC1LMIg6I1lU9TJo/ehjGwIi8G31bT1eHJwMGSn9QFYgrOinIieDLNh\n//JnCgEEilhtznYUenrdrlYyuuBp8S6BNpGPpDLPPtOrf7HvTLd1HHOo2o1g\nygxrPIP0c65lZRIly4/OGyt8fN4CL7YsbCkkD54J1RNw3nrQQ+bQn4Jj9Kis\nYkp0gwIhU/4eJdmxK4PGA6PZhYk44mKNlfZvgDacND+o4FojxAeb8y1HeWUK\nEO5q\r\n=ydVj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEm6Uc7r19QbssPO9V+GsBVdGty7YDNnFvPL1CVizIMYAiEA9MQ7NBJFtfXee3D2bNPmL+8F5M16rVFEE26w4A5yKjU="}]},"maintainers":[{"name":"radrootllc","email":"hi@radroot.com"}],"_npmUser":{"name":"radrootllc","email":"hi@radroot.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/karaoke-forever_0.9.0-alpha.6_1600284922467_0.8652041426291646"},"_hasShrinkwrap":false,"deprecated":"Use package 'karaoke-eternal' instead."},"0.9.0-alpha.7":{"name":"karaoke-forever","version":"0.9.0-alpha.7","description":"Open karaoke party system","keywords":["karaoke","party","player","lyrics","cdgraphics","cdg","mp3+g","mp4","webgl"],"homepage":"https://www.karaoke-forever.com","main":"./server/main.js","engines":{"node":"^12.18.0","npm":"^6.14.0"},"scripts":{"lint":"eslint .","lint:fix":"npm run lint -- --fix","test":"echo \"Error: no test specified\" && exit 1","dev":"cross-env NODE_ENV=development nodemon --ignore build --ignore dist --ignore src -- -p3000","build":"rimraf build && webpack --config ./config/webpack.config.js","serve":"node ./server/main.js","serve:docs":"hugo serve --source ./docs -b http://$(hostname) --bind 0.0.0.0","server":"npm run serve","start":"electron . -p 3000","dist":"cross-env DEBUG=electron-builder:* electron-builder -c ./config/electron-builder.config.js","install-app-deps":"electron-builder install-app-deps"},"bin":{"karaoke-forever-server":"server/main.js"},"repository":{"type":"git","url":"git+https://github.com/bhj/karaoke-forever.git"},"productName":"Karaoke Forever Server","author":{"name":"RadRoot LLC"},"license":"ISC","dependencies":{"@babel/runtime":"^7.12.5","@jcoreio/async-throttle":"^1.3.2","bcrypt":"^5.0.0","ctx-compose":"^3.0.0","electron-log":"^4.3.1","jsonwebtoken":"^8.5.1","koa":"^2.13.0","koa-body":"^4.2.0","koa-favicon":"^2.1.0","koa-logger":"^3.2.1","koa-mount":"^4.0.0","koa-range":"^0.3.0","koa-router":"^10.0.0","koa-static":"^5.0.0","music-metadata":"^7.5.2","rimraf":"^3.0.2","socket.io":"^3.0.4","sqlate":"^2.1.0","sqlite":"^4.0.18","sqlite3":"^5.0.0","strip-ansi":"^6.0.0","vm2":"^3.9.2","yargs":"^16.2.0"},"devDependencies":{"@babel/core":"^7.12.10","@babel/plugin-proposal-class-properties":"^7.12.1","@babel/plugin-proposal-object-rest-spread":"^7.12.1","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-runtime":"^7.12.10","@babel/preset-env":"^7.12.11","@babel/preset-react":"^7.12.10","babel-eslint":"^10.1.0","babel-loader":"^8.2.2","babel-plugin-react-css-modules":"^5.2.6","blueimp-load-image":"^5.14.0","butterchurn":"^2.6.7","butterchurn-presets":"^2.4.7","case-sensitive-paths-webpack-plugin":"^2.3.0","cdgraphics":"^5.0.0","core-js-compat":"^3.8.1","cross-env":"^7.0.3","css-loader":"^3.6.0","electron":"^11.1.1","electron-builder":"^22.9.1","eslint":"^7.16.0","eslint-config-standard":"^16.0.2","eslint-plugin-babel":"^5.3.1","eslint-plugin-import":"^2.22.1","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.2.1","eslint-plugin-react":"^7.21.5","fast-fuzzy":"^1.10.8","file-loader":"^6.2.0","gl-chromakey":"^1.0.0-beta.2","history":"^4.10.1","html-loader":"^1.3.2","html-webpack-plugin":"^4.5.0","koa-webpack":"^6.0.0","license-webpack-plugin":"^2.3.4","markdown-loader":"^6.0.0","mini-css-extract-plugin":"^0.11.3","nodemon":"^2.0.6","normalize.css":"^8.0.1","prop-types":"^15.7.2","rc-slider":"^9.7.1","react":"^17.0.1","react-dom":"^17.0.1","react-github-btn":"^1.2.0","react-highlight-words":"^0.16.0","react-redux":"^7.2.2","react-responsive-modal":"^5.2.6","react-router-dom":"^5.2.0","react-swipeable":"^6.0.1","react-transition-group":"^4.4.1","react-virtualized":"^9.22.3","redbox-react":"^1.6.0","redux":"^4.0.5","redux-auth-wrapper":"^3.0.0","redux-optimistic-ui":"^3.1.0","redux-persist":"^6.0.0","redux-throttle":"^0.1.1","redux-thunk":"^2.3.0","reselect":"^4.0.0","screenfull":"^5.0.2","socket.io-client":"^3.0.4","url-loader":"^4.1.1","webpack":"^4.44.2","webpack-cli":"^3.3.12","webpack-node-externals":"^2.5.2"},"_resolved":"","_integrity":"","_from":"file:karaoke-forever-0.9.0-alpha.7.tgz","readme":"# Karaoke Forever\n\nHost awesome karaoke parties where everyone can easily find and queue songs from their phone's web browser. The player is also browser-based with support for MP3+G, MP4 video and WebGL visualizations. The server is self-hosted with no internet connection required.\n\n[![Karaoke Forever](/docs/assets/images/README.jpg?raw=true)](/docs/assets/images/README.jpg?raw=true)\n\n<p align=\"center\">\n  <i>App in mobile browser (top) controlling player in Firefox/Chrome (bottom)</i>\n</p>\n\n## Features\n\n- [MP3+G](https://en.wikipedia.org/wiki/MP3%2BG) and MP4 video support\n- [MilkDrop](https://en.wikipedia.org/wiki/MilkDrop)-style visualizations via [Butterchurn](https://github.com/jberg/butterchurn) (requires WebGL 2)\n- [ReplayGain](https://en.wikipedia.org/wiki/ReplayGain) volume normalization support\n- Singers prioritized by time since each last sang\n- Multiple simultaneous [rooms](https://www.karaoke-forever.com/docs/#rooms-admin-only)/queues (optionally password-protected)\n- No telemetry; all data stored locally\n\nKaraoke Forever assumes its player will be mixed with any microphones (either in software or an outboard mixer). See the [F.A.Q.](https://www.karaoke-forever.com/faq#whats-the-recommended-audio-setup) for more information.\n\n## Download\n\nIf you'll be running the server on macOS or Windows, you probably want <a href=\"https://github.com/bhj/karaoke-forever/releases\">Releases</a>. You can also easily install it on [any OS with Node.js](https://www.karaoke-forever.com/docs/#any-os-with-nodejs).\n\n## Getting Started\n\n Karaoke Forever basically has 3 parts. You can jump to the documentation for each below, or [Quick Start](https://www.karaoke-forever.com/docs/#quick-start) to get up and running step-by-step.\n\n- **[Server:](https://www.karaoke-forever.com/docs/#karaoke-forever-server)** Runs on almost any OS to serve the app and your media files\n- **[App:](https://www.karaoke-forever.com/docs/#karaoke-forever-the-web-app)** Fast, modern mobile browser app designed for \"karaoke conditions\"\n- **[Player:](https://www.karaoke-forever.com/docs/#player)** Just another part of the app, designed to run fullscreen on the system handling audio/video for a [room](https://www.karaoke-forever.com/docs/#rooms-admin-only)\n\n## Discord / Support\n\nJoin the [Karaoke Forever Discord Server](https://discord.gg/PgqVtFq) for general support and development chat, or just to say hi!\n\n## Contributing & Development\n\nContributions are most welcome! Make sure you have [Node.js](https://nodejs.org/en/) 12 or later, then:\n\n1. Fork and clone the repo\n2. `npm i`\n3. `npm run dev` and look for \"Web server running at\" for the **server URL**\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/bhj/karaoke-forever/issues"},"_id":"karaoke-forever@0.9.0-alpha.7","_nodeVersion":"14.15.3","_npmVersion":"6.14.9","dist":{"integrity":"sha512-DBqr/bKC2uWUmOAHtwqg0kAyWuzUIvi0n1dlSfVGJ+lmCfxiqazVsNV9juT5stW6vewGPVZc5MJ04g5WvFZmug==","shasum":"485f1889131b2f6d3ebc1c370ddb65b3eb120d69","tarball":"https://registry.npmjs.org/karaoke-forever/-/karaoke-forever-0.9.0-alpha.7.tgz","fileCount":74,"unpackedSize":2150677,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJf49RJCRA9TVsSAnZWagAAjNQP/j+ABc1ujbivKurtEOSM\nGqfB5XXjZqBX/F/Yjg2BehtJFJyc5f48QZgQEz2TQoQZXxvk9K4gQ+1wZgAj\n+RwW6HU9bxv7+XV9pWip6mckEuP2sD9O1gbwSqY7rLHJNrJDdARKJ7ukm0t8\n2g9l2RmqtcaGJH50gVBZkFt8X5/NY8t2Fj/T5IM11Aq3iF2dsG1hJdsJLq5Z\nXnrjpQmwBt60S5VfHPYqacCzBp51y8VrE7nt77MhZZMgs5GyLTJJ/EgoiSLu\nrYiDszjFJS09DXGw27ABDRBJdbqBiR7Bw5F0WIkvVppAbjDGdkRKUzIB4Pgh\ndOqsCkSFxLzI5jYRTFTq4ukn6XSlYiouFF8HPrpCCZ1+w8UdtDKWaNlDqhbl\n8fbiwYikzE4XhZIKkH+Q2vavAuood9HLJL5HrB+HBUHlzM1GYOlEHT2WDTZQ\nHylP1IZL19DuCicZhOnMLGueU0WVZJ2HhOHxjj8gS2wsjfq6mfN79cWzdqg9\nL6fVoZavU9cxcokZnN4JsphYLSeMu1IZfdFii/gfSnjO72Sc3Ye7rssNA0vF\nwc7eMDdpF936PIBf4WhXhurEX7CNGXvdCcHaWZQzNIblbjMeLX/oYDVZhBN+\nJ1KU8hRSMe9cAGLf/JTfTNuNR7Bvpty25eWZgfk4NkvVUalf/N068Vh6C/SG\n3Igd\r\n=TDl/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+S+45KmVYvYl2ykKvvb7D6j4vN9S3eohBTXk1EaOwtQIgC6mF1qbyIwk6gFgNkZ19cG2XuAcmtRbBAnB/8tSC4CE="}]},"_npmUser":{"name":"radrootllc","email":"hi@radroot.com"},"directories":{},"maintainers":[{"name":"radrootllc","email":"hi@radroot.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/karaoke-forever_0.9.0-alpha.7_1608766536615_0.27869224683400784"},"_hasShrinkwrap":false,"deprecated":"Use package 'karaoke-eternal' instead."},"0.9.0-alpha.9":{"name":"karaoke-forever","version":"0.9.0-alpha.9","description":"Open karaoke party system","keywords":["karaoke","party","player","lyrics","cdgraphics","cdg","mp3+g","mp4","webgl"],"homepage":"https://www.karaoke-forever.com","main":"./server/main.js","engines":{"node":">=12.0.0","npm":">=6.0.0"},"scripts":{"lint":"eslint .","lint:fix":"npm run lint -- --fix","test":"echo \"Error: no test specified\" && exit 1","dev":"NODE_ENV=development nodemon --ignore build --ignore dist --ignore src -- -p3000","build":"rimraf build && webpack --config config/webpack.config.js","serve":"node server/main.js","serve:docs":"hugo serve --source docs -b http://$(hostname) --bind 0.0.0.0","server":"npm run serve","start":"electron . -p 3000","dist":"DEBUG=electron-builder:* electron-builder -c config/electron-builder.config.js","install-app-deps":"electron-builder install-app-deps"},"bin":{"karaoke-forever-server":"server/main.js"},"repository":{"type":"git","url":"git+https://github.com/bhj/karaoke-forever.git"},"productName":"Karaoke Forever Server","author":{"name":"RadRoot LLC"},"license":"ISC","dependencies":{"@babel/runtime":"^7.14.5","@jcoreio/async-throttle":"^1.4.0","bcrypt":"^5.0.1","ctx-compose":"^3.0.0","electron-log":"^4.3.5","jsonwebtoken":"^8.5.1","koa":"^2.13.0","koa-body":"^4.2.0","koa-favicon":"^2.1.0","koa-logger":"^3.2.1","koa-mount":"^4.0.0","koa-range":"^0.3.0","koa-router":"^10.0.0","koa-static":"^5.0.0","music-metadata":"^7.8.6","rimraf":"^3.0.2","socket.io":"^4.1.2","sqlate":"^2.1.0","sqlite":"^4.0.23","sqlite3":"^5.0.2","strip-ansi":"^6.0.0","vm2":"^3.9.3","yargs":"^17.0.1"},"devDependencies":{"@babel/core":"^7.14.5","@babel/eslint-parser":"^7.14.5","@babel/eslint-plugin":"^7.14.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-object-rest-spread":"^7.14.5","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-runtime":"^7.14.5","@babel/preset-env":"^7.14.5","@babel/preset-react":"^7.14.5","@pmmmwh/react-refresh-webpack-plugin":"^0.4.3","babel-loader":"^8.2.2","blueimp-load-image":"^5.14.0","butterchurn":"^2.6.7","butterchurn-presets":"^2.4.7","case-sensitive-paths-webpack-plugin":"^2.4.0","cdgraphics":"^6.0.0","css-loader":"^5.2.6","electron":"^11.4.8","electron-builder":"^22.11.7","eslint":"^7.28.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.23.4","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^5.1.0","eslint-plugin-react":"^7.24.0","fast-fuzzy":"^1.10.10","file-loader":"^6.2.0","history":"^4.10.1","html-loader":"^2.1.2","html-webpack-plugin":"^5.3.1","license-webpack-plugin":"^2.3.19","markdown-loader":"^6.0.0","mini-css-extract-plugin":"^1.6.0","nodemon":"^2.0.6","normalize.css":"^8.0.1","prop-types":"^15.7.2","rc-slider":"^9.7.2","react":"^17.0.2","react-dom":"^17.0.2","react-github-btn":"^1.2.0","react-highlight-words":"^0.17.0","react-redux":"^7.2.4","react-refresh":"^0.10.0","react-responsive-modal":"^5.2.6","react-router-dom":"^5.2.0","react-swipeable":"^6.1.2","react-transition-group":"^4.4.2","react-window":"^1.8.6","redux":"^4.1.0","redux-optimistic-ui":"^3.1.0","redux-persist":"^6.0.0","redux-throttle":"^0.1.1","redux-thunk":"^2.3.0","reselect":"^4.0.0","screenfull":"^5.1.0","socket.io-client":"^4.1.2","url-loader":"^4.1.1","webpack":"^5.38.1","webpack-cli":"^4.7.2","webpack-dev-middleware":"^5.0.0","webpack-hot-middleware":"^2.25.0","webpack-node-externals":"^3.0.0"},"_resolved":"","_integrity":"","_from":"file:karaoke-forever-0.9.0-alpha.9.tgz","readme":"# Karaoke Forever\n\nHost awesome karaoke parties where everyone can easily find and queue songs from their phone's web browser. The player is also browser-based with support for MP3+G, MP4 video and WebGL visualizations. The server is self-hosted with no internet connection required.\n\n[![Karaoke Forever](/docs/assets/images/README.jpg?raw=true)](/docs/assets/images/README.jpg?raw=true)\n\n<p align=\"center\">\n  <i>App in mobile browser (top) controlling player in Firefox/Chrome (bottom)</i>\n</p>\n\n## Features\n\n- [MP3+G](https://en.wikipedia.org/wiki/MP3%2BG) and MP4 video support\n- [MilkDrop](https://en.wikipedia.org/wiki/MilkDrop)-style visualizations via [Butterchurn](https://github.com/jberg/butterchurn) (requires WebGL 2)\n- [ReplayGain](https://en.wikipedia.org/wiki/ReplayGain) volume normalization support\n- Singers prioritized by time since each last sang\n- Multiple simultaneous [rooms](https://www.karaoke-forever.com/docs/#rooms-admin-only)/queues (optionally password-protected)\n- No ads or telemetry; all data stored locally\n\nKaraoke Forever assumes its player will be mixed with any microphones (either in software or an outboard mixer). See the [F.A.Q.](https://www.karaoke-forever.com/faq#whats-the-recommended-audio-setup) for more information.\n\n## Download & Install\n\nSee <a href=\"https://github.com/bhj/karaoke-forever/releases\">Releases</a> available for your OS, as well as the [installation documentation](https://www.karaoke-forever.com/docs/#karaoke-forever-server).\n\nPlease note that the main branch is actively developed and is not guaranteed to be stable.\n\n## Getting Started\n\n Karaoke Forever basically has 3 parts. You can jump to the documentation for each below, or [Quick Start](https://www.karaoke-forever.com/docs/#quick-start) to get up and running step-by-step.\n\n- **[Server:](https://www.karaoke-forever.com/docs/#karaoke-forever-server)** Runs on almost any OS to serve the app and your media files\n- **[App:](https://www.karaoke-forever.com/docs/#karaoke-forever-the-web-app)** Fast, modern mobile browser app designed for \"karaoke conditions\"\n- **[Player:](https://www.karaoke-forever.com/docs/#player)** Just another part of the app, designed to run fullscreen on the system handling audio/video for a [room](https://www.karaoke-forever.com/docs/#rooms-admin-only)\n\n## Discord / Support\n\nJoin the [Karaoke Forever Discord Server](https://discord.gg/PgqVtFq) for general support and development chat, or just to say hi!\n\n## Contributing & Development\n\nContributions are most welcome! Make sure you have [Node.js](https://nodejs.org/en/) 12 or later, then:\n\n1. Fork and clone the repo\n2. `npm i`\n3. `npm run dev` and look for \"Web server running at\" for the **server URL**\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/bhj/karaoke-forever/issues"},"_id":"karaoke-forever@0.9.0-alpha.9","_nodeVersion":"14.17.0","_npmVersion":"6.14.13","dist":{"integrity":"sha512-73Xu1CMa82zuQUM2uvjh/Q6H97/SubxrIuWrJwrsVPh+VsRKHSBMLgTad7LTL3WEP1nvqo0nB/4kIoSR3o4c+Q==","shasum":"f2f262c0748e174c8a0a60c2164b418ab9a51d58","tarball":"https://registry.npmjs.org/karaoke-forever/-/karaoke-forever-0.9.0-alpha.9.tgz","fileCount":80,"unpackedSize":1965125,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgw8WrCRA9TVsSAnZWagAAb3AQAJN2otM+2mpo9Y7kHaZQ\n2n/tdYuRa9h3/RxQfpYD5vL5Hdy6D0c8DIrgq6ghQ17veVJAnt0CG2AxJ+md\nbBdeGcUqfb68WoNzC0xq1HBB/7q96sM/u8+UPTYQDqoXgC9fMhZOK6Fgklzw\nalgWWZ8UqWeNn4RxE8ylY1kA4oD1atOLhuHpT7keqMK594fR43ZlNvQuBLnC\nBHqBQcp7UGKjKhJEsfHVs+BDSzlARFIVYpdcCNxthooqAPlzinfAUDIah2Rx\nksotOscC572ku1LjjAY7NMGJ+p4tjHgBVIU54Tj+yudUsg+JoTgVyoaKVt1+\nyGCTP9wvMOwdiLZNuZchI7lCM7p2udvgPAbXITrGikfl/rCrKs4PYzky/oP+\nQoOh/y2dhquLXz6F/VldqoKabu0shppNxoAXhA5t5nf7vDsQvOk6EGv87Vq5\nVtpbFeRvVZauMhebb4RoMVrcSeTuz1KB+EkWDYBBmI+x3u1SFiODD2jzRTJm\nIGspiqdxwwuC9yPLQi55ZYG86GYl/hYdTfnboRAL/P9Jhxah/sU4VId8/X2D\n0/I/PhmPXkh7pX+Njm2AiR7UQyZX2aHbJVWQkWSVOtQYdEKY12cy8IZxO5jD\ncuAwB4RKQ+Zgp8dk+Oayzv0ogfXdCT4fXIQYaAmo95YM6xJFhaXscN149MmS\nuc5t\r\n=tuWr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMIiaZv0+dEJdk7NkTMIFGqwfT57NeKwpgOqMVinhheQIgJQEREMURIQ5CIvwYjRsm2aD+9cg+t+r0inYOfCqeBDw="}]},"_npmUser":{"name":"radrootllc","email":"hi@radroot.com"},"directories":{},"maintainers":[{"name":"radrootllc","email":"hi@radroot.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/karaoke-forever_0.9.0-alpha.9_1623442858912_0.11489759046056913"},"_hasShrinkwrap":false,"deprecated":"Use package 'karaoke-eternal' instead."},"0.9.0-beta.0":{"name":"karaoke-forever","version":"0.9.0-beta.0","description":"Open karaoke party system","keywords":["karaoke","party","player","lyrics","cdgraphics","cdg","mp3+g","mp4","webgl"],"homepage":"https://www.karaoke-forever.com","main":"./server/main.js","engines":{"node":">=12.0.0","npm":">=6.0.0"},"scripts":{"lint":"eslint .","lint:fix":"npm run lint -- --fix","test":"echo \"Error: no test specified\" && exit 1","dev":"NODE_ENV=development nodemon --ignore build --ignore dist --ignore src -- -p3000","build":"rimraf build && webpack --config config/webpack.config.js","serve":"node server/main.js","serve:docs":"hugo serve --source docs -b http://$(hostname) --bind 0.0.0.0","server":"npm run serve","start":"electron . -p 3000","dist":"DEBUG=electron-builder:* electron-builder -c config/electron-builder.config.js","install-app-deps":"electron-builder install-app-deps"},"bin":{"karaoke-forever-server":"server/main.js"},"repository":{"type":"git","url":"git+https://github.com/bhj/karaoke-forever.git"},"productName":"Karaoke Forever Server","author":"RadRoot LLC","license":"ISC","dependencies":{"@babel/runtime":"^7.15.4","@jcoreio/async-throttle":"^1.4.3","@vscode/sqlite3":"^5.0.7","bcrypt":"^5.0.1","ctx-compose":"^3.0.0","electron-log":"^4.4.1","jsonwebtoken":"^8.5.1","koa":"^2.13.3","koa-body":"^4.2.0","koa-favicon":"^2.1.0","koa-logger":"^3.2.1","koa-mount":"^4.0.0","koa-range":"^0.3.0","koa-router":"^10.1.1","koa-static":"^5.0.0","music-metadata":"^7.11.4","rimraf":"^3.0.2","socket.io":"^4.3.1","sqlate":"^2.2.0","sqlite":"^4.0.23","strip-ansi":"^6.0.1","vm2":"^3.9.4","yargs":"^17.2.1"},"devDependencies":{"@babel/core":"^7.15.8","@babel/eslint-parser":"^7.15.8","@babel/eslint-plugin":"^7.14.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-object-rest-spread":"^7.15.6","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-runtime":"^7.15.8","@babel/preset-env":"^7.15.8","@babel/preset-react":"^7.14.5","@pmmmwh/react-refresh-webpack-plugin":"^0.5.3","babel-loader":"^8.2.2","blueimp-load-image":"^5.15.0","butterchurn":"^3.0.0-beta.4","butterchurn-presets":"^3.0.0-beta.4","case-sensitive-paths-webpack-plugin":"^2.4.0","cdgraphics":"^6.0.0","css-loader":"^6.5.1","electron":"^16.0.5","electron-builder":"^22.13.1","eslint":"^7.32.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.25.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^5.1.0","eslint-plugin-react":"^7.26.1","eslint-plugin-react-hooks":"^4.2.0","fast-fuzzy":"^1.10.10","file-loader":"^6.2.0","history":"^5.2.0","html-loader":"^3.0.1","html-webpack-plugin":"^5.4.0","license-webpack-plugin":"^4.0.0","markdown-loader":"^6.0.0","mini-css-extract-plugin":"^2.4.5","modern-normalize":"^1.1.0","nodemon":"^2.0.13","prop-types":"^15.7.2","rc-slider":"^9.7.4","react":"^17.0.2","react-beautiful-dnd":"^13.1.0","react-dom":"^17.0.2","react-flip-toolkit":"^7.0.13","react-github-btn":"^1.2.1","react-highlight-words":"^0.17.0","react-redux":"^7.2.5","react-refresh":"^0.11.0","react-responsive-modal":"^6.2.0","react-router-dom":"^6.2.1","react-swipeable":"^6.2.0","react-transition-group":"^4.4.2","react-window":"^1.8.6","redux":"^4.1.1","redux-optimistic-ui":"^3.1.0","redux-persist":"^6.0.0","redux-throttle":"^0.1.1","redux-thunk":"^2.3.0","reselect":"^4.0.0","screenfull":"^6.0.0","socket.io-client":"^4.3.2","use-resize-observer":"^8.0.0","webpack":"^5.58.2","webpack-cli":"^4.9.0","webpack-dev-middleware":"^5.2.1","webpack-hot-middleware":"^2.25.1","webpack-node-externals":"^3.0.0"},"_id":"karaoke-forever@0.9.0-beta.0","_integrity":"sha512-oofBxrGCYfAqcTxg5a6OE1YRBAzMkPr8JEO05wMtMyEno1LagLpyxCjdebbttv93HoB2PTfKSSSZNJlrjz6jHA==","_resolved":"/Users/brandon/Sites/karaoke-forever/karaoke-forever-0.9.0-beta.0.tgz","_from":"file:karaoke-forever-0.9.0-beta.0.tgz","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-oofBxrGCYfAqcTxg5a6OE1YRBAzMkPr8JEO05wMtMyEno1LagLpyxCjdebbttv93HoB2PTfKSSSZNJlrjz6jHA==","shasum":"886317e9e2bdf3287a35c70571452ec2fafc0a93","tarball":"https://registry.npmjs.org/karaoke-forever/-/karaoke-forever-0.9.0-beta.0.tgz","fileCount":84,"unpackedSize":4922198,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxSC3CRA9TVsSAnZWagAAm50QAKMcaADaOeYgrnBoh3Q0\nEIgE3nhs3fqVZ2lRcIYWAZHqdfg9pu+lv3EJO3dpRjSJZXzrYMhzrumDZouV\n/xJT7HKeyKSfXolJXtZ0/WULYzVTgorMBpBQCpnLb+sfgoWZC2tvFEH7zVnd\nrz+hZwCiFELyFko1r2Z1jBiNF85xrR6YxCZBtK7SLQH+u+CMg7wLXkSi/nt/\nPnIOKvDepmzoke5jeoMEzJ4ASpXmu4zJMQCZjQa3Uy3vOIxjyoyKRs7AhQLu\nuy9+NrAOKrckvxH/74GPU3H4DJ2p3XNDFI79k6OiaYxpn7FVqW1xXhE0C1jX\nFHQo6QmdvxQqb50pwmAmDGVlhIvQ4sw0EhVYAk5UsnsdnEMWSYAHDazPU7+H\nhhyZmINa5lfwhIeWfDImEo+lmWX2SCli1dXtKBy/UyisZ8NMnbxfd/hBbTy/\nuKIf9DwXX/AhOMpuL0EHnEKrrVpNQugyJxRa/DOES51Yttioj3zpF6UtHg6S\n/sciY5TJIUs/sbM06p5CfYvY6PZ+v8xvUHO7vspSvVNcl/nNftjWUsdkLagA\ncLGrQVObz6mkQVy+kWlO4gSHjsgAxkibQQeMfCJs9Tz8o4w6VN8WY2Nms5ah\nN+0eq5GxwnY664XjdINbWXw4z6x8CcSoOq8g/dPb5plDv1yD1fZbkMhd+RTw\nQZ/+\r\n=7dcQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCGBUVmeEmn+vJzfYx32z1a1Pg3+AOmfWuMzczmJn2zGwIhAP5hSr+mP596u99x4oCl7ubrqSxEYh7KQ3yIxjAYZVq/"}]},"_npmUser":{"name":"radrootllc","email":"hi@radroot.com"},"directories":{},"maintainers":[{"name":"radrootllc","email":"hi@radroot.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/karaoke-forever_0.9.0-beta.0_1640308919113_0.9338173702380266"},"_hasShrinkwrap":false,"deprecated":"Use package 'karaoke-eternal' instead."},"0.9.0-beta.1":{"name":"karaoke-forever","version":"0.9.0-beta.1","description":"Open karaoke party system","keywords":["karaoke","party","player","lyrics","cdgraphics","cdg","mp3+g","mp4","webgl"],"homepage":"https://www.karaoke-forever.com","main":"./server/main.js","engines":{"node":">=12.0.0","npm":">=6.0.0"},"scripts":{"lint":"eslint .","lint:fix":"npm run lint -- --fix","test":"echo \"Error: no test specified\" && exit 1","dev":"NODE_ENV=development nodemon --ignore build --ignore dist --ignore src -- -p3000","build":"rimraf build && webpack --config config/webpack.config.js","serve":"node server/main.js","serve:docs":"hugo serve --source docs -b http://$(hostname) --bind 0.0.0.0","server":"npm run serve","start":"electron . -p 3000","dist":"DEBUG=electron-builder:* electron-builder -c config/electron-builder.config.js","install-app-deps":"electron-builder install-app-deps"},"bin":{"karaoke-forever-server":"server/main.js"},"repository":{"type":"git","url":"git+https://github.com/bhj/karaoke-forever.git"},"productName":"Karaoke Forever Server","author":"RadRoot LLC","license":"ISC","dependencies":{"@babel/runtime":"^7.15.4","@jcoreio/async-throttle":"^1.4.3","@vscode/sqlite3":"^5.0.7","bcrypt":"^5.0.1","ctx-compose":"^3.0.0","electron-log":"^4.4.1","jsonwebtoken":"^8.5.1","koa":"^2.13.3","koa-body":"^4.2.0","koa-favicon":"^2.1.0","koa-logger":"^3.2.1","koa-mount":"^4.0.0","koa-range":"^0.3.0","koa-router":"^10.1.1","koa-static":"^5.0.0","music-metadata":"^7.11.4","rimraf":"^3.0.2","socket.io":"^4.3.1","sqlate":"^2.2.0","sqlite":"^4.0.23","strip-ansi":"^6.0.1","vm2":"^3.9.4","yargs":"^17.2.1"},"devDependencies":{"@babel/core":"^7.15.8","@babel/eslint-parser":"^7.15.8","@babel/eslint-plugin":"^7.14.5","@babel/plugin-proposal-class-properties":"^7.14.5","@babel/plugin-proposal-object-rest-spread":"^7.15.6","@babel/plugin-syntax-dynamic-import":"^7.8.3","@babel/plugin-transform-runtime":"^7.15.8","@babel/preset-env":"^7.15.8","@babel/preset-react":"^7.14.5","@pmmmwh/react-refresh-webpack-plugin":"^0.5.3","babel-loader":"^8.2.2","blueimp-load-image":"^5.15.0","butterchurn":"^3.0.0-beta.4","butterchurn-presets":"^3.0.0-beta.4","case-sensitive-paths-webpack-plugin":"^2.4.0","cdgraphics":"^6.0.0","css-loader":"^6.5.1","electron":"^16.0.5","electron-builder":"^22.13.1","eslint":"^7.32.0","eslint-config-standard":"^16.0.3","eslint-plugin-import":"^2.25.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^5.2.0","eslint-plugin-react":"^7.26.1","eslint-plugin-react-hooks":"^4.2.0","fast-fuzzy":"^1.10.10","file-loader":"^6.2.0","history":"^5.2.0","html-loader":"^3.0.1","html-webpack-plugin":"^5.4.0","license-webpack-plugin":"^4.0.0","markdown-loader":"^6.0.0","mini-css-extract-plugin":"^2.4.5","modern-normalize":"^1.1.0","nodemon":"^2.0.13","prop-types":"^15.7.2","rc-slider":"^9.7.4","react":"^17.0.2","react-beautiful-dnd":"^13.1.0","react-dom":"^17.0.2","react-flip-toolkit":"^7.0.13","react-github-btn":"^1.2.1","react-highlight-words":"^0.17.0","react-redux":"^7.2.5","react-refresh":"^0.11.0","react-responsive-modal":"^6.2.0","react-router-dom":"^6.2.1","react-swipeable":"^6.2.0","react-transition-group":"^4.4.2","react-window":"^1.8.6","redux":"^4.1.1","redux-optimistic-ui":"^3.1.0","redux-persist":"^6.0.0","redux-throttle":"^0.1.1","redux-thunk":"^2.3.0","reselect":"^4.0.0","screenfull":"^6.0.0","socket.io-client":"^4.3.2","use-resize-observer":"^8.0.0","webpack":"^5.58.2","webpack-cli":"^4.9.0","webpack-dev-middleware":"^5.2.1","webpack-hot-middleware":"^2.25.1","webpack-node-externals":"^3.0.0"},"_id":"karaoke-forever@0.9.0-beta.1","_integrity":"sha512-8dzpPT0HheKxfMdXlQ7cFW2lpv1fmCGvrL89VUjbt7Nb8tEwTsbmTDFqt0HQEWSlFLoEc4hJEQ7Db4xKmzLrLQ==","_resolved":"/Users/brandon/Sites/karaoke-forever/karaoke-forever-0.9.0-beta.1.tgz","_from":"file:karaoke-forever-0.9.0-beta.1.tgz","_nodeVersion":"16.13.1","_npmVersion":"8.1.2","dist":{"integrity":"sha512-8dzpPT0HheKxfMdXlQ7cFW2lpv1fmCGvrL89VUjbt7Nb8tEwTsbmTDFqt0HQEWSlFLoEc4hJEQ7Db4xKmzLrLQ==","shasum":"6f735f75a9a3d14176418b8b2dfe19352bc7a67c","tarball":"https://registry.npmjs.org/karaoke-forever/-/karaoke-forever-0.9.0-beta.1.tgz","fileCount":79,"unpackedSize":4918018,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2h4uCRA9TVsSAnZWagAA0LsP/27p5SW5HSmPapv6Wd8g\nAfhNR3PYjSKA/OSb70Uj5v9if0AtYGopjpchBUwAYpDC0aidcOacqExCtV2D\nyNrRp3LeCHZi7fV77FuvypR3QtaJJzq+1gBSbKKKgeNU9vNOVIAeXypcixuh\nP/WDaHOuzb+cy1QYAjMavkbuvcQXT6tg8YiRfahHkTVI/x5We5VoHcXt9qJt\neoiQHjVRc7ZADrIjTEdPeA3orDNcnxiDdnhXHnT0X+MUJRuuTBWAb8eeUDXN\nWtLVvJUhnzD26yz/ZYWHnhp7BIKCLqm/EJEdWL8kfEtbcNeIw+74gj/KSBD+\naBo5j08/B69j8RsIoxg2/zclSMhTaHwONs/iV9218ioWePKp8aodciiSEaZr\nJh+bGUFi4AZB2BwFf/NPexZLlVLqK1e0SZwNScyv48e2TxWbn5CDKBkkKl3f\nrMV28sVGOaGFOH4OsDWPZGHsNM1CV5k2sztwCqc88OBl+dk+0hz90TldewcT\nc6+I3AFGsiMfA4DywHgg9x92KKgEnbcVSxG0vHmUImJJ7tcSlm4mGtDwJ7Nz\nSlt1OqpNVkumpP8GSEJENHlJjNZ9SdPfTQBKF/ZZJMqsIDlyDJp+JsEyl7+K\nSSjMfhKZtm/ztirYnRS+7poZFLS0U4wDoYy5Slq7XuVMdzD8Lj2j4EjcsoUS\nEkS1\r\n=oMfS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBoajN6lRqREwlJLz0ycSqrlSRnVfP/lu6oQeUTj1wd+AiEA+wUsimOZfo7+iIt7FZxAXJoXPa5u3+Cm74TUUQ2lr00="}]},"_npmUser":{"name":"radrootllc","email":"hi@radroot.com"},"directories":{},"maintainers":[{"name":"radrootllc","email":"hi@radroot.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/karaoke-forever_0.9.0-beta.1_1641684526395_0.08565302911354244"},"_hasShrinkwrap":false,"deprecated":"Use package 'karaoke-eternal' instead."},"0.9.0":{"name":"karaoke-forever","version":"0.9.0","description":"Use package 'karaoke-eternal' instead.","keywords":["karaoke","party","player","lyrics","cdgraphics","cdg","mp3+g","mp4","webgl"],"homepage":"https://www.karaoke-eternal.com","scripts":{"postinstall":"echo \"Use package 'karaoke-eternal' instead.\" && exit 1","test":"echo \"Error: no test specified\" && exit 1"},"author":{"name":"RadRoot LLC"},"license":"ISC","_id":"karaoke-forever@0.9.0","_integrity":"sha512-CZjhO2cwkvuGrQHx2eXYUFWJWcKnuverTSMHw6BT1lQnFT6XKW+bbLkCU6UPiEZYO4XXj2cIADtbOFfzcqjy+w==","_resolved":"/Users/brandon/Downloads/package/karaoke-forever-0.9.0.tgz","_from":"file:karaoke-forever-0.9.0.tgz","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-CZjhO2cwkvuGrQHx2eXYUFWJWcKnuverTSMHw6BT1lQnFT6XKW+bbLkCU6UPiEZYO4XXj2cIADtbOFfzcqjy+w==","shasum":"cdd8c0d1975c4b6c4dcf09dd5b014f40f9bd1678","tarball":"https://registry.npmjs.org/karaoke-forever/-/karaoke-forever-0.9.0.tgz","fileCount":2,"unpackedSize":551,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRzlOqO9tiLLCRd4N3bPWP7ESgNgFKVffGDKHpDFHFYwIgTMiFIuhqidv5SmkRKiEIR2pFRN83IoiNB4LXFsRS8oI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihHs2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp49g//aFdDL8oMok6jVMEydxUW46j9ekJD2BYjnO5qQdgKUgJ/mmtW\r\nG4PWMr4TY9a+X1jn0yxfx7jiBUJlKP34z43TgAUlVBuxBs9bE+tBxsz4FKaf\r\nVUGwEK7PYwjVxnNVYSbxDfGhL4GDpJkO1uRx9oliKxDLmjSiy2pgasWpoTKp\r\nHdhlusvMaZZELsRQF/k55UOGds6o+RTbj0Hozx2rMWjI4m6QeeEYOtfkoIK7\r\nNUM7gEkVIsAJYKtKcf26EqG8pnyIFj4paHI2TqHJ7CEKn7LfjDzAgBP+HhBP\r\nuA6GofZBm4zGj0423DaV0mjKE9iS8HKJLV387Z7heOlqkQlrcTJftrJ/4BhU\r\nY8rhriZXOuwVrxfa02JpATg7h63O0hWPKdiqSWQ56ULBx9E5CfEFaHGY7ja8\r\nGtAyxqH0ZMYjqqkG0DR0i42YC4+WZRRoiu7rI+ZAMysDlmsiRGkpmd1EjA1v\r\n1s/L7O+3t2ZeTUyu2Ch777PGj5rIFCPNeyt8D0EXtZ1LGqb1iutXCVKPcTux\r\npClcIdnAZ7ol2Sak8y4Xs0MGHhWAVcXZ8DgkGOSmpNdyhMbKSx1hUUz8R3er\r\n6aqtfefRcfmH6k1WkX6tuF96NGiQU0HPBJNkTUsv+TCLNDvKfKDlWWETS6of\r\nXqKQI7Kw1MKxIQq6WGykqYGJvf50LLrADvA=\r\n=kbL4\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"radrootllc","email":"hi@radroot.com"},"directories":{},"maintainers":[{"name":"radrootllc","email":"hi@radroot.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/karaoke-forever_0.9.0_1652849462168_0.09927383911799992"},"_hasShrinkwrap":false}},"time":{"created":"2019-11-19T16:20:44.728Z","0.7.4-beta.0":"2019-11-19T16:20:44.890Z","modified":"2022-05-18T04:51:02.486Z","0.7.4-beta.1":"2019-11-20T07:46:39.315Z","0.7.4-beta.3":"2019-12-02T21:25:58.849Z","0.7.4-beta.4":"2019-12-03T15:11:26.730Z","0.7.4-beta.5":"2019-12-29T16:10:37.729Z","0.7.4":"2019-12-31T02:07:38.228Z","0.8.0":"2020-07-04T02:27:02.922Z","0.9.0-alpha.0":"2020-08-08T20:04:35.920Z","0.9.0-alpha.1":"2020-08-08T21:00:28.973Z","0.9.0-alpha.2":"2020-08-08T23:14:19.208Z","0.9.0-alpha.3":"2020-08-28T23:57:28.874Z","0.9.0-alpha.4":"2020-08-29T14:35:15.585Z","0.9.0-alpha.5":"2020-09-16T18:56:43.634Z","0.9.0-alpha.6":"2020-09-16T19:35:22.687Z","0.9.0-alpha.7":"2020-12-23T23:35:36.767Z","0.9.0-alpha.8":"2020-12-30T01:48:36.740Z","0.9.0-alpha.9":"2021-06-11T20:20:59.111Z","0.9.0-beta.0":"2021-12-24T01:21:59.374Z","0.9.0-beta.1":"2022-01-08T23:28:46.628Z","0.9.0-beta.2":"2022-02-14T21:36:38.143Z","0.9.0-beta.3":"2022-02-15T21:24:09.034Z","0.9.0-beta.4":"2022-02-15T21:38:55.439Z","0.9.0-beta.5":"2022-03-09T23:35:18.092Z","0.9.0-beta.6":"2022-03-16T20:58:03.777Z","0.9.0-beta.7":"2022-03-16T21:15:59.261Z","0.9.0-beta.8":"2022-05-03T22:57:40.854Z","0.9.0":"2022-05-18T04:51:02.360Z"},"maintainers":[{"name":"radrootllc","email":"hi@radroot.com"}],"description":"Use package 'karaoke-eternal' instead.","homepage":"https://www.karaoke-eternal.com","author":{"name":"RadRoot LLC"},"license":"ISC","readme":"See the [Karaoke Eternal](https://www.npmjs.com/package/karaoke-eternal) package.\n","readmeFilename":"README.md","keywords":["karaoke","party","player","lyrics","cdgraphics","cdg","mp3+g","mp4","webgl"]}