├── .github
└── dependabot.yml
├── .gitignore
├── LICENSE
├── README.md
├── commands
├── invites.js
└── leaderboard.js
├── config.json
├── events
├── guildCreate.js
├── guildDelete.js
├── guildMemberAdd.js
├── guildMemberRemove.js
├── inviteCreate.js
└── inviteDelete.js
├── index.js
├── package-lock.json
├── package.json
├── renovate.json
├── start.bat
└── template.env
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # To get started with Dependabot version updates, you'll need to specify which
2 | # package ecosystems to update and where the package manifests are located.
3 | # Please see the documentation for all configuration options:
4 | # https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5 |
6 | version: 2
7 | updates:
8 | - package-ecosystem: "npm" # See documentation for possible values
9 | directory: "/" # Location of package manifests
10 | allow:
11 | - dependency-name: "lodash"
12 | schedule:
13 | interval: "daily"
14 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | commands/eval.js
2 | backupCommands
3 | *.backup
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Jozef Steinhübl
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
Invite Manager
3 |
4 |
5 | ----
6 |
7 | ### Star please (Please)
8 |
9 | **Mutli guild is currently WIP**
10 |
11 | ### **How to use?**
12 | - Download the repo, create a `.env` file, and add your `token` into it.
13 | - You need to change guildOnly to your guild id or simply delete this line.
14 | - You need to install @keyv/ | [Keyv](https://www.npmjs.com/package/keyv)
15 |
16 | ### Support
17 | - https://gcommands.js.org
18 | - https://discord.gg/AjKJSBbGm2
19 |
20 | ### Requirements
21 | - Node `12.x+`
22 | - `discord.js 12` npm
23 | - `gcommands v4` npm
24 | - `keyv` npm
25 |
26 |
27 | `npm i discord.js gcommands keyv`
--------------------------------------------------------------------------------
/commands/invites.js:
--------------------------------------------------------------------------------
1 | const { MessageEmbed } = require("discord.js");
2 | const { MessageActionRow, MessageButton, ArgumentType } = require("gcommands");
3 | const config = require("../config.json")
4 |
5 | module.exports = {
6 | name: "invites",
7 | description: "Check invites",
8 | clientRequiredPermissions: ["SEND_MESAGES","EMBED_LINKS"],
9 | args: [
10 | {
11 | name: "add",
12 | type: ArgumentType.SUB_COMMAND,
13 | description: "add invites",
14 | options: [
15 | {
16 | name: "member",
17 | type: 6,
18 | description: "Member invites",
19 | required: true
20 | },
21 | {
22 | name: "value",
23 | type: ArgumentType.INTEGER,
24 | description: "value lol",
25 | required: true
26 | },
27 | ]
28 | },
29 | {
30 | name: "set",
31 | type: ArgumentType.SUB_COMMAND,
32 | description: "set invites",
33 | options: [
34 | {
35 | name: "member",
36 | type: 6,
37 | description: "Member invites",
38 | required: true
39 | },
40 | {
41 | name: "value",
42 | type: ArgumentType.INTEGER,
43 | description: "value lol",
44 | required: true
45 | },
46 | ]
47 | },
48 | {
49 | name: "remove",
50 | type: ArgumentType.SUB_COMMAND,
51 | description: "remove invites",
52 | options: [
53 | {
54 | name: "member",
55 | type: 6,
56 | description: "Member invites",
57 | required: true
58 | },
59 | {
60 | name: "value",
61 | type: ArgumentType.INTEGER,
62 | description: "value lol",
63 | required: true
64 | },
65 | ]
66 | },
67 | {
68 | name: "get",
69 | type: ArgumentType.SUB_COMMAND,
70 | description: "get invites",
71 | options: [
72 | {
73 | name: "member",
74 | type: 6,
75 | description: "Member invites",
76 | required: false
77 | }
78 | ]
79 | },
80 | ],
81 | guildOnly: config.guildId,
82 | run: async({client, member, guild, channel, message, respond}, args, objargs) => {
83 | let checkingMember = member;
84 | if(args[1]) checkingMember = guild.members.cache.get(args[1]) || member;
85 |
86 | let totalData = await client.db.get(`guild_${guild.id}`);
87 | let invites = totalData.invites.find((v) => v.userId === checkingMember.id);
88 |
89 | if (args[0] === "add") {
90 | invites.bonus = parseInt(invites.bonus) + parseInt(args[2]);
91 | totalData.invites[totalData.invites.findIndex((a) => a.userId === invites.userId)] = invites;
92 |
93 | await client.db.set(`guild_${guild.id}`, totalData);
94 |
95 | respond(`${checkingMember} +${args[2]} invites`);
96 | } else if (args[0] === "remove") {
97 | invites.bonus = parseInt(invites.bonus) - parseInt(args[2]);
98 | totalData.invites[totalData.invites.findIndex((a) => a.userId === invites.userId)] = invites;
99 | await client.db.set(`guild_${guild.id}`, totalData);
100 |
101 | respond(`${checkingMember} -${args[2]} invites`);
102 | } else if (args[0] === "set") {
103 | invites.bonus = parseInt(args[2]);
104 | totalData.invites[totalData.invites.findIndex((a) => a.userId === invites.userId)] = invites;
105 | await client.db.set(`guild_${guild.id}`, totalData);
106 |
107 | respond(`${checkingMember} ${args[2]} invites`);
108 | } else if (args[0] === "get") {
109 | let embed = new MessageEmbed()
110 | .setAuthor(checkingMember.user.username)
111 | .setFooter(checkingMember.user.tag, checkingMember.user.avatarURL({dynamic:true}))
112 | .setColor(client.config.embedColor)
113 |
114 | if(checkingMember.id != member.id) embed.setDescription(`${checkingMember} has **${client.calculateInvites(invites)}** invites!`)
115 | else embed.setDescription(`You have **${client.calculateInvites(invites)}** invites!`)
116 |
117 | embed.setDescription([
118 | `${embed.description}`,
119 | ``,
120 | `✅ ${invites.regular ? invites.regular.length : "0"} regular`,
121 | `✨ ${invites.bonus || "0"} bonus`,
122 | `💩 ${invites.fake ? invites.fake.length : "0"} fake`,
123 | `❌ ${invites.leaves ? invites.leaves.length : "0"} leaves`
124 | ].join("\n"));
125 |
126 | respond(embed);
127 | }
128 |
129 | /*let embed = new MessageEmbed()
130 | .setAuthor(checkingMember.user.username)
131 | .setFooter(checkingMember.user.tag, checkingMember.user.avatarURL({dynamic:true}))
132 | .setColor(client.config.embedColor)
133 |
134 | if(checkingMember.id != member.id) embed.setDescription(`${checkingMember} has **${client.calculateInvites(invites)}** invites!`)
135 | else embed.setDescription(`You have **${client.calculateInvites(invites)}** invites!`)
136 |
137 | embed.setDescription([
138 | `${embed.description}`,
139 | ``,
140 | `✅ ${invites.regular ? invites.regular.length : "UNKNOWN"} regular`,
141 | `✨ ${invites.bonus ? invites.bonus.length : "UNKNOWN"} bonus`,
142 | `💩 ${invites.fake ? invites.fake.length : "UNKNOWN"} fake`,
143 | `❌ ${invites.leaves ? invites.leaves.length : "UNKNOWN"} leaves`
144 | ].join("\n"));
145 |
146 | respond(embed);*/
147 | }
148 | };
149 |
--------------------------------------------------------------------------------
/commands/leaderboard.js:
--------------------------------------------------------------------------------
1 | const { MessageEmbed } = require("discord.js")
2 | const { MessageActionRow, MessageButton } = require("gcommands")
3 | const config = require("../config.json")
4 |
5 | module.exports = {
6 | name: "leaderboard",
7 | description: "Check top",
8 | clientRequiredPermissions: ["SEND_MESAGES","EMBED_LINKS"],
9 | guildOnly: config.guildId,
10 | run: async({client, member, guild, channel, message, respond, edit}, args) => {
11 | let embed = new MessageEmbed()
12 | .setAuthor(`${guild.name} | Invite LeaderBoard`)
13 | .setColor("#5865F2");
14 |
15 | let invites = await client.db.get(`guild_${guild.id}`);
16 |
17 | let strings = invites.invites
18 | .filter(xd => client.calculateInvites(xd) !== 0)
19 | .sort((a, b) => client.calculateInvites(b) - client.calculateInvites(a))
20 | .map((a, i) => `${a.userId === member.id ? "**" : ""}#${i + 1}⼁${client.users.cache.get(a.userId).tag} — ${client.calculateInvites(a)} invites${a.userId === member.id ? "**" : ""}`);
21 |
22 | if (strings.length === 0) strings.push("```Noone has any invites! Strange...```");
23 | let pages = [];
24 | let page = 0;
25 | let perPage = 10;
26 | for (let i = 0; true; i += perPage) {
27 | if (i >= strings.length) break;
28 | pages.push(strings.slice(i, i + perPage));
29 | }
30 |
31 | embed.setTitle(`Page ${page + 1}/${pages.length}`);
32 | embed.setDescription(pages[page].join("\n"));
33 | let pageL = new MessageButton().setLabel("Previous Page").setEmoji("<:left:847841719327260682>").setStyle("gray").setID(`pageL`).setDisabled(page === 0);
34 | let pageR = new MessageButton().setLabel("Next Page").setEmoji("<:right:847841719303012403>").setStyle("gray").setID(`pageR`).setDisabled(page === pages.length - 1);
35 |
36 | let mapButtons = (btns) => {
37 | let row = new MessageActionRow();
38 | btns.map((a) => row.addComponent(a));
39 | return row;
40 | }
41 | let msg = await respond({
42 | content: embed,
43 | components: mapButtons([pageL, pageR])
44 | });
45 |
46 | const filter = (button) => button.clicker.user.id === member.id;
47 | const collector = msg.createButtonCollector(filter, {time: 120000, errors: ['time'] });
48 |
49 | collector.on("collect", async(button) => {
50 | if (button.id === "pageL") {
51 | page--;
52 | } else if (button.id === "pageR") {
53 | page++;
54 | }
55 |
56 | if (page < 0) page = 0;
57 | if (page >= pages.length) page = pages.length - 1;
58 |
59 | embed.setTitle(`Page ${page + 1}/${pages.length}`);
60 | embed.setDescription(pages[page].join("\n"));
61 |
62 | pageL.setDisabled(page === 0);
63 | pageR.setDisabled(page === pages.length - 1);
64 |
65 | button.edit({
66 | content: embed,
67 | components: mapButtons([pageL, pageR])
68 | })
69 | });
70 | }
71 | };
--------------------------------------------------------------------------------
/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "embedColor": "#de3c51",
3 | "guildId": "747526604116459691",
4 | "messages": {
5 | "newMember": {
6 | "unkownInvite": "New member, **{member.username}**! I couldn't figure out who invited them",
7 | "inviter": "New member, **{member.username}**! Invited by {inviter.username} ({inviter.totalInvites} invites"
8 | },
9 | "memberLeave": {
10 | "unkownInvite": "Member left, **{member.username}**. I couldn't figure out who invited them",
11 | "inviter": "Member left, **{member.username}**. Invited by {inviter.username} ({inviter.totalInvites} invites"
12 | },
13 | "cmdInvites": {
14 | "otherInvites": "**{member.username}** has **${member.invites}** invites!",
15 | "ownInvites": "You have **{member.invites}** invites!"
16 | }
17 | },
18 | "allWelcomeChannels": ["welcome","hi","hello","traffic", "new-members"]
19 | }
20 |
--------------------------------------------------------------------------------
/events/guildCreate.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | name: "guildCreate",
3 | once: false,
4 | run: async(client, guild) => {
5 | await client.db.set(`guild_${guild.id}`, JSON.parse(JSON.stringify(client.guildData)));
6 | }
7 | };
--------------------------------------------------------------------------------
/events/guildDelete.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | name: "guildDelete",
3 | once: false,
4 | run: async(client, guild) => {
5 | await client.db.delete(`guild_${guild.id}`);
6 | }
7 | };
--------------------------------------------------------------------------------
/events/guildMemberAdd.js:
--------------------------------------------------------------------------------
1 | const { MessageEmbed } = require("discord.js");
2 |
3 | module.exports = {
4 | name: "guildMemberAdd",
5 | once: false,
6 | run: async(client, member) => {
7 | if (member.user.bot) return;
8 |
9 | let guild = member.guild;
10 | let nData = JSON.parse(JSON.stringify(client.guildMemberData));
11 | nData.userId = member.id;
12 |
13 | let oldInvites = client.cachedInvites[guild.id];
14 | let newInvites = (await client.cacheInvites())[guild.id];
15 | let invite;
16 | for (let i = 0; i < oldInvites.length; i++) {
17 | let oldI = oldInvites[i];
18 | let newI = newInvites[i];
19 |
20 | if (newI && oldI && newI.uses > oldI.uses) invite = newI;
21 | }
22 |
23 | let inviteData = await client.db.get(`guild_${guild.id}`);
24 | let systemChannel = inviteData.systemChannel || client.findDefChannel(guild, "system_channel");
25 |
26 | if (systemChannel) {
27 | systemChannel = client.channels.cache.get(systemChannel);
28 |
29 | if (invite) invite.data = inviteData.invites.find((v) => v.userId === invite.user.id);
30 | systemChannel.send(new MessageEmbed()
31 | .setTitle("New Member")
32 | .setColor(client.config.embedColor)
33 | .setDescription(`New member, **${member.user.tag}**! ${invite && invite.data ? `Invited by **${invite.user.tag}**. (${client.calculateInvites(invite.data) + 1} invites)` : "I couldn't figure out who invited them."}`)).catch(() => {});
34 | }
35 | if (invite && invite.data) {
36 | let month = 1000 * 60 * 60 * 24 * 30;
37 | let isFake = false;
38 | if (Date.now() < (member.user.createdTimestamp + month)) isFake = true;
39 | if (Date.now() < (invite.user.createdTimestamp + month)) isFake = true;
40 | if (isFake) invite.data.fake.push(member.user.id);
41 | else invite.data.regular.push(member.user.id);
42 | nData.invitedById = invite.user.id
43 |
44 | inviteData.invites[inviteData.invites.findIndex(a => a.userId === invite.user.id)] = invite.data;
45 | }
46 |
47 | inviteData.invites[inviteData.invites.findIndex(a => a.userId === nData.userId)] = nData;
48 |
49 | await client.db.set(`guild_${guild.id}`, inviteData);
50 | }
51 | };
--------------------------------------------------------------------------------
/events/guildMemberRemove.js:
--------------------------------------------------------------------------------
1 | const { MessageEmbed } = require("discord.js");
2 |
3 | module.exports = {
4 | name: "guildMemberRemove",
5 | once: false,
6 | run: async(client, member) => {
7 | if (member.user.bot) return;
8 |
9 | let guild = member.guild;
10 |
11 | let inviteData = await client.db.get(`guild_${guild.id}`);
12 | let systemChannel = inviteData.systemChannel || client.findDefChannel(guild, "system_channel");
13 | let membDat = inviteData.invites.find(a => a.userId === member.id);
14 |
15 | if (systemChannel) {
16 | systemChannel = client.channels.cache.get(systemChannel);
17 | console.log(membDat, membDat.invitedBy);
18 |
19 | systemChannel.send(new MessageEmbed()
20 | .setTitle("Member Left")
21 | .setColor(client.config.embedColor)
22 | .setDescription(`Member left, **${member.user.tag}**. ${client.users.cache.has(membDat.invitedBy) ? `Invited by **${client.users.cache.get(membDat.invitedBy).tag}**` : "I couldn't figure out who invited them"}`)
23 | );
24 | }
25 |
26 | if (membDat && client.users.cache.has(membDat.invitedBy)) {
27 | let inviteDat = inviteData.invites.find(a => a.userId === membDat.invitedBy);
28 |
29 | if (inviteDat) {
30 | inviteDat.leaves++;
31 | inviteData.invites[inviteData.invites.findIndex(a => a.userId === inviteDat.userId)] = inviteDat;
32 | }
33 |
34 | inviteData = inviteData.filter(a => a.userId !== membDat.userId);
35 | }
36 |
37 | await client.db.set(`guild_${guild.id}`, inviteData);
38 | }
39 | };
--------------------------------------------------------------------------------
/events/inviteCreate.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | name: "inviteCreate",
3 | once: false,
4 | run: async(client, invite) => {
5 | client.cachedInvites = await client.cacheInvites();
6 | }
7 | };
--------------------------------------------------------------------------------
/events/inviteDelete.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | name: "inviteDelete",
3 | once: false,
4 | run: async(client, invite) => {
5 | client.cachedInvites = await client.cacheInvites();
6 | }
7 | };
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | require("dotenv").config()
2 | const express=require("express"),app=express();app.get("/",function(e,p){p.send("Hello World")}),app.listen(3e3);
3 |
4 | const { Client } = require("discord.js");
5 | const { GCommands } = require("gcommands");
6 | const Keyv = require("keyv");
7 |
8 | const client = new Client({
9 | disableMentions: "everyone"
10 | });
11 |
12 | client.db = new Keyv();
13 | client.config = require("./config.json");
14 | client.cachedInvites = {};
15 | client.findDefChannel = (guild, type) => {
16 | let finalChannel = null;
17 | if(type == "system_channel") {
18 | let allSystemChannels = client.config.allWelcomeChannels
19 | finalChannel = guild.channels.cache.find(c => allSystemChannels.find(a => c.name.toLowerCase().includes(a.toLowerCase()) || a.toLowerCase().includes(c.name.toLowerCase())));
20 | }
21 |
22 | return finalChannel;
23 | }
24 | client.guildData = {
25 | invites: [],
26 | systemChannel: null
27 | };
28 | client.guildMemberData = {
29 | userId: null,
30 | invitedById: null,
31 | regular: [],
32 | bonus: 0,
33 | fake: [],
34 | leaves: []
35 | }
36 | client.cacheInvites = async () => {
37 | let data = {};
38 | let guilds = client.guilds.cache.array();
39 | for (let i = 0; i < guilds.length; i++) {
40 | let g = guilds[i];
41 | if (g.me.hasPermission("MANAGE_GUILD")) {
42 | let invites;
43 | try {
44 | invites = (await g.fetchInvites()).array();
45 | } catch { /* ¯\_(ツ)_/¯ */ }
46 | if (invites) {
47 | data[g.id] = [];
48 | for (let i = 0; i < invites.length; i++) {
49 | let inv = invites[i];
50 | data[g.id].push({
51 | code: inv.code,
52 | maxAge: inv.maxAge,
53 | maxUses: inv.maxUses,
54 | temporary: inv.temporary,
55 | channel: inv.channel,
56 | user: inv.inviter,
57 | uses: inv.uses,
58 | expiresAt: inv.expiresAt
59 | });
60 | }
61 | }
62 | }
63 | }
64 |
65 | return data;
66 | }
67 | client.calculateInvites = (invs) => {
68 | let f = 0;
69 | f += invs.regular.length;
70 | f += parseInt(invs.bonus);
71 | f -= invs.fake.length;
72 | f -= invs.leaves.length;
73 | if (f < 0) return 0;
74 | return f;
75 | }
76 | client.updateDatabase = async () => {
77 | let guilds = client.guilds.cache.array();
78 |
79 | for (let i = 0; i < guilds.length; i++) {
80 | let g = guilds[i];
81 | let gdb = await client.db.get(`guild_${g.id}`);
82 | let members = g.members.cache.array();
83 | let forceSet = false;
84 | if (!gdb) {
85 | let data = JSON.parse(JSON.stringify(client.guildData));
86 | data.systemChannel = client.findDefChannel(g, "system_channel");
87 | gdb = data;
88 | forceSet = true;
89 | }
90 | let addShit = [];
91 | for (let j = 0; j < members.length; j++) {
92 | if (!gdb.invites.find(a => a.userId === members[j].id) && !members[j].user.bot) {
93 | let dt = JSON.parse(JSON.stringify(client.guildMemberData));
94 | dt.userId = members[j].id;
95 | addShit.push(dt);
96 | }
97 | }
98 |
99 | if (addShit.length > 0 || forceSet) {
100 | if (addShit.length > 0) gdb.invites.push(...addShit);
101 | await client.db.set(`guild_${g.id}`, gdb);
102 | }
103 | }
104 | }
105 |
106 | client.on("ready", async () => {
107 | new GCommands(client, {
108 | cmdDir: "commands/",
109 | eventDir: "events/",
110 | language: "english",
111 | unkownCommandMessage: false,
112 | slash: {
113 | slash: 'both',
114 | prefix: '!',
115 | },
116 | defaultCooldown: "3s"
117 | });
118 |
119 | client.cachedInvites = await client.cacheInvites();
120 | await client.updateDatabase();
121 | });
122 |
123 | client.login(process.env.token);
124 | "Garlic-Team <3";
125 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Invite-Manager",
3 | "version": "1.0.0",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@discordjs/collection": {
8 | "version": "0.1.6",
9 | "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.6.tgz",
10 | "integrity": "sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ=="
11 | },
12 | "@discordjs/form-data": {
13 | "version": "3.0.1",
14 | "resolved": "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz",
15 | "integrity": "sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==",
16 | "requires": {
17 | "asynckit": "^0.4.0",
18 | "combined-stream": "^1.0.8",
19 | "mime-types": "^2.1.12"
20 | }
21 | },
22 | "@gcommands/events": {
23 | "version": "1.0.4",
24 | "resolved": "https://registry.npmjs.org/@gcommands/events/-/events-1.0.4.tgz",
25 | "integrity": "sha512-2awqsZSRObbUvXmNEMfBNXJqf0lzDf+clKhkUkCQ/eQ09gNy7mI2v4aV+0Wp4Q9FJuvbTML2G5tzchkRI6TVLA=="
26 | },
27 | "@keyv/sql": {
28 | "version": "1.1.2",
29 | "resolved": "https://registry.npmjs.org/@keyv/sql/-/sql-1.1.2.tgz",
30 | "integrity": "sha1-HdhKXFrSOE34k08N3+IKuB3Cp10=",
31 | "requires": {
32 | "sql": "~0.78.0"
33 | }
34 | },
35 | "@keyv/sqlite": {
36 | "version": "2.0.2",
37 | "resolved": "https://registry.npmjs.org/@keyv/sqlite/-/sqlite-2.0.2.tgz",
38 | "integrity": "sha512-vVaAOK/oCNCzNyB8AjiozAuJ0MqXt9uLsJ0oyQIEEdVw61HHOFiyjdYOGVkxHkgXDoJGF7g6T5ekh5JpdYFz5w==",
39 | "requires": {
40 | "@keyv/sql": "1.1.2",
41 | "pify": "3.0.0",
42 | "sqlite3": "^4.1.0"
43 | }
44 | },
45 | "abbrev": {
46 | "version": "1.1.1",
47 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
48 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
49 | },
50 | "abort-controller": {
51 | "version": "3.0.0",
52 | "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
53 | "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
54 | "requires": {
55 | "event-target-shim": "^5.0.0"
56 | }
57 | },
58 | "accepts": {
59 | "version": "1.3.7",
60 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
61 | "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
62 | "requires": {
63 | "mime-types": "~2.1.24",
64 | "negotiator": "0.6.2"
65 | }
66 | },
67 | "ansi-regex": {
68 | "version": "2.1.1",
69 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
70 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
71 | },
72 | "aproba": {
73 | "version": "1.2.0",
74 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
75 | "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
76 | },
77 | "are-we-there-yet": {
78 | "version": "1.1.5",
79 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
80 | "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
81 | "requires": {
82 | "delegates": "^1.0.0",
83 | "readable-stream": "^2.0.6"
84 | }
85 | },
86 | "array-flatten": {
87 | "version": "1.1.1",
88 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
89 | "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
90 | },
91 | "asynckit": {
92 | "version": "0.4.0",
93 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
94 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
95 | },
96 | "axios": {
97 | "version": "0.21.4",
98 | "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
99 | "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
100 | "requires": {
101 | "follow-redirects": "^1.14.0"
102 | }
103 | },
104 | "balanced-match": {
105 | "version": "1.0.2",
106 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
107 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
108 | },
109 | "body-parser": {
110 | "version": "1.19.1",
111 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.1.tgz",
112 | "integrity": "sha512-8ljfQi5eBk8EJfECMrgqNGWPEY5jWP+1IzkzkGdFFEwFQZZyaZ21UqdaHktgiMlH0xLHqIFtE/u2OYE5dOtViA==",
113 | "requires": {
114 | "bytes": "3.1.1",
115 | "content-type": "~1.0.4",
116 | "debug": "2.6.9",
117 | "depd": "~1.1.2",
118 | "http-errors": "1.8.1",
119 | "iconv-lite": "0.4.24",
120 | "on-finished": "~2.3.0",
121 | "qs": "6.9.6",
122 | "raw-body": "2.4.2",
123 | "type-is": "~1.6.18"
124 | }
125 | },
126 | "brace-expansion": {
127 | "version": "1.1.11",
128 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
129 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
130 | "requires": {
131 | "balanced-match": "^1.0.0",
132 | "concat-map": "0.0.1"
133 | }
134 | },
135 | "bytes": {
136 | "version": "3.1.1",
137 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.1.tgz",
138 | "integrity": "sha512-dWe4nWO/ruEOY7HkUJ5gFt1DCFV9zPRoJr8pV0/ASQermOZjtq8jMjOprC0Kd10GLN+l7xaUPvxzJFWtxGu8Fg=="
139 | },
140 | "chownr": {
141 | "version": "1.1.4",
142 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
143 | "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
144 | },
145 | "code-point-at": {
146 | "version": "1.1.0",
147 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
148 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
149 | },
150 | "combined-stream": {
151 | "version": "1.0.8",
152 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
153 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
154 | "requires": {
155 | "delayed-stream": "~1.0.0"
156 | }
157 | },
158 | "concat-map": {
159 | "version": "0.0.1",
160 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
161 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
162 | },
163 | "console-control-strings": {
164 | "version": "1.1.0",
165 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
166 | "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
167 | },
168 | "content-disposition": {
169 | "version": "0.5.4",
170 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz",
171 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==",
172 | "requires": {
173 | "safe-buffer": "5.2.1"
174 | },
175 | "dependencies": {
176 | "safe-buffer": {
177 | "version": "5.2.1",
178 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
179 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
180 | }
181 | }
182 | },
183 | "content-type": {
184 | "version": "1.0.4",
185 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
186 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
187 | },
188 | "cookie": {
189 | "version": "0.4.1",
190 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
191 | "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
192 | },
193 | "cookie-signature": {
194 | "version": "1.0.6",
195 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
196 | "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
197 | },
198 | "core-util-is": {
199 | "version": "1.0.2",
200 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
201 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
202 | },
203 | "debug": {
204 | "version": "2.6.9",
205 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
206 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
207 | "requires": {
208 | "ms": "2.0.0"
209 | }
210 | },
211 | "deep-extend": {
212 | "version": "0.6.0",
213 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
214 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
215 | },
216 | "delayed-stream": {
217 | "version": "1.0.0",
218 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
219 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
220 | },
221 | "delegates": {
222 | "version": "1.0.0",
223 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
224 | "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
225 | },
226 | "depd": {
227 | "version": "1.1.2",
228 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
229 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
230 | },
231 | "destroy": {
232 | "version": "1.0.4",
233 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
234 | "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
235 | },
236 | "detect-libc": {
237 | "version": "1.0.3",
238 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
239 | "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
240 | },
241 | "discord.js": {
242 | "version": "12.5.3",
243 | "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-12.5.3.tgz",
244 | "integrity": "sha512-D3nkOa/pCkNyn6jLZnAiJApw2N9XrIsXUAdThf01i7yrEuqUmDGc7/CexVWwEcgbQR97XQ+mcnqJpmJ/92B4Aw==",
245 | "requires": {
246 | "@discordjs/collection": "^0.1.6",
247 | "@discordjs/form-data": "^3.0.1",
248 | "abort-controller": "^3.0.0",
249 | "node-fetch": "^2.6.1",
250 | "prism-media": "^1.2.9",
251 | "setimmediate": "^1.0.5",
252 | "tweetnacl": "^1.0.3",
253 | "ws": "^7.4.4"
254 | }
255 | },
256 | "dotenv": {
257 | "version": "15.0.0",
258 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-15.0.0.tgz",
259 | "integrity": "sha512-/l1sXXm79ry34KwwS0y4oVZjB468iw/6u9g1W26dtexKcIJAnVL2pMF+hxQwzZ7LutxOwEgtym9eIxvX33CMKg=="
260 | },
261 | "ee-first": {
262 | "version": "1.1.1",
263 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
264 | "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
265 | },
266 | "encodeurl": {
267 | "version": "1.0.2",
268 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
269 | "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
270 | },
271 | "escape-html": {
272 | "version": "1.0.3",
273 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
274 | "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
275 | },
276 | "etag": {
277 | "version": "1.8.1",
278 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
279 | "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
280 | },
281 | "event-target-shim": {
282 | "version": "5.0.1",
283 | "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
284 | "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="
285 | },
286 | "express": {
287 | "version": "4.17.2",
288 | "resolved": "https://registry.npmjs.org/express/-/express-4.17.2.tgz",
289 | "integrity": "sha512-oxlxJxcQlYwqPWKVJJtvQiwHgosH/LrLSPA+H4UxpyvSS6jC5aH+5MoHFM+KABgTOt0APue4w66Ha8jCUo9QGg==",
290 | "requires": {
291 | "accepts": "~1.3.7",
292 | "array-flatten": "1.1.1",
293 | "body-parser": "1.19.1",
294 | "content-disposition": "0.5.4",
295 | "content-type": "~1.0.4",
296 | "cookie": "0.4.1",
297 | "cookie-signature": "1.0.6",
298 | "debug": "2.6.9",
299 | "depd": "~1.1.2",
300 | "encodeurl": "~1.0.2",
301 | "escape-html": "~1.0.3",
302 | "etag": "~1.8.1",
303 | "finalhandler": "~1.1.2",
304 | "fresh": "0.5.2",
305 | "merge-descriptors": "1.0.1",
306 | "methods": "~1.1.2",
307 | "on-finished": "~2.3.0",
308 | "parseurl": "~1.3.3",
309 | "path-to-regexp": "0.1.7",
310 | "proxy-addr": "~2.0.7",
311 | "qs": "6.9.6",
312 | "range-parser": "~1.2.1",
313 | "safe-buffer": "5.2.1",
314 | "send": "0.17.2",
315 | "serve-static": "1.14.2",
316 | "setprototypeof": "1.2.0",
317 | "statuses": "~1.5.0",
318 | "type-is": "~1.6.18",
319 | "utils-merge": "1.0.1",
320 | "vary": "~1.1.2"
321 | },
322 | "dependencies": {
323 | "safe-buffer": {
324 | "version": "5.2.1",
325 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
326 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
327 | }
328 | }
329 | },
330 | "finalhandler": {
331 | "version": "1.1.2",
332 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
333 | "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
334 | "requires": {
335 | "debug": "2.6.9",
336 | "encodeurl": "~1.0.2",
337 | "escape-html": "~1.0.3",
338 | "on-finished": "~2.3.0",
339 | "parseurl": "~1.3.3",
340 | "statuses": "~1.5.0",
341 | "unpipe": "~1.0.0"
342 | }
343 | },
344 | "follow-redirects": {
345 | "version": "1.14.7",
346 | "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz",
347 | "integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ=="
348 | },
349 | "forwarded": {
350 | "version": "0.2.0",
351 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
352 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
353 | },
354 | "fresh": {
355 | "version": "0.5.2",
356 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
357 | "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
358 | },
359 | "fs-minipass": {
360 | "version": "1.2.7",
361 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
362 | "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
363 | "requires": {
364 | "minipass": "^2.6.0"
365 | }
366 | },
367 | "fs.realpath": {
368 | "version": "1.0.0",
369 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
370 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
371 | },
372 | "gauge": {
373 | "version": "2.7.4",
374 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
375 | "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
376 | "requires": {
377 | "aproba": "^1.0.3",
378 | "console-control-strings": "^1.0.0",
379 | "has-unicode": "^2.0.0",
380 | "object-assign": "^4.1.0",
381 | "signal-exit": "^3.0.0",
382 | "string-width": "^1.0.1",
383 | "strip-ansi": "^3.0.1",
384 | "wide-align": "^1.1.0"
385 | }
386 | },
387 | "gcommands": {
388 | "version": "5.2.3",
389 | "resolved": "https://registry.npmjs.org/gcommands/-/gcommands-5.2.3.tgz",
390 | "integrity": "sha512-K/PB4WaxL4AvVSFeBYdHpfLvEB1i2vUH4fKd4g/1oIzyD4dLt2U+frBVOvjn8lbCuqT77CdL69XqGu2EwprVMQ==",
391 | "requires": {
392 | "@gcommands/events": "^1.0.3",
393 | "axios": "^0.21.1",
394 | "ms": "^2.1.3"
395 | },
396 | "dependencies": {
397 | "ms": {
398 | "version": "2.1.3",
399 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
400 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
401 | }
402 | }
403 | },
404 | "glob": {
405 | "version": "7.1.7",
406 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
407 | "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
408 | "requires": {
409 | "fs.realpath": "^1.0.0",
410 | "inflight": "^1.0.4",
411 | "inherits": "2",
412 | "minimatch": "^3.0.4",
413 | "once": "^1.3.0",
414 | "path-is-absolute": "^1.0.0"
415 | }
416 | },
417 | "has-unicode": {
418 | "version": "2.0.1",
419 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
420 | "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
421 | },
422 | "http-errors": {
423 | "version": "1.8.1",
424 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz",
425 | "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==",
426 | "requires": {
427 | "depd": "~1.1.2",
428 | "inherits": "2.0.4",
429 | "setprototypeof": "1.2.0",
430 | "statuses": ">= 1.5.0 < 2",
431 | "toidentifier": "1.0.1"
432 | },
433 | "dependencies": {
434 | "inherits": {
435 | "version": "2.0.4",
436 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
437 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
438 | }
439 | }
440 | },
441 | "iconv-lite": {
442 | "version": "0.4.24",
443 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
444 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
445 | "requires": {
446 | "safer-buffer": ">= 2.1.2 < 3"
447 | }
448 | },
449 | "ignore-walk": {
450 | "version": "3.0.4",
451 | "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz",
452 | "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==",
453 | "requires": {
454 | "minimatch": "^3.0.4"
455 | }
456 | },
457 | "inflight": {
458 | "version": "1.0.6",
459 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
460 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
461 | "requires": {
462 | "once": "^1.3.0",
463 | "wrappy": "1"
464 | }
465 | },
466 | "inherits": {
467 | "version": "2.0.3",
468 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
469 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
470 | },
471 | "ini": {
472 | "version": "1.3.8",
473 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
474 | "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
475 | },
476 | "ipaddr.js": {
477 | "version": "1.9.1",
478 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
479 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
480 | },
481 | "is-fullwidth-code-point": {
482 | "version": "1.0.0",
483 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
484 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
485 | "requires": {
486 | "number-is-nan": "^1.0.0"
487 | }
488 | },
489 | "isarray": {
490 | "version": "1.0.0",
491 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
492 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
493 | },
494 | "json-buffer": {
495 | "version": "3.0.1",
496 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
497 | "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
498 | },
499 | "keyv": {
500 | "version": "4.0.5",
501 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.5.tgz",
502 | "integrity": "sha512-531pkGLqV3BMg0eDqqJFI0R1mkK1Nm5xIP2mM6keP5P8WfFtCkg2IOwplTUmlGoTgIg9yQYZ/kdihhz89XH3vA==",
503 | "requires": {
504 | "json-buffer": "3.0.1"
505 | }
506 | },
507 | "lodash": {
508 | "version": "4.1.0",
509 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.1.0.tgz",
510 | "integrity": "sha1-KZiUKD3gGp7vvt/0xLmwCmoubpY="
511 | },
512 | "media-typer": {
513 | "version": "0.3.0",
514 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
515 | "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
516 | },
517 | "merge-descriptors": {
518 | "version": "1.0.1",
519 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
520 | "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
521 | },
522 | "methods": {
523 | "version": "1.1.2",
524 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
525 | "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
526 | },
527 | "mime": {
528 | "version": "1.6.0",
529 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
530 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
531 | },
532 | "mime-db": {
533 | "version": "1.48.0",
534 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz",
535 | "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ=="
536 | },
537 | "mime-types": {
538 | "version": "2.1.31",
539 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz",
540 | "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==",
541 | "requires": {
542 | "mime-db": "1.48.0"
543 | }
544 | },
545 | "minimatch": {
546 | "version": "3.0.4",
547 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
548 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
549 | "requires": {
550 | "brace-expansion": "^1.1.7"
551 | }
552 | },
553 | "minimist": {
554 | "version": "1.2.5",
555 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
556 | "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
557 | },
558 | "minipass": {
559 | "version": "2.9.0",
560 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
561 | "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
562 | "requires": {
563 | "safe-buffer": "^5.1.2",
564 | "yallist": "^3.0.0"
565 | }
566 | },
567 | "minizlib": {
568 | "version": "1.3.3",
569 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
570 | "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
571 | "requires": {
572 | "minipass": "^2.9.0"
573 | }
574 | },
575 | "mkdirp": {
576 | "version": "0.5.5",
577 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
578 | "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
579 | "requires": {
580 | "minimist": "^1.2.5"
581 | }
582 | },
583 | "ms": {
584 | "version": "2.0.0",
585 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
586 | "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
587 | },
588 | "nan": {
589 | "version": "2.14.2",
590 | "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz",
591 | "integrity": "sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ=="
592 | },
593 | "needle": {
594 | "version": "2.6.0",
595 | "resolved": "https://registry.npmjs.org/needle/-/needle-2.6.0.tgz",
596 | "integrity": "sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg==",
597 | "requires": {
598 | "debug": "^3.2.6",
599 | "iconv-lite": "^0.4.4",
600 | "sax": "^1.2.4"
601 | },
602 | "dependencies": {
603 | "debug": {
604 | "version": "3.2.7",
605 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
606 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
607 | "requires": {
608 | "ms": "^2.1.1"
609 | }
610 | },
611 | "ms": {
612 | "version": "2.1.3",
613 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
614 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
615 | }
616 | }
617 | },
618 | "negotiator": {
619 | "version": "0.6.2",
620 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
621 | "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
622 | },
623 | "node-fetch": {
624 | "version": "2.6.7",
625 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
626 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
627 | "requires": {
628 | "whatwg-url": "^5.0.0"
629 | }
630 | },
631 | "node-pre-gyp": {
632 | "version": "0.11.0",
633 | "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz",
634 | "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==",
635 | "requires": {
636 | "detect-libc": "^1.0.2",
637 | "mkdirp": "^0.5.1",
638 | "needle": "^2.2.1",
639 | "nopt": "^4.0.1",
640 | "npm-packlist": "^1.1.6",
641 | "npmlog": "^4.0.2",
642 | "rc": "^1.2.7",
643 | "rimraf": "^2.6.1",
644 | "semver": "^5.3.0",
645 | "tar": "^4"
646 | }
647 | },
648 | "nopt": {
649 | "version": "4.0.3",
650 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
651 | "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
652 | "requires": {
653 | "abbrev": "1",
654 | "osenv": "^0.1.4"
655 | }
656 | },
657 | "npm-bundled": {
658 | "version": "1.1.2",
659 | "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz",
660 | "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==",
661 | "requires": {
662 | "npm-normalize-package-bin": "^1.0.1"
663 | }
664 | },
665 | "npm-normalize-package-bin": {
666 | "version": "1.0.1",
667 | "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
668 | "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA=="
669 | },
670 | "npm-packlist": {
671 | "version": "1.4.8",
672 | "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",
673 | "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
674 | "requires": {
675 | "ignore-walk": "^3.0.1",
676 | "npm-bundled": "^1.0.1",
677 | "npm-normalize-package-bin": "^1.0.1"
678 | }
679 | },
680 | "npmlog": {
681 | "version": "4.1.2",
682 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
683 | "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
684 | "requires": {
685 | "are-we-there-yet": "~1.1.2",
686 | "console-control-strings": "~1.1.0",
687 | "gauge": "~2.7.3",
688 | "set-blocking": "~2.0.0"
689 | }
690 | },
691 | "number-is-nan": {
692 | "version": "1.0.1",
693 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
694 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
695 | },
696 | "object-assign": {
697 | "version": "4.1.1",
698 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
699 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
700 | },
701 | "on-finished": {
702 | "version": "2.3.0",
703 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
704 | "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
705 | "requires": {
706 | "ee-first": "1.1.1"
707 | }
708 | },
709 | "once": {
710 | "version": "1.4.0",
711 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
712 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
713 | "requires": {
714 | "wrappy": "1"
715 | }
716 | },
717 | "os-homedir": {
718 | "version": "1.0.2",
719 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
720 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
721 | },
722 | "os-tmpdir": {
723 | "version": "1.0.2",
724 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
725 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
726 | },
727 | "osenv": {
728 | "version": "0.1.5",
729 | "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
730 | "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
731 | "requires": {
732 | "os-homedir": "^1.0.0",
733 | "os-tmpdir": "^1.0.0"
734 | }
735 | },
736 | "parseurl": {
737 | "version": "1.3.3",
738 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
739 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
740 | },
741 | "path-is-absolute": {
742 | "version": "1.0.1",
743 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
744 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
745 | },
746 | "path-to-regexp": {
747 | "version": "0.1.7",
748 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
749 | "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
750 | },
751 | "pify": {
752 | "version": "3.0.0",
753 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
754 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY="
755 | },
756 | "prism-media": {
757 | "version": "1.2.9",
758 | "resolved": "https://registry.npmjs.org/prism-media/-/prism-media-1.2.9.tgz",
759 | "integrity": "sha512-UHCYuqHipbTR1ZsXr5eg4JUmHER8Ss4YEb9Azn+9zzJ7/jlTtD1h0lc4g6tNx3eMlB8Mp6bfll0LPMAV4R6r3Q=="
760 | },
761 | "process-nextick-args": {
762 | "version": "2.0.1",
763 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
764 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
765 | },
766 | "proxy-addr": {
767 | "version": "2.0.7",
768 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
769 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
770 | "requires": {
771 | "forwarded": "0.2.0",
772 | "ipaddr.js": "1.9.1"
773 | }
774 | },
775 | "qs": {
776 | "version": "6.9.6",
777 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz",
778 | "integrity": "sha512-TIRk4aqYLNoJUbd+g2lEdz5kLWIuTMRagAXxl78Q0RiVjAOugHmeKNGdd3cwo/ktpf9aL9epCfFqWDEKysUlLQ=="
779 | },
780 | "range-parser": {
781 | "version": "1.2.1",
782 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
783 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
784 | },
785 | "raw-body": {
786 | "version": "2.4.2",
787 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz",
788 | "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==",
789 | "requires": {
790 | "bytes": "3.1.1",
791 | "http-errors": "1.8.1",
792 | "iconv-lite": "0.4.24",
793 | "unpipe": "1.0.0"
794 | }
795 | },
796 | "rc": {
797 | "version": "1.2.8",
798 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
799 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
800 | "requires": {
801 | "deep-extend": "^0.6.0",
802 | "ini": "~1.3.0",
803 | "minimist": "^1.2.0",
804 | "strip-json-comments": "~2.0.1"
805 | }
806 | },
807 | "readable-stream": {
808 | "version": "2.3.7",
809 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
810 | "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
811 | "requires": {
812 | "core-util-is": "~1.0.0",
813 | "inherits": "~2.0.3",
814 | "isarray": "~1.0.0",
815 | "process-nextick-args": "~2.0.0",
816 | "safe-buffer": "~5.1.1",
817 | "string_decoder": "~1.1.1",
818 | "util-deprecate": "~1.0.1"
819 | }
820 | },
821 | "rimraf": {
822 | "version": "2.7.1",
823 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
824 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
825 | "requires": {
826 | "glob": "^7.1.3"
827 | }
828 | },
829 | "safe-buffer": {
830 | "version": "5.1.2",
831 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
832 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
833 | },
834 | "safer-buffer": {
835 | "version": "2.1.2",
836 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
837 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
838 | },
839 | "sax": {
840 | "version": "1.2.4",
841 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
842 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
843 | },
844 | "semver": {
845 | "version": "5.7.1",
846 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
847 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
848 | },
849 | "send": {
850 | "version": "0.17.2",
851 | "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz",
852 | "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==",
853 | "requires": {
854 | "debug": "2.6.9",
855 | "depd": "~1.1.2",
856 | "destroy": "~1.0.4",
857 | "encodeurl": "~1.0.2",
858 | "escape-html": "~1.0.3",
859 | "etag": "~1.8.1",
860 | "fresh": "0.5.2",
861 | "http-errors": "1.8.1",
862 | "mime": "1.6.0",
863 | "ms": "2.1.3",
864 | "on-finished": "~2.3.0",
865 | "range-parser": "~1.2.1",
866 | "statuses": "~1.5.0"
867 | },
868 | "dependencies": {
869 | "ms": {
870 | "version": "2.1.3",
871 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
872 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
873 | }
874 | }
875 | },
876 | "serve-static": {
877 | "version": "1.14.2",
878 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz",
879 | "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==",
880 | "requires": {
881 | "encodeurl": "~1.0.2",
882 | "escape-html": "~1.0.3",
883 | "parseurl": "~1.3.3",
884 | "send": "0.17.2"
885 | }
886 | },
887 | "set-blocking": {
888 | "version": "2.0.0",
889 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
890 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
891 | },
892 | "setimmediate": {
893 | "version": "1.0.5",
894 | "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
895 | "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
896 | },
897 | "setprototypeof": {
898 | "version": "1.2.0",
899 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
900 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="
901 | },
902 | "signal-exit": {
903 | "version": "3.0.3",
904 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
905 | "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
906 | },
907 | "sliced": {
908 | "version": "0.0.5",
909 | "resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz",
910 | "integrity": "sha1-XtwETKTrb3gW1Qui/GPiXY/kcH8="
911 | },
912 | "sql": {
913 | "version": "0.78.0",
914 | "resolved": "https://registry.npmjs.org/sql/-/sql-0.78.0.tgz",
915 | "integrity": "sha1-iUWF1WER27F2h0Gk2ZNcgshZWUk=",
916 | "requires": {
917 | "lodash": "4.1.x",
918 | "sliced": "0.0.x"
919 | }
920 | },
921 | "sqlite3": {
922 | "version": "4.2.0",
923 | "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-4.2.0.tgz",
924 | "integrity": "sha512-roEOz41hxui2Q7uYnWsjMOTry6TcNUNmp8audCx18gF10P2NknwdpF+E+HKvz/F2NvPKGGBF4NGc+ZPQ+AABwg==",
925 | "requires": {
926 | "nan": "^2.12.1",
927 | "node-pre-gyp": "^0.11.0"
928 | }
929 | },
930 | "statuses": {
931 | "version": "1.5.0",
932 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
933 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
934 | },
935 | "string-width": {
936 | "version": "1.0.2",
937 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
938 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
939 | "requires": {
940 | "code-point-at": "^1.0.0",
941 | "is-fullwidth-code-point": "^1.0.0",
942 | "strip-ansi": "^3.0.0"
943 | }
944 | },
945 | "string_decoder": {
946 | "version": "1.1.1",
947 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
948 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
949 | "requires": {
950 | "safe-buffer": "~5.1.0"
951 | }
952 | },
953 | "strip-ansi": {
954 | "version": "3.0.1",
955 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
956 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
957 | "requires": {
958 | "ansi-regex": "^2.0.0"
959 | }
960 | },
961 | "strip-json-comments": {
962 | "version": "2.0.1",
963 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
964 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
965 | },
966 | "tar": {
967 | "version": "4.4.19",
968 | "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz",
969 | "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==",
970 | "requires": {
971 | "chownr": "^1.1.4",
972 | "fs-minipass": "^1.2.7",
973 | "minipass": "^2.9.0",
974 | "minizlib": "^1.3.3",
975 | "mkdirp": "^0.5.5",
976 | "safe-buffer": "^5.2.1",
977 | "yallist": "^3.1.1"
978 | },
979 | "dependencies": {
980 | "safe-buffer": {
981 | "version": "5.2.1",
982 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
983 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
984 | }
985 | }
986 | },
987 | "toidentifier": {
988 | "version": "1.0.1",
989 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
990 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
991 | },
992 | "tr46": {
993 | "version": "0.0.3",
994 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
995 | "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
996 | },
997 | "tweetnacl": {
998 | "version": "1.0.3",
999 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz",
1000 | "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw=="
1001 | },
1002 | "type-is": {
1003 | "version": "1.6.18",
1004 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
1005 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
1006 | "requires": {
1007 | "media-typer": "0.3.0",
1008 | "mime-types": "~2.1.24"
1009 | }
1010 | },
1011 | "unpipe": {
1012 | "version": "1.0.0",
1013 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
1014 | "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
1015 | },
1016 | "util-deprecate": {
1017 | "version": "1.0.2",
1018 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1019 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
1020 | },
1021 | "utils-merge": {
1022 | "version": "1.0.1",
1023 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
1024 | "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
1025 | },
1026 | "vary": {
1027 | "version": "1.1.2",
1028 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
1029 | "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
1030 | },
1031 | "webidl-conversions": {
1032 | "version": "3.0.1",
1033 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
1034 | "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
1035 | },
1036 | "whatwg-url": {
1037 | "version": "5.0.0",
1038 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
1039 | "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
1040 | "requires": {
1041 | "tr46": "~0.0.3",
1042 | "webidl-conversions": "^3.0.0"
1043 | }
1044 | },
1045 | "wide-align": {
1046 | "version": "1.1.3",
1047 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
1048 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
1049 | "requires": {
1050 | "string-width": "^1.0.2 || 2"
1051 | }
1052 | },
1053 | "wrappy": {
1054 | "version": "1.0.2",
1055 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
1056 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
1057 | },
1058 | "ws": {
1059 | "version": "7.4.6",
1060 | "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
1061 | "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A=="
1062 | },
1063 | "yallist": {
1064 | "version": "3.1.1",
1065 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
1066 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
1067 | }
1068 | }
1069 | }
1070 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Invite-Manager",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "dependencies": {
7 | "@keyv/sqlite": "^2.0.2",
8 | "discord.js": "^12.5.3",
9 | "dotenv": "^15.0.0",
10 | "express": "^4.17.2",
11 | "gcommands": "^5.2.3",
12 | "keyv": "^4.0.5"
13 | },
14 | "devDependencies": {},
15 | "scripts": {
16 | "test": "echo \"Error: no test specified\" && exit 1"
17 | },
18 | "author": "Garlic-Team",
19 | "license": "MIT"
20 | }
21 |
--------------------------------------------------------------------------------
/renovate.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": [
3 | "config:base"
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/start.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 | node .
3 | pause
--------------------------------------------------------------------------------
/template.env:
--------------------------------------------------------------------------------
1 | token=DISCORD BOT TOKEN
2 |
3 | # RENAME TO .ENV
--------------------------------------------------------------------------------