mirror of
				https://github.com/citra-emu/discord-bot.git
				synced 2025-11-04 09:24:59 +00:00 
			
		
		
		
	tree-wide: use rollup to bundle
This commit is contained in:
		
							parent
							
								
									8c3e5261b5
								
							
						
					
					
						commit
						29388049ac
					
				
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -51,3 +51,5 @@ config/development.json
 | 
			
		|||
CMakeLists.txt.user*
 | 
			
		||||
 | 
			
		||||
/dist
 | 
			
		||||
 | 
			
		||||
_.ts
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										42
									
								
								generateExports.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								generateExports.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,42 @@
 | 
			
		|||
const fs = require('fs');
 | 
			
		||||
const path = require('path');
 | 
			
		||||
 | 
			
		||||
function collectModules(dir, extname) {
 | 
			
		||||
    let modules = [];
 | 
			
		||||
    fs.readdirSync(`./src/${dir}/`).forEach(function (file) {
 | 
			
		||||
      // Load the module if it's a script.
 | 
			
		||||
      if (path.extname(file) === extname) {
 | 
			
		||||
        if (file.includes(".disabled")) {
 | 
			
		||||
          console.info(`Did not load disabled module: ${file}`);
 | 
			
		||||
        } else {
 | 
			
		||||
          const moduleName = path.basename(file, extname);
 | 
			
		||||
          if (moduleName === "_") return;
 | 
			
		||||
          modules.push(moduleName);
 | 
			
		||||
          console.info(`Scanning ${moduleName} from ${file} ...`);
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
    return modules;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const header = '// GENERATED FILE. DO NOT EDIT!\n// See generateExports.js for details.\n'
 | 
			
		||||
 | 
			
		||||
console.info('Generating module loader ...');
 | 
			
		||||
 | 
			
		||||
let modules = collectModules('commands', '.ts');
 | 
			
		||||
let loader_content = header;
 | 
			
		||||
for (let mod of modules) {
 | 
			
		||||
    loader_content += `import * as ${mod} from "./${mod}";\n`;
 | 
			
		||||
}
 | 
			
		||||
let loader_map = modules.map((moduleName) => `${moduleName}: ${moduleName}`).join(', ');
 | 
			
		||||
loader_content += `\nexport default { ${loader_map} };\n`;
 | 
			
		||||
fs.writeFileSync("./src/commands/_.ts", loader_content);
 | 
			
		||||
 | 
			
		||||
let triggers = collectModules('triggers', '.ts');
 | 
			
		||||
loader_content = header;
 | 
			
		||||
for (let mod of triggers) {
 | 
			
		||||
    loader_content += `import * as ${mod} from "./${mod}";\n`;
 | 
			
		||||
}
 | 
			
		||||
loader_map = triggers.join(', ');
 | 
			
		||||
loader_content += `\nexport default [ ${loader_map} ];\n`;
 | 
			
		||||
fs.writeFileSync("./src/triggers/_.ts", loader_content);
 | 
			
		||||
| 
						 | 
				
			
			@ -20,6 +20,10 @@
 | 
			
		|||
    "winston": "^3.8.2"
 | 
			
		||||
  },
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "@rollup/plugin-commonjs": "^22.0.2",
 | 
			
		||||
    "@rollup/plugin-json": "^4.1.0",
 | 
			
		||||
    "@rollup/plugin-node-resolve": "^14.1.0",
 | 
			
		||||
    "@rollup/plugin-typescript": "^8.5.0",
 | 
			
		||||
    "@tsconfig/node14": "^1.0.3",
 | 
			
		||||
    "@types/ip": "^1.1.0",
 | 
			
		||||
    "@types/node": "^18.7.18",
 | 
			
		||||
| 
						 | 
				
			
			@ -34,10 +38,13 @@
 | 
			
		|||
    "eslint-plugin-node": "^11.1.0",
 | 
			
		||||
    "eslint-plugin-promise": "^6.0.1",
 | 
			
		||||
    "eslint-plugin-standard": "^5.0.0",
 | 
			
		||||
    "rollup": "^2.79.0",
 | 
			
		||||
    "ts-node": "^10.9.1"
 | 
			
		||||
  },
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "build": "yarn run tsc",
 | 
			
		||||
    "postinstall": "node generateExports.js",
 | 
			
		||||
    "build": "yarn run rollup -c",
 | 
			
		||||
    "check": "yarn run tsc --noEmit",
 | 
			
		||||
    "serve": "yarn run ts-node ./src/server.ts"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										25
									
								
								rollup.config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								rollup.config.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
import typescript from '@rollup/plugin-typescript';
 | 
			
		||||
import resolve from '@rollup/plugin-node-resolve';
 | 
			
		||||
import commonjs from '@rollup/plugin-commonjs';
 | 
			
		||||
import json from '@rollup/plugin-json';
 | 
			
		||||
 | 
			
		||||
export default {
 | 
			
		||||
    input: 'src/server.ts',
 | 
			
		||||
    external: ['discord.js'],
 | 
			
		||||
    output: {
 | 
			
		||||
        dir: 'dist',
 | 
			
		||||
        format: 'cjs',
 | 
			
		||||
    },
 | 
			
		||||
    plugins: [
 | 
			
		||||
        resolve({
 | 
			
		||||
            browser: false
 | 
			
		||||
        }),
 | 
			
		||||
        commonjs({ dynamicRequireTargets: [
 | 
			
		||||
            'node_modules/logform/*.js',
 | 
			
		||||
            './src/responses/citra.json',
 | 
			
		||||
            './src/responses/yuzu.json',
 | 
			
		||||
        ], extensions: ['.mjs', '.js', '.ts'], transformMixedEsModules: true }),
 | 
			
		||||
        json(),
 | 
			
		||||
        typescript()
 | 
			
		||||
    ]
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			@ -1,5 +1,6 @@
 | 
			
		|||
import { ban } from '../common';
 | 
			
		||||
import discord = require('discord.js');
 | 
			
		||||
import { IModule } from '../models/interfaces';
 | 
			
		||||
import * as discord from 'discord.js';
 | 
			
		||||
 | 
			
		||||
export const roles = ['Admins', 'Moderators', 'CitraBot'];
 | 
			
		||||
export function command (message: discord.Message) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
import state from '../state';
 | 
			
		||||
import * as data from '../data';
 | 
			
		||||
import logger from '../logging';
 | 
			
		||||
import discord = require('discord.js');
 | 
			
		||||
import * as discord from 'discord.js';
 | 
			
		||||
 | 
			
		||||
export const roles = ['Admins', 'Moderators'];
 | 
			
		||||
export function command (message: discord.Message) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
import fetch from 'node-fetch';
 | 
			
		||||
import discord = require('discord.js');
 | 
			
		||||
import stringSimilarity = require('string-similarity');
 | 
			
		||||
import * as discord from 'discord.js';
 | 
			
		||||
import * as stringSimilarity from 'string-similarity';
 | 
			
		||||
 | 
			
		||||
import logger from '../logging';
 | 
			
		||||
import state from '../state';
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
import state from '../state';
 | 
			
		||||
import logger from '../logging';
 | 
			
		||||
import discord = require('discord.js');
 | 
			
		||||
import * as discord from 'discord.js';
 | 
			
		||||
 | 
			
		||||
export const roles = ['Admins', 'Moderators', 'CitraBot'];
 | 
			
		||||
export function command (message: discord.Message) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
import state from '../state';
 | 
			
		||||
import UserBan from '../models/UserBan';
 | 
			
		||||
import UserWarning from '../models/UserWarning';
 | 
			
		||||
import discord = require('discord.js');
 | 
			
		||||
import * as discord from 'discord.js';
 | 
			
		||||
 | 
			
		||||
export const roles = ['Admins', 'Moderators'];
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
import discord = require('discord.js');
 | 
			
		||||
import * as discord from 'discord.js';
 | 
			
		||||
 | 
			
		||||
export const roles = ['Admins', 'Moderators'];
 | 
			
		||||
export async function command (message: discord.Message, reply: string) {
 | 
			
		||||
export async function command (message: discord.Message, reply: string | undefined) {
 | 
			
		||||
  let replyMessage;
 | 
			
		||||
  if (reply == null) {
 | 
			
		||||
    replyMessage = message.content.substr(message.content.indexOf(' ') + 1);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
import fetch from 'node-fetch';
 | 
			
		||||
import discord = require('discord.js');
 | 
			
		||||
import * as discord from 'discord.js';
 | 
			
		||||
 | 
			
		||||
const fetchOptions = {
 | 
			
		||||
  headers: { 'User-Agent': 'Citra-Emu/CitraBot (Node.js)', Accept: 'application/vnd.github.antiope-preview+json' }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,10 +2,10 @@ import state from '../state';
 | 
			
		|||
import * as data from '../data';
 | 
			
		||||
import logger from '../logging';
 | 
			
		||||
import UserWarning from '../models/UserWarning';
 | 
			
		||||
import discord = require('discord.js');
 | 
			
		||||
import * as discord from 'discord.js';
 | 
			
		||||
 | 
			
		||||
exports.roles = ['Admins', 'Moderators'];
 | 
			
		||||
exports.command = function (message: discord.Message) {
 | 
			
		||||
export const roles = ['Admins', 'Moderators'];
 | 
			
		||||
export function command(message: discord.Message) {
 | 
			
		||||
  const silent = message.content.includes('silent');
 | 
			
		||||
 | 
			
		||||
  message.mentions.users.map(async (user) => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
import state from '../state';
 | 
			
		||||
import discord = require('discord.js');
 | 
			
		||||
import * as discord from 'discord.js';
 | 
			
		||||
 | 
			
		||||
exports.command = function (message: discord.Message) {
 | 
			
		||||
export function command(message: discord.Message) {
 | 
			
		||||
  message.mentions.users.map(async (user) => {
 | 
			
		||||
    const warnings = state.warnings.filter(x => x.id === user.id && !x.cleared);
 | 
			
		||||
    await message.channel.send(`${user.toString()}, you have ${warnings.length} total warnings.`);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,7 +2,7 @@ import state from './state';
 | 
			
		|||
import * as data from './data';
 | 
			
		||||
import logger from './logging';
 | 
			
		||||
import UserBan from './models/UserBan';
 | 
			
		||||
import discord = require('discord.js');
 | 
			
		||||
import * as discord from 'discord.js';
 | 
			
		||||
 | 
			
		||||
export async function ban (user: discord.User, moderator: discord.User, guild: discord.Guild | null) {
 | 
			
		||||
  const count = state.warnings.filter(x => x.id === user.id && !x.cleared).length || 0;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
import winston = require('winston');
 | 
			
		||||
import * as winston from 'winston';
 | 
			
		||||
import * as ip from 'ip';
 | 
			
		||||
import * as os from 'os';
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,38 +1,39 @@
 | 
			
		|||
// Check for environmental variables.
 | 
			
		||||
import discord = require('discord.js');
 | 
			
		||||
import path = require('path');
 | 
			
		||||
import fs = require('fs');
 | 
			
		||||
import * as discord from 'discord.js';
 | 
			
		||||
 | 
			
		||||
import logger from './logging';
 | 
			
		||||
import state from './state';
 | 
			
		||||
import * as data from './data';
 | 
			
		||||
import { IModule, ITrigger } from './models/interfaces';
 | 
			
		||||
import modules from './commands/_';
 | 
			
		||||
import triggers from './triggers/_';
 | 
			
		||||
 | 
			
		||||
require('checkenv').check();
 | 
			
		||||
// Check for environmental variables.
 | 
			
		||||
// eslint-disable-next-line
 | 
			
		||||
import * as checkenv from 'checkenv';
 | 
			
		||||
checkenv.setConfig(require('../env.json'));
 | 
			
		||||
checkenv.check();
 | 
			
		||||
 | 
			
		||||
interface IModuleMap {
 | 
			
		||||
  [name: string]: IModule;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
let cachedModules: IModuleMap = {};
 | 
			
		||||
let cachedTriggers: ITrigger[] = [];
 | 
			
		||||
const client = new discord.Client({ intents: discord.GatewayIntentBits.GuildMembers | discord.GatewayIntentBits.Guilds | discord.GatewayIntentBits.GuildBans | discord.GatewayIntentBits.GuildMessages });
 | 
			
		||||
const cachedModules: IModuleMap = modules;
 | 
			
		||||
const cachedTriggers: ITrigger[] = triggers;
 | 
			
		||||
const client = new discord.Client({ intents: discord.GatewayIntentBits.GuildMembers | discord.GatewayIntentBits.Guilds | discord.GatewayIntentBits.GuildBans | discord.GatewayIntentBits.GuildMessages | discord.GatewayIntentBits.DirectMessages | discord.GatewayIntentBits.MessageContent });
 | 
			
		||||
const rulesTrigger = process.env.DISCORD_RULES_TRIGGER;
 | 
			
		||||
const rluesRole = process.env.DISCORD_RULES_ROLE;
 | 
			
		||||
const rulesRole = process.env.DISCORD_RULES_ROLE;
 | 
			
		||||
const mediaUsers = new Map();
 | 
			
		||||
 | 
			
		||||
logger.info('Application startup. Configuring environment.');
 | 
			
		||||
if (!rulesTrigger) {
 | 
			
		||||
  throw new Error('DISCORD_RULES_TRIGGER somehow became undefined.');
 | 
			
		||||
}
 | 
			
		||||
if (!rluesRole) {
 | 
			
		||||
if (!rulesRole) {
 | 
			
		||||
  throw new Error('DISCORD_RULES_ROLE somehow became undefined.');
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function findArray(haystack: string | any[], arr: any[]) {
 | 
			
		||||
  return arr.some(function (v: any) {
 | 
			
		||||
    return haystack.indexOf(v) >= 0;
 | 
			
		||||
  });
 | 
			
		||||
  return arr.some((v: any) => haystack.indexOf(v) >= 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function IsIgnoredCategory(categoryName: string) {
 | 
			
		||||
| 
						 | 
				
			
			@ -175,7 +176,7 @@ client.on('messageCreate', async (message) => {
 | 
			
		|||
    if (message.content.toLowerCase().includes(rulesTrigger)) {
 | 
			
		||||
      // We want to remove the 'Unauthorized' role from them once they agree to the rules.
 | 
			
		||||
      logger.verbose(`${message.author.username} ${message.author} has accepted the rules, removing role ${process.env.DISCORD_RULES_ROLE}.`);
 | 
			
		||||
      await message.member?.roles.remove(rluesRole, 'Accepted the rules.');
 | 
			
		||||
      await message.member?.roles.remove(rulesRole, 'Accepted the rules.');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Delete the message in the channel to force a cleanup.
 | 
			
		||||
| 
						 | 
				
			
			@ -227,40 +228,6 @@ client.on('messageCreate', async (message) => {
 | 
			
		|||
  }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
// Cache all command modules.
 | 
			
		||||
cachedModules = {};
 | 
			
		||||
fs.readdirSync('./commands/').forEach(function (file) {
 | 
			
		||||
  // Load the module if it's a script.
 | 
			
		||||
  if (path.extname(file) === '.js') {
 | 
			
		||||
    if (file.includes('.disabled')) {
 | 
			
		||||
      logger.info(`Did not load disabled module: ${file}`);
 | 
			
		||||
    } else {
 | 
			
		||||
      const moduleName = path.basename(file, '.js').toLowerCase();
 | 
			
		||||
      logger.info(`Loaded module: ${moduleName} from ${file}`);
 | 
			
		||||
      cachedModules[moduleName] = require(`./commands/${file}`);
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
// Cache all triggers.
 | 
			
		||||
cachedTriggers = [];
 | 
			
		||||
fs.readdirSync('./triggers/').forEach(function (file) {
 | 
			
		||||
  // Load the module if it's a script.
 | 
			
		||||
  if (path.extname(file) === '.js') {
 | 
			
		||||
    if (file.includes('.disabled')) {
 | 
			
		||||
      logger.info(`Did not load disabled trigger: ${file}`);
 | 
			
		||||
    } else {
 | 
			
		||||
      const moduleName = path.basename(file, '.js').toLowerCase();
 | 
			
		||||
      logger.info(`Loaded trigger: ${moduleName} from ${file}`);
 | 
			
		||||
      try {
 | 
			
		||||
        cachedTriggers.push(require(`./triggers/${file}`));
 | 
			
		||||
      } catch (e) {
 | 
			
		||||
        logger.error(`Could not load trigger ${moduleName}: ${e}`);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
data.readWarnings();
 | 
			
		||||
data.readBans();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
import UserWarning from './models/UserWarning';
 | 
			
		||||
import UserBan from './models/UserBan';
 | 
			
		||||
import { IGameDBEntry, IResponses } from './models/interfaces';
 | 
			
		||||
import discord = require('discord.js');
 | 
			
		||||
import * as discord from 'discord.js';
 | 
			
		||||
 | 
			
		||||
/* Application State */
 | 
			
		||||
class State {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
import { ban } from '../common';
 | 
			
		||||
import state from '../state';
 | 
			
		||||
import logger from '../logging';
 | 
			
		||||
import discord = require('discord.js');
 | 
			
		||||
import * as discord from 'discord.js';
 | 
			
		||||
 | 
			
		||||
export function trigger (message: discord.Message) {
 | 
			
		||||
  return message.mentions.users.size > 10;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,7 @@
 | 
			
		|||
{
 | 
			
		||||
    "extends": "@tsconfig/node14/tsconfig.json",
 | 
			
		||||
    "compilerOptions": {
 | 
			
		||||
        "module": "CommonJS",
 | 
			
		||||
        "module": "esnext",
 | 
			
		||||
        "noImplicitAny": true,
 | 
			
		||||
        "strictNullChecks": true,
 | 
			
		||||
        "removeComments": true,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										140
									
								
								yarn.lock
									
									
									
									
									
								
							
							
						
						
									
										140
									
								
								yarn.lock
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -146,6 +146,55 @@
 | 
			
		|||
    "@nodelib/fs.scandir" "2.1.5"
 | 
			
		||||
    fastq "^1.6.0"
 | 
			
		||||
 | 
			
		||||
"@rollup/plugin-commonjs@^22.0.2":
 | 
			
		||||
  version "22.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-22.0.2.tgz#ee8ca8415cda30d383b4096aad5222435b4b69b6"
 | 
			
		||||
  integrity sha512-//NdP6iIwPbMTcazYsiBMbJW7gfmpHom33u1beiIoHDEM0Q9clvtQB1T0efvMqHeKsGohiHo97BCPCkBXdscwg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@rollup/pluginutils" "^3.1.0"
 | 
			
		||||
    commondir "^1.0.1"
 | 
			
		||||
    estree-walker "^2.0.1"
 | 
			
		||||
    glob "^7.1.6"
 | 
			
		||||
    is-reference "^1.2.1"
 | 
			
		||||
    magic-string "^0.25.7"
 | 
			
		||||
    resolve "^1.17.0"
 | 
			
		||||
 | 
			
		||||
"@rollup/plugin-json@^4.1.0":
 | 
			
		||||
  version "4.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3"
 | 
			
		||||
  integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@rollup/pluginutils" "^3.0.8"
 | 
			
		||||
 | 
			
		||||
"@rollup/plugin-node-resolve@^14.1.0":
 | 
			
		||||
  version "14.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-14.1.0.tgz#f2fa475405cd7fed6420bf438fe393f988a9bc96"
 | 
			
		||||
  integrity sha512-5G2niJroNCz/1zqwXtk0t9+twOSDlG00k1Wfd7bkbbXmwg8H8dvgHdIWAun53Ps/rckfvOC7scDBjuGFg5OaWw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@rollup/pluginutils" "^3.1.0"
 | 
			
		||||
    "@types/resolve" "1.17.1"
 | 
			
		||||
    deepmerge "^4.2.2"
 | 
			
		||||
    is-builtin-module "^3.1.0"
 | 
			
		||||
    is-module "^1.0.0"
 | 
			
		||||
    resolve "^1.19.0"
 | 
			
		||||
 | 
			
		||||
"@rollup/plugin-typescript@^8.5.0":
 | 
			
		||||
  version "8.5.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-8.5.0.tgz#7ea11599a15b0a30fa7ea69ce3b791d41b862515"
 | 
			
		||||
  integrity sha512-wMv1/scv0m/rXx21wD2IsBbJFba8wGF3ErJIr6IKRfRj49S85Lszbxb4DCo8iILpluTjk2GAAu9CoZt4G3ppgQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@rollup/pluginutils" "^3.1.0"
 | 
			
		||||
    resolve "^1.17.0"
 | 
			
		||||
 | 
			
		||||
"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0":
 | 
			
		||||
  version "3.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b"
 | 
			
		||||
  integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@types/estree" "0.0.39"
 | 
			
		||||
    estree-walker "^1.0.1"
 | 
			
		||||
    picomatch "^2.2.2"
 | 
			
		||||
 | 
			
		||||
"@sapphire/async-queue@^1.5.0":
 | 
			
		||||
  version "1.5.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@sapphire/async-queue/-/async-queue-1.5.0.tgz#2f255a3f186635c4fb5a2381e375d3dfbc5312d8"
 | 
			
		||||
| 
						 | 
				
			
			@ -189,6 +238,16 @@
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.3.tgz#472eaab5f15c1ffdd7f8628bd4c4f753995ec79e"
 | 
			
		||||
  integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==
 | 
			
		||||
 | 
			
		||||
"@types/estree@*":
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2"
 | 
			
		||||
  integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==
 | 
			
		||||
 | 
			
		||||
"@types/estree@0.0.39":
 | 
			
		||||
  version "0.0.39"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f"
 | 
			
		||||
  integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
 | 
			
		||||
 | 
			
		||||
"@types/ip@^1.1.0":
 | 
			
		||||
  version "1.1.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/ip/-/ip-1.1.0.tgz#aec4f5bfd49e4a4c53b590d88c36eb078827a7c0"
 | 
			
		||||
| 
						 | 
				
			
			@ -219,6 +278,13 @@
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/@types/node/-/node-18.7.18.tgz#633184f55c322e4fb08612307c274ee6d5ed3154"
 | 
			
		||||
  integrity sha512-m+6nTEOadJZuTPkKR/SYK3A2d7FZrgElol9UP1Kae90VVU4a6mxnPuLiIW1m4Cq4gZ/nWb9GrdVXJCoCazDAbg==
 | 
			
		||||
 | 
			
		||||
"@types/resolve@1.17.1":
 | 
			
		||||
  version "1.17.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6"
 | 
			
		||||
  integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@types/node" "*"
 | 
			
		||||
 | 
			
		||||
"@types/string-similarity@^4.0.0":
 | 
			
		||||
  version "4.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/@types/string-similarity/-/string-similarity-4.0.0.tgz#8cc03d5d1baad2b74530fe6c7d849d5768d391ad"
 | 
			
		||||
| 
						 | 
				
			
			@ -466,6 +532,11 @@ buffer@^5.6.0:
 | 
			
		|||
    base64-js "^1.3.1"
 | 
			
		||||
    ieee754 "^1.1.13"
 | 
			
		||||
 | 
			
		||||
builtin-modules@^3.3.0:
 | 
			
		||||
  version "3.3.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.3.0.tgz#cae62812b89801e9656336e46223e030386be7b6"
 | 
			
		||||
  integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==
 | 
			
		||||
 | 
			
		||||
call-bind@^1.0.0, call-bind@^1.0.2:
 | 
			
		||||
  version "1.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
 | 
			
		||||
| 
						 | 
				
			
			@ -568,6 +639,11 @@ combined-stream@^1.0.8:
 | 
			
		|||
  dependencies:
 | 
			
		||||
    delayed-stream "~1.0.0"
 | 
			
		||||
 | 
			
		||||
commondir@^1.0.1:
 | 
			
		||||
  version "1.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
 | 
			
		||||
  integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
 | 
			
		||||
 | 
			
		||||
concat-map@0.0.1:
 | 
			
		||||
  version "0.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
 | 
			
		||||
| 
						 | 
				
			
			@ -613,6 +689,11 @@ deep-is@^0.1.3:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
 | 
			
		||||
  integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
 | 
			
		||||
 | 
			
		||||
deepmerge@^4.2.2:
 | 
			
		||||
  version "4.2.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
 | 
			
		||||
  integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
 | 
			
		||||
 | 
			
		||||
define-properties@^1.1.3, define-properties@^1.1.4:
 | 
			
		||||
  version "1.1.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1"
 | 
			
		||||
| 
						 | 
				
			
			@ -941,6 +1022,16 @@ estraverse@^5.1.0, estraverse@^5.2.0:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
 | 
			
		||||
  integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
 | 
			
		||||
 | 
			
		||||
estree-walker@^1.0.1:
 | 
			
		||||
  version "1.0.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700"
 | 
			
		||||
  integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
 | 
			
		||||
 | 
			
		||||
estree-walker@^2.0.1:
 | 
			
		||||
  version "2.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
 | 
			
		||||
  integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
 | 
			
		||||
 | 
			
		||||
esutils@^2.0.2:
 | 
			
		||||
  version "2.0.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
 | 
			
		||||
| 
						 | 
				
			
			@ -1052,6 +1143,11 @@ fs.realpath@^1.0.0:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
 | 
			
		||||
  integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
 | 
			
		||||
 | 
			
		||||
fsevents@~2.3.2:
 | 
			
		||||
  version "2.3.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
 | 
			
		||||
  integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
 | 
			
		||||
 | 
			
		||||
function-bind@^1.1.1:
 | 
			
		||||
  version "1.1.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
 | 
			
		||||
| 
						 | 
				
			
			@ -1108,7 +1204,7 @@ glob-parent@^6.0.1:
 | 
			
		|||
  dependencies:
 | 
			
		||||
    is-glob "^4.0.3"
 | 
			
		||||
 | 
			
		||||
glob@^7.1.3:
 | 
			
		||||
glob@^7.1.3, glob@^7.1.6:
 | 
			
		||||
  version "7.2.3"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
 | 
			
		||||
  integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
 | 
			
		||||
| 
						 | 
				
			
			@ -1272,6 +1368,13 @@ is-boolean-object@^1.1.0:
 | 
			
		|||
    call-bind "^1.0.2"
 | 
			
		||||
    has-tostringtag "^1.0.0"
 | 
			
		||||
 | 
			
		||||
is-builtin-module@^3.1.0:
 | 
			
		||||
  version "3.2.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/is-builtin-module/-/is-builtin-module-3.2.0.tgz#bb0310dfe881f144ca83f30100ceb10cf58835e0"
 | 
			
		||||
  integrity sha512-phDA4oSGt7vl1n5tJvTWooWWAsXLY+2xCnxNqvKhGEzujg+A43wPlPOyDg3C8XQHN+6k/JTQWJ/j0dQh/qr+Hw==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    builtin-modules "^3.3.0"
 | 
			
		||||
 | 
			
		||||
is-callable@^1.1.4, is-callable@^1.2.4:
 | 
			
		||||
  version "1.2.5"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.5.tgz#6123e0b1fef5d7591514b371bb018204892f1a2b"
 | 
			
		||||
| 
						 | 
				
			
			@ -1310,6 +1413,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3:
 | 
			
		|||
  dependencies:
 | 
			
		||||
    is-extglob "^2.1.1"
 | 
			
		||||
 | 
			
		||||
is-module@^1.0.0:
 | 
			
		||||
  version "1.0.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591"
 | 
			
		||||
  integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==
 | 
			
		||||
 | 
			
		||||
is-negative-zero@^2.0.2:
 | 
			
		||||
  version "2.0.2"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150"
 | 
			
		||||
| 
						 | 
				
			
			@ -1327,6 +1435,13 @@ is-number@^7.0.0:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
 | 
			
		||||
  integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
 | 
			
		||||
 | 
			
		||||
is-reference@^1.2.1:
 | 
			
		||||
  version "1.2.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7"
 | 
			
		||||
  integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    "@types/estree" "*"
 | 
			
		||||
 | 
			
		||||
is-regex@^1.1.4:
 | 
			
		||||
  version "1.1.4"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958"
 | 
			
		||||
| 
						 | 
				
			
			@ -1504,6 +1619,13 @@ lru-cache@^6.0.0:
 | 
			
		|||
  dependencies:
 | 
			
		||||
    yallist "^4.0.0"
 | 
			
		||||
 | 
			
		||||
magic-string@^0.25.7:
 | 
			
		||||
  version "0.25.9"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c"
 | 
			
		||||
  integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
 | 
			
		||||
  dependencies:
 | 
			
		||||
    sourcemap-codec "^1.4.8"
 | 
			
		||||
 | 
			
		||||
make-error@^1.1.1:
 | 
			
		||||
  version "1.3.6"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
 | 
			
		||||
| 
						 | 
				
			
			@ -1691,7 +1813,7 @@ peek-readable@^5.0.0:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-5.0.0.tgz#7ead2aff25dc40458c60347ea76cfdfd63efdfec"
 | 
			
		||||
  integrity sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==
 | 
			
		||||
 | 
			
		||||
picomatch@^2.3.1:
 | 
			
		||||
picomatch@^2.2.2, picomatch@^2.3.1:
 | 
			
		||||
  version "2.3.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
 | 
			
		||||
  integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
 | 
			
		||||
| 
						 | 
				
			
			@ -1746,7 +1868,7 @@ resolve-from@^4.0.0:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6"
 | 
			
		||||
  integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
 | 
			
		||||
 | 
			
		||||
resolve@^1.10.1, resolve@^1.20.0, resolve@^1.22.0:
 | 
			
		||||
resolve@^1.10.1, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.0:
 | 
			
		||||
  version "1.22.1"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
 | 
			
		||||
  integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
 | 
			
		||||
| 
						 | 
				
			
			@ -1767,6 +1889,13 @@ rimraf@^3.0.2:
 | 
			
		|||
  dependencies:
 | 
			
		||||
    glob "^7.1.3"
 | 
			
		||||
 | 
			
		||||
rollup@^2.79.0:
 | 
			
		||||
  version "2.79.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.79.0.tgz#9177992c9f09eb58c5e56cbfa641607a12b57ce2"
 | 
			
		||||
  integrity sha512-x4KsrCgwQ7ZJPcFA/SUu6QVcYlO7uRLfLAy0DSA4NS2eG8japdbpM50ToH7z4iObodRYOJ0soneF0iaQRJ6zhA==
 | 
			
		||||
  optionalDependencies:
 | 
			
		||||
    fsevents "~2.3.2"
 | 
			
		||||
 | 
			
		||||
run-parallel@^1.1.9:
 | 
			
		||||
  version "1.2.0"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
 | 
			
		||||
| 
						 | 
				
			
			@ -1829,6 +1958,11 @@ slash@^3.0.0:
 | 
			
		|||
  resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
 | 
			
		||||
  integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
 | 
			
		||||
 | 
			
		||||
sourcemap-codec@^1.4.8:
 | 
			
		||||
  version "1.4.8"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
 | 
			
		||||
  integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
 | 
			
		||||
 | 
			
		||||
stack-trace@0.0.x:
 | 
			
		||||
  version "0.0.10"
 | 
			
		||||
  resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue