├── commands └── music │ ├── pause.js │ ├── play.js │ ├── que.js │ ├── resume.js │ ├── skip.js │ ├── stop.js │ └── vol.js ├── config.json ├── index.js ├── package-lock.json └── package.json /commands/music/pause.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | module.exports = { 3 | name: "pause", 4 | aliases: ["pa"], 5 | usage: "pause", 6 | description: "pause the song!", 7 | run: async (client, message, args) => { 8 | 9 | 10 | 11 | 12 | const serverQueue = message.client.queue.get(message.guild.id); 13 | if (serverQueue && serverQueue.playing) { 14 | serverQueue.playing = false; 15 | serverQueue.connection.dispatcher.pause(); 16 | 17 | const embed1 = new Discord.MessageEmbed() 18 | .setColor("GREEN") 19 | .setDescription("⏸ Paused the music for you!") 20 | return message.channel.send(embed1); 21 | } 22 | 23 | const embed2 = new Discord.MessageEmbed() 24 | .setColor("RED") 25 | .setDescription("There is nothing playing!") 26 | return message.channel.send(embed2); 27 | 28 | 29 | } 30 | } -------------------------------------------------------------------------------- /commands/music/play.js: -------------------------------------------------------------------------------- 1 | const { Util } = require('discord.js'); 2 | const ytdl = require('ytdl-core'); 3 | 4 | const Discord = require('discord.js'); 5 | 6 | module.exports = { 7 | name: "play", 8 | aliases: ["pl"], 9 | usage: "play ", 10 | description: "play a song", 11 | run: async (client, message, args) => { 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | const embed1 = new Discord.MessageEmbed() 21 | .setDescription("I'm sorry but you need to be in a voice channel to play music!") 22 | .setColor("RED") 23 | const { channel } = message.member.voice; 24 | if (!channel) return message.channel.send(embed1); 25 | const permissions = channel.permissionsFor(message.client.user); 26 | const embed2 = new Discord.MessageEmbed() 27 | .setDescription("I cannot connect to your voice channel, make sure I have the proper permissions!") 28 | .setColor("RED") 29 | if (!permissions.has('CONNECT'))return message.channel.send(embed2); 30 | const embed7 = new Discord.MessageEmbed() 31 | .setDescription("Please make sure the Song is a YouTube Link and not a different link or words") 32 | .setColor("RED") 33 | 34 | if(message.content.includes("https://youtube.com/") ||message.content.includes(" https://www.youtube.com/") || message.content.includes("https://youtu.be.com/")) { 35 | 36 | 37 | 38 | 39 | const serverQueue = message.client.queue.get(message.guild.id); 40 | const songInfo = await ytdl.getInfo(args[0]) 41 | const song = { 42 | id: songInfo.videoDetails.video_id, 43 | title: Util.escapeMarkdown(songInfo.videoDetails.title), 44 | url: songInfo.videoDetails.video_url 45 | }; 46 | const embed4 = new Discord.MessageEmbed() 47 | .setDescription(`✅ **${song.title}** has been added to the queue!`) 48 | .setColor("GREEN") 49 | if (serverQueue) { 50 | serverQueue.songs.push(song); 51 | console.log(serverQueue.songs); 52 | return message.channel.send(embed4); 53 | } 54 | 55 | const queueConstruct = { 56 | textChannel: message.channel, 57 | voiceChannel: channel, 58 | connection: null, 59 | songs: [], 60 | volume: 2, 61 | playing: true 62 | }; 63 | message.client.queue.set(message.guild.id, queueConstruct); 64 | queueConstruct.songs.push(song); 65 | 66 | const play = async song => { 67 | const queue = message.client.queue.get(message.guild.id); 68 | if (!song) { 69 | queue.voiceChannel.leave(); 70 | message.client.queue.delete(message.guild.id); 71 | return; 72 | } 73 | 74 | const dispatcher = queue.connection.play(ytdl(song.url)) 75 | .on('finish', () => { 76 | queue.songs.shift(); 77 | play(queue.songs[0]); 78 | }) 79 | .on('error', error => console.error(error)); 80 | dispatcher.setVolumeLogarithmic(queue.volume / 5); 81 | const embed5 = new Discord.MessageEmbed() 82 | .setDescription(`🎶 Started playing: **${song.title}**`) 83 | .setColor("GREEN") 84 | queue.textChannel.send(embed5); 85 | }; 86 | 87 | try { 88 | const connection = await channel.join(); 89 | queueConstruct.connection = connection; 90 | play(queueConstruct.songs[0]); 91 | } catch (error) { 92 | console.error(`I could not join the voice channel: ${error}`); 93 | message.client.queue.delete(message.guild.id); 94 | await channel.leave(); 95 | const embed6 = new Discord.MessageEmbed() 96 | .setDescription(`I could not join the voice channel: ${error}`) 97 | .setColor("RED") 98 | return message.channel.send(embed6); 99 | } 100 | 101 | } else { 102 | message.channel.send(embed7) 103 | }; 104 | 105 | } 106 | }; -------------------------------------------------------------------------------- /commands/music/que.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | module.exports = { 3 | name: "queue", 4 | aliases: ["q"], 5 | usage: "q ", 6 | description: "q a song", 7 | run: async (client, message, args) => { 8 | 9 | 10 | 11 | 12 | const embed1 = new Discord.MessageEmbed() 13 | .setColor("RED") 14 | .setDescription("There is nothing playing.") 15 | const serverQueue = message.client.queue.get(message.guild.id); 16 | if (!serverQueue) return message.channel.send(embed1); 17 | 18 | const embed = new Discord.MessageEmbed() 19 | .setTitle("__**Song queue:**__") 20 | .setDescription(`${serverQueue.songs.map(song => `**-** ${song.title}`).join('\n')}`) 21 | .addFields({ 22 | name: "**Now playing:**", 23 | value: `${serverQueue.songs[0].title}`, 24 | }) 25 | .setColor("GREEN") 26 | 27 | return message.channel.send(embed) 28 | 29 | 30 | 31 | } 32 | } -------------------------------------------------------------------------------- /commands/music/resume.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js') 2 | module.exports = { 3 | name: "resume", 4 | aliases: ["r"], 5 | usage: "resume", 6 | description: "resume the song!", 7 | run: async (client, message, args) => { 8 | 9 | 10 | const embed1 = new Discord.MessageEmbed() 11 | .setColor("GREEN") 12 | .setDescription("▶ Resumed the music for you!") 13 | 14 | const serverQueue = message.client.queue.get(message.guild.id); 15 | if (serverQueue && !serverQueue.playing) { 16 | serverQueue.playing = true; 17 | serverQueue.connection.dispatcher.resume(); 18 | return message.channel.send(embed1); 19 | } 20 | 21 | const embed2 = new Discord.MessageEmbed() 22 | .setColor("RED") 23 | .setDescription("There is nothing playing!") 24 | return message.channel.send(embed2); 25 | 26 | 27 | } 28 | } -------------------------------------------------------------------------------- /commands/music/skip.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | 3 | module.exports = { 4 | name: "skip", 5 | aliases: ["sk"], 6 | usage: "sk", 7 | description: "skip the song!", 8 | run: async (client, message, args) => { 9 | 10 | 11 | const { channel } = message.member.voice; 12 | const embed1 = new Discord.MessageEmbed() 13 | .setDescription("I'm sorry but you need to be in a voice channel to play music!") 14 | .setColor("RED") 15 | if (!channel) return message.channel.send(embed1); 16 | const serverQueue = message.client.queue.get(message.guild.id); 17 | const embed2 = new Discord.MessageEmbed() 18 | .setDescription('There is nothing playing that I could skip for you.') 19 | .setColor("RED") 20 | if (!serverQueue) return message.channel.send(embed2); 21 | 22 | serverQueue.connection.dispatcher.end('Skip command has been used!'); 23 | 24 | } 25 | } -------------------------------------------------------------------------------- /commands/music/stop.js: -------------------------------------------------------------------------------- 1 | const Discord = require("discord.js") 2 | module.exports = { 3 | name: "stop", 4 | aliases: ["s"], 5 | usage: "stop", 6 | description: "stop a song", 7 | run: async (client, message, args) => { 8 | 9 | 10 | const embed1 = new Discord.MessageEmbed() 11 | .setDescription("I'm sorry but you need to be in a voice channel to play music!") 12 | .setColor("RED") 13 | 14 | const { channel } = message.member.voice; 15 | if (!channel) return message.channel.send(embed1); 16 | const serverQueue = message.client.queue.get(message.guild.id); 17 | const embed2 = new Discord.MessageEmbed() 18 | .setDescription("There is nothing playing that I could stop for you.") 19 | .setColor("RED") 20 | if (!serverQueue) return message.channel.send(embed2); 21 | serverQueue.songs = []; 22 | serverQueue.connection.dispatcher.end('Stop command has been used!'); 23 | 24 | const stopped = new Discord.MessageEmbed() 25 | .setColor("GREEN") 26 | .setDescription("Music Stopped!") 27 | 28 | message.channel.send(stopped) 29 | 30 | } 31 | } -------------------------------------------------------------------------------- /commands/music/vol.js: -------------------------------------------------------------------------------- 1 | const Discord = require('discord.js'); 2 | module.exports = { 3 | name: "volume", 4 | aliases: ["v"], 5 | usage: "v ", 6 | description: "change the volume", 7 | run: async (client, message, args) => { 8 | 9 | 10 | 11 | const embed1 = new Discord.MessageEmbed() 12 | .setColor("RED") 13 | .setDescription("I\'m sorry but you need to be in a voice channel to play music!") 14 | 15 | 16 | 17 | 18 | 19 | 20 | const { channel } = message.member.voice; 21 | if (!channel) return message.channel.send(embed1); 22 | const serverQueue = message.client.queue.get(message.guild.id); 23 | const embed2 = new Discord.MessageEmbed() 24 | .setColor("RED") 25 | .setDescription("There is nothing playing!") 26 | if (!serverQueue) return message.channel.send(embed2); 27 | 28 | 29 | 30 | 31 | const embed3 = new Discord.MessageEmbed() 32 | .setDescription(`The current volume is: **${serverQueue.volume}**`) 33 | 34 | if (!args[0]) return message.channel.send(embed3); 35 | serverQueue.volume = args[0]; // eslint-disable-line 36 | 37 | if (parseInt(args[0], 10) > 10 || typeof(parseInt(args[0], 10)) !== "number") return message.channel.send(embed3) 38 | 39 | const embed4 = new Discord.MessageEmbed() 40 | .setColor("GREEN") 41 | .setDescription(`I set the volume to: **${args[0]}**`) 42 | 43 | 44 | serverQueue.connection.dispatcher.setVolumeLogarithmic(args[0] / 5); 45 | return message.channel.send(embed4); 46 | 47 | 48 | } 49 | } -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | { 2 | "prefix": "PREFIX" 3 | } 4 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | const discord = require('discord.js'); 2 | const fs = require('fs'); 3 | const client = new discord.Client({ 4 | autoReconnect: true, 5 | partials: ["MESSAGE", "CHANNEL", "GUILD_MEMBER", "REACTION", "MESSAGE", "USER"] 6 | }); 7 | const config = require('./config.json') 8 | 9 | client.commands = new discord.Collection(); 10 | client.aliases = new discord.Collection(); 11 | client.queue = new Map(); 12 | 13 | 14 | 15 | 16 | const Categories = ["music"]; //Commands => Category => Command 17 | 18 | Categories.forEach(async function(Category) { // 19 | fs.readdir(`./commands/${Category}`, async function(error, files) { 20 | if (error) throw new Error(`Error In Command - Command Handler\n${error}`); 21 | files.forEach(async function(file) { 22 | if (!file.endsWith(".js")) throw new Error(`A File Does Not Ends With .js - Command Handler!`); 23 | let command = require(`./commands/${Category}/${file}`); 24 | 25 | if (!command.name || !command.aliases) throw new Error(`No Command Name & Command Aliases In A File - Command Handler!`); 26 | if (command.name) client.commands.set(command.name, command); 27 | if (command.aliases) command.aliases.forEach(aliase => client.aliases.set(aliase, command.name)); 28 | if (command.aliases.length === 0) command.aliases = null; 29 | }); 30 | }); 31 | }); 32 | 33 | client.on("message", async message => { 34 | 35 | let Prefix = config.prefix 36 | 37 | if (message.author.bot || !message.guild || message.webhookID) return; 38 | 39 | if (!message.content.startsWith(Prefix)) return; 40 | 41 | let args = message.content.slice(Prefix.length).trim().split(/ +/g); 42 | let cmd = args.shift().toLowerCase(); 43 | 44 | let command = client.commands.get(cmd) || client.commands.get(client.aliases.get(cmd)); 45 | 46 | if (!command) return console.log(`No Command Found!`); 47 | 48 | 49 | 50 | if (command) { 51 | command.run(client, message, args); 52 | }; 53 | }); 54 | 55 | 56 | 57 | client.login(process.env.TOKEN).catch(err => console.log(`Invalid Token Provided!`)); -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "IMR", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@derhuerst/http-basic": { 8 | "version": "8.2.1", 9 | "resolved": "https://registry.npmjs.org/@derhuerst/http-basic/-/http-basic-8.2.1.tgz", 10 | "integrity": "sha512-Rmn7qQQulw2sxJ8qGfZ7OuqMWuhz8V+L5xnYKMF5cXVcYqmgWqlVEAme90pF7Ya8OVhxVxLmhh0rI2k6t7ITWw==", 11 | "requires": { 12 | "caseless": "^0.12.0", 13 | "concat-stream": "^1.6.2", 14 | "http-response-object": "^3.0.1", 15 | "parse-cache-control": "^1.0.1" 16 | } 17 | }, 18 | "@discordjs/collection": { 19 | "version": "0.1.6", 20 | "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.6.tgz", 21 | "integrity": "sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ==" 22 | }, 23 | "@discordjs/form-data": { 24 | "version": "3.0.1", 25 | "resolved": "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz", 26 | "integrity": "sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==", 27 | "requires": { 28 | "asynckit": "^0.4.0", 29 | "combined-stream": "^1.0.8", 30 | "mime-types": "^2.1.12" 31 | } 32 | }, 33 | "@types/node": { 34 | "version": "10.17.51", 35 | "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.51.tgz", 36 | "integrity": "sha512-KANw+MkL626tq90l++hGelbl67irOJzGhUJk6a1Bt8QHOeh9tztJx+L0AqttraWKinmZn7Qi5lJZJzx45Gq0dg==" 37 | }, 38 | "abort-controller": { 39 | "version": "3.0.0", 40 | "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", 41 | "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", 42 | "requires": { 43 | "event-target-shim": "^5.0.0" 44 | } 45 | }, 46 | "accepts": { 47 | "version": "1.3.7", 48 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", 49 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", 50 | "requires": { 51 | "mime-types": "~2.1.24", 52 | "negotiator": "0.6.2" 53 | } 54 | }, 55 | "agent-base": { 56 | "version": "6.0.2", 57 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", 58 | "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", 59 | "requires": { 60 | "debug": "4" 61 | }, 62 | "dependencies": { 63 | "debug": { 64 | "version": "4.3.1", 65 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 66 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 67 | "requires": { 68 | "ms": "2.1.2" 69 | } 70 | }, 71 | "ms": { 72 | "version": "2.1.2", 73 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 74 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 75 | } 76 | } 77 | }, 78 | "ansi-regex": { 79 | "version": "2.1.1", 80 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 81 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 82 | }, 83 | "aproba": { 84 | "version": "1.2.0", 85 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", 86 | "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" 87 | }, 88 | "are-we-there-yet": { 89 | "version": "1.1.5", 90 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", 91 | "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", 92 | "requires": { 93 | "delegates": "^1.0.0", 94 | "readable-stream": "^2.0.6" 95 | } 96 | }, 97 | "array-flatten": { 98 | "version": "1.1.1", 99 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 100 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" 101 | }, 102 | "asynckit": { 103 | "version": "0.4.0", 104 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", 105 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" 106 | }, 107 | "base64-js": { 108 | "version": "1.5.1", 109 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 110 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 111 | }, 112 | "better-sqlite3": { 113 | "version": "7.1.2", 114 | "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-7.1.2.tgz", 115 | "integrity": "sha512-8FWYnJ6Bx94MBX03J5Ka7sTRlvXXMEm4FW2Op7nM8ErQZeyALYLmSlbMBnfr4cMpS0tj0aYZv0a+26G2YJuIjg==", 116 | "requires": { 117 | "bindings": "^1.5.0", 118 | "prebuild-install": "^5.3.3", 119 | "tar": "^6.0.5" 120 | } 121 | }, 122 | "bindings": { 123 | "version": "1.5.0", 124 | "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", 125 | "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", 126 | "requires": { 127 | "file-uri-to-path": "1.0.0" 128 | } 129 | }, 130 | "bl": { 131 | "version": "4.0.3", 132 | "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", 133 | "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", 134 | "requires": { 135 | "buffer": "^5.5.0", 136 | "inherits": "^2.0.4", 137 | "readable-stream": "^3.4.0" 138 | }, 139 | "dependencies": { 140 | "inherits": { 141 | "version": "2.0.4", 142 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 143 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 144 | }, 145 | "readable-stream": { 146 | "version": "3.6.0", 147 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 148 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 149 | "requires": { 150 | "inherits": "^2.0.3", 151 | "string_decoder": "^1.1.1", 152 | "util-deprecate": "^1.0.1" 153 | } 154 | } 155 | } 156 | }, 157 | "body-parser": { 158 | "version": "1.19.0", 159 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", 160 | "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", 161 | "requires": { 162 | "bytes": "3.1.0", 163 | "content-type": "~1.0.4", 164 | "debug": "2.6.9", 165 | "depd": "~1.1.2", 166 | "http-errors": "1.7.2", 167 | "iconv-lite": "0.4.24", 168 | "on-finished": "~2.3.0", 169 | "qs": "6.7.0", 170 | "raw-body": "2.4.0", 171 | "type-is": "~1.6.17" 172 | } 173 | }, 174 | "buffer": { 175 | "version": "5.7.1", 176 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 177 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 178 | "requires": { 179 | "base64-js": "^1.3.1", 180 | "ieee754": "^1.1.13" 181 | } 182 | }, 183 | "buffer-from": { 184 | "version": "1.1.1", 185 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", 186 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" 187 | }, 188 | "bytes": { 189 | "version": "3.1.0", 190 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", 191 | "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" 192 | }, 193 | "caseless": { 194 | "version": "0.12.0", 195 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", 196 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" 197 | }, 198 | "chownr": { 199 | "version": "1.1.4", 200 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", 201 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" 202 | }, 203 | "code-point-at": { 204 | "version": "1.1.0", 205 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 206 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" 207 | }, 208 | "combined-stream": { 209 | "version": "1.0.8", 210 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", 211 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", 212 | "requires": { 213 | "delayed-stream": "~1.0.0" 214 | } 215 | }, 216 | "concat-stream": { 217 | "version": "1.6.2", 218 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", 219 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", 220 | "requires": { 221 | "buffer-from": "^1.0.0", 222 | "inherits": "^2.0.3", 223 | "readable-stream": "^2.2.2", 224 | "typedarray": "^0.0.6" 225 | } 226 | }, 227 | "console-control-strings": { 228 | "version": "1.1.0", 229 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 230 | "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" 231 | }, 232 | "content-disposition": { 233 | "version": "0.5.3", 234 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", 235 | "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", 236 | "requires": { 237 | "safe-buffer": "5.1.2" 238 | } 239 | }, 240 | "content-type": { 241 | "version": "1.0.4", 242 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 243 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 244 | }, 245 | "cookie": { 246 | "version": "0.4.0", 247 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", 248 | "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" 249 | }, 250 | "cookie-signature": { 251 | "version": "1.0.6", 252 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 253 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" 254 | }, 255 | "core-util-is": { 256 | "version": "1.0.2", 257 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 258 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 259 | }, 260 | "debug": { 261 | "version": "2.6.9", 262 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 263 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 264 | "requires": { 265 | "ms": "2.0.0" 266 | } 267 | }, 268 | "decompress-response": { 269 | "version": "4.2.1", 270 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-4.2.1.tgz", 271 | "integrity": "sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==", 272 | "requires": { 273 | "mimic-response": "^2.0.0" 274 | } 275 | }, 276 | "deep-extend": { 277 | "version": "0.6.0", 278 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 279 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" 280 | }, 281 | "delayed-stream": { 282 | "version": "1.0.0", 283 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", 284 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" 285 | }, 286 | "delegates": { 287 | "version": "1.0.0", 288 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 289 | "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" 290 | }, 291 | "depd": { 292 | "version": "1.1.2", 293 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", 294 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" 295 | }, 296 | "destroy": { 297 | "version": "1.0.4", 298 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", 299 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" 300 | }, 301 | "detect-libc": { 302 | "version": "1.0.3", 303 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", 304 | "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" 305 | }, 306 | "discord.js": { 307 | "version": "12.5.1", 308 | "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-12.5.1.tgz", 309 | "integrity": "sha512-VwZkVaUAIOB9mKdca0I5MefPMTQJTNg0qdgi1huF3iwsFwJ0L5s/Y69AQe+iPmjuV6j9rtKoG0Ta0n9vgEIL6w==", 310 | "requires": { 311 | "@discordjs/collection": "^0.1.6", 312 | "@discordjs/form-data": "^3.0.1", 313 | "abort-controller": "^3.0.0", 314 | "node-fetch": "^2.6.1", 315 | "prism-media": "^1.2.2", 316 | "setimmediate": "^1.0.5", 317 | "tweetnacl": "^1.0.3", 318 | "ws": "^7.3.1" 319 | } 320 | }, 321 | "ee-first": { 322 | "version": "1.1.1", 323 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 324 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" 325 | }, 326 | "encodeurl": { 327 | "version": "1.0.2", 328 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 329 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" 330 | }, 331 | "end-of-stream": { 332 | "version": "1.4.4", 333 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", 334 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", 335 | "requires": { 336 | "once": "^1.4.0" 337 | } 338 | }, 339 | "env-paths": { 340 | "version": "2.2.0", 341 | "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", 342 | "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==" 343 | }, 344 | "escape-html": { 345 | "version": "1.0.3", 346 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 347 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" 348 | }, 349 | "etag": { 350 | "version": "1.8.1", 351 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 352 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" 353 | }, 354 | "event-target-shim": { 355 | "version": "5.0.1", 356 | "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", 357 | "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" 358 | }, 359 | "expand-template": { 360 | "version": "2.0.3", 361 | "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", 362 | "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==" 363 | }, 364 | "express": { 365 | "version": "4.17.1", 366 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", 367 | "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", 368 | "requires": { 369 | "accepts": "~1.3.7", 370 | "array-flatten": "1.1.1", 371 | "body-parser": "1.19.0", 372 | "content-disposition": "0.5.3", 373 | "content-type": "~1.0.4", 374 | "cookie": "0.4.0", 375 | "cookie-signature": "1.0.6", 376 | "debug": "2.6.9", 377 | "depd": "~1.1.2", 378 | "encodeurl": "~1.0.2", 379 | "escape-html": "~1.0.3", 380 | "etag": "~1.8.1", 381 | "finalhandler": "~1.1.2", 382 | "fresh": "0.5.2", 383 | "merge-descriptors": "1.0.1", 384 | "methods": "~1.1.2", 385 | "on-finished": "~2.3.0", 386 | "parseurl": "~1.3.3", 387 | "path-to-regexp": "0.1.7", 388 | "proxy-addr": "~2.0.5", 389 | "qs": "6.7.0", 390 | "range-parser": "~1.2.1", 391 | "safe-buffer": "5.1.2", 392 | "send": "0.17.1", 393 | "serve-static": "1.14.1", 394 | "setprototypeof": "1.1.1", 395 | "statuses": "~1.5.0", 396 | "type-is": "~1.6.18", 397 | "utils-merge": "1.0.1", 398 | "vary": "~1.1.2" 399 | } 400 | }, 401 | "ffmpeg-static": { 402 | "version": "4.2.7", 403 | "resolved": "https://registry.npmjs.org/ffmpeg-static/-/ffmpeg-static-4.2.7.tgz", 404 | "integrity": "sha512-SGnOr2d+k0/9toRIv9t5/hN/DMYbm5XMtG0wVwGM1tEyXJAD6dbcWOEvfHq4LOySm9uykKL6LMC4eVPeteUnbQ==", 405 | "requires": { 406 | "@derhuerst/http-basic": "^8.2.0", 407 | "env-paths": "^2.2.0", 408 | "https-proxy-agent": "^5.0.0", 409 | "progress": "^2.0.3" 410 | } 411 | }, 412 | "file-uri-to-path": { 413 | "version": "1.0.0", 414 | "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", 415 | "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" 416 | }, 417 | "finalhandler": { 418 | "version": "1.1.2", 419 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", 420 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", 421 | "requires": { 422 | "debug": "2.6.9", 423 | "encodeurl": "~1.0.2", 424 | "escape-html": "~1.0.3", 425 | "on-finished": "~2.3.0", 426 | "parseurl": "~1.3.3", 427 | "statuses": "~1.5.0", 428 | "unpipe": "~1.0.0" 429 | } 430 | }, 431 | "forwarded": { 432 | "version": "0.1.2", 433 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", 434 | "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" 435 | }, 436 | "fresh": { 437 | "version": "0.5.2", 438 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 439 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" 440 | }, 441 | "fs-constants": { 442 | "version": "1.0.0", 443 | "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", 444 | "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" 445 | }, 446 | "fs-minipass": { 447 | "version": "2.1.0", 448 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", 449 | "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", 450 | "requires": { 451 | "minipass": "^3.0.0" 452 | } 453 | }, 454 | "gauge": { 455 | "version": "2.7.4", 456 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", 457 | "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", 458 | "requires": { 459 | "aproba": "^1.0.3", 460 | "console-control-strings": "^1.0.0", 461 | "has-unicode": "^2.0.0", 462 | "object-assign": "^4.1.0", 463 | "signal-exit": "^3.0.0", 464 | "string-width": "^1.0.1", 465 | "strip-ansi": "^3.0.1", 466 | "wide-align": "^1.1.0" 467 | } 468 | }, 469 | "github-from-package": { 470 | "version": "0.0.0", 471 | "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", 472 | "integrity": "sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4=" 473 | }, 474 | "has-unicode": { 475 | "version": "2.0.1", 476 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 477 | "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" 478 | }, 479 | "http-errors": { 480 | "version": "1.7.2", 481 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", 482 | "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", 483 | "requires": { 484 | "depd": "~1.1.2", 485 | "inherits": "2.0.3", 486 | "setprototypeof": "1.1.1", 487 | "statuses": ">= 1.5.0 < 2", 488 | "toidentifier": "1.0.0" 489 | } 490 | }, 491 | "http-response-object": { 492 | "version": "3.0.2", 493 | "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", 494 | "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", 495 | "requires": { 496 | "@types/node": "^10.0.3" 497 | } 498 | }, 499 | "https-proxy-agent": { 500 | "version": "5.0.0", 501 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", 502 | "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", 503 | "requires": { 504 | "agent-base": "6", 505 | "debug": "4" 506 | }, 507 | "dependencies": { 508 | "debug": { 509 | "version": "4.3.1", 510 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", 511 | "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", 512 | "requires": { 513 | "ms": "2.1.2" 514 | } 515 | }, 516 | "ms": { 517 | "version": "2.1.2", 518 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 519 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 520 | } 521 | } 522 | }, 523 | "iconv-lite": { 524 | "version": "0.4.24", 525 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 526 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 527 | "requires": { 528 | "safer-buffer": ">= 2.1.2 < 3" 529 | } 530 | }, 531 | "ieee754": { 532 | "version": "1.2.1", 533 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 534 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 535 | }, 536 | "inherits": { 537 | "version": "2.0.3", 538 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", 539 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" 540 | }, 541 | "ini": { 542 | "version": "1.3.8", 543 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", 544 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" 545 | }, 546 | "ipaddr.js": { 547 | "version": "1.9.1", 548 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 549 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 550 | }, 551 | "is-fullwidth-code-point": { 552 | "version": "1.0.0", 553 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 554 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 555 | "requires": { 556 | "number-is-nan": "^1.0.0" 557 | } 558 | }, 559 | "isarray": { 560 | "version": "1.0.0", 561 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 562 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 563 | }, 564 | "lodash": { 565 | "version": "4.17.20", 566 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", 567 | "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==" 568 | }, 569 | "m3u8stream": { 570 | "version": "0.8.3", 571 | "resolved": "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.3.tgz", 572 | "integrity": "sha512-0nAcdrF8YJKUkb6PzWdvGftTPyCVWgoiot1AkNVbPKTeIGsWs6DrOjifrJ0Zi8WQfQmD2SuVCjkYIOip12igng==", 573 | "requires": { 574 | "miniget": "^4.0.0", 575 | "sax": "^1.2.4" 576 | } 577 | }, 578 | "media-typer": { 579 | "version": "0.3.0", 580 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 581 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" 582 | }, 583 | "merge-descriptors": { 584 | "version": "1.0.1", 585 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 586 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" 587 | }, 588 | "methods": { 589 | "version": "1.1.2", 590 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 591 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" 592 | }, 593 | "mime": { 594 | "version": "1.6.0", 595 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 596 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 597 | }, 598 | "mime-db": { 599 | "version": "1.45.0", 600 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz", 601 | "integrity": "sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==" 602 | }, 603 | "mime-types": { 604 | "version": "2.1.28", 605 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz", 606 | "integrity": "sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==", 607 | "requires": { 608 | "mime-db": "1.45.0" 609 | } 610 | }, 611 | "mimic-response": { 612 | "version": "2.1.0", 613 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-2.1.0.tgz", 614 | "integrity": "sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==" 615 | }, 616 | "miniget": { 617 | "version": "4.2.0", 618 | "resolved": "https://registry.npmjs.org/miniget/-/miniget-4.2.0.tgz", 619 | "integrity": "sha512-IzTOaNgBw/qEpzkPTE7X2cUVXQfSKbG8w52Emi93zb+Zya2ZFrbmavpixzebuDJD9Ku4ecbaFlC7Y1cEESzQtQ==" 620 | }, 621 | "minimist": { 622 | "version": "1.2.5", 623 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", 624 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" 625 | }, 626 | "minipass": { 627 | "version": "3.1.3", 628 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", 629 | "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", 630 | "requires": { 631 | "yallist": "^4.0.0" 632 | } 633 | }, 634 | "minizlib": { 635 | "version": "2.1.2", 636 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", 637 | "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", 638 | "requires": { 639 | "minipass": "^3.0.0", 640 | "yallist": "^4.0.0" 641 | } 642 | }, 643 | "mkdirp": { 644 | "version": "1.0.4", 645 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", 646 | "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" 647 | }, 648 | "mkdirp-classic": { 649 | "version": "0.5.3", 650 | "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", 651 | "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==" 652 | }, 653 | "ms": { 654 | "version": "2.0.0", 655 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 656 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" 657 | }, 658 | "napi-build-utils": { 659 | "version": "1.0.2", 660 | "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", 661 | "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==" 662 | }, 663 | "negotiator": { 664 | "version": "0.6.2", 665 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", 666 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" 667 | }, 668 | "node-abi": { 669 | "version": "2.19.3", 670 | "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-2.19.3.tgz", 671 | "integrity": "sha512-9xZrlyfvKhWme2EXFKQhZRp1yNWT/uI1luYPr3sFl+H4keYY4xR+1jO7mvTTijIsHf1M+QDe9uWuKeEpLInIlg==", 672 | "requires": { 673 | "semver": "^5.4.1" 674 | } 675 | }, 676 | "node-fetch": { 677 | "version": "2.6.1", 678 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", 679 | "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" 680 | }, 681 | "noop-logger": { 682 | "version": "0.1.1", 683 | "resolved": "https://registry.npmjs.org/noop-logger/-/noop-logger-0.1.1.tgz", 684 | "integrity": "sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI=" 685 | }, 686 | "npmlog": { 687 | "version": "4.1.2", 688 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", 689 | "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", 690 | "requires": { 691 | "are-we-there-yet": "~1.1.2", 692 | "console-control-strings": "~1.1.0", 693 | "gauge": "~2.7.3", 694 | "set-blocking": "~2.0.0" 695 | } 696 | }, 697 | "number-is-nan": { 698 | "version": "1.0.1", 699 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 700 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" 701 | }, 702 | "object-assign": { 703 | "version": "4.1.1", 704 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 705 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 706 | }, 707 | "on-finished": { 708 | "version": "2.3.0", 709 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", 710 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 711 | "requires": { 712 | "ee-first": "1.1.1" 713 | } 714 | }, 715 | "once": { 716 | "version": "1.4.0", 717 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 718 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 719 | "requires": { 720 | "wrappy": "1" 721 | } 722 | }, 723 | "opusscript": { 724 | "version": "0.0.7", 725 | "resolved": "https://registry.npmjs.org/opusscript/-/opusscript-0.0.7.tgz", 726 | "integrity": "sha512-DcBadTdYTUuH9zQtepsLjQn4Ll6rs3dmeFvN+SD0ThPnxRBRm/WC1zXWPg+wgAJimB784gdZvUMA57gDP7FdVg==" 727 | }, 728 | "parse-cache-control": { 729 | "version": "1.0.1", 730 | "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", 731 | "integrity": "sha1-juqz5U+laSD+Fro493+iGqzC104=" 732 | }, 733 | "parseurl": { 734 | "version": "1.3.3", 735 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 736 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 737 | }, 738 | "path-to-regexp": { 739 | "version": "0.1.7", 740 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 741 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" 742 | }, 743 | "prebuild-install": { 744 | "version": "5.3.6", 745 | "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-5.3.6.tgz", 746 | "integrity": "sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg==", 747 | "requires": { 748 | "detect-libc": "^1.0.3", 749 | "expand-template": "^2.0.3", 750 | "github-from-package": "0.0.0", 751 | "minimist": "^1.2.3", 752 | "mkdirp-classic": "^0.5.3", 753 | "napi-build-utils": "^1.0.1", 754 | "node-abi": "^2.7.0", 755 | "noop-logger": "^0.1.1", 756 | "npmlog": "^4.0.1", 757 | "pump": "^3.0.0", 758 | "rc": "^1.2.7", 759 | "simple-get": "^3.0.3", 760 | "tar-fs": "^2.0.0", 761 | "tunnel-agent": "^0.6.0", 762 | "which-pm-runs": "^1.0.0" 763 | } 764 | }, 765 | "prism-media": { 766 | "version": "1.2.3", 767 | "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.2.3.tgz", 768 | "integrity": "sha512-fSrR66n0l6roW9Rx4rSLMyTPTjRTiXy5RVqDOurACQ6si1rKHHKDU5gwBJoCsIV0R3o9gi+K50akl/qyw1C74A==" 769 | }, 770 | "process-nextick-args": { 771 | "version": "2.0.1", 772 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 773 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 774 | }, 775 | "progress": { 776 | "version": "2.0.3", 777 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 778 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" 779 | }, 780 | "proxy-addr": { 781 | "version": "2.0.6", 782 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", 783 | "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", 784 | "requires": { 785 | "forwarded": "~0.1.2", 786 | "ipaddr.js": "1.9.1" 787 | } 788 | }, 789 | "pump": { 790 | "version": "3.0.0", 791 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", 792 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", 793 | "requires": { 794 | "end-of-stream": "^1.1.0", 795 | "once": "^1.3.1" 796 | } 797 | }, 798 | "qs": { 799 | "version": "6.7.0", 800 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", 801 | "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" 802 | }, 803 | "quick.db": { 804 | "version": "7.1.3", 805 | "resolved": "https://registry.npmjs.org/quick.db/-/quick.db-7.1.3.tgz", 806 | "integrity": "sha512-0S1fVb9OAZGhkI4ZIc5Oe4yWMwhz20xSsziwd6+yGWKKMsPt+XOfj/gD5CesGxd2WdqBkZFBiP8ZqWDu55HLHA==", 807 | "requires": { 808 | "better-sqlite3": "^7.1.1", 809 | "lodash": "^4.17.20" 810 | } 811 | }, 812 | "range-parser": { 813 | "version": "1.2.1", 814 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 815 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 816 | }, 817 | "raw-body": { 818 | "version": "2.4.0", 819 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", 820 | "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", 821 | "requires": { 822 | "bytes": "3.1.0", 823 | "http-errors": "1.7.2", 824 | "iconv-lite": "0.4.24", 825 | "unpipe": "1.0.0" 826 | } 827 | }, 828 | "rc": { 829 | "version": "1.2.8", 830 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 831 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 832 | "requires": { 833 | "deep-extend": "^0.6.0", 834 | "ini": "~1.3.0", 835 | "minimist": "^1.2.0", 836 | "strip-json-comments": "~2.0.1" 837 | } 838 | }, 839 | "readable-stream": { 840 | "version": "2.3.7", 841 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", 842 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", 843 | "requires": { 844 | "core-util-is": "~1.0.0", 845 | "inherits": "~2.0.3", 846 | "isarray": "~1.0.0", 847 | "process-nextick-args": "~2.0.0", 848 | "safe-buffer": "~5.1.1", 849 | "string_decoder": "~1.1.1", 850 | "util-deprecate": "~1.0.1" 851 | } 852 | }, 853 | "safe-buffer": { 854 | "version": "5.1.2", 855 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 856 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 857 | }, 858 | "safer-buffer": { 859 | "version": "2.1.2", 860 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 861 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 862 | }, 863 | "sax": { 864 | "version": "1.2.4", 865 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", 866 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" 867 | }, 868 | "semver": { 869 | "version": "5.7.1", 870 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 871 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 872 | }, 873 | "send": { 874 | "version": "0.17.1", 875 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", 876 | "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", 877 | "requires": { 878 | "debug": "2.6.9", 879 | "depd": "~1.1.2", 880 | "destroy": "~1.0.4", 881 | "encodeurl": "~1.0.2", 882 | "escape-html": "~1.0.3", 883 | "etag": "~1.8.1", 884 | "fresh": "0.5.2", 885 | "http-errors": "~1.7.2", 886 | "mime": "1.6.0", 887 | "ms": "2.1.1", 888 | "on-finished": "~2.3.0", 889 | "range-parser": "~1.2.1", 890 | "statuses": "~1.5.0" 891 | }, 892 | "dependencies": { 893 | "ms": { 894 | "version": "2.1.1", 895 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", 896 | "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" 897 | } 898 | } 899 | }, 900 | "serve-static": { 901 | "version": "1.14.1", 902 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", 903 | "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", 904 | "requires": { 905 | "encodeurl": "~1.0.2", 906 | "escape-html": "~1.0.3", 907 | "parseurl": "~1.3.3", 908 | "send": "0.17.1" 909 | } 910 | }, 911 | "set-blocking": { 912 | "version": "2.0.0", 913 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 914 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" 915 | }, 916 | "setimmediate": { 917 | "version": "1.0.5", 918 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", 919 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" 920 | }, 921 | "setprototypeof": { 922 | "version": "1.1.1", 923 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", 924 | "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" 925 | }, 926 | "signal-exit": { 927 | "version": "3.0.3", 928 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", 929 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" 930 | }, 931 | "simple-concat": { 932 | "version": "1.0.1", 933 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", 934 | "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" 935 | }, 936 | "simple-get": { 937 | "version": "3.1.0", 938 | "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-3.1.0.tgz", 939 | "integrity": "sha512-bCR6cP+aTdScaQCnQKbPKtJOKDp/hj9EDLJo3Nw4y1QksqaovlW/bnptB6/c1e+qmNIDHRK+oXFDdEqBT8WzUA==", 940 | "requires": { 941 | "decompress-response": "^4.2.0", 942 | "once": "^1.3.1", 943 | "simple-concat": "^1.0.0" 944 | } 945 | }, 946 | "statuses": { 947 | "version": "1.5.0", 948 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", 949 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" 950 | }, 951 | "string-width": { 952 | "version": "1.0.2", 953 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 954 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 955 | "requires": { 956 | "code-point-at": "^1.0.0", 957 | "is-fullwidth-code-point": "^1.0.0", 958 | "strip-ansi": "^3.0.0" 959 | } 960 | }, 961 | "string_decoder": { 962 | "version": "1.1.1", 963 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 964 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 965 | "requires": { 966 | "safe-buffer": "~5.1.0" 967 | } 968 | }, 969 | "strip-ansi": { 970 | "version": "3.0.1", 971 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 972 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 973 | "requires": { 974 | "ansi-regex": "^2.0.0" 975 | } 976 | }, 977 | "strip-json-comments": { 978 | "version": "2.0.1", 979 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 980 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" 981 | }, 982 | "tar": { 983 | "version": "6.1.0", 984 | "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz", 985 | "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==", 986 | "requires": { 987 | "chownr": "^2.0.0", 988 | "fs-minipass": "^2.0.0", 989 | "minipass": "^3.0.0", 990 | "minizlib": "^2.1.1", 991 | "mkdirp": "^1.0.3", 992 | "yallist": "^4.0.0" 993 | }, 994 | "dependencies": { 995 | "chownr": { 996 | "version": "2.0.0", 997 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", 998 | "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" 999 | } 1000 | } 1001 | }, 1002 | "tar-fs": { 1003 | "version": "2.1.1", 1004 | "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", 1005 | "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", 1006 | "requires": { 1007 | "chownr": "^1.1.1", 1008 | "mkdirp-classic": "^0.5.2", 1009 | "pump": "^3.0.0", 1010 | "tar-stream": "^2.1.4" 1011 | } 1012 | }, 1013 | "tar-stream": { 1014 | "version": "2.2.0", 1015 | "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", 1016 | "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", 1017 | "requires": { 1018 | "bl": "^4.0.3", 1019 | "end-of-stream": "^1.4.1", 1020 | "fs-constants": "^1.0.0", 1021 | "inherits": "^2.0.3", 1022 | "readable-stream": "^3.1.1" 1023 | }, 1024 | "dependencies": { 1025 | "readable-stream": { 1026 | "version": "3.6.0", 1027 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", 1028 | "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", 1029 | "requires": { 1030 | "inherits": "^2.0.3", 1031 | "string_decoder": "^1.1.1", 1032 | "util-deprecate": "^1.0.1" 1033 | } 1034 | } 1035 | } 1036 | }, 1037 | "toidentifier": { 1038 | "version": "1.0.0", 1039 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", 1040 | "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" 1041 | }, 1042 | "tunnel-agent": { 1043 | "version": "0.6.0", 1044 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", 1045 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", 1046 | "requires": { 1047 | "safe-buffer": "^5.0.1" 1048 | } 1049 | }, 1050 | "tweetnacl": { 1051 | "version": "1.0.3", 1052 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", 1053 | "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" 1054 | }, 1055 | "type-is": { 1056 | "version": "1.6.18", 1057 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1058 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1059 | "requires": { 1060 | "media-typer": "0.3.0", 1061 | "mime-types": "~2.1.24" 1062 | } 1063 | }, 1064 | "typedarray": { 1065 | "version": "0.0.6", 1066 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", 1067 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" 1068 | }, 1069 | "unpipe": { 1070 | "version": "1.0.0", 1071 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1072 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" 1073 | }, 1074 | "util-deprecate": { 1075 | "version": "1.0.2", 1076 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1077 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1078 | }, 1079 | "utils-merge": { 1080 | "version": "1.0.1", 1081 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1082 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" 1083 | }, 1084 | "vary": { 1085 | "version": "1.1.2", 1086 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1087 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" 1088 | }, 1089 | "which-pm-runs": { 1090 | "version": "1.0.0", 1091 | "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", 1092 | "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=" 1093 | }, 1094 | "wide-align": { 1095 | "version": "1.1.3", 1096 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", 1097 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", 1098 | "requires": { 1099 | "string-width": "^1.0.2 || 2" 1100 | } 1101 | }, 1102 | "wrappy": { 1103 | "version": "1.0.2", 1104 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1105 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 1106 | }, 1107 | "ws": { 1108 | "version": "7.4.2", 1109 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.2.tgz", 1110 | "integrity": "sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA==" 1111 | }, 1112 | "yallist": { 1113 | "version": "4.0.0", 1114 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1115 | "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" 1116 | }, 1117 | "ytdl-core": { 1118 | "version": "4.4.5", 1119 | "resolved": "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.4.5.tgz", 1120 | "integrity": "sha512-/ugilIF2PskxNfQgkYZ/esvkp+fiB/mOPdIExW/En+1QTbq5VeTVqgf2hETTen0Co2lHMM4eRxPaczDHTmkb7A==", 1121 | "requires": { 1122 | "m3u8stream": "^0.8.3", 1123 | "miniget": "^4.0.0", 1124 | "sax": "^1.1.3" 1125 | } 1126 | } 1127 | } 1128 | } 1129 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "IMR", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "discord.js": "^12.5.1", 14 | "express": "^4.17.1", 15 | "ffmpeg-static": "^4.2.7", 16 | "opusscript": "0.0.7", 17 | "quick.db": "^7.1.3", 18 | "ytdl-core": "^4.4.5" 19 | } 20 | } 21 | --------------------------------------------------------------------------------