diff --git a/TODO.md b/TODO.md index e8efdc2..02ab1fa 100644 --- a/TODO.md +++ b/TODO.md @@ -8,6 +8,7 @@ - [x] Tags - [x] Commands - [x] Use + - [x] List - [ ] Edit - [ ] Info - [x] Create diff --git a/package.json b/package.json index c302a99..c1be908 100644 --- a/package.json +++ b/package.json @@ -12,15 +12,15 @@ "dependencies": { "eris": "^0.9.0", "js-yaml": "^3.12.1", - "larg": "^0.0.1", + "larg": "^0.0.4", "mathjs": "^5.4.2", "moment": "^2.24.0", - "mongoose": "^5.4.10", + "mongoose": "^5.4.14", "nabbit": "^0.0.2", "sharp": "^0.21.3", - "table": "^5.2.2", + "table": "^5.2.3", "vm2": "^3.6.10", - "wumpfetch": "^0.0.5" + "wumpfetch": "^0.0.7" }, "devDependencies": { "eslint": "^5.6.0" diff --git a/src/_application.yml b/src/_application.yml index 1d63d24..6b62eb7 100644 --- a/src/_application.yml +++ b/src/_application.yml @@ -7,7 +7,7 @@ # follow the licensing. - Wessel # #-------------[ Configurable values ]-------------# # db - : The db URI (Mongo) # -# debug - : The logging level # +# debug - : The logging leven # # nightly - : Run inside of dev mode # # discord: # # enabled - : Enable/disable client # @@ -72,6 +72,12 @@ discord : birb : true lizard : true penguin : true + # Category : TAGS + tag : true + tags : true + tag-add : true + tag-del : true + tag-source : true # Category : GAMES splatoon : true # Category : DEVELOPER diff --git a/src/assets/config/colors.yml b/src/assets/config/colors.yml index f2b0624..2d51570 100644 --- a/src/assets/config/colors.yml +++ b/src/assets/config/colors.yml @@ -24,6 +24,8 @@ info : multi : 0x34363C # Dark single: 0x34363C # Dark +tags: 0x7289DA # Blurple + image : cat : 0x7289DA # Blurple dog : 0x7289DA # Blurple diff --git a/src/assets/config/emotes.yml b/src/assets/config/emotes.yml index a65b7c0..44b4019 100644 --- a/src/assets/config/emotes.yml +++ b/src/assets/config/emotes.yml @@ -51,6 +51,11 @@ tags: 3: <:wumpus_love:506200781549076482> 4: <:wumpus_love:506200781549076482> 5: <:wumpus_love:506200781549076482> + + list: + 0 : <:wumpus_blob:541629681120837648> + 1 : <:ok_hand:497396122416054287> + 2 : <:wumpus_love:506200781549076482> logs : ready: '<:spacewump:542723940997529641>' diff --git a/src/assets/i18n/en_us/strings.yml b/src/assets/i18n/en_us/strings.yml index 8acdafe..4248019 100644 --- a/src/assets/i18n/en_us/strings.yml +++ b/src/assets/i18n/en_us/strings.yml @@ -164,6 +164,14 @@ tags: source: '$[emoji#1] **Here''s the source to `$[tag:name]`**: ```$[tag:content]```' + all: + none: '$[emoji#0] There are no tags yet, type `$[tag:cmd]` to create one!' + list: + - '$[emoji#1] All available tags in **$[guild:name]**:' + - '' + - '$[tag:list]' + extend: '$[emoji#2] [Click here for a list of all tags]($[tag:full])' + add: success: '$[emoji#1] Your tag (`$[tag:name]`) has been created' invalid: '$[emoji#2] You''ve provided an invalid name for your tag (*It may already exist or it''s the name/alias of a command*)' diff --git a/src/assets/i18n/nl/strings.yml b/src/assets/i18n/nl/strings.yml index 1e81daf..a057a15 100644 --- a/src/assets/i18n/nl/strings.yml +++ b/src/assets/i18n/nl/strings.yml @@ -163,7 +163,15 @@ tags: exec: '$[emoji#0] Geen etiketten gevonden met uw zoekopdracht' source: '$[emoji#1] **Hier is de bron voor `$[tag:name]`**: ```$[tag:content]```' - + + all: + none: '$[emoji#0] Er zijn nog geen etiketten, typ `$[tag:cmd]` om er een aan te maken!' + list: + - '$[emoji#1] Alle toegangbare etiketten in **$[guild:name]**:' + - '' + - '$[tag:list]' + extend: '$[emoji#2] [klik hier voor een list met al de etiketten]($[tag:full])' + add: success: '$[emoji#1] Uw etiket (`$[tag:name]`) is aangemaakt' invalid: '$[emoji#2] U hebt een ongeldige naam opgegeven voor uw etiket (*deze kan al bestaan of is de naam/alias van een commando*)' diff --git a/src/commands/Discord/Tags/tag-add.js b/src/commands/Discord/Tags/tag-add.js index 36d2e59..eb77c64 100644 --- a/src/commands/Discord/Tags/tag-add.js +++ b/src/commands/Discord/Tags/tag-add.js @@ -6,7 +6,7 @@ module.exports = class TagAdd extends DiscordCommand { constructor(bot) { super(bot, { name : 'tag-add', - syntax : 'tag-add <...name:str> <..content:string>', + syntax : 'tag-add <...name:str> | <..content:string>', aliases : [ 'tagadd', 'addtag', 'createtag', 'tagcreate', 'maketag', 'make-tag', 'tag-create' ], argument : [ '<...name:str>', '<..content:string>' ], description : 'Create a tag', diff --git a/src/commands/Discord/Tags/tag-del.js b/src/commands/Discord/Tags/tag-del.js index e1b339a..199cc4f 100644 --- a/src/commands/Discord/Tags/tag-del.js +++ b/src/commands/Discord/Tags/tag-del.js @@ -35,7 +35,7 @@ module.exports = class TagDel extends DiscordCommand { const res = await this.bot.collector.awaitMessage(msg.channel.id, msg.author.id, 30e3); if (res && res.content.toLowerCase() === 'y' || res.content.toLowerCase() === 'ye' || res.content.toLowerCase() === 'yes') { - mess.edit(this._localize(msg.author.locale.tags.delete.busy, { name: tag.name.replace(/`/g, '`\u200b') })); + if (mess) mess.edit(this._localize(msg.author.locale.tags.delete.busy, { name: tag.name.replace(/`/g, '`\u200b') })); this.bot.m.connection.collection('dTags').deleteOne({ name: tag.name, 'author.guild': msg.channel.guild.id }); if (mess) { mess.delete().catch(() => { return; }); @@ -43,7 +43,9 @@ module.exports = class TagDel extends DiscordCommand { msg.channel.createMessage(this._localize(msg.author.locale.tags.delete.done, { name: tag.name.replace(/`/g, '`\u200b') })); } else { - return mess.edit(this._localize(msg.author.locale.cancelled)); + if (mess) { + return mess.edit(this._localize(msg.author.locale.cancelled)); + } } } diff --git a/src/commands/Discord/Tags/tag.js b/src/commands/Discord/Tags/tag.js index c4c1071..5a59b78 100644 --- a/src/commands/Discord/Tags/tag.js +++ b/src/commands/Discord/Tags/tag.js @@ -17,6 +17,10 @@ module.exports = class Tag extends DiscordCommand { guildOnly : true, permissions : [] }); + + this.mutable = { + MAX_INT32: 2147483647 + }; } async execute(msg, args) { @@ -26,6 +30,7 @@ module.exports = class Tag extends DiscordCommand { } msg.channel.createMessage(tag.content); + this.bot.m.connection.collection('dTags').findOneAndUpdate({ name: tag.name, 'author.guild': msg.channel.guild.id }, { $set: { uses: tag.uses < this.mutable.MAX_INT32 ? +1 : this.mutable.MAX_INT32 } }); } _localize(msg) { diff --git a/src/commands/Discord/Tags/tags.js b/src/commands/Discord/Tags/tags.js new file mode 100644 index 0000000..1955980 --- /dev/null +++ b/src/commands/Discord/Tags/tags.js @@ -0,0 +1,106 @@ +const { DiscordCommand } = require('../../../core'); + +const w = require('wumpfetch'); +const { table } = require('table'); + +module.exports = class Tags extends DiscordCommand { + constructor(bot) { + super(bot, { + name : 'tags', + syntax : 'tags', + aliases : [], + argument : [], + description : 'A list of all tags', + + hidden : false, + enabled : true, + cooldown : 2500, + category : 'Tags', + ownerOnly : false, + guildOnly : true, + permissions : [] + }); + + this.mutable = { + LIMIT: 35, + BASE_URL: 'https://hastebin.com', + TABLE_CONFIG: { + border: { + topBody: `-`, + topJoin: `+`, + topLeft: `+`, + topRight: `+`, + + bottomBody: `-`, + bottomJoin: `+`, + bottomLeft: `+`, + bottomRight: `+`, + + bodyLeft: `|`, + bodyRight: `|`, + bodyJoin: `|`, + + joinBody: `-`, + joinLeft: `+`, + joinRight: `+`, + joinJoin: `+` + }, + drawHorizontalLine: (_, s) => { + return _ === 0 || _ === 1 || _ === s; + } + } + }; + } + + async execute(msg) { + let data = [ [ 'Tag', 'Author', 'Used' ] ]; + const tags = await this.bot.schema.tag.find({ 'author.guild': msg.channel.guild.id }).sort({ used: -1 }); + + if (!tags || tags === null || tags.length <= 0) { + return msg.channel.createMessage(this._localize(msg.author.locale.tags.all.none, { prefix: msg.prefix })); + } + + const extData = { + tags: Array.list(tags.map((v) => `${v.name.replace(/\*/g, '*\u200b').replace(/`/g, '*\u200b')} (\`${v.uses}\`)`).slice(0, this.mutable.LIMIT), '**,** ', '**and** '), + guild: msg.channel.guild.name + }; + + if (tags.length > this.mutable.LIMIT) { + tags.map((v) => data.push([ v.name, `${v.author.name}#${v.author.discrim}`, v.uses ])); + + let res = await w(`${this.mutable.BASE_URL}/documents`, { method: 'POST', data: table(data, this.mutable.TABLE_CONFIG) }).send(); + res = res.json(); + + extData.tags += `\n${this._localize(msg.author.locale.tags.all.extend, { extend: `${this.mutable.BASE_URL}/raw/${res.key}.txt` })}`; + } + + msg.channel.createMessage({ + embed: { + color: this.bot.col['tags'], + description: this._localize(msg.author.locale.tags.all.list.join('\n'), extData) + } + }); + } + + _localize(msg, extData) { + if (extData) { + if (extData.guild) { + msg = msg.replace(/\$\[guild:name]/g, extData.guild); + } + if (extData.tags) { + msg = msg.replace(/\$\[tag:list]/g, extData.tags); + } + if (extData.extend) { + msg = msg.replace(/\$\[tag:full]/g, extData.extend); + } + if (extData.prefix) { + msg = msg.replace(/\$\[tag:cmd]/g, `${extData.prefix}${this.bot.cmds.get('tag-add').extData.syntax}`); + } + } + + return msg + .replace(/\$\[emoji#0]/g, this.bot.emote('tags', 'list', '0')) + .replace(/\$\[emoji#1]/g, this.bot.emote('tags', 'list', '1')) + .replace(/\$\[emoji#2]/g, this.bot.emote('tags', 'list', '2')); + } +}; \ No newline at end of file diff --git a/src/core/registry/Discord/Commands.js b/src/core/registry/Discord/Commands.js index 28f9b8f..5f0eab9 100644 --- a/src/core/registry/Discord/Commands.js +++ b/src/core/registry/Discord/Commands.js @@ -34,7 +34,7 @@ module.exports = class CommandRegistry { if (categories[i].endsWith('md')) return; readdir(`${directory}/${categories[i]}`, (err, cmds) => { if (err) process.handleError(err, 'LoadError', cyan('Discord')); - this.bot.print(1, `${cyan('Discord')} >> Loading ${green(cmds.length)} commands from category ${yellow(categories[i])}` ); + this.bot.print(2, `${cyan('Discord')} >> Loading ${green(cmds.length)} commands from category ${yellow(categories[i])}` ); cmds.forEach((cmd) => { try { diff --git a/src/util/Util.js b/src/util/Util.js index 1eba873..09ec251 100644 --- a/src/util/Util.js +++ b/src/util/Util.js @@ -12,26 +12,21 @@ module.exports = class WumpUtil { fs.mkdir('tmp', 777, (err) => { if (err && err.code !== 'EEXIST') throw err; }); fs.mkdir('tmp/log', 777, (err) => { if (err && err.code !== 'EEXIST') throw err; }); - switch (lvl) { - case 1 && conf['debug'] && conf['debug'] >= 1: - console.log(`[${moment(new Date).format( 'HH[:]mm[:]ss' )} / ${process.hash}] ${msg}`); - fs.appendFileSync(log, `[${moment(new Date).format('HH[:]mm[:]ss')} / ${process.hash}] ${strip(msg)}\r\n`); - break; - case 2 && conf['debug'] && conf['debug'] >= 2: - console.log(`[${moment(new Date).format( 'HH[:]mm[:]ss' )} / ${process.hash}] ${msg}`); - fs.appendFileSync(log, `[${moment(new Date).format('HH[:]mm[:]ss')} / ${process.hash}] ${strip(msg)}\r\n`); - break; - case 3 && conf['debug'] && conf['debug'] >= 3: - console.log(`[${moment(new Date).format( 'HH[:]mm[:]ss' )} / ${process.hash}] ${msg}`); - fs.appendFileSync(log, `[${moment(new Date).format('HH[:]mm[:]ss')} / ${process.hash}] ${strip(msg)}\r\n`); - break; - case 4 && conf['debug'] && conf['debug'] >= 4: - console.log(`[${moment(new Date).format( 'HH[:]mm[:]ss' )} / ${process.hash}] ${msg}`); - fs.appendFileSync(log, `[${moment(new Date).format('HH[:]mm[:]ss')} / ${process.hash}] ${strip(msg)}\r\n`); - break; - default: - console.log(`[${moment(new Date).format( 'HH[:]mm[:]ss' )} / ${process.hash}] ${msg}`); - fs.appendFileSync(log, `[${moment(new Date).format('HH[:]mm[:]ss')} / ${process.hash}] ${strip(msg)}\r\n`); + if (lvl === 1 && conf.debug && conf.debug >= 1) { + console.log(`[${moment(new Date).format( 'HH[:]mm[:]ss' )} / ${process.hash}] ${msg}`); + fs.appendFileSync(log, `[${moment(new Date).format('HH[:]mm[:]ss')} / ${process.hash}] ${strip(msg)}\r\n`); + } else if (lvl === 2 && conf.debug && conf.debug >= 2) { + console.log(`[${moment(new Date).format( 'HH[:]mm[:]ss' )} / ${process.hash}] ${msg}`); + fs.appendFileSync(log, `[${moment(new Date).format('HH[:]mm[:]ss')} / ${process.hash}] ${strip(msg)}\r\n`); + } else if (lvl === 3 && conf.debug && conf.debug >= 3) { + console.log(`[${moment(new Date).format( 'HH[:]mm[:]ss' )} / ${process.hash}] ${msg}`); + fs.appendFileSync(log, `[${moment(new Date).format('HH[:]mm[:]ss')} / ${process.hash}] ${strip(msg)}\r\n`); + } else if (lvl === 4 && conf.debug && conf.debug >= 4) { + console.log(`[${moment(new Date).format( 'HH[:]mm[:]ss' )} / ${process.hash}] ${msg}`); + fs.appendFileSync(log, `[${moment(new Date).format('HH[:]mm[:]ss')} / ${process.hash}] ${strip(msg)}\r\n`); + } else if (lvl === 0) { + console.log(`[${moment(new Date).format( 'HH[:]mm[:]ss' )} / ${process.hash}] ${msg}`); + fs.appendFileSync(log, `[${moment(new Date).format('HH[:]mm[:]ss')} / ${process.hash}] ${strip(msg)}\r\n`); } } diff --git a/yarn.lock b/yarn.lock index a38e4d9..a13e2e9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23,15 +23,15 @@ acorn-jsx@^5.0.0: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" integrity sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg== -acorn@^6.0.2: - version "6.0.7" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.0.7.tgz#490180ce18337270232d9488a44be83d9afb7fd3" - integrity sha512-HNJNgE60C9eOTgn974Tlp3dpLZdUr+SoxxDwPaY9J/kDNOLQTkaDgwBUXAF4SSsrAwD9RpdxuHK/EbuF+W9Ahw== +acorn@^6.0.7: + version "6.1.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.1.0.tgz#b0a3be31752c97a0f7013c5f4903b71a05db6818" + integrity sha512-MW/FjM+IvU9CgBzjO3UIPCE2pyEwUsoFl+VGdczOPEdxfGFjuKny/gN54mOuX7Qxmb9Rg9MCn2oKiSUeW+pjrw== -ajv@^6.5.3, ajv@^6.6.1: - version "6.8.1" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.8.1.tgz#0890b93742985ebf8973cd365c5b23920ce3cb20" - integrity sha512-eqxCp82P+JfqL683wwsL73XmFs1eG6qjw+RD3YHx+Jll1r0jNd4dh8QG9NYAeNGA/hnZjeEDgtTskgJULbxpWQ== +ajv@^6.9.1: + version "6.9.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.9.1.tgz#a4d3683d74abc5670e75f0b16520f70a20ea8dc1" + integrity sha512-XDN92U311aINL77ieWHmqCcNlwjoP5cHXDxIxbf2MaPYuCXOHS7gHH8jktxeK5omgd52XbSTX6a4Piwd1pQmzA== dependencies: fast-deep-equal "^2.0.1" fast-json-stable-stringify "^2.0.0" @@ -182,11 +182,6 @@ chownr@^1.0.1, chownr@^1.1.1: resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.1.tgz#54726b8b8fff4df053c42187e801fb4412df1494" integrity sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g== -circular-json@^0.3.1: - version "0.3.3" - resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" - integrity sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A== - cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -314,13 +309,18 @@ detect-libc@^1.0.3: resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: esutils "^2.0.2" +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + end-of-stream@^1.0.0, end-of-stream@^1.1.0: version "1.4.1" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.1.tgz#ed29634d19baba463b6ce6b80a37213eab71ec43" @@ -367,34 +367,34 @@ eslint-visitor-keys@^1.0.0: integrity sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ== eslint@^5.6.0: - version "5.13.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.13.0.tgz#ce71cc529c450eed9504530939aa97527861ede9" - integrity sha512-nqD5WQMisciZC5EHZowejLKQjWGuFS5c70fxqSKlnDME+oz9zmE8KTlX+lHSg+/5wsC/kf9Q9eMkC8qS3oM2fg== + version "5.14.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.14.1.tgz#490a28906be313685c55ccd43a39e8d22efc04ba" + integrity sha512-CyUMbmsjxedx8B0mr79mNOqetvkbij/zrXnFeK2zc3pGRn3/tibjiNAv/3UxFEyfMDjh+ZqTrJrEGBFiGfD5Og== dependencies: "@babel/code-frame" "^7.0.0" - ajv "^6.5.3" + ajv "^6.9.1" chalk "^2.1.0" cross-spawn "^6.0.5" debug "^4.0.1" - doctrine "^2.1.0" + doctrine "^3.0.0" eslint-scope "^4.0.0" eslint-utils "^1.3.1" eslint-visitor-keys "^1.0.0" - espree "^5.0.0" + espree "^5.0.1" esquery "^1.0.1" esutils "^2.0.2" - file-entry-cache "^2.0.0" + file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" glob "^7.1.2" globals "^11.7.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.1.0" + inquirer "^6.2.2" js-yaml "^3.12.0" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.3.0" - lodash "^4.17.5" + lodash "^4.17.11" minimatch "^3.0.4" mkdirp "^0.5.1" natural-compare "^1.4.0" @@ -405,15 +405,15 @@ eslint@^5.6.0: semver "^5.5.1" strip-ansi "^4.0.0" strip-json-comments "^2.0.1" - table "^5.0.2" + table "^5.2.3" text-table "^0.2.0" -espree@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.0.tgz#fc7f984b62b36a0f543b13fb9cd7b9f4a7f5b65c" - integrity sha512-1MpUfwsdS9MMoN7ZXqAr9e9UKdVHDcvrJpyx7mm1WuQlx/ygErEQBzgi5Nh5qBHIoYweprhtMkTCb9GhcAIcsA== +espree@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" + integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== dependencies: - acorn "^6.0.2" + acorn "^6.0.7" acorn-jsx "^5.0.0" eslint-visitor-keys "^1.0.0" @@ -482,28 +482,31 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -file-entry-cache@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-2.0.0.tgz#c392990c3e684783d838b8c84a45d8a048458361" - integrity sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E= +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== dependencies: - flat-cache "^1.2.1" - object-assign "^4.0.1" + flat-cache "^2.0.1" file-uri-to-path@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== -flat-cache@^1.2.1: - version "1.3.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.4.tgz#2c2ef77525cc2929007dfffa1dd314aa9c9dee6f" - integrity sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg== +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== dependencies: - circular-json "^0.3.1" - graceful-fs "^4.1.2" - rimraf "~2.6.2" - write "^0.2.1" + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.0.tgz#55122b6536ea496b4b44893ee2608141d10d9916" + integrity sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg== fraction.js@4.0.12: version "4.0.12" @@ -569,14 +572,9 @@ glob@^7.1.2, glob@^7.1.3: path-is-absolute "^1.0.0" globals@^11.7.0: - version "11.10.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.10.0.tgz#1e09776dffda5e01816b3bb4077c8b59c24eaa50" - integrity sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ== - -graceful-fs@^4.1.2: - version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== + version "11.11.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.11.0.tgz#dcf93757fa2de5486fbeed7118538adf789e9c2e" + integrity sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw== has-flag@^3.0.0: version "3.0.0" @@ -631,7 +629,7 @@ ini@~1.3.0: resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== -inquirer@^6.1.0: +inquirer@^6.2.2: version "6.2.2" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.2.2.tgz#46941176f65c9eb20804627149b743a218f25406" integrity sha512-Z2rREiXA6cHRR9KBOarR3WuLlFzlIfAEIiB45ll5SSadMg7WqOh1MKEjjndfuH5ewXdixWCxqnVfGOQzPeiztA== @@ -715,10 +713,10 @@ kareem@2.3.0: resolved "https://registry.yarnpkg.com/kareem/-/kareem-2.3.0.tgz#ef33c42e9024dce511eeaf440cd684f3af1fc769" integrity sha512-6hHxsp9e6zQU8nXsP+02HGWXwTkOEw6IROhF2ZA28cYbUk4eJ6QbtZvdqZOdD9YPKghG3apk5eOCvs+tLl3lRg== -larg@^0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/larg/-/larg-0.0.1.tgz#8bd875734bce31ccbb8c6b7b491f031f090e2536" - integrity sha512-uKSYCoq0M/fizPaFJricNjmHNeLGBP288YN8wOJnqD6FddU+o5GMsnBXZ/HqLNpoNHXnHnE5V18BVwy7hJWeTg== +larg@^0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/larg/-/larg-0.0.4.tgz#de20b0290a7290d8e49f836802f352199537f1ef" + integrity sha512-1CRCQrR3+LAFaBuP4k0jvlYfdNVegU2drCvHn4yRlkFQJRFPobqvKP7Fq2G557nSOpV7WoS7z/SkvwNx0nSvLQ== levn@^0.3.0, levn@~0.3.0: version "0.3.0" @@ -728,7 +726,7 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.5: +lodash@^4.17.10, lodash@^4.17.11: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== @@ -830,10 +828,10 @@ 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.4.10: - version "5.4.10" - resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.4.10.tgz#640ee516449bc736a729e49e3eba873ae63a0030" - integrity sha512-yJl+A7p8QF++tyBl6fRGFON5GV57MTXLKNiaiqgX5vZs1qJpcZpPiUGU5odBiqTHFYPybuRp8dW9Qtv4K6SxBQ== +mongoose@^5.4.14: + version "5.4.14" + resolved "https://registry.yarnpkg.com/mongoose/-/mongoose-5.4.14.tgz#8cc074c9990db0a26062a779f461abb91c9c483c" + integrity sha512-lAISH4xdx0/o0bVWPB4bxApP3bA1b08oHPEjTBq3/mIr4R494hepDJJowByBgpGYf8tj/oe6VkFCx8wbRcOciA== dependencies: async "2.6.1" bson "~1.1.0" @@ -843,7 +841,7 @@ mongoose@^5.4.10: mongoose-legacy-pluralize "1.0.2" mpath "0.5.1" mquery "3.2.0" - ms "2.0.0" + ms "2.1.1" regexp-clone "0.0.1" safe-buffer "5.1.2" sliced "1.0.1" @@ -869,7 +867,7 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.1, ms@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== @@ -905,9 +903,9 @@ nice-try@^1.0.4: integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== 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== + version "2.7.1" + resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.7.1.tgz#a8997ae91176a5fbaa455b194976e32683cda643" + integrity sha512-OV8Bq1OrPh6z+Y4dqwo05HqrRL9YNF7QVMRfq1/pguwKLG+q9UB/Lk0x5qXjO23JjJg+/jqCHSTaG1P3tfKfuw== dependencies: semver "^5.4.1" @@ -931,7 +929,7 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -object-assign@^4.0.1, object-assign@^4.1.0: +object-assign@^4.1.0: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -1116,7 +1114,7 @@ restore-cursor@^2.0.0: onetime "^2.0.0" signal-exit "^3.0.2" -rimraf@~2.6.2: +rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== @@ -1233,7 +1231,7 @@ simple-swizzle@^0.2.2: dependencies: is-arrayish "^0.3.1" -slice-ansi@^2.0.0: +slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== @@ -1268,7 +1266,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.1.0: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -1276,6 +1274,15 @@ string-width@^1.0.1: is-fullwidth-code-point "^2.0.0" strip-ansi "^4.0.0" +string-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.0.0.tgz#5a1690a57cc78211fffd9bf24bbe24d090604eb1" + integrity sha512-rr8CUxBbvOZDUvc5lNIJ+OC1nPVpz+Siw9VBtUjB9b6jZehZLFt0JMCZzShFHIsI8cbhm0EsNIfWJMFV3cu3Ew== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.0.0" + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -1316,15 +1323,15 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.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== +table@^5.2.3: + version "5.2.3" + resolved "https://registry.yarnpkg.com/table/-/table-5.2.3.tgz#cde0cc6eb06751c009efab27e8c820ca5b67b7f2" + integrity sha512-N2RsDAMvDLvYwFcwbPyF3VmVSSkuF+G1e+8inhBLtHpvwXGw4QRPEZhihQNeEN0i1up6/f6ObCJXNdlRG3YVyQ== dependencies: - ajv "^6.6.1" + ajv "^6.9.1" lodash "^4.17.11" - slice-ansi "^2.0.0" - string-width "^2.1.1" + slice-ansi "^2.1.0" + string-width "^3.0.0" tar-fs@^1.13.0: version "1.16.3" @@ -1464,24 +1471,24 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" - integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== dependencies: mkdirp "^0.5.1" ws@^6.0.0: - version "6.1.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.3.tgz#d2d2e5f0e3c700ef2de89080ebc0ac6e1bf3a72d" - integrity sha512-tbSxiT+qJI223AP4iLfQbkbxkwdFcneYinM2+x46Gx2wgvbaOMO36czfdfVUBRTHvzAMRhDd98sA5d/BuWbQdg== + version "6.1.4" + resolved "https://registry.yarnpkg.com/ws/-/ws-6.1.4.tgz#5b5c8800afab925e94ccb29d153c8d02c1776ef9" + integrity sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA== dependencies: async-limiter "~1.0.0" -wumpfetch@^0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/wumpfetch/-/wumpfetch-0.0.5.tgz#c9afe264eb4190b9e4ecb5839c98e0a2c9ecf143" - integrity sha512-FqLFJCPX7A61egdlGQ6yK9eTWkHP1+n2+BJoW6S+1foRzqiV9sr2b9Tdw+w/jnW7MqcqZ+j1SAmcKfVxSYsEgA== +wumpfetch@^0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/wumpfetch/-/wumpfetch-0.0.7.tgz#2c113aa35035772c43468da191ae8ac959146ead" + integrity sha512-Q+h9dO/5gNQmmIMK1hdPlNbR03u+OmBLaDWH7KIXyNk3pDuBbWuf60kcQ2ofjt8vjr3MVGUoBj9sroIZKXfHqg== xtend@^4.0.0: version "4.0.1"