| author | |
| committer | |
| log | 1754cd373750ae05e47dd7504eec6a471705d4dd |
| tree | ee97c74e2fa56b617839f906c19fdff8900d0c15 |
| parent | 3a819b9b4ac8315e60f9450ba051d881ea2f0d16 |
| signature |
6 files changed, 510 insertions(+), 319 deletions(-)
.gitignore+1| ... | ... | @@ -1,3 +1,4 @@ |
| 1 | 1 | token |
| 2 | 2 | .env |
| 3 | 3 | node_modules |
| 4 | index.js |
index.js deleted-214| ... | ... | @@ -1,214 +0,0 @@ |
| 1 | require('dotenv').config(); | |
| 2 | ||
| 3 | const Discord = require('discord.js'); | |
| 4 | const fs = require('fs'); | |
| 5 | const Color = require('color'); | |
| 6 | const Long = require('long'); | |
| 7 | const Cache = require('node-cache'); | |
| 8 | const client = new Discord.Client({ | |
| 9 | intents: [ | |
| 10 | 'GUILDS', | |
| 11 | 'GUILD_MEMBERS', | |
| 12 | 'GUILD_MESSAGES', | |
| 13 | ], | |
| 14 | }); | |
| 15 | ||
| 16 | function updateClientStatus() { | |
| 17 | client.user.setActivity(`/paint | ${client.guilds.cache.size} servers.`) | |
| 18 | } | |
| 19 | ||
| 20 | client.on('ready', async() => { | |
| 21 | console.log(`Logged in as ${client.user.tag}!`); | |
| 22 | updateClientStatus(); | |
| 23 | ||
| 24 | // client.application.commands.create({ | |
| 25 | // name: 'paint', | |
| 26 | // description: 'Customize your username color', | |
| 27 | // options: [ | |
| 28 | // { name: 'color', description: 'Color to change your name to (HEX or CSS)', type: 'STRING', required: true }, | |
| 29 | // ] | |
| 30 | // }); | |
| 31 | ||
| 32 | // client.application.commands.create({ | |
| 33 | // name: 'clean-roles', | |
| 34 | // description: 'Run the role cleanup utility manually' | |
| 35 | // }); | |
| 36 | }); | |
| 37 | ||
| 38 | const schedules = {} | |
| 39 | ||
| 40 | const rateLimitCache = new Cache({ | |
| 41 | stdTTL: 2 | |
| 42 | }) | |
| 43 | const rateLimitCache2 = new Cache({ | |
| 44 | stdTTL: 230 | |
| 45 | }) | |
| 46 | ||
| 47 | async function cleanup(guild) { | |
| 48 | clearTimeout(schedules[guild.id]); | |
| 49 | delete schedules[guild.id]; | |
| 50 | let n = 0; | |
| 51 | const rolesToCheck = guild.roles.cache.filter(role => role.name.startsWith('#')); | |
| 52 | const allMembers = await guild.members.fetch(); | |
| 53 | const colorUses = {}; | |
| 54 | allMembers.forEach(x => { | |
| 55 | x.roles.cache.forEach(role => { | |
| 56 | if (role.name.startsWith('#')) { | |
| 57 | colorUses[role.id] = true; | |
| 58 | } | |
| 59 | }); | |
| 60 | }); | |
| 61 | await Promise.all(rolesToCheck.map(async (role) => { | |
| 62 | if (!colorUses[role.id]) { | |
| 63 | n++; | |
| 64 | await role.delete(); | |
| 65 | } | |
| 66 | })); | |
| 67 | return n; | |
| 68 | } | |
| 69 | ||
| 70 | async function scheduleClean(guild) { | |
| 71 | if (schedules[guild.id]) { | |
| 72 | return; | |
| 73 | } | |
| 74 | schedules[guild.id] = setTimeout(() => { | |
| 75 | cleanup(guild) | |
| 76 | }, 5 * 60 * 1000); | |
| 77 | } | |
| 78 | ||
| 79 | client.on('messageCreate', async (msg) => { | |
| 80 | if (msg.author.bot) return; | |
| 81 | ||
| 82 | if (msg.content.startsWith('!paint') || msg.content.startsWith('!color')) { | |
| 83 | msg.channel.send('Name Paint has been updated to use slash commands. If they do not show up, have an admin reinvite the bot:\n<https://davecode.me/name-painter-invite>') | |
| 84 | } | |
| 85 | }); | |
| 86 | ||
| 87 | client.on('interactionCreate', async (i) => { | |
| 88 | if (i.isCommand() && i.commandName === 'paint') { | |
| 89 | const input = i.options.get('color').value; | |
| 90 | ||
| 91 | let color; | |
| 92 | try { | |
| 93 | color = Color(input); | |
| 94 | } catch (error) { | |
| 95 | try { | |
| 96 | color = Color('#' + input); | |
| 97 | } catch (error) { | |
| 98 | i.reply({ | |
| 99 | ephemeral: true, | |
| 100 | content: `Could not get a color from \`\`${input.substring(0, 500).replace(/\n/g, ' ').replace(/`/g, '\u2063`\u2063')}\`\``, | |
| 101 | }) | |
| 102 | return; | |
| 103 | } | |
| 104 | } | |
| 105 | ||
| 106 | const hex = color.hex(); | |
| 107 | ||
| 108 | if (rateLimitCache.has(i.user.id)) { | |
| 109 | i.reply({ | |
| 110 | ephemeral: true, | |
| 111 | content: 'You have reached the rate limit. Please wait a few seconds before running the command again.', | |
| 112 | }); | |
| 113 | return; | |
| 114 | } | |
| 115 | ||
| 116 | rateLimitCache.set(i.user.id , 'true'); | |
| 117 | ||
| 118 | let role = i.guild.roles.cache.find(role => role.name === hex); | |
| 119 | ||
| 120 | if (!role) { | |
| 121 | if (i.guild.roles.cache.length === 250) { | |
| 122 | i.reply({ | |
| 123 | ephemeral: true, | |
| 124 | content: `The role limit of **250 Roles** has been hit, I cannot assign you this name color.` | |
| 125 | }); | |
| 126 | return; | |
| 127 | } else { | |
| 128 | try { | |
| 129 | role = await i.guild.roles.create({ | |
| 130 | name: hex, | |
| 131 | color: color.rgbNumber(), | |
| 132 | permissions: [], | |
| 133 | }); | |
| 134 | } catch (error) { | |
| 135 | console.log(error) | |
| 136 | i.reply({ | |
| 137 | ephemeral: true, | |
| 138 | content: `Error creating a role for you, contact an admin to check my permissions.` | |
| 139 | }); | |
| 140 | return; | |
| 141 | } | |
| 142 | } | |
| 143 | } | |
| 144 | ||
| 145 | try { | |
| 146 | const rolesToRemove = i.member.roles.cache.filter(role => role.name.startsWith('#') && role.name !== hex); | |
| 147 | rolesToRemove.map(async (role) => { | |
| 148 | i.member.roles.remove(role); | |
| 149 | }); | |
| 150 | await i.member.roles.add(role); | |
| 151 | i.reply({ | |
| 152 | ephemeral: true, | |
| 153 | content: `You\'ve been painted to **${hex}**` | |
| 154 | }); | |
| 155 | ||
| 156 | scheduleClean(i.guild) | |
| 157 | } catch (error) { | |
| 158 | i.reply({ | |
| 159 | ephemeral: true, | |
| 160 | content: `Error assigning your role, contact an admin to check my permissions.` | |
| 161 | }); | |
| 162 | } | |
| 163 | } | |
| 164 | }); | |
| 165 | ||
| 166 | client.on('guildMemberRemove', (member) => { | |
| 167 | scheduleClean(member.guild); | |
| 168 | }); | |
| 169 | ||
| 170 | client.on('guildDelete', guild => { | |
| 171 | 	updateClientStatus(); | |
| 172 | }); | |
| 173 | ||
| 174 | function getDefaultChannel(guild) { | |
| 175 | // Check for a "general" channel, which is often default chat | |
| 176 | const generalChannel = guild.channels.cache.find(channel => channel.name === "general" && channel.permissionsFor(guild.client.user).has("SEND_MESSAGES")); | |
| 177 | if (generalChannel) | |
| 178 | return generalChannel; | |
| 179 | // Now we get into the heavy stuff: first channel in order where the bot can speak | |
| 180 | // hold on to your hats! | |
| 181 | return guild.channels.cache | |
| 182 | .filter(c => c.type === "text" && | |
| 183 | c.permissionsFor(guild.client.user).has("SEND_MESSAGES")) | |
| 184 | .sort((a, b) => a.position - b.position || | |
| 185 | Long.fromString(a.id).sub(Long.fromString(b.id)).toNumber()) | |
| 186 | .first(); | |
| 187 | } | |
| 188 | ||
| 189 | client.on('guildCreate', guild => { | |
| 190 | let defaultChannel = getDefaultChannel(guild); | |
| 191 | defaultChannel && defaultChannel.send(`**I'm the Name Painter. I let users customize their name color.** | |
| 192 | Some things to note | |
| 193 | ||
| 194 | - The paint command is available to **all users** in the server. | |
| 195 | - You should not have existing roles that start with # | |
| 196 | - You *generally* should not assign the roles manually | |
| 197 | ||
| 198 | To use me, simply run | |
| 199 | > /paint <color> | |
| 200 | > Where <color> is any valid HEX or CSS color value. | |
| 201 | ||
| 202 | Created by dave caruso, <https://davecode.me>, support \`dave@davecode.me\``); | |
| 203 | ||
| 204 | updateClientStatus(); | |
| 205 | }); | |
| 206 | ||
| 207 | client.login(process.env.TOKEN); | |
| 208 | ||
| 209 | if (process.env.HEALTHCHECKS_URL) { | |
| 210 | var https = require('https'); | |
| 211 | setInterval(() => { | |
| 212 | https.get(process.env.HEALTHCHECKS_URL).on('error', () => {}); | |
| 213 | }, 5 * 60 * 1000); | |
| 214 | } | |
| \ No newline at end of file |
index.ts created+197| ... | ... | @@ -0,0 +1,197 @@ |
| 1 | import Color from "color"; | |
| 2 | import * as Discord from "discord.js"; | |
| 3 | import Long from "long"; | |
| 4 | import NodeCache from "node-cache"; | |
| 5 | ||
| 6 | import 'dotenv/config'; | |
| 7 | ||
| 8 | const helpMessage = `**I'm the Name Painter. I let users customize their name color.** | |
| 9 | Some things to note | |
| 10 | ||
| 11 | - The paint command is available to **all users** in the server by default. | |
| 12 | - You should not have existing roles that start with \`#\` as this is how the bot identifies color roles. | |
| 13 | - Roles always are added at the bottom of the role list, meaning none of your other roles should have colors. | |
| 14 | ||
| 15 | To use me, simply run | |
| 16 | > /paint <color> | |
| 17 | > Where <color> is any valid HEX or CSS color value. | |
| 18 | ||
| 19 | Created by dave caruso, <https://paperdave.net>, support \`me@paperdave.net\``; | |
| 20 | ||
| 21 | const client = new Discord.Client({ | |
| 22 | intents: [ | |
| 23 | Discord.IntentsBitField.Flags.Guilds, | |
| 24 | Discord.IntentsBitField.Flags.GuildMembers, | |
| 25 | ], | |
| 26 | }); | |
| 27 | ||
| 28 | function updateClientStatus() { | |
| 29 | client.user?.setActivity(`/paint | ${client.guilds.cache.size} servers.`) | |
| 30 | } | |
| 31 | ||
| 32 | client.on('ready', async() => { | |
| 33 | console.log(`Logged in as ${client.user?.tag}!`); | |
| 34 | updateClientStatus(); | |
| 35 | ||
| 36 | // client.application.commands.create({ | |
| 37 | // name: 'paint', | |
| 38 | // description: 'Customize your username color', | |
| 39 | // options: [ | |
| 40 | // { name: 'color', description: 'Color to change your name to (HEX or CSS)', type: 'STRING', required: true }, | |
| 41 | // ] | |
| 42 | // }); | |
| 43 | }); | |
| 44 | ||
| 45 | const rateLimitCache = new NodeCache({ | |
| 46 | stdTTL: 2, | |
| 47 | }) | |
| 48 | ||
| 49 | async function cleanup(guild: Discord.Guild) { | |
| 50 | const now = Date.now(); | |
| 51 | let n = 0; | |
| 52 | const rolesToCheck = guild.roles.cache.filter(role => role.name.startsWith('#')); | |
| 53 | const allMembers = await guild.members.fetch(); | |
| 54 | const colorUses: Record<string, boolean> = {}; | |
| 55 | allMembers.forEach(x => { | |
| 56 | x.roles.cache.forEach(role => { | |
| 57 | if (role.name.startsWith('#')) { | |
| 58 | colorUses[role.id] = true; | |
| 59 | } | |
| 60 | }); | |
| 61 | }); | |
| 62 | await Promise.all(rolesToCheck.map(async (role) => { | |
| 63 | if (!colorUses[role.id]) { | |
| 64 | n++; | |
| 65 | await role.delete(); | |
| 66 | } | |
| 67 | })); | |
| 68 | const time = Date.now() - now; | |
| 69 | console.log(`[guild ${guild.id}] cleaned up ${n} roles in ${time}ms [${guild.roles.cache.size} roles left]`); | |
| 70 | return n; | |
| 71 | } | |
| 72 | ||
| 73 | client.on('interactionCreate', async (i) => { | |
| 74 | if (i.isCommand() && i.commandName === 'paint') { | |
| 75 | const input = String(i.options.get('color')!.value); | |
| 76 | ||
| 77 | let color; | |
| 78 | try { | |
| 79 | color = Color(input); | |
| 80 | } catch (error) { | |
| 81 | try { | |
| 82 | color = Color('#' + input); | |
| 83 | } catch (error) { | |
| 84 | i.reply({ | |
| 85 | ephemeral: true, | |
| 86 | content: `Could not get a color from \`\`${input.substring(0, 500).replace(/\n/g, ' ').replace(/`/g, '\u2063`\u2063')}\`\``, | |
| 87 | }) | |
| 88 | return; | |
| 89 | } | |
| 90 | } | |
| 91 | ||
| 92 | const hex = color.hex(); | |
| 93 | ||
| 94 | if (rateLimitCache.has(i.user.id)) { | |
| 95 | i.reply({ | |
| 96 | ephemeral: true, | |
| 97 | content: 'You have reached the rate limit. Please wait a few seconds before running the command again.', | |
| 98 | }); | |
| 99 | return; | |
| 100 | } | |
| 101 | ||
| 102 | rateLimitCache.set(i.user.id , 'true'); | |
| 103 | ||
| 104 | let guild = i.guild ?? await client.guilds.fetch(i.guildId!); | |
| 105 | ||
| 106 | let role = guild.roles.cache.find(role => role.name === hex); | |
| 107 | ||
| 108 | if (!role) { | |
| 109 | if (guild.roles.cache.size === 250) { | |
| 110 | i.reply({ | |
| 111 | ephemeral: true, | |
| 112 | content: `The role limit of **250 Roles** has been hit, I cannot assign you this name color.` | |
| 113 | }); | |
| 114 | return; | |
| 115 | } else { | |
| 116 | try { | |
| 117 | role = await guild.roles.create({ | |
| 118 | name: hex, | |
| 119 | color: color.rgbNumber(), | |
| 120 | permissions: [], | |
| 121 | }); | |
| 122 | } catch (error) { | |
| 123 | console.log(error) | |
| 124 | i.reply({ | |
| 125 | ephemeral: true, | |
| 126 | content: `Error creating a role for you, contact an admin to check my permissions.` | |
| 127 | }); | |
| 128 | return; | |
| 129 | } | |
| 130 | } | |
| 131 | } | |
| 132 | ||
| 133 | try { | |
| 134 | const member = i.member!; | |
| 135 | const memberRoles = member.roles as Discord.GuildMemberRoleManager; | |
| 136 | const rolesToRemove = memberRoles.cache.filter(role => role.name.startsWith('#') && role.name !== hex); | |
| 137 | rolesToRemove.map(async (role) => { | |
| 138 | memberRoles.remove(role); | |
| 139 | }); | |
| 140 | await memberRoles.add(role); | |
| 141 | i.reply({ | |
| 142 | ephemeral: true, | |
| 143 | content: `You\'ve been painted to **${hex}**` | |
| 144 | }); | |
| 145 | await cleanup(guild); | |
| 146 | } catch (error) { | |
| 147 | i.reply({ | |
| 148 | ephemeral: true, | |
| 149 | content: `Error assigning your role, contact an admin to check my permissions.` | |
| 150 | }); | |
| 151 | } | |
| 152 | } | |
| 153 | }); | |
| 154 | ||
| 155 | client.on('guildMemberRemove', (member) => { | |
| 156 | cleanup(member.guild); | |
| 157 | }); | |
| 158 | ||
| 159 | client.on('guildDelete', guild => { | |
| 160 | 	updateClientStatus(); | |
| 161 | }); | |
| 162 | ||
| 163 | async function getDefaultChannel(guild: Discord.Guild) { | |
| 164 | const channels = await guild.channels.fetch(); | |
| 165 | const array = [...channels.values()].filter(Boolean).sort((a, b) => (a as any).rawPosition - (b as any).rawPosition) as Discord.TextChannel[]; | |
| 166 | ||
| 167 | console.log(array.map(x => x.name)) | |
| 168 | ||
| 169 | // Check for a "general" channel, which is often default chat | |
| 170 | const generalChannel = array.find(channel => channel.name === "general" && channel.permissionsFor(guild.client.user)?.has("SendMessages")); | |
| 171 | if (generalChannel) | |
| 172 | return generalChannel; | |
| 173 | ||
| 174 | // Now we get into the heavy stuff: first channel in order where everyone (and the bot) can speak | |
| 175 | // hold on to your hats! | |
| 176 | const sendableChannels = array | |
| 177 | .filter(c => c.type === Discord.ChannelType.GuildText && c.permissionsFor(guild.client.user)?.has("SendMessages")) | |
| 178 | .filter(c => c.permissionsFor(guild.id)?.has("ViewChannel") && c.permissionsFor(guild.id)?.has("SendMessages")) | |
| 179 | ||
| 180 | return sendableChannels[0]; | |
| 181 | } | |
| 182 | ||
| 183 | client.on('guildCreate', async(guild) => { | |
| 184 | let defaultChannel = await getDefaultChannel(guild) as Discord.TextChannel; | |
| 185 | defaultChannel && defaultChannel.send(helpMessage); | |
| 186 | ||
| 187 | updateClientStatus(); | |
| 188 | }); | |
| 189 | ||
| 190 | client.login(process.env.TOKEN); | |
| 191 | ||
| 192 | // if (process.env.HEALTHCHECKS_URL) { | |
| 193 | // var https = require('https'); | |
| 194 | // setInterval(() => { | |
| 195 | // https.get(process.env.HEALTHCHECKS_URL).on('error', () => {}); | |
| 196 | // }, 5 * 60 * 1000); | |
| 197 | // } |
package.json+9-6| ... | ... | @@ -1,18 +1,21 @@ |
| 1 | 1 | { |
| 2 | 2 | "name": "name-paint", |
| 3 | "version": "3.0.0", | |
| 3 | "version": "3.1.0", | |
| 4 | "private": true, | |
| 4 | 5 | "description": "Discord Bot to let people paint their name anything.", |
| 5 | 6 | "main": "index.js", |
| 6 | 7 | "scripts": { |
| 7 | "start": "node index.js" | |
| 8 | "start": "node index.js", | |
| 9 | "build": "tsc" | |
| 8 | 10 | }, |
| 9 | "author": "", | |
| 10 | "license": "ISC", | |
| 11 | "type": "module", | |
| 12 | "author": "Dave Caruso", | |
| 11 | 13 | "dependencies": { |
| 12 | 14 | "color": "^3.1.2", |
| 13 | "discord.js": "^13.0.0-dev.4d53d0f.1626566655", | |
| 15 | "discord.js": "^14.7.1", | |
| 14 | 16 | "dotenv": "^10.0.0", |
| 15 | 17 | "long": "^4.0.0", |
| 16 | "node-cache": "^5.1.2" | |
| 18 | "node-cache": "^5.1.2", | |
| 19 | "typescript": "^4.9.5" | |
| 17 | 20 | } |
| 18 | 21 | } |
tsconfig.json created+103| ... | ... | @@ -0,0 +1,103 @@ |
| 1 | { | |
| 2 | "compilerOptions": { | |
| 3 | /* Visit https://aka.ms/tsconfig to read more about this file */ | |
| 4 | ||
| 5 | /* Projects */ | |
| 6 | // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ | |
| 7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ | |
| 8 | // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ | |
| 9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ | |
| 10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ | |
| 11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ | |
| 12 | ||
| 13 | /* Language and Environment */ | |
| 14 | "target": "ESNext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ | |
| 15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ | |
| 16 | // "jsx": "preserve", /* Specify what JSX code is generated. */ | |
| 17 | // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ | |
| 18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ | |
| 19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ | |
| 20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ | |
| 21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ | |
| 22 | // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ | |
| 23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ | |
| 24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ | |
| 25 | // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ | |
| 26 | ||
| 27 | /* Modules */ | |
| 28 | "module": "ESNext", /* Specify what module code is generated. */ | |
| 29 | // "rootDir": "./", /* Specify the root folder within your source files. */ | |
| 30 | "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ | |
| 31 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ | |
| 32 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ | |
| 33 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ | |
| 34 | // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ | |
| 35 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */ | |
| 36 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ | |
| 37 | // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ | |
| 38 | // "resolveJsonModule": true, /* Enable importing .json files. */ | |
| 39 | // "noResolve": true, /* Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project. */ | |
| 40 | ||
| 41 | /* JavaScript Support */ | |
| 42 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ | |
| 43 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ | |
| 44 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ | |
| 45 | ||
| 46 | /* Emit */ | |
| 47 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ | |
| 48 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ | |
| 49 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ | |
| 50 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ | |
| 51 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ | |
| 52 | // "outDir": "./", /* Specify an output folder for all emitted files. */ | |
| 53 | // "removeComments": true, /* Disable emitting comments. */ | |
| 54 | // "noEmit": true, /* Disable emitting files from a compilation. */ | |
| 55 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ | |
| 56 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ | |
| 57 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ | |
| 58 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ | |
| 59 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ | |
| 60 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ | |
| 61 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ | |
| 62 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ | |
| 63 | // "newLine": "crlf", /* Set the newline character for emitting files. */ | |
| 64 | // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ | |
| 65 | // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ | |
| 66 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ | |
| 67 | // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ | |
| 68 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ | |
| 69 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ | |
| 70 | ||
| 71 | /* Interop Constraints */ | |
| 72 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ | |
| 73 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ | |
| 74 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ | |
| 75 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ | |
| 76 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ | |
| 77 | ||
| 78 | /* Type Checking */ | |
| 79 | "strict": true, /* Enable all strict type-checking options. */ | |
| 80 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ | |
| 81 | // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ | |
| 82 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ | |
| 83 | // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ | |
| 84 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ | |
| 85 | // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ | |
| 86 | // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ | |
| 87 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ | |
| 88 | // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ | |
| 89 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ | |
| 90 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ | |
| 91 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ | |
| 92 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ | |
| 93 | // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ | |
| 94 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ | |
| 95 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ | |
| 96 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ | |
| 97 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ | |
| 98 | ||
| 99 | /* Completeness */ | |
| 100 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ | |
| 101 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ | |
| 102 | } | |
| 103 | } |
yarn.lock+200-99| ... | ... | @@ -2,56 +2,83 @@ |
| 2 | 2 | # yarn lockfile v1 |
| 3 | 3 | |
| 4 | 4 | |
| 5 | "@discordjs/builders@^0.2.0": | |
| 6 | version "0.2.0" | |
| 7 | resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-0.2.0.tgz#832c8d894aad13362db7a99f11a7826b21e4cd94" | |
| 8 | integrity sha512-TVq7NZBCJrrTRc3CfxOr3IdgY5nrtqVxZ7qDUF1mN6LgxIiOldmFxsSwMrQBzLFVmOwqFyNLKCeblley8UpEuw== | |
| 5 | "@discordjs/builders@^1.4.0": | |
| 6 | version "1.4.0" | |
| 7 | resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-1.4.0.tgz#b951b5e6ce4e459cd06174ce50dbd51c254c1d47" | |
| 8 | integrity sha512-nEeTCheTTDw5kO93faM1j8ZJPonAX86qpq/QVoznnSa8WWcCgJpjlu6GylfINTDW6o7zZY0my2SYdxx2mfNwGA== | |
| 9 | 9 | dependencies: |
| 10 | discord-api-types "^0.18.1" | |
| 11 | tslib "^2.3.0" | |
| 10 | "@discordjs/util" "^0.1.0" | |
| 11 | "@sapphire/shapeshift" "^3.7.1" | |
| 12 | discord-api-types "^0.37.20" | |
| 13 | fast-deep-equal "^3.1.3" | |
| 14 | ts-mixer "^6.0.2" | |
| 15 | tslib "^2.4.1" | |
| 12 | 16 | |
| 13 | "@discordjs/collection@^0.1.6": | |
| 14 | version "0.1.6" | |
| 15 | resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-0.1.6.tgz#9e9a7637f4e4e0688fd8b2b5c63133c91607682c" | |
| 16 | integrity sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ== | |
| 17 | "@discordjs/collection@^1.3.0": | |
| 18 | version "1.3.0" | |
| 19 | resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-1.3.0.tgz#65bf9674db72f38c25212be562bb28fa0dba6aa3" | |
| 20 | integrity sha512-ylt2NyZ77bJbRij4h9u/wVy7qYw/aDqQLWnadjvDqW/WoWCxrsX6M3CIw9GVP5xcGCDxsrKj5e0r5evuFYwrKg== | |
| 17 | 21 | |
| 18 | "@discordjs/form-data@^3.0.1": | |
| 19 | version "3.0.1" | |
| 20 | resolved "https://registry.yarnpkg.com/@discordjs/form-data/-/form-data-3.0.1.tgz#5c9e6be992e2e57d0dfa0e39979a850225fb4697" | |
| 21 | integrity sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg== | |
| 22 | "@discordjs/rest@^1.4.0": | |
| 23 | version "1.5.0" | |
| 24 | resolved "https://registry.yarnpkg.com/@discordjs/rest/-/rest-1.5.0.tgz#dc15474ab98cf6f31291bf61bbc72bcf4f30cea2" | |
| 25 | integrity sha512-lXgNFqHnbmzp5u81W0+frdXN6Etf4EUi8FAPcWpSykKd8hmlWh1xy6BmE0bsJypU1pxohaA8lQCgp70NUI3uzA== | |
| 22 | 26 | dependencies: |
| 23 | asynckit "^0.4.0" | |
| 24 | combined-stream "^1.0.8" | |
| 25 | mime-types "^2.1.12" | |
| 27 | "@discordjs/collection" "^1.3.0" | |
| 28 | "@discordjs/util" "^0.1.0" | |
| 29 | "@sapphire/async-queue" "^1.5.0" | |
| 30 | "@sapphire/snowflake" "^3.2.2" | |
| 31 | discord-api-types "^0.37.23" | |
| 32 | file-type "^18.0.0" | |
| 33 | tslib "^2.4.1" | |
| 34 | undici "^5.13.0" | |
| 26 | 35 | |
| 27 | "@sapphire/async-queue@^1.1.4": | |
| 28 | version "1.1.4" | |
| 29 | resolved "https://registry.yarnpkg.com/@sapphire/async-queue/-/async-queue-1.1.4.tgz#ae431310917a8880961cebe8e59df6ffa40f2957" | |
| 30 | integrity sha512-fFrlF/uWpGOX5djw5Mu2Hnnrunao75WGey0sP0J3jnhmrJ5TAPzHYOmytD5iN/+pMxS+f+u/gezqHa9tPhRHEA== | |
| 36 | "@discordjs/util@^0.1.0": | |
| 37 | version "0.1.0" | |
| 38 | resolved "https://registry.yarnpkg.com/@discordjs/util/-/util-0.1.0.tgz#e42ca1bf407bc6d9adf252877d1b206e32ba369a" | |
| 39 | integrity sha512-e7d+PaTLVQav6rOc2tojh2y6FE8S7REkqLldq1XF4soCx74XB/DIjbVbVLtBemf0nLW77ntz0v+o5DytKwFNLQ== | |
| 40 | ||
| 41 | "@sapphire/async-queue@^1.5.0": | |
| 42 | version "1.5.0" | |
| 43 | resolved "https://registry.yarnpkg.com/@sapphire/async-queue/-/async-queue-1.5.0.tgz#2f255a3f186635c4fb5a2381e375d3dfbc5312d8" | |
| 44 | integrity sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA== | |
| 45 | ||
| 46 | "@sapphire/shapeshift@^3.7.1": | |
| 47 | version "3.8.1" | |
| 48 | resolved "https://registry.yarnpkg.com/@sapphire/shapeshift/-/shapeshift-3.8.1.tgz#b98dc6a7180f9b38219267917b2e6fa33f9ec656" | |
| 49 | integrity sha512-xG1oXXBhCjPKbxrRTlox9ddaZTvVpOhYLmKmApD/vIWOV1xEYXnpoFs68zHIZBGbqztq6FrUPNPerIrO1Hqeaw== | |
| 50 | dependencies: | |
| 51 | fast-deep-equal "^3.1.3" | |
| 52 | lodash "^4.17.21" | |
| 53 | ||
| 54 | "@sapphire/snowflake@^3.2.2": | |
| 55 | version "3.4.0" | |
| 56 | resolved "https://registry.yarnpkg.com/@sapphire/snowflake/-/snowflake-3.4.0.tgz#25c012158a9feea2256c718985dbd6c1859a5022" | |
| 57 | integrity sha512-zZxymtVO6zeXVMPds+6d7gv/OfnCc25M1Z+7ZLB0oPmeMTPeRWVPQSS16oDJy5ZsyCOLj7M6mbZml5gWXcVRNw== | |
| 58 | ||
| 59 | "@tokenizer/token@^0.3.0": | |
| 60 | version "0.3.0" | |
| 61 | resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" | |
| 62 | integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== | |
| 31 | 63 | |
| 32 | 64 | "@types/node@*": |
| 33 | 65 | version "16.3.3" |
| 34 | 66 | resolved "https://registry.yarnpkg.com/@types/node/-/node-16.3.3.tgz#0c30adff37bbbc7a50eb9b58fae2a504d0d88038" |
| 35 | 67 | integrity sha512-8h7k1YgQKxKXWckzFCMfsIwn0Y61UK6tlD6y2lOb3hTOIMlK3t9/QwHOhc81TwU+RMf0As5fj7NPjroERCnejQ== |
| 36 | 68 | |
| 37 | "@types/ws@^7.4.5": | |
| 38 | version "7.4.6" | |
| 39 | resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.4.6.tgz#c4320845e43d45a7129bb32905e28781c71c1fff" | |
| 40 | integrity sha512-ijZ1vzRawI7QoWnTNL8KpHixd2b2XVb9I9HAqI3triPsh1EC0xH0Eg6w2O3TKbDCgiNNlJqfrof6j4T2I+l9vw== | |
| 69 | "@types/ws@^8.5.3": | |
| 70 | version "8.5.4" | |
| 71 | resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.4.tgz#bb10e36116d6e570dd943735f86c933c1587b8a5" | |
| 72 | integrity sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg== | |
| 41 | 73 | dependencies: |
| 42 | 74 | "@types/node" "*" |
| 43 | 75 | |
| 44 | abort-controller@^3.0.0: | |
| 45 | version "3.0.0" | |
| 46 | resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" | |
| 47 | integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== | |
| 76 | busboy@^1.6.0: | |
| 77 | version "1.6.0" | |
| 78 | resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" | |
| 79 | integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== | |
| 48 | 80 | dependencies: |
| 49 | event-target-shim "^5.0.0" | |
| 50 | ||
| 51 | asynckit@^0.4.0: | |
| 52 | version "0.4.0" | |
| 53 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" | |
| 54 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= | |
| 81 | streamsearch "^1.1.0" | |
| 55 | 82 | |
| 56 | 83 | clone@2.x: |
| 57 | 84 | version "2.1.2" |
| ... | ... | @@ -86,75 +113,78 @@ color@^3.1.2: |
| 86 | 113 | color-convert "^2.0.1" |
| 87 | 114 | color-string "^1.6.0" |
| 88 | 115 | |
| 89 | combined-stream@^1.0.8: | |
| 90 | version "1.0.8" | |
| 91 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" | |
| 92 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== | |
| 93 | dependencies: | |
| 94 | delayed-stream "~1.0.0" | |
| 95 | ||
| 96 | delayed-stream@~1.0.0: | |
| 97 | version "1.0.0" | |
| 98 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" | |
| 99 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= | |
| 100 | ||
| 101 | discord-api-types@^0.18.1: | |
| 102 | version "0.18.1" | |
| 103 | resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.18.1.tgz#5d08ed1263236be9c21a22065d0e6b51f790f492" | |
| 104 | integrity sha512-hNC38R9ZF4uaujaZQtQfm5CdQO58uhdkoHQAVvMfIL0LgOSZeW575W8H6upngQOuoxWd8tiRII3LLJm9zuQKYg== | |
| 105 | ||
| 106 | discord-api-types@^0.19.0-next.f393ba520d7d6d2aacaca7b3ca5d355fab614f6e: | |
| 107 | version "0.19.0-next.f393ba520d7d6d2aacaca7b3ca5d355fab614f6e" | |
| 108 | resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.19.0-next.f393ba520d7d6d2aacaca7b3ca5d355fab614f6e.tgz#d5f36f5712ec8fe2fe928b5c37618c94a3969d6a" | |
| 109 | integrity sha512-ttRA/8e/WKHDbGFfED5WlS7gID+kalmNr6iMiWBCvkphQ7kFHiTOVbnj/zX9ksaRaYXp/I38SCQ+qZvLu8DJZg== | |
| 110 | ||
| 111 | discord.js@^13.0.0-dev.4d53d0f.1626566655: | |
| 112 | version "13.0.0-dev.4d53d0f.1626566655" | |
| 113 | resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-13.0.0-dev.4d53d0f.1626566655.tgz#8680d6c08a931b1550664daeb4ac02eb2c9c9bde" | |
| 114 | integrity sha512-TXq6Q16X8QVt4A81q0eaBZd+hfvThIvx76FLd8eRiB4H9Hid3BnVwzbOAucwZ3Xr+koPcaw16YVoV+XL9ZwknA== | |
| 115 | dependencies: | |
| 116 | "@discordjs/builders" "^0.2.0" | |
| 117 | "@discordjs/collection" "^0.1.6" | |
| 118 | "@discordjs/form-data" "^3.0.1" | |
| 119 | "@sapphire/async-queue" "^1.1.4" | |
| 120 | "@types/ws" "^7.4.5" | |
| 121 | abort-controller "^3.0.0" | |
| 122 | discord-api-types "^0.19.0-next.f393ba520d7d6d2aacaca7b3ca5d355fab614f6e" | |
| 123 | node-fetch "^2.6.1" | |
| 124 | ws "^7.5.1" | |
| 116 | discord-api-types@^0.37.20, discord-api-types@^0.37.23: | |
| 117 | version "0.37.32" | |
| 118 | resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.37.32.tgz#661053cfab02eb4807d26a3800c81949b5ab7607" | |
| 119 | integrity sha512-oUA4dhrzFOkvIWOc9WvKhPwsezUUVd5v5M7am1uupnRZjOmpE9RJMS0fTCUqNiMRlNAaZwPEy09UZOdIR9CyGQ== | |
| 120 | ||
| 121 | discord.js@^14.7.1: | |
| 122 | version "14.7.1" | |
| 123 | resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-14.7.1.tgz#26079d0ff4d27daf02480a403c456121f0682bd9" | |
| 124 | integrity sha512-1FECvqJJjjeYcjSm0IGMnPxLqja/pmG1B0W2l3lUY2Gi4KXiyTeQmU1IxWcbXHn2k+ytP587mMWqva2IA87EbA== | |
| 125 | dependencies: | |
| 126 | "@discordjs/builders" "^1.4.0" | |
| 127 | "@discordjs/collection" "^1.3.0" | |
| 128 | "@discordjs/rest" "^1.4.0" | |
| 129 | "@discordjs/util" "^0.1.0" | |
| 130 | "@sapphire/snowflake" "^3.2.2" | |
| 131 | "@types/ws" "^8.5.3" | |
| 132 | discord-api-types "^0.37.20" | |
| 133 | fast-deep-equal "^3.1.3" | |
| 134 | lodash.snakecase "^4.1.1" | |
| 135 | tslib "^2.4.1" | |
| 136 | undici "^5.13.0" | |
| 137 | ws "^8.11.0" | |
| 125 | 138 | |
| 126 | 139 | dotenv@^10.0.0: |
| 127 | 140 | version "10.0.0" |
| 128 | 141 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" |
| 129 | 142 | integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== |
| 130 | 143 | |
| 131 | event-target-shim@^5.0.0: | |
| 132 | version "5.0.1" | |
| 133 | resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" | |
| 134 | integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== | |
| 144 | fast-deep-equal@^3.1.3: | |
| 145 | version "3.1.3" | |
| 146 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" | |
| 147 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== | |
| 148 | ||
| 149 | file-type@^18.0.0: | |
| 150 | version "18.2.0" | |
| 151 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-18.2.0.tgz#c2abec00d1af0f09151e1549e3588aab0bac5001" | |
| 152 | integrity sha512-M3RQMWY3F2ykyWZ+IHwNCjpnUmukYhtdkGGC1ZVEUb0ve5REGF7NNJ4Q9ehCUabtQKtSVFOMbFTXgJlFb0DQIg== | |
| 153 | dependencies: | |
| 154 | readable-web-to-node-stream "^3.0.2" | |
| 155 | strtok3 "^7.0.0" | |
| 156 | token-types "^5.0.1" | |
| 157 | ||
| 158 | ieee754@^1.2.1: | |
| 159 | version "1.2.1" | |
| 160 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" | |
| 161 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== | |
| 162 | ||
| 163 | inherits@^2.0.3: | |
| 164 | version "2.0.4" | |
| 165 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" | |
| 166 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== | |
| 135 | 167 | |
| 136 | 168 | is-arrayish@^0.3.1: |
| 137 | 169 | version "0.3.2" |
| 138 | 170 | resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" |
| 139 | 171 | integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== |
| 140 | 172 | |
| 173 | lodash.snakecase@^4.1.1: | |
| 174 | version "4.1.1" | |
| 175 | resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" | |
| 176 | integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== | |
| 177 | ||
| 178 | lodash@^4.17.21: | |
| 179 | version "4.17.21" | |
| 180 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" | |
| 181 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== | |
| 182 | ||
| 141 | 183 | long@^4.0.0: |
| 142 | 184 | version "4.0.0" |
| 143 | 185 | resolved "https://registry.yarnpkg.com/long/-/long-4.0.0.tgz#9a7b71cfb7d361a194ea555241c92f7468d5bf28" |
| 144 | 186 | integrity sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA== |
| 145 | 187 | |
| 146 | mime-db@1.48.0: | |
| 147 | version "1.48.0" | |
| 148 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" | |
| 149 | integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== | |
| 150 | ||
| 151 | mime-types@^2.1.12: | |
| 152 | version "2.1.31" | |
| 153 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" | |
| 154 | integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== | |
| 155 | dependencies: | |
| 156 | mime-db "1.48.0" | |
| 157 | ||
| 158 | 188 | node-cache@^5.1.2: |
| 159 | 189 | version "5.1.2" |
| 160 | 190 | resolved "https://registry.yarnpkg.com/node-cache/-/node-cache-5.1.2.tgz#f264dc2ccad0a780e76253a694e9fd0ed19c398d" |
| ... | ... | @@ -162,10 +192,31 @@ node-cache@^5.1.2: |
| 162 | 192 | dependencies: |
| 163 | 193 | clone "2.x" |
| 164 | 194 | |
| 165 | node-fetch@^2.6.1: | |
| 166 | version "2.6.1" | |
| 167 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" | |
| 168 | integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== | |
| 195 | peek-readable@^5.0.0: | |
| 196 | version "5.0.0" | |
| 197 | resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-5.0.0.tgz#7ead2aff25dc40458c60347ea76cfdfd63efdfec" | |
| 198 | integrity sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A== | |
| 199 | ||
| 200 | readable-stream@^3.6.0: | |
| 201 | version "3.6.0" | |
| 202 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" | |
| 203 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== | |
| 204 | dependencies: | |
| 205 | inherits "^2.0.3" | |
| 206 | string_decoder "^1.1.1" | |
| 207 | util-deprecate "^1.0.1" | |
| 208 | ||
| 209 | readable-web-to-node-stream@^3.0.2: | |
| 210 | version "3.0.2" | |
| 211 | resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" | |
| 212 | integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw== | |
| 213 | dependencies: | |
| 214 | readable-stream "^3.6.0" | |
| 215 | ||
| 216 | safe-buffer@~5.2.0: | |
| 217 | version "5.2.1" | |
| 218 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" | |
| 219 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== | |
| 169 | 220 | |
| 170 | 221 | simple-swizzle@^0.2.2: |
| 171 | 222 | version "0.2.2" |
| ... | ... | @@ -174,12 +225,62 @@ simple-swizzle@^0.2.2: |
| 174 | 225 | dependencies: |
| 175 | 226 | is-arrayish "^0.3.1" |
| 176 | 227 | |
| 177 | tslib@^2.3.0: | |
| 178 | version "2.3.0" | |
| 179 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" | |
| 180 | integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== | |
| 228 | streamsearch@^1.1.0: | |
| 229 | version "1.1.0" | |
| 230 | resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" | |
| 231 | integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== | |
| 232 | ||
| 233 | string_decoder@^1.1.1: | |
| 234 | version "1.3.0" | |
| 235 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" | |
| 236 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== | |
| 237 | dependencies: | |
| 238 | safe-buffer "~5.2.0" | |
| 239 | ||
| 240 | strtok3@^7.0.0: | |
| 241 | version "7.0.0" | |
| 242 | resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-7.0.0.tgz#868c428b4ade64a8fd8fee7364256001c1a4cbe5" | |
| 243 | integrity sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ== | |
| 244 | dependencies: | |
| 245 | "@tokenizer/token" "^0.3.0" | |
| 246 | peek-readable "^5.0.0" | |
| 247 | ||
| 248 | token-types@^5.0.1: | |
| 249 | version "5.0.1" | |
| 250 | resolved "https://registry.yarnpkg.com/token-types/-/token-types-5.0.1.tgz#aa9d9e6b23c420a675e55413b180635b86a093b4" | |
| 251 | integrity sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg== | |
| 252 | dependencies: | |
| 253 | "@tokenizer/token" "^0.3.0" | |
| 254 | ieee754 "^1.2.1" | |
| 255 | ||
| 256 | ts-mixer@^6.0.2: | |
| 257 | version "6.0.3" | |
| 258 | resolved "https://registry.yarnpkg.com/ts-mixer/-/ts-mixer-6.0.3.tgz#69bd50f406ff39daa369885b16c77a6194c7cae6" | |
| 259 | integrity sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ== | |
| 260 | ||
| 261 | tslib@^2.4.1: | |
| 262 | version "2.5.0" | |
| 263 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" | |
| 264 | integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== | |
| 265 | ||
| 266 | typescript@^4.9.5: | |
| 267 | version "4.9.5" | |
| 268 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" | |
| 269 | integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== | |
| 270 | ||
| 271 | undici@^5.13.0: | |
| 272 | version "5.18.0" | |
| 273 | resolved "https://registry.yarnpkg.com/undici/-/undici-5.18.0.tgz#e88a77a74d991a30701e9a6751e4193a26fabda9" | |
| 274 | integrity sha512-1iVwbhonhFytNdg0P4PqyIAXbdlVZVebtPDvuM36m66mRw4OGrCm2MYynJv/UENFLdP13J1nPVQzVE2zTs1OeA== | |
| 275 | dependencies: | |
| 276 | busboy "^1.6.0" | |
| 277 | ||
| 278 | util-deprecate@^1.0.1: | |
| 279 | version "1.0.2" | |
| 280 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" | |
| 281 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== | |
| 181 | 282 | |
| 182 | ws@^7.5.1: | |
| 183 | version "7.5.3" | |
| 184 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.3.tgz#160835b63c7d97bfab418fc1b8a9fced2ac01a74" | |
| 185 | integrity sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg== | |
| 283 | ws@^8.11.0: | |
| 284 | version "8.12.0" | |
| 285 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.12.0.tgz#485074cc392689da78e1828a9ff23585e06cddd8" | |
| 286 | integrity sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig== |