From 083b857795ecdd52f9a0d7ce342e6547e735dd33 Mon Sep 17 00:00:00 2001 From: Wessel T Date: Thu, 7 Feb 2019 21:55:48 +0100 Subject: [PATCH] Add commits cmd and hopefully fix the double db issue! --- package.json | 14 ++--- src/assets/config/colors.yml | 1 + src/assets/config/emotes.yml | 5 +- src/assets/i18n/en_us/strings.yml | 11 ++-- src/assets/i18n/nl/strings.yml | 4 +- src/assets/img/emoji/wumplus.png | Bin 0 -> 16294 bytes src/commands/Discord/Core/locale.js | 3 + src/commands/Discord/Developer/echo.js | 3 +- src/commands/Discord/Developer/eval.js | 32 ++++++---- src/commands/Discord/Information/commands.js | 10 +-- src/commands/Discord/Information/commits.js | 44 +++++++++++++ src/core/internal/Discord/Command.js | 3 +- src/core/registry/Discord/Commands.js | 41 +++++++----- yarn.lock | 62 +++++++++---------- 14 files changed, 152 insertions(+), 81 deletions(-) create mode 100644 src/assets/img/emoji/wumplus.png create mode 100644 src/commands/Discord/Information/commits.js 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 0000000000000000000000000000000000000000..83c215dd3e5d92a9509268e8a11e75dd7fa5ab29 GIT binary patch literal 16294 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 literal 0 HcmV?d00001 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==