├── .github └── workflows │ └── codeql.yml ├── .gitignore ├── LICENSE ├── README.md ├── eresbos.js ├── package.json ├── src ├── commands │ ├── eval.js │ ├── lidertablosu.js │ ├── puan.js │ ├── puansistem.js │ ├── rank.js │ ├── reload.js │ ├── senkron.js │ ├── stat.js │ ├── topstat.js │ ├── yardım.js │ └── ystat.js ├── configs │ ├── config.json │ ├── config.json.example │ └── settings.json ├── emojis │ ├── empty.png │ ├── emptyEnd.png │ ├── emptyStart.png │ ├── fill.gif │ ├── fillEnd.gif │ └── fillStart.gif ├── events │ ├── deleteStats.js │ ├── leaderBoard.js │ ├── messageCreate.js │ ├── messageStats.js │ ├── ready.js │ └── voiceStats.js ├── handlers │ ├── commandHandler.js │ ├── eventHandler.js │ ├── functionHandler.js │ └── mongoHandler.js ├── images │ ├── 1.png │ ├── 10.png │ ├── 2.png │ ├── 3.png │ ├── 4.png │ ├── 5.png │ ├── 6.png │ ├── 7.png │ ├── 8.png │ └── 9.png └── schemas │ ├── messageGuild.js │ ├── messageGuildChannel.js │ ├── messageUser.js │ ├── messageUserChannel.js │ ├── points.js │ ├── ranks.js │ ├── voiceGuild.js │ ├── voiceGuildChannel.js │ ├── voiceJoinedAt.js │ ├── voiceUser.js │ ├── voiceUserChannel.js │ └── voiceUserParent.js ├── start.bat └── yarn.lock /.github/workflows/codeql.yml: -------------------------------------------------------------------------------- 1 | # For most projects, this workflow file will not need changing; you simply need 2 | # to commit it to your repository. 3 | # 4 | # You may wish to alter this file to override the set of languages analyzed, 5 | # or to provide custom queries or build logic. 6 | # 7 | # ******** NOTE ******** 8 | # We have attempted to detect the languages in your repository. Please check 9 | # the `language` matrix defined below to confirm you have the correct set of 10 | # supported CodeQL languages. 11 | # 12 | name: "CodeQL" 13 | 14 | on: 15 | push: 16 | branches: [ "main" ] 17 | pull_request: 18 | # The branches below must be a subset of the branches above 19 | branches: [ "main" ] 20 | schedule: 21 | - cron: '28 20 * * 4' 22 | 23 | jobs: 24 | analyze: 25 | name: Analyze 26 | runs-on: ubuntu-latest 27 | permissions: 28 | actions: read 29 | contents: read 30 | security-events: write 31 | 32 | strategy: 33 | fail-fast: false 34 | matrix: 35 | language: [ 'javascript' ] 36 | # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] 37 | # Use only 'java' to analyze code written in Java, Kotlin or both 38 | # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both 39 | # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support 40 | 41 | steps: 42 | - name: Checkout repository 43 | uses: actions/checkout@v3 44 | 45 | # Initializes the CodeQL tools for scanning. 46 | - name: Initialize CodeQL 47 | uses: github/codeql-action/init@v2 48 | with: 49 | languages: ${{ matrix.language }} 50 | # If you wish to specify custom queries, you can do so here or in a config file. 51 | # By default, queries listed here will override any specified in a config file. 52 | # Prefix the list here with "+" to use these queries and those in the config file. 53 | 54 | # Details on CodeQL's query packs refer to : https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs 55 | # queries: security-extended,security-and-quality 56 | 57 | 58 | # Autobuild attempts to build any compiled languages (C/C++, C#, Go, or Java). 59 | # If this step fails, then you should remove it and run the build manually (see below) 60 | - name: Autobuild 61 | uses: github/codeql-action/autobuild@v2 62 | 63 | # ℹ️ Command-line programs to run using the OS shell. 64 | # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun 65 | 66 | # If the Autobuild fails above, remove it and uncomment the following three lines. 67 | # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. 68 | 69 | # - run: | 70 | # echo "Run, Build Application using script" 71 | # ./location_of_script_within_repo/buildscript.sh 72 | 73 | - name: Perform CodeQL Analysis 74 | uses: github/codeql-action/analyze@v2 75 | with: 76 | category: "/language:${{matrix.language}}" 77 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Eresbos 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 | # Discord Advanced Stat Bot 2 | 3 | - [Advanced Stat bot](#discord-advanced-stat-bot) 4 | - [Kurulum](#kurulum) 5 | - [Özellikler](#özellikler) 6 | - [Görseller](#görseller) 7 | - [İletişim](#i̇letişim) 8 | 9 | # Kurulum 10 | * İlk olarak bilgisayarına [Node JS](https://nodejs.org/tr/) indir. 11 | * Daha sonra bir [MongoDB](http://mongodb.com) hesabı oluştur ve connection linki al. 12 | * Bu projeyi zip halinde indir. 13 | * Herhangi bir klasöre zipi çıkart. 14 | * Daha sonra src klasörünün içindeki configs klasörünün içine gir `settings.json` ve `config.json` dosyalarının içindeki bilgileri doldur. 15 | * Sonra klasörün içerisinde bir `powershell` ya da `cmd` penceresi aç. 16 | * ```npm install``` yazarak tüm modülleri kur. 17 | * Kurulum bittikten sonra ```npm start``` yaz ve botu başlat. 18 | 19 | # Not 20 | * `"./src/emojis"` klasörü altında kullanılan ve lazım olacak emojiler verilmiştir. Sunucunuza yükleyip `"./src/configs/config.json.example"` dosyasındaki örneklere göre kullanabilirsiniz. 21 | 22 | # Özellikler 23 | - [x] **İstatistik Sistemi** 24 | - [x] **Rozet Sistemi** 25 | - [x] **Lider Tablosu Sistemi** 26 | - [x] **Puanla Rütbe Atlama Sistemi** 27 | - [x] **Gelişmiş Menü Sistemi** 28 | - [ ] **Görev Sistemi** 29 | 30 | # Görseller: 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | # İletişim 43 | * [Web Sitem](https://eresbos.dev) 44 | * [Discord Sunucum](https://discord.gg/ZS2TKFFadZ) 45 | * [Discord Profilim](https://discord.com/users/350976460313329665) 46 | * Herhangi bir hata bulmanız durumunda ya da yardım isteyeceğiniz zaman buralardan bana ulaşabilirsiniz. 47 | 48 | ### NOT: Botta MIT lisansı bulunmaktadır. Bu botun dosyalarının benden habersiz paylaşılması/satılması durumunda gerekli işlemler yapılacaktır! 49 | -------------------------------------------------------------------------------- /eresbos.js: -------------------------------------------------------------------------------- 1 | const { Client, Collection, GatewayIntentBits, Partials } = require("discord.js"); 2 | const settings = require("./src/configs/settings.json"); 3 | const client = (global.client = new Client({ 4 | intents: Object.keys(GatewayIntentBits), 5 | partials: Object.keys(Partials), 6 | })); 7 | 8 | client.commands = new Collection(); 9 | client.aliases = new Collection(); 10 | client.cooldown = new Map(); 11 | 12 | require("./src/handlers/commandHandler"); 13 | require("./src/handlers/eventHandler"); 14 | require("./src/handlers/mongoHandler"); 15 | require("./src/handlers/functionHandler")(client); 16 | 17 | client 18 | .login(settings.token) 19 | .then(() => console.log("[BOT] Bot bağlantısı başarıyla kuruldu!")) 20 | .catch(() => console.error("[BOT] Bot bağlantısı kurulurken bir hata oluştu!")); 21 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "advanced-stat-bot", 3 | "version": "2.0", 4 | "description": "", 5 | "main": "eresbos.js", 6 | "scripts": { 7 | "start": "node eresbos.js" 8 | }, 9 | "author": "Eresbos", 10 | "license": "MIT", 11 | "repository": { 12 | "url": "https://github.com/ERESB0S/advanced-stat-bot" 13 | }, 14 | "bugs": { 15 | "url": "https://discord.gg/eresbos" 16 | }, 17 | "devDependencies": { 18 | "eslint": "^7.17.0", 19 | "prettier": "^2.3.0" 20 | }, 21 | "dependencies": { 22 | "@discordjs/voice": "^0.14.0", 23 | "discord.js": "^14.13.0", 24 | "moment": "^2.29.4", 25 | "moment-duration-format": "^2.3.2", 26 | "mongoose": "^6.8.1" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/commands/eval.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | conf: { 3 | aliases: [], 4 | name: "eval", 5 | category: "Owner", 6 | owner: true, 7 | enabled: true 8 | }, 9 | 10 | run: async (client, message, args, eresbosEmbed) => { 11 | if (!args[0]) return; 12 | const code = args.join(" "); 13 | 14 | try { 15 | var result = clean(await eval(code)); 16 | if (result.includes(client.token)) return message.reply({ content: ":D" }); 17 | message.reply({ embeds: [eresbosEmbed.setDescription(`:inbox_tray: **Input**\n\`\`\`\n${code}\n\`\`\`\n:outbox_tray: **Output**\n\`\`\`js\n${result}\n\`\`\`\n**Status**\nSuccess`).setColor(0x43B581) ] }); 18 | } catch (err) { 19 | message.reply({ embeds: [eresbosEmbed.setDescription(`:inbox_tray: **Input**\n\`\`\`\n${code}\n\`\`\`\n:outbox_tray: **Output**\n\`\`\`js\n${err}\n\`\`\`\n**Status**\nFailed`).setColor(0xF04747)] }); 20 | } 21 | } 22 | }; 23 | 24 | function clean(text) { 25 | if (typeof text !== "string") text = require("util").inspect(text, { depth: 0 }); 26 | text = text 27 | .replace(/`/g, "`" + String.fromCharCode(8203)) 28 | .replace(/@/g, "@" + String.fromCharCode(8203)); 29 | return text; 30 | }; 31 | -------------------------------------------------------------------------------- /src/commands/lidertablosu.js: -------------------------------------------------------------------------------- 1 | const { EmbedBuilder } = require("discord.js"); 2 | 3 | module.exports = { 4 | conf: { 5 | aliases: ["lt", "lb", "leaderboard"], 6 | name: "lidertablosu", 7 | category: "Owner", 8 | owner: true, 9 | enabled: true 10 | }, 11 | 12 | run: async (client, message, args, eresbosEmbed) => { 13 | const channel = message.mentions.channels.first() || message.guild.channels.cache.get(args[0]) || message.channel; 14 | if (channel) await channel.send({ embeds: [new EmbedBuilder().setDescription("Lider tablosu `mesaj` sıralama mesajıdır.")] }); 15 | if (channel) await channel.send({ embeds: [new EmbedBuilder().setDescription("Lider tablosu `ses` sıralama mesajıdır.")] }); 16 | } 17 | }; 18 | -------------------------------------------------------------------------------- /src/commands/puan.js: -------------------------------------------------------------------------------- 1 | const config = require("../configs/config.json"); 2 | const points = require("../schemas/points"); 3 | const ranks = require("../schemas/ranks"); 4 | 5 | module.exports = { 6 | conf: { 7 | aliases: ["point", "points"], 8 | name: "puan", 9 | help: "puan [ekle-çıkar-gönder] [@Eresbos/ID] [Miktar]", 10 | category: "Yetkili", 11 | enabled: true, 12 | }, 13 | 14 | /** 15 | * @param { import("discord.js").Client } client 16 | * @param { import("discord.js").Message } message 17 | * @param { Array } args 18 | * @param { import("discord.js").EmbedBuilder } eresbosEmbed 19 | * @returns 20 | */ 21 | run: async (client, message, args, eresbosEmbed) => { 22 | const ranksData = await ranks.findOne({ guildId: message.guild.id }); 23 | if (!ranksData.pointSystem) return message.reply({ embeds: [eresbosEmbed.setDescription("Puan sistemi aktif değil!")] }).then((e) => setTimeout(() => e.delete(), 5000) && message.react(config.emojis.red)); 24 | if (!args[0]) return message.reply({ content: "Hatalı komut kullanımı! Lütfen yapacağınız işlemi belirtin; `[ekle-çıkar-gönder]`" }).then((e) => setTimeout(() => e.delete(), 7000) && message.react(config.emojis.red)); 25 | const member = message.mentions.members.first() || message.guild.members.cache.get(args[1]); 26 | const rankLog = message.guild.channels.cache.get(config.rankLog); 27 | if (args[0] === "ekle" || args[0] === "add") { 28 | if (!message.member.permissions.has("Administrator") && !config.pointStaff.some((e) => message.member.roles.cache.has(e))) return; 29 | if (!member) return message.reply({ content: "Lütfen puan eklemek istediğiniz memberyı belirtin." }).then((e) => setTimeout(() => e.delete(), 7000) && message.react(config.emojis.red)); 30 | if (member.user.id === message.author.id) return message.reply({ content: "Üzgünüm dostum fakat kendine puan ekleyemezsin." }).then((e) => setTimeout(() => e.delete(), 7000) && message.react(config.emojis.red)); 31 | const puan = Number(args[2]); 32 | if (!puan) return message.reply({ content: "Eklenecek puan miktarını belirtmelisin." }).then((e) => setTimeout(() => e.delete(), 7000) && message.react(config.emojis.red)); 33 | if (puan < 1) return message.reply({ content: "Eklenecek puan miktarı 1'den küçük olamaz." }).then((e) => setTimeout(() => e.delete(), 7000) && message.react(config.emojis.red)); 34 | 35 | await points.findOneAndUpdate({ guildID: message.guild.id, userID: member.user.id }, { $inc: { points: puan } }, { upsert: true }); 36 | const pointData = await points.findOne({ guildID: message.guild.id, userID: member.user.id }); 37 | let addedRoles = ""; 38 | if (pointData && pointData.ranks.some((e) => pointData.points >= e.points && !member.hasRole(e.rank))) { 39 | const roles = pointData.ranks.filter((e) => pointData.points >= e.points && !member.hasRole(e.rank)); 40 | addedRoles = roles; 41 | member.roles.add(roles[roles.length - 1].rank); 42 | if (rankLog) rankLog.send({ embeds: [eresbosEmbed.setDescription(`${member.toString()} kullanıcısına ${message.member.toString()} tarafından \`${puan}\` puan eklendi ve ${roles.filter(e => roles.indexOf(e) === roles.length - 1).map(e => (Array.isArray(e.rank) ? e.rank.listRoles() : `<@&${e.rank}>`)).join("\n")} rolleri verildi!`)] }); 43 | } 44 | message.reply({ embeds: [eresbosEmbed.setDescription(`${member.toString()} kullanıcısına \`${puan}\` adet puan eklendi! \n\n${addedRoles.length > 0 ? `Verilen roller: \n${addedRoles.filter(e => addedRoles.indexOf(e) === addedRoles.length - 1).map(e => `<@&${e.rank}>`).join("\n")}` : ""}`)] }).then((e) => setTimeout(() => e.delete(), 10000) && message.react(config.emojis.onay)); 45 | } else if (args[0] === "çıkar" || args[0] === "sil" || args[0] === "remove") { 46 | if (!message.member.permissions.has("Administrator") && !config.pointStaff.some((e) => message.member.roles.cache.has(e))) return; 47 | if (!member) return message.reply({ content: "Lütfen puan silmek istediğiniz memberyı belirtin." }).then((e) => setTimeout(() => e.delete(), 7000) && message.react(config.emojis.red)); 48 | if (member.user.id === message.author.id) return message.reply({ content: "Üzgünüm dostum fakat kendine puan ekleyemezsin." }).then((e) => setTimeout(() => e.delete(), 7000) && message.react(config.emojis.red)); 49 | const puan = Number(args[2]); 50 | if (!puan) return message.reply({ content: "Çıkarmak istediğin puan miktarını belirtmelisin." }).then((e) => setTimeout(() => e.delete(), 7000) && message.react(config.emojis.red)); 51 | if (puan < 1) return message.reply({ content: "Çıkarmak istediğin puan miktarı 1'den küçük olamaz." }).then((e) => setTimeout(() => e.delete(), 7000) && message.react(config.emojis.red)); 52 | let pointData = await points.findOne({ guildID: message.guild.id, userID: member.user.id }); 53 | if (!pointData || pointData && puan > pointData.points) return message.reply({ content: "Çıkarmak istediğiniz sayı, kişinin mevcut puanından büyük olamaz!" }).then((e) => setTimeout(() => e.delete(), 7000) && message.react(config.emojis.red)); 54 | 55 | await points.findOneAndUpdate({ guildID: message.guild.id, userID: member.user.id }, { $inc: { points: -puan } }, { upsert: true }); 56 | pointData = await points.findOne({ guildID: message.guild.id, userID: member.user.id }); 57 | let removedRoles = ""; 58 | if (pointData && pointData.ranks.some(e => pointData.points < e.points && member.hasRole(e.rank))) { 59 | const roles = pointData.ranks.filter(e => pointData.points < e.points && member.hasRole(e.rank)); 60 | removedRoles = roles; 61 | roles.forEach(e => { 62 | member.roles.remove(e.rank); 63 | }); 64 | if (rankLog) rankLog.send({ embeds: [eresbosEmbed.setDescription(`${member.toString()} kullanıcısından ${message.member.toString()} tarafından \`${puan}\` adet puan çıkarıldı ve kişiden <@&${roles.rank}}> rolleri alındı!`)] }); 65 | } 66 | message.reply({ embeds: [eresbosEmbed.setDescription(`${member.toString()} kullanıcısından \`${puan}\` adet puan çıkarıldı! \n\n${removedRoles.length > 0 ? `Alınan roller: \n${removedRoles.rank.listRoles()}` : ""}`)] }).then((e) => setTimeout(() => e.delete(), 10000) && message.react(config.emojis.onay)); 67 | } else if (args[0] === "gönder" || args[0] === "ver" || args[0] === "yolla") { 68 | if (member.user.id === message.author.id) return message.reply({ content: "Üzgünüm dostum fakat kendi kendine puan gönderemezsin!" }); 69 | const puan = Number(args[2]); 70 | if (!puan) return message.reply({ content: "Vermek istediğin puan sayısını belirtmelisin!" }).then((e) => setTimeout(() => e.delete(), 7000) && message.react(config.emojis.red)); 71 | if (puan < 1) return message.reply({ content: "Verilecek sayı 1'dan küçük olamaz!" }).them((e) => setTimeout(() => e.delete(), 7000) && message.react(config.emojis.red)); 72 | let pointData = await points.findOne({ guildID: message.guild.id, userID: message.author.id }); 73 | if (!pointData || pointData && puan > pointData.points) return message.reply({ content: "Göndereceğin puan kendi puanından yüksek olamaz!" }).then((e) => setTimeout(() => e.delete(), 7000) && message.react(config.emojis.red)); 74 | 75 | await points.findOneAndUpdate({ guildID: message.guild.id, userID: member.user.id }, { $inc: { points: puan } }, { upsert: true }); 76 | await points.findOneAndUpdate({ guildID: message.guild.id, userID: message.author.id }, { $inc: { points: -puan } }, { upsert: true }); 77 | pointData = await points.findOne({ guildID: message.guild.id, userID: message.author.id }); 78 | if (pointData && pointData.ranks.some(e => pointData.points < e.points && message.member.hasRole(e.rank))) { 79 | const roles = pointData.ranks.filter(e => pointData.points < e.points && message.member.hasRole(e.rank)); 80 | roles.forEach(e => { 81 | message.member.roles.remove(e.rank); 82 | }); 83 | } 84 | const pointData2 = await points.findOne({ guildID: message.guild.id, userID: member.user.id }); 85 | if (pointData2 && pointData.ranks.some(e => pointData2.points >= e.points && !member.hasRole(e.rank))) { 86 | const roles = pointData.ranks.filter(e => pointData2.points >= e.points && !member.hasRole(e.rank)); 87 | member.roles.add(roles[roles.length - 1].rank); 88 | } 89 | 90 | message.reply({ embeds: [eresbosEmbed.setDescription(`${member.toString()} kişisine başarıyla \`${puan}\` puan gönderildi!`)] }).then((e) => setTimeout(() => e.delete(), 7000) && message.react(config.emojis.onay)); 91 | } 92 | } 93 | }; 94 | -------------------------------------------------------------------------------- /src/commands/puansistem.js: -------------------------------------------------------------------------------- 1 | const config = require("../configs/config.json"); 2 | const ranks = require("../schemas/ranks"); 3 | 4 | module.exports = { 5 | conf: { 6 | aliases: ["pointsystem"], 7 | name: "puansistem", 8 | help: "puansistem [aç-kapat]", 9 | category: "Yetkili", 10 | enabled: true, 11 | }, 12 | 13 | /** 14 | * @param { import("discord.js").Client } client 15 | * @param { import("discord.js").Message } message 16 | * @param { Array } args 17 | * @param { import("discord.js").EmbedBuilder } eresbosEmbed 18 | * @returns 19 | */ 20 | run: async (client, message, args, eresbosEmbed) => { 21 | if (!message.member.permissions.has("Administrator") && !config.pointStaff.some((role) => message.member.roles.cache.has(role))) return; 22 | if (!args[0]) return message.reply({ embeds: [eresbosEmbed.setDescription("Lütfen bir argüman belirtin! `aç` veya `kapat`.")] }).then((e) => setTimeout(() => e.delete(), 5000) && message.react(config.emojis.red)); 23 | const ranksData = await ranks.findOne({ guildId: message.guild.id }); 24 | if (["aç", "open"].includes(args[0])) { 25 | if (ranksData.pointSystem === true) return message.reply({ embeds: [eresbosEmbed.setDescription("Puan sistemi zaten açık!")] }).then((e) => setTimeout(() => e.delete(), 5000) && message.react(config.emojis.red)); 26 | message.reply({ embeds: [eresbosEmbed.setDescription("Puan sistemi başarıyla `aktif edildi!`")] }).then((e) => setTimeout(() => e.delete(), 15000) && message.react(config.emojis.onay)); 27 | ranksData.pointSystem = true; 28 | await ranksData.save(); 29 | } else if (["kapat", "close"].includes(args[0])) { 30 | if (ranksData.pointSystem === false) return message.reply({ embeds: [eresbosEmbed.setDescription("Puan sistemi zaten kapalı!")] }).then((e) => setTimeout(() => e.delete(), 5000) && message.react(config.emojis.red)); 31 | message.reply({ embeds: [eresbosEmbed.setDescription("Puan sistemi başarıyla `deaktif edildi!`")] }).then((e) => setTimeout(() => e.delete(), 15000) && message.react(config.emojis.onay)); 32 | ranksData.pointSystem = false; 33 | await ranksData.save(); 34 | } 35 | } 36 | }; 37 | -------------------------------------------------------------------------------- /src/commands/rank.js: -------------------------------------------------------------------------------- 1 | const config = require("../configs/config.json"); 2 | const ranks = require("../schemas/ranks"); 3 | 4 | module.exports = { 5 | conf: { 6 | aliases: ["yetki", "rütbe"], 7 | name: "rank", 8 | category: "Owner", 9 | enabled: true, 10 | }, 11 | 12 | /** 13 | * @param { import("discord.js").Client } client 14 | * @param { import("discord.js").Message } message 15 | * @param { Array } args 16 | * @param { import("discord.js").EmbedBuilder } eresbosEmbed 17 | */ 18 | run: async (client, message, args, eresbosEmbed, prefix) => { 19 | if (!message.member.permissions.has("Administrator")) return; 20 | const ranksData = await ranks.findOne({ guildId: message.guild.id }); 21 | if (!ranksData.pointSystem) return message.reply({ embeds: [eresbosEmbed.setDescription("Puan sistemi aktif değil!")] }).then((e) => setTimeout(() => e.delete(), 5000) && message.react(config.emojis.red)); 22 | if (!args[0]) return message.reply({ embeds: [eresbosEmbed.setDescription(`Lütfen bir argüman belirtin! \n\`${prefix}rank [ekle-çıkar-liste]\``)] }).then((e) => setTimeout(() => e.delete(), 5000) && message.react(config.emojis.red)); 23 | if (["ekle", "add"].includes(args[0])) { 24 | if (!args[1] || isNaN(args[1])) return message.reply({ embeds: [eresbosEmbed.setDescription(`Lütfen bir puan belirtin! \n\`${prefix}rank ekle [puan] [rol] - [yardımcı roller]\``)] }).then((e) => setTimeout(() => e.delete(), 5000) && message.react(config.emojis.red)); 25 | if (ranksData.ranks.some((e) => e.points == args[1])) return message.reply({ embeds: [eresbosEmbed.setDescription(`Bu puana sahip bir yetki zaten mevcut!`)] }).then((e) => setTimeout(() => e.delete(), 5000) && message.react(config.emojis.red)); 26 | const args2 = args.splice(2).join(" ").split(" - "); 27 | if (!args2) return message.reply({ embeds: [eresbosEmbed.setDescription(`Lütfen bir rol belirtin! \n\`${prefix}rank ekle [puan] [rol] - [yardımcı roller]\``)] }).then((e) => setTimeout(() => e.delete(), 5000) && message.react(config.emojis.red)); 28 | const role = args2[0].split(" ").map((e) => e.replace(/<@&/g, "").replace(/>/g, "")); 29 | let hammers; 30 | if (args2[1]) hammers = args2[1].split(" ").map((e) => e.replace(/<@&/g, "").replace(/>/g, "")); 31 | else null; 32 | message.reply({ embeds: [eresbosEmbed.setDescription(`\`${Number(args[1]).toLocaleString()}\` puana ulaşınca verilecek yetki ayarlandı. \n\n**❯ Verilecek Yetki:** \n<@&${role}> ${hammers ? `\n\n**❯ Hammer Rolleri:** \n${hammers.map((e) => `<@&${e}>`).join("\n")}` : ""}`)] }).then((e) => setTimeout(() => e.delete(), 20000) && message.react(config.emojis.onay)); 33 | await ranksData.ranks.push({ rank: String(role), hammers: hammers ? hammers : [], points: Number(args[1]) }); 34 | await ranksData.save(); 35 | } else if (["kaldır", "remove"].includes(args[0])) { 36 | if (!args[1] || isNaN(args[1])) return message.reply({ embeds: [eresbosEmbed.setDescription(`Lütfen bir puan belirtin! \n\`${prefix}rank kaldır [puan]\``)] }).then((e) => setTimeout(() => e.delete(), 5000) && message.react(config.emojis.red)); 37 | if (!ranksData.ranks.some((e) => e.points == args[1])) return message.reply({ embeds: [eresbosEmbed.setDescription(`Bu puana sahip bir yetki bulunamadı!`)] }).then((e) => setTimeout(() => e.delete(), 5000) && message.react(config.emojis.red)); 38 | message.reply({ embeds: [eresbosEmbed.setDescription(`\`${Number(args[1]).toLocaleString()}\` puana sahip olan yetki kaldırıldı.`)] }).then((e) => setTimeout(() => e.delete(), 20000) && message.react(config.emojis.onay)); 39 | await ranksData.ranks.splice(ranksData.ranks.findIndex((e) => e.points == args[1]), 1); 40 | await ranksData.save(); 41 | } else if (["liste", "list"].includes(args[0])) { 42 | if (!ranksData.ranks.length) return message.reply({ embeds: [eresbosEmbed.setDescription("Bu sunucuda hiçbir yetki ayarlanmamış!")] }).then((e) => setTimeout(() => e.delete(), 5000) && message.react(config.emojis.red)); 43 | message.reply({ embeds: [eresbosEmbed.setDescription(`${ranksData.ranks.length > 0 ? ranksData.ranks.sort((a, b) => a.points - b.points).map((e) => `\`❯\` <@&${e.rank}>${e.hammers.length > 0 ? ` (${e.hammers.map((h) => `<@&${h}>`).join(", ")})` : ""}: \`${Number(e.points).toLocaleString()} puan\``).join("\n") : ""}`)] }).then(message.react(config.emojis.onay)); 44 | } 45 | } 46 | }; 47 | -------------------------------------------------------------------------------- /src/commands/reload.js: -------------------------------------------------------------------------------- 1 | const config = require("../configs/config.json"); 2 | 3 | module.exports = { 4 | conf: { 5 | aliases: [], 6 | name: "reload", 7 | category: "Owner", 8 | owner: true, 9 | enabled: true 10 | }, 11 | 12 | /** 13 | * @param { import("discord.js").Client } client 14 | * @param { import("discord.js").Message } message 15 | * @param { Array } args 16 | * @returns 17 | */ 18 | run: async (client, message, args) => { 19 | if (!args[0]) { 20 | await message.reply({ content: "Bot yeniden başlatılıyor!" }).then(() => message.react(config.emojis.onay)); 21 | console.log("[BOT] Bot yeniden başlatıldı."); 22 | process.exit(0); 23 | } else { 24 | const command = args[0]; 25 | let category = client.commands.get(command); 26 | if (!category) return message.reply({ content: "Geçerli bir kod ismi belirtmelisin!" }).then((e) => message.react(config.emojis.red) && setTimeout(() => e.delete(), 10000)); 27 | category = category.conf.category.replace("Yetkili", "yetkili").replace("Genel", "genel"); 28 | try { 29 | const msg = await message.reply({ content: `\`${command}\` adlı komut yeniden başlatılıyor!` }); 30 | delete require.cache[require.resolve(`./${command}.js`)]; 31 | client.commands.delete(command); 32 | client.commands.set(command, require(`./${command}.js`)); 33 | console.log(`[COMMAND] ${command} adlı komut yeniden başlatıldı`); 34 | msg.edit({ content: `\`${command}\` adlı komut yeniden başlatıldı!` }).then((e) => message.react(config.emojis.onay) && setTimeout(() => e.delete(), 10000)); 35 | } catch (e) { 36 | console.log(e); 37 | return message.reply({ content: `\`${command}\` adlı komut yeniden başlatılamadı!` }).then((e) => setTimeout(() => e.delete(), 10000) && message.react(config.emojis.red)); 38 | } 39 | } 40 | } 41 | }; 42 | -------------------------------------------------------------------------------- /src/commands/senkron.js: -------------------------------------------------------------------------------- 1 | const config = require("../configs/config.json"); 2 | const points = require("../schemas/points"); 3 | const ranks = require("../schemas/ranks"); 4 | 5 | module.exports = { 6 | conf: { 7 | aliases: ["senkronize"], 8 | name: "senkron", 9 | help: "senkron [Kullanıcı/Rol] [@Eresbos/@Rol/ID]", 10 | category: "Yetkili", 11 | enabled: true, 12 | }, 13 | 14 | /** 15 | * @param { import("discord.js").Client } client 16 | * @param { import("discord.js").Message } message 17 | * @param { Array } args 18 | * @param { import("discord.js").EmbedBuilder } eresbosEmbed 19 | * @returns 20 | */ 21 | run: async (client, message, args, eresbosEmbed) => { 22 | const ranksData = await ranks.findOne({ guildId: message.guild.id }); 23 | if (!message.member.permissions.has("Administrator")) return; 24 | if (!ranksData.pointSystem) return message.reply({ embeds: [eresbosEmbed.setDescription("Puan sistemi aktif değil!")] }).then((e) => setTimeout(() => e.delete(), 5000) && message.react(config.emojis.red)); 25 | if (["member", "kişi", "user", "kullanıcı"].some((e) => args[0] === e)) { 26 | if (!args[1]) return message.reply({ embeds: [eresbosEmbed.setDescription("Üzgünüm dostum fakat geçerli bir kullanıcı belirtmelisin.")] }).then((e) => setTimeout(() => e.delete(), 10000) && message.react(config.emojis.red)); 27 | const member = message.mentions.members.first() || message.guild.members.cache.get(args[1]); 28 | if (!member) return message.reply({ embeds: [eresbosEmbed.setDescription("Üzgünüm dostum fakat belirttiğin kullanıcıyı bulamıyorum.")] }).then((e) => setTimeout(() => e.delete(), 10000) && message.react(config.emojis.red)); 29 | 30 | if (ranksData.ranks.some((e) => member.hasRole(e.rank))) { 31 | const ranks = ranksData.ranks.filter((e) => member.hasRole(e.rank)).last(); 32 | message.reply({ embeds: [eresbosEmbed.setDescription(`${member.toString()} kullanıcısında <@&${ranks.rank}>${ranks.hammers.length > 0 ? ` (${ranks.hammers.map((e) => `<@&${e}>`).join(", ")})` : ""} rolü bulundu ve puanı \`${Number(ranks.points).toLocaleString()}\` olarak değiştirildi.`)] }).then(() => message.react(config.emojis.onay)); 33 | await points.findOneAndUpdate({ guildID: message.guild.id, userID: member.user.id }, { $set: { points: ranks.points } }, { upsert: true }); 34 | } else return message.reply({ embeds: [eresbosEmbed.setDescription(`${member.toString()} kullanıcısında ayarlı yetkili rolü bulunamadı!`)] }).then((e) => setTimeout(() => e.delete(), 10000) && message.react(config.emojis.red)); 35 | } else if (["rol", "role"].some((e) => args[0] === e)) { 36 | if (!args[1]) return message.reply({ embeds: [eresbosEmbed.setDescription("Üzgünüm dostum fakat geçerli bir rol belirtmelisin.")] }).then((e) => setTimeout(() => e.delete(), 10000) && message.react(config.emojis.red)); 37 | const rol = message.mentions.roles.first() || message.guild.roles.cache.get(args[1]); 38 | if (!rol) return message.reply({ embeds: [eresbosEmbed.setDescription("Üzgünüm dostum fakat belirttiğin rolü bulamıyorum.")] }).then((e) => setTimeout(() => e.delete(), 10000) && message.react(config.emojis.red)); 39 | if (rol.members.length === 0) return message.reply({ embeds: [eresbosEmbed.setDescription("Belirttiğin rolde kullanıcı bulunmadığı için işlem iptal edildi.")] }).then((e) => setTimeout(() => e.delete(), 10000) && message.react(config.emojis.red)); 40 | 41 | rol.members.forEach(async (member) => { 42 | if (member.user.bot) return; 43 | if (ranksData.ranks.some((e) => member.hasRole(e.rank))) { 44 | const ranks = ranksData.ranks.filter((e) => member.hasRole(e.rank)).last(); 45 | message.channel.send({ embeds: [eresbosEmbed.setDescription(`${member.toString()} kullanıcısında <@&${ranks.rank}>${ranks.hammers.length > 0 ? ` (${ranks.hammers.map((e) => `<@&${e}>`).join(", ")})` : ""} rolü bulundu ve puanı \`${Number(ranks.points).toLocaleString()}\` olarak değiştirildi.`)] }).then(() => message.react(config.emojis.onay)); 46 | await points.findOneAndUpdate({ guildID: message.guild.id, userID: member.user.id }, { $set: { points: ranks.points } }, { upsert: true }); 47 | } else return message.channel.send({ embeds: [eresbosEmbed.setDescription(`${member.toString()} kullanıcısında ayarlı yetkili rolü bulunamadı!`)] }).then((e) => setTimeout(() => e.delete(), 10000) && message.react(config.emojis.red)); 48 | }); 49 | } else return message.reply({ embeds: [eresbosEmbed.setDescription("Üzgünüm dostum fakat bir argüman belirtmelisin! `Kullanıcı-Rol`")] }).then((e) => setTimeout(() => e.delete(), 10000) && message.react(config.emojis.red)); 50 | } 51 | }; 52 | -------------------------------------------------------------------------------- /src/commands/stat.js: -------------------------------------------------------------------------------- 1 | const { ActionRowBuilder, StringSelectMenuBuilder } = require("discord.js"); 2 | const config = require("../configs/config.json"); 3 | const messageUser = require("../schemas/messageUser"); 4 | const messageUserChannel = require("../schemas/messageUserChannel"); 5 | const voiceUser = require("../schemas/voiceUser"); 6 | const voiceUserChannel = require("../schemas/voiceUserChannel"); 7 | const voiceUserParent = require("../schemas/voiceUserParent"); 8 | 9 | module.exports = { 10 | conf: { 11 | aliases: ["me", "stats"], 12 | name: "stat", 13 | help: "stat <@Eresbos/ID>", 14 | category: "Genel", 15 | enabled: true 16 | }, 17 | 18 | /** 19 | * @param { import("discord.js").Client } client 20 | * @param { import("discord.js").Message } message 21 | * @param { Array } args 22 | * @param { import("discord.js").EmbedBuilder } eresbosEmbed 23 | * @returns 24 | */ 25 | run: async (client, message, args, eresbosEmbed) => { 26 | const kullanıcı = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.member; 27 | const messageData = await messageUser.findOne({ guildID: message.guild.id, userID: kullanıcı.id }); 28 | const voiceData = await voiceUser.findOne({ guildID: message.guild.id, userID: kullanıcı.id }); 29 | const mesajVeriler = await messageUserChannel.find({ guildID: message.guild.id, userID: kullanıcı.id }).sort({ channelData: -1 }); 30 | const sesVeriler = await voiceUserChannel.find({ guildID: message.guild.id, userID: kullanıcı.id }).sort({ channelData: -1 }); 31 | 32 | const row = new ActionRowBuilder().addComponents( 33 | new StringSelectMenuBuilder() 34 | .setCustomId("statmenu") 35 | .setPlaceholder("İstatistik Menüsü") 36 | .addOptions([ 37 | { label: "Kanal İstatistikleri", description: "Toplam kanal istatistiklerini görüntülemek için tıkla.", value: "topChannel", emoji: "1004168367114047629" }, 38 | { label: "Toplam İstatistik", description: "Toplam istatistikleri görüntülemek için tıkla.", value: "topStat", emoji: "1004168367114047629" }, 39 | { label: "1 Günlük İstatistik", description: "1 günlük istatistikleri görüntülemek için tıkla.", value: "dailyStat", emoji: "1004168367114047629" }, 40 | { label: "1 Haftalık İstatistik", description: "1 haftalık istatistikleri görüntülemek için tıkla.", value: "weeklyStat", emoji: "1004168367114047629" }, 41 | { label: "Menüyü Kapat", description: "Menüyü kapatmak için tıkla.", value: "statmenuclose", emoji: "969684766716739624" } 42 | ]), 43 | ); 44 | 45 | let messageTop; 46 | let voiceTop; 47 | const kanalSayısı = sesVeriler ? sesVeriler.length : 0; 48 | mesajVeriler.length > 0 ? messageTop = mesajVeriler.splice(0, 10).map((e, i) => `\`${i + 1}.\` ${message.guild.channels.cache.get(e.channelID) ? capitalizeIt(message.guild.channels.cache.get(e.channelID).name.replace("#", "").replace("-", " ")) : "Kanal Silinmiş"}: \`${Number(e.channelData).toLocaleString()} mesaj\``).join("\n") : messageTop = "`Veri Bulunamadı!`"; 49 | sesVeriler.length > 0 ? voiceTop = sesVeriler.splice(0, 10).map((e, i) => `\`${i + 1}.\` ${message.guild.channels.cache.get(e.channelID) ? message.guild.channels.cache.get(e.channelID).name : "Kanal Silinmiş"}: \`${client.getTime(e.channelData)}\``).join("\n") : voiceTop = "`Veri bulunamadı!`"; 50 | 51 | const category = async (parentsArray) => { 52 | const data = await voiceUserParent.find({ guildID: message.guild.id, userID: kullanıcı.id }); 53 | const voiceUserParentData = data.filter((e) => parentsArray.includes(e.parentID)); 54 | let voiceStat = 0; 55 | for (var i = 0; i <= voiceUserParentData.length; i++) { 56 | voiceStat += voiceUserParentData[i] ? voiceUserParentData[i].parentData : 0; 57 | } 58 | return voiceStat; 59 | }; 60 | const channel = async (channelsArray) => { 61 | const data = await voiceUserChannel.find({ guildID: message.guild.id, userID: kullanıcı.id }); 62 | const voiceUserChannelData = data.filter((e) => channelsArray.includes(e.channelID)); 63 | let voiceStat = 0; 64 | for (var i = 0; i <= voiceUserChannelData.length; i++) { 65 | voiceStat += voiceUserChannelData[i] ? voiceUserChannelData[i].channelData : 0; 66 | } 67 | return voiceStat; 68 | }; 69 | 70 | const filteredParents = message.guild.channels.cache.filter((e) => 71 | e.type === "category" && 72 | !config.publicParents.includes(e.id) && 73 | !config.registerParents.includes(e.id) && 74 | !config.crewParents.includes(e.id) && 75 | !config.streamParents.includes(e.id) && 76 | !config.problemParents.includes(e.id) && 77 | !config.gameParents.includes(e.id) && 78 | !config.secretParents.includes(e.id) && 79 | !config.aloneParents.includes(e.id) 80 | ); 81 | 82 | let parents = [ 83 | { name: "Public Odalar", data: await category(config.publicParents) }, 84 | { name: "Kayıt Odaları", data: await category(config.registerParents) }, 85 | { name: "Ekip Odaları", data: await category(config.crewParents) }, 86 | { name: "Yayın Odaları", data: await category(config.streamParents) }, 87 | { name: "Sorun Çözme Odaları", data: await category(config.problemParents) }, 88 | { name: "Eğlence Odaları", data: await category(config.gameParents) }, 89 | { name: "Secret Odalar", data: await category(config.secretParents) }, 90 | { name: "Alone Odalar", data: await category(config.aloneParents) }, 91 | { name: "Sleep Room", data: await channel(config.sleepRoom) }, 92 | { name: "Diğer", data: await category(filteredParents.map(e => e.id)) }, 93 | ]; 94 | parents = parents.filter((e) => e.data !== 0).sort((a, b) => b.data - a.data); 95 | 96 | eresbosEmbed.setThumbnail(kullanıcı.user.avatarURL({ dynamic: true })).setDescription(`${kullanıcı.user.toString()} kullanıcısının genel sunucu ses ve mesaj istatistikleri;`); 97 | const mesaj = await message.reply({ components: [row] }); 98 | message.react(config.emojis.onay); 99 | const filter = (e) => e.user.id === message.author.id; 100 | const collector = message.channel.createMessageComponentCollector({ filter, time: 60000 }); 101 | 102 | collector.on("collect", async (menu) => { 103 | if (menu.customId === "statmenu") { 104 | await menu.deferUpdate(); 105 | if (menu.values[0] === "topChannel") { 106 | if (mesaj) mesaj.edit({ embeds: [eresbosEmbed.setFields( 107 | { name: "❯ Kategori Bilgileri:", value: `\`•\` Toplam: \`${voiceData ? client.getTime(voiceData.topStat) : "`Veri bulunamadı!`"}\` \n${parents.length > 0 ? parents.map((e) => `\`•\` ${e.name}: \`${client.getTime(e.data)}\``).join("\n") : ""}` }, 108 | { name: `❯ Ses Sıralaması: (Toplam ${kanalSayısı} Kanal)`, value: voiceTop }, 109 | { name: `❯ Mesaj Sıralaması: (Toplam: ${messageData ? Number(messageData.topStat).toLocaleString() : 0} Mesaj)`, value: messageTop }, 110 | )] }); 111 | } else if (menu.values[0] === "topStat") { 112 | if (mesaj) mesaj.edit({ embeds: [eresbosEmbed.setFields( 113 | { name: "❯ Mesaj Bilgileri:", value: `\`•\` Toplam: \`${messageData ? Number(messageData.topStat).toLocaleString() : "`Veri bulunamadı!`"}\``, inline: true }, 114 | { name: "❯ Ses Bilgileri:", value: `\`•\` Toplam: \`${voiceData ? client.getTime(voiceData.topStat) : "`Veri bulunamadı!`"}\``, inline: true }, 115 | )] }); 116 | } else if (menu.values[0] === "dailyStat") { 117 | if (mesaj) mesaj.edit({ embeds: [eresbosEmbed.setFields( 118 | { name: "❯ Mesaj Bilgileri:", value: `\`•\` 1 Günlük: \`${messageData ? Number(messageData.dailyStat).toLocaleString() : "`Veri bulunamadı!`"}\``, inline: true }, 119 | { name: "❯ Ses Bilgileri:", value: `\`•\` 1 Günlük: \`${voiceData ? client.getTime(voiceData.dailyStat) : "`Veri bulunamadı!`"}\``, inline: true }, 120 | )] }); 121 | } else if (menu.values[0] === "weeklyStat") { 122 | if (mesaj) mesaj.edit({ embeds: [eresbosEmbed.setFields( 123 | { name: "❯ Mesaj Bilgileri:", value: `\`•\` 1 Haftalık: \`${messageData ? Number(messageData.weeklyStat).toLocaleString() : "`Veri bulunamadı!`"}\``, inline: true }, 124 | { name: "❯ Ses Bilgileri:", value: `\`•\` 1 Haftalık: \`${voiceData ? client.getTime(voiceData.weeklyStat) : "`Veri bulunamadı!`"}\``, inline: true }, 125 | )] }); 126 | } else if (menu.values[0] === "statmenuclose") { 127 | row.components[0].setDisabled(true); 128 | if (mesaj) mesaj.edit({ embeds: [], components: [row] }); 129 | collector.stop(); 130 | } 131 | } 132 | }); 133 | 134 | collector.on("end", async (_, reason) => { 135 | if (reason === "time") { 136 | row.components[0].setDisabled(true); 137 | if (mesaj) mesaj.edit({ embeds: [], components: [row] }); 138 | } 139 | }); 140 | } 141 | }; 142 | 143 | function capitalizeIt(str) { 144 | if (str && typeof (str) === "string") { 145 | str = str.split(" "); 146 | for (var i = 0, x = str.length; i < x; i++) { 147 | if (str[i]) { 148 | str[i] = str[i][0].toUpperCase() + str[i].substr(1); 149 | } 150 | } 151 | return str.join(" "); 152 | } return str; 153 | }; 154 | -------------------------------------------------------------------------------- /src/commands/topstat.js: -------------------------------------------------------------------------------- 1 | const { ActionRowBuilder, StringSelectMenuBuilder } = require("discord.js"); 2 | const config = require("../configs/config.json"); 3 | const moment = require("moment"); 4 | require("moment-duration-format"); 5 | const messageGuild = require("../schemas/messageGuild"); 6 | const messageGuildChannel = require("../schemas/messageGuildChannel"); 7 | const voiceGuild = require("../schemas/voiceGuild"); 8 | const voiceGuildChannel = require("../schemas/voiceGuildChannel"); 9 | const messageUser = require("../schemas/messageUser"); 10 | const voiceUser = require("../schemas/voiceUser"); 11 | const points = require("../schemas/points"); 12 | const ranks = require("../schemas/ranks"); 13 | 14 | module.exports = { 15 | conf: { 16 | aliases: ["topstats"], 17 | name: "topstat", 18 | help: "topstat <@Rol/ID>", 19 | category: "Genel", 20 | enabled: true 21 | }, 22 | 23 | /** 24 | * @param { import("discord.js").Client } client 25 | * @param { import("discord.js").Message } message 26 | * @param { Array } args 27 | * @param { import("discord.js").EmbedBuilder } eresbosEmbed 28 | * @returns 29 | */ 30 | run: async (client, message, args, eresbosEmbed, prefix) => { 31 | const messageChannelData = await messageGuildChannel.find({ guildID: message.guild.id }).sort({ channelData: -1 }); 32 | const voiceChannelData = await voiceGuildChannel.find({ guildID: message.guild.id }).sort({ channelData: -1 }); 33 | const messageUsersData = await messageUser.find({ guildID: message.guild.id }).sort({ topStat: -1 }); 34 | const voiceUsersData = await voiceUser.find({ guildID: message.guild.id }).sort({ topStat: -1 }); 35 | const messageGuildData = await messageGuild.findOne({ guildID: message.guild.id }); 36 | const voiceGuildData = await voiceGuild.findOne({ guildID: message.guild.id }); 37 | const pointData = await points.find({ guildID: message.guild.id }).sort({ points: -1 }); 38 | const ranksData = await ranks.find({ guildId: message.guild.id }); 39 | let pointSum = 0; 40 | 41 | const row = new ActionRowBuilder().addComponents( 42 | new StringSelectMenuBuilder() 43 | .setCustomId("topstatmenu") 44 | .setPlaceholder("Toplam İstatistik Menüsü") 45 | .addOptions( 46 | { label: "Toplam", description: "Toplam istatistikleri görmek için tıklayın.", value: "topstat", emoji: "1004168367114047629" }, 47 | { label: "Ses", description: "Ses istatistikleri görmek için tıklayın.", value: "voicestat", emoji: "1004168367114047629" }, 48 | { label: "Mesaj", description: "Mesaj istatistikleri görmek için tıklayın.", value: "messagestat", emoji: "1004168367114047629" }, 49 | { label: "Puan", description: "Puan istatistikleri görmek için tıklayın.", value: "pointstat", emoji: "1004168367114047629" }, 50 | { label: "Menüyü Kapat", description: "Menüyü kapatmak için tıkla.", value: "statmenuclose", emoji: "969684766716739624" } 51 | ) 52 | ); 53 | 54 | const role = message.mentions.roles.first() || message.guild.roles.cache.get(args[0]); 55 | if (args[0] && !role) return message.reply({ content: "Üzgünüm dostum fakat belirttiğin rolü bulamıyorum. Lütfen geçerli bir rol veya rol id'si belirt." }).then((e) => setTimeout(() => e.delete(), 10000) && message.react(config.emojis.red)); 56 | const mesaj = await message.reply({ components: [row] }); 57 | message.react(config.emojis.onay); 58 | const filter = (e) => e.user.id === message.author.id; 59 | const collector = message.channel.createMessageComponentCollector({ filter, time: 60000 }); 60 | 61 | collector.on("collect", async (menu) => { 62 | if (menu.customId === "topstatmenu") { 63 | await menu.deferUpdate(); 64 | if (menu.values[0] === "topstat") { 65 | if (role) { 66 | const voiceData = async (type) => { 67 | let data = await voiceUser.find({ guildID: message.guild.id }).sort({ topStat: -1 }); 68 | data = data.filter(e => message.guild.members.cache.has(e.userID) && message.guild.members.cache.get(e.userID).roles.cache.has(role.id)); 69 | return data.length > 0 ? data.splice(0, 20).map((e, i) => `\`${i + 1}.\` <@${e.userID}> : \`${client.getTime(e[type])}\``).join("\n") : "`Veri bulunmuyor.`"; 70 | }; 71 | const messageData = async (type) => { 72 | let data = await messageUser.find({ guildID: message.guild.id }).sort({ topStat: -1 }); 73 | data = data.filter(e => message.guild.members.cache.has(e.userID) && message.guild.members.cache.get(e.userID).roles.cache.has(role.id)); 74 | return data.length > 0 ? data.splice(0, 20).map((e, i) => `\`${i + 1}.\` <@${e.userID}> : \`${Number(e[type]).toLocaleString()} mesaj\``).join("\n") : "`Veri bulunmuyor.`"; 75 | }; 76 | const pointData = async () => { 77 | let data = await points.find({ guildID: message.guild.id }).sort({ points: -1 }); 78 | data = data.filter(e => message.guild.members.cache.has(e.userID) && message.guild.members.cache.get(e.userID).roles.cache.has(role.id)); 79 | return data.length > 0 ? data.splice(0, 20).map((e, i) => `\`${i + 1}.\` <@${e.userID}>: \`${Number(e.points).toLocaleString()} puan\``).join("\n") : "`Veri bulunmuyor.`"; 80 | }; 81 | if (mesaj) mesaj.edit({ embeds: [eresbosEmbed.setDescription(`${role.toString()} rolüne sahip üyelerin **toplam** istatistik verileri; \n\n**❯ Ses Bilgileri:** \n${await voiceData("topStat")} \n\n**❯ Mesaj Bilgileri:** \n${await messageData("topStat")} \n\n${ranksData.pointSystem && ranksData.ranks.length >= 1 ? `**❯ Puan Bilgileri:** \n${await pointData()}` : ""}`)] }); 82 | } else { 83 | const messageChannels = messageChannelData.splice(0, 10).map((e, i) => `\`${i + 1}.\` ${message.guild.channels.cache.get(e.channelID) ? `<#${e.channelID}>` : "Kanal Silinmiş"}: \`${Number(e.channelData).toLocaleString()} mesaj\``).join("\n"); 84 | const voiceChannels = voiceChannelData.splice(0, 10).map((e, i) => `\`${i + 1}.\` ${message.guild.channels.cache.get(e.channelID) ? `<#${e.channelID}>` : "Kanal Silinmiş"}: \`${client.getTime(e.channelData)}\``).join("\n"); 85 | const messageUsers = messageUsersData.splice(0, 10).map((e, i) => `\`${i + 1}.\` <@${e.userID}>: \`${Number(e.topStat).toLocaleString()} mesaj\``).join("\n"); 86 | const voiceUsers = voiceUsersData.splice(0, 10).map((e, i) => `\`${i + 1}.\` <@${e.userID}>: \`${client.getTime(e.topStat)}\``).join("\n"); 87 | const pointUsers = pointData.splice(0, 10).map((e, i) => { 88 | pointSum += e.points; 89 | return `\`${i + 1}.\` <@${e.userID}>: \`${Number(e.points).toLocaleString()} puan\``; 90 | }).join("\n"); 91 | if (mesaj) mesaj.edit({ embeds: [eresbosEmbed.setDescription(`**${message.guild.name}** adlı sunucunun **toplam** istatistik verileri; \n\n**❯ Ses Bilgileri: (\`Toplam ${moment.duration(voiceGuildData ? voiceGuildData.topStat : 0).format("M [ay], d [gün], H [saat] m [dk], s [sn].")}\`)** \n${voiceUsers.length > 0 ? voiceUsers : "`Veri Bulunmuyor.`"} \n\n**❯ Ses Kanal Bilgileri:** \n${voiceChannels.length > 0 ? voiceChannels : "`Veri Bulunmuyor.`"} \n\n**❯ Mesaj Bilgileri: (\`Toplam ${Number(messageGuildData ? messageGuildData.topStat : 0).toLocaleString()} mesaj\`)** \n${messageUsers.length > 0 ? messageUsers : "`Veri Bulunmuyor.`"} \n\n**❯ Mesaj Kanal Bilgileri:** \n${messageChannels.length > 0 ? messageChannels : "`Veri Bulunmuyor.`"} \n\n${ranksData.pointSystem && ranksData.ranks.length >= 1 ? `**❯ Puan Bilgileri: (\`Toplam ${pointSum.toLocaleString()}\`)** \n${pointUsers.length > 0 ? pointUsers : "`Veri Bulunmuyor.`"}` : ""}`)] }); 92 | } 93 | } else if (menu.values[0] === "voicestat") { 94 | if (role) { 95 | const voiceData = async (type) => { 96 | let data = await voiceUser.find({ guildID: message.guild.id }).sort({ topStat: -1 }); 97 | data = data.filter((e) => e[type] !== 0 && message.guild.members.cache.has(e.userID) && message.guild.members.cache.get(e.userID).roles.cache.has(role.id)); 98 | return data.length > 0 ? data.splice(0, 20).map((e, i) => `\`${i + 1}.\` <@${e.userID}> : \`${client.getTime(e[type])}\``).join("\n") : "`Veri bulunmuyor.`"; 99 | }; 100 | if (mesaj) mesaj.edit({ embeds: [eresbosEmbed.setDescription(`${role.toString()} rolüne sahip üyelerin **toplam ses** istatistik verileri; \n\n**❯ Toplam Ses Bilgileri:** \n${await voiceData("topStat")} \n\n**❯ Haftalık Ses Bilgileri:** \n${await voiceData("weeklyStat")} \n\n**❯ Günlük Ses Bilgileri:** \n${await voiceData("dailyStat")}`)] }); 101 | } else { 102 | const voiceChannels = voiceChannelData.splice(0, 20).map((e, i) => `\`${i + 1}.\` ${message.guild.channels.cache.get(e.channelID) ? `<#${e.channelID}>` : "Kanal Silinmiş"}: \`${client.getTime(e.channelData)}\``).join("\n"); 103 | const voiceUsers = voiceUsersData.splice(0, 20).map((e, i) => `\`${i + 1}.\` <@${e.userID}>: \`${client.getTime(e.topStat)}\``).join("\n"); 104 | if (mesaj) mesaj.edit({ embeds: [eresbosEmbed.setDescription(`**${message.guild.name}** adlı sunucunun **toplam ses** istatistik verileri; \n\n**❯ Ses Bilgileri: (\`Toplam ${moment.duration(voiceGuildData ? voiceGuildData.topStat : 0).format("M [ay], d [gün], H [saat] m [dk], s [sn].")}\`)** \n${voiceUsers.length > 0 ? voiceUsers : "`Veri Bulunmuyor.`"} \n\n **❯ Ses Kanal Bilgileri:** \n${voiceChannels.length > 0 ? voiceChannels : "`Veri Bulunmuyor.`"}`)] }); 105 | } 106 | } else if (menu.values[0] === "messagestat") { 107 | if (role) { 108 | const messageData = async (type) => { 109 | let data = await messageUser.find({ guildID: message.guild.id }).sort({ topStat: -1 }); 110 | data = data.filter(e => message.guild.members.cache.has(e.userID) && message.guild.members.cache.get(e.userID).roles.cache.has(role.id)); 111 | return data.length > 0 ? data.splice(0, 20).map((e, i) => `\`${i + 1}.\` <@${e.userID}> : \`${Number(e[type]).toLocaleString()} mesaj\``).join("\n") : "`Veri bulunmuyor.`"; 112 | }; 113 | if (mesaj) mesaj.edit({ embeds: [eresbosEmbed.setDescription(`${role.toString()} rolüne sahip üyelerin **toplam mesaj** istatistik verileri; \n\n**❯ Toplam Mesaj Bilgileri:** \n${await messageData("topStat")} \n\n**❯ Haftalık Mesaj Bilgileri:** \n${await messageData("weeklyStat")} \n\n**❯ Günlük Mesaj Bilgileri:** \n${await messageData("dailyStat")}`)] }); 114 | } else { 115 | const messageChannels = messageChannelData.splice(0, 20).map((e, i) => `\`${i + 1}.\` ${message.guild.channels.cache.get(e.channelID) ? `<#${e.channelID}>` : "Kanal Silinmiş"}: \`${Number(e.channelData).toLocaleString()} mesaj\``).join("\n"); 116 | const messageUsers = messageUsersData.splice(0, 20).map((e, i) => `\`${i + 1}.\` <@${e.userID}>: \`${Number(e.topStat).toLocaleString()} mesaj\``).join("\n"); 117 | if (mesaj) mesaj.edit({ embeds: [eresbosEmbed.setDescription(`**${message.guild.name}** adlı sunucunun **toplam mesaj** istatistik verileri; \n\n**❯ Mesaj Bilgileri: (\`Toplam ${Number(messageGuildData ? messageGuildData.topStat : 0).toLocaleString()} mesaj\`)** \n${messageUsers.length > 0 ? messageUsers : "`Veri Bulunmuyor.`"} \n\n**❯ Mesaj Kanal Bilgileri:** \n${messageChannels.length > 0 ? messageChannels : "`Veri Bulunmuyor.`"}`)] }); 118 | } 119 | } else if (menu.values[0] === "pointstat") { 120 | if (!ranksData.pointSystem || ranksData.ranks.length === 0) { 121 | if (mesaj) mesaj.edit({ embeds: [eresbosEmbed.setDescription("Üzgünüm fakat puan sistemi devre dışı olduğu için veya rütbe sistemi ayarlı olmadığı için bu bilgiye ulaşamıyorum.")] }); 122 | return; 123 | } 124 | if (role) { 125 | const pointData = async () => { 126 | let data = await points.find({ guildID: message.guild.id }).sort({ points: -1 }); 127 | data = data.filter(e => message.guild.members.cache.has(e.userID) && message.guild.members.cache.get(e.userID).roles.cache.has(role.id)); 128 | return data.length > 0 ? data.splice(0, 20).map((e, i) => `\`${i + 1}.\` <@${e.userID}>: \`${Number(e.points).toLocaleString()} puan\``).join("\n") : "`Veri bulunmuyor.`"; 129 | }; 130 | if (mesaj) mesaj.edit({ embeds: [eresbosEmbed.setDescription(`${role.toString()} rolüne sahip üyelerin **toplam puan** istatistik verileri; \n\n**❯ Toplam Puan Bilgileri:** \n${await pointData()}`)] }); 131 | } else { 132 | const pointUsers = pointData.splice(0, 20).map((e, i) => { 133 | pointSum += e.points; 134 | return `\`${i + 1}.\` <@${e.userID}>: \`${Number(e.points).toLocaleString()} puan\``; 135 | }).join("\n"); 136 | if (mesaj) mesaj.edit({ embeds: [eresbosEmbed.setDescription(`**${message.guild.name}** adlı sunucunun **toplam puan** istatistik verileri; \n\n**❯ Puan Bilgileri: (\`Toplam ${pointSum.toLocaleString()}\`)** \n${pointUsers.length > 0 ? pointUsers : "`Veri Bulunmuyor.`"}`)] }); 137 | } 138 | } else if (menu.values[0] === "statmenuclose") { 139 | row.components[0].setDisabled(true); 140 | if (mesaj) mesaj.edit({ embeds: [], components: [row] }); 141 | collector.stop(); 142 | } 143 | } 144 | }); 145 | 146 | collector.on("end", async (_, reason) => { 147 | if (reason === "time") { 148 | row.components[0].setDisabled(true); 149 | if (mesaj) mesaj.edit({ embeds: [], components: [row] }); 150 | } 151 | }); 152 | } 153 | }; 154 | -------------------------------------------------------------------------------- /src/commands/yardım.js: -------------------------------------------------------------------------------- 1 | const config = require("../configs/config.json"); 2 | 3 | module.exports = { 4 | conf: { 5 | aliases: ["help", "y", "h"], 6 | name: "yardım", 7 | enabled: true 8 | }, 9 | 10 | /** 11 | * @param { import("discord.js").Client } client 12 | * @param { import("discord.js").Message } message 13 | * @param { Array } args 14 | * @param { import("discord.js").EmbedBuilder } eresbosEmbed 15 | * @param { String } prefix 16 | * @returns 17 | */ 18 | run: async (client, message, args, eresbosEmbed, prefix) => { 19 | if (!message.member.permissions.has("Administrator") && !config.staffRoles.some((e) => message.member.roles.cache.has(e))) return; 20 | const yetkili = client.commands.filter((e) => e.conf.help && e.conf.category === "Yetkili").sort((a, b) => b.conf.help - a.conf.help).map((e) => `\`${prefix}${e.conf.help}\``).join("\n"); 21 | const genel = client.commands.filter((e) => e.conf.help && e.conf.category === "Genel").sort((a, b) => b.conf.help - a.conf.help).map((e) => `\`${prefix}${e.conf.help}\``).join("\n"); 22 | 23 | message.reply({ embeds: [eresbosEmbed.setDescription(` 24 | **Yetkili komutları;** 25 | ${yetkili} 26 | 27 | **Genel komutlar;** 28 | ${genel} 29 | `).setFooter({ text: "[ ] zorunlu | < > isteğe bağlı", iconURL: message.guild.iconURL({ forceStatic: true }) })] }).then(() => message.react(config.emojis.onay)); 30 | } 31 | }; 32 | -------------------------------------------------------------------------------- /src/commands/ystat.js: -------------------------------------------------------------------------------- 1 | const config = require("../configs/config.json"); 2 | const ms = require("ms"); 3 | const voiceUserParent = require("../schemas/voiceUserParent"); 4 | const messageUser = require("../schemas/messageUser"); 5 | const points = require("../schemas/points"); 6 | const ranks = require("../schemas/ranks"); 7 | 8 | module.exports = { 9 | conf: { 10 | aliases: ["yme", "ystats"], 11 | name: "ystat", 12 | help: "ystat <@Eresbos/ID>", 13 | category: "Yetkili", 14 | enabled: true 15 | }, 16 | 17 | /** 18 | * @param { import("discord.js").Client } client 19 | * @param { import("discord.js").Message } message 20 | * @param { Array } args 21 | * @param { import("discord.js").EmbedBuilder } eresbosEmbed 22 | * @returns 23 | */ 24 | run: async (client, message, args, eresbosEmbed) => { 25 | if (!message.member.permissions.has("Administrator") && !config.staffRoles.some((e) => message.member.roles.cache.has(e))) return; 26 | const kullanıcı = message.mentions.members.first() || message.guild.members.cache.get(args[0]) || message.member; 27 | if (!kullanıcı.permissions.has("Administrator") && !config.staffRoles.some((e) => kullanıcı.roles.cache.has(e))) return message.reply("Belirttiğin kullanıcı yetkili değil.").then((e) => setTimeout(() => e.delete(), 10000) && message.react(config.emojis.red)); 28 | 29 | const pointData = await points.findOne({ guildID: message.guild.id, userID: kullanıcı.id }); 30 | const ranksData = await ranks.findOne({ guildId: message.guild.id }); 31 | const pubVeriler = await voiceUserParent.findOne({ guildID: message.guild.id, userID: kullanıcı.id, parentID: config.publicParents }); 32 | const messageData = await messageUser.findOne({ guildID: message.guild.id, userID: kullanıcı.id }); 33 | 34 | if (parseInt(pubVeriler ? pubVeriler.parentData : 0) < ms(config.targetAmount.vbronze)) { 35 | if ([config.badges.vbronze, config.badges.vsilver, config.badges.vgold, config.badges.vdia, config.badges.vemerl].some((e) => kullanıcı.roles.cache.get(e))) kullanıcı.roles.remove([config.badges.vbronze, config.badges.vsilver, config.badges.vgold, config.badges.vdia, config.badges.vemerl]).catch(() => { }); 36 | eresbosEmbed.addFields({ name: "❯ Ses Rozet Durumu:", value: `Üzgünüm dostum fakat bir rozete sahip değilsin. ${message.guild.roles.cache.get(config.badges.vbronze)} rozetini almak için public kanallarda \`${client.getTime(ms(config.targetAmount.vbronze) - (pubVeriler ? pubVeriler.parentData : 0))}\` geçirmen gerekiyor.` }); 37 | } 38 | if (parseInt(pubVeriler ? pubVeriler.parentData : 0) > ms(config.targetAmount.vbronze) && parseInt(pubVeriler ? pubVeriler.parentData : 0) < ms(config.targetAmount.vsilver)) { 39 | if (!kullanıcı.roles.cache.has(config.badges.vbronze)) { 40 | await kullanıcı.roles.add(config.badges.vbronze); 41 | kullanıcı.roles.remove([config.badges.vsilver, config.badges.vgold, config.badges.vdia, config.badges.vemerl]); 42 | eresbosEmbed.addFields({ name: "❯ Yeni Ses Rozeti!", value: `Tebrikler dostum! :tada: Public kanallarda \`${client.getTime(ms(config.targetAmount.vbronze))}\` geçirerek **${message.guild.roles.cache.get(config.badges.vbronze)}** rozetini kazandın! Bir sonraki **${message.guild.roles.cache.get(config.badges.vsilver)}** rozetini elde etmek için public kanallarda \`${client.getTime(ms(config.targetAmount.vsilver) - (pubVeriler ? pubVeriler.parentData : 0))}\` geçirmen gerekiyor.` }); 43 | } else { 44 | eresbosEmbed.addFields({ name: "❯ Ses Rozet Durumu:", value: `Tebrikler **${message.guild.roles.cache.get(config.badges.vbronze)}** rozetine sahipsin! Bir sonraki **${message.guild.roles.cache.get(config.badges.vsilver)}** rozeti elde etmek için public kanallarda \`${client.getTime(ms(config.targetAmount.vsilver) - (pubVeriler ? pubVeriler.parentData : 0))}\` geçirmen gerekiyor.` }); 45 | } 46 | } 47 | if (parseInt(pubVeriler ? pubVeriler.parentData : 0) > ms(config.targetAmount.vsilver) && parseInt(pubVeriler ? pubVeriler.parentData : 0) < ms(config.targetAmount.vgold)) { 48 | if (!kullanıcı.roles.cache.has(config.badges.vsilver)) { 49 | await kullanıcı.roles.add(config.badges.vsilver); 50 | kullanıcı.roles.remove([config.badges.vbronze, config.badges.vgold, config.badges.vdia, config.badges.vemerl]); 51 | eresbosEmbed.addFields({ name: "❯ Yeni Ses Rozeti!", value: `Tebrikler dostum! :tada: Public kanallarda \`${client.getTime(ms(config.targetAmount.vsilver))}\` geçirerek **${message.guild.roles.cache.get(config.badges.vsilver)}** rozetini kazandın! Bir sonraki **${message.guild.roles.cache.get(config.badges.vgold)}** rozetini elde etmek için public kanallarda \`${client.getTime(ms(config.targetAmount.vgold) - (pubVeriler ? pubVeriler.parentData : 0))}\` geçirmen gerekiyor.` }); 52 | } else { 53 | eresbosEmbed.addFields({ name: "❯ Ses Rozet Durumu:", value: `Tebrikler **${message.guild.roles.cache.get(config.badges.vsilver)}** rozetine sahipsin! Bir sonraki **${message.guild.roles.cache.get(config.badges.vgold)}** rozeti elde etmek için public kanallarda \`${client.getTime(ms(config.targetAmount.vgold) - (pubVeriler ? pubVeriler.parentData : 0))}\` geçirmen gerekiyor.` }); 54 | } 55 | } 56 | if (parseInt(pubVeriler ? pubVeriler.parentData : 0) > ms(config.targetAmount.vgold) && parseInt(pubVeriler ? pubVeriler.parentData : 0) < ms(config.targetAmount.vdia)) { 57 | if (!kullanıcı.roles.cache.has(config.badges.vgold)) { 58 | await kullanıcı.roles.add(config.badges.vgold); 59 | kullanıcı.roles.remove([config.badges.vbronze, config.badges.vsilver, config.badges.vdia, config.badges.vemerl]); 60 | eresbosEmbed.addFields({ name: "❯ Yeni Ses Rozeti!", value: `Tebrikler dostum! :tada: Public kanallarda \`${client.getTime(ms(config.targetAmount.vgold))}\` geçirerek **${message.guild.roles.cache.get(config.badges.vgold)}** rozetini kazandın! Bir sonraki **${message.guild.roles.cache.get(config.badges.vdia)}** rozetini elde etmek için public kanallarda \`${client.getTime(ms(config.targetAmount.vdia) - (pubVeriler ? pubVeriler.parentData : 0))}\` geçirmen gerekiyor.` }); 61 | } else { 62 | eresbosEmbed.addFields({ name: "❯ Ses Rozet Durumu:", value: `Tebrikler **${message.guild.roles.cache.get(config.badges.vgold)}** rozetine sahipsin! Bir sonraki **${message.guild.roles.cache.get(config.badges.vdia)}** rozeti elde etmek için public kanallarda \`${client.getTime(ms(config.targetAmount.vdia) - (pubVeriler ? pubVeriler.parentData : 0))}\` geçirmen gerekiyor.` }); 63 | } 64 | } 65 | if (parseInt(pubVeriler ? pubVeriler.parentData : 0) > ms(config.targetAmount.vdia) && parseInt(pubVeriler ? pubVeriler.parentData : 0) < ms(config.targetAmount.vemerl)) { 66 | if (!kullanıcı.roles.cache.has(config.badges.vdia)) { 67 | await kullanıcı.roles.add(config.badges.vdia); 68 | kullanıcı.roles.remove([config.badges.vbronze, config.badges.vsilver, config.badges.vgold, config.badges.vemerl]); 69 | eresbosEmbed.addFields({ name: "❯ Yeni Ses Rozeti!", value: `Tebrikler dostum! :tada: Public kanallarda \`${client.getTime(ms(config.targetAmount.vdia))}\` geçirerek **${message.guild.roles.cache.get(config.badges.vdia)}** rozetini kazandın! Bir sonraki **${message.guild.roles.cache.get(config.badges.vemerl)}** rozetini elde etmek için public kanallarda \`${client.getTime(ms(config.targetAmount.vemerl) - (pubVeriler ? pubVeriler.parentData : 0))}\` geçirmen gerekiyor.` }); 70 | } else { 71 | eresbosEmbed.addFields({ name: "❯ Ses Rozet Durumu:", value: `Tebrikler **${message.guild.roles.cache.get(config.badges.vdia)}** rozetine sahipsin! Bir sonraki **${message.guild.roles.cache.get(config.badges.vemerl)}** rozeti elde etmek için public kanallarda \`${client.getTime(ms(config.targetAmount.vemerl) - (pubVeriler ? pubVeriler.parentData : 0))}\` geçirmen gerekiyor.` }); 72 | } 73 | } 74 | if (parseInt(pubVeriler ? pubVeriler.parentData : 0) > ms(config.targetAmount.vemerl)) { 75 | if (!kullanıcı.roles.cache.has(config.badges.vemerl)) { 76 | await kullanıcı.roles.add(config.badges.vemerl); 77 | kullanıcı.roles.remove([config.badges.vbronze, config.badges.vsilver, config.badges.vgold, config.badges.vdia]); 78 | eresbosEmbed.addFields({ name: "❯ Yeni Ses Rozeti!", value: `Tebrikler dostum! :tada: Public kanallarda \`${client.getTime(ms(config.targetAmount.vemerl))}\` geçirerek **${message.guild.roles.cache.get(config.badges.vemerl)}** rozetini kazandın! Göstermiş olduğun emeklerden dolayı seni tebrik ediyorum! :heart:` }); 79 | } else { 80 | eresbosEmbed.addFields({ name: "❯ Ses Rozet Durumu:", value: `Tebrikler dostum **${message.guild.roles.cache.get(config.badges.vemerl)}** rozetine sahipsin! Sen efsane birisin, emeklerin için çok teşekkürler. :heart:` }); 81 | } 82 | } 83 | if (parseInt(messageData ? messageData.topStat : 0) < config.targetAmount.cbronze) { 84 | if ([config.badges.cbronze, config.badges.csilver, config.badges.cgold, config.badges.cdia, config.badges.cemerl].some((e) => kullanıcı.roles.cache.get(e))) kullanıcı.roles.remove([config.badges.cbronze, config.badges.csilver, config.badges.cgold, config.badges.cdia, config.badges.cemerl]).catch(() => { }); 85 | eresbosEmbed.addFields({ name: "❯ Mesaj Rozet Durumu:", value: `Üzgünüm dostum fakat bir rozete sahip değilsin. ${message.guild.roles.cache.get(config.badges.cbronze)} rozetini almak için sohbet kanallarına \`${config.targetAmount.cbronze - (messageData ? messageData.topStat : 0)}\` mesaj atman gerekiyor.` }); 86 | } 87 | if (parseInt(messageData ? messageData.topStat : 0) > config.targetAmount.cbronze && (messageData ? messageData.topStat : 0) < config.targetAmount.csilver) { 88 | if (!kullanıcı.roles.cache.has(config.badges.cbronze)) { 89 | await kullanıcı.roles.add(config.badges.cbronze, "Mesaj Hedef Ödülü | Bronze"); 90 | await kullanıcı.roles.remove([config.badges.csilver, config.badges.cgold, config.badges.cdia, config.badges.cemerl]).catch(() => { }); 91 | eresbosEmbed.addFields({ name: "❯ Yeni Mesaj Rozeti!", value: `Tebrikler dostum! :tada: Sohbet kanallarına \`${parseInt(config.targetAmount.cbronze).toLocaleString()} mesaj\` atarak **${message.guild.roles.cache.get(config.badges.cbronze)}** rozetini kazandın! Bir sonraki **${message.guild.roles.cache.get(config.badges.csilver)}** rozetini elde etmek için sohbet kanallarına \`${(config.targetAmount.csilver - (messageData ? messageData.topStat : 0)).toLocaleString()}\` mesaj atman gerekiyor.` }); 92 | } else { 93 | eresbosEmbed.addFields({ name: "❯ Mesaj Rozet Durumu:", value: `Tebrikler dostum **${message.guild.roles.cache.get(config.badges.cbronze)}** rozetine sahipsin! Bir sonraki **${message.guild.roles.cache.get(config.badges.csilver)}** rozetini elde etmek için sohbet kanallarına \`${(config.targetAmount.csilver - (messageData ? messageData.topStat : 0)).toLocaleString()}\` mesaj atman gerekiyor.` }); 94 | } 95 | } 96 | if (parseInt(messageData ? messageData.topStat : 0) > config.targetAmount.csilver && (messageData ? messageData.topStat : 0) < config.targetAmount.cgold) { 97 | if (!kullanıcı.roles.cache.has(config.badges.csilver)) { 98 | await kullanıcı.roles.add(config.badges.csilver, "Mesaj Hedef Ödülü | Silver"); 99 | await kullanıcı.roles.remove([config.badges.cbronze, config.badges.cgold, config.badges.cdia, config.badges.cemerl]).catch(() => { }); 100 | eresbosEmbed.addFields({ name: "❯ Yeni Mesaj Rozeti!", value: `Tebrikler dostum! :tada: Sohbet kanallarına \`${parseInt(config.targetAmount.csilver).toLocaleString()} mesaj\` atarak **${message.guild.roles.cache.get(config.badges.csilver)}** rozetini kazandın! Bir sonraki **${message.guild.roles.cache.get(config.badges.cgold)}** rozetini elde etmek için sohbet kanallarına \`${(config.targetAmount.cgold - (messageData ? messageData.topStat : 0)).toLocaleString()}\` mesaj atman gerekiyor.` }); 101 | } else { 102 | eresbosEmbed.addFields({ name: "❯ Mesaj Rozet Durumu:", value: `Tebrikler dostum **${message.guild.roles.cache.get(config.badges.csilver)}** rozetine sahipsin! Bir sonraki **${message.guild.roles.cache.get(config.badges.cgold)}** rozetini elde etmek için sohbet kanallarına \`${(config.targetAmount.cgold - (messageData ? messageData.topStat : 0)).toLocaleString()}\` mesaj atman gerekiyor.` }); 103 | } 104 | } 105 | if (parseInt(messageData ? messageData.topStat : 0) > config.targetAmount.cgold && (messageData ? messageData.topStat : 0) < config.targetAmount.cdia) { 106 | if (!kullanıcı.roles.cache.has(config.badges.cgold)) { 107 | await kullanıcı.roles.add(config.badges.cgold, "Mesaj Hedef Ödülü | Gold"); 108 | await kullanıcı.roles.remove([config.badges.cbronze, config.badges.csilver, config.badges.cdia, config.badges.cemerl]).catch(() => { }); 109 | eresbosEmbed.addFields({ name: "❯ Yeni Mesaj Rozeti!", value: `Tebrikler dostum! :tada: Sohbet kanallarına \`${parseInt(config.targetAmount.cgold).toLocaleString()} mesaj\` atarak **${message.guild.roles.cache.get(config.badges.cgold)}** rozetini kazandın! Bir sonraki **${message.guild.roles.cache.get(config.badges.cdia)}** rozetini elde etmek için sohbet kanallarına \`${(config.targetAmount.cdia - (messageData ? messageData.topStat : 0)).toLocaleString()}\` mesaj atman gerekiyor.` }); 110 | } else { 111 | eresbosEmbed.addFields({ name: "❯ Mesaj Rozet Durumu:", value: `Tebrikler dostum **${message.guild.roles.cache.get(config.badges.cgold)}** rozetine sahipsin! Bir sonraki **${message.guild.roles.cache.get(config.badges.cdia)}** rozetini elde etmek için sohbet kanallarına \`${(config.targetAmount.cdia - (messageData ? messageData.topStat : 0)).toLocaleString()}\` mesaj atman gerekiyor.` }); 112 | } 113 | } 114 | if (parseInt(messageData ? messageData.topStat : 0) > config.targetAmount.cdia && (messageData ? messageData.topStat : 0) < config.targetAmount.cemerl) { 115 | if (!kullanıcı.roles.cache.has(config.badges.cdia)) { 116 | await kullanıcı.roles.add(config.badges.cdia, "Mesaj Hedef Ödülü | Diamond"); 117 | await kullanıcı.roles.remove([config.badges.cbronze, config.badges.csilver, config.badges.cgold, config.badges.cemerl]).catch(() => { }); 118 | eresbosEmbed.addFields({ name: "❯ Yeni Mesaj Rozeti!", value: `Tebrikler dostum! :tada: Sohbet kanallarına \`${parseInt(config.targetAmount.cdia).toLocaleString()} mesaj\` atarak **${message.guild.roles.cache.get(config.badges.cdia)}** rozetini kazandın! Bir sonraki **${message.guild.roles.cache.get(config.badges.cemerl)}** rozetini elde etmek için sohbet kanallarına \`${(config.targetAmount.cemerl - (messageData ? messageData.topStat : 0)).toLocaleString()}\` mesaj atman gerekiyor.` }); 119 | } else { 120 | eresbosEmbed.addFields({ name: "❯ Mesaj Rozet Durumu:", value: `Tebrikler dostum **${message.guild.roles.cache.get(config.badges.cdia)}** rozetine sahipsin! Bir sonraki **${message.guild.roles.cache.get(config.badges.cemerl)}** rozetini elde etmek için sohbet kanallarına \`${(config.targetAmount.cemerl - (messageData ? messageData.topStat : 0)).toLocaleString()}\` mesaj atman gerekiyor.` }); 121 | } 122 | } 123 | if (parseInt(messageData ? messageData.topStat : 0) > config.targetAmount.cemerl) { 124 | if (!kullanıcı.roles.cache.has(config.badges.cemerl)) { 125 | await kullanıcı.roles.add(config.badges.cemerl, "Mesaj Hedef Ödülü | Emerland"); 126 | await kullanıcı.roles.remove([config.badges.cbronze, config.badges.csilver, config.badges.cgold, config.badges.cdia]).catch(() => { }); 127 | eresbosEmbed.addFields({ name: "❯ Yeni Mesaj Rozeti!", value: `Tebrikler dostum! :tada: Sohbet kanallarına \`${parseInt(config.targetAmount.cemerl).toLocaleString()} mesaj\` atarak **${message.guild.roles.cache.get(config.badges.cemerl)}** rozetini kazandın! Göstermiş olduğun emeklerden dolayı seni tebrik ediyorum! :heart:` }); 128 | } else { 129 | eresbosEmbed.addFields({ name: "❯ Mesaj Rozet Durumu:", value: `Tebrikler dostum **${message.guild.roles.cache.get(config.badges.cemerl)}** rozetine sahipsin! Sen efsane birisin, emeklerin için çok teşekkürler. :heart:` }); 130 | } 131 | } 132 | 133 | const maxValue = ranksData.ranks[ranksData.ranks.indexOf(ranksData.ranks.find((e) => e.points > (pointData ? pointData.points : 0)))] || ranksData.ranks.last(); 134 | const currentRank = ranksData.ranks.filter((e) => (pointData ? pointData.points : 0) >= e.points).last(); 135 | 136 | if (ranksData.pointSystem && kullanıcı.hasRole(config.staffRoles, false) && ranksData.ranks.length > 0) { 137 | eresbosEmbed.addFields( 138 | { name: `❯ Puan Durumu: (${pointData ? pointData.points.toLocaleString() : 0} Puan)`, value: `${parseInt((pointData ? pointData.points : 0) / maxValue.points * 100) <= 100 ? `\`%${parseInt((pointData ? pointData.points : 0) / maxValue.points * 100)}\`` : "`%100`"} ${client.progressBar(pointData ? pointData.points : 0, maxValue.points, 6)} \`${pointData ? pointData.points.toLocaleString() : 0} / ${(maxValue.points).toLocaleString()}\`` }, 139 | { name: "❯ Yetki Durumu:", value: currentRank !== ranksData.ranks.last() ? `${currentRank ? `Şu an <@&${currentRank.rank}> yetkisindesiniz.` : ""} <@&${maxValue.rank}> yetkisine ulaşmak için \`${(maxValue.points - (pointData ? pointData.points : 0)).toLocaleString()}\` puan kazanmanız gerekiyor. \n${maxValue.hammers.length > 0 ? `Bir sonraki yetkiye ulaşınca ${maxValue.hammers.map((e) => `<@&${e}>`).join(", ")} ${maxValue.hammers.length === 1 ? "rolünü" : "rollerini"} kazanacaksınız.` : ""}` : "Şu an son yetkidesiniz. Emekleriniz için teşekkür ederiz." }, 140 | ); 141 | } 142 | message.reply({ embeds: [eresbosEmbed.setDescription(`${kullanıcı.user.toString()} (${kullanıcı.roles.highest}) kullanıcısının yetkili istatistikleri;`).setThumbnail(kullanıcı.user.displayAvatarURL({ dynamic: true }))] }).then(() => message.react(config.emojis.onay)); 143 | } 144 | }; 145 | -------------------------------------------------------------------------------- /src/configs/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "botOwners": [], 3 | "prefix": [], 4 | "guildID": "", 5 | "voiceChannel": "", 6 | "activity": "Eresbos ❤️", 7 | "cmds_log": "", 8 | "sunucuAdi": "", 9 | "leaderBoard": "", 10 | "topMessage": "", 11 | "topVoice": "", 12 | "emojis": { 13 | "onay": "✅", 14 | "red": "❌", 15 | "fill": "", 16 | "empty": "", 17 | "emptyStart": "", 18 | "fillStart": "", 19 | "emptyEnd": "", 20 | "fillEnd": "" 21 | }, 22 | "badges": { 23 | "vbronze": "", 24 | "vsilver": "", 25 | "vgold": "", 26 | "vdia": "", 27 | "vemerl": "", 28 | "cbronze": "", 29 | "csilver": "", 30 | "cgold": "", 31 | "cdia": "", 32 | "cemerl": "", 33 | "prizeLog": "" 34 | }, 35 | "targetAmount": { 36 | "vbronze": "", 37 | "vsilver": "", 38 | "vgold": "", 39 | "vdia": "", 40 | "vemerl": "", 41 | "cbronze": "", 42 | "csilver": "", 43 | "cgold": "", 44 | "cdia": "", 45 | "cemerl": "" 46 | }, 47 | "points": { 48 | "messageCount": 1, 49 | "messagePoint": 1, 50 | "voiceCount": 1, 51 | "voicePoint": 1, 52 | "publicCount": 1, 53 | "publicPoint": 1 54 | }, 55 | "pointStaff": [], 56 | "rankLog": "", 57 | "staffRoles": [], 58 | "otherRoles": { 59 | "cmuted": [], 60 | "vmuted": [], 61 | "jailed": [], 62 | "fTag": [], 63 | "susp": [], 64 | "underWorld": [], 65 | "unreg": [] 66 | }, 67 | "publicParents": [], 68 | "registerParents": [], 69 | "crewParents": [], 70 | "streamParents": [], 71 | "problemParents": [], 72 | "gameParents": [], 73 | "secretParents": [], 74 | "aloneParents": [], 75 | "sleepRoom": "" 76 | } 77 | -------------------------------------------------------------------------------- /src/configs/config.json.example: -------------------------------------------------------------------------------- 1 | { 2 | "botOwners": ["350976460313329665"], // Bot Sahiplerinin ID'leri 3 | "prefix": ["!", ".", "e?"], // Bot Prefixleri 4 | "guildID": "910121710706114600", // Botun aktif olacağı sunucu ID'si 5 | "voiceChannel": "910123472599007252", // Botun gireceği ses kanal ID'si 6 | "activity": "Eresbos ❤️", // Botun durumunda gözükecek yazı 7 | "cmds_log": "910121710706114603", // Komut kullanımlarının gözükeceği log kanal ID'si 8 | "sunucuAdi": "Bot Test", // Lider Tablosunda gözükecek Sunucu Adı 9 | "leaderBoard": "915290872084590632", // Lider Tablosu "KANAL ID'si" 10 | "topMessage": "915296154948870215", // Lider Tablosu "MESAJ İSTATİSTİK" mesajının ID'si 11 | "topVoice": "915296199177822230", // Lider Tablosu "SES İSTATİSTİK" mesajının ID'si 12 | "emojis": { 13 | "onay": "✅", // Onay işlemlerindeki emoji 14 | "red": "❌", // Red işlemlerindeki emoji 15 | "fill": "", // İçi dolu düz çizgi 16 | "empty": "<:empty:964614693035606066>", // İçi boş düz çizgi 17 | "emptyStart": "<:emptyStart:964614693039784017>", // Boş başlangıç çizgisi 18 | "fillStart": "", // Dolu başlangıç çizgisi 19 | "emptyEnd": "<:emptyEnd:964614692888801300>", // Boş bitiş çizgisi 20 | "fillEnd": "", // Dolu bitiş çizgisi 21 | }, 22 | "badges": { 23 | "vbronze": "910126457118933002", // "Ses Bronz" rozet rol ID'si 24 | "vsilver": "910126469357907998", // "Ses Gümüş" rozet rol ID'si 25 | "vgold": "910126475582251018", // "Ses Altın" rozet rol ID'si 26 | "vdia": "910126482175701032", // "Ses Elmas" rozet rol ID'si 27 | "vemerl": "910126488605564968", // "Ses Zümrüt" rozet rol ID'si 28 | "cbronze": "914093559446134815", // "Mesaj Bronz" rozet rol ID'si 29 | "csilver": "914093573723525200", // "Mesaj Gümüş" rozet rol ID'si 30 | "cgold": "914093586688126976", // "Mesaj Altın" rozet rol ID'si 31 | "cdia": "914093600890040331", // "Mesaj Elmas" rozet rol ID'si 32 | "cemerl": "914093614760607804", // "Mesaj Zümrüt" rozet rol ID'si 33 | "prizeLog": "910121710706114603" // Rozet kazanma log kanal ID'si 34 | }, 35 | "targetAmount": { 36 | "vbronze": "15h", // "Ses Bronz" rozeti hedefidir. Örn: 15h = 15 saat 37 | "vsilver": "31h", // "Ses Gümüş" rozeti hedefidir. Örn: 31h = 31 saat 38 | "vgold": "45h", // "Ses Altın" rozeti hedefidir. Örn: 45h = 45 saat 39 | "vdia": "60h", // "Ses Elmas" rozeti hedefidir. Örn: 60h = 60 saat 40 | "vemerl": "80h", // "Ses Zümrüt" rozeti hedefidir. Örn: 80h = 80 saat 41 | "cbronze": "1000", // "Mesaj Bronz" rozeti hedefidir. Örn: 1000 = 1000 mesaj 42 | "csilver": "1010", // "Mesaj Gümüş" rozeti hedefidir. Örn: 1010 = 1010 mesaj 43 | "cgold": "1020", // "Mesaj Altın" rozeti hedefidir. Örn: 1020 = 1020 mesaj 44 | "cdia": "1030", // "Mesaj Elmas" rozeti hedefidir. Örn: 1030 = 1030 mesaj 45 | "cemerl": "1040" // "Mesaj Zümrüt" rozeti hedefidir. Örn: 1040 = 1040 mesaj 46 | }, 47 | "points": { 48 | "messageCount": 1, // Kaç mesaj başına puan eklenecek? 49 | "messagePoint": 0.2, // Belirlenen mesaj hedefine gelince kaç puan eklenecek? 50 | "voiceCount": 1, // Kaç dakika başına puan eklenecek? 51 | "voicePoint": 0.2, // Belirlenen ses hedefine gelince kaç puan eklenecek? 52 | "publicCount": 1, // Publicte kaç dakika başına puan eklenecek? 53 | "publicPoint": 0.5 // Publicte belirlenen ses hedefine gelince kaç puan eklenecek? 54 | }, 55 | "pointStaff": [], // İnsanlara puan ekleyip çıkaran ve puan sistemini aktif-deaktif edebilen kişilerdir 56 | "rankLog": "910121710706114603", // Puanla rütbe atlama loglarının atılacağı kanal ID'si 57 | "staffRoles": ["910124173442056253"], // Puanları sayılacak yetkili rol ID'leri 58 | "otherRoles": { 59 | "cmuted": [], // "Chat Muted" rol ID'leri (varsa yaz yoksa boş bırak) 60 | "vmuted": [], // "Voice Muted" rol ID'leri (varsa yaz yoksa boş bırak) 61 | "jailed": [], // "Jail" rol ID'leri (varsa yaz yoksa boş bırak) 62 | "fTag": [], // "Yasaklı Tag" rol ID'leri (varsa yaz yoksa boş bırak) 63 | "susp": [], // "Şüpheli" rol ID'leri (varsa yaz yoksa boş bırak) 64 | "underWorld": [], // "UnderWorld" rol ID'leri (varsa yaz yoksa boş bırak) 65 | "unreg": [] // "Kayıtsız" rol ID'leri (varsa yaz yoksa boş bırak) 66 | }, 67 | "publicParents": ["910121710706114602"], // Public ses kanallarının kategori ID'leri (varsa yaz yoksa boş bırak) 68 | "registerParents": ["1025357995154083841"], // Register ses kanallarının kategori ID'leri (varsa yaz yoksa boş bırak) 69 | "crewParents": [], // Ekip ses kanallarının kategori ID'leri (varsa yaz yoksa boş bırak) 70 | "streamParents": [], // Stream ses kanallarının kategori ID'leri (varsa yaz yoksa boş bırak) 71 | "problemParents": [], // Sorun Çözme ses kanallarının kategori ID'leri (varsa yaz yoksa boş bırak) 72 | "gameParents": [], // Oyun ses kanallarının kategori ID'leri (varsa yaz yoksa boş bırak) 73 | "secretParents": [], // Secret ses kanallarının kategori ID'leri (varsa yaz yoksa boş bırak) 74 | "aloneParents": [], // Alone ses kanallarının kategori ID'leri (varsa yaz yoksa boş bırak) 75 | "sleepRoom": "" // Sleep Room (AFK) kanal ID'si (varsa yaz yoksa boş bırak) 76 | } 77 | -------------------------------------------------------------------------------- /src/configs/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "token": "", 3 | "mongoURL": "" 4 | } -------------------------------------------------------------------------------- /src/emojis/empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ERESB0S/advanced-stat-bot/aab720bd0685e275952a1e9bd35369494e5a124f/src/emojis/empty.png -------------------------------------------------------------------------------- /src/emojis/emptyEnd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ERESB0S/advanced-stat-bot/aab720bd0685e275952a1e9bd35369494e5a124f/src/emojis/emptyEnd.png -------------------------------------------------------------------------------- /src/emojis/emptyStart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ERESB0S/advanced-stat-bot/aab720bd0685e275952a1e9bd35369494e5a124f/src/emojis/emptyStart.png -------------------------------------------------------------------------------- /src/emojis/fill.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ERESB0S/advanced-stat-bot/aab720bd0685e275952a1e9bd35369494e5a124f/src/emojis/fill.gif -------------------------------------------------------------------------------- /src/emojis/fillEnd.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ERESB0S/advanced-stat-bot/aab720bd0685e275952a1e9bd35369494e5a124f/src/emojis/fillEnd.gif -------------------------------------------------------------------------------- /src/emojis/fillStart.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ERESB0S/advanced-stat-bot/aab720bd0685e275952a1e9bd35369494e5a124f/src/emojis/fillStart.gif -------------------------------------------------------------------------------- /src/events/deleteStats.js: -------------------------------------------------------------------------------- 1 | const client = global.client; 2 | const config = require("../configs/config.json"); 3 | const messageUser = require("../schemas/messageUser"); 4 | const voiceUser = require("../schemas/voiceUser"); 5 | const { CronJob } = require("cron"); 6 | 7 | module.exports = () => { 8 | const sunucu = client.guilds.cache.get(config.guildID); 9 | 10 | const daily = new CronJob("0 0 * * *", () => { 11 | sunucu.members.cache.forEach(async (member) => { 12 | await messageUser.updateMany({ guildID: sunucu.id, userID: member.user.id }, { $set: { dailyStat: 0 } }); 13 | await voiceUser.updateMany({ guildID: sunucu.id, userID: member.user.id }, { $set: { dailyStat: 0 } }); 14 | }); 15 | }, null, true, "Europe/Istanbul"); 16 | daily.start(); 17 | 18 | const weekly = new CronJob("0 0 * * 0", () => { 19 | sunucu.members.cache.forEach(async (member) => { 20 | await messageUser.updateMany({ guildID: sunucu.id, userID: member.user.id }, { $set: { weeklyStat: 0 } }); 21 | await voiceUser.updateMany({ guildID: sunucu.id, userID: member.user.id }, { $set: { weeklyStat: 0 } }); 22 | }); 23 | }, null, true, "Europe/Istanbul"); 24 | weekly.start(); 25 | }; 26 | 27 | module.exports.conf = { 28 | name: "ready", 29 | }; 30 | -------------------------------------------------------------------------------- /src/events/leaderBoard.js: -------------------------------------------------------------------------------- 1 | const client = global.client; 2 | const { leaderBoard, topMessage, topVoice } = require("../configs/config.json"); 3 | const { CronJob } = require("cron"); 4 | const moment = require("moment"); 5 | require("moment-duration-format"); 6 | moment.locale("tr"); 7 | 8 | module.exports = async () => { 9 | const channel = client.channels.cache.get(leaderBoard); 10 | if (!channel) return console.log("[LEADERBOARD] Lider tablosu kanalı bulunamadı!"); 11 | const textMessageData = await channel.messages.fetch(topMessage); 12 | if (!textMessageData) return console.log("[LEADERBOARD] Mesaj sıralaması lider tablosu mesajı bulunamadı!"); 13 | const voiceMessageData = await channel.messages.fetch(topVoice); 14 | if (!voiceMessageData) return console.log("[LEADERBOARD] Ses sıralaması lider tablosu mesajı bulunamadı!"); 15 | client.fetchLeaderBoard(channel, textMessageData, voiceMessageData); 16 | const leaderboard = new CronJob("*/30 * * * *", async () => client.fetchLeaderBoard(channel, textMessageData, voiceMessageData)); 17 | leaderboard.start(); 18 | }; 19 | 20 | module.exports.conf = { 21 | name: "ready", 22 | }; 23 | -------------------------------------------------------------------------------- /src/events/messageCreate.js: -------------------------------------------------------------------------------- 1 | const config = require("../configs/config.json"); 2 | const { EmbedBuilder } = require("discord.js"); 3 | const client = global.client; 4 | let sended = false; 5 | 6 | /** 7 | * @param { import("discord.js").Message } message 8 | * @returns 9 | */ 10 | module.exports = async (message) => { 11 | const prefix = config.prefix.find((e) => message.content.toLowerCase().startsWith(e)); 12 | if (message.author.bot || !message.guild || !prefix) return; 13 | let args = message.content.substring(prefix.length).trim().split(" "); 14 | const command = args[0].toLowerCase(); 15 | 16 | const eresbosEmbed = new EmbedBuilder().setColor(message.member.displayHexColor).setFooter({ text: config.activity, iconURL: message.guild.iconURL({ dynamic: true }) }).setAuthor({ name: message.member.displayName, iconURL: message.author.avatarURL({ forceStatic: true }), url: "https://eresbos.xyz" }).setTimestamp(); 17 | args = args.splice(1); 18 | const cmd = client.commands.has(command) ? client.commands.get(command) : client.commands.get(client.aliases.get(command)); 19 | 20 | if (cmd) { 21 | if (!cmd || (cmd.conf.owner && !config.botOwners.includes(message.author.id)) || !cmd.conf.enabled) return; 22 | const cooldown = cmd.conf.cooldown || 3000; 23 | const cd = client.cooldown.get(message.author.id); 24 | if (cd) { 25 | const diff = Date.now() - cd.lastUsage; 26 | if (diff < cooldown) 27 | if (!sended) { 28 | sended = true; 29 | return message.reply({ content: `Bu komutu tekrar kullanmak için \`${Number(((cooldown - diff) / 1000).toFixed(2))} saniye\` daha beklemelisin!` }).then((e) => setTimeout(() => e.delete(), (cooldown - diff))); 30 | } 31 | } else client.cooldown.set(message.author.id, { cooldown, lastUsage: Date.now() }); 32 | cmd.run(client, message, args, eresbosEmbed, prefix); 33 | } 34 | }; 35 | 36 | module.exports.conf = { 37 | name: "messageCreate", 38 | }; 39 | -------------------------------------------------------------------------------- /src/events/messageStats.js: -------------------------------------------------------------------------------- 1 | const client = global.client; 2 | const { EmbedBuilder } = require("discord.js"); 3 | const config = require("../configs/config.json"); 4 | const messageUser = require("../schemas/messageUser"); 5 | const messageGuild = require("../schemas/messageGuild"); 6 | const guildChannel = require("../schemas/messageGuildChannel"); 7 | const messageUserChannel = require("../schemas/messageUserChannel"); 8 | const points = require("../schemas/points"); 9 | const ranks = require("../schemas/ranks"); 10 | const nums = new Map(); 11 | 12 | /** 13 | * @param { import("discord.js").Message } message 14 | * @returns 15 | */ 16 | module.exports = async (message) => { 17 | if (message.guild.id !== config.guildID) return; 18 | if ( 19 | config.otherRoles.cmuted.some((e) => message.member.roles.cache.has(e)) && 20 | config.otherRoles.vmuted.some((e) => message.member.roles.cache.has(e)) && 21 | config.otherRoles.jailed.some((e) => message.member.roles.cache.has(e)) && 22 | config.otherRoles.fTag.some((e) => message.member.roles.cache.get(e)) && 23 | config.otherRoles.susp.some((e) => message.member.roles.cache.has(e)) && 24 | config.otherRoles.underWorld.some((e) => message.member.roles.cache.has(e)) && 25 | config.otherRoles.unreg.some((e) => message.member.roles.cache.has(e)) 26 | ) return; 27 | const messageData = await messageUser.findOne({ guildID: message.guild.id, userID: message.author.id }); 28 | const logKanal = message.guild.channels.cache.get(config.badges.prizeLog); 29 | 30 | if (message.guild.roles.cache.get(config.badges.cbronze) && config.staffRoles.some((e) => message.member.roles.cache.get(e)) && messageData && logKanal && !message.member.roles.cache.get(config.badges.cbronze) && ((messageData ? messageData.topStat : 0) > config.targetAmount.cbronze) && ((messageData ? messageData.topStat : 0) < config.targetAmount.csilver)) { 31 | logKanal.send({ content: `${message.member.toString()}, \`${parseInt(config.targetAmount.cbronze).toLocaleString()} adet mesaj\` hedefine ulaştığı için \`${message.guild.roles.cache.get(config.badges.cbronze).name}\` rolünü kazandı!` }); 32 | await message.member.roles.add(config.badges.cbronze, `Mesaj Hedef Ödülü | ${message.guild.roles.cache.get(config.badges.cbronze).name}`); 33 | } else if (message.guild.roles.cache.get(config.badges.csilver) && config.staffRoles.some((e) => message.member.roles.cache.get(e)) && messageData && logKanal && !message.member.roles.cache.get(config.badges.csilver) && ((messageData ? messageData.topStat : 0) > config.targetAmount.csilver) && ((messageData ? messageData.topStat : 0) < config.targetAmount.cgold)) { 34 | logKanal.send({ content: `${message.member.toString()}, \`${parseInt(config.targetAmount.csilver).toLocaleString()} adet mesaj\` hedefine ulaştığı için \`${message.guild.roles.cache.get(config.badges.csilver).name}\` rolünü kazandı!` }); 35 | await message.member.roles.add(config.badges.csilver, `Mesaj Hedef Ödülü | ${message.guild.roles.cache.get(config.badges.csilver).name}`); 36 | await message.member.roles.remove(config.badges.cbronze, `Eski Mesaj Hedef Ödülü | ${message.guild.roles.cache.get(config.badges.cbronze).name}`); 37 | } else if (message.guild.roles.cache.get(config.badges.cgold) && config.staffRoles.some((e) => message.member.roles.cache.get(e)) && messageData && logKanal && !message.member.roles.cache.get(config.badges.cgold) && ((messageData ? messageData.topStat : 0) > config.targetAmount.cgold) && ((messageData ? messageData.topStat : 0) < config.targetAmount.cdia)) { 38 | logKanal.send({ content: `${message.member.toString()}, \`${parseInt(config.targetAmount.cgold).toLocaleString()} adet mesaj\` hedefine ulaştığı için \`${message.guild.roles.cache.get(config.badges.cgold).name}\` rolünü kazandı!` }); 39 | await message.member.roles.add(config.badges.cgold, `Mesaj Hedef Ödülü | ${message.guild.roles.cache.get(config.badges.cgold).name}`); 40 | await message.member.roles.remove(config.badges.csilver, `Eski Mesaj Hedef Ödülü | ${message.guild.roles.cache.get(config.badges.csilver).name}`); 41 | } else if (message.guild.roles.cache.get(config.badges.cdia) && config.staffRoles.some((e) => message.member.roles.cache.get(e)) && messageData && logKanal && !message.member.roles.cache.get(config.badges.cdia) && ((messageData ? messageData.topStat : 0) > config.targetAmount.cdia) && ((messageData ? messageData.topStat : 0) < config.targetAmount.cemerl)) { 42 | logKanal.send({ content: `${message.member.toString()}, \`${parseInt(config.targetAmount.cdia).toLocaleString()} adet mesaj\` hedefine ulaştığı için \`${message.guild.roles.cache.get(config.badges.cdia).name}\` rolünü kazandı!` }); 43 | await message.member.roles.add(config.badges.cdia, `Mesaj Hedef Ödülü | ${message.guild.roles.cache.get(config.badges.cdia).name}`); 44 | await message.member.roles.remove(config.badges.cgold, `Eski Mesaj Hedef Ödülü | ${message.guild.roles.cache.get(config.badges.cgold).name}`); 45 | } else if (message.guild.roles.cache.get(config.badges.cemerl) && config.staffRoles.some((e) => message.member.roles.cache.get(e)) && messageData && logKanal && !message.member.roles.cache.get(config.badges.cemerl) && ((messageData ? messageData.topStat : 0) > config.targetAmount.cemerl)) { 46 | logKanal.send({ content: `${message.member.toString()}, \`${parseInt(config.targetAmount.cemerl).toLocaleString()} adet mesaj\` hedefine ulaştığı için \`${message.guild.roles.cache.get(config.badges.cemerl).name}\` rolünü kazandı!` }); 47 | await message.member.roles.add(config.badges.cemerl, `Mesaj Hedef Ödülü | ${message.guild.roles.cache.get(config.badges.cemerl).name}`); 48 | await message.member.roles.remove(config.badges.cdia, `Eski Mesaj Hedef Ödülü | ${message.guild.roles.cache.get(config.badges.cdia).name}`); 49 | } 50 | 51 | const prefix = config.prefix.find((e) => message.content.toLowerCase().startsWith(e)); 52 | if (message.author.bot || !message.guild || prefix) return; 53 | 54 | const ranksData = await ranks.findOne({ guildId: message.guild.id }); 55 | if (ranksData.pointSystem === true && config.staffRoles.some((e) => message.member.roles.cache.has(e))) { 56 | const num = nums.get(message.author.id); 57 | if (num && num % config.points.messageCount === 0) { 58 | nums.set(message.author.id, num + 1); 59 | await points.findOneAndUpdate({ guildID: message.guild.id, userID: message.author.id }, { $inc: { points: config.points.messagePoint } }, { upsert: true }); 60 | const pointData = await points.findOne({ guildID: message.guild.id, userID: message.author.id }); 61 | if (pointData && ranksData.ranks.some(e => pointData.points >= e.points && !message.member.roles.cache.has(e.rank))) { 62 | const newRank = ranksData.ranks.filter((e) => pointData.points >= e.points).last(); 63 | await message.member.roles.add(newRank.rank); 64 | await message.member.roles.add(newRank.hammers); 65 | const oldRank = ranksData.ranks[ranksData.ranks.indexOf(newRank) - 1]; 66 | if (oldRank) await message.member.roles.remove(oldRank.rank); 67 | const embed = new EmbedBuilder().setColor(message.member.displayHexColor); 68 | const rankLog = message.guild.channels.cache.get(config.rankLog); 69 | if (rankLog) rankLog.send({ embeds: [embed.setDescription(`${message.member.toString()} kullanıcısı \`${Number(newRank.points).toLocaleString()}\` puan hedefini tamamladı ve <@&${newRank.rank}> ${newRank.hammers.length > 0 ? `(${newRank.hammers.map((e) => `<@&${e}>`).join(", ")})` : ""} rolü verildi!`)] }); 70 | } 71 | } else nums.set(message.author.id, num ? num + 1 : 1); 72 | } 73 | 74 | await messageUser.findOneAndUpdate({ guildID: message.guild.id, userID: message.author.id }, { $set: { timeout: Date.now() }, $inc: { topStat: 1, dailyStat: 1, weeklyStat: 1, twoWeeklyStat: 1 } }, { upsert: true }); 75 | await messageGuild.findOneAndUpdate({ guildID: message.guild.id }, { $inc: { topStat: 1, dailyStat: 1, weeklyStat: 1, twoWeeklyStat: 1 } }, { upsert: true }); 76 | await guildChannel.findOneAndUpdate({ guildID: message.guild.id, channelID: message.channel.id }, { $inc: { channelData: 1 } }, { upsert: true }); 77 | await messageUserChannel.findOneAndUpdate({ guildID: message.guild.id, userID: message.author.id, channelID: message.channel.id }, { $inc: { channelData: 1 } }, { upsert: true }); 78 | }; 79 | 80 | module.exports.conf = { 81 | name: "messageCreate", 82 | }; 83 | -------------------------------------------------------------------------------- /src/events/ready.js: -------------------------------------------------------------------------------- 1 | const client = global.client; 2 | const config = require("../configs/config.json"); 3 | const { joinVoiceChannel } = require("@discordjs/voice"); 4 | const ranks = require("../schemas/ranks"); 5 | 6 | module.exports = async () => { 7 | ranks.findOne({ guildId: config.guildID }, async (err, data) => { 8 | if (!data) new ranks({ guildId: config.guildID, ranks: [] }).save(); 9 | }); 10 | setInterval(async () => { 11 | client.status( 12 | [ 13 | { name: config.activity, type: 0 }, // Bir oyun oynuyor 14 | { name: config.activity, type: 1, url: "https://www.twitch.tv/eresb0s" }, // Twitch'de yayında 15 | { name: config.activity, type: 2 }, // Dinliyor 16 | { name: config.activity, type: 3 }, // İzliyor 17 | { name: config.activity, type: 5 } // Yarışmada yarışıyor 18 | ], 19 | ["online", "idle", "dnd", "invisible"], 20 | { 21 | on: false, 22 | activities: 15000, 23 | status: 30000, 24 | } 25 | ); 26 | const Guild = client.guilds.cache.get(config.guildID); 27 | if (!Guild) return; 28 | const VoiceChannel = Guild.channels.cache.get(config.voiceChannel); 29 | if (!VoiceChannel) return; 30 | joinVoiceChannel({ 31 | channelId: VoiceChannel.id, 32 | guildId: VoiceChannel.guild.id, 33 | selfDeaf: true, 34 | adapterCreator: VoiceChannel.guild.voiceAdapterCreator, 35 | }); 36 | }, 1000 * 3); 37 | 38 | // client.on("warn", m => console.log(`[WARN] - ${m}`)); 39 | // client.on("error", m => console.log(`[ERROR] - ${m}`)); 40 | // process.on("uncaughtException", error => console.log(`[ERROR] - ${error}`)); 41 | // process.on("unhandledRejection", (err) => console.log(`[ERROR] - ${err}`)); 42 | }; 43 | 44 | module.exports.conf = { 45 | name: "ready", 46 | }; 47 | -------------------------------------------------------------------------------- /src/events/voiceStats.js: -------------------------------------------------------------------------------- 1 | const client = global.client; 2 | const { EmbedBuilder } = require("discord.js"); 3 | const config = require("../configs/config.json"); 4 | const joinedAt = require("../schemas/voiceJoinedAt"); 5 | const voiceUser = require("../schemas/voiceUser"); 6 | const voiceGuild = require("../schemas/voiceGuild"); 7 | const guildChannel = require("../schemas/voiceGuildChannel"); 8 | const userChannel = require("../schemas/voiceUserChannel"); 9 | const userParent = require("../schemas/voiceUserParent"); 10 | const points = require("../schemas/points"); 11 | const ranks = require("../schemas/ranks"); 12 | const ms = require("ms"); 13 | 14 | /** 15 | * @param { import("discord.js").VoiceState } oldState 16 | * @param { import("discord.js").VoiceState } newState 17 | * @returns 18 | */ 19 | module.exports = async (oldState, newState) => { 20 | if (oldState.guild.id !== config.guildID) return; 21 | if ((oldState.member && oldState.member.user.bot) || (newState.member && newState.member.user.bot)) return; 22 | if ( 23 | config.otherRoles.cmuted.some((e) => oldState.member.roles.cache.get(e)) && 24 | config.otherRoles.vmuted.some((e) => oldState.member.roles.cache.get(e)) && 25 | config.otherRoles.jailed.some((e) => oldState.member.roles.cache.get(e)) && 26 | config.otherRoles.fTag.some((e) => oldState.member.roles.cache.get(e)) && 27 | config.otherRoles.susp.some((e) => oldState.member.roles.cache.get(e)) && 28 | config.otherRoles.underWorld.some((e) => oldState.member.roles.cache.has(e)) && 29 | config.otherRoles.unreg.some((e) => oldState.member.roles.cache.get(e)) 30 | ) return; 31 | const logKanal = oldState.guild.channels.cache.get(config.badges.prizeLog); 32 | const pubVeriler = await userParent.findOne({ guildID: oldState.guild.id, userID: oldState.id, parentID: config.publicParents }); 33 | 34 | if (oldState.guild.roles.cache.get(config.badges.vbronze) && config.staffRoles.some((e) => oldState.member.roles.cache.get(e)) && !oldState.member.roles.cache.get(config.badges.vbronze) && parseInt(pubVeriler ? pubVeriler.parentData : 0) > ms(config.targetAmount.vbronze) && parseInt(pubVeriler ? pubVeriler.parentData : 0) < ms(config.targetAmount.vsilver)) { 35 | if (logKanal) logKanal.send(`${oldState.member.toString()}, \`${client.getTime(ms(config.targetAmount.vbronze))} ses\` hedefine ulaştığı için \`${oldState.guild.roles.cache.get(config.badges.vbronze).name}\` rolünü kazandı!`); 36 | await oldState.member.roles.add(config.badges.vbronze, `Ses Hedef Ödülü | ${oldState.guild.roles.cache.get(config.badges.vbronze).name}`); 37 | } else if (oldState.guild.roles.cache.get(config.badges.vsilver) && config.staffRoles.some((e) => oldState.member.roles.cache.get(e)) && !oldState.member.roles.cache.get(config.badges.vsilver) && parseInt(pubVeriler ? pubVeriler.parentData : 0) > ms(config.targetAmount.vsilver) && parseInt(pubVeriler ? pubVeriler.parentData : 0) < ms(config.targetAmount.vgold)) { 38 | if (logKanal) logKanal.send(`${oldState.member.toString()}, \`${client.getTime(ms(config.targetAmount.vsilver))} ses\` hedefine ulaştığı için \`${oldState.guild.roles.cache.get(config.badges.vsilver).name}\` rolünü kazandı!`); 39 | await oldState.member.roles.add(config.badges.vsilver, `Ses Hedef Ödülü | ${oldState.guild.roles.cache.get(config.badges.vsilver).name}`); 40 | await oldState.member.roles.remove(config.badges.vbronze, `Eski Ses Hedef Ödülü | ${oldState.guild.roles.cache.get(config.badges.vbronze).name}`); 41 | } else if (oldState.guild.roles.cache.get(config.badges.vgold) && config.staffRoles.some((e) => oldState.member.roles.cache.get(e)) && !oldState.member.roles.cache.get(config.badges.vgold) && parseInt(pubVeriler ? pubVeriler.parentData : 0) > ms(config.targetAmount.vgold) && parseInt(pubVeriler ? pubVeriler.parentData : 0) < ms(config.targetAmount.vdia)) { 42 | if (logKanal) logKanal.send(`${oldState.member.toString()}, \`${client.getTime(ms(config.targetAmount.vgold))} ses\` hedefine ulaştığı için \`${oldState.guild.roles.cache.get(config.badges.vgold).name}\` rolünü kazandı!`); 43 | await oldState.member.roles.add(config.badges.vgold, `Ses Hedef Ödülü | ${oldState.guild.roles.cache.get(config.badges.vgold).name}`); 44 | await oldState.member.roles.remove(config.badges.vsilver, `Eski Ses Hedef Ödülü | ${oldState.guild.roles.cache.get(config.badges.vsilver).name}`); 45 | } else if (oldState.guild.roles.cache.get(config.badges.vdia) && config.staffRoles.some((e) => oldState.member.roles.cache.get(e)) && !oldState.member.roles.cache.get(config.badges.vdia) && parseInt(pubVeriler ? pubVeriler.parentData : 0) > ms(config.targetAmount.vdia) && parseInt(pubVeriler ? pubVeriler.parentData : 0) < ms(config.targetAmount.vemerl)) { 46 | if (logKanal) logKanal.send(`${oldState.member.toString()}, \`${client.getTime(ms(config.targetAmount.vdia))} ses\` hedefine ulaştığı için \`${oldState.guild.roles.cache.get(config.badges.vdia).name}\` rolünü kazandı!`); 47 | await oldState.member.roles.add(config.badges.vdia, `Ses Hedef Ödülü | ${oldState.guild.roles.cache.get(config.badges.vdia).name}`); 48 | await oldState.member.roles.remove(config.badges.vgold, `Eski Ses Hedef Ödülü | ${oldState.guild.roles.cache.get(config.badges.vgold).name}`); 49 | } else if (oldState.guild.roles.cache.get(config.badges.vemerl) && config.staffRoles.some((e) => oldState.member.roles.cache.get(e)) && !oldState.member.roles.cache.get(config.badges.vemerl) && parseInt(pubVeriler ? pubVeriler.parentData : 0) > ms(config.targetAmount.vemerl)) { 50 | if (logKanal) logKanal.send(`${oldState.member.toString()}, \`${client.getTime(ms(config.targetAmount.vemerl))} ses\` hedefine ulaştığı için \`${oldState.guild.roles.cache.get(config.badges.vemerl).name}\` rolünü kazandı!`); 51 | await oldState.member.roles.add(config.badges.vemerl, `Ses Hedef Ödülü | ${oldState.guild.roles.cache.get(config.badges.vemerl).name}`); 52 | await oldState.member.roles.remove(config.badges.vdia, `Eski Ses Hedef Ödülü | ${oldState.guild.roles.cache.get(config.badges.vdia).name}`); 53 | } 54 | 55 | if (!oldState.channelId && newState.channelId) await joinedAt.findOneAndUpdate({ guildID: newState.guild.id, userID: newState.id }, { $set: { date: Date.now() } }, { upsert: true }); 56 | let joinedAtData = await joinedAt.findOne({ guildID: oldState.guild.id, userID: oldState.id }); 57 | if (!joinedAtData) await joinedAt.findOneAndUpdate({ guildID: oldState.guild.id, userID: oldState.id }, { $set: { date: Date.now() } }, { upsert: true }); 58 | joinedAtData = await joinedAt.findOne({ guildID: oldState.guild.id, userID: oldState.id }); 59 | const data = Date.now() - joinedAtData.date; 60 | 61 | if (oldState.channelId && !newState.channelId) { 62 | await saveData(oldState, oldState.channel, data); 63 | await joinedAt.deleteOne({ guildID: oldState.guild.id, userID: oldState.id }); 64 | } else if (oldState.channelId && newState.channelId) { 65 | await saveData(oldState, oldState.channel, data); 66 | await joinedAt.findOneAndUpdate({ guildID: oldState.guild.id, userID: oldState.id }, { $set: { date: Date.now() } }, { upsert: true }); 67 | } 68 | }; 69 | 70 | async function saveData(user, channel, data) { 71 | const ranksData = await ranks.findOne({ guildId: user.guild.id }); 72 | if (ranksData.pointSystem === true && config.staffRoles.some((e) => user.member.roles.cache.has(e))) { 73 | if (channel.parent && config.publicParents.includes(channel.parentId) && !channel.id !== config.sleepRoom) { 74 | if (data >= (1000 * 60) * config.points.publicCount) await points.findOneAndUpdate({ guildID: user.guild.id, userID: user.id }, { $inc: { points: Math.floor(parseInt(data / 1000 / 60) / config.points.publicCount) * config.points.publicPoint } }, { upsert: true }); 75 | } else if (data >= (1000 * 60) * config.points.voiceCount) await points.findOneAndUpdate({ guildID: user.guild.id, userID: user.id }, { $inc: { points: Math.floor(parseInt(data / 1000 / 60) / config.points.voiceCount) * config.points.voicePoint } }, { upsert: true }); 76 | const pointData = await points.findOne({ guildID: user.guild.id, userID: user.id }); 77 | if (pointData && ranksData.ranks.some((e) => pointData.points >= e.points && !user.member.hasRole(e.rank))) { 78 | const newRank = ranksData.ranks.filter((e) => pointData.points >= e.points).last(); 79 | if (newRank && !user.member.roles.cache.has(newRank.rank)) { 80 | await user.member.roles.add(newRank.rank); 81 | await user.member.roles.add(newRank.hammers); 82 | const oldRoles = ranksData.ranks[ranksData.ranks.indexOf(newRank) - 1]; 83 | if (oldRoles) await user.member.roles.remove(oldRoles.rank); 84 | const embed = new EmbedBuilder().setColor(user.member.displayHexColor); 85 | const log = user.guild.channels.cache.get(config.rankLog); 86 | if (log) log.send({ embeds: [embed.setDescription(`${user.member.toString()} kullanıcısı \`${Number(newRank.points).toLocaleString()}\` puan hedefini tamamladı ve <@&${newRank.rank}> ${newRank.hammers.length > 0 ? `(${newRank.hammers.map((e) => `<@&${e}>`).join(", ")})` : ""} rolü verildi!`)] }); 87 | } 88 | } 89 | } 90 | 91 | await voiceUser.findOneAndUpdate({ guildID: user.guild.id, userID: user.id }, { $inc: { topStat: data, dailyStat: data, weeklyStat: data } }, { upsert: true }); 92 | await voiceGuild.findOneAndUpdate({ guildID: user.guild.id }, { $inc: { topStat: data, dailyStat: data, weeklyStat: data } }, { upsert: true }); 93 | await guildChannel.findOneAndUpdate({ guildID: user.guild.id, channelID: channel.id }, { $inc: { channelData: data } }, { upsert: true }); 94 | await userChannel.findOneAndUpdate({ guildID: user.guild.id, userID: user.id, channelID: channel.id }, { $inc: { channelData: data } }, { upsert: true }); 95 | if (channel.id !== config.sleepRoom && channel.parent) await userParent.findOneAndUpdate({ guildID: user.guild.id, userID: user.id, parentID: channel.parentId }, { $inc: { parentData: data } }, { upsert: true }); 96 | } 97 | 98 | module.exports.conf = { 99 | name: "voiceStateUpdate", 100 | }; 101 | -------------------------------------------------------------------------------- /src/handlers/commandHandler.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | const client = global.client; 3 | 4 | fs.readdir("./src/commands", (err, files) => { 5 | if (err) console.log(err); 6 | files.forEach((f) => { 7 | const props = require(`../commands/${f}`); 8 | console.log(`[COMMAND] ${props.conf.name} aktif edildi!`); 9 | client.commands.set(props.conf.name, props); 10 | props.conf.aliases.forEach((alias) => { 11 | client.aliases.set(alias, props.conf.name); 12 | }); 13 | }); 14 | }); 15 | -------------------------------------------------------------------------------- /src/handlers/eventHandler.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | const client = global.client; 3 | 4 | fs.readdir("./src/events", (err, files) => { 5 | if (err) return console.error(err); 6 | console.log(`[EVENT] ${files.length} event aktif edildi!`); 7 | files.filter((file) => file.endsWith(".js")).forEach((file) => { 8 | const prop = require(`../events/${file}`); 9 | if (!prop.conf) return; 10 | client.on(prop.conf.name, prop); 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /src/handlers/functionHandler.js: -------------------------------------------------------------------------------- 1 | const { GuildMember, EmbedBuilder } = require("discord.js"); 2 | const { emojis, sunucuAdi, badges } = require("../configs/config.json"); 3 | const messageUser = require("../schemas/messageUser"); 4 | const voiceUser = require("../schemas/voiceUser"); 5 | const moment = require("moment"); 6 | 7 | module.exports = async (client) => { 8 | client.fetchLeaderBoard = async (channel, textMessage, voiceMessage) => { 9 | const [text, voice] = await client.generateleaderBoard(channel.guild.id); 10 | 11 | await textMessage.edit({ embeds: [text] }); 12 | await voiceMessage.edit({ embeds: [voice] }); 13 | }; 14 | 15 | client.generateleaderBoard = async (guildId) => { 16 | const Guild = await client.guilds.cache.get(guildId); 17 | if (!Guild) throw new TypeError("Invalid Argument: Guild"); 18 | const messageData = async (type) => { 19 | let data = await messageUser.find({ guildID: Guild.id }).sort({ weeklyStat: -1 }); 20 | data = data.filter((e) => e[type] !== 0 && Guild.members.cache.has(e.userID)); 21 | return data.length > 0 ? data.splice(0, 20).map((e, i) => `\`${i + 1}.\` <@${e.userID}> : \`${Number(e[type]).toLocaleString()} mesaj\``).join("\n") : "`Veri bulunmuyor.`"; 22 | }; 23 | const voiceData = async (type) => { 24 | let data = await voiceUser.find({ guildID: Guild.id }).sort({ weeklyStat: -1 }); 25 | data = data.filter((e) => e[type] !== 0 && Guild.members.cache.has(e.userID)); 26 | return data.length > 0 ? data.splice(0, 20).map((e, i) => `\`${i + 1}.\` <@${e.userID}> : \`${client.getTime(e[type])}\``).join("\n") : "`Veri bulunmuyor.`"; 27 | }; 28 | 29 | const text = new EmbedBuilder().setDescription(`${await messageData("weeklyStat")}`).setAuthor({ name: `${sunucuAdi} Mesaj Sıralaması | 1 Hafta`, iconURL: Guild.iconURL({ forceStatic: true }) }).setFooter({ text: "Son Güncelleme", iconURL: Guild.iconURL({ forceStatic: true }) }).setColor("White").setTimestamp(); 30 | const voice = new EmbedBuilder().setDescription(`${await voiceData("weeklyStat")}`).setAuthor({ name: `${sunucuAdi} Ses Sıralaması | 1 Hafta`, iconURL: Guild.iconURL({ forceStatic: true }) }).setFooter({ text: "Son Güncelleme", iconURL: Guild.iconURL({ forceStatic: true }) }).setColor("White").setTimestamp(); 31 | 32 | return [text, voice]; 33 | }; 34 | 35 | client.status = async (activities, status, time) => { 36 | if (!time.on) { 37 | client.user.setActivity(activities[3]) 38 | client.user.setStatus(status[1]) 39 | } else { 40 | let i = 0; 41 | setInterval(() => { 42 | if (i >= activities.length) i = 0 43 | client.user.setActivity(activities[i]) 44 | i++; 45 | }, time.activities); 46 | 47 | let s = 0; 48 | setInterval(() => { 49 | if (s >= activities.length) s = 0 50 | client.user.setStatus(status[s]) 51 | s++; 52 | }, time.status); 53 | } 54 | }; 55 | 56 | /** 57 | * @param { Number } value 58 | * @param { Number } maxValue 59 | * @param { Number } size 60 | * @returns 61 | */ 62 | client.progressBar = (value, maxValue, size) => { 63 | const progress = Math.round( 64 | size * (value / maxValue > 1 ? 1 : value / maxValue) 65 | ); 66 | const emptyProgress = size - progress > 0 ? size - progress : 0; 67 | 68 | const progressText = emojis.fill.repeat(progress); 69 | const emptyProgressText = emojis.empty.repeat(emptyProgress); 70 | 71 | return emptyProgress > 0 72 | ? progress === 0 73 | ? emojis.emptyStart + progressText + emptyProgressText + emojis.emptyEnd 74 | : emojis.fillStart + progressText + emptyProgressText + emojis.emptyEnd 75 | : emojis.fillStart + progressText + emptyProgressText + emojis.fillEnd; 76 | }; 77 | 78 | GuildMember.prototype.hasRole = function (role, every = true) { 79 | return ( 80 | (Array.isArray(role) && 81 | ((every && role.every((e) => this.roles.cache.has(e))) || 82 | (!every && role.some((e) => this.roles.cache.has(e))))) || 83 | (!Array.isArray(role) && this.roles.cache.has(role)) 84 | ); 85 | }; 86 | 87 | /** 88 | * @param { Number } time 89 | * @returns 90 | */ 91 | client.getTime = (time) => { 92 | if (isNaN(time) || time.toLocaleString().includes('-')) throw new TypeError("Invalid Argument : Time"); 93 | let date = moment.duration(time)._data; 94 | 95 | if (date.years) return `${date.years} yıl${date.months ? `, ${date.months} ay` : ``}${date.days ? `, ${date.days} gün` : ``}` 96 | if (date.months) return `${date.months} ay${date.days ? `, ${date.days} gün` : ``}${date.hours ? `, ${date.hours} saat` : ``}` 97 | if (date.days) return `${date.days} gün${date.hours ? `, ${date.hours} saat` : ``}${date.minutes ? `, ${date.minutes} dakika` : ``}`; 98 | if (date.hours) return `${date.hours} saat${date.minutes ? `, ${date.minutes} dakika` : ``}${date.seconds ? `, ${date.seconds} sn.` : ``}`; 99 | if (date.minutes) return `${date.minutes} dakika${date.seconds ? `, ${date.seconds} sn.` : ``}`; 100 | if (date.seconds) return `${date.seconds} sn.`; 101 | }; 102 | 103 | Array.prototype.listRoles = function (type = "mention") { 104 | return this.length > 1 105 | ? this.slice(0, -1) 106 | .map((x) => `<@&${x}>`) 107 | .join(", ") + 108 | " ve " + 109 | this.map((x) => `<@&${x}>`).slice(-1) 110 | : this.map((x) => `<@&${x}>`).join(""); 111 | }; 112 | 113 | Array.prototype.last = function () { 114 | return this[this.length - 1]; 115 | }; 116 | }; 117 | -------------------------------------------------------------------------------- /src/handlers/mongoHandler.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | const settings = require("../configs/settings.json"); 3 | 4 | mongoose.connect(settings.mongoURL, { 5 | useUnifiedTopology: true, 6 | useNewUrlParser: true, 7 | }); 8 | 9 | mongoose.connection.on("connected", () => { 10 | console.log(`[MONGOOSE] Mongo bağlantısı kuruldu!`); 11 | }); 12 | 13 | mongoose.connection.on("disconnected", () => { 14 | console.log(`[MONGOOSE] Mongo bağlantısı kesildi!`); 15 | }); 16 | 17 | mongoose.connection.on("error", () => { 18 | console.error(`[MONGOOSE] Mongo bağlantısı kurulurken bir hata oluştu!`); 19 | }); 20 | -------------------------------------------------------------------------------- /src/images/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ERESB0S/advanced-stat-bot/aab720bd0685e275952a1e9bd35369494e5a124f/src/images/1.png -------------------------------------------------------------------------------- /src/images/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ERESB0S/advanced-stat-bot/aab720bd0685e275952a1e9bd35369494e5a124f/src/images/10.png -------------------------------------------------------------------------------- /src/images/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ERESB0S/advanced-stat-bot/aab720bd0685e275952a1e9bd35369494e5a124f/src/images/2.png -------------------------------------------------------------------------------- /src/images/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ERESB0S/advanced-stat-bot/aab720bd0685e275952a1e9bd35369494e5a124f/src/images/3.png -------------------------------------------------------------------------------- /src/images/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ERESB0S/advanced-stat-bot/aab720bd0685e275952a1e9bd35369494e5a124f/src/images/4.png -------------------------------------------------------------------------------- /src/images/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ERESB0S/advanced-stat-bot/aab720bd0685e275952a1e9bd35369494e5a124f/src/images/5.png -------------------------------------------------------------------------------- /src/images/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ERESB0S/advanced-stat-bot/aab720bd0685e275952a1e9bd35369494e5a124f/src/images/6.png -------------------------------------------------------------------------------- /src/images/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ERESB0S/advanced-stat-bot/aab720bd0685e275952a1e9bd35369494e5a124f/src/images/7.png -------------------------------------------------------------------------------- /src/images/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ERESB0S/advanced-stat-bot/aab720bd0685e275952a1e9bd35369494e5a124f/src/images/8.png -------------------------------------------------------------------------------- /src/images/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ERESB0S/advanced-stat-bot/aab720bd0685e275952a1e9bd35369494e5a124f/src/images/9.png -------------------------------------------------------------------------------- /src/schemas/messageGuild.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const şema = Schema({ 4 | guildID: { type: String, default: "" }, 5 | topStat: { type: Number, default: 0 }, 6 | dailyStat: { type: Number, default: 0 }, 7 | weeklyStat: { type: Number, default: 0 }, 8 | }); 9 | 10 | module.exports = model("messageGuild", şema); 11 | -------------------------------------------------------------------------------- /src/schemas/messageGuildChannel.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const schema = Schema({ 4 | guildID: String, 5 | channelID: String, 6 | channelData: { type: Number, default: 0 }, 7 | }); 8 | 9 | module.exports = model("messageGuildChannel", schema); 10 | -------------------------------------------------------------------------------- /src/schemas/messageUser.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const şema = Schema({ 4 | guildID: String, 5 | userID: String, 6 | topStat: { type: Number, default: 0 }, 7 | dailyStat: { type: Number, default: 0 }, 8 | weeklyStat: { type: Number, default: 0 }, 9 | timeout: { type: Number, default: Date.now() }, 10 | }); 11 | 12 | module.exports = model("messageUser", şema); 13 | -------------------------------------------------------------------------------- /src/schemas/messageUserChannel.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const şema = Schema({ 4 | guildID: String, 5 | userID: String, 6 | channelID: String, 7 | channelData: { type: Number, default: 0 } 8 | }); 9 | 10 | module.exports = model("messageUserChannel", şema); 11 | -------------------------------------------------------------------------------- /src/schemas/points.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const şema = Schema({ 4 | guildID: { type: String, default: "" }, 5 | userID: { type: String, default: "" }, 6 | points: { type: Number, default: 0 } 7 | }); 8 | 9 | module.exports = model("points", şema); 10 | -------------------------------------------------------------------------------- /src/schemas/ranks.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const şema = Schema({ 4 | guildId: { type: String, default: "" }, 5 | pointSystem: { type: Boolean, default: false }, 6 | ranks: { type: Array, default: [] }, 7 | }); 8 | 9 | module.exports = model("ranks", şema); 10 | -------------------------------------------------------------------------------- /src/schemas/voiceGuild.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const schema = Schema({ 4 | guildID: String, 5 | topStat: { type: Number, default: 0 }, 6 | dailyStat: { type: Number, default: 0 }, 7 | weeklyStat: { type: Number, default: 0 }, 8 | }); 9 | 10 | module.exports = model("voiceGuild", schema); 11 | -------------------------------------------------------------------------------- /src/schemas/voiceGuildChannel.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const schema = Schema({ 4 | guildID: String, 5 | channelID: String, 6 | channelData: { type: Number, default: 0 }, 7 | }); 8 | 9 | module.exports = model("voiceGuildChannel", schema); 10 | -------------------------------------------------------------------------------- /src/schemas/voiceJoinedAt.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const şema = Schema({ 4 | guildID: String, 5 | userID: String, 6 | date: Number, 7 | }); 8 | 9 | module.exports = model("voiceJoinedAt", şema); 10 | -------------------------------------------------------------------------------- /src/schemas/voiceUser.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const şema = Schema({ 4 | guildID: String, 5 | userID: String, 6 | topStat: { type: Number, default: 0 }, 7 | dailyStat: { type: Number, default: 0 }, 8 | weeklyStat: { type: Number, default: 0 }, 9 | }); 10 | 11 | module.exports = model("voiceUser", şema); 12 | -------------------------------------------------------------------------------- /src/schemas/voiceUserChannel.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const şema = Schema({ 4 | guildID: String, 5 | userID: String, 6 | channelID: String, 7 | channelData: { type: Number, default: 0 }, 8 | }); 9 | 10 | module.exports = model("voiceUserChannel", şema); 11 | -------------------------------------------------------------------------------- /src/schemas/voiceUserParent.js: -------------------------------------------------------------------------------- 1 | const { Schema, model } = require("mongoose"); 2 | 3 | const schema = Schema({ 4 | guildID: String, 5 | userID: String, 6 | parentID: String, 7 | parentData: { type: Number, default: 0 }, 8 | }); 9 | 10 | module.exports = model("voiceUserParent", schema); 11 | -------------------------------------------------------------------------------- /start.bat: -------------------------------------------------------------------------------- 1 | echo off 2 | title Stat 3 | cls 4 | :a 5 | node eresbos.js 6 | goto a 7 | pause -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@aws-crypto/ie11-detection@^2.0.0": 6 | version "2.0.2" 7 | resolved "https://registry.yarnpkg.com/@aws-crypto/ie11-detection/-/ie11-detection-2.0.2.tgz#9c39f4a5558196636031a933ec1b4792de959d6a" 8 | integrity sha512-5XDMQY98gMAf/WRTic5G++jfmS/VLM0rwpiOpaainKi4L0nqWMSB1SzsrEG5rjFZGYN6ZAefO+/Yta2dFM0kMw== 9 | dependencies: 10 | tslib "^1.11.1" 11 | 12 | "@aws-crypto/sha256-browser@2.0.0": 13 | version "2.0.0" 14 | resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-2.0.0.tgz#741c9024df55ec59b51e5b1f5d806a4852699fb5" 15 | integrity sha512-rYXOQ8BFOaqMEHJrLHul/25ckWH6GTJtdLSajhlqGMx0PmSueAuvboCuZCTqEKlxR8CQOwRarxYMZZSYlhRA1A== 16 | dependencies: 17 | "@aws-crypto/ie11-detection" "^2.0.0" 18 | "@aws-crypto/sha256-js" "^2.0.0" 19 | "@aws-crypto/supports-web-crypto" "^2.0.0" 20 | "@aws-crypto/util" "^2.0.0" 21 | "@aws-sdk/types" "^3.1.0" 22 | "@aws-sdk/util-locate-window" "^3.0.0" 23 | "@aws-sdk/util-utf8-browser" "^3.0.0" 24 | tslib "^1.11.1" 25 | 26 | "@aws-crypto/sha256-js@2.0.0": 27 | version "2.0.0" 28 | resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-2.0.0.tgz#f1f936039bdebd0b9e2dd834d65afdc2aac4efcb" 29 | integrity sha512-VZY+mCY4Nmrs5WGfitmNqXzaE873fcIZDu54cbaDaaamsaTOP1DBImV9F4pICc3EHjQXujyE8jig+PFCaew9ig== 30 | dependencies: 31 | "@aws-crypto/util" "^2.0.0" 32 | "@aws-sdk/types" "^3.1.0" 33 | tslib "^1.11.1" 34 | 35 | "@aws-crypto/sha256-js@^2.0.0": 36 | version "2.0.2" 37 | resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-2.0.2.tgz#c81e5d378b8a74ff1671b58632779986e50f4c99" 38 | integrity sha512-iXLdKH19qPmIC73fVCrHWCSYjN/sxaAvZ3jNNyw6FclmHyjLKg0f69WlC9KTnyElxCR5MO9SKaG00VwlJwyAkQ== 39 | dependencies: 40 | "@aws-crypto/util" "^2.0.2" 41 | "@aws-sdk/types" "^3.110.0" 42 | tslib "^1.11.1" 43 | 44 | "@aws-crypto/supports-web-crypto@^2.0.0": 45 | version "2.0.2" 46 | resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-2.0.2.tgz#9f02aafad8789cac9c0ab5faaebb1ab8aa841338" 47 | integrity sha512-6mbSsLHwZ99CTOOswvCRP3C+VCWnzBf+1SnbWxzzJ9lR0mA0JnY2JEAhp8rqmTE0GPFy88rrM27ffgp62oErMQ== 48 | dependencies: 49 | tslib "^1.11.1" 50 | 51 | "@aws-crypto/util@^2.0.0", "@aws-crypto/util@^2.0.2": 52 | version "2.0.2" 53 | resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-2.0.2.tgz#adf5ff5dfbc7713082f897f1d01e551ce0edb9c0" 54 | integrity sha512-Lgu5v/0e/BcrZ5m/IWqzPUf3UYFTy/PpeED+uc9SWUR1iZQL8XXbGQg10UfllwwBryO3hFF5dizK+78aoXC1eA== 55 | dependencies: 56 | "@aws-sdk/types" "^3.110.0" 57 | "@aws-sdk/util-utf8-browser" "^3.0.0" 58 | tslib "^1.11.1" 59 | 60 | "@aws-sdk/abort-controller@3.226.0": 61 | version "3.226.0" 62 | resolved "https://registry.yarnpkg.com/@aws-sdk/abort-controller/-/abort-controller-3.226.0.tgz#3adffb8ee5af57ddb154e8544a8eeec76ad32271" 63 | integrity sha512-cJVzr1xxPBd08voknXvR0RLgtZKGKt6WyDpH/BaPCu3rfSqWCDZKzwqe940eqosjmKrxC6pUZNKASIqHOQ8xxQ== 64 | dependencies: 65 | "@aws-sdk/types" "3.226.0" 66 | tslib "^2.3.1" 67 | 68 | "@aws-sdk/client-cognito-identity@3.236.0": 69 | version "3.236.0" 70 | resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.236.0.tgz#bec1a6625d1b34b0014a8ded15d70557643ee7e9" 71 | integrity sha512-lWGuTVA+q3h1KS3nxTWeRGOfsuQ+GNwq5IxFJ8ko441mpwo5A2t6u25Z+G6t5Eh+q4EcoxMX64HYA+cu91lr7g== 72 | dependencies: 73 | "@aws-crypto/sha256-browser" "2.0.0" 74 | "@aws-crypto/sha256-js" "2.0.0" 75 | "@aws-sdk/client-sts" "3.236.0" 76 | "@aws-sdk/config-resolver" "3.234.0" 77 | "@aws-sdk/credential-provider-node" "3.236.0" 78 | "@aws-sdk/fetch-http-handler" "3.226.0" 79 | "@aws-sdk/hash-node" "3.226.0" 80 | "@aws-sdk/invalid-dependency" "3.226.0" 81 | "@aws-sdk/middleware-content-length" "3.226.0" 82 | "@aws-sdk/middleware-endpoint" "3.226.0" 83 | "@aws-sdk/middleware-host-header" "3.226.0" 84 | "@aws-sdk/middleware-logger" "3.226.0" 85 | "@aws-sdk/middleware-recursion-detection" "3.226.0" 86 | "@aws-sdk/middleware-retry" "3.235.0" 87 | "@aws-sdk/middleware-serde" "3.226.0" 88 | "@aws-sdk/middleware-signing" "3.226.0" 89 | "@aws-sdk/middleware-stack" "3.226.0" 90 | "@aws-sdk/middleware-user-agent" "3.226.0" 91 | "@aws-sdk/node-config-provider" "3.226.0" 92 | "@aws-sdk/node-http-handler" "3.226.0" 93 | "@aws-sdk/protocol-http" "3.226.0" 94 | "@aws-sdk/smithy-client" "3.234.0" 95 | "@aws-sdk/types" "3.226.0" 96 | "@aws-sdk/url-parser" "3.226.0" 97 | "@aws-sdk/util-base64" "3.208.0" 98 | "@aws-sdk/util-body-length-browser" "3.188.0" 99 | "@aws-sdk/util-body-length-node" "3.208.0" 100 | "@aws-sdk/util-defaults-mode-browser" "3.234.0" 101 | "@aws-sdk/util-defaults-mode-node" "3.234.0" 102 | "@aws-sdk/util-endpoints" "3.226.0" 103 | "@aws-sdk/util-retry" "3.229.0" 104 | "@aws-sdk/util-user-agent-browser" "3.226.0" 105 | "@aws-sdk/util-user-agent-node" "3.226.0" 106 | "@aws-sdk/util-utf8-browser" "3.188.0" 107 | "@aws-sdk/util-utf8-node" "3.208.0" 108 | tslib "^2.3.1" 109 | 110 | "@aws-sdk/client-sso-oidc@3.236.0": 111 | version "3.236.0" 112 | resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.236.0.tgz#501cc3f69bdfc1b538b3b89d1166bc80dd86a461" 113 | integrity sha512-9TuigSXGafVto+GjKsVkhNLlnSgNWzRL5/ClZ5lY3dWrcDEJGZjFwwRB3ICerFQJBdDfsYwjNjJPhYEHzdyBfQ== 114 | dependencies: 115 | "@aws-crypto/sha256-browser" "2.0.0" 116 | "@aws-crypto/sha256-js" "2.0.0" 117 | "@aws-sdk/config-resolver" "3.234.0" 118 | "@aws-sdk/fetch-http-handler" "3.226.0" 119 | "@aws-sdk/hash-node" "3.226.0" 120 | "@aws-sdk/invalid-dependency" "3.226.0" 121 | "@aws-sdk/middleware-content-length" "3.226.0" 122 | "@aws-sdk/middleware-endpoint" "3.226.0" 123 | "@aws-sdk/middleware-host-header" "3.226.0" 124 | "@aws-sdk/middleware-logger" "3.226.0" 125 | "@aws-sdk/middleware-recursion-detection" "3.226.0" 126 | "@aws-sdk/middleware-retry" "3.235.0" 127 | "@aws-sdk/middleware-serde" "3.226.0" 128 | "@aws-sdk/middleware-stack" "3.226.0" 129 | "@aws-sdk/middleware-user-agent" "3.226.0" 130 | "@aws-sdk/node-config-provider" "3.226.0" 131 | "@aws-sdk/node-http-handler" "3.226.0" 132 | "@aws-sdk/protocol-http" "3.226.0" 133 | "@aws-sdk/smithy-client" "3.234.0" 134 | "@aws-sdk/types" "3.226.0" 135 | "@aws-sdk/url-parser" "3.226.0" 136 | "@aws-sdk/util-base64" "3.208.0" 137 | "@aws-sdk/util-body-length-browser" "3.188.0" 138 | "@aws-sdk/util-body-length-node" "3.208.0" 139 | "@aws-sdk/util-defaults-mode-browser" "3.234.0" 140 | "@aws-sdk/util-defaults-mode-node" "3.234.0" 141 | "@aws-sdk/util-endpoints" "3.226.0" 142 | "@aws-sdk/util-retry" "3.229.0" 143 | "@aws-sdk/util-user-agent-browser" "3.226.0" 144 | "@aws-sdk/util-user-agent-node" "3.226.0" 145 | "@aws-sdk/util-utf8-browser" "3.188.0" 146 | "@aws-sdk/util-utf8-node" "3.208.0" 147 | tslib "^2.3.1" 148 | 149 | "@aws-sdk/client-sso@3.236.0": 150 | version "3.236.0" 151 | resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.236.0.tgz#eba16f73abb9639bfdafeeb64d5c9771db2a4cc9" 152 | integrity sha512-2E/XHiVSRI+L2SlVscmV/+z4A2iWF6BTUjVBFBGMmsailvGDV6XKPFocTBsHI64G25/SYkhMdELvjn5jHLKBGQ== 153 | dependencies: 154 | "@aws-crypto/sha256-browser" "2.0.0" 155 | "@aws-crypto/sha256-js" "2.0.0" 156 | "@aws-sdk/config-resolver" "3.234.0" 157 | "@aws-sdk/fetch-http-handler" "3.226.0" 158 | "@aws-sdk/hash-node" "3.226.0" 159 | "@aws-sdk/invalid-dependency" "3.226.0" 160 | "@aws-sdk/middleware-content-length" "3.226.0" 161 | "@aws-sdk/middleware-endpoint" "3.226.0" 162 | "@aws-sdk/middleware-host-header" "3.226.0" 163 | "@aws-sdk/middleware-logger" "3.226.0" 164 | "@aws-sdk/middleware-recursion-detection" "3.226.0" 165 | "@aws-sdk/middleware-retry" "3.235.0" 166 | "@aws-sdk/middleware-serde" "3.226.0" 167 | "@aws-sdk/middleware-stack" "3.226.0" 168 | "@aws-sdk/middleware-user-agent" "3.226.0" 169 | "@aws-sdk/node-config-provider" "3.226.0" 170 | "@aws-sdk/node-http-handler" "3.226.0" 171 | "@aws-sdk/protocol-http" "3.226.0" 172 | "@aws-sdk/smithy-client" "3.234.0" 173 | "@aws-sdk/types" "3.226.0" 174 | "@aws-sdk/url-parser" "3.226.0" 175 | "@aws-sdk/util-base64" "3.208.0" 176 | "@aws-sdk/util-body-length-browser" "3.188.0" 177 | "@aws-sdk/util-body-length-node" "3.208.0" 178 | "@aws-sdk/util-defaults-mode-browser" "3.234.0" 179 | "@aws-sdk/util-defaults-mode-node" "3.234.0" 180 | "@aws-sdk/util-endpoints" "3.226.0" 181 | "@aws-sdk/util-retry" "3.229.0" 182 | "@aws-sdk/util-user-agent-browser" "3.226.0" 183 | "@aws-sdk/util-user-agent-node" "3.226.0" 184 | "@aws-sdk/util-utf8-browser" "3.188.0" 185 | "@aws-sdk/util-utf8-node" "3.208.0" 186 | tslib "^2.3.1" 187 | 188 | "@aws-sdk/client-sts@3.236.0": 189 | version "3.236.0" 190 | resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.236.0.tgz#8f3d793d627edf72ae80ffc50e7982b6cbcfd3f7" 191 | integrity sha512-ruEALU0oPwsA8xZ/HBCoUO9rsyhPyalj20GMGpzVaNcf1dr1jMTThDQvQvvjAHjY3W56mI7ApxjK+D+gok55aw== 192 | dependencies: 193 | "@aws-crypto/sha256-browser" "2.0.0" 194 | "@aws-crypto/sha256-js" "2.0.0" 195 | "@aws-sdk/config-resolver" "3.234.0" 196 | "@aws-sdk/credential-provider-node" "3.236.0" 197 | "@aws-sdk/fetch-http-handler" "3.226.0" 198 | "@aws-sdk/hash-node" "3.226.0" 199 | "@aws-sdk/invalid-dependency" "3.226.0" 200 | "@aws-sdk/middleware-content-length" "3.226.0" 201 | "@aws-sdk/middleware-endpoint" "3.226.0" 202 | "@aws-sdk/middleware-host-header" "3.226.0" 203 | "@aws-sdk/middleware-logger" "3.226.0" 204 | "@aws-sdk/middleware-recursion-detection" "3.226.0" 205 | "@aws-sdk/middleware-retry" "3.235.0" 206 | "@aws-sdk/middleware-sdk-sts" "3.226.0" 207 | "@aws-sdk/middleware-serde" "3.226.0" 208 | "@aws-sdk/middleware-signing" "3.226.0" 209 | "@aws-sdk/middleware-stack" "3.226.0" 210 | "@aws-sdk/middleware-user-agent" "3.226.0" 211 | "@aws-sdk/node-config-provider" "3.226.0" 212 | "@aws-sdk/node-http-handler" "3.226.0" 213 | "@aws-sdk/protocol-http" "3.226.0" 214 | "@aws-sdk/smithy-client" "3.234.0" 215 | "@aws-sdk/types" "3.226.0" 216 | "@aws-sdk/url-parser" "3.226.0" 217 | "@aws-sdk/util-base64" "3.208.0" 218 | "@aws-sdk/util-body-length-browser" "3.188.0" 219 | "@aws-sdk/util-body-length-node" "3.208.0" 220 | "@aws-sdk/util-defaults-mode-browser" "3.234.0" 221 | "@aws-sdk/util-defaults-mode-node" "3.234.0" 222 | "@aws-sdk/util-endpoints" "3.226.0" 223 | "@aws-sdk/util-retry" "3.229.0" 224 | "@aws-sdk/util-user-agent-browser" "3.226.0" 225 | "@aws-sdk/util-user-agent-node" "3.226.0" 226 | "@aws-sdk/util-utf8-browser" "3.188.0" 227 | "@aws-sdk/util-utf8-node" "3.208.0" 228 | fast-xml-parser "4.0.11" 229 | tslib "^2.3.1" 230 | 231 | "@aws-sdk/config-resolver@3.234.0": 232 | version "3.234.0" 233 | resolved "https://registry.yarnpkg.com/@aws-sdk/config-resolver/-/config-resolver-3.234.0.tgz#29d8936b713b7ee59b26b335d4f6715d644fc089" 234 | integrity sha512-uZxy4wzllfvgCQxVc+Iqhde0NGAnfmV2hWR6ejadJaAFTuYNvQiRg9IqJy3pkyDPqXySiJ8Bom5PoJfgn55J/A== 235 | dependencies: 236 | "@aws-sdk/signature-v4" "3.226.0" 237 | "@aws-sdk/types" "3.226.0" 238 | "@aws-sdk/util-config-provider" "3.208.0" 239 | "@aws-sdk/util-middleware" "3.226.0" 240 | tslib "^2.3.1" 241 | 242 | "@aws-sdk/credential-provider-cognito-identity@3.236.0": 243 | version "3.236.0" 244 | resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.236.0.tgz#7936ce9a7ceaeff9045d85b3e69af9865c467bfc" 245 | integrity sha512-PDsUZ7gmSCwraDDYnmoSkmrA1tpmvDBDjNPUVe6E+/8tDw3SWiL2efGR6r8ajFh9m+6jF6B8Wy+YB3u3yjAjWQ== 246 | dependencies: 247 | "@aws-sdk/client-cognito-identity" "3.236.0" 248 | "@aws-sdk/property-provider" "3.226.0" 249 | "@aws-sdk/types" "3.226.0" 250 | tslib "^2.3.1" 251 | 252 | "@aws-sdk/credential-provider-env@3.226.0": 253 | version "3.226.0" 254 | resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.226.0.tgz#0bcb89a9abc166b3a48f5c255b9fcabc4cb80daf" 255 | integrity sha512-sd8uK1ojbXxaZXlthzw/VXZwCPUtU3PjObOfr3Evj7MPIM2IH8h29foOlggx939MdLQGboJf9gKvLlvKDWtJRA== 256 | dependencies: 257 | "@aws-sdk/property-provider" "3.226.0" 258 | "@aws-sdk/types" "3.226.0" 259 | tslib "^2.3.1" 260 | 261 | "@aws-sdk/credential-provider-imds@3.226.0": 262 | version "3.226.0" 263 | resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.226.0.tgz#0a4558449eb261412b0490ea1c3242eb91659759" 264 | integrity sha512-//z/COQm2AjYFI1Lb0wKHTQSrvLFTyuKLFQGPJsKS7DPoxGOCKB7hmYerlbl01IDoCxTdyL//TyyPxbZEOQD5Q== 265 | dependencies: 266 | "@aws-sdk/node-config-provider" "3.226.0" 267 | "@aws-sdk/property-provider" "3.226.0" 268 | "@aws-sdk/types" "3.226.0" 269 | "@aws-sdk/url-parser" "3.226.0" 270 | tslib "^2.3.1" 271 | 272 | "@aws-sdk/credential-provider-ini@3.236.0": 273 | version "3.236.0" 274 | resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.236.0.tgz#10270be0de0cd34b1a82187248ade3779ff02005" 275 | integrity sha512-W5vMEauWgFCzvf4Hks6ToU5dhbN87gyijmwp/l9AkKKvuJ25LkveAhk8xz3bydJThHdgWNEuBMyfmlVWmdybIg== 276 | dependencies: 277 | "@aws-sdk/credential-provider-env" "3.226.0" 278 | "@aws-sdk/credential-provider-imds" "3.226.0" 279 | "@aws-sdk/credential-provider-process" "3.226.0" 280 | "@aws-sdk/credential-provider-sso" "3.236.0" 281 | "@aws-sdk/credential-provider-web-identity" "3.226.0" 282 | "@aws-sdk/property-provider" "3.226.0" 283 | "@aws-sdk/shared-ini-file-loader" "3.226.0" 284 | "@aws-sdk/types" "3.226.0" 285 | tslib "^2.3.1" 286 | 287 | "@aws-sdk/credential-provider-node@3.236.0": 288 | version "3.236.0" 289 | resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.236.0.tgz#288f10f65c8b94d8f20f431e77febbe6c285ab42" 290 | integrity sha512-ktRPwmqw2P4dDzs/nJYTnuesSYqpDUEtqm2KSCKNT/fobzgfsrESLk3a7TY4l6N3muxQtKwguIa9Lulhe82+wg== 291 | dependencies: 292 | "@aws-sdk/credential-provider-env" "3.226.0" 293 | "@aws-sdk/credential-provider-imds" "3.226.0" 294 | "@aws-sdk/credential-provider-ini" "3.236.0" 295 | "@aws-sdk/credential-provider-process" "3.226.0" 296 | "@aws-sdk/credential-provider-sso" "3.236.0" 297 | "@aws-sdk/credential-provider-web-identity" "3.226.0" 298 | "@aws-sdk/property-provider" "3.226.0" 299 | "@aws-sdk/shared-ini-file-loader" "3.226.0" 300 | "@aws-sdk/types" "3.226.0" 301 | tslib "^2.3.1" 302 | 303 | "@aws-sdk/credential-provider-process@3.226.0": 304 | version "3.226.0" 305 | resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.226.0.tgz#bcd73a6d31d1b3181917d56e54aacbee242b077f" 306 | integrity sha512-iUDMdnrTvbvaCFhWwqyXrhvQ9+ojPqPqXhwZtY1X/Qaz+73S9gXBPJHZaZb2Ke0yKE1Ql3bJbKvmmxC/qLQMng== 307 | dependencies: 308 | "@aws-sdk/property-provider" "3.226.0" 309 | "@aws-sdk/shared-ini-file-loader" "3.226.0" 310 | "@aws-sdk/types" "3.226.0" 311 | tslib "^2.3.1" 312 | 313 | "@aws-sdk/credential-provider-sso@3.236.0": 314 | version "3.236.0" 315 | resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.236.0.tgz#98deadb0b689546bd5e93fc73dc6d6c87fe1c562" 316 | integrity sha512-HLeVsFHd8QLQwhjwhdlBhXOFIa33mzqmxOqe2Qr4FVD5IR1/G4zLpSWSwtYjpvWRZs2oWSg6XI7vSyeQttPmHg== 317 | dependencies: 318 | "@aws-sdk/client-sso" "3.236.0" 319 | "@aws-sdk/property-provider" "3.226.0" 320 | "@aws-sdk/shared-ini-file-loader" "3.226.0" 321 | "@aws-sdk/token-providers" "3.236.0" 322 | "@aws-sdk/types" "3.226.0" 323 | tslib "^2.3.1" 324 | 325 | "@aws-sdk/credential-provider-web-identity@3.226.0": 326 | version "3.226.0" 327 | resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.226.0.tgz#2b7d20f93a40e2243c7e3857f54b103d19a946fb" 328 | integrity sha512-CCpv847rLB0SFOHz2igvUMFAzeT2fD3YnY4C8jltuJoEkn0ITn1Hlgt13nTJ5BUuvyti2mvyXZHmNzhMIMrIlw== 329 | dependencies: 330 | "@aws-sdk/property-provider" "3.226.0" 331 | "@aws-sdk/types" "3.226.0" 332 | tslib "^2.3.1" 333 | 334 | "@aws-sdk/credential-providers@^3.186.0": 335 | version "3.236.0" 336 | resolved "https://registry.yarnpkg.com/@aws-sdk/credential-providers/-/credential-providers-3.236.0.tgz#52c6f0e5baa1f0eab1f39171b47102806809d504" 337 | integrity sha512-z7RU5E9xlk6KX16jJxByn8xa8mv8pPZoqAPkavCsFJS6pOYTtQJYYdjrUK/2EmOmbPpc62P6mqVP7qTVQKgafw== 338 | dependencies: 339 | "@aws-sdk/client-cognito-identity" "3.236.0" 340 | "@aws-sdk/client-sso" "3.236.0" 341 | "@aws-sdk/client-sts" "3.236.0" 342 | "@aws-sdk/credential-provider-cognito-identity" "3.236.0" 343 | "@aws-sdk/credential-provider-env" "3.226.0" 344 | "@aws-sdk/credential-provider-imds" "3.226.0" 345 | "@aws-sdk/credential-provider-ini" "3.236.0" 346 | "@aws-sdk/credential-provider-node" "3.236.0" 347 | "@aws-sdk/credential-provider-process" "3.226.0" 348 | "@aws-sdk/credential-provider-sso" "3.236.0" 349 | "@aws-sdk/credential-provider-web-identity" "3.226.0" 350 | "@aws-sdk/property-provider" "3.226.0" 351 | "@aws-sdk/shared-ini-file-loader" "3.226.0" 352 | "@aws-sdk/types" "3.226.0" 353 | tslib "^2.3.1" 354 | 355 | "@aws-sdk/fetch-http-handler@3.226.0": 356 | version "3.226.0" 357 | resolved "https://registry.yarnpkg.com/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.226.0.tgz#350f78fc18fe9cb0a889ef4870838a8fcfa8855c" 358 | integrity sha512-JewZPMNEBXfi1xVnRa7pVtK/zgZD8/lQ/YnD8pq79WuMa2cwyhDtr8oqCoqsPW+WJT5ScXoMtuHxN78l8eKWgg== 359 | dependencies: 360 | "@aws-sdk/protocol-http" "3.226.0" 361 | "@aws-sdk/querystring-builder" "3.226.0" 362 | "@aws-sdk/types" "3.226.0" 363 | "@aws-sdk/util-base64" "3.208.0" 364 | tslib "^2.3.1" 365 | 366 | "@aws-sdk/hash-node@3.226.0": 367 | version "3.226.0" 368 | resolved "https://registry.yarnpkg.com/@aws-sdk/hash-node/-/hash-node-3.226.0.tgz#252d98bcbb1e13c8f26d9d416db03cf8cceac185" 369 | integrity sha512-MdlJhJ9/Espwd0+gUXdZRsHuostB2WxEVAszWxobP0FTT9PnicqnfK7ExmW+DUAc0ywxtEbR3e0UND65rlSTVw== 370 | dependencies: 371 | "@aws-sdk/types" "3.226.0" 372 | "@aws-sdk/util-buffer-from" "3.208.0" 373 | tslib "^2.3.1" 374 | 375 | "@aws-sdk/invalid-dependency@3.226.0": 376 | version "3.226.0" 377 | resolved "https://registry.yarnpkg.com/@aws-sdk/invalid-dependency/-/invalid-dependency-3.226.0.tgz#74586f60859ed1813985e3d642066cc46d2e9d40" 378 | integrity sha512-QXOYFmap8g9QzRjumcRCIo2GEZkdCwd7ePQW0OABWPhKHzlJ74vvBxywjU3s39EEBEluWXtZ7Iufg6GxZM4ifw== 379 | dependencies: 380 | "@aws-sdk/types" "3.226.0" 381 | tslib "^2.3.1" 382 | 383 | "@aws-sdk/is-array-buffer@3.201.0": 384 | version "3.201.0" 385 | resolved "https://registry.yarnpkg.com/@aws-sdk/is-array-buffer/-/is-array-buffer-3.201.0.tgz#06e557adc284fac2f26071c2944ae01f61b95854" 386 | integrity sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg== 387 | dependencies: 388 | tslib "^2.3.1" 389 | 390 | "@aws-sdk/middleware-content-length@3.226.0": 391 | version "3.226.0" 392 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-content-length/-/middleware-content-length-3.226.0.tgz#6cc952049f6e3cdc3a3778c9dce9f2aee942b5fe" 393 | integrity sha512-ksUzlHJN2JMuyavjA46a4sctvnrnITqt2tbGGWWrAuXY1mel2j+VbgnmJUiwHKUO6bTFBBeft5Vd1TSOb4JmiA== 394 | dependencies: 395 | "@aws-sdk/protocol-http" "3.226.0" 396 | "@aws-sdk/types" "3.226.0" 397 | tslib "^2.3.1" 398 | 399 | "@aws-sdk/middleware-endpoint@3.226.0": 400 | version "3.226.0" 401 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.226.0.tgz#d776480be4b5a9534c2805b7425be05497f840b7" 402 | integrity sha512-EvLFafjtUxTT0AC9p3aBQu1/fjhWdIeK58jIXaNFONfZ3F8QbEYUPuF/SqZvJM6cWfOO9qwYKkRDbCSTYhprIg== 403 | dependencies: 404 | "@aws-sdk/middleware-serde" "3.226.0" 405 | "@aws-sdk/protocol-http" "3.226.0" 406 | "@aws-sdk/signature-v4" "3.226.0" 407 | "@aws-sdk/types" "3.226.0" 408 | "@aws-sdk/url-parser" "3.226.0" 409 | "@aws-sdk/util-config-provider" "3.208.0" 410 | "@aws-sdk/util-middleware" "3.226.0" 411 | tslib "^2.3.1" 412 | 413 | "@aws-sdk/middleware-host-header@3.226.0": 414 | version "3.226.0" 415 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.226.0.tgz#1e1ecb034929e0dbc532ae501fd93781438f9a24" 416 | integrity sha512-haVkWVh6BUPwKgWwkL6sDvTkcZWvJjv8AgC8jiQuSl8GLZdzHTB8Qhi3IsfFta9HAuoLjxheWBE5Z/L0UrfhLA== 417 | dependencies: 418 | "@aws-sdk/protocol-http" "3.226.0" 419 | "@aws-sdk/types" "3.226.0" 420 | tslib "^2.3.1" 421 | 422 | "@aws-sdk/middleware-logger@3.226.0": 423 | version "3.226.0" 424 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.226.0.tgz#37fd0e62f555befd526b03748c3aab60dcefecf3" 425 | integrity sha512-m9gtLrrYnpN6yckcQ09rV7ExWOLMuq8mMPF/K3DbL/YL0TuILu9i2T1W+JuxSX+K9FMG2HrLAKivE/kMLr55xA== 426 | dependencies: 427 | "@aws-sdk/types" "3.226.0" 428 | tslib "^2.3.1" 429 | 430 | "@aws-sdk/middleware-recursion-detection@3.226.0": 431 | version "3.226.0" 432 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.226.0.tgz#e149b9138e94d2fa70e7752ba6b1ccb537009706" 433 | integrity sha512-mwRbdKEUeuNH5TEkyZ5FWxp6bL2UC1WbY+LDv6YjHxmSMKpAoOueEdtU34PqDOLrpXXxIGHDFmjeGeMfktyEcA== 434 | dependencies: 435 | "@aws-sdk/protocol-http" "3.226.0" 436 | "@aws-sdk/types" "3.226.0" 437 | tslib "^2.3.1" 438 | 439 | "@aws-sdk/middleware-retry@3.235.0": 440 | version "3.235.0" 441 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-retry/-/middleware-retry-3.235.0.tgz#c0d938db85a771812204ed5e981eaf5eef6b580b" 442 | integrity sha512-50WHbJGpD3SNp9763MAlHqIhXil++JdQbKejNpHg7HsJne/ao3ub+fDOfx//mMBjpzBV25BGd5UlfL6blrClSg== 443 | dependencies: 444 | "@aws-sdk/protocol-http" "3.226.0" 445 | "@aws-sdk/service-error-classification" "3.229.0" 446 | "@aws-sdk/types" "3.226.0" 447 | "@aws-sdk/util-middleware" "3.226.0" 448 | "@aws-sdk/util-retry" "3.229.0" 449 | tslib "^2.3.1" 450 | uuid "^8.3.2" 451 | 452 | "@aws-sdk/middleware-sdk-sts@3.226.0": 453 | version "3.226.0" 454 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.226.0.tgz#e8a8cf42bba8963259546120cde1e408628863f9" 455 | integrity sha512-NN9T/qoSD1kZvAT+VLny3NnlqgylYQcsgV3rvi/8lYzw/G/2s8VS6sm/VTWGGZhx08wZRv20MWzYu3bftcyqUg== 456 | dependencies: 457 | "@aws-sdk/middleware-signing" "3.226.0" 458 | "@aws-sdk/property-provider" "3.226.0" 459 | "@aws-sdk/protocol-http" "3.226.0" 460 | "@aws-sdk/signature-v4" "3.226.0" 461 | "@aws-sdk/types" "3.226.0" 462 | tslib "^2.3.1" 463 | 464 | "@aws-sdk/middleware-serde@3.226.0": 465 | version "3.226.0" 466 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-serde/-/middleware-serde-3.226.0.tgz#c837ef33b34bec2af19a1c177a0c02a1ae20da5e" 467 | integrity sha512-nPuOOAkSfx9TxzdKFx0X2bDlinOxGrqD7iof926K/AEflxGD1DBdcaDdjlYlPDW2CVE8LV/rAgbYuLxh/E/1VA== 468 | dependencies: 469 | "@aws-sdk/types" "3.226.0" 470 | tslib "^2.3.1" 471 | 472 | "@aws-sdk/middleware-signing@3.226.0": 473 | version "3.226.0" 474 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-signing/-/middleware-signing-3.226.0.tgz#ebb1d142ac2767466f2e464bb7dba9837143b4d1" 475 | integrity sha512-E6HmtPcl+IjYDDzi1xI2HpCbBq2avNWcjvCriMZWuTAtRVpnA6XDDGW5GY85IfS3A8G8vuWqEVPr8JcYUcjfew== 476 | dependencies: 477 | "@aws-sdk/property-provider" "3.226.0" 478 | "@aws-sdk/protocol-http" "3.226.0" 479 | "@aws-sdk/signature-v4" "3.226.0" 480 | "@aws-sdk/types" "3.226.0" 481 | "@aws-sdk/util-middleware" "3.226.0" 482 | tslib "^2.3.1" 483 | 484 | "@aws-sdk/middleware-stack@3.226.0": 485 | version "3.226.0" 486 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-stack/-/middleware-stack-3.226.0.tgz#b0408370270188103987c457c758f9cf7651754f" 487 | integrity sha512-85wF29LvPvpoed60fZGDYLwv1Zpd/cM0C22WSSFPw1SSJeqO4gtFYyCg2squfT3KI6kF43IIkOCJ+L7GtryPug== 488 | dependencies: 489 | tslib "^2.3.1" 490 | 491 | "@aws-sdk/middleware-user-agent@3.226.0": 492 | version "3.226.0" 493 | resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.226.0.tgz#26653189f3e8da86514f77688a80d0ad445c0799" 494 | integrity sha512-N1WnfzCW1Y5yWhVAphf8OPGTe8Df3vmV7/LdsoQfmpkCZgLZeK2o0xITkUQhRj1mbw7yp8tVFLFV3R2lMurdAQ== 495 | dependencies: 496 | "@aws-sdk/protocol-http" "3.226.0" 497 | "@aws-sdk/types" "3.226.0" 498 | tslib "^2.3.1" 499 | 500 | "@aws-sdk/node-config-provider@3.226.0": 501 | version "3.226.0" 502 | resolved "https://registry.yarnpkg.com/@aws-sdk/node-config-provider/-/node-config-provider-3.226.0.tgz#a9e21512ef824142bb928a0b2f85b39a75b8964d" 503 | integrity sha512-B8lQDqiRk7X5izFEUMXmi8CZLOKCTWQJU9HQf3ako+sF0gexo4nHN3jhoRWyLtcgC5S3on/2jxpAcqtm7kuY3w== 504 | dependencies: 505 | "@aws-sdk/property-provider" "3.226.0" 506 | "@aws-sdk/shared-ini-file-loader" "3.226.0" 507 | "@aws-sdk/types" "3.226.0" 508 | tslib "^2.3.1" 509 | 510 | "@aws-sdk/node-http-handler@3.226.0": 511 | version "3.226.0" 512 | resolved "https://registry.yarnpkg.com/@aws-sdk/node-http-handler/-/node-http-handler-3.226.0.tgz#373886e949d214a99a3521bd6c141fa17b0e89fe" 513 | integrity sha512-xQCddnZNMiPmjr3W7HYM+f5ir4VfxgJh37eqZwX6EZmyItFpNNeVzKUgA920ka1VPz/ZUYB+2OFGiX3LCLkkaA== 514 | dependencies: 515 | "@aws-sdk/abort-controller" "3.226.0" 516 | "@aws-sdk/protocol-http" "3.226.0" 517 | "@aws-sdk/querystring-builder" "3.226.0" 518 | "@aws-sdk/types" "3.226.0" 519 | tslib "^2.3.1" 520 | 521 | "@aws-sdk/property-provider@3.226.0": 522 | version "3.226.0" 523 | resolved "https://registry.yarnpkg.com/@aws-sdk/property-provider/-/property-provider-3.226.0.tgz#ef0ff37c319dc37a52f08fa7544f861308a3bbd8" 524 | integrity sha512-TsljjG+Sg0LmdgfiAlWohluWKnxB/k8xenjeozZfzOr5bHmNHtdbWv6BtNvD/R83hw7SFXxbJHlD5H4u9p2NFg== 525 | dependencies: 526 | "@aws-sdk/types" "3.226.0" 527 | tslib "^2.3.1" 528 | 529 | "@aws-sdk/protocol-http@3.226.0": 530 | version "3.226.0" 531 | resolved "https://registry.yarnpkg.com/@aws-sdk/protocol-http/-/protocol-http-3.226.0.tgz#0af7bdc331508e556b722aad0cb78eefa93466e3" 532 | integrity sha512-zWkVqiTA9RXL6y0hhfZc9bcU4DX2NI6Hw9IhQmSPeM59mdbPjJlY4bLlMr5YxywqO3yQ/ylNoAfrEzrDjlOSRg== 533 | dependencies: 534 | "@aws-sdk/types" "3.226.0" 535 | tslib "^2.3.1" 536 | 537 | "@aws-sdk/querystring-builder@3.226.0": 538 | version "3.226.0" 539 | resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-builder/-/querystring-builder-3.226.0.tgz#11cd751abeac66f1f9349225454bac3e39808926" 540 | integrity sha512-LVurypuNeotO4lmirKXRC4NYrZRAyMJXuwO0f2a5ZAUJCjauwYrifKue6yCfU7bls7gut7nfcR6B99WBYpHs3g== 541 | dependencies: 542 | "@aws-sdk/types" "3.226.0" 543 | "@aws-sdk/util-uri-escape" "3.201.0" 544 | tslib "^2.3.1" 545 | 546 | "@aws-sdk/querystring-parser@3.226.0": 547 | version "3.226.0" 548 | resolved "https://registry.yarnpkg.com/@aws-sdk/querystring-parser/-/querystring-parser-3.226.0.tgz#ba6a26727c98d46c95180e6cdc463039c5e4740d" 549 | integrity sha512-FzB+VrQ47KAFxiPt2YXrKZ8AOLZQqGTLCKHzx4bjxGmwgsjV8yIbtJiJhZLMcUQV4LtGeIY9ixIqQhGvnZHE4A== 550 | dependencies: 551 | "@aws-sdk/types" "3.226.0" 552 | tslib "^2.3.1" 553 | 554 | "@aws-sdk/service-error-classification@3.229.0": 555 | version "3.229.0" 556 | resolved "https://registry.yarnpkg.com/@aws-sdk/service-error-classification/-/service-error-classification-3.229.0.tgz#768f1eb92775ca2cc99c6451a2303a0008a28fc1" 557 | integrity sha512-dnzWWQ0/NoWMUZ5C0DW3dPm0wC1O76Y/SpKbuJzWPkx1EYy6r8p32Ly4D9vUzrKDbRGf48YHIF2kOkBmu21CLg== 558 | 559 | "@aws-sdk/shared-ini-file-loader@3.226.0": 560 | version "3.226.0" 561 | resolved "https://registry.yarnpkg.com/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.226.0.tgz#d0ade86834b1803ce4b9dcab459e57e0376fd6cf" 562 | integrity sha512-661VQefsARxVyyV2FX9V61V+nNgImk7aN2hYlFKla6BCwZfMng+dEtD0xVGyg1PfRw0qvEv5LQyxMVgHcUSevA== 563 | dependencies: 564 | "@aws-sdk/types" "3.226.0" 565 | tslib "^2.3.1" 566 | 567 | "@aws-sdk/signature-v4@3.226.0": 568 | version "3.226.0" 569 | resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4/-/signature-v4-3.226.0.tgz#100390b5c5b55a9b0abd05b06fceb36cfa0ecf98" 570 | integrity sha512-/R5q5agdPd7HJB68XMzpxrNPk158EHUvkFkuRu5Qf3kkkHebEzWEBlWoVpUe6ss4rP9Tqcue6xPuaftEmhjpYw== 571 | dependencies: 572 | "@aws-sdk/is-array-buffer" "3.201.0" 573 | "@aws-sdk/types" "3.226.0" 574 | "@aws-sdk/util-hex-encoding" "3.201.0" 575 | "@aws-sdk/util-middleware" "3.226.0" 576 | "@aws-sdk/util-uri-escape" "3.201.0" 577 | tslib "^2.3.1" 578 | 579 | "@aws-sdk/smithy-client@3.234.0": 580 | version "3.234.0" 581 | resolved "https://registry.yarnpkg.com/@aws-sdk/smithy-client/-/smithy-client-3.234.0.tgz#8f0021e021f0e52730ed0a8f271f839eb63bc374" 582 | integrity sha512-8AtR/k4vsFvjXeQbIzq/Wy7Nbk48Ou0wUEeVYPHWHPSU8QamFWORkOwmKtKMfHAyZvmqiAPeQqHFkq+UJhWyyQ== 583 | dependencies: 584 | "@aws-sdk/middleware-stack" "3.226.0" 585 | "@aws-sdk/types" "3.226.0" 586 | tslib "^2.3.1" 587 | 588 | "@aws-sdk/token-providers@3.236.0": 589 | version "3.236.0" 590 | resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.236.0.tgz#c98ad2abad2a3686dbe849d680572f11ce965605" 591 | integrity sha512-gmHuWuQgl6+2UfdbOvtsns/byZQnPGjyQ88/SlKgnX2EcDd31ENb8wRa9gfIEwvx6rTB2ve1NAhuliydB9AomQ== 592 | dependencies: 593 | "@aws-sdk/client-sso-oidc" "3.236.0" 594 | "@aws-sdk/property-provider" "3.226.0" 595 | "@aws-sdk/shared-ini-file-loader" "3.226.0" 596 | "@aws-sdk/types" "3.226.0" 597 | tslib "^2.3.1" 598 | 599 | "@aws-sdk/types@3.226.0", "@aws-sdk/types@^3.1.0", "@aws-sdk/types@^3.110.0": 600 | version "3.226.0" 601 | resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.226.0.tgz#3dba2ba223fbb8ac1ebc84de0e036ce69a81d469" 602 | integrity sha512-MmmNHrWeO4man7wpOwrAhXlevqtOV9ZLcH4RhnG5LmRce0RFOApx24HoKENfFCcOyCm5LQBlsXCqi0dZWDWU0A== 603 | dependencies: 604 | tslib "^2.3.1" 605 | 606 | "@aws-sdk/url-parser@3.226.0": 607 | version "3.226.0" 608 | resolved "https://registry.yarnpkg.com/@aws-sdk/url-parser/-/url-parser-3.226.0.tgz#f53d1f868b27fe74aca091a799f2af56237b15a2" 609 | integrity sha512-p5RLE0QWyP0OcTOLmFcLdVgUcUEzmEfmdrnOxyNzomcYb0p3vUagA5zfa1HVK2azsQJFBv28GfvMnba9bGhObg== 610 | dependencies: 611 | "@aws-sdk/querystring-parser" "3.226.0" 612 | "@aws-sdk/types" "3.226.0" 613 | tslib "^2.3.1" 614 | 615 | "@aws-sdk/util-base64@3.208.0": 616 | version "3.208.0" 617 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-base64/-/util-base64-3.208.0.tgz#36b430e5396251f761590f7c2f0c5c12193f353c" 618 | integrity sha512-PQniZph5A6N7uuEOQi+1hnMz/FSOK/8kMFyFO+4DgA1dZ5pcKcn5wiFwHkcTb/BsgVqQa3Jx0VHNnvhlS8JyTg== 619 | dependencies: 620 | "@aws-sdk/util-buffer-from" "3.208.0" 621 | tslib "^2.3.1" 622 | 623 | "@aws-sdk/util-body-length-browser@3.188.0": 624 | version "3.188.0" 625 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.188.0.tgz#e1d949318c10a621b38575a9ef01e39f9857ddb0" 626 | integrity sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg== 627 | dependencies: 628 | tslib "^2.3.1" 629 | 630 | "@aws-sdk/util-body-length-node@3.208.0": 631 | version "3.208.0" 632 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-body-length-node/-/util-body-length-node-3.208.0.tgz#baabd1fa1206ff2bd4ce3785122d86eb3258dd20" 633 | integrity sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg== 634 | dependencies: 635 | tslib "^2.3.1" 636 | 637 | "@aws-sdk/util-buffer-from@3.208.0": 638 | version "3.208.0" 639 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-buffer-from/-/util-buffer-from-3.208.0.tgz#285e86f6dc9030148a4147d65239e75cb254a1b0" 640 | integrity sha512-7L0XUixNEFcLUGPeBF35enCvB9Xl+K6SQsmbrPk1P3mlV9mguWSDQqbOBwY1Ir0OVbD6H/ZOQU7hI/9RtRI0Zw== 641 | dependencies: 642 | "@aws-sdk/is-array-buffer" "3.201.0" 643 | tslib "^2.3.1" 644 | 645 | "@aws-sdk/util-config-provider@3.208.0": 646 | version "3.208.0" 647 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-config-provider/-/util-config-provider-3.208.0.tgz#c485fd83fbac051337e5f6be60ea3f9fa61c0139" 648 | integrity sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg== 649 | dependencies: 650 | tslib "^2.3.1" 651 | 652 | "@aws-sdk/util-defaults-mode-browser@3.234.0": 653 | version "3.234.0" 654 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.234.0.tgz#1151f0beabdb46c1aaca42a1ad0714b8e686acaa" 655 | integrity sha512-IHMKXjTbOD8XMz5+2oCOsVP94BYb9YyjXdns0aAXr2NAo7k2+RCzXQ2DebJXppGda1F6opFutoKwyVSN0cmbMw== 656 | dependencies: 657 | "@aws-sdk/property-provider" "3.226.0" 658 | "@aws-sdk/types" "3.226.0" 659 | bowser "^2.11.0" 660 | tslib "^2.3.1" 661 | 662 | "@aws-sdk/util-defaults-mode-node@3.234.0": 663 | version "3.234.0" 664 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.234.0.tgz#0607f1dc7a4dc896dfcaf377522535ca9ffba7a9" 665 | integrity sha512-UGjQ+OjBYYhxFVtUY+jtr0ZZgzZh6OHtYwRhFt8IHewJXFCfZTyfsbX20szBj5y1S4HRIUJ7cwBLIytTqMbI5w== 666 | dependencies: 667 | "@aws-sdk/config-resolver" "3.234.0" 668 | "@aws-sdk/credential-provider-imds" "3.226.0" 669 | "@aws-sdk/node-config-provider" "3.226.0" 670 | "@aws-sdk/property-provider" "3.226.0" 671 | "@aws-sdk/types" "3.226.0" 672 | tslib "^2.3.1" 673 | 674 | "@aws-sdk/util-endpoints@3.226.0": 675 | version "3.226.0" 676 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.226.0.tgz#3728b2e30f6f757ae862a0b7cf3991e75f252c3f" 677 | integrity sha512-iqOkac/zLmyPBUJd7SLN0PeZMkOmlGgD5PHmmekTClOkce2eUjK9SNX1PzL73aXPoPTyhg9QGLH8uEZEQ8YUzg== 678 | dependencies: 679 | "@aws-sdk/types" "3.226.0" 680 | tslib "^2.3.1" 681 | 682 | "@aws-sdk/util-hex-encoding@3.201.0": 683 | version "3.201.0" 684 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.201.0.tgz#21d7ec319240ee68c33d938e71cb79830bea315d" 685 | integrity sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA== 686 | dependencies: 687 | tslib "^2.3.1" 688 | 689 | "@aws-sdk/util-locate-window@^3.0.0": 690 | version "3.208.0" 691 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.208.0.tgz#0f598fc238a1256e4bcb64d01459f03a922dd4c3" 692 | integrity sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg== 693 | dependencies: 694 | tslib "^2.3.1" 695 | 696 | "@aws-sdk/util-middleware@3.226.0": 697 | version "3.226.0" 698 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-middleware/-/util-middleware-3.226.0.tgz#7069ae96e2e00f6bb82c722e073922fb2b051ca2" 699 | integrity sha512-B96CQnwX4gRvQdaQkdUtqvDPkrptV5+va6FVeJOocU/DbSYMAScLxtR3peMS8cnlOT6nL1Eoa42OI9AfZz1VwQ== 700 | dependencies: 701 | tslib "^2.3.1" 702 | 703 | "@aws-sdk/util-retry@3.229.0": 704 | version "3.229.0" 705 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-retry/-/util-retry-3.229.0.tgz#17aad47b067e81acf644d5c2c0f2325f2d8faf4f" 706 | integrity sha512-0zKTqi0P1inD0LzIMuXRIYYQ/8c1lWMg/cfiqUcIAF1TpatlpZuN7umU0ierpBFud7S+zDgg0oemh+Nj8xliJw== 707 | dependencies: 708 | "@aws-sdk/service-error-classification" "3.229.0" 709 | tslib "^2.3.1" 710 | 711 | "@aws-sdk/util-uri-escape@3.201.0": 712 | version "3.201.0" 713 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-uri-escape/-/util-uri-escape-3.201.0.tgz#5e708d4cde001a4558ee616f889ceacfadd2ab03" 714 | integrity sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA== 715 | dependencies: 716 | tslib "^2.3.1" 717 | 718 | "@aws-sdk/util-user-agent-browser@3.226.0": 719 | version "3.226.0" 720 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.226.0.tgz#164bb2da8d6353133784e47f0a0ae463bc9ebb73" 721 | integrity sha512-PhBIu2h6sPJPcv2I7ELfFizdl5pNiL4LfxrasMCYXQkJvVnoXztHA1x+CQbXIdtZOIlpjC+6BjDcE0uhnpvfcA== 722 | dependencies: 723 | "@aws-sdk/types" "3.226.0" 724 | bowser "^2.11.0" 725 | tslib "^2.3.1" 726 | 727 | "@aws-sdk/util-user-agent-node@3.226.0": 728 | version "3.226.0" 729 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.226.0.tgz#7569460b9efc6bbd5295275c51357e480ff469c2" 730 | integrity sha512-othPc5Dz/pkYkxH+nZPhc1Al0HndQT8zHD4e9h+EZ+8lkd8n+IsnLfTS/mSJWrfiC6UlNRVw55cItstmJyMe/A== 731 | dependencies: 732 | "@aws-sdk/node-config-provider" "3.226.0" 733 | "@aws-sdk/types" "3.226.0" 734 | tslib "^2.3.1" 735 | 736 | "@aws-sdk/util-utf8-browser@3.188.0", "@aws-sdk/util-utf8-browser@^3.0.0": 737 | version "3.188.0" 738 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.188.0.tgz#484762bd600401350e148277731d6744a4a92225" 739 | integrity sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q== 740 | dependencies: 741 | tslib "^2.3.1" 742 | 743 | "@aws-sdk/util-utf8-node@3.208.0": 744 | version "3.208.0" 745 | resolved "https://registry.yarnpkg.com/@aws-sdk/util-utf8-node/-/util-utf8-node-3.208.0.tgz#eba17de0f92f87b98481c2e2d0ceaa05c7994d67" 746 | integrity sha512-jKY87Acv0yWBdFxx6bveagy5FYjz+dtV8IPT7ay1E2WPWH1czoIdMAkc8tSInK31T6CRnHWkLZ1qYwCbgRfERQ== 747 | dependencies: 748 | "@aws-sdk/util-buffer-from" "3.208.0" 749 | tslib "^2.3.1" 750 | 751 | "@babel/code-frame@7.12.11": 752 | version "7.12.11" 753 | resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" 754 | integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== 755 | dependencies: 756 | "@babel/highlight" "^7.10.4" 757 | 758 | "@babel/helper-validator-identifier@^7.18.6": 759 | version "7.19.1" 760 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" 761 | integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== 762 | 763 | "@babel/highlight@^7.10.4": 764 | version "7.18.6" 765 | resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" 766 | integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== 767 | dependencies: 768 | "@babel/helper-validator-identifier" "^7.18.6" 769 | chalk "^2.0.0" 770 | js-tokens "^4.0.0" 771 | 772 | "@discordjs/builders@^1.4.0": 773 | version "1.4.0" 774 | resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-1.4.0.tgz#b951b5e6ce4e459cd06174ce50dbd51c254c1d47" 775 | integrity sha512-nEeTCheTTDw5kO93faM1j8ZJPonAX86qpq/QVoznnSa8WWcCgJpjlu6GylfINTDW6o7zZY0my2SYdxx2mfNwGA== 776 | dependencies: 777 | "@discordjs/util" "^0.1.0" 778 | "@sapphire/shapeshift" "^3.7.1" 779 | discord-api-types "^0.37.20" 780 | fast-deep-equal "^3.1.3" 781 | ts-mixer "^6.0.2" 782 | tslib "^2.4.1" 783 | 784 | "@discordjs/collection@^1.3.0": 785 | version "1.3.0" 786 | resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-1.3.0.tgz#65bf9674db72f38c25212be562bb28fa0dba6aa3" 787 | integrity sha512-ylt2NyZ77bJbRij4h9u/wVy7qYw/aDqQLWnadjvDqW/WoWCxrsX6M3CIw9GVP5xcGCDxsrKj5e0r5evuFYwrKg== 788 | 789 | "@discordjs/rest@^1.4.0": 790 | version "1.5.0" 791 | resolved "https://registry.yarnpkg.com/@discordjs/rest/-/rest-1.5.0.tgz#dc15474ab98cf6f31291bf61bbc72bcf4f30cea2" 792 | integrity sha512-lXgNFqHnbmzp5u81W0+frdXN6Etf4EUi8FAPcWpSykKd8hmlWh1xy6BmE0bsJypU1pxohaA8lQCgp70NUI3uzA== 793 | dependencies: 794 | "@discordjs/collection" "^1.3.0" 795 | "@discordjs/util" "^0.1.0" 796 | "@sapphire/async-queue" "^1.5.0" 797 | "@sapphire/snowflake" "^3.2.2" 798 | discord-api-types "^0.37.23" 799 | file-type "^18.0.0" 800 | tslib "^2.4.1" 801 | undici "^5.13.0" 802 | 803 | "@discordjs/util@^0.1.0": 804 | version "0.1.0" 805 | resolved "https://registry.yarnpkg.com/@discordjs/util/-/util-0.1.0.tgz#e42ca1bf407bc6d9adf252877d1b206e32ba369a" 806 | integrity sha512-e7d+PaTLVQav6rOc2tojh2y6FE8S7REkqLldq1XF4soCx74XB/DIjbVbVLtBemf0nLW77ntz0v+o5DytKwFNLQ== 807 | 808 | "@discordjs/voice@^0.14.0": 809 | version "0.14.0" 810 | resolved "https://registry.yarnpkg.com/@discordjs/voice/-/voice-0.14.0.tgz#8e5be1a76bb6c1e6e75236237f00241c763b2833" 811 | integrity sha512-/LV8LSFuJ1c4OEW1ubPg3al2QNpUpwX8ZL+KL+LORmnUFVCtehSaEh+38uDfWg1O/TgiGI5vOLj4ZKql43drcw== 812 | dependencies: 813 | "@types/ws" "^8.5.3" 814 | discord-api-types "^0.37.20" 815 | prism-media "^1.3.4" 816 | tslib "^2.4.1" 817 | ws "^8.11.0" 818 | 819 | "@eslint/eslintrc@^0.4.3": 820 | version "0.4.3" 821 | resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" 822 | integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== 823 | dependencies: 824 | ajv "^6.12.4" 825 | debug "^4.1.1" 826 | espree "^7.3.0" 827 | globals "^13.9.0" 828 | ignore "^4.0.6" 829 | import-fresh "^3.2.1" 830 | js-yaml "^3.13.1" 831 | minimatch "^3.0.4" 832 | strip-json-comments "^3.1.1" 833 | 834 | "@humanwhocodes/config-array@^0.5.0": 835 | version "0.5.0" 836 | resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" 837 | integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== 838 | dependencies: 839 | "@humanwhocodes/object-schema" "^1.2.0" 840 | debug "^4.1.1" 841 | minimatch "^3.0.4" 842 | 843 | "@humanwhocodes/object-schema@^1.2.0": 844 | version "1.2.1" 845 | resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" 846 | integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== 847 | 848 | "@sapphire/async-queue@^1.5.0": 849 | version "1.5.0" 850 | resolved "https://registry.yarnpkg.com/@sapphire/async-queue/-/async-queue-1.5.0.tgz#2f255a3f186635c4fb5a2381e375d3dfbc5312d8" 851 | integrity sha512-JkLdIsP8fPAdh9ZZjrbHWR/+mZj0wvKS5ICibcLrRI1j84UmLMshx5n9QmL8b95d4onJ2xxiyugTgSAX7AalmA== 852 | 853 | "@sapphire/shapeshift@^3.7.1": 854 | version "3.8.1" 855 | resolved "https://registry.yarnpkg.com/@sapphire/shapeshift/-/shapeshift-3.8.1.tgz#b98dc6a7180f9b38219267917b2e6fa33f9ec656" 856 | integrity sha512-xG1oXXBhCjPKbxrRTlox9ddaZTvVpOhYLmKmApD/vIWOV1xEYXnpoFs68zHIZBGbqztq6FrUPNPerIrO1Hqeaw== 857 | dependencies: 858 | fast-deep-equal "^3.1.3" 859 | lodash "^4.17.21" 860 | 861 | "@sapphire/snowflake@^3.2.2": 862 | version "3.3.0" 863 | resolved "https://registry.yarnpkg.com/@sapphire/snowflake/-/snowflake-3.3.0.tgz#247413e4d7924a9f508c6a5c8d427e4105ac0fe6" 864 | integrity sha512-Hec5N6zEkZuZFLybVKyLFLlcSgYmR6C1/+9NkIhxPwOf6tgX52ndJCSz8ADejmbrNE0VuNCNkpzhRZzenEC9vA== 865 | 866 | "@tokenizer/token@^0.3.0": 867 | version "0.3.0" 868 | resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" 869 | integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== 870 | 871 | "@types/node@*": 872 | version "18.11.17" 873 | resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.17.tgz#5c009e1d9c38f4a2a9d45c0b0c493fe6cdb4bcb5" 874 | integrity sha512-HJSUJmni4BeDHhfzn6nF0sVmd1SMezP7/4F0Lq+aXzmp2xm9O7WXrUtHW/CHlYVtZUbByEvWidHqRtcJXGF2Ng== 875 | 876 | "@types/webidl-conversions@*": 877 | version "7.0.0" 878 | resolved "https://registry.yarnpkg.com/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz#2b8e60e33906459219aa587e9d1a612ae994cfe7" 879 | integrity sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog== 880 | 881 | "@types/whatwg-url@^8.2.1": 882 | version "8.2.2" 883 | resolved "https://registry.yarnpkg.com/@types/whatwg-url/-/whatwg-url-8.2.2.tgz#749d5b3873e845897ada99be4448041d4cc39e63" 884 | integrity sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA== 885 | dependencies: 886 | "@types/node" "*" 887 | "@types/webidl-conversions" "*" 888 | 889 | "@types/ws@^8.5.3": 890 | version "8.5.3" 891 | resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d" 892 | integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w== 893 | dependencies: 894 | "@types/node" "*" 895 | 896 | acorn-jsx@^5.3.1: 897 | version "5.3.2" 898 | resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" 899 | integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== 900 | 901 | acorn@^7.4.0: 902 | version "7.4.1" 903 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" 904 | integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== 905 | 906 | ajv@^6.10.0, ajv@^6.12.4: 907 | version "6.12.6" 908 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 909 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 910 | dependencies: 911 | fast-deep-equal "^3.1.1" 912 | fast-json-stable-stringify "^2.0.0" 913 | json-schema-traverse "^0.4.1" 914 | uri-js "^4.2.2" 915 | 916 | ajv@^8.0.1: 917 | version "8.11.2" 918 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.2.tgz#aecb20b50607acf2569b6382167b65a96008bb78" 919 | integrity sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg== 920 | dependencies: 921 | fast-deep-equal "^3.1.1" 922 | json-schema-traverse "^1.0.0" 923 | require-from-string "^2.0.2" 924 | uri-js "^4.2.2" 925 | 926 | ansi-colors@^4.1.1: 927 | version "4.1.3" 928 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" 929 | integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== 930 | 931 | ansi-regex@^5.0.1: 932 | version "5.0.1" 933 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 934 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 935 | 936 | ansi-styles@^3.2.1: 937 | version "3.2.1" 938 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 939 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 940 | dependencies: 941 | color-convert "^1.9.0" 942 | 943 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 944 | version "4.3.0" 945 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 946 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 947 | dependencies: 948 | color-convert "^2.0.1" 949 | 950 | argparse@^1.0.7: 951 | version "1.0.10" 952 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" 953 | integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== 954 | dependencies: 955 | sprintf-js "~1.0.2" 956 | 957 | astral-regex@^2.0.0: 958 | version "2.0.0" 959 | resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" 960 | integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== 961 | 962 | balanced-match@^1.0.0: 963 | version "1.0.2" 964 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 965 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 966 | 967 | base64-js@^1.3.1: 968 | version "1.5.1" 969 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 970 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 971 | 972 | bowser@^2.11.0: 973 | version "2.11.0" 974 | resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.11.0.tgz#5ca3c35757a7aa5771500c70a73a9f91ef420a8f" 975 | integrity sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA== 976 | 977 | brace-expansion@^1.1.7: 978 | version "1.1.11" 979 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 980 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 981 | dependencies: 982 | balanced-match "^1.0.0" 983 | concat-map "0.0.1" 984 | 985 | bson@^4.7.0: 986 | version "4.7.0" 987 | resolved "https://registry.yarnpkg.com/bson/-/bson-4.7.0.tgz#7874a60091ffc7a45c5dd2973b5cad7cded9718a" 988 | integrity sha512-VrlEE4vuiO1WTpfof4VmaVolCVYkYTgB9iWgYNOrVlnifpME/06fhFRmONgBhClD5pFC1t9ZWqFUQEQAzY43bA== 989 | dependencies: 990 | buffer "^5.6.0" 991 | 992 | buffer@^5.6.0: 993 | version "5.7.1" 994 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" 995 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 996 | dependencies: 997 | base64-js "^1.3.1" 998 | ieee754 "^1.1.13" 999 | 1000 | busboy@^1.6.0: 1001 | version "1.6.0" 1002 | resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" 1003 | integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== 1004 | dependencies: 1005 | streamsearch "^1.1.0" 1006 | 1007 | callsites@^3.0.0: 1008 | version "3.1.0" 1009 | resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" 1010 | integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== 1011 | 1012 | chalk@^2.0.0: 1013 | version "2.4.2" 1014 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" 1015 | integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== 1016 | dependencies: 1017 | ansi-styles "^3.2.1" 1018 | escape-string-regexp "^1.0.5" 1019 | supports-color "^5.3.0" 1020 | 1021 | chalk@^4.0.0: 1022 | version "4.1.2" 1023 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 1024 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 1025 | dependencies: 1026 | ansi-styles "^4.1.0" 1027 | supports-color "^7.1.0" 1028 | 1029 | color-convert@^1.9.0: 1030 | version "1.9.3" 1031 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 1032 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 1033 | dependencies: 1034 | color-name "1.1.3" 1035 | 1036 | color-convert@^2.0.1: 1037 | version "2.0.1" 1038 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 1039 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 1040 | dependencies: 1041 | color-name "~1.1.4" 1042 | 1043 | color-name@1.1.3: 1044 | version "1.1.3" 1045 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 1046 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 1047 | 1048 | color-name@~1.1.4: 1049 | version "1.1.4" 1050 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 1051 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 1052 | 1053 | concat-map@0.0.1: 1054 | version "0.0.1" 1055 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 1056 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 1057 | 1058 | cross-spawn@^7.0.2: 1059 | version "7.0.3" 1060 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 1061 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 1062 | dependencies: 1063 | path-key "^3.1.0" 1064 | shebang-command "^2.0.0" 1065 | which "^2.0.1" 1066 | 1067 | debug@4.x, debug@^4.0.1, debug@^4.1.1: 1068 | version "4.3.4" 1069 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 1070 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 1071 | dependencies: 1072 | ms "2.1.2" 1073 | 1074 | deep-is@^0.1.3: 1075 | version "0.1.4" 1076 | resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" 1077 | integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== 1078 | 1079 | discord-api-types@^0.37.20, discord-api-types@^0.37.23: 1080 | version "0.37.24" 1081 | resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.37.24.tgz#f3ee0ad6b2b70925b5225f9beac6e24bc4de6e46" 1082 | integrity sha512-1+Fb4huJCihdbkJLcq2p7nBmtlmAryNwjefT8wwJnL8c7bc7WA87Oaa5mbLe96QvZyfwnwRCDX40H0HhcVV50g== 1083 | 1084 | discord.js@^14.7.1: 1085 | version "14.7.1" 1086 | resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-14.7.1.tgz#26079d0ff4d27daf02480a403c456121f0682bd9" 1087 | integrity sha512-1FECvqJJjjeYcjSm0IGMnPxLqja/pmG1B0W2l3lUY2Gi4KXiyTeQmU1IxWcbXHn2k+ytP587mMWqva2IA87EbA== 1088 | dependencies: 1089 | "@discordjs/builders" "^1.4.0" 1090 | "@discordjs/collection" "^1.3.0" 1091 | "@discordjs/rest" "^1.4.0" 1092 | "@discordjs/util" "^0.1.0" 1093 | "@sapphire/snowflake" "^3.2.2" 1094 | "@types/ws" "^8.5.3" 1095 | discord-api-types "^0.37.20" 1096 | fast-deep-equal "^3.1.3" 1097 | lodash.snakecase "^4.1.1" 1098 | tslib "^2.4.1" 1099 | undici "^5.13.0" 1100 | ws "^8.11.0" 1101 | 1102 | doctrine@^3.0.0: 1103 | version "3.0.0" 1104 | resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" 1105 | integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== 1106 | dependencies: 1107 | esutils "^2.0.2" 1108 | 1109 | emoji-regex@^8.0.0: 1110 | version "8.0.0" 1111 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 1112 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 1113 | 1114 | enquirer@^2.3.5: 1115 | version "2.3.6" 1116 | resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" 1117 | integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== 1118 | dependencies: 1119 | ansi-colors "^4.1.1" 1120 | 1121 | escape-string-regexp@^1.0.5: 1122 | version "1.0.5" 1123 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" 1124 | integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== 1125 | 1126 | escape-string-regexp@^4.0.0: 1127 | version "4.0.0" 1128 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 1129 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 1130 | 1131 | eslint-scope@^5.1.1: 1132 | version "5.1.1" 1133 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 1134 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 1135 | dependencies: 1136 | esrecurse "^4.3.0" 1137 | estraverse "^4.1.1" 1138 | 1139 | eslint-utils@^2.1.0: 1140 | version "2.1.0" 1141 | resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" 1142 | integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== 1143 | dependencies: 1144 | eslint-visitor-keys "^1.1.0" 1145 | 1146 | eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: 1147 | version "1.3.0" 1148 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" 1149 | integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== 1150 | 1151 | eslint-visitor-keys@^2.0.0: 1152 | version "2.1.0" 1153 | resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" 1154 | integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== 1155 | 1156 | eslint@^7.17.0: 1157 | version "7.32.0" 1158 | resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" 1159 | integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== 1160 | dependencies: 1161 | "@babel/code-frame" "7.12.11" 1162 | "@eslint/eslintrc" "^0.4.3" 1163 | "@humanwhocodes/config-array" "^0.5.0" 1164 | ajv "^6.10.0" 1165 | chalk "^4.0.0" 1166 | cross-spawn "^7.0.2" 1167 | debug "^4.0.1" 1168 | doctrine "^3.0.0" 1169 | enquirer "^2.3.5" 1170 | escape-string-regexp "^4.0.0" 1171 | eslint-scope "^5.1.1" 1172 | eslint-utils "^2.1.0" 1173 | eslint-visitor-keys "^2.0.0" 1174 | espree "^7.3.1" 1175 | esquery "^1.4.0" 1176 | esutils "^2.0.2" 1177 | fast-deep-equal "^3.1.3" 1178 | file-entry-cache "^6.0.1" 1179 | functional-red-black-tree "^1.0.1" 1180 | glob-parent "^5.1.2" 1181 | globals "^13.6.0" 1182 | ignore "^4.0.6" 1183 | import-fresh "^3.0.0" 1184 | imurmurhash "^0.1.4" 1185 | is-glob "^4.0.0" 1186 | js-yaml "^3.13.1" 1187 | json-stable-stringify-without-jsonify "^1.0.1" 1188 | levn "^0.4.1" 1189 | lodash.merge "^4.6.2" 1190 | minimatch "^3.0.4" 1191 | natural-compare "^1.4.0" 1192 | optionator "^0.9.1" 1193 | progress "^2.0.0" 1194 | regexpp "^3.1.0" 1195 | semver "^7.2.1" 1196 | strip-ansi "^6.0.0" 1197 | strip-json-comments "^3.1.0" 1198 | table "^6.0.9" 1199 | text-table "^0.2.0" 1200 | v8-compile-cache "^2.0.3" 1201 | 1202 | espree@^7.3.0, espree@^7.3.1: 1203 | version "7.3.1" 1204 | resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" 1205 | integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== 1206 | dependencies: 1207 | acorn "^7.4.0" 1208 | acorn-jsx "^5.3.1" 1209 | eslint-visitor-keys "^1.3.0" 1210 | 1211 | esprima@^4.0.0: 1212 | version "4.0.1" 1213 | resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" 1214 | integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== 1215 | 1216 | esquery@^1.4.0: 1217 | version "1.4.0" 1218 | resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" 1219 | integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== 1220 | dependencies: 1221 | estraverse "^5.1.0" 1222 | 1223 | esrecurse@^4.3.0: 1224 | version "4.3.0" 1225 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 1226 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 1227 | dependencies: 1228 | estraverse "^5.2.0" 1229 | 1230 | estraverse@^4.1.1: 1231 | version "4.3.0" 1232 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 1233 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 1234 | 1235 | estraverse@^5.1.0, estraverse@^5.2.0: 1236 | version "5.3.0" 1237 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 1238 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 1239 | 1240 | esutils@^2.0.2: 1241 | version "2.0.3" 1242 | resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" 1243 | integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== 1244 | 1245 | fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: 1246 | version "3.1.3" 1247 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 1248 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 1249 | 1250 | fast-json-stable-stringify@^2.0.0: 1251 | version "2.1.0" 1252 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 1253 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 1254 | 1255 | fast-levenshtein@^2.0.6: 1256 | version "2.0.6" 1257 | resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" 1258 | integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== 1259 | 1260 | fast-xml-parser@4.0.11: 1261 | version "4.0.11" 1262 | resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.0.11.tgz#42332a9aca544520631c8919e6ea871c0185a985" 1263 | integrity sha512-4aUg3aNRR/WjQAcpceODG1C3x3lFANXRo8+1biqfieHmg9pyMt7qB4lQV/Ta6sJCTbA5vfD8fnA8S54JATiFUA== 1264 | dependencies: 1265 | strnum "^1.0.5" 1266 | 1267 | file-entry-cache@^6.0.1: 1268 | version "6.0.1" 1269 | resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" 1270 | integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== 1271 | dependencies: 1272 | flat-cache "^3.0.4" 1273 | 1274 | file-type@^18.0.0: 1275 | version "18.0.0" 1276 | resolved "https://registry.yarnpkg.com/file-type/-/file-type-18.0.0.tgz#7a39378f8657ddc02807a0c62cb77cb4dc318197" 1277 | integrity sha512-jjMwFpnW8PKofLE/4ohlhqwDk5k0NC6iy0UHAJFKoY1fQeGMN0GDdLgHQrvCbSpMwbqzoCZhRI5dETCZna5qVA== 1278 | dependencies: 1279 | readable-web-to-node-stream "^3.0.2" 1280 | strtok3 "^7.0.0" 1281 | token-types "^5.0.1" 1282 | 1283 | flat-cache@^3.0.4: 1284 | version "3.0.4" 1285 | resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" 1286 | integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== 1287 | dependencies: 1288 | flatted "^3.1.0" 1289 | rimraf "^3.0.2" 1290 | 1291 | flatted@^3.1.0: 1292 | version "3.2.7" 1293 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.7.tgz#609f39207cb614b89d0765b477cb2d437fbf9787" 1294 | integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ== 1295 | 1296 | fs.realpath@^1.0.0: 1297 | version "1.0.0" 1298 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 1299 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 1300 | 1301 | functional-red-black-tree@^1.0.1: 1302 | version "1.0.1" 1303 | resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" 1304 | integrity sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g== 1305 | 1306 | glob-parent@^5.1.2: 1307 | version "5.1.2" 1308 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 1309 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 1310 | dependencies: 1311 | is-glob "^4.0.1" 1312 | 1313 | glob@^7.1.3: 1314 | version "7.2.3" 1315 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 1316 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 1317 | dependencies: 1318 | fs.realpath "^1.0.0" 1319 | inflight "^1.0.4" 1320 | inherits "2" 1321 | minimatch "^3.1.1" 1322 | once "^1.3.0" 1323 | path-is-absolute "^1.0.0" 1324 | 1325 | globals@^13.6.0, globals@^13.9.0: 1326 | version "13.19.0" 1327 | resolved "https://registry.yarnpkg.com/globals/-/globals-13.19.0.tgz#7a42de8e6ad4f7242fbcca27ea5b23aca367b5c8" 1328 | integrity sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ== 1329 | dependencies: 1330 | type-fest "^0.20.2" 1331 | 1332 | has-flag@^3.0.0: 1333 | version "3.0.0" 1334 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" 1335 | integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== 1336 | 1337 | has-flag@^4.0.0: 1338 | version "4.0.0" 1339 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 1340 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 1341 | 1342 | ieee754@^1.1.13, ieee754@^1.2.1: 1343 | version "1.2.1" 1344 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 1345 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 1346 | 1347 | ignore@^4.0.6: 1348 | version "4.0.6" 1349 | resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" 1350 | integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== 1351 | 1352 | import-fresh@^3.0.0, import-fresh@^3.2.1: 1353 | version "3.3.0" 1354 | resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" 1355 | integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== 1356 | dependencies: 1357 | parent-module "^1.0.0" 1358 | resolve-from "^4.0.0" 1359 | 1360 | imurmurhash@^0.1.4: 1361 | version "0.1.4" 1362 | resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" 1363 | integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== 1364 | 1365 | inflight@^1.0.4: 1366 | version "1.0.6" 1367 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 1368 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 1369 | dependencies: 1370 | once "^1.3.0" 1371 | wrappy "1" 1372 | 1373 | inherits@2, inherits@^2.0.3: 1374 | version "2.0.4" 1375 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1376 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1377 | 1378 | ip@^2.0.0: 1379 | version "2.0.0" 1380 | resolved "https://registry.yarnpkg.com/ip/-/ip-2.0.0.tgz#4cf4ab182fee2314c75ede1276f8c80b479936da" 1381 | integrity sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ== 1382 | 1383 | is-extglob@^2.1.1: 1384 | version "2.1.1" 1385 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1386 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 1387 | 1388 | is-fullwidth-code-point@^3.0.0: 1389 | version "3.0.0" 1390 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1391 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1392 | 1393 | is-glob@^4.0.0, is-glob@^4.0.1: 1394 | version "4.0.3" 1395 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1396 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1397 | dependencies: 1398 | is-extglob "^2.1.1" 1399 | 1400 | isexe@^2.0.0: 1401 | version "2.0.0" 1402 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1403 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1404 | 1405 | js-tokens@^4.0.0: 1406 | version "4.0.0" 1407 | resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" 1408 | integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== 1409 | 1410 | js-yaml@^3.13.1: 1411 | version "3.14.1" 1412 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" 1413 | integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== 1414 | dependencies: 1415 | argparse "^1.0.7" 1416 | esprima "^4.0.0" 1417 | 1418 | json-schema-traverse@^0.4.1: 1419 | version "0.4.1" 1420 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1421 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1422 | 1423 | json-schema-traverse@^1.0.0: 1424 | version "1.0.0" 1425 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" 1426 | integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== 1427 | 1428 | json-stable-stringify-without-jsonify@^1.0.1: 1429 | version "1.0.1" 1430 | resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" 1431 | integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== 1432 | 1433 | kareem@2.5.0: 1434 | version "2.5.0" 1435 | resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.5.0.tgz#9d2b2272609b0d5b981757fa5794d7ad0ac041b2" 1436 | integrity sha512-rVBUGGwvqg130iwYu8k7lutHuDBFj1yGRdnlE44wEhxAmFBad1zcL66PdWC1raw3tIObY6XWhtv3VL04xQb/cg== 1437 | 1438 | levn@^0.4.1: 1439 | version "0.4.1" 1440 | resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" 1441 | integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== 1442 | dependencies: 1443 | prelude-ls "^1.2.1" 1444 | type-check "~0.4.0" 1445 | 1446 | lodash.merge@^4.6.2: 1447 | version "4.6.2" 1448 | resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" 1449 | integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== 1450 | 1451 | lodash.snakecase@^4.1.1: 1452 | version "4.1.1" 1453 | resolved "https://registry.yarnpkg.com/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz#39d714a35357147837aefd64b5dcbb16becd8f8d" 1454 | integrity sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw== 1455 | 1456 | lodash.truncate@^4.4.2: 1457 | version "4.4.2" 1458 | resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" 1459 | integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== 1460 | 1461 | lodash@^4.17.21: 1462 | version "4.17.21" 1463 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1464 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1465 | 1466 | lru-cache@^6.0.0: 1467 | version "6.0.0" 1468 | resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" 1469 | integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== 1470 | dependencies: 1471 | yallist "^4.0.0" 1472 | 1473 | memory-pager@^1.0.2: 1474 | version "1.5.0" 1475 | resolved "https://registry.yarnpkg.com/memory-pager/-/memory-pager-1.5.0.tgz#d8751655d22d384682741c972f2c3d6dfa3e66b5" 1476 | integrity sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg== 1477 | 1478 | minimatch@^3.0.4, minimatch@^3.1.1: 1479 | version "3.1.2" 1480 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1481 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1482 | dependencies: 1483 | brace-expansion "^1.1.7" 1484 | 1485 | moment-duration-format@^2.3.2: 1486 | version "2.3.2" 1487 | resolved "https://registry.yarnpkg.com/moment-duration-format/-/moment-duration-format-2.3.2.tgz#5fa2b19b941b8d277122ff3f87a12895ec0d6212" 1488 | integrity sha512-cBMXjSW+fjOb4tyaVHuaVE/A5TqkukDWiOfxxAjY+PEqmmBQlLwn+8OzwPiG3brouXKY5Un4pBjAeB6UToXHaQ== 1489 | 1490 | moment@^2.29.4: 1491 | version "2.29.4" 1492 | resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" 1493 | integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== 1494 | 1495 | mongodb-connection-string-url@^2.5.4: 1496 | version "2.6.0" 1497 | resolved "https://registry.yarnpkg.com/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz#57901bf352372abdde812c81be47b75c6b2ec5cf" 1498 | integrity sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ== 1499 | dependencies: 1500 | "@types/whatwg-url" "^8.2.1" 1501 | whatwg-url "^11.0.0" 1502 | 1503 | mongodb@4.12.1: 1504 | version "4.12.1" 1505 | resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-4.12.1.tgz#224eb39b8784af835b515aa687c6010cecaabb1a" 1506 | integrity sha512-koT87tecZmxPKtxRQD8hCKfn+ockEL2xBiUvx3isQGI6mFmagWt4f4AyCE9J4sKepnLhMacoCTQQA6SLAI2L6w== 1507 | dependencies: 1508 | bson "^4.7.0" 1509 | mongodb-connection-string-url "^2.5.4" 1510 | socks "^2.7.1" 1511 | optionalDependencies: 1512 | "@aws-sdk/credential-providers" "^3.186.0" 1513 | saslprep "^1.0.3" 1514 | 1515 | mongoose@^6.8.1: 1516 | version "6.8.1" 1517 | resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-6.8.1.tgz#7a5bf02241b88317ceca459beac9db5ff1ce8225" 1518 | integrity sha512-utr2hclZ+/QlO+JuVd33dxzvLKtByEhaLj8mEO+tqCm6pgOboKv+DWcvJDEcCMl4Rgd1ubgfYz4cZ9BWyHmC3Q== 1519 | dependencies: 1520 | bson "^4.7.0" 1521 | kareem "2.5.0" 1522 | mongodb "4.12.1" 1523 | mpath "0.9.0" 1524 | mquery "4.0.3" 1525 | ms "2.1.3" 1526 | sift "16.0.1" 1527 | 1528 | mpath@0.9.0: 1529 | version "0.9.0" 1530 | resolved "https://registry.yarnpkg.com/mpath/-/mpath-0.9.0.tgz#0c122fe107846e31fc58c75b09c35514b3871904" 1531 | integrity sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew== 1532 | 1533 | mquery@4.0.3: 1534 | version "4.0.3" 1535 | resolved "https://registry.yarnpkg.com/mquery/-/mquery-4.0.3.tgz#4d15f938e6247d773a942c912d9748bd1965f89d" 1536 | integrity sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA== 1537 | dependencies: 1538 | debug "4.x" 1539 | 1540 | ms@2.1.2: 1541 | version "2.1.2" 1542 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1543 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1544 | 1545 | ms@2.1.3: 1546 | version "2.1.3" 1547 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1548 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1549 | 1550 | natural-compare@^1.4.0: 1551 | version "1.4.0" 1552 | resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" 1553 | integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== 1554 | 1555 | once@^1.3.0: 1556 | version "1.4.0" 1557 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1558 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1559 | dependencies: 1560 | wrappy "1" 1561 | 1562 | optionator@^0.9.1: 1563 | version "0.9.1" 1564 | resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" 1565 | integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== 1566 | dependencies: 1567 | deep-is "^0.1.3" 1568 | fast-levenshtein "^2.0.6" 1569 | levn "^0.4.1" 1570 | prelude-ls "^1.2.1" 1571 | type-check "^0.4.0" 1572 | word-wrap "^1.2.3" 1573 | 1574 | parent-module@^1.0.0: 1575 | version "1.0.1" 1576 | resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" 1577 | integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== 1578 | dependencies: 1579 | callsites "^3.0.0" 1580 | 1581 | path-is-absolute@^1.0.0: 1582 | version "1.0.1" 1583 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1584 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1585 | 1586 | path-key@^3.1.0: 1587 | version "3.1.1" 1588 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1589 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1590 | 1591 | peek-readable@^5.0.0: 1592 | version "5.0.0" 1593 | resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-5.0.0.tgz#7ead2aff25dc40458c60347ea76cfdfd63efdfec" 1594 | integrity sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A== 1595 | 1596 | prelude-ls@^1.2.1: 1597 | version "1.2.1" 1598 | resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" 1599 | integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== 1600 | 1601 | prettier@^2.3.0: 1602 | version "2.8.1" 1603 | resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.1.tgz#4e1fd11c34e2421bc1da9aea9bd8127cd0a35efc" 1604 | integrity sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg== 1605 | 1606 | prism-media@^1.3.4: 1607 | version "1.3.4" 1608 | resolved "https://registry.yarnpkg.com/prism-media/-/prism-media-1.3.4.tgz#7951f26a9186b791dc8c820ff07310ec46a8a5f1" 1609 | integrity sha512-eW7LXORkTCQznZs+eqe9VjGOrLBxcBPXgNyHXMTSRVhphvd/RrxgIR7WaWt4fkLuhshcdT5KHL88LAfcvS3f5g== 1610 | 1611 | progress@^2.0.0: 1612 | version "2.0.3" 1613 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 1614 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 1615 | 1616 | punycode@^2.1.0, punycode@^2.1.1: 1617 | version "2.1.1" 1618 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" 1619 | integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== 1620 | 1621 | readable-stream@^3.6.0: 1622 | version "3.6.0" 1623 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 1624 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 1625 | dependencies: 1626 | inherits "^2.0.3" 1627 | string_decoder "^1.1.1" 1628 | util-deprecate "^1.0.1" 1629 | 1630 | readable-web-to-node-stream@^3.0.2: 1631 | version "3.0.2" 1632 | resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" 1633 | integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw== 1634 | dependencies: 1635 | readable-stream "^3.6.0" 1636 | 1637 | regexpp@^3.1.0: 1638 | version "3.2.0" 1639 | resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" 1640 | integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== 1641 | 1642 | require-from-string@^2.0.2: 1643 | version "2.0.2" 1644 | resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" 1645 | integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== 1646 | 1647 | resolve-from@^4.0.0: 1648 | version "4.0.0" 1649 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" 1650 | integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== 1651 | 1652 | rimraf@^3.0.2: 1653 | version "3.0.2" 1654 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1655 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1656 | dependencies: 1657 | glob "^7.1.3" 1658 | 1659 | safe-buffer@~5.2.0: 1660 | version "5.2.1" 1661 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1662 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1663 | 1664 | saslprep@^1.0.3: 1665 | version "1.0.3" 1666 | resolved "https://registry.yarnpkg.com/saslprep/-/saslprep-1.0.3.tgz#4c02f946b56cf54297e347ba1093e7acac4cf226" 1667 | integrity sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag== 1668 | dependencies: 1669 | sparse-bitfield "^3.0.3" 1670 | 1671 | semver@^7.2.1: 1672 | version "7.3.8" 1673 | resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" 1674 | integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== 1675 | dependencies: 1676 | lru-cache "^6.0.0" 1677 | 1678 | shebang-command@^2.0.0: 1679 | version "2.0.0" 1680 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1681 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1682 | dependencies: 1683 | shebang-regex "^3.0.0" 1684 | 1685 | shebang-regex@^3.0.0: 1686 | version "3.0.0" 1687 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1688 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1689 | 1690 | sift@16.0.1: 1691 | version "16.0.1" 1692 | resolved "https://registry.yarnpkg.com/sift/-/sift-16.0.1.tgz#e9c2ccc72191585008cf3e36fc447b2d2633a053" 1693 | integrity sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ== 1694 | 1695 | slice-ansi@^4.0.0: 1696 | version "4.0.0" 1697 | resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" 1698 | integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== 1699 | dependencies: 1700 | ansi-styles "^4.0.0" 1701 | astral-regex "^2.0.0" 1702 | is-fullwidth-code-point "^3.0.0" 1703 | 1704 | smart-buffer@^4.2.0: 1705 | version "4.2.0" 1706 | resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" 1707 | integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== 1708 | 1709 | socks@^2.7.1: 1710 | version "2.7.1" 1711 | resolved "https://registry.yarnpkg.com/socks/-/socks-2.7.1.tgz#d8e651247178fde79c0663043e07240196857d55" 1712 | integrity sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ== 1713 | dependencies: 1714 | ip "^2.0.0" 1715 | smart-buffer "^4.2.0" 1716 | 1717 | sparse-bitfield@^3.0.3: 1718 | version "3.0.3" 1719 | resolved "https://registry.yarnpkg.com/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz#ff4ae6e68656056ba4b3e792ab3334d38273ca11" 1720 | integrity sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ== 1721 | dependencies: 1722 | memory-pager "^1.0.2" 1723 | 1724 | sprintf-js@~1.0.2: 1725 | version "1.0.3" 1726 | resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" 1727 | integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== 1728 | 1729 | streamsearch@^1.1.0: 1730 | version "1.1.0" 1731 | resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" 1732 | integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== 1733 | 1734 | string-width@^4.2.3: 1735 | version "4.2.3" 1736 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1737 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1738 | dependencies: 1739 | emoji-regex "^8.0.0" 1740 | is-fullwidth-code-point "^3.0.0" 1741 | strip-ansi "^6.0.1" 1742 | 1743 | string_decoder@^1.1.1: 1744 | version "1.3.0" 1745 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1746 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1747 | dependencies: 1748 | safe-buffer "~5.2.0" 1749 | 1750 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1751 | version "6.0.1" 1752 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1753 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1754 | dependencies: 1755 | ansi-regex "^5.0.1" 1756 | 1757 | strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: 1758 | version "3.1.1" 1759 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1760 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1761 | 1762 | strnum@^1.0.5: 1763 | version "1.0.5" 1764 | resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.0.5.tgz#5c4e829fe15ad4ff0d20c3db5ac97b73c9b072db" 1765 | integrity sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA== 1766 | 1767 | strtok3@^7.0.0: 1768 | version "7.0.0" 1769 | resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-7.0.0.tgz#868c428b4ade64a8fd8fee7364256001c1a4cbe5" 1770 | integrity sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ== 1771 | dependencies: 1772 | "@tokenizer/token" "^0.3.0" 1773 | peek-readable "^5.0.0" 1774 | 1775 | supports-color@^5.3.0: 1776 | version "5.5.0" 1777 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" 1778 | integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== 1779 | dependencies: 1780 | has-flag "^3.0.0" 1781 | 1782 | supports-color@^7.1.0: 1783 | version "7.2.0" 1784 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1785 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1786 | dependencies: 1787 | has-flag "^4.0.0" 1788 | 1789 | table@^6.0.9: 1790 | version "6.8.1" 1791 | resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" 1792 | integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== 1793 | dependencies: 1794 | ajv "^8.0.1" 1795 | lodash.truncate "^4.4.2" 1796 | slice-ansi "^4.0.0" 1797 | string-width "^4.2.3" 1798 | strip-ansi "^6.0.1" 1799 | 1800 | text-table@^0.2.0: 1801 | version "0.2.0" 1802 | resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" 1803 | integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== 1804 | 1805 | token-types@^5.0.1: 1806 | version "5.0.1" 1807 | resolved "https://registry.yarnpkg.com/token-types/-/token-types-5.0.1.tgz#aa9d9e6b23c420a675e55413b180635b86a093b4" 1808 | integrity sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg== 1809 | dependencies: 1810 | "@tokenizer/token" "^0.3.0" 1811 | ieee754 "^1.2.1" 1812 | 1813 | tr46@^3.0.0: 1814 | version "3.0.0" 1815 | resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" 1816 | integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== 1817 | dependencies: 1818 | punycode "^2.1.1" 1819 | 1820 | ts-mixer@^6.0.2: 1821 | version "6.0.2" 1822 | resolved "https://registry.yarnpkg.com/ts-mixer/-/ts-mixer-6.0.2.tgz#3e4e4bb8daffb24435f6980b15204cb5b287e016" 1823 | integrity sha512-zvHx3VM83m2WYCE8XL99uaM7mFwYSkjR2OZti98fabHrwkjsCvgwChda5xctein3xGOyaQhtTeDq/1H/GNvF3A== 1824 | 1825 | tslib@^1.11.1: 1826 | version "1.14.1" 1827 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" 1828 | integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== 1829 | 1830 | tslib@^2.3.1, tslib@^2.4.1: 1831 | version "2.4.1" 1832 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" 1833 | integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== 1834 | 1835 | type-check@^0.4.0, type-check@~0.4.0: 1836 | version "0.4.0" 1837 | resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" 1838 | integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== 1839 | dependencies: 1840 | prelude-ls "^1.2.1" 1841 | 1842 | type-fest@^0.20.2: 1843 | version "0.20.2" 1844 | resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" 1845 | integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== 1846 | 1847 | undici@^5.13.0: 1848 | version "5.14.0" 1849 | resolved "https://registry.yarnpkg.com/undici/-/undici-5.14.0.tgz#1169d0cdee06a4ffdd30810f6228d57998884d00" 1850 | integrity sha512-yJlHYw6yXPPsuOH0x2Ib1Km61vu4hLiRRQoafs+WUgX1vO64vgnxiCEN9dpIrhZyHFsai3F0AEj4P9zy19enEQ== 1851 | dependencies: 1852 | busboy "^1.6.0" 1853 | 1854 | uri-js@^4.2.2: 1855 | version "4.4.1" 1856 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1857 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1858 | dependencies: 1859 | punycode "^2.1.0" 1860 | 1861 | util-deprecate@^1.0.1: 1862 | version "1.0.2" 1863 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1864 | integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== 1865 | 1866 | uuid@^8.3.2: 1867 | version "8.3.2" 1868 | resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" 1869 | integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== 1870 | 1871 | v8-compile-cache@^2.0.3: 1872 | version "2.3.0" 1873 | resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" 1874 | integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== 1875 | 1876 | webidl-conversions@^7.0.0: 1877 | version "7.0.0" 1878 | resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" 1879 | integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== 1880 | 1881 | whatwg-url@^11.0.0: 1882 | version "11.0.0" 1883 | resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" 1884 | integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== 1885 | dependencies: 1886 | tr46 "^3.0.0" 1887 | webidl-conversions "^7.0.0" 1888 | 1889 | which@^2.0.1: 1890 | version "2.0.2" 1891 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1892 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1893 | dependencies: 1894 | isexe "^2.0.0" 1895 | 1896 | word-wrap@^1.2.3: 1897 | version "1.2.3" 1898 | resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" 1899 | integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== 1900 | 1901 | wrappy@1: 1902 | version "1.0.2" 1903 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1904 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1905 | 1906 | ws@^8.11.0: 1907 | version "8.11.0" 1908 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.11.0.tgz#6a0d36b8edfd9f96d8b25683db2f8d7de6e8e143" 1909 | integrity sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg== 1910 | 1911 | yallist@^4.0.0: 1912 | version "4.0.0" 1913 | resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" 1914 | integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== 1915 | --------------------------------------------------------------------------------