diff --git a/package.json b/package.json index 715fe41..ca38361 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "wump", - "version": "1.3.2", + "version": "1.4.0", "displayName": "Wump", "description": "A multi-platform bot written in Node.js", "author": "Wessel \"wesselgame\" T ", @@ -11,15 +11,15 @@ "license": "GPL-3.0", "dependencies": { "eris": "^0.9.0", - "js-yaml": "^3.12.0", + "js-yaml": "^3.12.1", "larg": "^0.0.1", - "mathjs": "^5.1.2", - "moment": "^2.22.2", - "mongoose": "^5.2.17", + "mathjs": "^5.4.2", + "moment": "^2.24.0", + "mongoose": "^5.4.10", "nabbit": "^0.0.2", "sharp": "^0.21.3", - "table": "^5.1.0", - "vm2": "^3.6.3", + "table": "^5.2.2", + "vm2": "^3.6.10", "wumpfetch": "^0.0.5" }, "devDependencies": { diff --git a/src/assets/config/colors.yml b/src/assets/config/colors.yml index 5233d8e..5d5b544 100644 --- a/src/assets/config/colors.yml +++ b/src/assets/config/colors.yml @@ -15,6 +15,7 @@ util : info : stats : 0x02C2F33 # Dark but not black guild : 0x7289DA # Blurple + commits : 0x7289DA # Blurple avatar : 0x02C2F33 # Dark but not black commands: 0x02C2F33 # Dark but not black diff --git a/src/assets/config/emotes.yml b/src/assets/config/emotes.yml index 884111f..6f399d3 100644 --- a/src/assets/config/emotes.yml +++ b/src/assets/config/emotes.yml @@ -51,7 +51,10 @@ info: 13 : <:dnd:362670805676720128> # Total DnD members 14 : <:offline:362670805441708032> # Total offline members 15 : <:exclamation:542368036255039509> # Invalid query - avatar : <:blueberry:506201160382939141> # User's avatar + avatar : <:blueberry:506201160382939141> # User's avatar + commits : + 0 : <:wumplus:542809926414761995> # 10 most recent commits + 1 : <:early:542366345795207178> # Total commits commands : 0 : <:blueberry:506201160382939141> # Guild prefix 1 : <:spirit:332131321759399937> # More info diff --git a/src/assets/i18n/en_us/strings.yml b/src/assets/i18n/en_us/strings.yml index d6e20ff..4753e3f 100644 --- a/src/assets/i18n/en_us/strings.yml +++ b/src/assets/i18n/en_us/strings.yml @@ -5,12 +5,10 @@ translation : orig : 'English (United States)' # Full language name in your language progress : 100 # Progression of the translation (%) translator : # Your information (can leave fields empty) - email : 'discord@go2it.eu' # Optional - website : 'https://wessel.meek.moe' # Optional discord : - name : 'Wesselgame' # Required, can be set to "Clyde" - userid : '107130754189766656' # Required, can be set to "1" - discrim: '0498' # Required, can be set to "0001" + - name : 'Wesselgame' # Required, can be set to "Clyde" + userid : '107130754189766656' # Required, can be set to "1" + discrim: '0498' # Required, can be set to "0001" error : - '$[author:mention] **>** An error occurred while executing this command' @@ -63,6 +61,9 @@ info : stats : fetching: '$[emoji#0] Fetching statistics, this may take some time...' avatar : '$[emoji#0] Here''s **$[user:full]** avatar' + commits : + - '$[emoji#1] **Total commits**: [`$[commits:total]`](https://github.com/PassTheWessel/wump/commits "Click here for a list of all commits")' + - '$[emoji#0] **10 most recent commits done on [`PassTheWessel/wump`](https://github.com/PassTheWessel/wump/)**: $[commits:list]' commands: multi : - '$[emoji#0] The prefix for **$[guild:name]** is `$[guild:prefix]`' diff --git a/src/assets/i18n/nl/strings.yml b/src/assets/i18n/nl/strings.yml index 4d74374..3cef01a 100644 --- a/src/assets/i18n/nl/strings.yml +++ b/src/assets/i18n/nl/strings.yml @@ -5,10 +5,8 @@ translation : orig : 'Nederlands' # Full language name in your language progress : 100 # Progression of the translation (%) translator : # Your information (can leave fields empty) - email : 'discord@go2it.eu' # Optional - website : 'https://wessel.meek.moe' # Optional discord : - name : 'Wesselgame' # Required, can be set to "Clyde" + - name : 'Wesselgame' # Required, can be set to "Clyde" userid : '107130754189766656' # Required, can be set to "1" discrim: '0498' # Required, can be set to "0001" diff --git a/src/assets/img/emoji/wumplus.png b/src/assets/img/emoji/wumplus.png new file mode 100644 index 0000000..83c215d Binary files /dev/null and b/src/assets/img/emoji/wumplus.png differ diff --git a/src/commands/Discord/Core/locale.js b/src/commands/Discord/Core/locale.js index aa10ddb..b47bbd7 100644 --- a/src/commands/Discord/Core/locale.js +++ b/src/commands/Discord/Core/locale.js @@ -22,6 +22,9 @@ module.exports = class Locale extends DiscordCommand { } async execute(msg, args, user, guild) { + if (!user || user === null) user = await this.bot.m.connection.collection('dUsers').findOne({ userId: msg.author.id }); + if (!guild || guild === null) guild = await this.bot.m.connection.collection('dGuilds').findOne({ guildId: msg.channel.guild.id }); + if (args.join(' ').includes('-u') || args.join(' ').includes('--user')) { for (let i = 0; i < args.length; i++) !this.bot.locales.has(args[i]) ? args.splice(i, -1) : undefined; if (!this.bot.locales.has(args[0])) return msg.channel.createMessage(this.localize(msg.author.locale['core']['locale']['invalid'])); diff --git a/src/commands/Discord/Developer/echo.js b/src/commands/Discord/Developer/echo.js index 521e375..1b008bd 100644 --- a/src/commands/Discord/Developer/echo.js +++ b/src/commands/Discord/Developer/echo.js @@ -25,8 +25,9 @@ module.exports = class Eval extends DiscordCommand { } localize(msg) { + // Empty if (!msg) return ''; - + // Main return msg.replace(/\$\[emoji#0]/g, this.bot.emote('developer', 'echo')); } }; \ No newline at end of file diff --git a/src/commands/Discord/Developer/eval.js b/src/commands/Discord/Developer/eval.js index b602111..3ab3955 100644 --- a/src/commands/Discord/Developer/eval.js +++ b/src/commands/Discord/Developer/eval.js @@ -5,12 +5,13 @@ const { inspect } = require('util'); module.exports = class Eval extends DiscordCommand { constructor(bot) { super(bot, { + // Information name : 'eval', syntax : 'eval <...code:str>', aliases : [], argument : [], description: 'Evaluate a snippet', - + // Checks hidden : false, enabled : true, cooldown : 0, @@ -23,13 +24,12 @@ module.exports = class Eval extends DiscordCommand { async execute(msg, args) { let result; - let silent = args.join(' ').trim().endsWith('--silent') || args.join(' ').trim().endsWith('-s'); + let silent = args.join(' ').trim().endsWith('--silent') || args.join(' ').trim().endsWith('-s') ? args.pop() : false; let asynchr = args.join(' ').trim().includes('return') || args.join(' ').trim().includes('await'); let errored = false; if (args.length <= 0) return msg.channel.createMessage(this.localize(msg.author.locale['developer']['eval']['args'])); - if (silent) args = args.pop(); const message = await msg.channel.createMessage(this.localize(msg.author.locale['developer']['eval']['busy'])); try { result = (asynchr ? eval(`(async() => {${args.join(' ')}})();`) : eval(args.join(' '))); } @@ -41,29 +41,37 @@ module.exports = class Eval extends DiscordCommand { message.edit({ content: '', embed: { - color : errored ? this.bot.col['developer']['eval']['failure'] : this.bot.col['developer']['eval']['success'], - description: this.localize(msg.author.locale['developer']['eval']['result'].join('\n'), { resultType: errored ? msg.author.locale['developer']['eval']['types'][1] : msg.author.locale['developer']['eval']['types'][0], resultMessage: this.bot.util.shorten(result, 1950) || '{}' }) + color : (errored ? this.bot.col['developer']['eval']['failure'] : this.bot.col['developer']['eval']['success']), + description: this.localize(msg.author.locale['developer']['eval']['result'].join('\n'), { resultType: errored ? msg.author.locale['developer']['eval']['types'][1] : msg.author.locale['developer']['eval']['types'][0], resultMessage: this.bot.util.shorten(result, 1900) || '{}' }) } }); }; } sanitize(msg) { + // Empty if (!msg) return undefined; - - for(let _ in this.bot.conf['api']) msg = msg.replace(new RegExp(this.bot.conf['api'][_], 'gi'), '<--snip-->'); - + // API tokens + for(let _ in this.bot.conf['api']) { + msg = msg.replace(new RegExp(this.bot.conf['api'][_], 'gi'), '<--snip-->'); + } + // Bot tokens return msg .replace(new RegExp(this.bot.token, 'gi'), '<--snip-->') .replace(new RegExp(this.bot.conf['discord']['token'], 'gi'), '<--snip-->'); } localize(msg, extData) { + // Empty if (!msg) return ''; - - if (extData && extData.resultType) msg = msg.replace(/\$\[result:type]/g, extData.resultType); - if (extData && extData.resultMessage) msg = msg.replace(/\$\[result:message]/g, extData.resultMessage); - + // extData + if (extData && extData.resultType) { + msg = msg.replace(/\$\[result:type]/g, extData.resultType); + } + if (extData && extData.resultMessage) { + msg = msg.replace(/\$\[result:message]/g, extData.resultMessage); + } + // Main return msg .replace(/\$\[emoji#0]/g, this.bot.emote('developer', 'eval', '0')) .replace(/\$\[emoji#1]/g, this.bot.emote('developer', 'eval', '1')) diff --git a/src/commands/Discord/Information/commands.js b/src/commands/Discord/Information/commands.js index 19e6d61..cb42fd0 100644 --- a/src/commands/Discord/Information/commands.js +++ b/src/commands/Discord/Information/commands.js @@ -43,11 +43,6 @@ module.exports = class Commands extends DiscordCommand { thumbnail : { url: 'attachment://thumb.png' }, description: this.localize(msg.author.locale['info']['commands']['multi'].join('\n'), { msg: msg }), fields : [ - { - name : msg.author.locale['info']['commands']['fields'][0], - value : this.bot.cmds.filter((v) => v.extData.category.toLowerCase() === 'core' && !v.extData.hidden).map((v) => `**•** [\`${msg.prefix}${v.extData.name}\`](https://discordapp.com/channels/${msg.channel.guild.id}/${msg.channel.id}/${msg.id}) ${v.extData.description ? `**-** ${v.extData.description}` : ''}`).join('\n'), - inline: true - }, { name : msg.author.locale['info']['commands']['fields'][1], value : this.bot.cmds.filter((v) => v.extData.category.toLowerCase() === 'information' && !v.extData.hidden).map((v) => `**•** [\`${msg.prefix}${v.extData.name}\`](https://discordapp.com/channels/${msg.channel.guild.id}/${msg.channel.id}/${msg.id}) ${v.extData.description ? `**-** ${v.extData.description}` : ''}`).join('\n'), @@ -67,6 +62,11 @@ module.exports = class Commands extends DiscordCommand { name : msg.author.locale['info']['commands']['fields'][4], value : this.bot.cmds.filter((v) => v.extData.category.toLowerCase() === 'developer' && !v.extData.hidden).map((v) => `**•** [\`${msg.prefix}${v.extData.name}\`](https://discordapp.com/channels/${msg.channel.guild.id}/${msg.channel.id}/${msg.id}) ${v.extData.description ? `**-** ${v.extData.description}` : ''}`).join('\n'), inline: true + }, + { + name : msg.author.locale['info']['commands']['fields'][0], + value : this.bot.cmds.filter((v) => v.extData.category.toLowerCase() === 'core' && !v.extData.hidden).map((v) => `**•** [\`${msg.prefix}${v.extData.name}\`](https://discordapp.com/channels/${msg.channel.guild.id}/${msg.channel.id}/${msg.id}) ${v.extData.description ? `**-** ${v.extData.description}` : ''}`).join('\n'), + inline: true } ] } diff --git a/src/commands/Discord/Information/commits.js b/src/commands/Discord/Information/commits.js new file mode 100644 index 0000000..feeccd6 --- /dev/null +++ b/src/commands/Discord/Information/commits.js @@ -0,0 +1,44 @@ +const { DiscordCommand } = require('../../../core'); + +const w = require('wumpfetch'); +module.exports = class Stats extends DiscordCommand { + constructor(bot) { + super(bot, { + name : 'commits', + syntax : 'commits', + aliases : [], + argument : [], + description: '10 most recent commits', + + hidden : false, + enabled : true, + cooldown : 5000, + category : 'Information', + ownerOnly : false, + guildOnly : false, + permissions: [ 'embedLinks' ] + }); + + } + + async execute( msg, args ) { + let res = await w('https://api.github.com/repos/PassTheWessel/wump/commits', { headers: { 'User-Agent': this.bot.ua } }).send(); + res = res.json(); + + msg.channel.createMessage({ + embed: { + color : this.bot.col['info']['commits'], + description: this.localize(msg.author.locale['info']['commits'].join('\n'), { total: res.length, commits: res.map((v) => `**•** [\`${v.sha.slice(0, 7)}\`](${v.html_url}) **⤏** ${this.bot.util.shorten(v.commit.message, 80)}`).slice(0, 10).join('\n') }) + } + }); + } + + localize(msg, extData) { + if (!msg) return ''; + return msg + .replace(/\$\[emoji#0]/g, this.bot.emote('info', 'commits', '0')) + .replace(/\$\[emoji#1]/g, this.bot.emote('info', 'commits', '1')) + .replace(/\$\[commits:list]/g, `\n${extData.commits}`) + .replace(/\$\[commits:total]/g, `\n${extData.total}`); + } +}; \ No newline at end of file diff --git a/src/core/internal/Discord/Command.js b/src/core/internal/Discord/Command.js index 6b7c52b..5e0392e 100644 --- a/src/core/internal/Discord/Command.js +++ b/src/core/internal/Discord/Command.js @@ -2,12 +2,13 @@ module.exports = class WumpCommand { constructor(bot, opts = {}) { this.bot = bot; this.extData = Object.assign({ + // Information name : null, // Command name ( required ) syntax : null, // Command syntax ( optional ) aliases : [], // Command aliases ( optional ) argument : [], // Command arguments ( optional ) description : null, // Command description ( optional ) - + // Checks hidden : false, // Hidden from view ( true / false ) enabled : true, // Enabled or disabled ( true / false ) cooldown : 1000, // Command cooldown ( optional ) diff --git a/src/core/registry/Discord/Commands.js b/src/core/registry/Discord/Commands.js index 659e4ed..6ac0351 100644 --- a/src/core/registry/Discord/Commands.js +++ b/src/core/registry/Discord/Commands.js @@ -68,23 +68,34 @@ module.exports = class CommandRegistry { perm = msg.channel.permissionsOf(this.bot.user.id); gCache = this.bot.cache.has('guilds') ? this.bot.cache.get('guilds') : this.bot.cache.set('guilds', []) && this.bot.cache.get('guilds'); uCache = this.bot.cache.has('users') ? this.bot.cache.get('users') : this.bot.cache.set('users', []) && this.bot.cache.get('users'); + if (!this.checkArray('guildId', msg.channel.guild.id, gCache)) { - guild = await this.bot.m.connection.collection('dGuilds').findOne({ guildId: msg.channel.guild.id }); - if (guild === null || !guild) { - guild = new this.bot.schema.guild({ guildId: msg.channel.guild.id }); - await guild.save((err) => { if (err) process.handleError(err); }); - } else gCache.push({ 'guildId': msg.channel.guild.id, 'prefix': guild.prefix, 'entryAge': Date.now() }); - } else guild = gCache.filter((v) => v['guildId'] === msg.channel.guild.id ); + // guild = await this.bot.m.connection.collection('dGuilds').findOne({ guildId: msg.channel.guild.id }); + this.bot.m.connection.collection('dGuilds').findOne({ guildId: msg.channel.guild.id }, async (err, doc) => { + if (doc === null) { + guild = new this.bot.schema.guild({ guildId: msg.channel.guild.id }); + guild.save((err) => { if (err) process.handleError(err); }); + gCache.push({ 'guildId': msg.channel.guild.id, 'prefix': guild.prefix, 'entryAge': Date.now() }); + } else { + guild = await this.bot.m.connection.collection('dGuilds').findOne({ guildId: msg.channel.guild.id }); + gCache.push({ 'guildId': msg.channel.guild.id, 'prefix': guild.prefix, 'entryAge': Date.now() }); + } + }); + } else guild = gCache.filter((v) => v['guildId'] === msg.channel.guild.id )[0]; if (!this.checkArray('userId', msg.author.id, uCache)) { - user = await this.bot.m.connection.collection('dUsers').findOne({ userId: msg.author.id }); - if (user === null || !user) { - user = new this.bot.schema.user({ userId: msg.author.id }); - await user.save((err) => { if (err) process.handleError(err); }); - } else uCache.push({ 'userId': msg.author.id, locale: user.locale ? user.locale : this.bot.conf['discord']['locale'], 'entryAge': Date.now() }); + this.bot.m.connection.collection('dUsers').findOne({ userId: msg.author.id }, async (err, doc) => { + if (doc === null) { + user = new this.bot.schema.user({ userId: msg.author.id }); + user.save((err) => { if (err) process.handleError(err); }); + uCache.push({ 'userId': msg.author.id, locale: user.locale ? user.locale : this.bot.conf['discord']['locale'], 'prefix': user.prefix, 'entryAge': Date.now() }); + } else { + user = await this.bot.m.connection.collection('dUsers').findOne({ userId: msg.author.id }); + uCache.push({ 'userId': msg.author.id, locale: user.locale ? user.locale : this.bot.conf['discord']['locale'], 'entryAge': Date.now() }); + } + }); } else user = uCache.filter((v) => v['userId'] === msg.author.id )[0]; - msg.author.locale = this.bot.locales.get(user['locale'] ? user['locale'] : 'en_us'); - + msg.author.locale = this.bot.locales.get(user && user['locale'] ? user['locale'] : 'en_us'); prefix = new RegExp([ `^<@!?${this.bot.user.id}> `, `^${this.bot.conf['discord']['prefix'].replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&')}`, @@ -108,8 +119,8 @@ module.exports = class CommandRegistry { if (!this.bot.cache.has('commands_ran')) this.bot.cache.set('commands_ran', 1); else this.bot.cache.set('commands_ran', this.bot.cache.get('commands_ran') + 1); - user['entryAge'] = Date.now(); - guild['entryAge'] = Date.now(); + user ? user['entryAge'] = Date.now() : undefined; + guild ? guild['entryAge'] = Date.now() : undefined; cmd = cmd[0]; if (cmd.extData.ownerOnly && !this.bot.op(msg.author.id)) diff --git a/yarn.lock b/yarn.lock index 7751c56..a38e4d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24,14 +24,14 @@ acorn-jsx@^5.0.0: integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== acorn@^6.0.2: - version "6.0.6" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.6.tgz#cd75181670d5b99bdb1b1c993941d3a239ab1f56" - integrity sha512-5M3G/A4uBSMIlfJ+h9W125vJvPFH/zirISsW5qfxF5YzEvXJCtolLoQvM5yZft0DvMcUrPGKPOlgEu55I6iUtA== + version "6.0.7" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.7.tgz#490180ce18337270232d9488a44be83d9afb7fd3" + integrity sha512-HNJNgE60C9eOTgn974Tlp3dpLZdUr+SoxxDwPaY9J/kDNOLQTkaDgwBUXAF4SSsrAwD9RpdxuHK/EbuF+W9Ahw== ajv@^6.5.3, ajv@^6.6.1: - version "6.7.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.7.0.tgz#e3ce7bb372d6577bb1839f1dfdfcbf5ad2948d96" - integrity sha512-RZXPviBTtfmtka9n9sy1N5M5b82CbxWIR6HIis4s3WQTXDJamc/0gpCWNGz6EWdWp4DOfjzJfhz/AS9zVPjjWg== + version "6.8.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.8.1.tgz#0890b93742985ebf8973cd365c5b23920ce3cb20" + integrity sha512-eqxCp82P+JfqL683wwsL73XmFs1eG6qjw+RD3YHx+Jll1r0jNd4dh8QG9NYAeNGA/hnZjeEDgtTskgJULbxpWQ== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" @@ -692,7 +692,7 @@ js-tokens@^4.0.0: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== -js-yaml@^3.12.0: +js-yaml@^3.12.0, js-yaml@^3.12.1: version "3.12.1" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.1.tgz#295c8632a18a23e054cf5c9d3cecafe678167600" integrity sha512-um46hB9wNOKlwkHgiuyEVAybXBjwFUV0Z/RaHJblRd9DXltue9FTYvzCr9ErQrK9Adz5MU4gHWVaNUfdmrC8qA== @@ -733,7 +733,7 @@ lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.5: resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== -mathjs@^5.1.2: +mathjs@^5.4.2: version "5.4.2" resolved "https://registry.yarnpkg.com/mathjs/-/mathjs-5.4.2.tgz#44f4e5ae88c188f9a8dc80e5ce1b41af29829261" integrity sha512-jN6SLsaRvihxgRoq4+5/Tbw/mVe71W0kCxZA2TdpNRR+MHJGow/TsRrU5B6uXd7lYNWxiVeubn+F5d3mLtxARw== @@ -801,15 +801,15 @@ mkdirp@^0.5.0, mkdirp@^0.5.1: dependencies: minimist "0.0.8" -moment@^2.22.2: +moment@^2.24.0: version "2.24.0" resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== -mongodb-core@3.1.9: - version "3.1.9" - resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-3.1.9.tgz#c31ee407bf932b0149eaed775c17ee09974e4ca3" - integrity sha512-MJpciDABXMchrZphh3vMcqu8hkNf/Mi+Gk6btOimVg1XMxLXh87j6FAvRm+KmwD1A9fpu3qRQYcbQe4egj23og== +mongodb-core@3.1.11: + version "3.1.11" + resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-3.1.11.tgz#b253038dbb4d7329f3d1c2ee5400bb0c9221fde5" + integrity sha512-rD2US2s5qk/ckbiiGFHeu+yKYDXdJ1G87F6CG3YdaZpzdOm5zpoAZd/EKbPmFO6cQZ+XVXBXBJ660sSI0gc6qg== dependencies: bson "^1.1.0" require_optional "^1.0.1" @@ -817,12 +817,12 @@ mongodb-core@3.1.9: optionalDependencies: saslprep "^1.0.0" -mongodb@3.1.10: - version "3.1.10" - resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.1.10.tgz#45ad9b74ea376f4122d0881b75e5489b9e504ed7" - integrity sha512-Uml42GeFxhTGQVml1XQ4cD0o/rp7J2ROy0fdYUcVitoE7vFqEhKH4TYVqRDpQr/bXtCJVxJdNQC1ntRxNREkPQ== +mongodb@3.1.13: + version "3.1.13" + resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.1.13.tgz#f8cdcbb36ad7a08b570bd1271c8525753f75f9f4" + integrity sha512-sz2dhvBZQWf3LRNDhbd30KHVzdjZx9IKC0L+kSZ/gzYquCF5zPOgGqRz6sSCqYZtKP2ekB4nfLxhGtzGHnIKxA== dependencies: - mongodb-core "3.1.9" + mongodb-core "3.1.11" safe-buffer "^5.1.2" mongoose-legacy-pluralize@1.0.2: @@ -830,16 +830,16 @@ mongoose-legacy-pluralize@1.0.2: resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz#3ba9f91fa507b5186d399fb40854bff18fb563e4" integrity sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ== -mongoose@^5.2.17: - version "5.4.9" - resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.4.9.tgz#3cf4f74d2598e62974b7b617a4fa34a838bf32b4" - integrity sha512-4dSQpDUe/9b7A7dRrsyJfWmoGEpeMaZ/WZ/KIJFqTHbJm3NUWaWF++hhirAgjtoHNq2ZILIII0LHEhgzP2NuRw== +mongoose@^5.4.10: + version "5.4.10" + resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.4.10.tgz#640ee516449bc736a729e49e3eba873ae63a0030" + integrity sha512-yJl+A7p8QF++tyBl6fRGFON5GV57MTXLKNiaiqgX5vZs1qJpcZpPiUGU5odBiqTHFYPybuRp8dW9Qtv4K6SxBQ== dependencies: async "2.6.1" bson "~1.1.0" kareem "2.3.0" - mongodb "3.1.10" - mongodb-core "3.1.9" + mongodb "3.1.13" + mongodb-core "3.1.11" mongoose-legacy-pluralize "1.0.2" mpath "0.5.1" mquery "3.2.0" @@ -904,7 +904,7 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-abi@^2.2.0: +node-abi@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.7.0.tgz#e2f814088ab97c85504ae2bacb8f93d5d77cbc2b" integrity sha512-egTtvNoZLMjwxkL/5iiJKYKZgn2im0zP+G+PncMxICYGiD3aZtXUvEsDmu0pF8gpASvLZyD8v53qi1/ELaRZpg== @@ -1000,9 +1000,9 @@ path-key@^2.0.1: integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= prebuild-install@^5.2.2: - version "5.2.3" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.2.3.tgz#096f5116e63eeef57ae533a2ee460b13d7872704" - integrity sha512-sdijGV8EkK244XbYJLRhOLiHj9QZKUaYW6uDotEPpRGrC5FUXFr6mZhGHr9NjhU0MISI+JSqZ0geVZMs2kIDRQ== + version "5.2.4" + resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.2.4.tgz#8cc41a217ef778a31d3a876fe6668d05406db750" + integrity sha512-CG3JnpTZXdmr92GW4zbcba4jkDha6uHraJ7hW4Fn8j0mExxwOKK20hqho8ZuBDCKYCHYIkFM1P2jhtG+KpP4fg== dependencies: detect-libc "^1.0.3" expand-template "^2.0.3" @@ -1010,7 +1010,7 @@ prebuild-install@^5.2.2: minimist "^1.2.0" mkdirp "^0.5.1" napi-build-utils "^1.0.1" - node-abi "^2.2.0" + node-abi "^2.7.0" noop-logger "^0.1.1" npmlog "^4.0.1" os-homedir "^1.0.1" @@ -1316,7 +1316,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -table@^5.0.2, table@^5.1.0: +table@^5.0.2, table@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/table/-/table-5.2.2.tgz#61d474c9e4d8f4f7062c98c7504acb3c08aa738f" integrity sha512-f8mJmuu9beQEDkKHLzOv4VxVYlU68NpdzjbGPl69i4Hx0sTopJuNxuzJd17iV2h24dAfa93u794OnDA5jqXvfQ== @@ -1430,7 +1430,7 @@ util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -vm2@^3.6.3: +vm2@^3.6.10: version "3.6.10" resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.6.10.tgz#a9066c3849ad8a3ea35b9c0cf79a6589ce6e3cbe" integrity sha512-p4LBl7theIhmKaWPdCn25kEIG0bfDDEDx1lexXH7gcCu9pHIT+PKFgofwLHVHUGhe39lKExeaYVEZtdbQhdl2g==