diff --git a/.eslintrc.js b/.eslintrc.js index c10a964..65ab9b2 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -15,7 +15,7 @@ module.exports = { }, overrides: [ { - files: ['lang/*.js'], + files: ['app/lang/*.js'], rules: { 'require-jsdoc': 'off', }, diff --git a/.github/workflows/build-bot.yml b/.github/workflows/build-bot.yml new file mode 100644 index 0000000..aa0cdd7 --- /dev/null +++ b/.github/workflows/build-bot.yml @@ -0,0 +1,23 @@ +name: Build Workflow +on: + push: + branches: + - main +jobs: + job_one: + name: Build and push docker images + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - name: Build docker-image + env: + DOCKER_USER: ${{ secrets.DOCKER_USER }} + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + run: | + docker login -u $DOCKER_USER -p $DOCKER_PASSWORD + docker build -f ./docker/spooky-node/DockerfileProd --build-arg NODE_VERSION=12.18.2 -t spookybot/spookybot:latest -t spookybot/spookybot:${{github.run_number}} . + docker push spookybot/spookybot:${{github.run_number}} + docker push spookybot/spookybot:latest + docker logout + + diff --git a/.github/workflows/deploy-bot.yml b/.github/workflows/deploy-bot.yml new file mode 100644 index 0000000..394d66f --- /dev/null +++ b/.github/workflows/deploy-bot.yml @@ -0,0 +1,24 @@ +name: Deployment Workflow +on: + workflow_dispatch: + inputs: + tags: + description: 'Tag' +jobs: + deploy_prod_bot: + runs-on: ubuntu-latest + steps: + - uses: appleboy/ssh-action@master + name: deploy to prod + with: + host: ${{ secrets.SSH_IP }} + port: ${{ secrets.SSH_PORT }} + username: spookybot + key: ${{ secrets.SSH_KEY }} + script: | + docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASSWORD }} + docker pull spookybot/spookybot:latest + docker-compose -f /home/spookybot/docker-compose.yml down -v + docker-compose -f /home/spookybot/docker-compose.yml up -d + docker logout + diff --git a/.gitignore b/.gitignore index c35a417..3b16969 100644 --- a/.gitignore +++ b/.gitignore @@ -15,13 +15,15 @@ jspm_packages/ # Optional eslint cache .eslintcache +.eslintrc.js # Yarn Integrity file .yarn-integrity # config file -config.json - +app/config/config.json # IDE .idea *.iml + + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..147cca7 --- /dev/null +++ b/Makefile @@ -0,0 +1,14 @@ +DOCKERCOMPOSE_DEV=-f docker-compose.dev.yml + + +.PHONY: build_dev_image +build_dev_image: + docker build -f ./docker/spooky-node/DockerfileDev -t spookybot:dev . + +.PHONY: startup_dev +startup_dev: + docker-compose ${DOCKERCOMPOSE_DEV} up -d + +.PHONY: stop_dev +stop_dev: + docker-compose ${DOCKERCOMPOSE_DEV} down -v diff --git a/README.md b/README.md index 027a5d9..c720916 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ You just need to click on [this link](https://discord.com/oauth2/authorize?clien You can add languages to the robot so that it is translated and accessible to everyone! -To do this, nothing could be simpler, just copy the file `./lang/en.js` then rename it following the [ISO 639-1 nomenclature](http://www.mathguide.de/info/tools/languagecode.html). +To do this, nothing could be simpler, just copy the file `./app/lang/en.js` then rename it following the [ISO 639-1 nomenclature](http://www.mathguide.de/info/tools/languagecode.html). Then you just need to modify the file as you wish. For the translation to be set up on the robot, do not hesitate to open a pull request by [following this guide](https://github.com/LucasCtrl/spookyBot/blob/main/README.md#-contributing). To react to a word, you need two elements in the translation file: the word and the emoji with which it will react. @@ -34,10 +34,11 @@ You can see that the `emoji` element is an emoji, but you can also use a custom ## 💻 Testing locally 1. Create a bot [on the Discord developer portal](https://discord.com/developers/applications), -2. Create a webhook on your own discord server [by folloing this tutorial](https://docs.gitlab.com/ee/user/project/integrations/discord_notifications.html), -3. Copy the `config.example.json` from the project to `config.json` and fill in the gaps with the information from the bot and the webhook. The first token is on the bot page accessed from the side of the Discord Developer Portal, and the webook information is found on the page when you navigate to the webhook url, +2. Create a webhook on your own discord server [by following this tutorial](https://docs.gitlab.com/ee/user/project/integrations/discord_notifications.html), +3. Copy the `./app/config/config.example.json` from the project to `./app/config/config.json` and fill in the gaps with the information from the bot and the webhook. The first token is on the bot page accessed from the side of the Discord Developer Portal, and the webook information is found on the page when you navigate to the webhook url, 4. Invite your dev bot to your server by [following this url](https://discord.com/oauth2/authorize?client_id=761568927188123669&scope=bot&permissions=1141124160), replacing the client id with your bot's client id (found on it's general information page), and the permissions with the Permission Integer created in the Developer Portal as you select permissions for your bot, -5. Once these steps are setup, simply run `yarn install` and `npm run dev` from the terminal in the root directory of the repo, +5. Once these steps are setup, simply run `make startup_dev` from the terminal in the root directory of the repo, +5.1 If you want to install node modules you could just add it into your local package.json and run the `make build_dev_image` after that you need to recreate the container. 6. Test the bot is connected by running `help` to get a list of commands, and then initialize the DB by running `emitgc`. It should then respond with "Join with <#> users, 7. Test that the bot reacts to comments by typing one of the words in `lang/.js`. The bot should respond with an emoji! diff --git a/commands/Configuration/setlang.js b/app/commands/Configuration/setlang.js similarity index 74% rename from commands/Configuration/setlang.js rename to app/commands/Configuration/setlang.js index 3c0b61d..074e303 100644 --- a/commands/Configuration/setlang.js +++ b/app/commands/Configuration/setlang.js @@ -1,11 +1,13 @@ const { MessageEmbed } = require('discord.js') -const { prefix, colors } = require('../../config.json') +const { prefix, colors } = require('../../config/config.json') const { readdirSync } = require('fs') const { resolve } = require('path') const { changeLang } = require('../../models/servers') +const ISOCode = require('../../utils/languageCode') + module.exports = { config: { command: 'setlang', @@ -40,18 +42,22 @@ module.exports = { changeLang(message.guild.id, args[0]) } else { // The language doesn't exist - let messageContent = ['The requested language does not exist, please choose a language from this list:'] - availableLang.forEach((lang) => messageContent.push(`- **${lang}**`)) + let messageContent = [ + 'The requested language does not exist, please choose a language from this list: (the bold part)', + ] + availableLang.forEach((lang) => messageContent.push(`- **${lang}**: ${ISOCode.find((l) => l.code == lang).name}`)) const embed = new MessageEmbed() .setColor(colors.primary) .setDescription(messageContent) - .setFooter('This message will be deleted automatically') + .setFooter( + "If you can't find your language, don't hesitate to contact us by using the command boo!support | This message will be deleted automatically" + ) message.channel.send(embed).then((m) => { setTimeout(() => { m.delete() - }, 10000) + }, 20000) }) } }, diff --git a/commands/Info/help.js b/app/commands/Info/help.js similarity index 89% rename from commands/Info/help.js rename to app/commands/Info/help.js index 79fc8f2..2a6a33c 100644 --- a/commands/Info/help.js +++ b/app/commands/Info/help.js @@ -1,6 +1,6 @@ const { MessageEmbed } = require('discord.js') -const { prefix, colors } = require('../../config.json') -const { version } = require('../../package.json') +const { prefix, colors } = require('../../config/config.json') +const { version } = require('../../../package.json') module.exports = { config: { diff --git a/commands/Info/invite.js b/app/commands/Info/invite.js similarity index 92% rename from commands/Info/invite.js rename to app/commands/Info/invite.js index 8f0f252..e2746c6 100644 --- a/commands/Info/invite.js +++ b/app/commands/Info/invite.js @@ -1,5 +1,5 @@ const { MessageEmbed } = require('discord.js') -const { prefix, colors } = require('../../config.json') +const { prefix, colors } = require('../../config/config.json') module.exports = { config: { diff --git a/commands/Info/ping.js b/app/commands/Info/ping.js similarity index 91% rename from commands/Info/ping.js rename to app/commands/Info/ping.js index d5a5a3b..15d5991 100644 --- a/commands/Info/ping.js +++ b/app/commands/Info/ping.js @@ -1,5 +1,5 @@ const { MessageEmbed } = require('discord.js') -const { prefix, colors } = require('../../config.json') +const { prefix, colors } = require('../../config/config.json') module.exports = { config: { diff --git a/app/commands/Info/stats.js b/app/commands/Info/stats.js new file mode 100644 index 0000000..8715595 --- /dev/null +++ b/app/commands/Info/stats.js @@ -0,0 +1,32 @@ +const { MessageEmbed } = require('discord.js') +const { prefix, colors } = require('../../config/config.json') + +module.exports = { + config: { + command: 'stats', + name: 'Stat', + description: 'Give you some statistics about the bot', + usage: `${prefix}stats`, + displayHelp: true, + }, + + run: async (bot, message, args) => { + const memoryStats = process.memoryUsage() + + const embed = new MessageEmbed() + .setColor(colors.primary) + .setAuthor(`Stats - ${bot.user.username}`, bot.user.avatarURL({ dynamic: true })) + .addField('Number of servers ¬', bot.guilds.cache.size.toLocaleString(), true) + .addField( + 'Number of users ¬', + bot.guilds.cache.reduce((mem, g) => (mem += g.memberCount), 0), + true + ) + .addField('Number of emojis ¬', bot.emojis.cache.size, true) + .addField('Number of channels ¬', bot.channels.cache.size, true) + .addField('Memory usage ¬', `${Math.ceil(memoryStats.heapUsed / 1048576)} Mo`, true) + .setFooter(`Requested by ${message.author.username}`, message.author.avatarURL({ dynamic: true })) + + message.channel.send(embed) + }, +} diff --git a/commands/Info/support.js b/app/commands/Info/support.js similarity index 90% rename from commands/Info/support.js rename to app/commands/Info/support.js index dc5f855..85f8391 100644 --- a/commands/Info/support.js +++ b/app/commands/Info/support.js @@ -1,5 +1,5 @@ const { MessageEmbed } = require('discord.js') -const { prefix, colors } = require('../../config.json') +const { prefix, colors } = require('../../config/config.json') module.exports = { config: { diff --git a/app/commands/Info/vote.js b/app/commands/Info/vote.js new file mode 100644 index 0000000..b226160 --- /dev/null +++ b/app/commands/Info/vote.js @@ -0,0 +1,23 @@ +const { MessageEmbed } = require('discord.js') +const { prefix, colors } = require('../../config/config.json') + +module.exports = { + config: { + command: 'vote', + name: 'Vote', + description: 'Vote for the bot', + usage: `${prefix}vote`, + displayHelp: true, + }, + + run: async (bot, message, args) => { + const embed = new MessageEmbed() + .setColor(colors.primary) + .setAuthor('Support server', bot.user.avatarURL()) + .setDescription( + 'You can vote for the bot by clicking on the following link: [https://discordbotlist.com/bots/spookybot/upvote](https://discordbotlist.com/bots/spookybot/upvote)' + ) + + message.channel.send(embed) + }, +} diff --git a/commands/Sound/playsound.js b/app/commands/Sound/playsound.js similarity index 61% rename from commands/Sound/playsound.js rename to app/commands/Sound/playsound.js index fb7339e..5a38cbe 100644 --- a/commands/Sound/playsound.js +++ b/app/commands/Sound/playsound.js @@ -1,4 +1,5 @@ -const { prefix } = require('../../config.json') +const { MessageEmbed } = require('discord.js') +const { prefix } = require('../../config/config.json') const { readdirSync } = require('fs') const { resolve } = require('path') @@ -6,10 +7,10 @@ module.exports = { config: { name: 'Boo Sound', usage: `${prefix}booh`, - description: 'Display this menu', + description: 'Joins your voice channel and scares you', command: 'booh', aliases: ['buh', 'scare'], - displayHelp: false, + displayHelp: true, }, run: async (bot, message, args) => { @@ -27,7 +28,15 @@ module.exports = { connection.voice.channel.leave() }) } else { - message.author.send('How can I scare your companions without you beeing present in the voice channel?') + const embed = new MessageEmbed() + .setTitle('How can I scare your companions without you beeing present in the voice channel?') + .setColor(colors.primary) + + message.channel.send(embed).then((m) => { + setTimeout(() => { + m.delete() + }, 5000) + }) } }, } diff --git a/commands/Test/emitgd.js b/app/commands/Test/emitgd.js similarity index 100% rename from commands/Test/emitgd.js rename to app/commands/Test/emitgd.js diff --git a/commands/Test/emitgr.js b/app/commands/Test/emitgr.js similarity index 100% rename from commands/Test/emitgr.js rename to app/commands/Test/emitgr.js diff --git a/app/commands/Text/trickortreat.js b/app/commands/Text/trickortreat.js new file mode 100644 index 0000000..d24bb11 --- /dev/null +++ b/app/commands/Text/trickortreat.js @@ -0,0 +1,76 @@ +const { MessageEmbed } = require('discord.js') +const { prefix, colors } = require('../../config/config.json') + +const { treat, trick, createTrickOrTreat, getTrickOrTreat } = require('../../models/trickortreats') + +const isToday = (someDate) => { + const today = new Date() + const currentDate = new Date(Date.parse(someDate)) + + return ( + currentDate.getDate() == today.getDate() && + currentDate.getMonth() == today.getMonth() && + currentDate.getFullYear() == today.getFullYear() + ) +} + +module.exports = { + config: { + name: 'Trick or Treat', + usage: `${prefix}trickortreat`, + description: 'Gives you candy or scares you 😈', + command: 'trickortreat', + aliases: ['tot'], + displayHelp: true, + }, + + run: async (bot, message, args) => { + let trickOrTreat = await getTrickOrTreat(message.author.id) + + if (!trickOrTreat) { + await createTrickOrTreat(message.author.id) + trickOrTreat = await getTrickOrTreat(message.author.id) + } + + if (!trickOrTreat.lastPlayed || !isToday(trickOrTreat.lastPlayed)) { + if (Math.random() >= 0.5) { + trickOrTreat = await trick(message.author.id) + + let embed = await new MessageEmbed() + .setTitle(':smiling_imp: Oh no!, You have been tricked!') + .setColor(colors.info) + .setDescription('Better luck tomorrow!') + .addField(':candy: Candys', trickOrTreat.treats, true) + .addField(':smiling_imp: Tricks', trickOrTreat.tricks, true) + .setFooter(message.author.username, message.author.avatarURL({ dynamic: true })) + .setTimestamp(new Date()) + + await message.channel.send(embed) + } else { + trickOrTreat = await treat(message.author.id) + + let embed = await new MessageEmbed() + .setTitle(':candy: Sweet, sweet candy!') + .setColor(colors.error) + .setDescription('There will be more candy up for grabs tomorrow!') + .addField(':candy: Candys', trickOrTreat.treats, true) + .addField(':smiling_imp: Tricks', trickOrTreat.tricks, true) + .setFooter(message.author.username, message.author.avatarURL({ dynamic: true })) + .setTimestamp(new Date()) + + await message.channel.send(embed) + } + } else { + const embed = new MessageEmbed() + .setTitle('It looks like you have already played today.') + .setColor(colors.primary) + .setDescription('There will be more candy up for grabs tomorrow!') + .addField(':candy: Candys', trickOrTreat.treats, true) + .addField(':smiling_imp: Tricks', trickOrTreat.tricks, true) + .setFooter(message.author.username, message.author.avatarURL({ dynamic: true })) + .setTimestamp(new Date()) + + message.channel.send(embed) + } + }, +} diff --git a/app/config/config.example.json b/app/config/config.example.json new file mode 100644 index 0000000..8cc9474 --- /dev/null +++ b/app/config/config.example.json @@ -0,0 +1,21 @@ +{ + "token": "", + "prefix": "boo!", + "webhook": { + "id": "", + "token": "" + }, + "colors": { + "primary": "#FF6403", + "success": "#2ECC71", + "error": "#E74C3C", + "info": "#7C5398" + }, + "reddit": { + "userAgent": "SpookyBot, a Discord bot to celebrate Halloween", + "clientId": "", + "clientSecret": "", + "refreshToken": "" + } +} + diff --git a/core.js b/app/core.js similarity index 90% rename from core.js rename to app/core.js index edb54d1..d9c5ab3 100644 --- a/core.js +++ b/app/core.js @@ -1,6 +1,6 @@ const { Client, Collection, WebhookClient } = require('discord.js') -const { token, webhook } = require('./config.json') +const { token, webhook } = require('./config/config.json') const bot = new Client() diff --git a/app/db/.gitkeep b/app/db/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/db/servers.json b/app/db/servers.json similarity index 90% rename from db/servers.json rename to app/db/servers.json index b69ad4f..0e74b2b 100644 --- a/db/servers.json +++ b/app/db/servers.json @@ -1,3 +1,3 @@ { "servers": [] -} +} \ No newline at end of file diff --git a/app/db/trickortreats.json b/app/db/trickortreats.json new file mode 100644 index 0000000..f1dda32 --- /dev/null +++ b/app/db/trickortreats.json @@ -0,0 +1,10 @@ +{ + "trickortreats": [ + { + "userId": "306856370454396928", + "tricks": 0, + "treats": 0, + "lastPlayed": "2020-10-06T22:55:33.107Z" + } + ] +} \ No newline at end of file diff --git a/events/guildCreate.js b/app/events/guildCreate.js similarity index 88% rename from events/guildCreate.js rename to app/events/guildCreate.js index c2196a3..5938fdd 100644 --- a/events/guildCreate.js +++ b/app/events/guildCreate.js @@ -1,5 +1,5 @@ const { MessageEmbed } = require('discord.js') -const { colors } = require('../config.json') +const { colors } = require('../config/config.json') const { createGuild } = require('../models/servers') diff --git a/events/guildDelete.js b/app/events/guildDelete.js similarity index 88% rename from events/guildDelete.js rename to app/events/guildDelete.js index 138ba61..e790eb2 100644 --- a/events/guildDelete.js +++ b/app/events/guildDelete.js @@ -1,5 +1,5 @@ const { MessageEmbed } = require('discord.js') -const { colors } = require('../config.json') +const { colors } = require('../config/config.json') const { deleteGuild } = require('../models/servers') diff --git a/events/message.js b/app/events/message.js similarity index 93% rename from events/message.js rename to app/events/message.js index c8eef78..0316ae5 100644 --- a/events/message.js +++ b/app/events/message.js @@ -1,5 +1,5 @@ const { MessageEmbed } = require('discord.js') -const { prefix, colors } = require('../config.json') +const { prefix, colors } = require('../config/config.json') const reactMessage = require('../utils/reactMessage') @@ -44,6 +44,6 @@ module.exports = async (bot, webhook, message) => { } else { // -------------------- Reaction system -------------------- // console.log(reactMessage) - reactMessage(message.guild.id, message) + reactMessage(message.guild.id, message, webhook) } } diff --git a/events/ready.js b/app/events/ready.js similarity index 92% rename from events/ready.js rename to app/events/ready.js index cd2b54c..8e3e66c 100644 --- a/events/ready.js +++ b/app/events/ready.js @@ -1,4 +1,4 @@ -const { prefix } = require('../config.json') +const { prefix } = require('../config/config.json') let statusInterval = 0 if (process.env.NODE_ENV === 'dev') { diff --git a/handlers/command.js b/app/handlers/command.js similarity index 89% rename from handlers/command.js rename to app/handlers/command.js index f93e37f..7d22535 100644 --- a/handlers/command.js +++ b/app/handlers/command.js @@ -11,7 +11,7 @@ module.exports = (bot) => { } } - const dirs = ['Info', 'Configuration', 'Sound', 'Text'] + const dirs = ['Info', 'Configuration', 'Sound', 'Picture', 'Text'] if (process.env.NODE_ENV === 'dev') dirs.push('Test') diff --git a/handlers/event.js b/app/handlers/event.js similarity index 100% rename from handlers/event.js rename to app/handlers/event.js diff --git a/images/spookyBot-emoji.png b/app/images/spookyBot-emoji.png similarity index 100% rename from images/spookyBot-emoji.png rename to app/images/spookyBot-emoji.png diff --git a/images/spookyBot.png b/app/images/spookyBot.png similarity index 100% rename from images/spookyBot.png rename to app/images/spookyBot.png diff --git a/app/lang/ar.js b/app/lang/ar.js new file mode 100644 index 0000000..4d89388 --- /dev/null +++ b/app/lang/ar.js @@ -0,0 +1,34 @@ +module.exports = { + lang: 'ar', //Arabic + words: [ + { + // Please do not delete this one 🙏 + name: 'مرعب', + emoji: '761602615326146590', + }, + { + name: ['حلوى', 'حلويات'], + emoji: '🍬', + }, + { + name: 'شبح', + emoji: '👻', + }, + { + name: 'عيد الرعب', + emoji: '🎃', + }, + { + name: 'مصاص دماء', + emoji: '🧛🏻‍♂️', + }, + { + name: 'ساحر', + emoji: '🧙', + }, + { + name: 'الاموات الاحياء', + emoji: '🧟', + }, + ], + } \ No newline at end of file diff --git a/lang/ca.js b/app/lang/ca.js similarity index 100% rename from lang/ca.js rename to app/lang/ca.js diff --git a/app/lang/de.js b/app/lang/de.js new file mode 100644 index 0000000..ac3c0fe --- /dev/null +++ b/app/lang/de.js @@ -0,0 +1,329 @@ +module.exports = { + lang: 'de', + words: [ + { + // Please do not delete this one 🙏 + name: ['spooky', 'gruselig'], + emoji: '761602615326146590', + }, + { + name: ['alien', 'außerirdische', 'außerirdischer'], + emoji: '👽', + }, + { + name: ['alienmonster', 'monster'], + emoji: '👾', + }, +// Coming with Unicode/Emoji 13.0 this year, e.g. with Android 11 +// { +// name: ['herz', 'anatomisches herz'], +// emoji: '🫀', +// }, + { + name: ['wütender teufel'], + emoji: '👿', + }, + { + name: ['unruhig', 'besorgt'], + emoji: '😰', + }, + { + name: ['axt'], + emoji: '🪓', + }, + { + name: ['fledermaus'], + emoji: '🦇', + }, + { + name: ['schlagendes herz'], + emoji: '💓', + }, + { + name: ['schwarzes herz'], + emoji: '🖤', + }, + { + name: ['schwarze katze'], + emoji: '🐈‍⬛', + }, + { + name: ['blut'], + emoji: '🩸', + }, + { + name: ['blutstropfen'], + emoji: '🩸', + }, + { + name: ['knochen'], + emoji: '🦴', + }, + { + name: ['gehirn', 'brain'], + emoji: '🧠', + }, + { + name: ['besen'], + emoji: '🧹', + }, + { + name: ['kerze'], + emoji: '🕯', + }, + { + name: ['candy', 'bonbon', 'süßigkeit'], + emoji: '🍬', + }, + { + name: ['ketten'], + emoji: '⛓', + }, + { + name: ['schokoladenriegel', 'schokoriegel'], + emoji: '🍫', + }, + { + name: ['blitz', 'gewitterwolke'], + emoji: '🌩', + }, + { + name: ['clown'], + emoji: '🤡', + }, + { + name: ['sarg'], + emoji: '⚰', + }, + { + name: ['kristallkugel', 'hellseherkugel'], + emoji: '🔮', + }, + { + name: ['messer'], + emoji: '🗡', + }, +// Coming with Unicode/Emoji 13.0 this year, e.g. with Android 11 +// { +// name: ['verkleidetes gesicht', 'verkleidet'], +// emoji: '🥸', +// }, + { + name: ['verlassenes haus', 'geisterhaus', 'geistervilla'], + emoji: '🏚', + }, + { + name: ['ohr'], + emoji: '👂', + }, + { + name: ['auge'], + emoji: '👁️', + }, + { + name: ['augen'], + emoji: '👀', + }, + { + name: ['untersuchen'], + emoji: '🕵', + }, + { + name: ['elf'], + emoji: '🧝', + }, + { + name: ['schrei', 'schreie', 'schreien'], + emoji: '😱', + }, + { + name: ['mumie'], + emoji: '🤕', + }, + { + name: ['fee'], + emoji: '🧚', + }, + { + name: ['angst', 'ängstlich'], + emoji: '😨', + }, + { + name: ['feuer'], + emoji: '🔥', + }, + { + name: ['ufo', 'fliegende untertasse'], + emoji: '🛸', + }, + { + name: ['nebel', 'nebelig', 'neblig'], + emoji: '🌫️', + }, + { + name: ['fuß'], + emoji: '🦶', + }, + { + name: ['fußspuren'], + emoji: '👣', + }, + { + name: ['vollmond'], + emoji: '🌕', + }, + { + name: ['urne'], + emoji: '⚱', + }, + { + name: ['genie'], + emoji: '🧞', + }, + { + name: ['goblin'], + emoji: '👺', + }, + { + name: ['geist'], + emoji: '👻', + }, + { + name: ['grünes herz'], + emoji: '💚', + }, +// Coming with Unicode/Emoji 13.0 this year, e.g. with Android 11 +// { +// name: ['grabstein', 'grab'], +// emoji: '🪦', +// }, + { + name: ['hochspannung', 'spannend'], + emoji: '⚡', + }, + { + name: ['halloween', 'kürbis', 'hellowien'], + emoji: '🎃', + }, + { + name: ['bein'], + emoji: '🦵', + }, + { + name: ['lollipop', 'lutscher'], + emoji: '🍭', + }, + { + name: ['zauberhaft', 'hexer', 'magier', 'zauberer', 'zaubrer'], + emoji: '🧙', + }, + { + name: ['meerjungfrau'], + emoji: '🧜‍♀️', + }, + { + name: ['meermann'], + emoji: '🧜‍♂️', + }, + { + name: ['meermensch'], + emoji: '🧜', + }, + { + name: ['neumond', 'neumondgesicht'], + emoji: '🌚', + }, + { + name: ['sternennacht', 'nacht', 'sternenklare nacht'], + emoji: '🌃', + }, + { + name: ['ogre', 'oger'], + emoji: '👹', + }, + { + name: ['oranges herz', 'orangenes herz'], + emoji: '🧡', + }, + { + name: ['eule'], + emoji: '🦉', + }, + { + name: ['verkleidung', 'verkleidungen', 'verkleiden', 'verkleide' ], + emoji: '🎭', + }, + { + name: ['schwebende person im anzug', 'schweben', 'schwebe', 'schwebt'], + emoji: '🕴', + }, + { + name: ['prinzessin'], + emoji: '👸', + }, + { + name: ['roboter', 'maschinenmann', 'bot'], + emoji: '🤖', + }, + { + name: ['schädel', 'totenschädel', 'totenkopf'], + emoji: '💀', + }, + { + name: ['totenkopf mit knochen', 'totenkopfflagge', 'pirat'], + emoji: '☠', + }, + { + name: ['lächelnder teufel', 'teufel', 'teuflisch'], + emoji: '😈', + }, + { + name: ['spinne'], + emoji: '🕷', + }, + { + name: ['netz', 'spinnennetz'], + emoji: '🕸', + }, + { + name: ['zunge'], + emoji: '👅', + }, + { + name: ['einhorn'], + emoji: '🦄', + }, + { + name: ['vampir'], + emoji: '🧛', + }, + { + name: ['blume', 'blüte', 'verwelkt'], + emoji: '🥀', + }, + { + name: ['elfin'], + emoji: '🧝‍♀️', + }, + { + name: ['weibliche genie'], + emoji: '🧞‍♀️', + }, + { + name: ['hexe', 'magierin', 'zauberin', 'zaubrerin'], + emoji: '🧙‍♀️', + }, + { + name: ['vampirin'], + emoji: '🧛‍♀️', + }, + { + name: ['weiblicher zombie'], + emoji: '🧟‍♀️', + }, + { + name: ['zombie', 'untote'], + emoji: '🧟', + } + ], +} diff --git a/lang/de.js b/app/lang/el.js similarity index 58% rename from lang/de.js rename to app/lang/el.js index b2b0e6d..13a82cf 100644 --- a/lang/de.js +++ b/app/lang/el.js @@ -1,5 +1,5 @@ module.exports = { - lang: 'de', + lang: 'el', words: [ { // Please do not delete this one 🙏 @@ -7,31 +7,31 @@ module.exports = { emoji: '761602615326146590', }, { - name: 'bonbon', + name: 'Καραμέλα', emoji: '🍬', }, { - name: 'geist', + name: 'Φάντασμα', emoji: '👻', }, { - name: 'halloween', + name: 'Απόκριες', emoji: '🎃', }, { - name: 'vampir', - emoji: '🧛', + name: 'Βρυκόλακας', + emoji: '🧛🏻‍♂️', }, { - name: 'zauberhaft', + name: 'Μάγισσα', emoji: '🧙', }, { - name: ['zombie', 'untote'], + name: 'Ζόμπι', emoji: '🧟', }, { - name: 'netz', + name: 'Ιστός', emoji: '🕸', }, ], diff --git a/app/lang/en.js b/app/lang/en.js new file mode 100644 index 0000000..048cc6a --- /dev/null +++ b/app/lang/en.js @@ -0,0 +1,202 @@ +module.exports = { + lang: 'en', + words: [ + { + // Please do not delete this one 🙏 + name: ['spooky'], + uniqueName: '_custom_spooky', + emoji: '761602615326146590', + }, + { + name: ['alien'], + uniqueName: 'Alien', + emoji: '👽', + }, + { + name: ['alienmonster'], + uniqueName: 'Alien Monster', + emoji: '👾', + }, + { + name: ['angry devil'], + uniqueName: 'Angry Face with Horns', + emoji: '👿', + }, + { + name: ['anxious'], + uniqueName: 'Anxious Face with Sweat', + emoji: '😰', + }, + { + name: ['bat'], + uniqueName: 'Bat', + emoji: '🦇', + }, + { + name: ['bone'], + uniqueName: 'Bone', + emoji: '🦴', + }, + { + name: ['brain'], + uniqueName: 'Brain', + emoji: '🧠', + }, + { + name: ['broom'], + uniqueName: 'Broom', + emoji: '🧹', + }, + { + name: ['candle'], + uniqueName: 'Candle', + emoji: '🕯', + }, + { + name: ['candy'], + uniqueName: 'Candy', + emoji: '🍬', + }, + { + name: ['chains'], + uniqueName: 'Chains', + emoji: '⛓', + }, + { + name: ['clown'], + uniqueName: 'Clown Face', + emoji: '🤡', + }, + { + name: ['coffin'], + uniqueName: 'Coffin', + emoji: '⚰', + }, + { + name: ['crystal ball'], + uniqueName: 'Crystal Ball', + emoji: '🔮', + }, + { + name: ['dagger'], + uniqueName: 'Dagger', + emoji: '🗡', + }, + { + name: ['abandoned house'], + uniqueName: 'Derelict House', + emoji: '🏚', + }, + { + name: ['scream'], + uniqueName: 'Face Screaming in Fear', + emoji: '😱', + }, + { + name: ['fear'], + uniqueName: 'Fearful Face', + emoji: '😨', + }, + { + name: ['fire'], + uniqueName: 'Fire', + emoji: '🔥', + }, + { + name: ['full moon'], + uniqueName: 'Full Moon', + emoji: '🌕', + }, + { + name: ['funeral urn'], + uniqueName: 'Funeral Urn', + emoji: '⚱', + }, + { + name: ['ghost'], + uniqueName: 'Ghost', + emoji: '👻', + }, + { + name: ['halloween', 'pumpkin', 'all hallows eve', 'Jack-O-Lantern'], + uniqueName: 'Jack-O-Lantern', + emoji: '🎃', + }, + { + name: ['lollipop'], + uniqueName: 'Lollipop', + emoji: '🍭', + }, + { + name: ['owl'], + uniqueName: 'Owl', + emoji: '🦉', + }, + { + name: ['skull'], + uniqueName: 'Skull', + emoji: '💀', + }, + { + name: ['crossbones'], + uniqueName: 'Skull and Crossbones', + emoji: '☠', + }, + { + name: ['devil'], + uniqueName: 'Smiling Face with Horns', + emoji: '😈', + }, + { + name: ['spider'], + uniqueName: 'Spider', + emoji: '🕷', + }, + { + name: ['web'], + uniqueName: 'Spider Web', + emoji: '🕸', + }, + { + name: ['wilted flower'], + uniqueName: 'Wilted Flower', + emoji: '🥀', + }, + { + name: ['witcher'], + uniqueName: 'Mage', + emoji: '🧙', + }, + { + name: ['witch'], + uniqueName: 'Woman Mage', + emoji: '🧙‍♀️', + }, + { + name: ['vampire'], + uniqueName: 'Vampire', + emoji: '🧛', + }, + { + name: ['female vampire'], + uniqueName: 'Woman Vampire', + emoji: '🧛‍♀️', + }, + { + name: ['zombie'], + uniqueName: 'Zombie', + emoji: '🧟', + }, + { + name: ['female zombie'], + uniqueName: 'Woman Zombie', + emoji: '🧟‍♀️', + }, + ], + mentions: [ + { + name: 'spooky', + emoji: '👻', + }, + ], +} diff --git a/lang/es.js b/app/lang/es.js similarity index 100% rename from lang/es.js rename to app/lang/es.js diff --git a/app/lang/fr.js b/app/lang/fr.js new file mode 100644 index 0000000..faa0115 --- /dev/null +++ b/app/lang/fr.js @@ -0,0 +1,182 @@ +module.exports = { + lang: 'fr', + words: [ + { + // Please do not delete this one 🙏 + name: ['spooky'], + uniqueName: '_custom_spooky', + emoji: '761602615326146590', + }, + { + name: ['alien', 'extraterrestre'], + uniqueName: 'Alien', + emoji: '👽', + }, + { + name: ['monstre'], + uniqueName: 'Alien Monster', + emoji: '👾', + }, + { + name: ['anxieux'], + uniqueName: 'Anxious Face with Sweat', + emoji: '😰', + }, + { + name: ['chauve-souris', 'chauve souris'], + uniqueName: 'Bat', + emoji: '🦇', + }, + { + name: ['os'], + uniqueName: 'Bone', + emoji: '🦴', + }, + { + name: ['cerveau', 'brain'], + uniqueName: 'Brain', + emoji: '🧠', + }, + { + name: ['balais'], + uniqueName: 'Broom', + emoji: '🧹', + }, + { + name: ['cierge', 'bougie'], + uniqueName: 'Candle', + emoji: '🕯', + }, + { + name: ['bonbon', 'friandise'], + uniqueName: 'Candy', + emoji: '🍬', + }, + { + name: ['chaines'], + uniqueName: 'Chains', + emoji: '⛓', + }, + { + name: ['clown'], + uniqueName: 'Clown Face', + emoji: '🤡', + }, + { + name: ['cerceuil'], + uniqueName: 'Coffin', + emoji: '⚰', + }, + { + name: ['boule de crystal'], + uniqueName: 'Crystal Ball', + emoji: '🔮', + }, + { + name: ['dague', 'couteau'], + uniqueName: 'Dagger', + emoji: '🗡', + }, + { + name: ['maison abandonnée'], + uniqueName: 'Derelict House', + emoji: '🏚', + }, + { + name: ['cri'], + uniqueName: 'Face Screaming in Fear', + emoji: '😱', + }, + { + name: ['peur'], + uniqueName: 'Fearful Face', + emoji: '😨', + }, + { + name: ['feu', 'fire'], + uniqueName: 'Fire', + emoji: '🔥', + }, + { + name: ['pleine lune'], + uniqueName: 'Full Moon', + emoji: '🌕', + }, + { + name: ['urne'], + uniqueName: 'Funeral Urn', + emoji: '⚱', + }, + { + name: ['fantôme', 'fantome'], + uniqueName: 'Ghost', + emoji: '👻', + }, + { + name: ['halloween', 'citrouille', 'jack-o-lantern'], + uniqueName: 'Jack-O-Lantern', + emoji: '🎃', + }, + { + name: ['sucette'], + uniqueName: 'Lollipop', + emoji: '🍭', + }, + { + name: ['hibou'], + uniqueName: 'Owl', + emoji: '🦉', + }, + { + name: ['crâne', 'crane'], + uniqueName: 'Skull', + emoji: '💀', + }, + { + name: ['diable', 'satan'], + uniqueName: 'Smiling Face with Horns', + emoji: '😈', + }, + { + name: ['araignée', 'araignee'], + uniqueName: 'Spider', + emoji: '🕷', + }, + { + name: ['toile'], + uniqueName: 'Spider Web', + emoji: '🕸', + }, + { + name: ['fleur fané', 'fleur fané'], + uniqueName: 'Wilted Flower', + emoji: '🥀', + }, + { + name: ['sorcier'], + uniqueName: 'Mage', + emoji: '🧙', + }, + { + name: ['sorcière', 'sorciere'], + uniqueName: 'Woman Mage', + emoji: '🧙‍♀️', + }, + { + name: ['vampire'], + uniqueName: 'Vampire', + emoji: '🧛', + }, + { + name: ['zombie', 'mort vivant'], + uniqueName: 'Zombie', + emoji: '🧟', + }, + ], + mentions: [ + { + name: 'spook', + emoji: '👻', + }, + ], +} diff --git a/lang/gr.js b/app/lang/gr.js similarity index 96% rename from lang/gr.js rename to app/lang/gr.js index 6f1b366..13a82cf 100644 --- a/lang/gr.js +++ b/app/lang/gr.js @@ -1,5 +1,5 @@ module.exports = { - lang: 'gr', + lang: 'el', words: [ { // Please do not delete this one 🙏 @@ -33,6 +33,6 @@ module.exports = { { name: 'Ιστός', emoji: '🕸', - } + }, ], } diff --git a/lang/hi.js b/app/lang/hi.js similarity index 100% rename from lang/hi.js rename to app/lang/hi.js diff --git a/lang/nl.js b/app/lang/nl.js similarity index 100% rename from lang/nl.js rename to app/lang/nl.js diff --git a/lang/pt.js b/app/lang/pt.js similarity index 100% rename from lang/pt.js rename to app/lang/pt.js diff --git a/lang/sv.js b/app/lang/sv.js similarity index 100% rename from lang/sv.js rename to app/lang/sv.js diff --git a/app/lang/tr.js b/app/lang/tr.js new file mode 100644 index 0000000..ba78e44 --- /dev/null +++ b/app/lang/tr.js @@ -0,0 +1,34 @@ +module.exports = { + lang: 'tr', //Turkish + words: [ + { + // Please do not delete this one 🙏 + name: 'ürpertici', + emoji: '761602615326146590', + }, + { + name: ['karamela', 'Şeker'], + emoji: '🍬', + }, + { + name: ['hayalet', 'ruh'], + emoji: '👻', + }, + { + name: 'cadılar bayramı', + emoji: '🎃', + }, + { + name: 'vampir', + emoji: '🧛🏻‍♂️', + }, + { + name: ['sihirbaz', 'büyücü', 'dahi'], + emoji: '🧙', + }, + { + name: ['zombi', 'yaşayan ölü', 'yılan tanrı'], + emoji: '🧟', + }, + ], + } \ No newline at end of file diff --git a/app/lang/zh.js b/app/lang/zh.js new file mode 100644 index 0000000..3dcd0e3 --- /dev/null +++ b/app/lang/zh.js @@ -0,0 +1,34 @@ +module.exports = { + lang: 'zh', // Mandrin Chinese + words: [ + { + // Please do not delete this one 🙏 + name: ['幽灵般的', '害怕的'], + emoji: '761602615326146590', + }, + { + name: ['糖', '糖果'], + emoji: '🍬', + }, + { + name: ['鬼', '幻影'], + emoji: '👻', + }, + { + name: '万圣节', + emoji: '🎃', + }, + { + name: '吸血鬼', + emoji: '🧛🏻‍♂️', + }, + { + name: ['巫师', '觋'], + emoji: '🧙', + }, + { + name: '僵尸', + emoji: '🧟', + }, + ], + } \ No newline at end of file diff --git a/models/servers.js b/app/models/servers.js similarity index 86% rename from models/servers.js rename to app/models/servers.js index 8e283d3..02c2784 100644 --- a/models/servers.js +++ b/app/models/servers.js @@ -1,7 +1,8 @@ const low = require('lowdb') const FileSync = require('lowdb/adapters/FileSync') +const { resolve } = require('path') -const adapter = new FileSync('db/servers.json') +const adapter = new FileSync(resolve(__dirname, `../db/servers.json`)) const db = low(adapter) // Set some defaults (required if your JSON file is empty) diff --git a/models/trickortreats.js b/app/models/trickortreats.js similarity index 71% rename from models/trickortreats.js rename to app/models/trickortreats.js index 9231097..2d0c2ac 100644 --- a/models/trickortreats.js +++ b/app/models/trickortreats.js @@ -1,7 +1,7 @@ const low = require('lowdb') const FileSync = require('lowdb/adapters/FileSync') - -const adapter = new FileSync('db/trickortreats.json') +const { resolve } = require('path') +const adapter = new FileSync(resolve(__dirname, `../db/trickortreats.json`)) const db = low(adapter) // Set some defaults (required if your JSON file is empty) @@ -9,6 +9,7 @@ db.defaults({ trickortreats: [] }).write() // Find a trick or treat exports.getTrickOrTreat = (userId) => { + console.log(userId) return db.get('trickortreats').find({ userId: userId }).value() } @@ -21,7 +22,7 @@ exports.createTrickOrTreat = (userId) => { exports.trick = (userId) => { const trickOrTreat = db.get('trickortreats').find({ userId: userId }) - trickOrTreat.assign({ tricks: trickOrTreat.value().tricks++, lastPlayed: new Date() }).write() + trickOrTreat.assign({ tricks: trickOrTreat.value().tricks + 1, lastPlayed: new Date() }).write() return this.getTrickOrTreat(userId) } @@ -30,7 +31,7 @@ exports.trick = (userId) => { exports.treat = (userId) => { const trickOrTreat = db.get('trickortreats').find({ userId: userId }) - trickOrTreat.assign({ treats: trickOrTreat.value().treats++, lastPlayed: new Date() }).write() + trickOrTreat.assign({ treats: trickOrTreat.value().treats + 1, lastPlayed: new Date() }).write() return this.getTrickOrTreat(userId) } diff --git a/sounds/batR.wav b/app/sounds/batR.wav similarity index 100% rename from sounds/batR.wav rename to app/sounds/batR.wav diff --git a/sounds/boo_laughR.wav b/app/sounds/boo_laughR.wav similarity index 100% rename from sounds/boo_laughR.wav rename to app/sounds/boo_laughR.wav diff --git a/sounds/chainsawR.wav b/app/sounds/chainsawR.wav similarity index 100% rename from sounds/chainsawR.wav rename to app/sounds/chainsawR.wav diff --git a/sounds/creaky_doorR.wav b/app/sounds/creaky_doorR.wav similarity index 100% rename from sounds/creaky_doorR.wav rename to app/sounds/creaky_doorR.wav diff --git a/sounds/entrance_mixR.wav b/app/sounds/entrance_mixR.wav similarity index 100% rename from sounds/entrance_mixR.wav rename to app/sounds/entrance_mixR.wav diff --git a/sounds/ghostR.wav b/app/sounds/ghostR.wav similarity index 100% rename from sounds/ghostR.wav rename to app/sounds/ghostR.wav diff --git a/sounds/howlin_wolfR.wav b/app/sounds/howlin_wolfR.wav similarity index 100% rename from sounds/howlin_wolfR.wav rename to app/sounds/howlin_wolfR.wav diff --git a/sounds/lab2XrcR.wav b/app/sounds/lab2XrcR.wav similarity index 100% rename from sounds/lab2XrcR.wav rename to app/sounds/lab2XrcR.wav diff --git a/sounds/mnstrX.wav b/app/sounds/mnstrX.wav similarity index 100% rename from sounds/mnstrX.wav rename to app/sounds/mnstrX.wav diff --git a/sounds/noreturnR.wav b/app/sounds/noreturnR.wav similarity index 100% rename from sounds/noreturnR.wav rename to app/sounds/noreturnR.wav diff --git a/sounds/ogreR.wav b/app/sounds/ogreR.wav similarity index 100% rename from sounds/ogreR.wav rename to app/sounds/ogreR.wav diff --git a/sounds/spooky_skeleton.mp3 b/app/sounds/spooky_skeleton.mp3 similarity index 100% rename from sounds/spooky_skeleton.mp3 rename to app/sounds/spooky_skeleton.mp3 diff --git a/sounds/thunderR.wav b/app/sounds/thunderR.wav similarity index 100% rename from sounds/thunderR.wav rename to app/sounds/thunderR.wav diff --git a/sounds/way_scaryR.wav b/app/sounds/way_scaryR.wav similarity index 100% rename from sounds/way_scaryR.wav rename to app/sounds/way_scaryR.wav diff --git a/sounds/welcomeR.wav b/app/sounds/welcomeR.wav similarity index 100% rename from sounds/welcomeR.wav rename to app/sounds/welcomeR.wav diff --git a/sounds/windR.wav b/app/sounds/windR.wav similarity index 100% rename from sounds/windR.wav rename to app/sounds/windR.wav diff --git a/sounds/wrong_doorR.wav b/app/sounds/wrong_doorR.wav similarity index 100% rename from sounds/wrong_doorR.wav rename to app/sounds/wrong_doorR.wav diff --git a/app/utils/languageCode.js b/app/utils/languageCode.js new file mode 100644 index 0000000..f092295 --- /dev/null +++ b/app/utils/languageCode.js @@ -0,0 +1,141 @@ +module.exports = [ + { name: '(Afan) Oromo', code: 'om' }, + { name: 'Abkhazian', code: 'ab' }, + { name: 'Afar', code: 'aa' }, + { name: 'Afrikaans', code: 'af' }, + { name: 'Albanian', code: 'sq' }, + { name: 'Amharic', code: 'am' }, + { name: 'Arabic', code: 'ar' }, + { name: 'Armenian', code: 'hy' }, + { name: 'Assamese', code: 'as' }, + { name: 'Aymara', code: 'ay' }, + { name: 'Azerbaijani', code: 'az' }, + { name: 'Bashkir', code: 'ba' }, + { name: 'Basque', code: 'eu' }, + { name: 'Bengali', code: 'bn' }, + { name: 'Bhutani', code: 'dz' }, + { name: 'Bihari', code: 'bh' }, + { name: 'Bislama', code: 'bi' }, + { name: 'Breton', code: 'br' }, + { name: 'Bulgarian', code: 'bg' }, + { name: 'Burmese', code: 'my' }, + { name: 'Byelorussian', code: 'be' }, + { name: 'Cambodian', code: 'km' }, + { name: 'Catalan', code: 'ca' }, + { name: 'Chinese', code: 'zh' }, + { name: 'Corsican', code: 'co' }, + { name: 'Croatian', code: 'hr' }, + { name: 'Czech', code: 'cs' }, + { name: 'Danish', code: 'da' }, + { name: 'Dutch', code: 'nl' }, + { name: 'English', code: 'en' }, + { name: 'Esperanto', code: 'eo' }, + { name: 'Estonian', code: 'et' }, + { name: 'Faeroese', code: 'fo' }, + { name: 'Fiji', code: 'fj' }, + { name: 'Finnish', code: 'fi' }, + { name: 'French', code: 'fr' }, + { name: 'Frisian', code: 'fy' }, + { name: 'Galician', code: 'gl' }, + { name: 'Georgian', code: 'ka' }, + { name: 'German', code: 'de' }, + { name: 'Greek', code: 'el' }, + { name: 'Greenlandic', code: 'kl' }, + { name: 'Guarani', code: 'gn' }, + { name: 'Gujarati', code: 'gu' }, + { name: 'Hausa', code: 'ha' }, + { name: 'Hebrew (former iw)', code: 'he' }, + { name: 'Hindi', code: 'hi' }, + { name: 'Hungarian', code: 'hu' }, + { name: 'Icelandic', code: 'is' }, + { name: 'Indonesian (former in)', code: 'id' }, + { name: 'Interlingua', code: 'ia' }, + { name: 'Interlingue', code: 'ie' }, + { name: 'Inupiak', code: 'ik' }, + { name: 'Inuktitut (Eskimo)', code: 'iu' }, + { name: 'Irish', code: 'ga' }, + { name: 'Italian', code: 'it' }, + { name: 'Japanese', code: 'ja' }, + { name: 'Javanese', code: 'jw' }, + { name: 'Kannada', code: 'kn' }, + { name: 'Kashmiri', code: 'ks' }, + { name: 'Kazakh', code: 'kk' }, + { name: 'Kinyarwanda', code: 'rw' }, + { name: 'Kirghiz', code: 'ky' }, + { name: 'Kirundi', code: 'rn' }, + { name: 'Korean', code: 'ko' }, + { name: 'Kurdish', code: 'ku' }, + { name: 'Laothian', code: 'lo' }, + { name: 'Latin', code: 'la' }, + { name: 'Latvian Lettish', code: 'lv' }, + { name: 'Lingala', code: 'ln' }, + { name: 'Lithuanian', code: 'lt' }, + { name: 'Macedonian', code: 'mk' }, + { name: 'Malagasy', code: 'mg' }, + { name: 'Malay', code: 'ms' }, + { name: 'Malayalam', code: 'ml' }, + { name: 'Maltese', code: 'mt' }, + { name: 'Maori', code: 'mi' }, + { name: 'Marathi', code: 'mr' }, + { name: 'Moldavian', code: 'mo' }, + { name: 'Mongolian', code: 'mn' }, + { name: 'Nauru', code: 'na' }, + { name: 'Nepali', code: 'ne' }, + { name: 'Norwegian', code: 'no' }, + { name: 'Occitan', code: 'oc' }, + { name: 'Oriya', code: 'or' }, + { name: 'Pashto Pushto', code: 'ps' }, + { name: 'Persian', code: 'fa' }, + { name: 'Polish', code: 'pl' }, + { name: 'Portuguese', code: 'pt' }, + { name: 'Punjabi', code: 'pa' }, + { name: 'Quechua', code: 'qu' }, + { name: 'Rhaeto Romance', code: 'rm' }, + { name: 'Romanian', code: 'ro' }, + { name: 'Russian', code: 'ru' }, + { name: 'Samoan', code: 'sm' }, + { name: 'Sangro', code: 'sg' }, + { name: 'Sanskrit', code: 'sa' }, + { name: 'Scots Gaelic', code: 'gd' }, + { name: 'Serbian', code: 'sr' }, + { name: 'Serbo Croatian', code: 'sh' }, + { name: 'Sesotho', code: 'st' }, + { name: 'Setswana', code: 'tn' }, + { name: 'Shona', code: 'sn' }, + { name: 'Sindhi', code: 'sd' }, + { name: 'Singhalese', code: 'si' }, + { name: 'Siswati', code: 'ss' }, + { name: 'Slovak', code: 'sk' }, + { name: 'Slovenian', code: 'sl' }, + { name: 'Somali', code: 'so' }, + { name: 'Spanish', code: 'es' }, + { name: 'Sudanese', code: 'su' }, + { name: 'Swahili', code: 'sw' }, + { name: 'Swedish', code: 'sv' }, + { name: 'Tagalog', code: 'tl' }, + { name: 'Tajik', code: 'tg' }, + { name: 'Tamil', code: 'ta' }, + { name: 'Tatar', code: 'tt' }, + { name: 'Tegulu', code: 'te' }, + { name: 'Thai', code: 'th' }, + { name: 'Tibetan', code: 'bo' }, + { name: 'Tigrinya', code: 'ti' }, + { name: 'Tonga', code: 'to' }, + { name: 'Tsonga', code: 'ts' }, + { name: 'Turkish', code: 'tr' }, + { name: 'Turkmen', code: 'tk' }, + { name: 'Twi', code: 'tw' }, + { name: 'Uigur', code: 'ug' }, + { name: 'Ukrainian', code: 'uk' }, + { name: 'Urdu', code: 'ur' }, + { name: 'Uzbek', code: 'uz' }, + { name: 'Vietnamese', code: 'vi' }, + { name: 'Volapuk', code: 'vo' }, + { name: 'Welch', code: 'cy' }, + { name: 'Wolof', code: 'wo' }, + { name: 'Xhosa', code: 'xh' }, + { name: 'Yiddish (former ji)', code: 'yi' }, + { name: 'Yoruba', code: 'yo' }, + { name: 'Zhuang', code: 'za' }, + { name: 'Zulu', code: 'zu' }, +] diff --git a/app/utils/reactMessage.js b/app/utils/reactMessage.js new file mode 100644 index 0000000..4af2ad7 --- /dev/null +++ b/app/utils/reactMessage.js @@ -0,0 +1,63 @@ +const { MessageEmbed } = require('discord.js') +const { colors } = require('../config/config.json') +const { getGuild } = require('../models/servers') + +String.prototype.contains = function (toCheck) { + return this.indexOf(toCheck) >= 0 +} + +const translationNameContainsWord = (translationName, fullMessage) => { + if (translationName instanceof Array) { + return translationName + .map((n) => { + let regex = new RegExp('\\b' + n + '\\b', 'g') + return regex.test(fullMessage) + }) + .reduce((a, b) => a || b) + } else { + return fullMessage.contains(translationName) + } +} + +const translationNameContainsUser = (translationName, mentions) => { + // Search all mentions for trigger words, cast translationName to an array if not for compactness + return mentions.members.some((m) => + (typeof translationName === 'string' ? [translationName] : translationName).some((w) => + m.displayName.toLowerCase().contains(w) + ) + ) +} + +module.exports = async (guildId, message, webhook) => { + const guildData = await getGuild(guildId) + const translation = await require(`../lang/${guildData.lang}.js`) + const fullMessage = message.content.toLowerCase() + + let triggeredEmoji = [] + let triggeredWord = [] + + translation.words.forEach((w) => { + if (translationNameContainsWord(w.name, fullMessage)) { + message.react(w.emoji) + triggeredEmoji.push(w.emoji) + triggeredWord.push(w.name) + } + }) + translation.mentions.forEach((m) => { + if (translationNameContainsUser(m.name, message.mentions)) { + message.react(m.emoji) + triggeredEmoji.push(m.emoji) + triggeredWord.push(w.name) + } + }) + + if (triggeredEmoji.length != 0) { + const privateEmbed = new MessageEmbed() + .setColor(colors.primary) + .setTitle(`Reaction trigger`) + .setDescription(`**Message:**\n${message.content}\n\n**Reacted with:**\n${triggeredEmoji.join(' ')}`) + .setFooter(`${message.author.tag} | #${message.channel.name} | ${message.guild.name}`, message.guild.iconURL()) + + webhook.send(privateEmbed) + } +} diff --git a/commands/Picture/meme.js b/commands/Picture/meme.js new file mode 100644 index 0000000..98f905f --- /dev/null +++ b/commands/Picture/meme.js @@ -0,0 +1,38 @@ +const snoowrap = require('snoowrap') +const redditHelper = require('../../utils/redditHelper.js') +const { prefix, reddit } = require('../../config.json') +const { isPicture } = require('../../utils/redditHelper.js') + +const SUBREDDIT_NAME = 'spooktober' + +module.exports = { + config: { + name: 'Spooky meme', + usage: `${prefix}meme`, + description: 'Posts a spooky meme as a picture. The image is fetched from reddit.com/r/spooktober', + command: 'meme', + displayHelp: true, + }, + + run: async (bot, message, args) => { + if (!redditHelper.configIsValid(reddit)) { + message.reply(':ghost: No reddit config found. Please check the README.md to provide one.') + return + } + + const retriever = new snoowrap({ + userAgent: reddit.userAgent, + clientId: reddit.clientId, + clientSecret: reddit.clientSecret, + refreshToken: reddit.refreshToken, + }) + + const submissions = await retriever.getSubreddit(SUBREDDIT_NAME).getHot() + const imageSubmissions = submissions.filter((x) => !x.over_18 && !x.spoiler && redditHelper.isPicture(x)) + const randomIdx = Math.floor(Math.random() * imageSubmissions.length) + const randSubmission = imageSubmissions[randomIdx] + + if (randSubmission) message.channel.send(randSubmission.url) + else message.channel.send(':ghost: No spooky meme found') + }, +} diff --git a/commands/Text/trickortreat.js b/commands/Text/trickortreat.js deleted file mode 100644 index 80cba76..0000000 --- a/commands/Text/trickortreat.js +++ /dev/null @@ -1,55 +0,0 @@ -const { treat, trick, createTrickOrTreat, getTrickOrTreat } = require('../../models/trickortreats') -const { prefix } = require('../../config.json') -const { readdirSync } = require('fs') -const { resolve } = require('path') - -const isToday = (someDate) => { - const today = new Date() - const currentDate = new Date(Date.parse(someDate)) - - return ( - currentDate.getDate() == today.getDate() && - currentDate.getMonth() == today.getMonth() && - currentDate.getFullYear() == today.getFullYear() - ) -} - -module.exports = { - config: { - name: 'Trick or Treat', - usage: `${prefix}trickortreat`, - description: 'Gives you candy or scares you', - command: 'trickortreat', - aliases: [], - displayHelp: false, - }, - - run: async (bot, message, args) => { - let trickOrTreat = await getTrickOrTreat(message.author.id) - - if (!trickOrTreat) { - await createTrickOrTreat(message.author.id) - trickOrTreat = await getTrickOrTreat(message.author.id) - } - - if (!trickOrTreat.lastPlayed || !isToday(trickOrTreat.lastPlayed)) { - if (Math.random() >= 0.5) { - trickOrTreat = await trick(message.author.id) - - message.reply( - `:smiling_imp: Oh no! You have been tricked! You now have ${trickOrTreat.treats} :candy: and ${trickOrTreat.tricks} :smiling_imp:. Better luck tomorrow!` - ) - } else { - trickOrTreat = await treat(message.author.id) - - message.reply( - `:candy: Sweet, sweet candy! You now have ${trickOrTreat.treats} :candy: and ${trickOrTreat.tricks} :smiling_imp:. There will be more candy up for grabs tomorrow!` - ) - } - } else { - message.author.send( - `It looks like you have already played today. You now have ${trickOrTreat.treats} :candy: and ${trickOrTreat.tricks} :smiling_imp:. There will be more candy up for grabs tomorrow!` - ) - } - }, -} diff --git a/config.example.json b/config.example.json deleted file mode 100644 index a4495ba..0000000 --- a/config.example.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "token": "", - "prefix": "boo!", - "webhook": { - "id": "", - "token": "" - }, - "colors": { - "primary": "#FF6403", - "success": "#2ECC71", - "error": "#E74C3C" - } -} \ No newline at end of file diff --git a/db/trickortreats.json b/db/trickortreats.json deleted file mode 100644 index 79d536c..0000000 --- a/db/trickortreats.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "trickortreats": [] -} \ No newline at end of file diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..ebef1a0 --- /dev/null +++ b/docker-compose.dev.yml @@ -0,0 +1,13 @@ +version: '3.6' + +services: + spooky-bot: + image: spookybot/spookybot:latest + build: + context: . + dockerfile: docker/spooky-node/DockerfileProd + args: + - NODE_VERSION=12.18.2 + volumes: + - ./app:/spooky/app/:rw + - ./package.json:/spooky/package.json diff --git a/docker/spooky-node/DockerfileDev b/docker/spooky-node/DockerfileDev new file mode 100644 index 0000000..7efe48c --- /dev/null +++ b/docker/spooky-node/DockerfileDev @@ -0,0 +1,16 @@ +ARG NODE_VERSION + +FROM node:${NODE_VERSION} AS build + +COPY . /spooky + +WORKDIR /spooky +RUN npm cache clean --force +RUN rm -rf node_modules +RUN npm install + +FROM node:${NODE_VERSION} +WORKDIR /spooky +COPY --from=build /spooky /spooky + +ENTRYPOINT ["npm", "run", "dev"] diff --git a/docker/spooky-node/DockerfileProd b/docker/spooky-node/DockerfileProd new file mode 100644 index 0000000..50f1768 --- /dev/null +++ b/docker/spooky-node/DockerfileProd @@ -0,0 +1,14 @@ +ARG NODE_VERSION + +FROM node:${NODE_VERSION} + +COPY . /spooky + +WORKDIR /spooky +RUN npm cache clean --force +RUN rm -rf node_modules +RUN npm install --production + +RUN rm -rf app/config +RUN rm -rf app/db +ENTRYPOINT ["npm", "run", "start"] diff --git a/lang/en.js b/lang/en.js deleted file mode 100644 index a56c416..0000000 --- a/lang/en.js +++ /dev/null @@ -1,426 +0,0 @@ -module.exports = { - comment: 'Additional information: \ -DISCLAIMER: The current version is just adding new emojis, words in English and a uniqueName field which is explained in the following text BUT later this file should be replaced with a template file that only contains the mapping of the emojis and uniqueName and for other languagese subfolders exist containing the mapping from unitqueName of the emoji to "words/expressions" that trigger the emoji.\ -1. The overall idea behind this file is to provide a common mapping for an emoji to an unique name which can be then mapped to certain words, e.g. for "Happy Halloween!" you would like to see the "Jack-O-Lantern" emoji, but when typing "I really carved an awesome Jack-O-Lantern!" this is also the case. To achieve this mapping between the unique uniqueName of the emoji to certain words ("Halloween", "Jack-O-Lantern", "Pumpkin", "halloween", "pumpkin") the language specific files are used.\ -So people who want to add a language do not have to search for all the emojis again and based on e.g. the English mapping can add their translation.\ -\ -Based on the emoji uniqueName it should also be possible to search for it on the internet to get more information, e.g. when an emoji might not be found you want to know why this does not work for you, and this is the reason for the following info.\ -\ -2. The list "emojiTemplateUniqueNameMappings" of emojis below (including their uniqueNames) was mostly taken from https://emojipedia.org/halloween/ and enhanced a bit with more emojis mentioned at the website, so using the uniqueName you should be able to find the emoji and background information on it (e.g. in which Unicode version was it introduced or what should the emoji mean).\ -\ -3. If you do not see some of the emojis this might be due to your used font as emojis are introduced in newer version of Unicode and not all fonts support the latest Unicode version.', - lang: 'en', - words: [ - { - // Please do not delete this one 🙏 - name: ['spooky'], - uniqueName: '_custom_spooky', - emoji: '761602615326146590', - }, - { - name: ['alien'], - uniqueName: 'Alien', - emoji: '👽', - }, - { - name: ['alienmonster'], - uniqueName: 'Alien Monster', - emoji: '👾', - }, -// Coming with Unicode/Emoji 13.0 this year, e.g. with Android 11 -// { -// name: ['heart'], -// uniqueName: 'Anatomical Heart', -// emoji: '🫀', -// }, - { - name: ['angry devil'], - uniqueName: 'Angry Face with Horns', - emoji: '👿', - }, - { - name: ['anxious'], - uniqueName: 'Anxious Face with Sweat', - emoji: '😰', - }, - { - name: ['axe'], - uniqueName: 'Axe', - emoji: '🪓', - }, - { - name: ['bat'], - uniqueName: 'Bat', - emoji: '🦇', - }, - { - name: ['beating heart'], - uniqueName: 'Beating Heart', - emoji: '💓', - }, - { - name: ['black heart'], - uniqueName: 'Black Heart', - emoji: '🖤', - }, - { - name: ['black cat'], - uniqueName: 'Black Cat', - emoji: '🐈‍⬛', - }, - { - name: ['blood'], - uniqueName: 'Blood', - emoji: '🩸', - }, - { - name: ['drop of blood'], - uniqueName: 'Drop of Blood', - emoji: '🩸', - }, - { - name: ['bone'], - uniqueName: 'Bone', - emoji: '🦴', - }, - { - name: ['brain'], - uniqueName: 'Brain', - emoji: '🧠', - }, - { - name: ['broom'], - uniqueName: 'Broom', - emoji: '🧹', - }, - { - name: ['candle'], - uniqueName: 'Candle', - emoji: '🕯', - }, - { - name: ['candy'], - uniqueName: 'Candy', - emoji: '🍬', - }, - { - name: ['chains'], - uniqueName: 'Chains', - emoji: '⛓', - }, - { - name: ['chocolate bar'], - uniqueName: 'Chocolate Bar', - emoji: '🍫', - }, - { - name: ['cloud with lightning'], - uniqueName: 'Cloud with Lightning', - emoji: '🌩', - }, - { - name: ['clown'], - uniqueName: 'Clown Face', - emoji: '🤡', - }, - { - name: ['coffin'], - uniqueName: 'Coffin', - emoji: '⚰', - }, - { - name: ['crystral ball'], - uniqueName: 'Crystal Ball', - emoji: '🔮', - }, - { - name: ['dagger'], - uniqueName: 'Dagger', - emoji: '🗡', - }, -// Coming with Unicode/Emoji 13.0 this year, e.g. with Android 11 -// { -// name: ['disguised'], -// uniqueName: 'Disguised Face', -// emoji: '🥸', -// }, - { - name: ['abandoned house'], - uniqueName: 'Derelict House', - emoji: '🏚', - }, - { - name: ['ear'], - uniqueName: 'Ear', - emoji: '👂', - }, - { - name: ['eye'], - uniqueName: 'Eye', - emoji: '👁️', - }, - { - name: ['eyes'], - uniqueName: 'Eyes', - emoji: '👀', - }, - { - name: ['investigate'], - uniqueName: 'Detective', - emoji: '🕵', - }, - { - name: ['elf'], - uniqueName: 'Elf', - emoji: '🧝', - }, - { - name: ['scream'], - uniqueName: 'Face Screaming in Fear', - emoji: '😱', - }, - { - name: ['mummy'], - uniqueName: 'Face with Head-Bandage', - emoji: '🤕', - }, - { - name: ['fairy'], - uniqueName: 'Fairy', - emoji: '🧚', - }, - { - name: ['fear'], - uniqueName: 'Fearful Face', - emoji: '😨', - }, - { - name: ['fire'], - uniqueName: 'Fire', - emoji: '🔥', - }, - { - name: ['flying saucer'], - uniqueName: 'Flying Saucer', - emoji: '🛸', - }, - { - name: ['fog'], - uniqueName: 'Fog', - emoji: '🌫️', - }, - { - name: ['foot'], - uniqueName: 'Foot', - emoji: '🦶', - }, - { - name: ['footprints'], - uniqueName: 'Footprints', - emoji: '👣', - }, - { - name: ['full moon'], - uniqueName: 'Full Moon', - emoji: '🌕', - }, - { - name: ['funeral urn'], - uniqueName: 'Funeral Urn', - emoji: '⚱', - }, - { - name: ['genie'], - uniqueName: 'Genie', - emoji: '🧞', - }, - { - name: ['goblin'], - uniqueName: 'Goblin', - emoji: '👺', - }, - { - name: ['ghost'], - uniqueName: 'Ghost', - emoji: '👻', - }, - { - name: ['greenheart'], - uniqueName: 'Green Heart', - emoji: '💚', - }, -// Coming with Unicode/Emoji 13.0 this year, e.g. with Android 11 -// { -// name: ['headstone'], -// uniqueName: 'Headstone', -// emoji: '🪦', -// }, - { - name: ['high voltage'], - uniqueName: 'High Voltage', - emoji: '⚡', - }, - { - name: ['halloween', 'pumpkin', 'all hallows eve'], - uniqueName: 'Jack-O-Lantern', - emoji: '🎃', - }, - { - name: ['leg'], - uniqueName: 'Leg', - emoji: '🦵', - }, - { - name: ['lollipop'], - uniqueName: 'Lollipop', - emoji: '🍭', - }, - { - name: ['witcher'], - uniqueName: 'Mage', - emoji: '🧙', - }, - { - name: ['mermaid'], - uniqueName: 'Mermaid', - emoji: '🧜‍♀️', - }, - { - name: ['merman'], - uniqueName: 'Merman', - emoji: '🧜‍♂️', - }, - { - name: ['merperson'], - uniqueName: 'Merperson', - emoji: '🧜', - }, - { - name: ['new moon face'], - uniqueName: 'New Moon Face', - emoji: '🌚', - }, - { - name: ['night with stars'], - uniqueName: 'Night with Stars', - emoji: '🌃', - }, - { - name: ['ogre'], - uniqueName: 'Ogre', - emoji: '👹', - }, - { - name: ['orangeheart'], - uniqueName: 'Orange Heart', - emoji: '🧡', - }, - { - name: ['owl'], - uniqueName: 'Owl', - emoji: '🦉', - }, - { - name: ['disguises'], - uniqueName: 'Performing Arts', - emoji: '🎭', - }, - { - name: ['person in suit levitating'], - uniqueName: 'Person In Suit Levitating', - emoji: '🕴', - }, - { - name: ['princess'], - uniqueName: 'Princess', - emoji: '👸', - }, - { - name: ['robot'], - uniqueName: 'Robot', - emoji: '🤖', - }, - { - name: ['skull'], - uniqueName: 'Skull', - emoji: '💀', - }, - { - name: ['crossbones'], - uniqueName: 'Skull and Crossbones', - emoji: '☠', - }, - { - name: ['smiling devil'], - uniqueName: 'Smiling Face with Horns', - emoji: '😈', - }, - { - name: ['spider'], - uniqueName: 'Spider', - emoji: '🕷', - }, - { - name: ['web'], - uniqueName: 'Spider Web', - emoji: '🕸', - }, - { - name: ['tongue'], - uniqueName: 'Tongue', - emoji: '👅', - }, - { - name: ['unicorn'], - uniqueName: 'Unicorn', - emoji: '🦄', - }, - { - name: ['vampire'], - uniqueName: 'Vampire', - emoji: '🧛', - }, - { - name: ['wilted flower'], - uniqueName: 'Wilted Flower', - emoji: '🥀', - }, - { - name: ['female elf'], - uniqueName: 'Woman Elf', - emoji: '🧝‍♀️', - }, - { - name: ['female genie'], - uniqueName: 'Woman Genie', - emoji: '🧞‍♀️', - }, - { - name: ['witch'], - uniqueName: 'Woman Mage', - emoji: '🧙‍♀️', - }, - { - name: ['female vampire'], - uniqueName: 'Woman Vampire', - emoji: '🧛‍♀️', - }, - { - name: ['female zombie'], - uniqueName: 'Woman Zombie', - emoji: '🧟‍♀️', - }, - { - name: ['zombie'], - uniqueName: 'Zombie', - emoji: '🧟', - } - ], - mentions: [ - { - name: 'spooky', - emoji: '👻' - } - ] -} - diff --git a/lang/fr.js b/lang/fr.js deleted file mode 100644 index 83e5d4b..0000000 --- a/lang/fr.js +++ /dev/null @@ -1,42 +0,0 @@ -module.exports = { - lang: 'es', - words: [ - { - // Please do not delete this one 🙏 - name: 'spooky', - emoji: '761602615326146590', - }, - { - name: ['bonbon'], - emoji: '🍬', - }, - { - name: ['fantôme', 'fantome'], - emoji: '👻', - }, - { - name: ['halloween'], - emoji: '🎃', - }, - { - name: ['vampire'], - emoji: '🧛', - }, - { - name: ['mage', 'magicien'], - emoji: '🧙', - }, - { - name: ['zombie', 'mort vivant'], - emoji: '🧟', - }, - { - name: ['mort', 'squelette', 'crane', 'crâne'], - emoji: '💀', - }, - { - name: ['toile', "toile d'araignée"], - emoji: '🕸', - }, - ], -} diff --git a/package.json b/package.json index a91ae85..e127a61 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "spookybot", - "version": "1.0.0", + "version": "1.2.0", "description": "A spooky Discord bot", - "main": "core.js", + "main": "app/core.js", "repository": "git@github.com:LucasCtrl/spookyBot.git", "author": "LucasCtrl ", "license": "MIT", @@ -11,7 +11,8 @@ "@discordjs/opus": "^0.3.2", "discord.js": "^12.3.1", "ffmpeg-static": "^4.2.7", - "lowdb": "^1.0.0" + "lowdb": "^1.0.0", + "snoowrap": "^1.21.0" }, "devDependencies": { "eslint": "^7.10.0", @@ -21,7 +22,7 @@ "prettier": "^2.1.2" }, "scripts": { - "dev": "nodemon --inspect core.js", - "start": "node core.js" + "dev": "nodemon --inspect ./app/core.js", + "start": "node app/core.js" } } diff --git a/utils/reactMessage.js b/utils/reactMessage.js deleted file mode 100644 index 56ffeae..0000000 --- a/utils/reactMessage.js +++ /dev/null @@ -1,31 +0,0 @@ -const { getGuild } = require('../models/servers') - -String.prototype.contains = function (toCheck) { - return this.indexOf(toCheck) >= 0 -} - -const translationNameContainsWord = (translationName, fullMessage) => { - if (translationName instanceof Array) { - return translationName.map((n) => fullMessage.contains(n)).reduce((a, b) => a || b) - } else { - return fullMessage.contains(translationName) - } -} - -const translationNameContainsUser = (translationName, mentions) => { - // Search all mentions for trigger words, cast translationName to an array if not for compactness - return mentions.members.some(m => (typeof translationName === 'string' ? [translationName] : translationName).some(w => m.displayName.toLowerCase().contains(w))) -} - -module.exports = async (guildId, message) => { - const guildData = await getGuild(guildId) - const translation = await require(`../lang/${guildData.lang}.js`) - const fullMessage = message.content.toLowerCase() - - translation.words.forEach((w) => { - if (translationNameContainsWord(w.name, fullMessage)) message.react(w.emoji) - }) - translation.mentions.forEach(m => { - if (translationNameContainsUser(m.name, message.mentions)) message.react(m.emoji) - }) -} diff --git a/utils/redditHelper.js b/utils/redditHelper.js new file mode 100644 index 0000000..1a2f145 --- /dev/null +++ b/utils/redditHelper.js @@ -0,0 +1,10 @@ +module.exports = { + configIsValid: (redditConf) => { + return ( + redditConf && redditConf.userAgent && redditConf.clientId && redditConf.clientSecret && redditConf.refreshToken + ) + }, + isPicture: (submission) => { + return submission.url && submission.url.includes('https://i.redd.it') + }, +} diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index dd8e4b1..0000000 --- a/yarn.lock +++ /dev/null @@ -1,1929 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@babel/code-frame@^7.0.0": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.4.tgz#168da1a36e90da68ae8d49c0f1b48c7c6249213a" - integrity sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/helper-validator-identifier@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz#a78c7a7251e01f616512d31b10adcf52ada5e0d2" - integrity sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw== - -"@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" - integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@derhuerst/http-basic@^8.2.0": - version "8.2.1" - resolved "https://registry.yarnpkg.com/@derhuerst/http-basic/-/http-basic-8.2.1.tgz#11e3964cf1f2fb40806f9a0fff0c451bb7526093" - integrity sha512-Rmn7qQQulw2sxJ8qGfZ7OuqMWuhz8V+L5xnYKMF5cXVcYqmgWqlVEAme90pF7Ya8OVhxVxLmhh0rI2k6t7ITWw== - dependencies: - caseless "^0.12.0" - concat-stream "^1.6.2" - http-response-object "^3.0.1" - parse-cache-control "^1.0.1" - -"@discordjs/collection@^0.1.6": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-0.1.6.tgz#9e9a7637f4e4e0688fd8b2b5c63133c91607682c" - integrity sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ== - -"@discordjs/form-data@^3.0.1": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@discordjs/form-data/-/form-data-3.0.1.tgz#5c9e6be992e2e57d0dfa0e39979a850225fb4697" - integrity sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -"@discordjs/node-pre-gyp@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@discordjs/node-pre-gyp/-/node-pre-gyp-0.1.0.tgz#762b3b40be8567186bd7e79084befec4738a9e89" - integrity sha512-6u3EbK2x+j9bM3iK9/pE7BWLxOXZ1PvcsbDo3ZBdPocu95qPHj8zCVsBBk3Cao7V6o8QpwxUyJl6oVJ6T3ZgAg== - dependencies: - detect-libc "^1.0.3" - mkdirp "^0.5.5" - needle "^2.4.1" - nopt "^4.0.3" - npm-packlist "^1.4.8" - npmlog "^4.1.2" - rc "^1.2.8" - rimraf "^3.0.2" - semver "^7.3.0" - tar "^6.0.2" - -"@discordjs/opus@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@discordjs/opus/-/opus-0.3.2.tgz#7dde2d4541ccfaa451e029f9d8da980286f9f56a" - integrity sha512-T/ubykd4Xi19vDfw7/Oe+iTQBJ28yMI2PQAzK+Zue0PB9OpEYaeIXU7k5255061RwL+rHX9w7P/P2of+x2Vu2A== - dependencies: - "@discordjs/node-pre-gyp" "^0.1.0" - node-addon-api "^2.0.0" - -"@eslint/eslintrc@^0.1.3": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.3.tgz#7d1a2b2358552cc04834c0979bd4275362e37085" - integrity sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA== - dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - lodash "^4.17.19" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" - -"@sindresorhus/is@^0.14.0": - version "0.14.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" - integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== - -"@szmarczak/http-timer@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" - integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== - dependencies: - defer-to-connect "^1.0.1" - -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== - -"@types/node@^10.0.3": - version "10.17.35" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.35.tgz#58058f29b870e6ae57b20e4f6e928f02b7129f56" - integrity sha512-gXx7jAWpMddu0f7a+L+txMplp3FnHl53OhQIF9puXKq3hDGY/GjH+MF04oWnV/adPSCrbtHumDCFwzq2VhltWA== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -acorn-jsx@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" - integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== - -acorn@^7.4.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" - integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== - -agent-base@6: - version "6.0.1" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.1.tgz#808007e4e5867decb0ab6ab2f928fbdb5a596db4" - integrity sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg== - dependencies: - debug "4" - -ajv@^6.10.0, ajv@^6.10.2, ajv@^6.12.4: - version "6.12.5" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.5.tgz#19b0e8bae8f476e5ba666300387775fb1a00a4da" - integrity sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-align@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" - integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== - dependencies: - string-width "^3.0.0" - -ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-regex@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" - integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= - -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" - integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^3.2.0, ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - -anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -astral-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" - integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -binary-extensions@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" - integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== - -boxen@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" - integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== - dependencies: - ansi-align "^3.0.0" - camelcase "^5.3.1" - chalk "^3.0.0" - cli-boxes "^2.2.0" - string-width "^4.1.0" - term-size "^2.1.0" - type-fest "^0.8.1" - widest-line "^3.1.0" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -cacheable-request@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" - integrity sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg== - dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^3.0.0" - lowercase-keys "^2.0.0" - normalize-url "^4.1.0" - responselike "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caseless@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= - -chalk@^2.0.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" - integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chokidar@^3.2.2: - version "3.4.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" - integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.4.0" - optionalDependencies: - fsevents "~2.1.2" - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -cli-boxes@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== - -clone-response@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" - integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= - dependencies: - mimic-response "^1.0.0" - -code-point-at@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" - integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -concat-stream@^1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" - integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== - dependencies: - buffer-from "^1.0.0" - inherits "^2.0.3" - readable-stream "^2.2.2" - typedarray "^0.0.6" - -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== - dependencies: - dot-prop "^5.2.0" - graceful-fs "^4.1.2" - make-dir "^3.0.0" - unique-string "^2.0.0" - write-file-atomic "^3.0.0" - xdg-basedir "^4.0.0" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cross-spawn@^7.0.2: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -crypto-random-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" - integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== - -debug@4, debug@^4.0.1, debug@^4.1.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" - integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== - dependencies: - ms "2.1.2" - -debug@^2.2.0: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.2.6: - version "3.2.6" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" - integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== - dependencies: - ms "^2.1.1" - -decompress-response@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" - integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= - dependencies: - mimic-response "^1.0.0" - -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -deep-is@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -defer-to-connect@^1.0.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" - integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - -discord.js@^12.3.1: - version "12.3.1" - resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-12.3.1.tgz#8f58ac17d29b068dbfeb6c01fc7777bacd5324cf" - integrity sha512-mSFyV/mbvzH12UXdS4zadmeUf8IMQOo/YdunubG1wWt1xjWvtaJz/s9CGsFD2B5pTw1W/LXxxUbrQjIZ/xlUdw== - dependencies: - "@discordjs/collection" "^0.1.6" - "@discordjs/form-data" "^3.0.1" - abort-controller "^3.0.0" - node-fetch "^2.6.0" - prism-media "^1.2.2" - setimmediate "^1.0.5" - tweetnacl "^1.0.3" - ws "^7.3.1" - -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" - -dot-prop@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" - integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== - dependencies: - is-obj "^2.0.0" - -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= - -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== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -end-of-stream@^1.1.0: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enquirer@^2.3.5: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -env-paths@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.0.tgz#cdca557dc009152917d6166e2febe1f039685e43" - integrity sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA== - -escape-goat@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-2.1.1.tgz#1b2dc77003676c457ec760b2dc68edb648188675" - integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -eslint-config-prettier@^6.12.0: - version "6.12.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-6.12.0.tgz#9eb2bccff727db1c52104f0b49e87ea46605a0d2" - integrity sha512-9jWPlFlgNwRUYVoujvWTQ1aMO8o6648r+K7qU7K5Jmkbyqav1fuEZC0COYpGBxyiAJb65Ra9hrmFx19xRGwXWw== - dependencies: - get-stdin "^6.0.0" - -eslint-plugin-prettier@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz#168ab43154e2ea57db992a2cd097c828171f75c2" - integrity sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-utils@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" - integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== - dependencies: - eslint-visitor-keys "^1.1.0" - -eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" - integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== - -eslint@^7.10.0: - version "7.10.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.10.0.tgz#494edb3e4750fb791133ca379e786a8f648c72b9" - integrity sha512-BDVffmqWl7JJXqCjAK6lWtcQThZB/aP1HXSH1JKwGwv0LQEdvpR7qzNrUT487RM39B5goWuboFad5ovMBmD8yA== - dependencies: - "@babel/code-frame" "^7.0.0" - "@eslint/eslintrc" "^0.1.3" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.0.1" - doctrine "^3.0.0" - enquirer "^2.3.5" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^1.3.0" - espree "^7.3.0" - esquery "^1.2.0" - esutils "^2.0.2" - file-entry-cache "^5.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.0.0" - globals "^12.1.0" - ignore "^4.0.6" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^3.13.1" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash "^4.17.19" - minimatch "^3.0.4" - natural-compare "^1.4.0" - optionator "^0.9.1" - progress "^2.0.0" - regexpp "^3.1.0" - semver "^7.2.1" - strip-ansi "^6.0.0" - strip-json-comments "^3.1.0" - table "^5.2.3" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^7.3.0: - version "7.3.0" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" - integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== - dependencies: - acorn "^7.4.0" - acorn-jsx "^5.2.0" - eslint-visitor-keys "^1.3.0" - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" - integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -fast-deep-equal@^3.1.1: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -ffmpeg-static@^4.2.7: - version "4.2.7" - resolved "https://registry.yarnpkg.com/ffmpeg-static/-/ffmpeg-static-4.2.7.tgz#92ae531ca87748357adf1f05a218a7fadc51fd44" - integrity sha512-SGnOr2d+k0/9toRIv9t5/hN/DMYbm5XMtG0wVwGM1tEyXJAD6dbcWOEvfHq4LOySm9uykKL6LMC4eVPeteUnbQ== - dependencies: - "@derhuerst/http-basic" "^8.2.0" - env-paths "^2.2.0" - https-proxy-agent "^5.0.0" - progress "^2.0.3" - -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 "^2.0.1" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -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: - flatted "^2.0.0" - rimraf "2.6.3" - write "1.0.3" - -flatted@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" - integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== - -fs-minipass@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" - integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== - dependencies: - minipass "^3.0.0" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" - integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -get-stdin@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" - integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== - -get-stream@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" - integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== - dependencies: - pump "^3.0.0" - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -glob-parent@^5.0.0, glob-parent@~5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" - integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== - dependencies: - is-glob "^4.0.1" - -glob@^7.1.3: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-dirs@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-2.0.1.tgz#acdf3bb6685bcd55cb35e8a052266569e9469201" - integrity sha512-5HqUqdhkEovj2Of/ms3IeS/EekcO54ytHRLV4PEY2rhRwrHXLQjeVEES0Lhka0xwNDtGYn58wyC4s5+MHsOO6A== - dependencies: - ini "^1.3.5" - -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" - -got@^9.6.0: - version "9.6.0" - resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" - integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== - dependencies: - "@sindresorhus/is" "^0.14.0" - "@szmarczak/http-timer" "^1.1.2" - cacheable-request "^6.0.0" - decompress-response "^3.3.0" - duplexer3 "^0.1.4" - get-stream "^4.1.0" - lowercase-keys "^1.0.1" - mimic-response "^1.0.1" - p-cancelable "^1.0.0" - to-readable-stream "^1.0.0" - url-parse-lax "^3.0.0" - -graceful-fs@^4.1.2, graceful-fs@^4.1.3: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has-yarn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/has-yarn/-/has-yarn-2.1.0.tgz#137e11354a7b5bf11aa5cb649cf0c6f3ff2b2e77" - integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== - -http-cache-semantics@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" - integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== - -http-response-object@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-3.0.2.tgz#7f435bb210454e4360d074ef1f989d5ea8aa9810" - integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== - dependencies: - "@types/node" "^10.0.3" - -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - -iconv-lite@^0.4.4: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ignore-by-default@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09" - integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= - -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - -ignore@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-lazy@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/import-lazy/-/import-lazy-2.1.0.tgz#05698e3d45c88e8d7e9d92cb0584e77f096f3e43" - integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.3, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@^1.3.5, ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-installed-globally@^0.3.1: - version "0.3.2" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.3.2.tgz#fd3efa79ee670d1187233182d5b0a1dd00313141" - integrity sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g== - dependencies: - global-dirs "^2.0.1" - is-path-inside "^3.0.1" - -is-npm@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-4.0.0.tgz#c90dd8380696df87a7a6d823c20d0b12bbe3c84d" - integrity sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-obj@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" - integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== - -is-path-inside@^3.0.1: - version "3.0.2" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.2.tgz#f5220fc82a3e233757291dddc9c5877f2a1f3017" - integrity sha512-/2UGPSgmtqwo1ktx8NDHjuPwZWmHhO+gj0f93EkhLB5RgW9RZevWYYlIkS6zePc6U2WpOdQYIwHe9YC4DWEBVg== - -is-promise@^2.1.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" - integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== - -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-yarn-global@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/is-yarn-global/-/is-yarn-global-0.3.0.tgz#d502d3382590ea3004893746754c89139973e232" - integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -json-buffer@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" - integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -keyv@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.1.0.tgz#ecc228486f69991e49e9476485a5be1e8fc5c4d9" - integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== - dependencies: - json-buffer "3.0.0" - -latest-version@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== - dependencies: - package-json "^6.3.0" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lodash@4, lodash@^4.17.14, lodash@^4.17.19: - version "4.17.20" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" - integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== - -lowdb@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/lowdb/-/lowdb-1.0.0.tgz#5243be6b22786ccce30e50c9a33eac36b20c8064" - integrity sha512-2+x8esE/Wb9SQ1F9IHaYWfsC9FIecLOPrK4g17FGEayjUWH172H6nwicRovGvSE2CPZouc2MCIqCI7h9d+GftQ== - dependencies: - graceful-fs "^4.1.3" - is-promise "^2.1.0" - lodash "4" - pify "^3.0.0" - steno "^0.4.1" - -lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" - integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== - -lowercase-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-2.0.0.tgz#2603e78b7b4b0006cbca2fbcc8a3202558ac9479" - integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== - -make-dir@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -mime-db@1.44.0: - version "1.44.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" - integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== - -mime-types@^2.1.12: - version "2.1.27" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" - integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== - dependencies: - mime-db "1.44.0" - -mimic-response@^1.0.0, mimic-response@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" - integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.0, minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== - dependencies: - yallist "^4.0.0" - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mkdirp@^0.5.1, mkdirp@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mkdirp@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.2, ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -needle@^2.4.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.5.2.tgz#cf1a8fce382b5a280108bba90a14993c00e4010a" - integrity sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - -node-addon-api@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" - integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== - -node-fetch@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" - integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== - -nodemon@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.4.tgz#55b09319eb488d6394aa9818148c0c2d1c04c416" - integrity sha512-Ltced+hIfTmaS28Zjv1BM552oQ3dbwPqI4+zI0SLgq+wpJhSyqgYude/aZa/3i31VCQWMfXJVxvu86abcam3uQ== - dependencies: - chokidar "^3.2.2" - debug "^3.2.6" - ignore-by-default "^1.0.1" - minimatch "^3.0.4" - pstree.remy "^1.1.7" - semver "^5.7.1" - supports-color "^5.5.0" - touch "^3.1.0" - undefsafe "^2.0.2" - update-notifier "^4.0.0" - -nopt@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - -nopt@~1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= - dependencies: - abbrev "1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-url@^4.1.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" - integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== - -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.4.8: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - -npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -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= - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-tmpdir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -p-cancelable@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" - integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== - -package-json@^6.3.0: - version "6.5.0" - resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" - integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== - dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-cache-control@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" - integrity sha1-juqz5U+laSD+Fro493+iGqzC104= - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -picomatch@^2.0.4, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prepend-http@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" - integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" - integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg== - -prism-media@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/prism-media/-/prism-media-1.2.2.tgz#4f1c841f248b67d325a24b4e6b1a491b8f50a24f" - integrity sha512-I+nkWY212lJ500jLe4tN9tWO7nRiBAVdMv76P9kffZjYhw20raMlW1HSSvS+MLXC9MmbNZCazMrAr+5jEEgTuw== - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -progress@^2.0.0, progress@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== - -pstree.remy@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a" - integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -pupa@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.0.1.tgz#dbdc9ff48ffbea4a26a069b6f9f7abb051008726" - integrity sha512-hEJH0s8PXLY/cdXh66tNEQGndDrIKNqNC5xmrysZy3i5C3oEoLna7YAOad+7u125+zH1HNXUmGEkrhb3c2VriA== - dependencies: - escape-goat "^2.0.0" - -rc@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -readable-stream@^2.0.6, readable-stream@^2.2.2: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readdirp@~3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" - integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== - dependencies: - picomatch "^2.2.1" - -regexpp@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== - -registry-auth-token@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.0.tgz#1d37dffda72bbecd0f581e4715540213a65eb7da" - integrity sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w== - dependencies: - rc "^1.2.8" - -registry-url@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/registry-url/-/registry-url-5.1.0.tgz#e98334b50d5434b81136b44ec638d9c2009c5009" - integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== - dependencies: - rc "^1.2.8" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= - dependencies: - lowercase-keys "^1.0.0" - -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== - dependencies: - glob "^7.1.3" - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -semver-diff@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/semver-diff/-/semver-diff-3.1.1.tgz#05f77ce59f325e00e2706afd67bb506ddb1ca32b" - integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== - dependencies: - semver "^6.3.0" - -semver@^5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.2.1, semver@^7.3.0: - version "7.3.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" - integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== - -set-blocking@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -setimmediate@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -signal-exit@^3.0.0, signal-exit@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -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== - dependencies: - ansi-styles "^3.2.0" - astral-regex "^1.0.0" - is-fullwidth-code-point "^2.0.0" - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -steno@^0.4.1: - version "0.4.4" - resolved "https://registry.yarnpkg.com/steno/-/steno-0.4.4.tgz#071105bdfc286e6615c0403c27e9d7b5dcb855cb" - integrity sha1-BxEFvfwobmYVwEA8J+nXtdy4Vcs= - dependencies: - graceful-fs "^4.1.3" - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2": - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" - integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== - dependencies: - emoji-regex "^7.0.1" - is-fullwidth-code-point "^2.0.0" - strip-ansi "^5.1.0" - -string-width@^4.0.0, string-width@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.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" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== - dependencies: - ansi-regex "^4.1.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -supports-color@^5.3.0, supports-color@^5.5.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -table@^5.2.3: - version "5.4.6" - resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" - integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== - dependencies: - ajv "^6.10.2" - lodash "^4.17.14" - slice-ansi "^2.1.0" - string-width "^3.0.0" - -tar@^6.0.2: - version "6.0.5" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.0.5.tgz#bde815086e10b39f1dcd298e89d596e1535e200f" - integrity sha512-0b4HOimQHj9nXNEAA7zWwMM91Zhhba3pspja6sQbgTpynOJf+bkjBnfybNYzbpLbnwXnbyB4LOREvlyXLkCHSg== - dependencies: - chownr "^2.0.0" - fs-minipass "^2.0.0" - minipass "^3.0.0" - minizlib "^2.1.1" - mkdirp "^1.0.3" - yallist "^4.0.0" - -term-size@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" - integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -to-readable-stream@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/to-readable-stream/-/to-readable-stream-1.0.0.tgz#ce0aa0c2f3df6adf852efb404a783e77c0475771" - integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -touch@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b" - integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== - dependencies: - nopt "~1.0.10" - -tweetnacl@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" - integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typedarray@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" - integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= - -undefsafe@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.3.tgz#6b166e7094ad46313b2202da7ecc2cd7cc6e7aae" - integrity sha512-nrXZwwXrD/T/JXeygJqdCO6NZZ1L66HrxM/Z7mIq2oPanoN0F1nLx3lwJMu6AwJY69hdixaFQOuoYsMjE5/C2A== - dependencies: - debug "^2.2.0" - -unique-string@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" - integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== - dependencies: - crypto-random-string "^2.0.0" - -update-notifier@^4.0.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-4.1.3.tgz#be86ee13e8ce48fb50043ff72057b5bd598e1ea3" - integrity sha512-Yld6Z0RyCYGB6ckIjffGOSOmHXj1gMeE7aROz4MG+XMkmixBX4jUngrGXNYz7wPKBmtoD4MnBa2Anu7RSKht/A== - dependencies: - boxen "^4.2.0" - chalk "^3.0.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.3.1" - is-npm "^4.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.0.0" - pupa "^2.0.1" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" - -uri-js@^4.2.2: - version "4.4.0" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.0.tgz#aa714261de793e8a82347a7bcc9ce74e86f28602" - integrity sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g== - dependencies: - punycode "^2.1.0" - -url-parse-lax@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" - integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= - dependencies: - prepend-http "^2.0.0" - -util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -v8-compile-cache@^2.0.3: - version "2.1.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" - integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -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@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.3.1.tgz#d0547bf67f7ce4f12a72dfe31262c68d7dc551c8" - integrity sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA== - -xdg-basedir@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/xdg-basedir/-/xdg-basedir-4.0.0.tgz#4bc8d9984403696225ef83a1573cbbcb4e79db13" - integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==