diff --git a/base/JaBa.js b/base/JaBa.js index 679dcd61..5416f0a0 100644 --- a/base/JaBa.js +++ b/base/JaBa.js @@ -77,15 +77,12 @@ class JaBa extends Client { this.login(this.config.token); mongoose - .connect(this.config.mongoDB, { - useNewUrlParser: true, - useUnifiedTopology: true, - }) + .connect(this.config.mongoDB) .then(() => { this.logger.log("Connected to the Mongodb database.", "log"); }) .catch(err => { - this.logger.log(`Unable to connect to the Mongodb database. Error: ${err}`, "error"); + this.logger.log(`Unable to connect to the Mongodb database.\nError: ${err}`, "error"); }); await this.player.extractors.loadDefault(); @@ -282,7 +279,6 @@ class JaBa extends Client { if (guildData) { guildData.members.push(memberData._id); - guildData.markModified("members"); await guildData.save(); } diff --git a/commands/!DISABLED/importmee6.js b/commands/!DISABLED/importmee6.js index 1a5ff95f..66e32dad 100644 --- a/commands/!DISABLED/importmee6.js +++ b/commands/!DISABLED/importmee6.js @@ -39,7 +39,6 @@ class ImportMee6 extends BaseCommand { data.memberData.level = level; - data.markModified("memberData.level"); await data.memberData.save(); interaction.editReply({ diff --git a/commands/Administration/automod.js b/commands/Administration/automod.js index 95e8ecb7..6f99062f 100644 --- a/commands/Administration/automod.js +++ b/commands/Administration/automod.js @@ -65,7 +65,6 @@ class Automod extends BaseCommand { ignored: [], }; - data.guildData.markModified("plugins.automod"); await data.guildData.save(); return interaction.success("administration/automod:ENABLED"); @@ -73,7 +72,6 @@ class Automod extends BaseCommand { if (channel) { data.guildData.plugins.automod.ignored.push(channel.id); - data.guildData.markModified("plugins.automod"); await data.guildData.save(); interaction.success("administration/automod:DISABLED_CHANNEL", { @@ -85,7 +83,6 @@ class Automod extends BaseCommand { ignored: [], }; - data.guildData.markModified("plugins.automod"); await data.guildData.save(); interaction.success("administration/automod:DISABLED"); diff --git a/commands/Administration/autorole.js b/commands/Administration/autorole.js index f14cac61..7121e811 100644 --- a/commands/Administration/autorole.js +++ b/commands/Administration/autorole.js @@ -66,7 +66,6 @@ class Autorole extends BaseCommand { role: role.id, }; - data.guildData.markModified("plugins.autorole"); await data.guildData.save(); interaction.success("administration/autorole:SUCCESS_ENABLED", { @@ -78,7 +77,6 @@ class Autorole extends BaseCommand { role: null, }; - data.guildData.markModified("plugins.autorole"); await data.guildData.save(); interaction.success("administration/autorole:SUCCESS_DISABLED"); diff --git a/commands/Administration/config.js b/commands/Administration/config.js index 5941eb96..c3f64a85 100644 --- a/commands/Administration/config.js +++ b/commands/Administration/config.js @@ -203,7 +203,6 @@ async function changeSetting(interaction, setting, state, channel, guildData) { if (!state) { guildData.plugins[settingSplitted[0]][settingSplitted[1]] = null; - guildData.markModified("plugins"); await guildData.save(); return interaction.reply({ @@ -216,7 +215,6 @@ async function changeSetting(interaction, setting, state, channel, guildData) { if (channel) { guildData.plugins[settingSplitted[0]][settingSplitted[1]] = channel.id; - guildData.markModified("plugins"); await guildData.save(); return interaction.reply({ diff --git a/commands/Administration/goodbye.js b/commands/Administration/goodbye.js index 850f366f..a77f2e3b 100644 --- a/commands/Administration/goodbye.js +++ b/commands/Administration/goodbye.js @@ -108,7 +108,6 @@ class Goodbye extends BaseCommand { withImage: null, }; - data.guildData.markModified("plugins.goodbye"); await data.guildData.save(); interaction.success("administration/goodbye:DISABLED"); @@ -124,7 +123,6 @@ class Goodbye extends BaseCommand { withImage: image, }; - data.guildData.markModified("plugins.goodbye"); await data.guildData.save(); interaction.success("administration/goodbye:ENABLED", { diff --git a/commands/Administration/set.js b/commands/Administration/set.js index ac8afdae..53467fed 100644 --- a/commands/Administration/set.js +++ b/commands/Administration/set.js @@ -88,7 +88,6 @@ class Set extends BaseCommand { case "level": { memberData.level = int; - memberData.markModified("level"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -100,7 +99,6 @@ class Set extends BaseCommand { case "xp": { memberData.exp = int; - memberData.markModified("exp"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -112,7 +110,6 @@ class Set extends BaseCommand { case "credits": { memberData.money = int; - memberData.markModified("money"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -124,7 +121,6 @@ class Set extends BaseCommand { case "bank": { memberData.bankSold = int; - memberData.markModified("bankSold"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { diff --git a/commands/Administration/setlang.js b/commands/Administration/setlang.js index e5dc48b9..8a852fbe 100644 --- a/commands/Administration/setlang.js +++ b/commands/Administration/setlang.js @@ -52,7 +52,6 @@ class Setlang extends BaseCommand { data.guildData.language = language.name; - data.guildData.markModified("language"); await data.guildData.save(); return interaction.success("administration/setlang:SUCCESS", { diff --git a/commands/Administration/welcome.js b/commands/Administration/welcome.js index b25bc15f..f3af4bc5 100644 --- a/commands/Administration/welcome.js +++ b/commands/Administration/welcome.js @@ -108,7 +108,6 @@ class Welcome extends BaseCommand { withImage: null, }; - data.guildData.markModified("plugins.welcome"); await data.guildData.save(); interaction.success("administration/welcome:DISABLED"); @@ -124,7 +123,6 @@ class Welcome extends BaseCommand { withImage: image, }; - data.guildData.markModified("plugins.welcome"); await data.guildData.save(); interaction.success("administration/welcome:ENABLED", { diff --git a/commands/Economy/bank.js b/commands/Economy/bank.js index 815b16f3..1ac744ab 100644 --- a/commands/Economy/bank.js +++ b/commands/Economy/bank.js @@ -69,8 +69,6 @@ class Bank extends BaseCommand { data.memberData.money -= credits; data.memberData.bankSold += credits; - data.memberData.markModified("money"); - data.memberData.markModified("bankSold"); await data.memberData.save(); const info = { @@ -104,8 +102,6 @@ class Bank extends BaseCommand { data.memberData.money += credits; data.memberData.bankSold -= credits; - data.memberData.markModified("money"); - data.memberData.markModified("bankSold"); await data.memberData.save(); interaction.success("economy/bank:SUCCESS_WD", { diff --git a/commands/Economy/birthdate.js b/commands/Economy/birthdate.js index af956487..b114b5cb 100644 --- a/commands/Economy/birthdate.js +++ b/commands/Economy/birthdate.js @@ -90,7 +90,6 @@ class Birthdate extends BaseCommand { data.userData.birthdate = d; - data.userData.markModified("birthdate"); await data.userData.save(); interaction.success("economy/birthdate:SUCCESS", { diff --git a/commands/Economy/divorce.js b/commands/Economy/divorce.js index ddeb5d68..0c625f34 100644 --- a/commands/Economy/divorce.js +++ b/commands/Economy/divorce.js @@ -40,7 +40,6 @@ class Divorce extends BaseCommand { data.userData.lover = null; - data.user.markModified("lover"); await data.userData.save(); const oldLover = await client.findOrCreateUser({ @@ -48,7 +47,6 @@ class Divorce extends BaseCommand { }); oldLover.lover = null; - oldLover.markModified("lover"); await oldLover.save(); interaction.success("economy/divorce:DIVORCED", { diff --git a/commands/Economy/marry.js b/commands/Economy/marry.js index 57f7f50a..51815699 100644 --- a/commands/Economy/marry.js +++ b/commands/Economy/marry.js @@ -130,10 +130,7 @@ class Marry extends BaseCommand { data.userData.lover = member.id; userData.lover = interaction.member.id; - data.userData.markModified("lover"); await data.userData.save(); - - userData.markModified("lover"); await userData.save(); const messageOptions = { @@ -153,7 +150,6 @@ class Marry extends BaseCommand { userData.achievements.married.achieved = true; userData.achievements.married.progress.now = 1; - userData.markModified("achievements.married"); await userData.save(); } @@ -162,7 +158,6 @@ class Marry extends BaseCommand { data.userData.achievements.married.achieved = true; data.userData.achievements.married.progress.now = 1; - data.userData.markModified("achievements.married"); await data.userData.save(); } diff --git a/commands/Economy/pay.js b/commands/Economy/pay.js index aed3866e..4d08b44a 100644 --- a/commands/Economy/pay.js +++ b/commands/Economy/pay.js @@ -73,12 +73,10 @@ class Pay extends BaseCommand { data.memberData.money -= amount; - data.memberData.markModified("money"); await data.memberData.save(); memberData.money += amount; - memberData.markModified("money"); await memberData.save(); const info1 = { diff --git a/commands/Economy/rep.js b/commands/Economy/rep.js index 7f7d09d0..2f30e5e5 100644 --- a/commands/Economy/rep.js +++ b/commands/Economy/rep.js @@ -62,7 +62,6 @@ class Rep extends BaseCommand { data.userData.cooldowns.rep = toWait; - data.userData.markModified("cooldowns"); await data.userData.save(); const userData = await client.findOrCreateUser({ @@ -85,9 +84,8 @@ class Rep extends BaseCommand { ], }); } - - userData.markModified("achievements.rep"); } + await userData.save(); interaction.success("economy/rep:SUCCESS", { diff --git a/commands/Economy/rob.js b/commands/Economy/rob.js index b5fd1bb2..f769e4bd 100644 --- a/commands/Economy/rob.js +++ b/commands/Economy/rob.js @@ -88,7 +88,6 @@ class Rob extends BaseCommand { memberData.cooldowns.rob = toWait; - memberData.markModified("cooldowns"); await memberData.save(); interaction.replyT("economy/rob:ROB_WON_" + randomNum, { @@ -99,8 +98,6 @@ class Rob extends BaseCommand { data.memberData.money += amount; memberData.money -= amount; - data.memberData.markModified("money"); - memberData.markModified("money"); await data.memberData.save(); await memberData.save(); } else { @@ -116,8 +113,6 @@ class Rob extends BaseCommand { data.memberData.money -= potentiallyLose; memberData.money += won; - data.memberData.markModified("money"); - memberData.markModified("money"); await data.memberData.save(); await memberData.save(); } diff --git a/commands/Economy/setbio.js b/commands/Economy/setbio.js index 12da1b24..0b7d356e 100644 --- a/commands/Economy/setbio.js +++ b/commands/Economy/setbio.js @@ -50,7 +50,6 @@ class Setbio extends BaseCommand { data.userData.bio = newBio; - data.memberData.markModified("bio"); await data.userData.save(); interaction.success("economy/setbio:SUCCESS"); diff --git a/commands/Economy/slots.js b/commands/Economy/slots.js index 33bffff6..63a3e7fc 100644 --- a/commands/Economy/slots.js +++ b/commands/Economy/slots.js @@ -129,9 +129,6 @@ class Slots extends BaseCommand { data.memberData.money += toAdd; data.memberData.transactions.push(info); - data.memberData.markModified("money"); - data.memberData.markModified("transactions"); - if (!data.userData.achievements.slots.achieved) { data.userData.achievements.slots.progress.now += 1; if (data.userData.achievements.slots.progress.now === data.userData.achievements.slots.progress.total) { @@ -146,9 +143,9 @@ class Slots extends BaseCommand { }); } - data.userData.markModified("achievements.slots"); await data.userData.save(); } + await data.memberData.save(); return; @@ -180,9 +177,6 @@ class Slots extends BaseCommand { data.memberData.money += toAdd; data.memberData.transactions.push(info); - data.memberData.markModified("money"); - data.memberData.markModified("transactions"); - if (!data.userData.achievements.slots.achieved) { data.userData.achievements.slots.progress.now += 1; if (data.userData.achievements.slots.progress.now === data.userData.achievements.slots.progress.total) { @@ -197,10 +191,11 @@ class Slots extends BaseCommand { }); } - data.userData.markModified("achievements.slots"); await data.userData.save(); } + await data.memberData.save(); + return; } @@ -222,16 +217,14 @@ class Slots extends BaseCommand { data.memberData.money -= amount; data.memberData.transactions.push(info); - data.memberData.markModified("money"); - data.memberData.markModified("transactions"); - if (!data.userData.achievements.slots.achieved) { data.userData.achievements.slots.progress.now = 0; - data.userData.markModified("achievements.slots"); await data.userData.save(); } + await data.memberData.save(); + return; } diff --git a/commands/Economy/transactions.js b/commands/Economy/transactions.js index a5dbc2e0..24547337 100644 --- a/commands/Economy/transactions.js +++ b/commands/Economy/transactions.js @@ -47,7 +47,6 @@ class Transactions extends BaseCommand { if (interaction.options.getBoolean("clear")) { data.memberData.transactions = []; - data.memberData.markModified("transactions"); await data.memberData.save(); return interaction.success("economy/transactions:CLEARED", null, { ephemeral: true }); diff --git a/commands/Economy/work.js b/commands/Economy/work.js index b515b260..985c0d50 100644 --- a/commands/Economy/work.js +++ b/commands/Economy/work.js @@ -48,9 +48,6 @@ class Work extends BaseCommand { data.memberData.cooldowns.work = toWait; data.memberData.workStreak = (data.memberData.workStreak || 0) + 1; - data.memberData.markModified("cooldowns"); - data.memberData.markModified("workStreak"); - await data.memberData.save(); const embed = new EmbedBuilder() @@ -101,7 +98,6 @@ class Work extends BaseCommand { data.memberData.money += won; - data.memberData.markModified("money"); await data.memberData.save(); const info = { @@ -128,7 +124,6 @@ class Work extends BaseCommand { data.userData.achievements.work.achieved = true; } - data.userData.markModified("achievements.work"); await data.userData.save(); } diff --git a/commands/Fun/number.js b/commands/Fun/number.js index 1fa59ca9..dcb64bf0 100644 --- a/commands/Fun/number.js +++ b/commands/Fun/number.js @@ -96,9 +96,9 @@ class Number extends BaseCommand { }; data.memberData.transactions.push(info); - data.memberData.markModified("transactions"); await memberData.save(); } + collector.stop(); } diff --git a/commands/Fun/tictactoe.js b/commands/Fun/tictactoe.js index d69557f8..f3d67230 100644 --- a/commands/Fun/tictactoe.js +++ b/commands/Fun/tictactoe.js @@ -58,7 +58,6 @@ class TicTacToe extends BaseCommand { memberData.money += 100; - memberData.markModified("money"); await memberData.save(); const info = { diff --git a/commands/General/afk.js b/commands/General/afk.js index 493f1613..57aa68c4 100644 --- a/commands/General/afk.js +++ b/commands/General/afk.js @@ -51,7 +51,6 @@ class Afk extends BaseCommand { data.userData.afk = reason; - data.userData.markModified("afk"); await data.userData.save(); interaction.success("general/afk:SUCCESS", { diff --git a/commands/General/remindme.js b/commands/General/remindme.js index ecde111b..e917292d 100644 --- a/commands/General/remindme.js +++ b/commands/General/remindme.js @@ -72,7 +72,6 @@ class Remindme extends BaseCommand { data.userData.reminds.push(rData); - data.userData.markModified("reminds"); await data.userData.save(); client.databaseCache.usersReminds.set(interaction.user.id, data.userData); diff --git a/commands/Moderation/clearwarns.js b/commands/Moderation/clearwarns.js index 1e66b199..4b94b562 100644 --- a/commands/Moderation/clearwarns.js +++ b/commands/Moderation/clearwarns.js @@ -55,7 +55,6 @@ class Clearwarns extends BaseCommand { memberData.sanctions = []; - memberData.markModified("sanctions"); await memberData.save(); interaction.success("moderation/clearwarns:SUCCESS", { diff --git a/commands/Moderation/warn.js b/commands/Moderation/warn.js index 0136e4e2..cc3fbbe1 100644 --- a/commands/Moderation/warn.js +++ b/commands/Moderation/warn.js @@ -178,7 +178,6 @@ class Warn extends BaseCommand { memberData.sanctions.push(caseInfo); - memberData.markModified("sanctions"); await memberData.save(); if (data.guildData.plugins.modlogs) { diff --git a/commands/Owner/debug.js b/commands/Owner/debug.js index 9710f056..adcdb9b4 100644 --- a/commands/Owner/debug.js +++ b/commands/Owner/debug.js @@ -148,7 +148,6 @@ class Debug extends BaseCommand { case "level": { memberData.level = int; - memberData.markModified("level"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -160,7 +159,6 @@ class Debug extends BaseCommand { case "xp": { memberData.exp = int; - memberData.markModified("exp"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -172,7 +170,6 @@ class Debug extends BaseCommand { case "credits": { memberData.money = int; - memberData.markModified("money"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -184,7 +181,6 @@ class Debug extends BaseCommand { case "bank": { memberData.bankSold = int; - memberData.markModified("bankSold"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -196,7 +192,6 @@ class Debug extends BaseCommand { case "rep": { userData.rep = int; - userData.markModified("rep"); await userData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -224,7 +219,6 @@ class Debug extends BaseCommand { case "level": { memberData.level += int; - memberData.markModified("level"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -236,7 +230,6 @@ class Debug extends BaseCommand { case "xp": { memberData.exp += int; - memberData.markModified("exp"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -248,7 +241,6 @@ class Debug extends BaseCommand { case "credits": { memberData.money += int; - memberData.markModified("money"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -260,7 +252,6 @@ class Debug extends BaseCommand { case "bank": { memberData.bankSold += int; - memberData.markModified("bankSold"); await memberData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { @@ -272,7 +263,6 @@ class Debug extends BaseCommand { case "rep": { userData.rep += int; - userData.markModified("rep"); await userData.save(); return interaction.success(`owner/debug:SUCCESS_${type.toUpperCase()}`, { diff --git a/commands/Tickets/createticketembed.js b/commands/Tickets/createticketembed.js index e0495fc8..73c6e64b 100644 --- a/commands/Tickets/createticketembed.js +++ b/commands/Tickets/createticketembed.js @@ -45,7 +45,6 @@ class CreateTicketEmbed extends BaseCommand { guildData.plugins.tickets.count++; - guildData.markModified("plugins.tickets"); await guildData.save(); const channel = await interaction.guild.channels.create({ diff --git a/dashboard/settings.js b/dashboard/settings.js index aba12bc8..8271cf64 100644 --- a/dashboard/settings.js +++ b/dashboard/settings.js @@ -29,7 +29,6 @@ module.exports = client => [ guildData.language = newData; - guildData.markModified("language"); await guildData.save(); return; @@ -55,7 +54,6 @@ module.exports = client => [ guildData.plugins.welcome.enabled = newData; - guildData.markModified("plugins.welcome"); await guildData.save(); return; @@ -76,7 +74,6 @@ module.exports = client => [ guildData.plugins.welcome.withImage = newData; - guildData.markModified("plugins.welcome"); await guildData.save(); return; @@ -97,7 +94,6 @@ module.exports = client => [ guildData.plugins.welcome.message = newData !== "" ? newData : null; - guildData.markModified("plugins.welcome"); await guildData.save(); return; @@ -118,7 +114,6 @@ module.exports = client => [ guildData.plugins.welcome.channel = newData !== "" ? newData : null; - guildData.markModified("plugins.welcome"); await guildData.save(); return; @@ -146,7 +141,6 @@ module.exports = client => [ guildData.plugins.goodbye.enabled = newData; - guildData.markModified("plugins.goodbye"); await guildData.save(); return; @@ -167,7 +161,6 @@ module.exports = client => [ guildData.plugins.goodbye.withImage = newData; - guildData.markModified("plugins.goodbye"); await guildData.save(); return; @@ -188,7 +181,6 @@ module.exports = client => [ guildData.plugins.goodbye.message = newData !== "" ? newData : null; - guildData.markModified("plugins.goodbye"); await guildData.save(); return; @@ -209,7 +201,6 @@ module.exports = client => [ guildData.plugins.goodbye.channel = newData !== "" ? newData : null; - guildData.markModified("plugins.goodbye"); await guildData.save(); return; @@ -237,7 +228,6 @@ module.exports = client => [ guildData.plugins.autorole.enabled = newData; - guildData.markModified("plugins.autorole"); await guildData.save(); return; @@ -258,7 +248,6 @@ module.exports = client => [ guildData.plugins.autorole.role = newData !== "" ? newData : null; - guildData.markModified("plugins.autorole"); await guildData.save(); return; @@ -286,7 +275,6 @@ module.exports = client => [ guildData.plugins.automod.enabled = newData; - guildData.markModified("plugins.automod"); await guildData.save(); return; @@ -307,7 +295,6 @@ module.exports = client => [ guildData.plugins.automod.ignored = newData; - guildData.markModified("plugins.automod"); await guildData.save(); return; @@ -337,7 +324,6 @@ module.exports = client => [ guildData.plugins.monitoring.messageUpdate = newData !== "" ? newData : null; - guildData.markModified("plugins.monitoring"); await guildData.save(); return; @@ -360,7 +346,6 @@ module.exports = client => [ guildData.plugins.monitoring.messageDelete = newData !== "" ? newData : null; - guildData.markModified("plugins.monitoring"); await guildData.save(); return; @@ -388,7 +373,6 @@ module.exports = client => [ guildData.plugins.suggestions = newData !== "" ? newData : null; - guildData.markModified("plugins.suggestions"); await guildData.save(); return; @@ -409,7 +393,6 @@ module.exports = client => [ guildData.plugins.reports = newData !== "" ? newData : null; - guildData.markModified("plugins.reports"); await guildData.save(); return; @@ -430,7 +413,6 @@ module.exports = client => [ guildData.plugins.birthdays = newData !== "" ? newData : null; - guildData.markModified("plugins.birthdays"); await guildData.save(); return; @@ -451,7 +433,6 @@ module.exports = client => [ guildData.plugins.modlogs = newData !== "" ? newData : null; - guildData.markModified("plugins.modlogs"); await guildData.save(); return; diff --git a/events/CommandHandler.js b/events/CommandHandler.js index 58306c08..5b00b60b 100644 --- a/events/CommandHandler.js +++ b/events/CommandHandler.js @@ -51,7 +51,6 @@ class CommandHandler extends BaseEvent { userData.achievements.firstCommand.progress.now = 1; userData.achievements.firstCommand.achieved = true; - userData.markModified("achievements.firstCommand"); await userData.save(); interaction.user.send(args); diff --git a/events/Guild/guildCreate.js b/events/Guild/guildCreate.js index 4eb19f47..af6435ba 100644 --- a/events/Guild/guildCreate.js +++ b/events/Guild/guildCreate.js @@ -21,7 +21,6 @@ class GuildCreate extends BaseEvent { userData.achievements.invite.progress.now = 1; userData.achievements.invite.achieved = true; - userData.markModified("achievements.invite"); await userData.save(); } diff --git a/events/Guild/guildMemberUpdate.js b/events/Guild/guildMemberUpdate.js index 90eeb687..059cf5dd 100644 --- a/events/Guild/guildMemberUpdate.js +++ b/events/Guild/guildMemberUpdate.js @@ -25,7 +25,6 @@ class GuildMemberUpdate extends BaseEvent { userData.achievements.tip.progress.now = 1; userData.achievements.tip.achieved = true; - userData.markModified("achievements.tip"); await userData.save(); newMember.send({ diff --git a/events/MessageHandler.js b/events/MessageHandler.js index 90ec0494..90b7dac5 100644 --- a/events/MessageHandler.js +++ b/events/MessageHandler.js @@ -103,7 +103,6 @@ class MessageCreate extends BaseEvent { if (afkReason) { data.userData.afk = null; - data.userData.markModified("afk"); await data.userData.save(); message.replyT("general/afk:DELETED", { @@ -151,8 +150,6 @@ async function updateXp(client, msg, memberData) { }, { mention: false }); } else memberData.exp = parseInt(newXp, 10); - memberData.markModified("exp"); - memberData.markModified("level"); await memberData.save(); } diff --git a/helpers/checkReminds.js b/helpers/checkReminds.js index 9c039d80..1f41120c 100644 --- a/helpers/checkReminds.js +++ b/helpers/checkReminds.js @@ -49,7 +49,6 @@ module.exports.init = function (client) { }); user.reminds = user.reminds.filter(r => r.sendAt >= dateNow); - user.markModified("reminds"); await user.save(); if (user.reminds.length === 0) client.databaseCache.usersReminds.delete(user.id); diff --git a/helpers/cleanup.js b/helpers/cleanup.js index cab304e4..0c547df6 100644 --- a/helpers/cleanup.js +++ b/helpers/cleanup.js @@ -30,7 +30,6 @@ module.exports.init = async function (client) { const index = transactions.indexOf(transaction); transactions.splice(index, 1); - member.markModified("transactions"); await member.save(); } } diff --git a/package.json b/package.json index d9bb1ab1..f848784a 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "i18next-fs-backend": "^1.1.5", "md5": "^2.2.1", "moment": "^2.26.0", - "mongoose": "^5.13.15", + "mongoose": "^7.6.3", "ms": "^2.1.3", "node-fetch": "^2.6.7", "youtube-ext": "^1.1.14" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8a729fa2..f48c27cb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -54,8 +54,8 @@ dependencies: specifier: ^2.26.0 version: 2.26.0 mongoose: - specifier: ^5.13.15 - version: 5.13.15 + specifier: ^7.6.3 + version: 7.6.3 ms: specifier: ^2.1.3 version: 2.1.3 @@ -312,6 +312,14 @@ packages: - supports-color dev: false + /@mongodb-js/saslprep@1.1.0: + resolution: {integrity: sha512-Xfijy7HvfzzqiOAhAepF4SGN5e9leLkMvg/OPOF97XemjfVCYN/oWa75wnkc6mltMSTwY+XlbhWgUOJmkFspSw==} + requiresBuild: true + dependencies: + sparse-bitfield: 3.0.3 + dev: false + optional: true + /@nodelib/fs.scandir@2.1.5: resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -367,27 +375,25 @@ packages: resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} dev: false - /@types/bson@4.0.5: - resolution: {integrity: sha512-vVLwMUqhYJSQ/WKcE60eFqcyuWse5fGH+NMAXHuKrUAPoryq3ATxk5o4bgYNtg5aOM4APVg7Hnb3ASqUYG0PKg==} - dependencies: - '@types/node': 20.3.3 - dev: false - /@types/http-cache-semantics@4.0.1: resolution: {integrity: sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==} dev: false - /@types/mongodb@3.6.20: - resolution: {integrity: sha512-WcdpPJCakFzcWWD9juKoZbRtQxKIMYF/JIAM4JrNHrMcnJL6/a2NWjXxW7fo9hxboxxkg+icff8d7+WIEvKgYQ==} - dependencies: - '@types/bson': 4.0.5 - '@types/node': 20.3.3 - dev: false - /@types/node@20.3.3: resolution: {integrity: sha512-wheIYdr4NYML61AjC8MKj/2jrR/kDQri/CIpVoZwldwhnIrD/j9jIU5bJ8yBKuB2VhpFV7Ab6G2XkBjv9r9Zzw==} dev: false + /@types/webidl-conversions@7.0.2: + resolution: {integrity: sha512-uNv6b/uGRLlCVmelat2rA8bcVd3k/42mV2EmjhPh6JLkd35T5bgwR/t6xy7a9MWhd9sixIeBUzhBenvk3NO+DQ==} + dev: false + + /@types/whatwg-url@8.2.2: + resolution: {integrity: sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==} + dependencies: + '@types/node': 20.3.3 + '@types/webidl-conversions': 7.0.2 + dev: false + /@types/ws@8.5.5: resolution: {integrity: sha512-lwhs8hktwxSjf9UaZ9tG5M03PGogvFaH8gUgLNbN9HKIg0dvv6q+gkSuJ8HN4/VbyxkuLzCjlN7GquQ0gUJfIg==} dependencies: @@ -498,17 +504,6 @@ packages: readable-stream: 1.0.34 dev: false - /bl@2.2.1: - resolution: {integrity: sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==} - dependencies: - readable-stream: 2.3.8 - safe-buffer: 5.2.1 - dev: false - - /bluebird@3.5.1: - resolution: {integrity: sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==} - dev: false - /boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} dev: false @@ -526,9 +521,9 @@ packages: fill-range: 7.0.1 dev: true - /bson@1.1.6: - resolution: {integrity: sha512-EvVNVeGo4tHxwi8L6bPj3y3itEvStdwvvlojVxxbyYfoaxJ6keLgrTuKdyfEAszFK+H3olzBuafE0yoh0D1gdg==} - engines: {node: '>=0.6.19'} + /bson@5.5.1: + resolution: {integrity: sha512-ix0EwukN2EpC0SRWIj/7B5+A6uQMQy6KMREI9qQqvgpkV2frH63T0UDVd1SYedL6dNCmDBYB3QtXi4ISk9YT+g==} + engines: {node: '>=14.20.1'} dev: false /busboy@1.6.0: @@ -700,17 +695,6 @@ packages: engines: {node: '>= 12'} dev: false - /debug@3.1.0: - resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.0.0 - dev: false - /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -759,11 +743,6 @@ packages: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} dev: false - /denque@1.5.1: - resolution: {integrity: sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw==} - engines: {node: '>=0.10'} - dev: false - /detect-libc@2.0.1: resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==} engines: {node: '>=8'} @@ -1381,6 +1360,10 @@ packages: resolution: {integrity: sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==} dev: false + /ip@2.0.0: + resolution: {integrity: sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==} + dev: false + /is-buffer@1.1.6: resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} dev: false @@ -1445,8 +1428,9 @@ packages: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} dev: true - /kareem@2.3.2: - resolution: {integrity: sha512-STHz9P7X2L4Kwn72fA4rGyqyXdmrMSdxqHx9IXon/FXluXieaFA6KJ2upcHAHxQPQ0LeM/OjLrhFxifHewOALQ==} + /kareem@2.5.1: + resolution: {integrity: sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==} + engines: {node: '>=12.0.0'} dev: false /keyv@4.5.2: @@ -1620,97 +1604,75 @@ packages: resolution: {integrity: sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==} dev: false - /mongodb@3.7.3: - resolution: {integrity: sha512-Psm+g3/wHXhjBEktkxXsFMZvd3nemI0r3IPsE0bU+4//PnvNWKkzhZcEsbPcYiWqe8XqXJJEg4Tgtr7Raw67Yw==} - engines: {node: '>=4'} + /mongodb-connection-string-url@2.6.0: + resolution: {integrity: sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==} + dependencies: + '@types/whatwg-url': 8.2.2 + whatwg-url: 11.0.0 + dev: false + + /mongodb@5.9.0: + resolution: {integrity: sha512-g+GCMHN1CoRUA+wb1Agv0TI4YTSiWr42B5ulkiAfLLHitGK1R+PkSAf3Lr5rPZwi/3F04LiaZEW0Kxro9Fi2TA==} + engines: {node: '>=14.20.1'} peerDependencies: - aws4: '*' - bson-ext: '*' - kerberos: '*' - mongodb-client-encryption: '*' - mongodb-extjson: '*' - snappy: '*' + '@aws-sdk/credential-providers': ^3.188.0 + '@mongodb-js/zstd': ^1.0.0 + kerberos: ^1.0.0 || ^2.0.0 + mongodb-client-encryption: '>=2.3.0 <3' + snappy: ^7.2.2 peerDependenciesMeta: - aws4: + '@aws-sdk/credential-providers': optional: true - bson-ext: + '@mongodb-js/zstd': optional: true kerberos: optional: true mongodb-client-encryption: optional: true - mongodb-extjson: - optional: true snappy: optional: true dependencies: - bl: 2.2.1 - bson: 1.1.6 - denque: 1.5.1 - optional-require: 1.1.8 - safe-buffer: 5.2.1 + bson: 5.5.1 + mongodb-connection-string-url: 2.6.0 + socks: 2.7.1 optionalDependencies: - saslprep: 1.0.3 + '@mongodb-js/saslprep': 1.1.0 dev: false - /mongoose-legacy-pluralize@1.0.2(mongoose@5.13.15): - resolution: {integrity: sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==} - peerDependencies: - mongoose: '*' + /mongoose@7.6.3: + resolution: {integrity: sha512-moYP2qWCOdWRDeBxqB/zYwQmQnTBsF5DoolX5uPyI218BkiA1ujGY27P0NTd4oWIX+LLkZPw0LDzlc/7oh1plg==} + engines: {node: '>=14.20.1'} dependencies: - mongoose: 5.13.15 - dev: false - - /mongoose@5.13.15: - resolution: {integrity: sha512-cxp1Gbb8yUWkaEbajdhspSaKzAvsIvOtRlYD87GN/P2QEUhpd6bIvebi36T6M0tIVAMauNaK9SPA055N3PwF8Q==} - engines: {node: '>=4.0.0'} - dependencies: - '@types/bson': 4.0.5 - '@types/mongodb': 3.6.20 - bson: 1.1.6 - kareem: 2.3.2 - mongodb: 3.7.3 - mongoose-legacy-pluralize: 1.0.2(mongoose@5.13.15) - mpath: 0.8.4 - mquery: 3.2.5 - ms: 2.1.2 - optional-require: 1.0.3 - regexp-clone: 1.0.0 - safe-buffer: 5.2.1 - sift: 13.5.2 - sliced: 1.0.1 + bson: 5.5.1 + kareem: 2.5.1 + mongodb: 5.9.0 + mpath: 0.9.0 + mquery: 5.0.0 + ms: 2.1.3 + sift: 16.0.1 transitivePeerDependencies: - - aws4 - - bson-ext + - '@aws-sdk/credential-providers' + - '@mongodb-js/zstd' - kerberos - mongodb-client-encryption - - mongodb-extjson - snappy - supports-color dev: false - /mpath@0.8.4: - resolution: {integrity: sha512-DTxNZomBcTWlrMW76jy1wvV37X/cNNxPW1y2Jzd4DZkAaC5ZGsm8bfGfNOthcDuRJujXLqiuS6o3Tpy0JEoh7g==} + /mpath@0.9.0: + resolution: {integrity: sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==} engines: {node: '>=4.0.0'} dev: false - /mquery@3.2.5: - resolution: {integrity: sha512-VjOKHHgU84wij7IUoZzFRU07IAxd5kWJaDmyUzQlbjHjyoeK5TNeeo8ZsFDtTYnSgpW6n/nMNIHvE3u8Lbrf4A==} - engines: {node: '>=4.0.0'} + /mquery@5.0.0: + resolution: {integrity: sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==} + engines: {node: '>=14.0.0'} dependencies: - bluebird: 3.5.1 - debug: 3.1.0 - regexp-clone: 1.0.0 - safe-buffer: 5.1.2 - sliced: 1.0.1 + debug: 4.3.4 transitivePeerDependencies: - supports-color dev: false - /ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - dev: false - /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} @@ -1820,18 +1782,6 @@ packages: dependencies: wrappy: 1.0.2 - /optional-require@1.0.3: - resolution: {integrity: sha512-RV2Zp2MY2aeYK5G+B/Sps8lW5NHAzE5QClbFP15j+PWmP+T9PxlJXBOOLoSAdgwFvS4t0aMR4vpedMkbHfh0nA==} - engines: {node: '>=4'} - dev: false - - /optional-require@1.1.8: - resolution: {integrity: sha512-jq83qaUb0wNg9Krv1c5OQ+58EK+vHde6aBPzLvPPqJm89UQWsvSuFy9X/OSNJnFeSOKo7btE0n8Nl2+nE+z5nA==} - engines: {node: '>=4'} - dependencies: - require-at: 1.0.6 - dev: false - /optionator@0.9.3: resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} engines: {node: '>= 0.8.0'} @@ -2010,20 +1960,11 @@ packages: resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} dev: false - /regexp-clone@1.0.0: - resolution: {integrity: sha512-TuAasHQNamyyJ2hb97IuBEif4qBHGjPHBS64sZwytpLEqtBQ1gPJTnOaQ6qmpET16cK14kkjbazl6+p0RRv0yw==} - dev: false - /regexpp@3.2.0: resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} engines: {node: '>=8'} dev: true - /require-at@1.0.6: - resolution: {integrity: sha512-7i1auJbMUrXEAZCOQ0VNJgmcT2VOKPRl2YGJwgpHpC9CE91Mv4/4UYIUm4chGJaI381ZDq1JUicFii64Hapd8g==} - engines: {node: '>=4'} - dev: false - /resolve-alpn@1.2.1: resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} dev: false @@ -2077,15 +2018,6 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: false - /saslprep@1.0.3: - resolution: {integrity: sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==} - engines: {node: '>=6'} - requiresBuild: true - dependencies: - sparse-bitfield: 3.0.3 - dev: false - optional: true - /sax@1.2.4: resolution: {integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==} dev: false @@ -2125,8 +2057,8 @@ packages: engines: {node: '>=8'} dev: true - /sift@13.5.2: - resolution: {integrity: sha512-+gxdEOMA2J+AI+fVsCqeNn7Tgx3M9ZN9jdi95939l1IJ8cZsqS8sqpJyOkic2SJk+1+98Uwryt/gL6XDaV+UZA==} + /sift@16.0.1: + resolution: {integrity: sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==} dev: false /signal-exit@3.0.7: @@ -2150,8 +2082,17 @@ packages: engines: {node: '>=8'} dev: true - /sliced@1.0.1: - resolution: {integrity: sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==} + /smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + dev: false + + /socks@2.7.1: + resolution: {integrity: sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==} + engines: {node: '>= 10.13.0', npm: '>= 3.0.0'} + dependencies: + ip: 2.0.0 + smart-buffer: 4.2.0 dev: false /soundcloud.ts@0.5.2: @@ -2294,6 +2235,13 @@ packages: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} dev: false + /tr46@3.0.0: + resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} + engines: {node: '>=12'} + dependencies: + punycode: 2.3.0 + dev: false + /ts-mixer@6.0.3: resolution: {integrity: sha512-k43M7uCG1AkTyxgnmI5MPwKoUvS/bRvLvUb7+Pgpdlmok8AoqmUaZxUUw8zKM5B1lqZrt41GjYgnvAi0fppqgQ==} dev: false @@ -2359,6 +2307,19 @@ packages: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} dev: false + /webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + dev: false + + /whatwg-url@11.0.0: + resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} + engines: {node: '>=12'} + dependencies: + tr46: 3.0.0 + webidl-conversions: 7.0.0 + dev: false + /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} dependencies: