From 63a1ca64ba234d013e68d1b35fa8d5857fe6561b Mon Sep 17 00:00:00 2001 From: XeonE52680v3 Date: Sun, 17 Sep 2023 20:14:17 +0700 Subject: [PATCH 1/3] Distube version --- package-lock.json | 2074 +++++++++++++++++++++++++++----- package.json | 13 +- src/database/setup/lavalink.ts | 8 +- src/manager.ts | 106 +- 4 files changed, 1793 insertions(+), 408 deletions(-) diff --git a/package-lock.json b/package-lock.json index a446d83f..5adff109 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,11 @@ "version": "1.0.0", "license": "AGPL-3.0-or-later", "dependencies": { + "@discordjs/opus": "^0.9.0", + "@discordjs/voice": "^0.16.0", + "@distube/soundcloud": "^1.3.3", + "@distube/spotify": "^1.5.1", + "@distube/yt-dlp": "^1.1.3", "@hammerhq/localization": "^0.1.5", "axios": "^1.4.0", "chalk": "^4.1.2", @@ -18,18 +23,17 @@ "discord-api-types": "^0.37.53", "discord-hybrid-sharding": "^2.1.3", "discord.js": "^14.13.0", + "distube": "^4.1.0", "esm": "^3.2.25", "express": "^4.18.2", "express-cluster": "^0.0.5", "express-status-monitor": "^1.3.4", "express-ws": "^5.0.2", + "ffmpeg": "^0.0.4", "fs-extra": "^11.1.1", "humanize-duration": "^3.29.0", "js-yaml": "^4.1.0", - "kazagumo": "^2.3.2", - "kazagumo-deezer": "^1.2.2", - "kazagumo-nico": "^1.1.5", - "kazagumo-spotify": "^1.2.0", + "libsodium-wrappers": "^0.7.13", "lodash": "^4.17.21", "lyric-api": "^1.0.1", "lyrics-finder": "^21.7.0", @@ -43,7 +47,6 @@ "pretty-ms": "^8.0.0", "quick.db": "^9.1.7", "recursive-readdir": "^2.2.3", - "shoukaku": "^3.4.0", "slyrics": "^0.1.42", "stuffs": "^0.1.27", "voucher-code-generator": "^1.3.0", @@ -798,6 +801,85 @@ "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.50.tgz", "integrity": "sha512-X4CDiMnDbA3s3RaUXWXmgAIbY1uxab3fqe3qwzg5XutR3wjqi7M3IkgQbsIBzpqBN2YWr/Qdv7JrFRqSgb4TFg==" }, + "node_modules/@discordjs/node-pre-gyp": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.5.tgz", + "integrity": "sha512-YJOVVZ545x24mHzANfYoy0BJX5PDyeZlpiJjDkUBM/V/Ao7TFX9lcUvCN4nr0tbr5ubeaXxtEBILUrHtTphVeQ==", + "dependencies": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "bin": { + "node-pre-gyp": "bin/node-pre-gyp" + } + }, + "node_modules/@discordjs/node-pre-gyp/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/@discordjs/node-pre-gyp/node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@discordjs/node-pre-gyp/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@discordjs/opus": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.9.0.tgz", + "integrity": "sha512-NEE76A96FtQ5YuoAVlOlB3ryMPrkXbUCTQICHGKb8ShtjXyubGicjRMouHtP1RpuDdm16cDa+oI3aAMo1zQRUQ==", + "hasInstallScript": true, + "dependencies": { + "@discordjs/node-pre-gyp": "^0.4.5", + "node-addon-api": "^5.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/@discordjs/rest": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.0.1.tgz", @@ -830,6 +912,21 @@ "node": ">=16.11.0" } }, + "node_modules/@discordjs/voice": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@discordjs/voice/-/voice-0.16.0.tgz", + "integrity": "sha512-ToGCvHD1cBscuW3p+C7zOF5+L7MJmU4GjdOARfNk9mkHyFFZq4grK+Sxr3QXKbp27DtfDBc9uqD4GUOYgxngfA==", + "dependencies": { + "@types/ws": "^8.5.4", + "discord-api-types": "^0.37.37", + "prism-media": "^1.3.5", + "tslib": "^2.5.0", + "ws": "^8.13.0" + }, + "engines": { + "node": ">=16.9.0" + } + }, "node_modules/@discordjs/ws": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.0.1.tgz", @@ -854,6 +951,97 @@ "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.50.tgz", "integrity": "sha512-X4CDiMnDbA3s3RaUXWXmgAIbY1uxab3fqe3qwzg5XutR3wjqi7M3IkgQbsIBzpqBN2YWr/Qdv7JrFRqSgb4TFg==" }, + "node_modules/@distube/soundcloud": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@distube/soundcloud/-/soundcloud-1.3.3.tgz", + "integrity": "sha512-nrO0LEQMPfokUk+rogJX15KUy4ckAce13UPLzzpckKbfTDn7eh3wUVd/bCn7jhqIPS3NO5qlVN0d0Qq6UqPDZg==", + "dependencies": { + "soundcloud.ts": "^0.5.2" + }, + "peerDependencies": { + "distube": "3||4" + } + }, + "node_modules/@distube/spotify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@distube/spotify/-/spotify-1.5.1.tgz", + "integrity": "sha512-89S2LaTefn88BoOs4Cy6mRC7mIgGjzc0d9/GKbyyDnWG7APSjC7JevJAC+R207btIl/+o/JozGeroIllJx1s3g==", + "dependencies": { + "spotify-uri": "^3.0.3", + "spotify-url-info": "^3.1.10", + "spotify-web-api-node": "^5.0.2", + "undici": "^5.14.0" + }, + "peerDependencies": { + "distube": "^3.3.1||4" + } + }, + "node_modules/@distube/yt-dlp": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@distube/yt-dlp/-/yt-dlp-1.1.3.tgz", + "integrity": "sha512-kInFaIgNK7bhUJwY5o/ejBpwHdtLEH9l/GPBl9G7ddMKFYx7/MA5vKZ2F3oZQVMq9pzphPMRpSGi4UBT9L6O2g==", + "hasInstallScript": true, + "dependencies": { + "dargs": "^7.0.0", + "execa": "^5.1.1", + "mkdirp": "^1.0.4", + "undici": "^5.7.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "distube": "3.x||4.x" + } + }, + "node_modules/@distube/ytdl-core": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@distube/ytdl-core/-/ytdl-core-4.13.0.tgz", + "integrity": "sha512-ZwH/PNsnca9jvZ6ypFtot8Po9WXUC9gW0iJduzrG3Zr+okGEGwaYE4w3mZ1GGNBe+0P5cmeIgQ9XkLfVKtORLA==", + "dependencies": { + "http-cookie-agent": "^5.0.4", + "m3u8stream": "^0.8.6", + "sax": "^1.2.4", + "tough-cookie": "^4.1.3", + "undici": "^5.23.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@distube/ytdl-core/node_modules/undici": { + "version": "5.24.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.24.0.tgz", + "integrity": "sha512-OKlckxBjFl0oXxcj9FU6oB8fDAaiRUq+D8jrFWGmOfI/gIyjk/IeS75LMzgYKUaeHzLUcYvf9bbJGSrUwTfwwQ==", + "dependencies": { + "busboy": "^1.6.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/@distube/ytpl": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@distube/ytpl/-/ytpl-1.1.5.tgz", + "integrity": "sha512-OXjXSpef682v9SuoK7xB9QJ06dX879Ki9jw50rEnbQ2rAQ4dRTg6A0ojx3FOsqJ17nQ5kJdO2Qh57Y9Gqcgngg==", + "dependencies": { + "miniget": "^4.2.3" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@distube/ytsr": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@distube/ytsr/-/ytsr-1.1.11.tgz", + "integrity": "sha512-erWiDh5qzzqKNOQkyrD38OT1RbL+SuE0WD2ygMb+CA/uTMajqt2rIGmnKqi1Viz0+4I82T81zlJDd814pVb3jQ==", + "dependencies": { + "miniget": "^4.2.3" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@esbuild-kit/cjs-loader": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz", @@ -2191,11 +2379,42 @@ "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==" }, + "node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/agent-base/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, "node_modules/ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -2242,6 +2461,23 @@ "node": ">= 8" } }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "node_modules/are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -2640,6 +2876,14 @@ "fsevents": "~2.3.2" } }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "engines": { + "node": ">=10" + } + }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -2682,6 +2926,14 @@ "simple-swizzle": "^0.2.2" } }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "bin": { + "color-support": "bin.js" + } + }, "node_modules/colorspace": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", @@ -2828,6 +3080,11 @@ "node": ">=12" } }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, "node_modules/content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -2860,6 +3117,11 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, + "node_modules/cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==" + }, "node_modules/copyfiles": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", @@ -2933,12 +3195,12 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "engines": { - "node": ">= 12" + "node": ">=8" } }, "node_modules/date-fns": { @@ -3000,6 +3262,11 @@ "node": ">=0.4.0" } }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, "node_modules/denque": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", @@ -3025,6 +3292,14 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "engines": { + "node": ">=8" + } + }, "node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -3095,6 +3370,55 @@ "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.50.tgz", "integrity": "sha512-X4CDiMnDbA3s3RaUXWXmgAIbY1uxab3fqe3qwzg5XutR3wjqi7M3IkgQbsIBzpqBN2YWr/Qdv7JrFRqSgb4TFg==" }, + "node_modules/distube": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/distube/-/distube-4.1.0.tgz", + "integrity": "sha512-i3+hBtN9pUsC5I2aikI6jNVNEZnXxDK3pBXI6MYyyccUA54bEhhpxHhVS6KqSj3xS4pIpb2YvkbcMKOCYGUVRQ==", + "funding": [ + { + "type": "individual", + "url": "https://paypal.me/Skickkk" + }, + { + "type": "patreon", + "url": "https://patreon.com/DisTube" + } + ], + "dependencies": { + "@distube/ytdl-core": "^4.12.1", + "@distube/ytpl": "^1.1.4", + "@distube/ytsr": "^1.1.10", + "prism-media": "npm:@distube/prism-media@latest", + "tiny-typed-emitter": "^2.1.0", + "tough-cookie": "^4.1.3", + "tslib": "^2.6.2", + "undici": "^5.23.0" + }, + "engines": { + "node": ">=16.9.0" + }, + "peerDependencies": { + "@discordjs/opus": "*", + "@discordjs/voice": "*", + "discord.js": "14" + }, + "peerDependenciesMeta": { + "@discordjs/opus": { + "optional": true + } + } + }, + "node_modules/distube/node_modules/undici": { + "version": "5.24.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.24.0.tgz", + "integrity": "sha512-OKlckxBjFl0oXxcj9FU6oB8fDAaiRUq+D8jrFWGmOfI/gIyjk/IeS75LMzgYKUaeHzLUcYvf9bbJGSrUwTfwwQ==", + "dependencies": { + "busboy": "^1.6.0" + }, + "engines": { + "node": ">=14.0" + } + }, "node_modules/dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", @@ -3166,8 +3490,7 @@ "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/enabled": { "version": "2.0.0", @@ -3458,12 +3781,85 @@ "node": ">=4.0.0" } }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/execa/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/execa/node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/execa/node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "engines": { - "node": ">=0.8.x" + "node": ">=8" + } + }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/execa/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, "node_modules/express": { @@ -3694,6 +4090,11 @@ "node": ">=8.6.0" } }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, "node_modules/fast-xml-parser": { "version": "4.2.5", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", @@ -3730,26 +4131,12 @@ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], + "node_modules/ffmpeg": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/ffmpeg/-/ffmpeg-0.0.4.tgz", + "integrity": "sha512-3TgWUJJlZGQn+crJFyhsO/oNeRRnGTy6GhgS98oUCIfZrOW5haPPV7DUfOm3xJcHr5q3TJpjk2GudPutrNisRA==", "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" + "when": ">= 0.0.1" } }, "node_modules/fill-range": { @@ -3839,15 +4226,13 @@ "node": ">= 6" } }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" + "node_modules/formidable": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", + "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==", + "deprecated": "Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau", + "funding": { + "url": "https://ko-fi.com/tunnckoCore/commissions" } }, "node_modules/forwarded": { @@ -3879,11 +4264,32 @@ "node": ">=14.14" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.2", @@ -3930,6 +4336,30 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gauge/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, "node_modules/generate-function": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", @@ -3961,6 +4391,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", @@ -3993,7 +4434,6 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -4167,6 +4607,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -4175,6 +4620,11 @@ "he": "bin/he" } }, + "node_modules/himalaya": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/himalaya/-/himalaya-1.1.0.tgz", + "integrity": "sha512-LLase1dHCRMel68/HZTFft0N0wti0epHr3nNY7ynpLbyZpmrKMQ8YIpiOV77TM97cNpC8Wb2n6f66IRggwdWPw==" + }, "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -4266,6 +4716,33 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" }, + "node_modules/http-cookie-agent": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/http-cookie-agent/-/http-cookie-agent-5.0.4.tgz", + "integrity": "sha512-OtvikW69RvfyP6Lsequ0fN5R49S+8QcS9zwd58k6VSr6r57T8G29BkPdyrBcSwLq6ExLs9V+rBlfxu7gDstJag==", + "dependencies": { + "agent-base": "^7.1.0" + }, + "engines": { + "node": ">=14.18.0 <15.0.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/3846masa" + }, + "peerDependencies": { + "deasync": "^0.1.26", + "tough-cookie": "^4.0.0", + "undici": "^5.11.0" + }, + "peerDependenciesMeta": { + "deasync": { + "optional": true + }, + "undici": { + "optional": true + } + } + }, "node_modules/http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -4281,6 +4758,58 @@ "node": ">= 0.8" } }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, "node_modules/humanize-duration": { "version": "3.29.0", "resolved": "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.29.0.tgz", @@ -4338,7 +4867,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -4485,7 +5013,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -4650,8 +5177,7 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/js-yaml": { "version": "4.1.0", @@ -4689,53 +5215,24 @@ "node": ">=12.0.0" } }, - "node_modules/kazagumo": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/kazagumo/-/kazagumo-2.3.2.tgz", - "integrity": "sha512-yC+k+yuwj9jb9/c1Wc57wvrAKe8wvnlyLYzUWC5tYeWAt5xap4JKxjJugrG2Q/2xKCq3UoIzTQw7AdKaxWbOHw==", - "dependencies": { - "events": "^3.3.0", - "shoukaku": "^3.2.2" - }, - "engines": { - "node": ">=16.5.0" - } - }, - "node_modules/kazagumo-deezer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/kazagumo-deezer/-/kazagumo-deezer-1.2.2.tgz", - "integrity": "sha512-WzM9PWAi3tvX8+WjuPTZQNIH36JWhxgFPvShHLASHatApBrRMO7omnnomoKvs29J51+MRRlz+uzVwCbVuCYUUw==", - "dependencies": { - "axios": "^1.1.3", - "discord.js": "^14.6.0", - "kazagumo": "^2.2.3" - } - }, - "node_modules/kazagumo-nico": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/kazagumo-nico/-/kazagumo-nico-1.1.5.tgz", - "integrity": "sha512-wrEgmlb1LIttCeGxU7MQhnVNMVBrTrx1ToOYwDd2f8t3eSCEnG4mLeOrCeLgIHgQzPpmWsUQmDnaSUxrvpAvvw==", - "dependencies": { - "axios": "^1.2.1", - "kazagumo": "^2.3.0", - "node-fetch": "^3.3.0", - "node-html-parser": "^6.1.4" - } - }, - "node_modules/kazagumo-spotify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/kazagumo-spotify/-/kazagumo-spotify-1.2.0.tgz", - "integrity": "sha512-+PBqh3nIhtGpx8/nLoM/Jw944CwSIhnqKm3JlYwKXxrJKCltoj7kS+DVloO2HfBaQwo3TSjjS/o9vqMB8NaOzA==", - "dependencies": { - "kazagumo": "^2.1.6", - "undici": "^5.5.1" - } - }, "node_modules/kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, + "node_modules/libsodium": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.13.tgz", + "integrity": "sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw==" + }, + "node_modules/libsodium-wrappers": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.13.tgz", + "integrity": "sha512-kasvDsEi/r1fMzKouIDv7B8I6vNmknXwGiYodErGuESoFTohGSKZplFtVxZqHaoQ217AynyIFgnOVRitpHs0Qw==", + "dependencies": { + "libsodium": "^0.7.13" + } + }, "node_modules/linkify-it": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", @@ -4846,11 +5343,45 @@ } } }, + "node_modules/m3u8stream": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.6.tgz", + "integrity": "sha512-LZj8kIVf9KCphiHmH7sbFQTVe4tOemb202fWwvJwR9W5ENW/1hxJN6ksAWGhQgSBSa3jyWhnjKU1Fw1GaOdbyA==", + "dependencies": { + "miniget": "^4.2.2", + "sax": "^1.2.4" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/magic-bytes.js": { "version": "1.0.15", "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.0.15.tgz", "integrity": "sha512-bpRmwbRHqongRhA+mXzbLWjVy7ylqmfMBYaQkSs6pac0z6hBTvsgrH0r4FBYd/UYVJBmS6Rp/O+oCCQVLzKV1g==" }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -4916,6 +5447,11 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -4976,6 +5512,22 @@ "node": ">= 0.6" } }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/miniget": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/miniget/-/miniget-4.2.3.tgz", + "integrity": "sha512-SjbDPDICJ1zT+ZvQwK0hUcRY4wxlhhNpHL9nJOB2MEAXRGagTljsO8MEDzQMTFf0Q8g4QNi8P9lEm/g7e+qgzA==", + "engines": { + "node": ">=12" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -4995,11 +5547,41 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -5228,49 +5810,10 @@ "tslib": "^2.0.3" } }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-fetch": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", - "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, - "node_modules/node-html-parser": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.5.tgz", - "integrity": "sha512-fAaM511feX++/Chnhe475a0NHD8M7AxDInsqQpz6x63GRF7xYNdS8Vo5dKsIVPgsOvG7eioRRTZQnWBrhDHBSg==", - "dependencies": { - "css-select": "^5.1.0", - "he": "1.2.0" - } + "node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" }, "node_modules/nodemon": { "version": "3.0.1", @@ -5426,6 +5969,36 @@ "node": ">=4" } }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -5437,6 +6010,14 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -5495,7 +6076,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -5508,6 +6088,20 @@ "fn.name": "1.x.x" } }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -5595,7 +6189,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -5709,6 +6302,31 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/prism-media": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.5.tgz", + "integrity": "sha512-IQdl0Q01m4LrkN1EGIE9lphov5Hy7WWlH6ulf5QdGePLlPas9p2mhgddTEHrlaXYjjFToM1/rWuwF37VF4taaA==", + "peerDependencies": { + "@discordjs/opus": ">=0.8.0 <1.0.0", + "ffmpeg-static": "^5.0.2 || ^4.2.7 || ^3.0.0 || ^2.4.0", + "node-opus": "^0.3.3", + "opusscript": "^0.0.8" + }, + "peerDependenciesMeta": { + "@discordjs/opus": { + "optional": true + }, + "ffmpeg-static": { + "optional": true + }, + "node-opus": { + "optional": true + }, + "opusscript": { + "optional": true + } + } + }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -5740,6 +6358,11 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, "node_modules/pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", @@ -5767,6 +6390,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5940,6 +6568,11 @@ "node": ">=0.10.0" } }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, "node_modules/resolve": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", @@ -5976,6 +6609,20 @@ "node": ">=0.10.0" } }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -6066,6 +6713,11 @@ "node": ">=6" } }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "node_modules/semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", @@ -6130,6 +6782,11 @@ "node": ">= 0.8.0" } }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -6146,55 +6803,23 @@ "engines": { "node": ">=0.10.0" } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/shoukaku": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/shoukaku/-/shoukaku-3.4.0.tgz", - "integrity": "sha512-IxkicImqMy7fu2QDXsQaqajR66oI2xL4FFEKaxIKLSPZTs/51ZlmsevnvwcZdABm+mfVkWFNQJotP1WcBeZ+Dg==", - "dependencies": { - "node-fetch": "^2.6.9", - "ws": "^8.13.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/shoukaku/node_modules/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/side-channel": { @@ -6387,6 +7012,14 @@ "npm": ">= 3.0.0" } }, + "node_modules/soundcloud.ts": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/soundcloud.ts/-/soundcloud.ts-0.5.2.tgz", + "integrity": "sha512-/pc72HWYJpSpup+mJBE9pT31JsrMcxJGBlip3Vem+0Fsscg98xh1/7I2nCpAKuMAeV6MVyrisI8TfjO6T7qKJg==", + "dependencies": { + "undici": "^5.22.1" + } + }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -6452,6 +7085,42 @@ "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", "dev": true }, + "node_modules/spotify-uri": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/spotify-uri/-/spotify-uri-3.0.4.tgz", + "integrity": "sha512-wtofZNzMjPXR1KD2/gw8F/7ng1QwxpfFbrVgcRaAh0oSJ6ZGC5ln+IBptIRuti1dYGOxJqEIvDc88ctLvTSWiQ==", + "engines": { + "node": ">= 16" + } + }, + "node_modules/spotify-url-info": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/spotify-url-info/-/spotify-url-info-3.2.6.tgz", + "integrity": "sha512-AOGU4uyT0FqyEXbyvZc+ZShnTGBY1eMd50BBZBPfiXPT4ihuzmxAmkWj9VzHT9NIjX7MtVDrszATllR8+WeFkw==", + "dependencies": { + "himalaya": "~1.1.0", + "spotify-uri": "~4.0.0" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/spotify-url-info/node_modules/spotify-uri": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spotify-uri/-/spotify-uri-4.0.0.tgz", + "integrity": "sha512-ZAJKcnfx73glWG+3SCDRvW4nkVMzA2hqZwJtSDZ/o87EoGawh/CZ8YkqZIoVcLkg94suicEa/ZOiBFSz1MJ6Pg==", + "engines": { + "node": ">= 16" + } + }, + "node_modules/spotify-web-api-node": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/spotify-web-api-node/-/spotify-web-api-node-5.0.2.tgz", + "integrity": "sha512-r82dRWU9PMimHvHEzL0DwEJrzFk+SMCVfq249SLt3I7EFez7R+jeoKQd+M1//QcnjqlXPs2am4DFsGk8/GCsrA==", + "dependencies": { + "superagent": "^6.1.0" + } + }, "node_modules/sqlstring": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", @@ -6496,7 +7165,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -6572,7 +7240,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -6589,6 +7256,14 @@ "node": ">=4" } }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, "node_modules/strnum": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", @@ -6615,6 +7290,87 @@ "node": ">=4.2.0" } }, + "node_modules/superagent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz", + "integrity": "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==", + "deprecated": "Please upgrade to v7.0.2+ of superagent. We have fixed numerous issues with streams, form-data, attach(), filesystem errors not bubbling up (ENOENT on attach()), and all tests are now passing. See the releases tab for more information at .", + "dependencies": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.2", + "debug": "^4.1.1", + "fast-safe-stringify": "^2.0.7", + "form-data": "^3.0.0", + "formidable": "^1.2.2", + "methods": "^1.1.2", + "mime": "^2.4.6", + "qs": "^6.9.4", + "readable-stream": "^3.6.0", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 7.0.0" + } + }, + "node_modules/superagent/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/superagent/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/superagent/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/superagent/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/superagent/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -6638,6 +7394,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/tar": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", @@ -6689,6 +7461,11 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/tiny-typed-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", + "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==" + }, "node_modules/to-array": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", @@ -6724,6 +7501,28 @@ "nodetouch": "bin/nodetouch.js" } }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -6925,6 +7724,15 @@ "node": ">=8" } }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/util": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", @@ -6989,14 +7797,6 @@ "resolved": "https://registry.npmjs.org/voucher-code-generator/-/voucher-code-generator-1.3.0.tgz", "integrity": "sha512-t4wnI91KC58LtjX2I0rJDhRm1JTXD+G7A+7iqp0sRSgpeJP4eKLexDRDLe2nedR7xFQcVlZudDZRBLrMP5+KTA==" }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "engines": { - "node": ">= 8" - } - }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -7011,6 +7811,11 @@ "webidl-conversions": "^3.0.0" } }, + "node_modules/when": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", + "integrity": "sha512-5cZ7mecD3eYcMiCH4wtRPA5iFJZ50BJYDfckI5RRpQiktMiYTcn0ccLTZOvcbBume+1304fQztxeNzNS9Gvrnw==" + }, "node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -7059,6 +7864,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "node_modules/winston": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/winston/-/winston-3.9.0.tgz", @@ -7118,8 +7931,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write-file-atomic": { "version": "5.0.1", @@ -7876,6 +8688,57 @@ } } }, + "@discordjs/node-pre-gyp": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.5.tgz", + "integrity": "sha512-YJOVVZ545x24mHzANfYoy0BJX5PDyeZlpiJjDkUBM/V/Ao7TFX9lcUvCN4nr0tbr5ubeaXxtEBILUrHtTphVeQ==", + "requires": { + "detect-libc": "^2.0.0", + "https-proxy-agent": "^5.0.0", + "make-dir": "^3.1.0", + "node-fetch": "^2.6.7", + "nopt": "^5.0.0", + "npmlog": "^5.0.1", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.11" + }, + "dependencies": { + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "requires": { + "abbrev": "1" + } + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "@discordjs/opus": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@discordjs/opus/-/opus-0.9.0.tgz", + "integrity": "sha512-NEE76A96FtQ5YuoAVlOlB3ryMPrkXbUCTQICHGKb8ShtjXyubGicjRMouHtP1RpuDdm16cDa+oI3aAMo1zQRUQ==", + "requires": { + "@discordjs/node-pre-gyp": "^0.4.5", + "node-addon-api": "^5.0.0" + } + }, "@discordjs/rest": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.0.1.tgz", @@ -7904,6 +8767,18 @@ "resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.0.1.tgz", "integrity": "sha512-d0N2yCxB8r4bn00/hvFZwM7goDcUhtViC5un4hPj73Ba4yrChLSJD8fy7Ps5jpTLg1fE9n4K0xBLc1y9WGwSsA==" }, + "@discordjs/voice": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@discordjs/voice/-/voice-0.16.0.tgz", + "integrity": "sha512-ToGCvHD1cBscuW3p+C7zOF5+L7MJmU4GjdOARfNk9mkHyFFZq4grK+Sxr3QXKbp27DtfDBc9uqD4GUOYgxngfA==", + "requires": { + "@types/ws": "^8.5.4", + "discord-api-types": "^0.37.37", + "prism-media": "^1.3.5", + "tslib": "^2.5.0", + "ws": "^8.13.0" + } + }, "@discordjs/ws": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.0.1.tgz", @@ -7927,6 +8802,74 @@ } } }, + "@distube/soundcloud": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@distube/soundcloud/-/soundcloud-1.3.3.tgz", + "integrity": "sha512-nrO0LEQMPfokUk+rogJX15KUy4ckAce13UPLzzpckKbfTDn7eh3wUVd/bCn7jhqIPS3NO5qlVN0d0Qq6UqPDZg==", + "requires": { + "soundcloud.ts": "^0.5.2" + } + }, + "@distube/spotify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@distube/spotify/-/spotify-1.5.1.tgz", + "integrity": "sha512-89S2LaTefn88BoOs4Cy6mRC7mIgGjzc0d9/GKbyyDnWG7APSjC7JevJAC+R207btIl/+o/JozGeroIllJx1s3g==", + "requires": { + "spotify-uri": "^3.0.3", + "spotify-url-info": "^3.1.10", + "spotify-web-api-node": "^5.0.2", + "undici": "^5.14.0" + } + }, + "@distube/yt-dlp": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@distube/yt-dlp/-/yt-dlp-1.1.3.tgz", + "integrity": "sha512-kInFaIgNK7bhUJwY5o/ejBpwHdtLEH9l/GPBl9G7ddMKFYx7/MA5vKZ2F3oZQVMq9pzphPMRpSGi4UBT9L6O2g==", + "requires": { + "dargs": "^7.0.0", + "execa": "^5.1.1", + "mkdirp": "^1.0.4", + "undici": "^5.7.0" + } + }, + "@distube/ytdl-core": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/@distube/ytdl-core/-/ytdl-core-4.13.0.tgz", + "integrity": "sha512-ZwH/PNsnca9jvZ6ypFtot8Po9WXUC9gW0iJduzrG3Zr+okGEGwaYE4w3mZ1GGNBe+0P5cmeIgQ9XkLfVKtORLA==", + "requires": { + "http-cookie-agent": "^5.0.4", + "m3u8stream": "^0.8.6", + "sax": "^1.2.4", + "tough-cookie": "^4.1.3", + "undici": "^5.23.0" + }, + "dependencies": { + "undici": { + "version": "5.24.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.24.0.tgz", + "integrity": "sha512-OKlckxBjFl0oXxcj9FU6oB8fDAaiRUq+D8jrFWGmOfI/gIyjk/IeS75LMzgYKUaeHzLUcYvf9bbJGSrUwTfwwQ==", + "requires": { + "busboy": "^1.6.0" + } + } + } + }, + "@distube/ytpl": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@distube/ytpl/-/ytpl-1.1.5.tgz", + "integrity": "sha512-OXjXSpef682v9SuoK7xB9QJ06dX879Ki9jw50rEnbQ2rAQ4dRTg6A0ojx3FOsqJ17nQ5kJdO2Qh57Y9Gqcgngg==", + "requires": { + "miniget": "^4.2.3" + } + }, + "@distube/ytsr": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@distube/ytsr/-/ytsr-1.1.11.tgz", + "integrity": "sha512-erWiDh5qzzqKNOQkyrD38OT1RbL+SuE0WD2ygMb+CA/uTMajqt2rIGmnKqi1Viz0+4I82T81zlJDd814pVb3jQ==", + "requires": { + "miniget": "^4.2.3" + } + }, "@esbuild-kit/cjs-loader": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@esbuild-kit/cjs-loader/-/cjs-loader-2.4.2.tgz", @@ -8926,11 +9869,33 @@ "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==" }, + "agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "requires": { + "debug": "^4.3.4" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "4.3.0", @@ -8964,6 +9929,20 @@ "picomatch": "^2.0.4" } }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + }, + "are-we-there-yet": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", + "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", @@ -9261,6 +10240,11 @@ "readdirp": "~3.6.0" } }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + }, "cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -9303,6 +10287,11 @@ "simple-swizzle": "^0.2.2" } }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + }, "colorspace": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", @@ -9417,6 +10406,11 @@ } } }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" + }, "content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -9440,6 +10434,11 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, + "cookiejar": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz", + "integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==" + }, "copyfiles": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", @@ -9497,10 +10496,10 @@ "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" }, - "data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==" + "dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==" }, "date-fns": { "version": "2.30.0", @@ -9539,6 +10538,11 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" + }, "denque": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", @@ -9554,6 +10558,11 @@ "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" }, + "detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==" + }, "diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", @@ -9611,6 +10620,31 @@ } } }, + "distube": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/distube/-/distube-4.1.0.tgz", + "integrity": "sha512-i3+hBtN9pUsC5I2aikI6jNVNEZnXxDK3pBXI6MYyyccUA54bEhhpxHhVS6KqSj3xS4pIpb2YvkbcMKOCYGUVRQ==", + "requires": { + "@distube/ytdl-core": "^4.12.1", + "@distube/ytpl": "^1.1.4", + "@distube/ytsr": "^1.1.10", + "prism-media": "npm:@distube/prism-media@latest", + "tiny-typed-emitter": "^2.1.0", + "tough-cookie": "^4.1.3", + "tslib": "^2.6.2", + "undici": "^5.23.0" + }, + "dependencies": { + "undici": { + "version": "5.24.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.24.0.tgz", + "integrity": "sha512-OKlckxBjFl0oXxcj9FU6oB8fDAaiRUq+D8jrFWGmOfI/gIyjk/IeS75LMzgYKUaeHzLUcYvf9bbJGSrUwTfwwQ==", + "requires": { + "busboy": "^1.6.0" + } + } + } + }, "dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", @@ -9658,8 +10692,7 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "enabled": { "version": "2.0.0", @@ -9892,11 +10925,65 @@ "nan": "^2.14.0" } }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "express": { "version": "4.18.2", "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", @@ -10075,6 +11162,11 @@ "micromatch": "^4.0.4" } }, + "fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + }, "fast-xml-parser": { "version": "4.2.5", "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.5.tgz", @@ -10098,13 +11190,12 @@ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" }, - "fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "ffmpeg": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/ffmpeg/-/ffmpeg-0.0.4.tgz", + "integrity": "sha512-3TgWUJJlZGQn+crJFyhsO/oNeRRnGTy6GhgS98oUCIfZrOW5haPPV7DUfOm3xJcHr5q3TJpjk2GudPutrNisRA==", "requires": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" + "when": ">= 0.0.1" } }, "fill-range": { @@ -10173,13 +11264,10 @@ "mime-types": "^2.1.12" } }, - "formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "requires": { - "fetch-blob": "^3.1.2" - } + "formidable": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz", + "integrity": "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==" }, "forwarded": { "version": "0.2.0", @@ -10201,11 +11289,28 @@ "universalify": "^2.0.0" } }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "requires": { + "minipass": "^3.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + } + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "fsevents": { "version": "2.3.2", @@ -10236,6 +11341,29 @@ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, + "gauge": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz", + "integrity": "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==", + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.2" + }, + "dependencies": { + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + } + } + }, "generate-function": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", @@ -10261,6 +11389,11 @@ "has-symbols": "^1.0.3" } }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, "get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", @@ -10284,7 +11417,6 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10404,11 +11536,21 @@ "has-symbols": "^1.0.2" } }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" + }, "he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" }, + "himalaya": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/himalaya/-/himalaya-1.1.0.tgz", + "integrity": "sha512-LLase1dHCRMel68/HZTFft0N0wti0epHr3nNY7ynpLbyZpmrKMQ8YIpiOV77TM97cNpC8Wb2n6f66IRggwdWPw==" + }, "hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", @@ -10489,6 +11631,14 @@ } } }, + "http-cookie-agent": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/http-cookie-agent/-/http-cookie-agent-5.0.4.tgz", + "integrity": "sha512-OtvikW69RvfyP6Lsequ0fN5R49S+8QcS9zwd58k6VSr6r57T8G29BkPdyrBcSwLq6ExLs9V+rBlfxu7gDstJag==", + "requires": { + "agent-base": "^7.1.0" + } + }, "http-errors": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", @@ -10501,6 +11651,43 @@ "toidentifier": "1.0.1" } }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + }, + "dependencies": { + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + }, "humanize-duration": { "version": "3.29.0", "resolved": "https://registry.npmjs.org/humanize-duration/-/humanize-duration-3.29.0.tgz", @@ -10538,7 +11725,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -10645,8 +11831,7 @@ "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-glob": { "version": "4.0.3", @@ -10754,8 +11939,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "js-yaml": { "version": "4.1.0", @@ -10785,50 +11969,24 @@ "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==" }, - "kazagumo": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/kazagumo/-/kazagumo-2.3.2.tgz", - "integrity": "sha512-yC+k+yuwj9jb9/c1Wc57wvrAKe8wvnlyLYzUWC5tYeWAt5xap4JKxjJugrG2Q/2xKCq3UoIzTQw7AdKaxWbOHw==", - "requires": { - "events": "^3.3.0", - "shoukaku": "^3.2.2" - } - }, - "kazagumo-deezer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/kazagumo-deezer/-/kazagumo-deezer-1.2.2.tgz", - "integrity": "sha512-WzM9PWAi3tvX8+WjuPTZQNIH36JWhxgFPvShHLASHatApBrRMO7omnnomoKvs29J51+MRRlz+uzVwCbVuCYUUw==", - "requires": { - "axios": "^1.1.3", - "discord.js": "^14.6.0", - "kazagumo": "^2.2.3" - } - }, - "kazagumo-nico": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/kazagumo-nico/-/kazagumo-nico-1.1.5.tgz", - "integrity": "sha512-wrEgmlb1LIttCeGxU7MQhnVNMVBrTrx1ToOYwDd2f8t3eSCEnG4mLeOrCeLgIHgQzPpmWsUQmDnaSUxrvpAvvw==", - "requires": { - "axios": "^1.2.1", - "kazagumo": "^2.3.0", - "node-fetch": "^3.3.0", - "node-html-parser": "^6.1.4" - } - }, - "kazagumo-spotify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/kazagumo-spotify/-/kazagumo-spotify-1.2.0.tgz", - "integrity": "sha512-+PBqh3nIhtGpx8/nLoM/Jw944CwSIhnqKm3JlYwKXxrJKCltoj7kS+DVloO2HfBaQwo3TSjjS/o9vqMB8NaOzA==", - "requires": { - "kazagumo": "^2.1.6", - "undici": "^5.5.1" - } - }, "kuler": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==" }, + "libsodium": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/libsodium/-/libsodium-0.7.13.tgz", + "integrity": "sha512-mK8ju0fnrKXXfleL53vtp9xiPq5hKM0zbDQtcxQIsSmxNgSxqCj6R7Hl9PkrNe2j29T4yoDaF7DJLK9/i5iWUw==" + }, + "libsodium-wrappers": { + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.13.tgz", + "integrity": "sha512-kasvDsEi/r1fMzKouIDv7B8I6vNmknXwGiYodErGuESoFTohGSKZplFtVxZqHaoQ217AynyIFgnOVRitpHs0Qw==", + "requires": { + "libsodium": "^0.7.13" + } + }, "linkify-it": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-4.0.1.tgz", @@ -10921,11 +12079,35 @@ } } }, + "m3u8stream": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.6.tgz", + "integrity": "sha512-LZj8kIVf9KCphiHmH7sbFQTVe4tOemb202fWwvJwR9W5ENW/1hxJN6ksAWGhQgSBSa3jyWhnjKU1Fw1GaOdbyA==", + "requires": { + "miniget": "^4.2.2", + "sax": "^1.2.4" + } + }, "magic-bytes.js": { "version": "1.0.15", "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.0.15.tgz", "integrity": "sha512-bpRmwbRHqongRhA+mXzbLWjVy7ylqmfMBYaQkSs6pac0z6hBTvsgrH0r4FBYd/UYVJBmS6Rp/O+oCCQVLzKV1g==" }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==" + } + } + }, "make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -10978,6 +12160,11 @@ "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -11017,6 +12204,16 @@ "mime-db": "1.52.0" } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "miniget": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/miniget/-/miniget-4.2.3.tgz", + "integrity": "sha512-SjbDPDICJ1zT+ZvQwK0hUcRY4wxlhhNpHL9nJOB2MEAXRGagTljsO8MEDzQMTFf0Q8g4QNi8P9lEm/g7e+qgzA==" + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -11030,11 +12227,34 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" }, + "minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==" + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "requires": { + "yallist": "^4.0.0" + } + } + } + }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, "moment": { "version": "2.29.4", @@ -11209,29 +12429,10 @@ "tslib": "^2.0.3" } }, - "node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" - }, - "node-fetch": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", - "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", - "requires": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - } - }, - "node-html-parser": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.5.tgz", - "integrity": "sha512-fAaM511feX++/Chnhe475a0NHD8M7AxDInsqQpz6x63GRF7xYNdS8Vo5dKsIVPgsOvG7eioRRTZQnWBrhDHBSg==", - "requires": { - "css-select": "^5.1.0", - "he": "1.2.0" - } + "node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" }, "nodemon": { "version": "3.0.1", @@ -11354,6 +12555,32 @@ } } }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" + }, + "dependencies": { + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + } + } + }, + "npmlog": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz", + "integrity": "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==", + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, "nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -11362,6 +12589,11 @@ "boolbase": "^1.0.0" } }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, "object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -11402,7 +12634,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "requires": { "wrappy": "1" } @@ -11415,6 +12646,14 @@ "fn.name": "1.x.x" } }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -11483,8 +12722,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "path-key": { "version": "2.0.1", @@ -11562,6 +12800,12 @@ "parse-ms": "^3.0.0" } }, + "prism-media": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.3.5.tgz", + "integrity": "sha512-IQdl0Q01m4LrkN1EGIE9lphov5Hy7WWlH6ulf5QdGePLlPas9p2mhgddTEHrlaXYjjFToM1/rWuwF37VF4taaA==", + "requires": {} + }, "process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -11587,6 +12831,11 @@ "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, "pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", @@ -11605,6 +12854,11 @@ "side-channel": "^1.0.4" } }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -11727,6 +12981,11 @@ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, "resolve": { "version": "1.22.2", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", @@ -11750,6 +13009,14 @@ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, "run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -11803,6 +13070,11 @@ "sparse-bitfield": "^3.0.3" } }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, "semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", @@ -11862,6 +13134,11 @@ "send": "0.18.0" } }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, "setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -11888,25 +13165,6 @@ "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true }, - "shoukaku": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/shoukaku/-/shoukaku-3.4.0.tgz", - "integrity": "sha512-IxkicImqMy7fu2QDXsQaqajR66oI2xL4FFEKaxIKLSPZTs/51ZlmsevnvwcZdABm+mfVkWFNQJotP1WcBeZ+Dg==", - "requires": { - "node-fetch": "^2.6.9", - "ws": "^8.13.0" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", - "requires": { - "whatwg-url": "^5.0.0" - } - } - } - }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -12064,6 +13322,14 @@ "smart-buffer": "^4.2.0" } }, + "soundcloud.ts": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/soundcloud.ts/-/soundcloud.ts-0.5.2.tgz", + "integrity": "sha512-/pc72HWYJpSpup+mJBE9pT31JsrMcxJGBlip3Vem+0Fsscg98xh1/7I2nCpAKuMAeV6MVyrisI8TfjO6T7qKJg==", + "requires": { + "undici": "^5.22.1" + } + }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -12126,6 +13392,35 @@ "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", "dev": true }, + "spotify-uri": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/spotify-uri/-/spotify-uri-3.0.4.tgz", + "integrity": "sha512-wtofZNzMjPXR1KD2/gw8F/7ng1QwxpfFbrVgcRaAh0oSJ6ZGC5ln+IBptIRuti1dYGOxJqEIvDc88ctLvTSWiQ==" + }, + "spotify-url-info": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/spotify-url-info/-/spotify-url-info-3.2.6.tgz", + "integrity": "sha512-AOGU4uyT0FqyEXbyvZc+ZShnTGBY1eMd50BBZBPfiXPT4ihuzmxAmkWj9VzHT9NIjX7MtVDrszATllR8+WeFkw==", + "requires": { + "himalaya": "~1.1.0", + "spotify-uri": "~4.0.0" + }, + "dependencies": { + "spotify-uri": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spotify-uri/-/spotify-uri-4.0.0.tgz", + "integrity": "sha512-ZAJKcnfx73glWG+3SCDRvW4nkVMzA2hqZwJtSDZ/o87EoGawh/CZ8YkqZIoVcLkg94suicEa/ZOiBFSz1MJ6Pg==" + } + } + }, + "spotify-web-api-node": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/spotify-web-api-node/-/spotify-web-api-node-5.0.2.tgz", + "integrity": "sha512-r82dRWU9PMimHvHEzL0DwEJrzFk+SMCVfq249SLt3I7EFez7R+jeoKQd+M1//QcnjqlXPs2am4DFsGk8/GCsrA==", + "requires": { + "superagent": "^6.1.0" + } + }, "sqlstring": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", @@ -12158,7 +13453,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -12213,7 +13507,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -12224,6 +13517,11 @@ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, "strnum": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", @@ -12245,6 +13543,62 @@ } } }, + "superagent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz", + "integrity": "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==", + "requires": { + "component-emitter": "^1.3.0", + "cookiejar": "^2.1.2", + "debug": "^4.1.1", + "fast-safe-stringify": "^2.0.7", + "form-data": "^3.0.0", + "formidable": "^1.2.2", + "methods": "^1.1.2", + "mime": "^2.4.6", + "qs": "^6.9.4", + "readable-stream": "^3.6.0", + "semver": "^7.3.2" + }, + "dependencies": { + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -12259,6 +13613,19 @@ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "tar": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, "text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", @@ -12312,6 +13679,11 @@ } } }, + "tiny-typed-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", + "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==" + }, "to-array": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", @@ -12338,6 +13710,24 @@ "nopt": "~1.0.10" } }, + "tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "dependencies": { + "universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==" + } + } + }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -12475,6 +13865,15 @@ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true }, + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "util": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", @@ -12532,11 +13931,6 @@ "resolved": "https://registry.npmjs.org/voucher-code-generator/-/voucher-code-generator-1.3.0.tgz", "integrity": "sha512-t4wnI91KC58LtjX2I0rJDhRm1JTXD+G7A+7iqp0sRSgpeJP4eKLexDRDLe2nedR7xFQcVlZudDZRBLrMP5+KTA==" }, - "web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" - }, "webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -12551,6 +13945,11 @@ "webidl-conversions": "^3.0.0" } }, + "when": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", + "integrity": "sha512-5cZ7mecD3eYcMiCH4wtRPA5iFJZ50BJYDfckI5RRpQiktMiYTcn0ccLTZOvcbBume+1304fQztxeNzNS9Gvrnw==" + }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -12587,6 +13986,14 @@ "is-typed-array": "^1.1.10" } }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, "winston": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/winston/-/winston-3.9.0.tgz", @@ -12634,8 +14041,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "write-file-atomic": { "version": "5.0.1", diff --git a/package.json b/package.json index d3122b63..27e09766 100644 --- a/package.json +++ b/package.json @@ -34,6 +34,11 @@ }, "homepage": "https://github.com/RainyXeon/ByteBlaze#readme", "dependencies": { + "@discordjs/opus": "^0.9.0", + "@discordjs/voice": "^0.16.0", + "@distube/soundcloud": "^1.3.3", + "@distube/spotify": "^1.5.1", + "@distube/yt-dlp": "^1.1.3", "@hammerhq/localization": "^0.1.5", "axios": "^1.4.0", "chalk": "^4.1.2", @@ -43,18 +48,17 @@ "discord-api-types": "^0.37.53", "discord-hybrid-sharding": "^2.1.3", "discord.js": "^14.13.0", + "distube": "^4.1.0", "esm": "^3.2.25", "express": "^4.18.2", "express-cluster": "^0.0.5", "express-status-monitor": "^1.3.4", "express-ws": "^5.0.2", + "ffmpeg": "^0.0.4", "fs-extra": "^11.1.1", "humanize-duration": "^3.29.0", "js-yaml": "^4.1.0", - "kazagumo": "^2.3.2", - "kazagumo-deezer": "^1.2.2", - "kazagumo-nico": "^1.1.5", - "kazagumo-spotify": "^1.2.0", + "libsodium-wrappers": "^0.7.13", "lodash": "^4.17.21", "lyric-api": "^1.0.1", "lyrics-finder": "^21.7.0", @@ -68,7 +72,6 @@ "pretty-ms": "^8.0.0", "quick.db": "^9.1.7", "recursive-readdir": "^2.2.3", - "shoukaku": "^3.4.0", "slyrics": "^0.1.42", "stuffs": "^0.1.27", "voucher-code-generator": "^1.3.0", diff --git a/src/database/setup/lavalink.ts b/src/database/setup/lavalink.ts index a5137b35..cfc71afc 100644 --- a/src/database/setup/lavalink.ts +++ b/src/database/setup/lavalink.ts @@ -1,5 +1,6 @@ import chalk from "chalk"; import { Manager } from "../../manager.js"; +import { VoiceChannel } from "discord.js" export default async (client: Manager) => { const lavalink = chalk.hex("#ffc61c"); @@ -32,12 +33,7 @@ export default async (client: Manager) => { const channel = client.channels.cache.get(data.text); const voice = client.channels.cache.get(data.voice); if (!channel || !voice) return client.db.delete(`autoreconnect.${key}`); - await client.manager.createPlayer({ - guildId: data.guild, - voiceId: data.voice, - textId: data.text, - deaf: true, - }); + await client.manager.voices.join(voice as VoiceChannel) }), index * 5000; }); diff --git a/src/manager.ts b/src/manager.ts index 5eaefa58..5195ca62 100644 --- a/src/manager.ts +++ b/src/manager.ts @@ -13,11 +13,10 @@ import { resolve } from "path"; import { LavalinkDataType, LavalinkUsingDataType } from "./types/Lavalink.js"; import * as configData from "./plugins/config.js"; import winstonLogger from "./plugins/logger.js"; -import Spotify from "kazagumo-spotify"; -import Deezer from "kazagumo-deezer"; -import Nico from "kazagumo-nico"; -import { Connectors } from "shoukaku"; -import { Kazagumo, KazagumoPlayer, Plugins } from "kazagumo"; +import { DisTube } from 'distube' +import { SpotifyPlugin } from '@distube/spotify' +import { SoundCloudPlugin } from '@distube/soundcloud' +import { YtDlpPlugin } from '@distube/yt-dlp' import { join, dirname } from "path"; import { fileURLToPath } from "url"; import { QuickDB } from "quick.db"; @@ -44,7 +43,7 @@ export class Manager extends Client { lavalink_using: LavalinkUsingDataType[]; fixing_nodes: boolean; used_lavalink: LavalinkUsingDataType[]; - manager: Kazagumo; + manager: DisTube; slash: Collection; commands: Collection; premiums: Collection; @@ -52,8 +51,8 @@ export class Manager extends Client { sent_queue: Collection; aliases: Collection; websocket?: WebSocket; - UpdateMusic!: (player: KazagumoPlayer) => Promise>; - UpdateQueueMsg!: (player: KazagumoPlayer) => Promise>; + UpdateMusic!: (player: any) => Promise>; + UpdateQueueMsg!: (player: any) => Promise>; enSwitch!: ActionRowBuilder; diSwitch!: ActionRowBuilder; is_db_connected: boolean; @@ -129,63 +128,44 @@ export class Manager extends Client { process.exit(); } - this.manager = new Kazagumo( - { - defaultSearchEngine: "youtube", - // MAKE SURE YOU HAVE THIS - send: (guildId, payload) => { - const guild = this.guilds.cache.get(guildId); - if (guild) guild.shard.send(payload); - }, - plugins: this.config.lavalink.ENABLE_SPOTIFY - ? [ - new Spotify({ - clientId: this.config.SPOTIFY_ID, - clientSecret: this.config.SPOTIFY_SECRET, - playlistPageLimit: 1, // optional ( 100 tracks per page ) - albumPageLimit: 1, // optional ( 50 tracks per page ) - searchLimit: 10, // optional ( track search limit. Max 50 ) - searchMarket: "US", // optional || default: US ( Enter the country you live in. [ Can only be of 2 letters. For eg: US, IN, EN ] )// - }), - new Deezer(), - new Nico({ searchLimit: 10 }), - new Plugins.PlayerMoved(this), - ] - : [ - new Deezer(), - new Nico({ searchLimit: 10 }), - new Plugins.PlayerMoved(this), - ], - }, - new Connectors.DiscordJS(this), - this.config.lavalink.NODES, - this.config.features.AUTOFIX_LAVALINK - ? { reconnectTries: 0, restTimeout: 3000 } - : this.config.lavalink.SHOUKAKU_OPTIONS, - ); + this.manager = new DisTube(this, { + leaveOnStop: false, + emitNewSongOnly: true, + emitAddSongWhenCreatingQueue: false, + emitAddListWhenCreatingQueue: false, + plugins: [ + new SpotifyPlugin({ + emitEventsAfterFetching: true + }), + new SoundCloudPlugin(), + new YtDlpPlugin() + ] + }) - if (this.config.features.AUTOFIX_LAVALINK) { - check_lavalink_server(this); - setInterval(async () => { - check_lavalink_server(this); - }, 1800000); - } + console.log(this.manager) - if (this.config.features.WEB_SERVER.enable) { - WebServer(this); - } - const loadFile = [ - "loadEvents.js", - "loadNodeEvents.js", - "loadPlayer.js", - "loadWebsocket.js", - "loadCommand.js", - ]; - if (!this.config.features.WEB_SERVER.websocket.enable) - loadFile.splice(loadFile.indexOf("loadWebsocket.js"), 1); - loadFile.forEach(async (x) => { - (await import(`./handlers/${x}`)).default(this); - }); + // if (this.config.features.AUTOFIX_LAVALINK) { + // check_lavalink_server(this); + // setInterval(async () => { + // check_lavalink_server(this); + // }, 1800000); + // } + + // if (this.config.features.WEB_SERVER.enable) { + // WebServer(this); + // } + // const loadFile = [ + // "loadEvents.js", + // "loadNodeEvents.js", + // "loadPlayer.js", + // "loadWebsocket.js", + // "loadCommand.js", + // ]; + // if (!this.config.features.WEB_SERVER.websocket.enable) + // loadFile.splice(loadFile.indexOf("loadWebsocket.js"), 1); + // loadFile.forEach(async (x) => { + // (await import(`./handlers/${x}`)).default(this); + // }); connectDB(this); } From b5542043a38754a74c5035f607db82d8dd798993 Mon Sep 17 00:00:00 2001 From: XeonE52680v3 Date: Sun, 17 Sep 2023 20:15:37 +0700 Subject: [PATCH 2/3] Remove fix lavalink --- src/events/node/close.ts | 18 ----- src/events/node/disconnect.ts | 19 ----- src/events/node/error.ts | 11 --- src/events/node/ready.ts | 22 ------ src/lava_scrap/autofix_lavalink.ts | 73 ------------------- src/lava_scrap/check_lavalink_server.ts | 62 ---------------- src/lava_scrap/get_lavalink_server.ts | 94 ------------------------- src/manager.ts | 1 - 8 files changed, 300 deletions(-) delete mode 100644 src/events/node/close.ts delete mode 100644 src/events/node/disconnect.ts delete mode 100644 src/events/node/error.ts delete mode 100644 src/events/node/ready.ts delete mode 100644 src/lava_scrap/autofix_lavalink.ts delete mode 100644 src/lava_scrap/check_lavalink_server.ts delete mode 100644 src/lava_scrap/get_lavalink_server.ts diff --git a/src/events/node/close.ts b/src/events/node/close.ts deleted file mode 100644 index 770abed0..00000000 --- a/src/events/node/close.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { Manager } from "../../manager.js"; - -export default async ( - client: Manager, - name: string, - code: number, - reason: string, -) => { - if (client.used_lavalink.length != 0 && client.used_lavalink[0].name == name) - return; - client.logger.debug( - `Lavalink ${name}: Closed, Code ${code}, Reason ${reason || "No reason"}`, - ); - if (client.config.features.AUTOFIX_LAVALINK && !client.fixing_nodes) { - client.fixing_nodes = true; - (await import("../../lava_scrap/autofix_lavalink.js")).default(client); - } -}; diff --git a/src/events/node/disconnect.ts b/src/events/node/disconnect.ts deleted file mode 100644 index 90824c22..00000000 --- a/src/events/node/disconnect.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { KazagumoPlayer } from "kazagumo"; -import { Manager } from "../../manager.js"; - -export default async ( - client: Manager, - name: string, - players: KazagumoPlayer[], - moved: boolean, -) => { - if (moved) return; - if (client.used_lavalink.length != 0 && client.used_lavalink[0].name == name) - return; - if (players) players.map((player: KazagumoPlayer) => player.destroy()); - client.logger.debug(`Lavalink ${name}: Disconnected`); - if (client.config.features.AUTOFIX_LAVALINK && !client.fixing_nodes) { - client.fixing_nodes = true; - (await import("../../lava_scrap/autofix_lavalink.js")).default(client); - } -}; diff --git a/src/events/node/error.ts b/src/events/node/error.ts deleted file mode 100644 index 61b34dd4..00000000 --- a/src/events/node/error.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Manager } from "../../manager.js"; - -export default async (client: Manager, name: string, error: Error) => { - if (client.used_lavalink.length != 0 && client.used_lavalink[0].name == name) - return; - client.logger.debug(`Lavalink "${name}" error ${error}`); - if (client.config.features.AUTOFIX_LAVALINK && !client.fixing_nodes) { - client.fixing_nodes = true; - (await import("../../lava_scrap/autofix_lavalink.js")).default(client); - } -}; diff --git a/src/events/node/ready.ts b/src/events/node/ready.ts deleted file mode 100644 index 8e64e40d..00000000 --- a/src/events/node/ready.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Manager } from "../../manager.js"; -const regex = - /^(wss?|ws?:\/\/)([0-9]{1,3}(?:\.[0-9]{1,3}){3}|[^\/]+):([0-9]{1,5})$/; - -export default async (client: Manager, name: string) => { - if (client.used_lavalink.length != 0 && client.used_lavalink[0].name == name) - return; - client.fixing_nodes = false; - - client.manager.shoukaku.nodes.forEach((data, index) => { - const res = regex.exec(data["url"]); - client.lavalink_using.push({ - host: res![2], - port: Number(res![3]), - pass: data["auth"], - secure: res![1] == "ws://" ? false : true, - name: index, - }); - }); - - client.logger.info(`Lavalink [${name}] connected.`); -}; diff --git a/src/lava_scrap/autofix_lavalink.ts b/src/lava_scrap/autofix_lavalink.ts deleted file mode 100644 index 3fe85f62..00000000 --- a/src/lava_scrap/autofix_lavalink.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { Manager } from "../manager.js"; -const regex = - /^(wss?|ws?:\/\/)([0-9]{1,3}(?:\.[0-9]{1,3}){3}|[^\/]+):([0-9]{1,5})$/; - -async function check_lavalink(client: Manager) { - if ( - client.manager.shoukaku.nodes.size !== 0 && - client.lavalink_using.length == 0 - ) { - client.manager.shoukaku.nodes.forEach((data, index) => { - const res = regex.exec(data["url"]); - client.lavalink_using.push({ - host: res![2], - port: Number(res![3]), - pass: data["auth"], - secure: res![1] == "ws://" ? false : true, - name: index, - }); - }); - } - - // Remove current - - if ( - client.manager.shoukaku.nodes.size == 0 && - client.lavalink_using.length != 0 - ) { - client.used_lavalink.push(client.lavalink_using[0]); - client.lavalink_using.splice(0, 1); - } else if ( - client.manager.shoukaku.nodes.size !== 0 && - client.lavalink_using.length !== 0 - ) { - client.used_lavalink.push(client.lavalink_using[0]); - await client.manager.shoukaku.removeNode(client.lavalink_using[0].name); - client.lavalink_using.splice(0, 1); - } - - // Fix when have lavalink - const online_list: any = []; - - client.lavalink_list.filter(async (data) => { - if (data.online == true) return online_list.push(data); - }); - - const node_info = online_list[Math.floor(Math.random() * online_list.length)]; - - const new_node_info = { - name: `${node_info.host}:${node_info.port}`, - url: `${node_info.host}:${node_info.port}`, - auth: node_info.pass, - secure: node_info.secure, - }; - - await client.manager.shoukaku.addNode(new_node_info); - - client.lavalink_using.push({ - host: node_info.host, - port: node_info.port, - pass: node_info.pass, - secure: node_info.secure, - name: `${node_info.host}:${node_info.port}`, - }); -} - -export default async (client: Manager) => { - client.logger.lavalink("----- Starting autofix lavalink... -----"); - if (client.lavalink_list.length == 0) - (await import("./check_lavalink_server.js")).default(client).then(() => { - return check_lavalink(client); - }); - else return check_lavalink(client); -}; diff --git a/src/lava_scrap/check_lavalink_server.ts b/src/lava_scrap/check_lavalink_server.ts deleted file mode 100644 index d74d6a06..00000000 --- a/src/lava_scrap/check_lavalink_server.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { Manager } from "../manager.js"; -import { Headers } from "../types/Lavalink.js"; -import getLavalinkServer from "./get_lavalink_server.js"; -import Websocket from "ws"; - -export default async (client: Manager) => { - client.logger.lavalink( - "Running check lavalink server from [https://lavalink.darrennathanael.com/] source", - ); - - const lavalink_data = await getLavalinkServer(); - - function checkServerStatus(url: string, headers: Headers) { - return new Promise((resolve, reject) => { - const ws = new Websocket(url, { headers }); - ws.onopen = () => { - resolve(ws.readyState); - ws.close(); - }; - ws.onerror = (e) => { - reject(e); - }; - }); - } - - if (client.lavalink_list.length !== 0) client.lavalink_list.length = 0; - - for (let i = 0; i < lavalink_data!.length; i++) { - const config = lavalink_data![i]; - let headers = { - "Client-Name": "shoukakubot/3.3.1 (https://github.com/Deivu/Shoukaku)", - "User-Agent": "shoukakubot/3.3.1 (https://github.com/Deivu/Shoukaku)", - Authorization: config.pass, - "User-Id": "977148321682575410", - "Resume-Key": "Shoukaku@3.3.1(https://github.com/Deivu/Shoukaku)", - }; - - const url = `ws://${config.host}:${config.port}/v3/websocket`; - - checkServerStatus(url, headers) - .then((val) => { - client.lavalink_list.push({ - host: config.host, - port: config.port, - pass: config.pass, - secure: config.secure, - name: `${config.host}:${config.port}`, - online: true, - }); - }) - .catch((err) => { - client.lavalink_list.push({ - host: config.host, - port: config.port, - pass: config.pass, - secure: config.secure, - name: `${config.host}:${config.port}`, - online: false, - }); - }); - } -}; diff --git a/src/lava_scrap/get_lavalink_server.ts b/src/lava_scrap/get_lavalink_server.ts deleted file mode 100644 index ecc2195a..00000000 --- a/src/lava_scrap/get_lavalink_server.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { LavalinkDataType } from "../types/Lavalink.js"; -import axios from "axios"; -import MarkdownIt from "markdown-it"; -var md = new MarkdownIt(); -import fse from "fs-extra"; -import logger from "../plugins/logger.js"; -import Token from "markdown-it/lib/token.js"; - -function parseBoolean(value: string) { - if (typeof value === "string") { - value = value.trim().toLowerCase(); - } - switch (value) { - case "true": - return true; - default: - return false; - } -} - -export default async () => { - let filter_data: string[] = []; - let filter_data_2: string[] = []; - let final_data: LavalinkDataType[] = []; - - function getLavalinkServerInfo(data: string) { - var result = md.parse(data, ""); - - result.filter(async (data: Token) => { - if (data.tag == "code") { - filter_data.push(data.content); - } - }); - - for (let i = 0; i < filter_data.length; i++) { - const element = filter_data[i]; - // Phrase data - const res = element.replace(/\n/g, ""); - const res2 = res.replace(/\s+/g, ""); - const res3 = res2.replace(/Host/g, ""); - const res4 = res3.replace(/Port/g, ""); - const res5 = res4.replace(/Password/g, ""); - const res6 = res5.replace(/Secure/g, ""); - const res7 = res6.replace(/[&\/\\#,+()$~%'"*?<>{}]/g, ""); - filter_data_2.push(res7); - } - - for (let i = 0; i < filter_data_2.length; i++) { - const regex_extract = - /:(.{0,99999}):([0-9]{0,99999}):(.{0,99999}):(false|true)/; - const element = filter_data_2[i]; - const res = regex_extract.exec(element); - final_data.push({ - host: res![1], - port: Number(res![2]), - pass: res![3], - secure: parseBoolean(res![4]), - name: `${res![1]}:${Number(res![2])}`, - online: false, - }); - } - - return final_data; - } - - if (!fse.existsSync("./.cylane")) { - const res = await axios.get( - "https://raw.githubusercontent.com/DarrenOfficial/lavalink-list/master/docs/NoSSL/lavalink-without-ssl.md", - ); - - fse - .outputFile(".cylane/lavalink_no_ssl.md", res.data) - .then(() => { - logger.log({ - level: "lavalink", - message: "New cache has been created!", - }); - }) - .catch((err: Error) => { - logger.error(err); - }); - - return getLavalinkServerInfo(res.data); - } else if (fse.existsSync("./.cylane")) { - logger.log({ - level: "lavalink", - message: "Cache found. Now using for speed up", - }); - const data = await fse.readFile("./.cylane/lavalink_no_ssl.md", { - encoding: "utf8", - }); - return getLavalinkServerInfo(data); - } -}; diff --git a/src/manager.ts b/src/manager.ts index 5195ca62..eb7299ef 100644 --- a/src/manager.ts +++ b/src/manager.ts @@ -20,7 +20,6 @@ import { YtDlpPlugin } from '@distube/yt-dlp' import { join, dirname } from "path"; import { fileURLToPath } from "url"; import { QuickDB } from "quick.db"; -import check_lavalink_server from "./lava_scrap/check_lavalink_server.js"; import { WebServer } from "./webserver/index.js"; import WebSocket from "ws"; const __dirname = dirname(fileURLToPath(import.meta.url)); From 55b5ff2dd16aed86707b98c95f443da1d80139ac Mon Sep 17 00:00:00 2001 From: XeonE52680v3 Date: Mon, 25 Sep 2023 20:19:22 +0700 Subject: [PATCH 3/3] Intergrating some base distube, [DO NOT USE] --- package-lock.json | 1621 +++-------------------- package.json | 7 +- src/events/player/empty.ts | 13 + src/events/player/finish.ts | 13 + src/events/player/playSong.ts | 282 ++++ src/events/player/playerCreate.ts | 11 - src/events/player/playerDestroy.ts | 47 - src/events/player/playerEmpty.ts | 32 - src/events/player/playerEnd.ts | 70 - src/events/player/playerException.ts | 25 - src/events/player/playerMoved.ts | 17 - src/events/player/playerResolveError.ts | 53 - src/events/player/playerResumed.ts | 7 - src/events/player/playerStart.ts | 482 ------- src/events/player/playerStuck.ts | 51 - src/events/player/playerUpdate.ts | 18 - src/handlers/Player/loadContent.ts | 368 ----- src/handlers/Player/loadEvent.ts | 5 +- src/handlers/Player/loadSetup.ts | 65 - src/handlers/Player/loadUpdate.ts | 143 -- src/handlers/loadCheck.ts | 11 - src/handlers/loadNodeEvents.ts | 24 - src/handlers/loadPlayer.ts | 3 - src/manager.ts | 48 +- src/types/Lavalink.ts | 26 - 25 files changed, 533 insertions(+), 2909 deletions(-) create mode 100644 src/events/player/empty.ts create mode 100644 src/events/player/finish.ts create mode 100644 src/events/player/playSong.ts delete mode 100644 src/events/player/playerCreate.ts delete mode 100644 src/events/player/playerDestroy.ts delete mode 100644 src/events/player/playerEmpty.ts delete mode 100644 src/events/player/playerEnd.ts delete mode 100644 src/events/player/playerException.ts delete mode 100644 src/events/player/playerMoved.ts delete mode 100644 src/events/player/playerResolveError.ts delete mode 100644 src/events/player/playerResumed.ts delete mode 100644 src/events/player/playerStart.ts delete mode 100644 src/events/player/playerStuck.ts delete mode 100644 src/events/player/playerUpdate.ts delete mode 100644 src/handlers/Player/loadContent.ts delete mode 100644 src/handlers/Player/loadSetup.ts delete mode 100644 src/handlers/Player/loadUpdate.ts delete mode 100644 src/handlers/loadCheck.ts delete mode 100644 src/handlers/loadNodeEvents.ts delete mode 100644 src/types/Lavalink.ts diff --git a/package-lock.json b/package-lock.json index 5adff109..cd40ef58 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,27 +27,24 @@ "esm": "^3.2.25", "express": "^4.18.2", "express-cluster": "^0.0.5", - "express-status-monitor": "^1.3.4", "express-ws": "^5.0.2", - "ffmpeg": "^0.0.4", + "ffmpeg-static": "^5.2.0", "fs-extra": "^11.1.1", "humanize-duration": "^3.29.0", "js-yaml": "^4.1.0", "libsodium-wrappers": "^0.7.13", "lodash": "^4.17.21", - "lyric-api": "^1.0.1", - "lyrics-finder": "^21.7.0", "markdown-it": "^13.0.1", "moment": "^2.29.4", "mongoose": "^6.9.1", "mysql2": "^3.6.0", "nodemon": "^3.0.1", + "opusscript": "^0.0.8", "path": "^0.12.7", "plsargs": "^0.1.6", "pretty-ms": "^8.0.0", "quick.db": "^9.1.7", "recursive-readdir": "^2.2.3", - "slyrics": "^0.1.42", "stuffs": "^0.1.27", "voucher-code-generator": "^1.3.0", "winston": "^3.9.0", @@ -735,6 +732,20 @@ "kuler": "^2.0.0" } }, + "node_modules/@derhuerst/http-basic": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/@derhuerst/http-basic/-/http-basic-8.2.4.tgz", + "integrity": "sha512-F9rL9k9Xjf5blCz8HsJRO4diy111cayL2vkY2XE4r4t3n0yPXVYy3KD3nJ1qbrSn9743UWSXH4IwuCa/HWlGFw==", + "dependencies": { + "caseless": "^0.12.0", + "concat-stream": "^2.0.0", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@digitak/grubber": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@digitak/grubber/-/grubber-3.1.4.tgz", @@ -2374,11 +2385,6 @@ "node": ">=0.4.0" } }, - "node_modules/after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==" - }, "node_modules/agent-base": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", @@ -2507,11 +2513,6 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, - "node_modules/arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" - }, "node_modules/async": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", @@ -2544,24 +2545,11 @@ "proxy-from-env": "^1.1.0" } }, - "node_modules/backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/base64-arraybuffer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -2581,14 +2569,6 @@ } ] }, - "node_modules/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "engines": { - "node": "^4.5.0 || >= 5.9" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -2597,11 +2577,6 @@ "node": ">=8" } }, - "node_modules/blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" - }, "node_modules/body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -2638,11 +2613,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - }, "node_modules/bowser": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", @@ -2706,8 +2676,7 @@ "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "node_modules/busboy": { "version": "1.6.0", @@ -2749,10 +2718,10 @@ "tslib": "^2.0.3" } }, - "node_modules/centra": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/centra/-/centra-2.6.0.tgz", - "integrity": "sha512-dgh+YleemrT8u85QL11Z6tYhegAs3MMxsaWAq/oXeAmYJ7VxL3SI9TZtnfaEvNDMAPolj25FXIb3S+HCI4wQaQ==" + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, "node_modules/chalk": { "version": "4.1.2", @@ -2788,60 +2757,6 @@ "node": ">=8" } }, - "node_modules/cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" - }, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cheerio/node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - } - }, "node_modules/chillout": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/chillout/-/chillout-5.0.0.tgz", @@ -2968,26 +2883,30 @@ "node": ">=4.0.0" } }, - "node_modules/component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==" - }, "node_modules/component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, - "node_modules/component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==" - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "engines": [ + "node >= 6.0" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, "node_modules/concurrently": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.0.tgz", @@ -3169,32 +3088,6 @@ "node": ">=4.8" } }, - "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, "node_modules/dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", @@ -3419,57 +3312,6 @@ "node": ">=14.0" } }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, "node_modules/dotenv": { "version": "16.3.1", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", @@ -3509,6 +3351,8 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "peer": true, "dependencies": { "iconv-lite": "^0.6.2" } @@ -3517,6 +3361,8 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "peer": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -3524,78 +3370,12 @@ "node": ">=0.10.0" } }, - "node_modules/engine.io-client": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.3.tgz", - "integrity": "sha512-qsgyc/CEhJ6cgMUwxRRtOndGVhIu5hpL5tR4umSpmX/MvkFoIxUTM7oFMDQumHNzlNLwSVy6qhstFPoWTf7dOw==", - "dependencies": { - "component-emitter": "~1.3.0", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.2.0", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "ws": "~7.4.2", - "xmlhttprequest-ssl": "~1.6.2", - "yeast": "0.1.2" - } - }, - "node_modules/engine.io-client/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/engine.io-client/node_modules/engine.io-parser": { + "node_modules/env-paths": { "version": "2.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", - "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", - "dependencies": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.4", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } - }, - "node_modules/engine.io-client/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/engine.io-client/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "node": ">=6" } }, "node_modules/error-ex": { @@ -3768,19 +3548,6 @@ "node": ">= 0.6" } }, - "node_modules/event-loop-stats": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/event-loop-stats/-/event-loop-stats-1.2.0.tgz", - "integrity": "sha512-h/leAlXqoEf+D9w1dnFG0srR5vfIq59rLm9PHzcl3/GwFppd+UR46UMuLdp/mvJvuA+MjSd/dNShmuM2/dPFFw==", - "hasInstallScript": true, - "optional": true, - "dependencies": { - "nan": "^2.14.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -3908,120 +3675,6 @@ "resolved": "https://registry.npmjs.org/express-cluster/-/express-cluster-0.0.5.tgz", "integrity": "sha512-Wo0i4YFdj1341nkCxXO9zcO6ZGgiTiFEi+KMwE8bZexGg1sY2GmeDyHHEUDI+zSUJsQDSlT1EQSBnh5XaPIFVQ==" }, - "node_modules/express-status-monitor": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/express-status-monitor/-/express-status-monitor-1.3.4.tgz", - "integrity": "sha512-EyqHvgX57ujN4fqfUT+x6Bv2xwRyzQdv3AJvWQxcG+jK4TcF9vhrKVqGcE0T6bhT4rstpvOKRuxHBwC/Q6AXQg==", - "dependencies": { - "axios": "0.26.0", - "debug": "4.1.1", - "handlebars": "^4.7.7", - "on-headers": "1.0.2", - "pidusage": "2.0.18", - "socket.io": "^2.4.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "individual", - "url": "http://dynobase.com/buy" - }, - "optionalDependencies": { - "event-loop-stats": "1.2.0" - } - }, - "node_modules/express-status-monitor/node_modules/axios": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz", - "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==", - "dependencies": { - "follow-redirects": "^1.14.8" - } - }, - "node_modules/express-status-monitor/node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express-status-monitor/node_modules/debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/express-status-monitor/node_modules/engine.io": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.6.1.tgz", - "integrity": "sha512-dfs8EVg/i7QjFsXxn7cCRQ+Wai1G1TlEvHhdYEi80fxn5R1vZ2K661O6v/rezj1FP234SZ14r9CmJke99iYDGg==", - "dependencies": { - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "debug": "~4.1.0", - "engine.io-parser": "~2.2.0", - "ws": "~7.4.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/express-status-monitor/node_modules/engine.io-parser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", - "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", - "dependencies": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.4", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } - }, - "node_modules/express-status-monitor/node_modules/socket.io": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.5.0.tgz", - "integrity": "sha512-gGunfS0od3VpwDBpGwVkzSZx6Aqo9uOcf1afJj2cKnKFAoyl16fvhpsUhmUFd4Ldbvl5JvRQed6eQw6oQp6n8w==", - "dependencies": { - "debug": "~4.1.0", - "engine.io": "~3.6.0", - "has-binary2": "~1.0.2", - "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.5.0", - "socket.io-parser": "~3.4.0" - } - }, - "node_modules/express-status-monitor/node_modules/socket.io-adapter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", - "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==" - }, - "node_modules/express-status-monitor/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/express-ws": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/express-ws/-/express-ws-5.0.2.tgz", @@ -4131,12 +3784,19 @@ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" }, - "node_modules/ffmpeg": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/ffmpeg/-/ffmpeg-0.0.4.tgz", - "integrity": "sha512-3TgWUJJlZGQn+crJFyhsO/oNeRRnGTy6GhgS98oUCIfZrOW5haPPV7DUfOm3xJcHr5q3TJpjk2GudPutrNisRA==", + "node_modules/ffmpeg-static": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-5.2.0.tgz", + "integrity": "sha512-WrM7kLW+do9HLr+H6tk7LzQ7kPqbAgLjdzNE32+u3Ff11gXt9Kkkd2nusGFrlWMIe+XaA97t+I8JS7sZIrvRgA==", + "hasInstallScript": true, "dependencies": { - "when": ">= 0.0.1" + "@derhuerst/http-basic": "^8.2.0", + "env-paths": "^2.2.0", + "https-proxy-agent": "^5.0.0", + "progress": "^2.0.3" + }, + "engines": { + "node": ">=16" } }, "node_modules/fill-range": { @@ -4492,26 +4152,6 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, - "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -4532,24 +4172,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "dependencies": { - "isarray": "2.0.1" - } - }, - "node_modules/has-binary2/node_modules/isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" - }, - "node_modules/has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==" - }, "node_modules/has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -4612,14 +4234,6 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "bin": { - "he": "bin/he" - } - }, "node_modules/himalaya": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/himalaya/-/himalaya-1.1.0.tgz", @@ -4631,116 +4245,31 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "node_modules/html-to-text": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-5.1.1.tgz", - "integrity": "sha512-Bci6bD/JIfZSvG4s0gW/9mMKwBRoe/1RWLxUME/d6WUSZCdY7T60bssf/jFf7EYXRyqU4P5xdClVqiYU0/ypdA==", + "node_modules/http-cookie-agent": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/http-cookie-agent/-/http-cookie-agent-5.0.4.tgz", + "integrity": "sha512-OtvikW69RvfyP6Lsequ0fN5R49S+8QcS9zwd58k6VSr6r57T8G29BkPdyrBcSwLq6ExLs9V+rBlfxu7gDstJag==", "dependencies": { - "he": "^1.2.0", - "htmlparser2": "^3.10.1", - "lodash": "^4.17.11", - "minimist": "^1.2.0" - }, - "bin": { - "html-to-text": "bin/cli.js" + "agent-base": "^7.1.0" }, "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "dependencies": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - } - }, - "node_modules/htmlparser2/node_modules/dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dependencies": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - } - }, - "node_modules/htmlparser2/node_modules/dom-serializer/node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/htmlparser2/node_modules/dom-serializer/node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/htmlparser2/node_modules/domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "node_modules/htmlparser2/node_modules/domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "dependencies": { - "domelementtype": "1" - } - }, - "node_modules/htmlparser2/node_modules/domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dependencies": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - }, - "node_modules/http-cookie-agent": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/http-cookie-agent/-/http-cookie-agent-5.0.4.tgz", - "integrity": "sha512-OtvikW69RvfyP6Lsequ0fN5R49S+8QcS9zwd58k6VSr6r57T8G29BkPdyrBcSwLq6ExLs9V+rBlfxu7gDstJag==", - "dependencies": { - "agent-base": "^7.1.0" - }, - "engines": { - "node": ">=14.18.0 <15.0.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/3846masa" - }, - "peerDependencies": { - "deasync": "^0.1.26", - "tough-cookie": "^4.0.0", - "undici": "^5.11.0" - }, - "peerDependenciesMeta": { - "deasync": { - "optional": true - }, - "undici": { - "optional": true - } + "node": ">=14.18.0 <15.0.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/3846masa" + }, + "peerDependencies": { + "deasync": "^0.1.26", + "tough-cookie": "^4.0.0", + "undici": "^5.11.0" + }, + "peerDependenciesMeta": { + "deasync": { + "optional": true + }, + "undici": { + "optional": true + } } }, "node_modules/http-errors": { @@ -4758,6 +4287,19 @@ "node": ">= 0.8" } }, + "node_modules/http-response-object": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "dependencies": { + "@types/node": "^10.0.3" + } + }, + "node_modules/http-response-object/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -4858,11 +4400,6 @@ "node": ">=0.8.19" } }, - "node_modules/indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==" - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -5303,46 +4840,6 @@ "node": ">=10" } }, - "node_modules/lyric-api": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lyric-api/-/lyric-api-1.0.1.tgz", - "integrity": "sha512-xWc0NGdAIPygqbjCYJIzsj+3nsVggxEUjg7Ck8gYVqqOkI4Uuh+WOEmwjgac/fnLBQ6PECPNiUZQxMP+44tiTw==", - "dependencies": { - "phin": "^3.7.0" - } - }, - "node_modules/lyrics-finder": { - "version": "21.7.0", - "resolved": "https://registry.npmjs.org/lyrics-finder/-/lyrics-finder-21.7.0.tgz", - "integrity": "sha512-AMaJ+MdbdemYOWM1Kxd/vzn23OD66/fdemaJWN9dU0qsxK6d09rODSphygAvaGka6mgfHaFlHN+ETHv/d60ftw==", - "dependencies": { - "encoding": "^0.1.13", - "html-to-text": "^5.1.1", - "node-fetch": "^2.6.0" - }, - "bin": { - "lyrics-finder": "src/bin.js" - } - }, - "node_modules/lyrics-finder/node_modules/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/m3u8stream": { "version": "0.8.6", "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.6.tgz", @@ -5539,14 +5036,6 @@ "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -5776,12 +5265,6 @@ "node": ">=12" } }, - "node_modules/nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "optional": true - }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -5790,11 +5273,6 @@ "node": ">= 0.6" } }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -5999,17 +5477,6 @@ "set-blocking": "^2.0.0" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -6064,14 +5531,6 @@ "node": ">= 0.8" } }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -6102,6 +5561,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/opusscript": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/opusscript/-/opusscript-0.0.8.tgz", + "integrity": "sha512-VSTi1aWFuCkRCVq+tx/BQ5q9fMnQ9pVZ3JU4UHKqTkf0ED3fKEPdr+gKAAl3IA2hj9rrP6iyq3hlcJq3HELtNQ==" + }, + "node_modules/parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==" + }, "node_modules/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -6126,39 +5595,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "dependencies": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parseqs": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", - "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" - }, - "node_modules/parseuri": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", - "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -6225,17 +5661,6 @@ "node": ">=4" } }, - "node_modules/phin": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.0.tgz", - "integrity": "sha512-DqnVNrpYhKGBZppNKprD+UJylMeEKOZxHgPB+ZP6mGzf3uA2uox4Ep9tUm+rUc8WLIdHT3HcAE4X8fhwQA9JKg==", - "dependencies": { - "centra": "^2.6.0" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -6259,17 +5684,6 @@ "node": ">=0.10" } }, - "node_modules/pidusage": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-2.0.18.tgz", - "integrity": "sha512-Y/VfKfh3poHjMEINxU+gJTeVOBjiThQeFAmzR7z56HSNiMx+etl+yBhk42nRPciPYt/VZl8DQLVXNC6P5vH11A==", - "dependencies": { - "safe-buffer": "^5.1.2" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -6341,6 +5755,14 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -6884,34 +6306,6 @@ "node": ">=10" } }, - "node_modules/slyrics": { - "version": "0.1.42", - "resolved": "https://registry.npmjs.org/slyrics/-/slyrics-0.1.42.tgz", - "integrity": "sha512-Ttc4adTwC2GBvbIPvCcKFTMlTkoMUMDz55ApdHzNRupPd5lDPgqIEtJw0LGLequAfShnNvddgCjKvX6y2OcHsQ==", - "dependencies": { - "cheerio": "^1.0.0-rc.3", - "node-fetch": "^2.6.0" - } - }, - "node_modules/slyrics/node_modules/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -6921,56 +6315,11 @@ "npm": ">= 3.0.0" } }, - "node_modules/socket.io-client": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.5.0.tgz", - "integrity": "sha512-lOO9clmdgssDykiOmVQQitwBAF3I6mYcQAo7hQ7AM6Ny5X7fp8hIJ3HcQs3Rjz4SoggoxA1OgrQyY8EgTbcPYw==", - "dependencies": { - "backo2": "1.0.2", - "component-bind": "1.0.0", - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "engine.io-client": "~3.5.0", - "has-binary2": "~1.0.2", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "socket.io-parser": "~3.3.0", - "to-array": "0.1.4" - } - }, - "node_modules/socket.io-client/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/socket.io-client/node_modules/isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" - }, - "node_modules/socket.io-client/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/socket.io-client/node_modules/socket.io-parser": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.3.tgz", - "integrity": "sha512-qOg87q1PMWWTeO01768Yh9ogn7chB9zkKtQnya41Y355S0UmpXgpcrFwAgjYJxu9BdKug5r5e9YtVSeWhKBUZg==", - "dependencies": { - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "isarray": "2.0.1" - } - }, "node_modules/socket.io-parser": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.3.tgz", "integrity": "sha512-1rE4dZN3kCI/E5wixd393hmbqa78vVpkKmnEJhLeWoS/C5hbFYAbcSfnWoaVH43u9ToUVtzKjguxEZq+1XZfCQ==", + "dev": true, "dependencies": { "component-emitter": "1.2.1", "debug": "~4.1.0", @@ -6983,13 +6332,15 @@ "node_modules/socket.io-parser/node_modules/component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha512-jPatnhd33viNplKjqXKRkGU345p263OIWzDL2wH3LGIGp5Kojo+uXizHmOADRvhGFFTnJqX3jBAKP6vvmSDKcA==" + "integrity": "sha512-jPatnhd33viNplKjqXKRkGU345p263OIWzDL2wH3LGIGp5Kojo+uXizHmOADRvhGFFTnJqX3jBAKP6vvmSDKcA==", + "dev": true }, "node_modules/socket.io-parser/node_modules/debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "dev": true, "dependencies": { "ms": "^2.1.1" } @@ -6997,7 +6348,8 @@ "node_modules/socket.io-parser/node_modules/isarray": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" + "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==", + "dev": true }, "node_modules/socks": { "version": "2.7.1", @@ -7024,6 +6376,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -7466,11 +6819,6 @@ "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==" }, - "node_modules/to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A==" - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -7638,6 +6986,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, "node_modules/typescript": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", @@ -7656,18 +7009,6 @@ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" }, - "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -7811,11 +7152,6 @@ "webidl-conversions": "^3.0.0" } }, - "node_modules/when": { - "version": "3.7.8", - "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", - "integrity": "sha512-5cZ7mecD3eYcMiCH4wtRPA5iFJZ50BJYDfckI5RRpQiktMiYTcn0ccLTZOvcbBume+1304fQztxeNzNS9Gvrnw==" - }, "node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -7906,11 +7242,6 @@ "node": ">= 6.4.0" } }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -7965,14 +7296,6 @@ } } }, - "node_modules/xmlhttprequest-ssl": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", - "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==", - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -8031,11 +7354,6 @@ "node": ">=10" } }, - "node_modules/yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==" - }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", @@ -8630,6 +7948,17 @@ "kuler": "^2.0.0" } }, + "@derhuerst/http-basic": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/@derhuerst/http-basic/-/http-basic-8.2.4.tgz", + "integrity": "sha512-F9rL9k9Xjf5blCz8HsJRO4diy111cayL2vkY2XE4r4t3n0yPXVYy3KD3nJ1qbrSn9743UWSXH4IwuCa/HWlGFw==", + "requires": { + "caseless": "^0.12.0", + "concat-stream": "^2.0.0", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" + } + }, "@digitak/grubber": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@digitak/grubber/-/grubber-3.1.4.tgz", @@ -9864,11 +9193,6 @@ "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true }, - "after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==" - }, "agent-base": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", @@ -9969,11 +9293,6 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, - "arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" - }, "async": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", @@ -10000,41 +9319,21 @@ "proxy-from-env": "^1.1.0" } }, - "backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" - }, "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "base64-arraybuffer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==" - }, "base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" - }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, - "blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" - }, "body-parser": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", @@ -10069,11 +9368,6 @@ } } }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - }, "bowser": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", @@ -10117,8 +9411,7 @@ "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "busboy": { "version": "1.6.0", @@ -10151,10 +9444,10 @@ "tslib": "^2.0.3" } }, - "centra": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/centra/-/centra-2.6.0.tgz", - "integrity": "sha512-dgh+YleemrT8u85QL11Z6tYhegAs3MMxsaWAq/oXeAmYJ7VxL3SI9TZtnfaEvNDMAPolj25FXIb3S+HCI4wQaQ==" + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, "chalk": { "version": "4.1.2", @@ -10180,46 +9473,6 @@ } } }, - "cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", - "requires": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" - }, - "dependencies": { - "htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - } - } - } - }, - "cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "requires": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - } - }, "chillout": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/chillout/-/chillout-5.0.0.tgz", @@ -10320,26 +9573,27 @@ "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==" }, - "component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==" - }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" }, - "component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==" - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, "concurrently": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.0.tgz", @@ -10479,23 +9733,6 @@ "which": "^1.2.9" } }, - "css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==" - }, "dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", @@ -10645,39 +9882,6 @@ } } }, - "dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - }, - "domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "requires": { - "domelementtype": "^2.3.0" - } - }, - "domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", - "requires": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - } - }, "dotenv": { "version": "16.3.1", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", @@ -10708,6 +9912,8 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "optional": true, + "peer": true, "requires": { "iconv-lite": "^0.6.2" }, @@ -10716,67 +9922,18 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "optional": true, + "peer": true, "requires": { "safer-buffer": ">= 2.1.2 < 3.0.0" } } } }, - "engine.io-client": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.3.tgz", - "integrity": "sha512-qsgyc/CEhJ6cgMUwxRRtOndGVhIu5hpL5tR4umSpmX/MvkFoIxUTM7oFMDQumHNzlNLwSVy6qhstFPoWTf7dOw==", - "requires": { - "component-emitter": "~1.3.0", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.2.0", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "ws": "~7.4.2", - "xmlhttprequest-ssl": "~1.6.2", - "yeast": "0.1.2" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "engine.io-parser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", - "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.4", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "requires": {} - } - } - }, - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==" + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" }, "error-ex": { "version": "1.3.2", @@ -10916,15 +10073,6 @@ "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" }, - "event-loop-stats": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/event-loop-stats/-/event-loop-stats-1.2.0.tgz", - "integrity": "sha512-h/leAlXqoEf+D9w1dnFG0srR5vfIq59rLm9PHzcl3/GwFppd+UR46UMuLdp/mvJvuA+MjSd/dNShmuM2/dPFFw==", - "optional": true, - "requires": { - "nan": "^2.14.0" - } - }, "execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", @@ -11042,92 +10190,6 @@ "resolved": "https://registry.npmjs.org/express-cluster/-/express-cluster-0.0.5.tgz", "integrity": "sha512-Wo0i4YFdj1341nkCxXO9zcO6ZGgiTiFEi+KMwE8bZexGg1sY2GmeDyHHEUDI+zSUJsQDSlT1EQSBnh5XaPIFVQ==" }, - "express-status-monitor": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/express-status-monitor/-/express-status-monitor-1.3.4.tgz", - "integrity": "sha512-EyqHvgX57ujN4fqfUT+x6Bv2xwRyzQdv3AJvWQxcG+jK4TcF9vhrKVqGcE0T6bhT4rstpvOKRuxHBwC/Q6AXQg==", - "requires": { - "axios": "0.26.0", - "debug": "4.1.1", - "event-loop-stats": "1.2.0", - "handlebars": "^4.7.7", - "on-headers": "1.0.2", - "pidusage": "2.0.18", - "socket.io": "^2.4.1" - }, - "dependencies": { - "axios": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz", - "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==", - "requires": { - "follow-redirects": "^1.14.8" - } - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" - }, - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "requires": { - "ms": "^2.1.1" - } - }, - "engine.io": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.6.1.tgz", - "integrity": "sha512-dfs8EVg/i7QjFsXxn7cCRQ+Wai1G1TlEvHhdYEi80fxn5R1vZ2K661O6v/rezj1FP234SZ14r9CmJke99iYDGg==", - "requires": { - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.4.1", - "debug": "~4.1.0", - "engine.io-parser": "~2.2.0", - "ws": "~7.4.2" - } - }, - "engine.io-parser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", - "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", - "requires": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.4", - "blob": "0.0.5", - "has-binary2": "~1.0.2" - } - }, - "socket.io": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.5.0.tgz", - "integrity": "sha512-gGunfS0od3VpwDBpGwVkzSZx6Aqo9uOcf1afJj2cKnKFAoyl16fvhpsUhmUFd4Ldbvl5JvRQed6eQw6oQp6n8w==", - "requires": { - "debug": "~4.1.0", - "engine.io": "~3.6.0", - "has-binary2": "~1.0.2", - "socket.io-adapter": "~1.1.0", - "socket.io-client": "2.5.0", - "socket.io-parser": "~3.4.0" - } - }, - "socket.io-adapter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", - "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==" - }, - "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "requires": {} - } - } - }, "express-ws": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/express-ws/-/express-ws-5.0.2.tgz", @@ -11190,12 +10252,15 @@ "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==" }, - "ffmpeg": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/ffmpeg/-/ffmpeg-0.0.4.tgz", - "integrity": "sha512-3TgWUJJlZGQn+crJFyhsO/oNeRRnGTy6GhgS98oUCIfZrOW5haPPV7DUfOm3xJcHr5q3TJpjk2GudPutrNisRA==", + "ffmpeg-static": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-5.2.0.tgz", + "integrity": "sha512-WrM7kLW+do9HLr+H6tk7LzQ7kPqbAgLjdzNE32+u3Ff11gXt9Kkkd2nusGFrlWMIe+XaA97t+I8JS7sZIrvRgA==", "requires": { - "when": ">= 0.0.1" + "@derhuerst/http-basic": "^8.2.0", + "env-paths": "^2.2.0", + "https-proxy-agent": "^5.0.0", + "progress": "^2.0.3" } }, "fill-range": { @@ -11457,18 +10522,6 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, - "handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - } - }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -11483,26 +10536,6 @@ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true }, - "has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "requires": { - "isarray": "2.0.1" - }, - "dependencies": { - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" - } - } - }, - "has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==" - }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", @@ -11541,11 +10574,6 @@ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, - "he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - }, "himalaya": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/himalaya/-/himalaya-1.1.0.tgz", @@ -11557,80 +10585,6 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "html-to-text": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/html-to-text/-/html-to-text-5.1.1.tgz", - "integrity": "sha512-Bci6bD/JIfZSvG4s0gW/9mMKwBRoe/1RWLxUME/d6WUSZCdY7T60bssf/jFf7EYXRyqU4P5xdClVqiYU0/ypdA==", - "requires": { - "he": "^1.2.0", - "htmlparser2": "^3.10.1", - "lodash": "^4.17.11", - "minimist": "^1.2.0" - } - }, - "htmlparser2": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", - "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", - "requires": { - "domelementtype": "^1.3.1", - "domhandler": "^2.3.0", - "domutils": "^1.5.1", - "entities": "^1.1.1", - "inherits": "^2.0.1", - "readable-stream": "^3.1.1" - }, - "dependencies": { - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==" - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - } - } - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" - }, - "domhandler": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", - "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "entities": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" - } - } - }, "http-cookie-agent": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/http-cookie-agent/-/http-cookie-agent-5.0.4.tgz", @@ -11651,6 +10605,21 @@ "toidentifier": "1.0.1" } }, + "http-response-object": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "requires": { + "@types/node": "^10.0.3" + }, + "dependencies": { + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + } + } + }, "https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -11716,11 +10685,6 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" }, - "indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==" - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -12051,34 +11015,6 @@ "yallist": "^4.0.0" } }, - "lyric-api": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lyric-api/-/lyric-api-1.0.1.tgz", - "integrity": "sha512-xWc0NGdAIPygqbjCYJIzsj+3nsVggxEUjg7Ck8gYVqqOkI4Uuh+WOEmwjgac/fnLBQ6PECPNiUZQxMP+44tiTw==", - "requires": { - "phin": "^3.7.0" - } - }, - "lyrics-finder": { - "version": "21.7.0", - "resolved": "https://registry.npmjs.org/lyrics-finder/-/lyrics-finder-21.7.0.tgz", - "integrity": "sha512-AMaJ+MdbdemYOWM1Kxd/vzn23OD66/fdemaJWN9dU0qsxK6d09rODSphygAvaGka6mgfHaFlHN+ETHv/d60ftw==", - "requires": { - "encoding": "^0.1.13", - "html-to-text": "^5.1.1", - "node-fetch": "^2.6.0" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", - "requires": { - "whatwg-url": "^5.0.0" - } - } - } - }, "m3u8stream": { "version": "0.8.6", "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.6.tgz", @@ -12222,11 +11158,6 @@ "brace-expansion": "^1.1.7" } }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - }, "minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -12398,22 +11329,11 @@ } } }, - "nan": { - "version": "2.17.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", - "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", - "optional": true - }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -12581,14 +11501,6 @@ "set-blocking": "^2.0.0" } }, - "nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "requires": { - "boolbase": "^1.0.0" - } - }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -12625,11 +11537,6 @@ "ee-first": "1.1.1" } }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -12654,6 +11561,16 @@ "mimic-fn": "^2.1.0" } }, + "opusscript": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/opusscript/-/opusscript-0.0.8.tgz", + "integrity": "sha512-VSTi1aWFuCkRCVq+tx/BQ5q9fMnQ9pVZ3JU4UHKqTkf0ED3fKEPdr+gKAAl3IA2hj9rrP6iyq3hlcJq3HELtNQ==" + }, + "parse-cache-control": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==" + }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", @@ -12669,33 +11586,6 @@ "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-3.0.0.tgz", "integrity": "sha512-Tpb8Z7r7XbbtBTrM9UhpkzzaMrqA2VXMT3YChzYltwV3P3pM6t8wl7TvpMnSTosz1aQAdVib7kdoys7vYOPerw==" }, - "parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "requires": { - "entities": "^4.4.0" - } - }, - "parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "requires": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - } - }, - "parseqs": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", - "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" - }, - "parseuri": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", - "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" - }, "parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -12750,14 +11640,6 @@ "pify": "^3.0.0" } }, - "phin": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.0.tgz", - "integrity": "sha512-DqnVNrpYhKGBZppNKprD+UJylMeEKOZxHgPB+ZP6mGzf3uA2uox4Ep9tUm+rUc8WLIdHT3HcAE4X8fhwQA9JKg==", - "requires": { - "centra": "^2.6.0" - } - }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -12769,14 +11651,6 @@ "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", "dev": true }, - "pidusage": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-2.0.18.tgz", - "integrity": "sha512-Y/VfKfh3poHjMEINxU+gJTeVOBjiThQeFAmzR7z56HSNiMx+etl+yBhk42nRPciPYt/VZl8DQLVXNC6P5vH11A==", - "requires": { - "safe-buffer": "^5.1.2" - } - }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -12817,6 +11691,11 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, "proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -13211,82 +12090,16 @@ } } }, - "slyrics": { - "version": "0.1.42", - "resolved": "https://registry.npmjs.org/slyrics/-/slyrics-0.1.42.tgz", - "integrity": "sha512-Ttc4adTwC2GBvbIPvCcKFTMlTkoMUMDz55ApdHzNRupPd5lDPgqIEtJw0LGLequAfShnNvddgCjKvX6y2OcHsQ==", - "requires": { - "cheerio": "^1.0.0-rc.3", - "node-fetch": "^2.6.0" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", - "requires": { - "whatwg-url": "^5.0.0" - } - } - } - }, "smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" }, - "socket.io-client": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.5.0.tgz", - "integrity": "sha512-lOO9clmdgssDykiOmVQQitwBAF3I6mYcQAo7hQ7AM6Ny5X7fp8hIJ3HcQs3Rjz4SoggoxA1OgrQyY8EgTbcPYw==", - "requires": { - "backo2": "1.0.2", - "component-bind": "1.0.0", - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "engine.io-client": "~3.5.0", - "has-binary2": "~1.0.2", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "socket.io-parser": "~3.3.0", - "to-array": "0.1.4" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "socket.io-parser": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.3.tgz", - "integrity": "sha512-qOg87q1PMWWTeO01768Yh9ogn7chB9zkKtQnya41Y355S0UmpXgpcrFwAgjYJxu9BdKug5r5e9YtVSeWhKBUZg==", - "requires": { - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "isarray": "2.0.1" - } - } - } - }, "socket.io-parser": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.3.tgz", "integrity": "sha512-1rE4dZN3kCI/E5wixd393hmbqa78vVpkKmnEJhLeWoS/C5hbFYAbcSfnWoaVH43u9ToUVtzKjguxEZq+1XZfCQ==", + "dev": true, "requires": { "component-emitter": "1.2.1", "debug": "~4.1.0", @@ -13296,12 +12109,14 @@ "component-emitter": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", - "integrity": "sha512-jPatnhd33viNplKjqXKRkGU345p263OIWzDL2wH3LGIGp5Kojo+uXizHmOADRvhGFFTnJqX3jBAKP6vvmSDKcA==" + "integrity": "sha512-jPatnhd33viNplKjqXKRkGU345p263OIWzDL2wH3LGIGp5Kojo+uXizHmOADRvhGFFTnJqX3jBAKP6vvmSDKcA==", + "dev": true }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, "requires": { "ms": "^2.1.1" } @@ -13309,7 +12124,8 @@ "isarray": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" + "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==", + "dev": true } } }, @@ -13333,7 +12149,8 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true }, "source-map-support": { "version": "0.5.21", @@ -13684,11 +12501,6 @@ "resolved": "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz", "integrity": "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==" }, - "to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A==" - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -13807,6 +12619,11 @@ "is-typed-array": "^1.1.9" } }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, "typescript": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", @@ -13818,12 +12635,6 @@ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" }, - "uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", - "optional": true - }, "unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", @@ -13945,11 +12756,6 @@ "webidl-conversions": "^3.0.0" } }, - "when": { - "version": "3.7.8", - "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz", - "integrity": "sha512-5cZ7mecD3eYcMiCH4wtRPA5iFJZ50BJYDfckI5RRpQiktMiYTcn0ccLTZOvcbBume+1304fQztxeNzNS9Gvrnw==" - }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -14022,11 +12828,6 @@ "triple-beam": "^1.3.0" } }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - }, "wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -14058,11 +12859,6 @@ "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "requires": {} }, - "xmlhttprequest-ssl": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", - "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==" - }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -14106,11 +12902,6 @@ "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true }, - "yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==" - }, "yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/package.json b/package.json index 27e09766..c4e2b3be 100644 --- a/package.json +++ b/package.json @@ -52,27 +52,24 @@ "esm": "^3.2.25", "express": "^4.18.2", "express-cluster": "^0.0.5", - "express-status-monitor": "^1.3.4", "express-ws": "^5.0.2", - "ffmpeg": "^0.0.4", + "ffmpeg-static": "^5.2.0", "fs-extra": "^11.1.1", "humanize-duration": "^3.29.0", "js-yaml": "^4.1.0", "libsodium-wrappers": "^0.7.13", "lodash": "^4.17.21", - "lyric-api": "^1.0.1", - "lyrics-finder": "^21.7.0", "markdown-it": "^13.0.1", "moment": "^2.29.4", "mongoose": "^6.9.1", "mysql2": "^3.6.0", "nodemon": "^3.0.1", + "opusscript": "^0.0.8", "path": "^0.12.7", "plsargs": "^0.1.6", "pretty-ms": "^8.0.0", "quick.db": "^9.1.7", "recursive-readdir": "^2.2.3", - "slyrics": "^0.1.42", "stuffs": "^0.1.27", "voucher-code-generator": "^1.3.0", "winston": "^3.9.0", diff --git a/src/events/player/empty.ts b/src/events/player/empty.ts new file mode 100644 index 00000000..48948c0e --- /dev/null +++ b/src/events/player/empty.ts @@ -0,0 +1,13 @@ +import { EmbedBuilder } from "discord.js"; +import { Manager } from "../../manager.js"; +import { Queue } from "distube"; + +export default async (client: Manager, queue: Queue) => { + await client.UpdateMusic(queue); + + const embed = new EmbedBuilder() + .setColor('#000001') + .setDescription(`**Channel is Empty!**`) + + queue.textChannel!.send({ embeds: [embed] }) +} \ No newline at end of file diff --git a/src/events/player/finish.ts b/src/events/player/finish.ts new file mode 100644 index 00000000..428e25a0 --- /dev/null +++ b/src/events/player/finish.ts @@ -0,0 +1,13 @@ +import { Queue } from "distube"; +import { Manager } from "../../manager.js"; +import { EmbedBuilder } from "discord.js"; + +export default async (client: Manager, queue: Queue) => { + await client.manager.voices.leave(queue.textChannel!.guild); + + const embed = new EmbedBuilder() + .setDescription(`\`📛\` | **Song has been:** \`Ended\``) + .setColor('#000001') + + queue.textChannel!.send({ embeds: [embed] }) +} \ No newline at end of file diff --git a/src/events/player/playSong.ts b/src/events/player/playSong.ts new file mode 100644 index 00000000..8829941b --- /dev/null +++ b/src/events/player/playSong.ts @@ -0,0 +1,282 @@ +import { EmbedBuilder, ActionRowBuilder, ButtonBuilder, ButtonStyle } from "discord.js"; +import { Manager } from "../../manager.js"; +import { Queue, Song } from "distube"; + +export default async (client: Manager, queue: Queue, track: Song) => { + + await client.UpdateQueueMsg(queue); + + var newQueue = client.manager.getQueue(queue!.id) + + const embed = new EmbedBuilder() + .setAuthor({ name: `Starting Playing...`, iconURL: 'https://cdn.discordapp.com/emojis/741605543046807626.gif' }) + .setThumbnail(String(track!.thumbnail)) + .setColor('#000001') + .setDescription(`**[${track!.name}](${track.url})**`) + .addFields({ name: `Uploader:`, value: `**[${track.uploader.name}](${track.uploader.url})**`, inline: true }) + .addFields({ name: `Requester:`, value: `${track.user}`, inline: true }) + .addFields({ name: `Current Volume:`, value: `${queue!.volume}%`, inline: true }) + .addFields({ name: `Filters:`, value: `${queue!.filters.names.join(", ") || "Normal"}`, inline: true }) + .addFields({ name: `Autoplay:`, value: `${queue!.autoplay ? "Activated" : "Not Active"}`, inline: true }) + .addFields({ name: `Total Duration:`, value: `${queue!.formattedDuration}`, inline: true }) + .addFields({ name: `Current Duration: \`[0:00 / ${track.formattedDuration}]\``, value:`\`\`\`🔴 | 🎶──────────────────────────────\`\`\``, inline: false }) + .setTimestamp() + +const row = new ActionRowBuilder() + .addComponents( + new ButtonBuilder() + .setCustomId("pause") + .setLabel(`Pause`) + .setEmoji("⏯") + .setStyle(ButtonStyle.Success) + ) + .addComponents( + new ButtonBuilder() + .setCustomId("previous") + .setLabel(`Previous`) + .setEmoji("⬅") + .setStyle(ButtonStyle.Primary) + ) + .addComponents( + new ButtonBuilder() + .setCustomId("stop") + .setLabel(`Stop`) + .setEmoji("✖") + .setStyle(ButtonStyle.Danger) + ) + .addComponents( + new ButtonBuilder() + .setCustomId("skip") + .setLabel(`Skip`) + .setEmoji("➡") + .setStyle(ButtonStyle.Primary) + ) + .addComponents( + new ButtonBuilder() + .setCustomId("loop") + .setLabel(`Loop`) + .setEmoji("🔄") + .setStyle(ButtonStyle.Success) + ) + + const row2 = new ActionRowBuilder() + .addComponents( + new ButtonBuilder() + .setCustomId("shuffle") + .setLabel(`Shuffle`) + .setEmoji(`🔀`) + .setStyle(ButtonStyle.Primary) + ) + .addComponents( + new ButtonBuilder() + .setCustomId("voldown") + .setLabel(`Vol -`) + .setEmoji(`🔉`) + .setStyle(ButtonStyle.Success) + ) + .addComponents( + new ButtonBuilder() + .setCustomId("clear") + .setLabel(`Clear`) + .setEmoji(`🗑`) + .setStyle(ButtonStyle.Secondary) + ) + .addComponents( + new ButtonBuilder() + .setCustomId("volup") + .setLabel(`Vol +`) + .setEmoji(`🔊`) + .setStyle(ButtonStyle.Success) + ) + .addComponents( + new ButtonBuilder() + .setCustomId("queue") + .setLabel(`Queue`) + .setEmoji(`📋`) + .setStyle(ButtonStyle.Primary) + ) + + const nowplay = await queue!.textChannel!.send({ + embeds: [embed], + components: [row, row2] + }) + + const collector = nowplay.createMessageComponentCollector({ filter: (message) => { + if (message.guild.members.me!.voice.channel && message.guild.members.me!.voice.channelId === message.member.voice.channelId) return true; + else { + message.reply({ content: "You need to be in a same/voice channel.", ephemeral: true }); + return false + } + }, time: 120000 }); + + collector.on('collect', async (message) => { + const id = message.customId; + const queue = client.manager.getQueue(message.guild.id); + if (id === "pause") { + if (!queue) { + collector.stop(); + } + if (queue!.paused) { + await client.manager.resume(message.guild.id); + const embed = new EmbedBuilder() + .setColor("#000001") + .setDescription(`\`⏯\` | **Song has been:** \`Resumed\``); + + message.reply({ embeds: [embed], ephemeral: true }); + } else { + await client.manager.pause(message.guild.id); + const embed = new EmbedBuilder() + .setColor("#000001") + .setDescription(`\`⏯\` | **Song has been:** \`Paused\``); + + message.reply({ embeds: [embed], ephemeral: true }); + } + } else if (id === "skip") { + if (!queue) { + collector.stop(); + } + if (queue!.songs.length === 1 && queue!.autoplay === false) { + const embed = new EmbedBuilder() + .setColor("#000001") + .setDescription("\`🚨\` | **There are no** `Songs` **in queue**") + + message.reply({ embeds: [embed], ephemeral: true }); + } else { + await client.manager.skip(message) + const embed = new EmbedBuilder() + .setColor("#000001") + .setDescription("\`⏭\` | **Song has been:** `Skipped`") + + nowplay.edit({ components: [] }); + message.reply({ embeds: [embed], ephemeral: true }); + } + } else if (id === "stop") { + if (!queue) { + collector.stop(); + } + await client.manager.voices.leave(message.guild); + const embed = new EmbedBuilder() + .setDescription(`\`🚫\` | **Song has been:** | \`Stopped\``) + .setColor('#000001'); + + await nowplay.edit({ components: [] }); + message.reply({ embeds: [embed], ephemeral: true }); + } else if (id === "loop") { + if (!queue) { + collector.stop(); + } + if (queue!.repeatMode === 0) { + client.manager.setRepeatMode(message.guild.id, 1); + const embed = new EmbedBuilder() + .setColor("#000001") + .setDescription(`\`🔁\` | **Song is loop:** \`Current\``) + + message.reply({ embeds: [embed], ephemeral: true }); + } else { + client.manager.setRepeatMode(message.guild.id, 0); + const embed = new EmbedBuilder() + .setColor("#000001") + .setDescription(`\`🔁\` | **Song is unloop:** \`Current\``) + + message.reply({ embeds: [embed], ephemeral: true }); + } + } else if (id === "previous") { + if (!queue) { + collector.stop(); + } + if (queue!.previousSongs.length == 0) { + const embed = new EmbedBuilder() + .setColor("#000001") + .setDescription("\`🚨\` | **There are no** `Previous` **songs**") + + message.reply({ embeds: [embed], ephemeral: true }); + } else { + await client.manager.previous(message) + const embed = new EmbedBuilder() + .setColor("#000001") + .setDescription("\`⏮\` | **Song has been:** `Previous`") + + await nowplay.edit({ components: [] }); + message.reply({ embeds: [embed], ephemeral: true }); + } + } else if (id === "shuffle") { + if (!queue) { + collector.stop(); + } + await client.manager.shuffle(message); + const embed = new EmbedBuilder() + .setColor(client.color) + .setDescription(`\`🔀\` | **Song has been:** \`Shuffle\``); + + message.reply({ embeds: [embed], ephemeral: true }); + } else if (id === "voldown") { + if (!queue) { + collector.stop(); + } + await client.manager.setVolume(message, queue!.volume - 5); + const embed = new EmbedBuilder() + .setColor(client.color) + .setDescription(`\`🔊\` | **Decrease volume to:** \`${queue!.volume}\`%`) + + message.reply({ embeds: [embed], ephemeral: true }); + } else if (id === "clear") { + if (!queue) { + collector.stop(); + } + await queue!.songs.splice(1, queue!.songs.length); + await client.UpdateQueueMsg(queue); + + const embed = new EmbedBuilder() + .setDescription(`\`📛\` | **Queue has been:** \`Cleared\``) + .setColor(client.color); + + message.reply({ embeds: [embed], ephemeral: true }); + } else if (id === "volup") { + if (!queue) { + collector.stop(); + } + await client.manager.setVolume(message, queue!.volume + 5); + const embed = new EmbedBuilder() + .setColor(client.color) + .setDescription(`\`🔊\` | **Increase volume to:** \`${queue!.volume}\`%`) + + message.reply({ embeds: [embed], ephemeral: true }); + } else if (id === "queue") { + if (!queue) { + collector.stop(); + } + let pagesNum = Math.ceil(queue!.songs.length / 10); + if(pagesNum === 0) pagesNum = 1; + + const songStrings = []; + for (let i = 1; i < queue!.songs.length; i++) { + const song = queue!.songs[i]; + songStrings.push( + `**${i}.** [${song.name}](${song.url}) \`[${song.formattedDuration}]\` • ${song.user} + `); + }; + + const pages = []; + for (let i = 0; i < pagesNum; i++) { + const str = songStrings.slice(i * 10, i * 10 + 10).join(''); + const embed = new EmbedBuilder() + .setAuthor({ name: `Queue - ${message.guild.name}`, iconURL: String(message.guild.iconURL())}) + .setThumbnail(String(queue!.songs[0].thumbnail)) + .setColor(client.color) + .setDescription(`**Currently Playing:**\n**[${queue!.songs[0].name}](${queue!.songs[0].url})** \`[${queue!.songs[0].formattedDuration}]\` • ${queue!.songs[0].user}\n\n**Rest of queue**${str == '' ? ' Nothing' : '\n' + str }`) + .setFooter({ text: `Page • ${i + 1}/${pagesNum} | ${queue!.songs.length} • Songs | ${queue!.formattedDuration} • Total duration`}); + + pages.push(embed); + }; + + message.reply({ embeds: [pages[0]], ephemeral: true }); + } + + + }); + collector.on('end', async (collected, reason) => { + if (reason === "time") { + nowplay.edit({ components: [] }); + } + }); +} \ No newline at end of file diff --git a/src/events/player/playerCreate.ts b/src/events/player/playerCreate.ts deleted file mode 100644 index 516213fd..00000000 --- a/src/events/player/playerCreate.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { KazagumoPlayer } from "kazagumo"; -import { Manager } from "../../manager.js"; - -export default async (client: Manager, player: KazagumoPlayer) => { - const guild = await client.guilds.cache.get(player.guildId); - client.logger.info(`Player Created in @ ${guild!.name} / ${player.guildId}`); - if (client.websocket) - client.websocket.send( - JSON.stringify({ op: "player_create", guild: player.guildId }), - ); -}; diff --git a/src/events/player/playerDestroy.ts b/src/events/player/playerDestroy.ts deleted file mode 100644 index 42172c86..00000000 --- a/src/events/player/playerDestroy.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { KazagumoPlayer } from "kazagumo"; -import { Manager } from "../../manager.js"; -import { EmbedBuilder, Client, TextChannel } from "discord.js"; - -export default async (client: Manager, player: KazagumoPlayer) => { - if (!client.is_db_connected) - return client.logger.warn( - "The database is not yet connected so this event will temporarily not execute. Please try again later!", - ); - - const guild = await client.guilds.cache.get(player.guildId); - client.logger.info(`Player Destroy in @ ${guild!.name} / ${player.guildId}`); - if (client.websocket) - client.websocket.send( - JSON.stringify({ op: "player_destroy", guild: player.guildId }), - ); - const channel = client.channels.cache.get(player.textId) as TextChannel; - client.sent_queue.set(player.guildId, false); - let data = await client.db.get(`autoreconnect.guild_${player.guildId}`); - - if (!channel) return; - - if (player.state == 5 && data) { - await client.manager.createPlayer({ - guildId: data.guild, - voiceId: data.voice, - textId: data.text, - deaf: true, - }); - } - - let guildModel = await client.db.get(`language.guild_${channel.guild.id}`); - if (!guildModel) { - guildModel = await client.db.set( - `language.guild_${channel.guild.id}`, - "en", - ); - } - - const language = guildModel; - - /////////// Update Music Setup /////////// - - await client.UpdateMusic(player); - - /////////// Update Music Setup /////////// -}; diff --git a/src/events/player/playerEmpty.ts b/src/events/player/playerEmpty.ts deleted file mode 100644 index 5aaa1dba..00000000 --- a/src/events/player/playerEmpty.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { KazagumoPlayer } from "kazagumo"; -import { Manager } from "../../manager.js"; - -export default async (client: Manager, player: KazagumoPlayer) => { - if (!client.is_db_connected) - return client.logger.warn( - "The database is not yet connected so this event will temporarily not execute. Please try again later!", - ); - - const guild = await client.guilds.cache.get(player.guildId); - let data = await client.db.get(`autoreconnect.guild_${player.guildId}`); - - if (player.data.get("autoplay") === true) { - const requester = player.data.get("requester"); - const identifier = player.data.get("identifier"); - const search = `https://www.youtube.com/watch?v=${identifier}&list=RD${identifier}`; - let res = await player.search(search, { requester: requester }); - player.queue.add(res.tracks[2]); - player.queue.add(res.tracks[3]); - player.play(); - return; - } - - client.logger.info(`Player Empty in @ ${guild!.name} / ${player.guildId}`); - if (data) return; - - await player.destroy(); - if (client.websocket) - client.websocket.send( - JSON.stringify({ op: "player_destroy", guild: player.guildId }), - ); -}; diff --git a/src/events/player/playerEnd.ts b/src/events/player/playerEnd.ts deleted file mode 100644 index 9420dc66..00000000 --- a/src/events/player/playerEnd.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { KazagumoPlayer } from "kazagumo"; -import { Manager } from "../../manager.js"; -import { EmbedBuilder, Client, TextChannel } from "discord.js"; -export default async (client: Manager, player: KazagumoPlayer) => { - if (!client.is_db_connected) - return client.logger.warn( - "The database is not yet connected so this event will temporarily not execute. Please try again later!", - ); - - const guild = await client.guilds.cache.get(player.guildId); - client.logger.info(`Player End in @ ${guild!.name} / ${player.guildId}`); - - if (client.websocket) { - const song = player.queue.previous; - - await client.websocket.send( - JSON.stringify({ - op: "player_end", - guild: player.guildId, - track: song - ? { - title: song.title, - uri: song.uri, - length: song.length, - thumbnail: song.thumbnail, - author: song.author, - requester: song.requester, - } - : null, - }), - ); - } - - let data = await client.db.get(`autoreconnect.guild_${player.guildId}`); - const channel = client.channels.cache.get(player.textId) as TextChannel; - if (!channel) return; - - if (data) return; - - if (player.queue.length) return; - - if (player.loop !== "none") return; - - let guildModel = await client.db.get(`language.guild_${player.guildId}`); - if (!guildModel) { - guildModel = await client.db.set( - `language.guild_${player.guildId}`, - client.config.bot.LANGUAGE, - ); - } - - const language = guildModel; - - /////////// Update Music Setup /////////// - - await client.UpdateMusic(player); - - /////////// Update Music Setup /////////// - - const embed = new EmbedBuilder() - .setColor(client.color) - .setDescription(`${client.i18n.get(language, "player", "queue_end_desc")}`); - - if (channel) channel.send({ embeds: [embed] }); - player.destroy(); - if (client.websocket) - client.websocket.send( - JSON.stringify({ op: "player_destroy", guild: player.guildId }), - ); -}; diff --git a/src/events/player/playerException.ts b/src/events/player/playerException.ts deleted file mode 100644 index 156bf2ad..00000000 --- a/src/events/player/playerException.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { KazagumoPlayer } from "kazagumo"; -import { Manager } from "../../manager.js"; -import { TrackExceptionEvent } from "shoukaku"; -import { TextChannel } from "discord.js"; - -export default async ( - client: Manager, - player: KazagumoPlayer, - data: TrackExceptionEvent, -) => { - client.logger.error(`Player get exception ${data}`); - client.logger.log({ level: "error", message: data }); - const fetch_channel = await client.channels.fetch(player.textId); - const text_channel = fetch_channel! as TextChannel; - if (text_channel) { - await text_channel.send( - "Player get exception, please contact with owner to fix this error", - ); - } - await player.destroy(); - if (client.websocket) - client.websocket.send( - JSON.stringify({ op: "player_destroy", guild: player.guildId }), - ); -}; diff --git a/src/events/player/playerMoved.ts b/src/events/player/playerMoved.ts deleted file mode 100644 index b09ec57c..00000000 --- a/src/events/player/playerMoved.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { - KazagumoPlayer, - PlayerMovedChannels, - PlayerMovedState, -} from "kazagumo"; -import { Manager } from "../../manager.js"; - -export default async ( - client: Manager, - player: KazagumoPlayer, - state: PlayerMovedState, - channels: PlayerMovedChannels, -) => { - const guild = await client.guilds.cache.get(player.guildId); - client.logger.info(`Player Moved in @ ${guild!.name} / ${player.guildId}`); - return player.setVoiceChannel(player.voiceId!); -}; diff --git a/src/events/player/playerResolveError.ts b/src/events/player/playerResolveError.ts deleted file mode 100644 index 289b74fd..00000000 --- a/src/events/player/playerResolveError.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { KazagumoPlayer, KazagumoTrack } from "kazagumo"; -import { Manager } from "../../manager.js"; -import { TextChannel, EmbedBuilder } from "discord.js"; - -export default async ( - client: Manager, - player: KazagumoPlayer, - track: KazagumoTrack, - message: string, -) => { - if (!client.is_db_connected) - return client.logger.warn( - "The database is not yet connected so this event will temporarily not execute. Please try again later!", - ); - - const guild = await client.guilds.cache.get(player.guildId); - - client.logger.log({ level: "error", message: message }); - - const channel = client.channels.cache.get(player.textId) as TextChannel; - if (!channel) return; - - let guildModel = await client.db.get(`language.guild_${channel.guild.id}`); - if (!guildModel) { - guildModel = await client.db.set( - `language.guild_${channel.guild.id}`, - "en", - ); - } - - const language = guildModel; - - /////////// Update Music Setup /////////// - - await client.UpdateMusic(player); - - /////////// Update Music Setup /////////// - - const embed = new EmbedBuilder() - .setColor(client.color) - .setDescription(`${client.i18n.get(language, "player", "error_desc")}`); - - channel.send({ embeds: [embed] }); - - client.logger.error( - `Track Error in ${guild!.name} / ${player.guildId}. Auto-Leaved!`, - ); - await player.destroy(); - if (client.websocket) - client.websocket.send( - JSON.stringify({ op: "player_destroy", guild: player.guildId }), - ); -}; diff --git a/src/events/player/playerResumed.ts b/src/events/player/playerResumed.ts deleted file mode 100644 index edbfd95e..00000000 --- a/src/events/player/playerResumed.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { KazagumoPlayer } from "kazagumo"; -import { Manager } from "../../manager.js"; - -export default async (client: Manager, player: KazagumoPlayer) => { - const guild = await client.guilds.cache.get(player.guildId); - client.logger.info(`Player Resumed in @ ${guild!.name} / ${player.guildId}`); -}; diff --git a/src/events/player/playerStart.ts b/src/events/player/playerStart.ts deleted file mode 100644 index 8e62dd08..00000000 --- a/src/events/player/playerStart.ts +++ /dev/null @@ -1,482 +0,0 @@ -import { KazagumoPlayer, KazagumoTrack } from "kazagumo"; -import { Manager } from "../../manager.js"; -import { ButtonStyle, TextChannel } from "discord.js"; -import { EmbedBuilder, ActionRowBuilder, ButtonBuilder } from "discord.js"; -import formatduration from "../../structures/FormatDuration.js"; -import { QueueDuration } from "../../structures/QueueDuration.js"; - -export default async ( - client: Manager, - player: KazagumoPlayer, - track: KazagumoTrack, -) => { - if (!client.is_db_connected) - return client.logger.warn( - "The database is not yet connected so this event will temporarily not execute. Please try again later!", - ); - - const guild = await client.guilds.cache.get(player.guildId); - client.logger.info(`Player Started in @ ${guild!.name} / ${player.guildId}`); - - let Control = await client.db.get(`control.guild_${player.guildId}`); - if (!Control) { - await client.db.set(`control.guild_${player.guildId}`, "disable"); - Control = client.db.get(`control.guild_${player.guildId}`); - } - - if (!player) return; - - /////////// Update Music Setup /////////// - - await client.UpdateQueueMsg(player); - - /////////// Update Music Setup /////////// - - const channel = client.channels.cache.get(player.textId) as TextChannel; - if (!channel) return; - - let data = await client.db.get(`setup.guild_${channel.guild.id}`); - if (data && player.textId === data.channel.id) return; - - let guildModel = await client.db.get(`language.guild_${channel.guild.id}`); - if (!guildModel) { - guildModel = await client.db.set( - `language.guild_${channel.guild.id}`, - "en", - ); - } - - const language = guildModel; - - const song = player.queue.current; - const position = player.shoukaku.position; - - const TotalDuration = QueueDuration(player); - - if (client.websocket && client.config.features.WEBSOCKET.enable) { - let webqueue = []; - - player.queue.forEach((track) => { - webqueue.push({ - title: track.title, - uri: track.uri, - length: track.length, - thumbnail: track.thumbnail, - author: track.author, - requester: track.requester, // Just case can push - }); - }); - - await webqueue.unshift({ - title: song!.title, - uri: song!.uri, - length: song!.length, - thumbnail: song!.thumbnail, - author: song!.author, - requester: song!.requester, - }); - - if (client.websocket && client.config.features.WEBSOCKET.enable) - await client.websocket.send( - JSON.stringify({ - op: "player_start", - guild: player.guildId, - current: { - title: song!.title, - uri: song!.uri, - length: song!.length, - thumbnail: song!.thumbnail, - author: song!.author, - requester: song!.requester, - }, - }), - ); - - if (!client.sent_queue.get(player.guildId)) { - client.websocket.send( - JSON.stringify({ - op: "player_queue", - guild: player.guildId, - queue: webqueue || [], - }), - ); - client.sent_queue.set(player.guildId, true); - } - } - - if (Control === "disable") return; - - const embeded = new EmbedBuilder() - .setAuthor({ - name: `${client.i18n.get(language, "player", "track_title")}`, - iconURL: `${client.i18n.get(language, "player", "track_icon")}`, - }) - .setDescription(`**[${track.title}](${track.uri})**`) - .setColor(client.color) - .setThumbnail( - `https://img.youtube.com/vi/${track.identifier}/hqdefault.jpg`, - ) - .addFields([ - { - name: `${client.i18n.get(language, "player", "author_title")}`, - value: `${song!.author}`, - inline: true, - }, - { - name: `${client.i18n.get(language, "player", "request_title")}`, - value: `${song!.requester}`, - inline: true, - }, - { - name: `${client.i18n.get(language, "player", "volume_title")}`, - value: `${player.volume * 100}%`, - inline: true, - }, - { - name: `${client.i18n.get(language, "player", "queue_title")}`, - value: `${player.queue.length}`, - inline: true, - }, - { - name: `${client.i18n.get(language, "player", "duration_title")}`, - value: `${formatduration(song!.length)}`, - inline: true, - }, - { - name: `${client.i18n.get(language, "player", "total_duration_title")}`, - value: `${formatduration(TotalDuration)}`, - inline: true, - }, - { - name: `${client.i18n.get(language, "player", "download_title")}`, - value: `**[${ - song!.title - } - y2mate.com](https://www.y2mate.com/youtube/${song!.identifier})**`, - inline: false, - }, - { - name: `${client.i18n.get(language, "player", "current_duration_title", { - current_duration: formatduration(song!.length), - })}`, - value: `\`\`\`🔴 | 🎶──────────────────────────────\`\`\``, - inline: false, - }, - ]) - .setTimestamp(); - - const row = new ActionRowBuilder().addComponents([ - new ButtonBuilder() - .setCustomId("pause") - .setEmoji("⏯") - .setStyle(ButtonStyle.Success), - - new ButtonBuilder() - .setCustomId("replay") - .setEmoji("⬅") - .setStyle(ButtonStyle.Primary), - - new ButtonBuilder() - .setCustomId("stop") - .setEmoji("✖") - .setStyle(ButtonStyle.Danger), - - new ButtonBuilder() - .setCustomId("skip") - .setEmoji("➡") - .setStyle(ButtonStyle.Primary), - - new ButtonBuilder() - .setCustomId("loop") - .setEmoji("🔄") - .setStyle(ButtonStyle.Success), - ]); - - const row2 = new ActionRowBuilder().addComponents([ - new ButtonBuilder() - .setCustomId("shuffle") - .setEmoji("🔀") - .setStyle(ButtonStyle.Success), - - new ButtonBuilder() - .setCustomId("voldown") - .setEmoji("🔉") - .setStyle(ButtonStyle.Primary), - - new ButtonBuilder() - .setCustomId("clear") - .setEmoji("🗑") - .setStyle(ButtonStyle.Danger), - - new ButtonBuilder() - .setCustomId("volup") - .setEmoji("🔊") - .setStyle(ButtonStyle.Primary), - - new ButtonBuilder() - .setCustomId("queue") - .setEmoji("📋") - .setStyle(ButtonStyle.Success), - ]); - - const playing_channel = (await client.channels.cache.get( - player.textId, - )) as TextChannel; - - const nplaying = await playing_channel.send({ - embeds: [embeded], - components: [row, row2], - }); - - const filter = (message: any) => { - if ( - message.guild!.members.me!.voice.channel && - message.guild!.members.me!.voice.channelId === - message.member!.voice.channelId - ) - return true; - else { - message.reply({ - content: `${client.i18n.get(language, "player", "join_voice")}`, - ephemeral: true, - }); - return false; - } - }; - const collector = await nplaying.createMessageComponentCollector({ - filter, - time: song!.length, - }); - - collector.on("collect", async (message: any) => { - const id = message.customId; - if (id === "pause") { - if (!player) { - collector.stop(); - } - await player.pause(!player.paused); - const uni = player.paused - ? `${client.i18n.get(language, "player", "switch_pause")}` - : `${client.i18n.get(language, "player", "switch_resume")}`; - - if (client.websocket && client.config.features.WEBSOCKET.enable) - await client.websocket.send( - JSON.stringify({ - op: player.paused ? 3 : 4, - guild: player.guildId, - }), - ); - - const embed = new EmbedBuilder() - .setDescription( - `${client.i18n.get(language, "player", "pause_msg", { - pause: uni, - })}`, - ) - .setColor(client.color); - - message.reply({ embeds: [embed], ephemeral: true }); - } else if (id === "skip") { - if (!player) { - collector.stop(); - } - await player.skip(); - - if (client.websocket && client.config.features.WEBSOCKET.enable) - await client.websocket.send( - JSON.stringify({ - op: "skip_track", - guild: player.guildId, - }), - ); - - const embed = new EmbedBuilder() - .setDescription(`${client.i18n.get(language, "player", "skip_msg")}`) - .setColor(client.color); - - await nplaying.edit({ embeds: [embeded], components: [] }); - message.reply({ embeds: [embed], ephemeral: true }); - } else if (id === "stop") { - if (!player) { - collector.stop(); - } - - if (client.websocket && client.config.features.WEBSOCKET.enable) - await client.websocket.send( - JSON.stringify({ - op: "player_destroy", - guild: player.guildId, - }), - ); - - await player.destroy(); - - const embed = new EmbedBuilder() - .setDescription(`${client.i18n.get(language, "player", "stop_msg")}`) - .setColor(client.color); - - await nplaying.edit({ embeds: [embeded], components: [] }); - message.reply({ embeds: [embed], ephemeral: true }); - } else if (id === "shuffle") { - if (!player) { - collector.stop(); - } - await player.queue.shuffle(); - - const embed = new EmbedBuilder() - .setDescription(`${client.i18n.get(language, "player", "shuffle_msg")}`) - .setColor(client.color); - - message.reply({ embeds: [embed], ephemeral: true }); - } else if (id === "loop") { - if (!player) { - collector.stop(); - } - const loop_mode = { - none: "none", - track: "track", - queue: "queue", - }; - - if (player.loop === "queue") { - await player.setLoop(loop_mode.none as "none" | "queue" | "track"); - - const unloopall = new EmbedBuilder() - .setDescription(`${client.i18n.get(language, "music", "unloopall")}`) - .setColor(client.color); - return await message.reply({ content: " ", embeds: [unloopall] }); - } else if (player.loop === "none") { - await player.setLoop(loop_mode.queue as "none" | "queue" | "track"); - const loopall = new EmbedBuilder() - .setDescription(`${client.i18n.get(language, "music", "loopall")}`) - .setColor(client.color); - return await message.reply({ content: " ", embeds: [loopall] }); - } - } else if (id === "volup") { - if (!player) { - collector.stop(); - } - - const embed = new EmbedBuilder() - .setDescription( - `${client.i18n.get(language, "player", "volup_msg", { - volume: `${player.volume * 100 + 10}`, - })}`, - ) - .setColor(client.color); - - if (player.volume * 100 == 100) - return message.reply({ embeds: [embed], ephemeral: true }); - - await player.setVolume(player.volume * 100 + 10); - message.reply({ embeds: [embed], ephemeral: true }); - } else if (id === "voldown") { - if (!player) { - collector.stop(); - } - - const embed = new EmbedBuilder() - .setDescription( - `${client.i18n.get(language, "player", "voldown_msg", { - volume: `${player.volume * 100 - 10}`, - })}`, - ) - .setColor(client.color); - - if (player.volume * 100 == 0) - return message.reply({ embeds: [embed], ephemeral: true }); - - await player.setVolume(player.volume * 100 - 10); - - message.reply({ embeds: [embed], ephemeral: true }); - } else if (id === "replay") { - if (!player) { - collector.stop(); - } - await player["send"]({ - op: "seek", - guildId: message.guild.id, - position: 0, - }); - - const embed = new EmbedBuilder() - .setDescription(`${client.i18n.get(language, "player", "replay_msg")}`) - .setColor(client.color); - - message.reply({ embeds: [embed], ephemeral: true }); - } else if (id === "queue") { - if (!player) { - collector.stop(); - } - const song = player.queue.current; - const qduration = `${formatduration(song!.length)}`; - const thumbnail = `https://img.youtube.com/vi/${ - song!.identifier - }/hqdefault.jpg`; - - let pagesNum = Math.ceil(player.queue.length / 10); - if (pagesNum === 0) pagesNum = 1; - - const songStrings = []; - for (let i = 0; i < player.queue.length; i++) { - const song = player.queue[i]; - songStrings.push( - `**${i + 1}.** [${song.title}](${song.uri}) \`[${formatduration( - song.length, - )}]\` - `, - ); - } - - const pages = []; - for (let i = 0; i < pagesNum; i++) { - const str = songStrings.slice(i * 10, i * 10 + 10).join(""); - - const embed = new EmbedBuilder() - .setAuthor({ - name: `${client.i18n.get(language, "player", "queue_author", { - guild: message.guild.name, - })}`, - iconURL: message.guild.iconURL({ dynamic: true }), - }) - .setThumbnail(thumbnail) - .setColor(client.color) - .setDescription( - `${client.i18n.get(language, "player", "queue_description", { - track: song!.title, - track_url: song!.uri, - duration: formatduration(position), - requester: `${song!.requester}`, - list_song: str == "" ? " Nothing" : "\n" + str, - })}`, - ) - .setFooter({ - text: `${client.i18n.get(language, "player", "queue_footer", { - page: `${i + 1}`, - pages: `${pagesNum}`, - queue_lang: `${player.queue.length}`, - total_duration: qduration, - })}`, - }); - - pages.push(embed); - } - message.reply({ embeds: [pages[0]], ephemeral: true }); - } else if (id === "clear") { - if (!player) { - collector.stop(); - } - await player.queue.clear(); - - const embed = new EmbedBuilder() - .setDescription(`${client.i18n.get(language, "player", "clear_msg")}`) - .setColor(client.color); - - message.reply({ embeds: [embed], ephemeral: true }); - } - }); - collector.on("end", async (collected: any, reason: string) => { - if (reason === "time") { - nplaying.edit({ embeds: [embeded], components: [] }); - } - }); -}; diff --git a/src/events/player/playerStuck.ts b/src/events/player/playerStuck.ts deleted file mode 100644 index cbfec232..00000000 --- a/src/events/player/playerStuck.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { KazagumoPlayer } from "kazagumo"; -import { Manager } from "../../manager.js"; -import { TextChannel, EmbedBuilder } from "discord.js"; -import { TrackStuckEvent } from "shoukaku"; - -export default async ( - client: Manager, - player: KazagumoPlayer, - data: TrackStuckEvent, -) => { - if (!client.is_db_connected) - return client.logger.warn( - "The database is not yet connected so this event will temporarily not execute. Please try again later!", - ); - - const guild = await client.guilds.cache.get(player.guildId); - - const channel = client.channels.cache.get(player.textId) as TextChannel; - if (!channel) return; - - let guildModel = await client.db.get(`language.guild_${channel.guild.id}`); - if (!guildModel) { - guildModel = await client.db.set( - `language.guild_${channel.guild.id}`, - "en", - ); - } - - const language = guildModel; - - /////////// Update Music Setup /////////// - - await client.UpdateMusic(player); - - /////////// Update Music Setup /////////// - - const embed = new EmbedBuilder() - .setColor(client.color) - .setDescription(`${client.i18n.get(language, "player", "error_desc")}`); - - channel.send({ embeds: [embed] }); - - client.logger.error( - `Track Stuck in ${guild!.name} / ${player.guildId}. Auto-Leaved!`, - ); - await player.destroy(); - if (client.websocket) - client.websocket.send( - JSON.stringify({ op: "player_destroy", guild: player.guildId }), - ); -}; diff --git a/src/events/player/playerUpdate.ts b/src/events/player/playerUpdate.ts deleted file mode 100644 index 489631f1..00000000 --- a/src/events/player/playerUpdate.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { KazagumoPlayer } from "kazagumo"; -import { Manager } from "../../manager.js"; -import { PlayerUpdate } from "shoukaku"; - -export default async ( - client: Manager, - player: KazagumoPlayer, - data: PlayerUpdate, -) => { - if (client.websocket) - client.websocket.send( - JSON.stringify({ - op: "sync_position", - guild: player.guildId, - position: player.shoukaku.position, - }), - ); -}; diff --git a/src/handlers/Player/loadContent.ts b/src/handlers/Player/loadContent.ts deleted file mode 100644 index c4870cd5..00000000 --- a/src/handlers/Player/loadContent.ts +++ /dev/null @@ -1,368 +0,0 @@ -import { Manager } from "../../manager.js"; -import { EmbedBuilder, Client, Message } from "discord.js"; -import { convertTime } from "../../structures/ConvertTime.js"; -import delay from "delay"; -import { QueueDuration } from "../../structures/QueueDuration.js"; -import { GlobalInteraction } from "../../types/Interaction.js"; - -/** - * @param {Client} client - */ -export default async (client: Manager) => { - try { - client.on( - "interactionCreate", - async (interaction: GlobalInteraction | any) => { - if (!interaction.guild || interaction.user.bot) return; - if (interaction.isButton()) { - const { customId, member } = interaction; - let voiceMember = interaction.guild.members.cache.get(member.id); - let channel = voiceMember.voice.channel; - - let player = await client.manager.players.get(interaction.guild.id); - if (!player) return; - - const playChannel = client.channels.cache.get(player.textId); - if (!playChannel) return; - - let guildModel = await client.db.get( - `language.guild_${player.guildId}`, - ); - if (!guildModel) { - guildModel = await client.db.set( - `language.guild_${player.guildId}`, - client.config.bot.LANGUAGE, - ); - } - - const language = guildModel; - - switch (customId) { - case "sprevious": - { - if (!channel) { - return interaction.reply( - `${client.i18n.get(language, "noplayer", "no_voice")}`, - ); - } else if ( - interaction.guild.members.me.voice.channel && - !interaction.guild.members.me.voice.channel.equals(channel) - ) { - return interaction.reply( - `${client.i18n.get(language, "noplayer", "no_voice")}`, - ); - } else if (!player || !player.queue.previous) { - return interaction.reply( - `${client.i18n.get( - language, - "music", - "previous_notfound", - )}`, - ); - } else { - await player.queue.unshift(player.queue.previous); - await player.skip(); - - const embed = new EmbedBuilder() - .setDescription( - `${client.i18n.get(language, "music", "previous_msg")}`, - ) - .setColor(client.color); - - interaction.reply({ embeds: [embed] }); - } - } - break; - - case "sskip": - { - if (!channel) { - return interaction.reply( - `${client.i18n.get(language, "noplayer", "no_voice")}`, - ); - } else if ( - interaction.guild.members.me.voice.channel && - !interaction.guild.members.me.voice.channel.equals(channel) - ) { - return interaction.reply( - `${client.i18n.get(language, "noplayer", "no_voice")}`, - ); - } else if (!player) { - return interaction.reply( - `${client.i18n.get(language, "noplayer", "no_player")}`, - ); - } else { - } - if (player.queue.size == 0) { - await player.destroy(); - await client.UpdateMusic(player); - - const embed = new EmbedBuilder() - .setDescription( - `${client.i18n.get(language, "music", "skip_msg")}`, - ) - .setColor(client.color); - - interaction.reply({ embeds: [embed] }); - } else { - await player.skip(); - - const embed = new EmbedBuilder() - .setDescription( - `${client.i18n.get(language, "music", "skip_msg")}`, - ) - .setColor(client.color); - - interaction.reply({ embeds: [embed] }); - } - } - break; - - case "sstop": - { - if (!channel) { - return interaction.reply( - `${client.i18n.get(language, "noplayer", "no_voice")}`, - ); - } else if ( - interaction.guild.members.me.voice.channel && - !interaction.guild.members.me.voice.channel.equals(channel) - ) { - return interaction.reply( - `${client.i18n.get(language, "noplayer", "no_voice")}`, - ); - } else if (!player) { - return interaction.reply( - `${client.i18n.get(language, "noplayer", "no_player")}`, - ); - } else { - await player.destroy(); - await client.UpdateMusic(player); - - const embed = new EmbedBuilder() - .setDescription( - `${client.i18n.get(language, "player", "stop_msg")}`, - ) - .setColor(client.color); - - interaction.reply({ embeds: [embed] }); - } - } - break; - - case "spause": - { - if (!channel) { - return interaction.reply( - `${client.i18n.get(language, "noplayer", "no_voice")}`, - ); - } else if ( - interaction.guild.members.me.voice.channel && - !interaction.guild.members.me.voice.channel.equals(channel) - ) { - return interaction.reply( - `${client.i18n.get(language, "noplayer", "no_voice")}`, - ); - } else if (!player) { - return interaction.reply( - `${client.i18n.get(language, "noplayer", "no_player")}`, - ); - } else { - await player.pause(!player.paused); - const uni = player.paused - ? `${client.i18n.get(language, "player", "switch_pause")}` - : `${client.i18n.get(language, "player", "switch_resume")}`; - - const embed = new EmbedBuilder() - .setDescription( - `${client.i18n.get(language, "player", "pause_msg", { - pause: uni, - })}`, - ) - .setColor(client.color); - - interaction.reply({ embeds: [embed] }); - } - } - break; - - case "sloop": - { - if (!player) { - return; - } - const loop_mode = { - none: "none", - track: "track", - queue: "queue", - }; - - if (player.loop === "queue") { - await player.setLoop( - loop_mode.none as "none" | "queue" | "track", - ); - - const unloopall = new EmbedBuilder() - .setDescription( - `${client.i18n.get(language, "music", "unloopall")}`, - ) - .setColor(client.color); - return await interaction.reply({ - content: " ", - embeds: [unloopall], - }); - } else if (player.loop === "none") { - await player.setLoop( - loop_mode.queue as "none" | "queue" | "track", - ); - const loopall = new EmbedBuilder() - .setDescription( - `${client.i18n.get(language, "music", "loopall")}`, - ) - .setColor(client.color); - return await interaction.reply({ - content: " ", - embeds: [loopall], - }); - } - } - break; - default: - break; - } - } - }, - ); - } catch (e) { - console.log(e); - } - /** - * @param {Client} client - * @param {Message} message - */ - - client.on("messageCreate", async (message: Message | any) => { - if (!message.guild || !message.guild.available) return; - let database = await client.db.get(`setup.guild_${message.guild.id}`); - let player = client.manager.players.get(message.guild.id); - - if (!database) - await client.db.set(`setup.guild_${message.guild.id}`, { - enable: false, - channel: "", - playmsg: "", - voice: "", - category: "", - }); - - database = await client.db.get(`setup.guild_${message.guild.id}`); - - if (!database.enable) return; - - let channel = await message.guild.channels.cache.get(database.channel); - if (!channel) return; - - if (database.channel != message.channel.id) return; - - let guildModel = await client.db.get(`language.guild_${message.guild.id}`); - if (!guildModel) { - guildModel = await client.db.set( - `language.guild_${message.guild.id}`, - "en", - ); - } - - const language = guildModel; - - if (message.author.id === client.user!.id) { - await delay(3000); - message.delete(); - } - - if (message.author.bot) return; - - const song = message.cleanContent; - await message.delete(); - if (!song) return; - - let voiceChannel = await message.member.voice.channel; - if (!voiceChannel) - return message.channel - .send(`${client.i18n.get(language, "noplayer", "no_voice")}`) - .then((msg: Message) => { - setTimeout(() => { - msg.delete(); - }, 4000); - }); - - let msg = await message.channel.messages.fetch(database.playmsg); - - if (!player) - player = await client.manager.createPlayer({ - guildId: message.guild.id, - voiceId: message.member.voice.channel.id, - textId: message.channel.id, - deaf: true, - }); - - const result = await player.search(song, { requester: message.author }); - const tracks = result.tracks; - - if (!result.tracks.length) - return msg.edit({ - content: `${client.i18n.get( - language, - "setup", - "setup_content", - )}\n${`${client.i18n.get(language, "setup", "setup_content_empty")}`}`, - }); - if (result.type === "PLAYLIST") - for (let track of tracks) player.queue.add(track); - else if (player.playing && result.type === "SEARCH") - player.queue.add(tracks[0]); - else if (player.playing && result.type !== "SEARCH") - for (let track of tracks) player.queue.add(track); - else player.play(tracks[0]); - - const TotalDuration = QueueDuration(player); - - if (result.type === "PLAYLIST") { - const embed = new EmbedBuilder() - .setDescription( - `${client.i18n.get(language, "music", "play_playlist", { - title: result.tracks[0].title, - url: result.tracks[0].uri, - duration: convertTime(TotalDuration), - songs: `${result.tracks.length}`, - request: `${result.tracks[0].requester}`, - })}`, - ) - .setColor(client.color); - msg.reply({ content: " ", embeds: [embed] }); - } else if (result.type === "TRACK") { - const embed = new EmbedBuilder() - .setDescription( - `${client.i18n.get(language, "music", "play_track", { - title: result.tracks[0].title, - url: result.tracks[0].uri, - duration: convertTime(result.tracks[0].length as number), - request: `${result.tracks[0].requester}`, - })}`, - ) - .setColor(client.color); - msg.reply({ content: " ", embeds: [embed] }); - } else if (result.type === "SEARCH") { - const embed = new EmbedBuilder().setColor(client.color).setDescription( - `${client.i18n.get(language, "music", "play_result", { - title: result.tracks[0].title, - url: result.tracks[0].uri, - duration: convertTime(result.tracks[0].length as number), - request: `${result.tracks[0].requester}`, - })}`, - ); - msg.reply({ content: " ", embeds: [embed] }); - } - - await client.UpdateQueueMsg(player); - }); -}; diff --git a/src/handlers/Player/loadEvent.ts b/src/handlers/Player/loadEvent.ts index 5d43be05..53589132 100644 --- a/src/handlers/Player/loadEvent.ts +++ b/src/handlers/Player/loadEvent.ts @@ -2,6 +2,7 @@ import { readdirSync } from "fs"; import { Manager } from "../../manager.js"; import { join, dirname } from "path"; import { fileURLToPath } from "url"; +import { DisTubeEvents } from "distube"; const __dirname = dirname(fileURLToPath(import.meta.url)); export default async (client: Manager) => { @@ -16,7 +17,7 @@ export default async (client: Manager) => { }); for (let file of events) { const evt = await import(`../../events/player/${file}`); - const eName = file.split(".")[0]; - client.manager.on(eName as "playerUpdate", evt.default.bind(null, client)); + const eName = file.split(".")[0] as keyof DisTubeEvents; + client.manager.on(eName, evt.default.bind(null, client)); } }; diff --git a/src/handlers/Player/loadSetup.ts b/src/handlers/Player/loadSetup.ts deleted file mode 100644 index 6c26615c..00000000 --- a/src/handlers/Player/loadSetup.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { Manager } from "../../manager.js"; -import { - Client, - ActionRowBuilder, - ButtonBuilder, - ButtonStyle, -} from "discord.js"; - -/** - * - * @param {Client} client - */ - -export default async (client: Manager) => { - client.enSwitch = new ActionRowBuilder().addComponents([ - new ButtonBuilder() - .setStyle(ButtonStyle.Success) - .setCustomId("spause") - .setEmoji("⏯"), - new ButtonBuilder() - .setStyle(ButtonStyle.Primary) - .setCustomId("sprevious") - .setEmoji("⬅"), - new ButtonBuilder() - .setStyle(ButtonStyle.Danger) - .setCustomId("sstop") - .setEmoji("⏹"), - new ButtonBuilder() - .setStyle(ButtonStyle.Primary) - .setCustomId("sskip") - .setEmoji("➡"), - new ButtonBuilder() - .setStyle(ButtonStyle.Success) - .setCustomId("sloop") - .setEmoji("🔄"), - ]); - - client.diSwitch = new ActionRowBuilder().addComponents([ - new ButtonBuilder() - .setStyle(ButtonStyle.Secondary) - .setCustomId("spause") - .setEmoji("⏯") - .setDisabled(true), - new ButtonBuilder() - .setStyle(ButtonStyle.Secondary) - .setCustomId("sprevious") - .setEmoji("⬅") - .setDisabled(true), - new ButtonBuilder() - .setStyle(ButtonStyle.Secondary) - .setCustomId("sstop") - .setEmoji("⏹") - .setDisabled(true), - new ButtonBuilder() - .setStyle(ButtonStyle.Secondary) - .setCustomId("sskip") - .setEmoji("➡") - .setDisabled(true), - new ButtonBuilder() - .setStyle(ButtonStyle.Secondary) - .setCustomId("sloop") - .setEmoji("🔄") - .setDisabled(true), - ]); -}; diff --git a/src/handlers/Player/loadUpdate.ts b/src/handlers/Player/loadUpdate.ts deleted file mode 100644 index e9975391..00000000 --- a/src/handlers/Player/loadUpdate.ts +++ /dev/null @@ -1,143 +0,0 @@ -import { Manager } from "../../manager.js"; -import { EmbedBuilder, TextChannel } from "discord.js"; -import formatDuration from "../../structures/FormatDuration.js"; -import { QueueDuration } from "../../structures/QueueDuration.js"; -import { KazagumoPlayer } from "kazagumo"; - -export default async (client: Manager) => { - client.UpdateQueueMsg = async function (player: KazagumoPlayer) { - let data = await client.db.get(`setup.guild_${player.guildId}`); - if (!data) return; - if (data.enable === false) return; - - let channel = (await client.channels.cache.get( - data.channel, - )) as TextChannel; - if (!channel) return; - - let playMsg = await channel.messages.fetch(data.playmsg); - if (!playMsg) return; - - let guildModel = await client.db.get(`language.guild_${player.guildId}`); - if (!guildModel) { - guildModel = await client.db.set( - `language.guild_${player.guildId}`, - client.config.bot.LANGUAGE, - ); - } - - const language = guildModel; - - const songStrings = []; - const queuedSongs = player.queue.map( - (song, i) => - `${client.i18n.get(language, "setup", "setup_content_queue", { - index: `${i + 1}`, - title: song.title, - duration: formatDuration(song.length), - request: `${song.requester}`, - })}`, - ); - - await songStrings.push(...queuedSongs); - - const Str = songStrings.slice(0, 10).join("\n"); - - const TotalDuration = QueueDuration(player); - - let cSong = player.queue.current; - let qDuration = `${formatDuration(TotalDuration)}`; - - let embed = new EmbedBuilder() - .setAuthor({ - name: `${client.i18n.get(language, "setup", "setup_author")}`, - iconURL: `${client.i18n.get(language, "setup", "setup_author_icon")}`, - }) - .setDescription( - `${client.i18n.get(language, "setup", "setup_desc", { - title: cSong!.title, - url: cSong!.uri, - duration: formatDuration(cSong!.length), - request: `${cSong!.requester}`, - })}`, - ) // [${cSong.title}](${cSong.uri}) \`[${formatDuration(cSong.duration)}]\` • ${cSong.requester} - .setColor(client.color) - .setImage(`${cSong!.thumbnail}`) - .setFooter({ - text: `${client.i18n.get(language, "setup", "setup_footer", { - songs: `${player.queue.size}`, - volume: `${player.volume}`, - duration: qDuration, - })}`, - }); //${player.queue.length} • Song's in Queue | Volume • ${player.volume}% | ${qDuration} • Total Duration - - return await playMsg - .edit({ - content: `${client.i18n.get(language, "setup", "setup_content")}\n${ - Str == "" - ? `${client.i18n.get(language, "setup", "setup_content_empty")}` - : "\n" + Str - }`, - embeds: [embed], - components: [client.enSwitch], - }) - .catch((e) => {}); - }; - - /** - * - * @param {Player} player - */ - client.UpdateMusic = async function (player: KazagumoPlayer) { - let data = await client.db.get(`setup.guild_${player.guildId}`); - if (!data) return; - if (data.enable === false) return; - - let channel = (await client.channels.cache.get( - data.channel, - )) as TextChannel; - if (!channel) return; - - let playMsg = await channel.messages.fetch(data.playmsg); - if (!playMsg) return; - - let guildModel = await client.db.get(`language.guild_${player.guildId}`); - if (!guildModel) { - guildModel = await client.db.set( - `language.guild_${player.guildId}`, - client.config.bot.LANGUAGE, - ); - } - - const language = guildModel; - - const queueMsg = `${client.i18n.get(language, "setup", "setup_queuemsg")}`; - - const playEmbed = new EmbedBuilder() - .setColor(client.color) - .setAuthor({ - name: `${client.i18n.get(language, "setup", "setup_playembed_author")}`, - }) - .setImage( - `https://cdn.discordapp.com/avatars/${client.user!.id}/${ - client.user!.avatar - }.jpeg?size=300`, - ) - .setDescription( - `${client.i18n.get(language, "setup", "setup_playembed_desc", { - clientId: client.user!.id, - })}`, - ) - .setFooter({ - text: `${client.i18n.get(language, "setup", "setup_playembed_footer")}`, - }); - - return await playMsg - .edit({ - content: `${queueMsg}`, - embeds: [playEmbed], - components: [client.diSwitch], - }) - .catch((e) => {}); - }; -}; diff --git a/src/handlers/loadCheck.ts b/src/handlers/loadCheck.ts deleted file mode 100644 index a24cb269..00000000 --- a/src/handlers/loadCheck.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Manager } from "../manager.js"; -import check_lavalink_server from "../lava_scrap/check_lavalink_server.js"; - -export default async (client: Manager) => { - if (client.config.features.AUTOFIX_LAVALINK) { - check_lavalink_server(client); - setInterval(async () => { - check_lavalink_server(client); - }, 1800000); - } -}; diff --git a/src/handlers/loadNodeEvents.ts b/src/handlers/loadNodeEvents.ts deleted file mode 100644 index 7bb81377..00000000 --- a/src/handlers/loadNodeEvents.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { readdirSync } from "fs"; -import { Manager } from "../manager.js"; -import { join, dirname } from "path"; -import { fileURLToPath } from "url"; -const __dirname = dirname(fileURLToPath(import.meta.url)); - -export default async (client: Manager) => { - const events = readdirSync(join(__dirname, "..", "events", "node")).filter( - (d) => { - if (d.endsWith(".ts")) { - return d; - } else if (d.endsWith(".js")) { - return d; - } - }, - ); - for (let file of events) { - const evt = await import(`../events/node/${file}`); - const eName = file.split(".")[0]; - client.manager.shoukaku.on(eName as "raw", evt.default.bind(null, client)); - } - - client.logger.loader("Lavalink Server Events Loaded!"); -}; diff --git a/src/handlers/loadPlayer.ts b/src/handlers/loadPlayer.ts index 70178923..77ee8486 100644 --- a/src/handlers/loadPlayer.ts +++ b/src/handlers/loadPlayer.ts @@ -2,8 +2,5 @@ import { Manager } from "../manager.js"; export default async (client: Manager) => { (await import("./Player/loadEvent.js")).default(client); - (await import("./Player/loadUpdate.js")).default(client); - (await import("./Player/loadContent.js")).default(client); - (await import("./Player/loadSetup.js")).default(client); client.logger.loader("Shoukaku Player Events Loaded!"); }; diff --git a/src/manager.ts b/src/manager.ts index eb7299ef..8a2475c5 100644 --- a/src/manager.ts +++ b/src/manager.ts @@ -10,7 +10,6 @@ import { import { connectDB } from "./database/index.js"; import { I18n } from "@hammerhq/localization"; import { resolve } from "path"; -import { LavalinkDataType, LavalinkUsingDataType } from "./types/Lavalink.js"; import * as configData from "./plugins/config.js"; import winstonLogger from "./plugins/logger.js"; import { DisTube } from 'distube' @@ -38,10 +37,6 @@ export class Manager extends Client { i18n: I18n; prefix: string; shard_status: boolean; - lavalink_list: LavalinkDataType[]; - lavalink_using: LavalinkUsingDataType[]; - fixing_nodes: boolean; - used_lavalink: LavalinkUsingDataType[]; manager: DisTube; slash: Collection; commands: Collection; @@ -92,11 +87,6 @@ export class Manager extends Client { this.prefix = this.config.features.MESSAGE_CONTENT.prefix || "d!"; this.shard_status = false; - // Auto fix lavalink varibles - this.lavalink_list = []; - this.lavalink_using = []; - this.fixing_nodes = false; - this.used_lavalink = []; this.config.features.WEB_SERVER.websocket.enable ? (this.ws_message = new Collection()) @@ -141,30 +131,20 @@ export class Manager extends Client { ] }) - console.log(this.manager) - - // if (this.config.features.AUTOFIX_LAVALINK) { - // check_lavalink_server(this); - // setInterval(async () => { - // check_lavalink_server(this); - // }, 1800000); - // } - - // if (this.config.features.WEB_SERVER.enable) { - // WebServer(this); - // } - // const loadFile = [ - // "loadEvents.js", - // "loadNodeEvents.js", - // "loadPlayer.js", - // "loadWebsocket.js", - // "loadCommand.js", - // ]; - // if (!this.config.features.WEB_SERVER.websocket.enable) - // loadFile.splice(loadFile.indexOf("loadWebsocket.js"), 1); - // loadFile.forEach(async (x) => { - // (await import(`./handlers/${x}`)).default(this); - // }); + if (this.config.features.WEB_SERVER.enable) { + WebServer(this); + } + const loadFile = [ + "loadEvents.js", + "loadPlayer.js", + "loadWebsocket.js", + // "loadCommand.js", + ]; + if (!this.config.features.WEB_SERVER.websocket.enable) + loadFile.splice(loadFile.indexOf("loadWebsocket.js"), 1); + loadFile.forEach(async (x) => { + (await import(`./handlers/${x}`)).default(this); + }); connectDB(this); } diff --git a/src/types/Lavalink.ts b/src/types/Lavalink.ts deleted file mode 100644 index 789a851f..00000000 --- a/src/types/Lavalink.ts +++ /dev/null @@ -1,26 +0,0 @@ -export type LavalinkDataType = { - host: string; - port: number; - pass: string; - secure: boolean; - name: string; - online: boolean; -}; - -export type LavalinkUsingDataType = { - host: string; - port: number; - pass: string; - secure: boolean; - name: string; -}; - -export type Headers = { - "Client-Name": string; - "User-Agent": string; - Authorization: string; - "User-Id": string; - "Resume-Key": string; -}; - -export type KazagumoLoopMode = "none" | "queue" | "track" | undefined;