From dcb1351791e23165b23a8b549aabbb38294f55a5 Mon Sep 17 00:00:00 2001 From: Max Isom Date: Sun, 12 Dec 2021 20:22:21 -0500 Subject: [PATCH 01/47] Migrate play command to slash command --- package.json | 3 ++ src/bot.ts | 90 ++++++++++++++++------------------------- src/commands/help.ts | 66 ------------------------------ src/commands/index.ts | 13 +++--- src/commands/play.ts | 72 +++++++++++++++------------------ src/inversify.config.ts | 2 - src/services/player.ts | 2 +- tsconfig.json | 2 +- yarn.lock | 75 +++++++++++++++++++++++++++++++++- 9 files changed, 153 insertions(+), 172 deletions(-) delete mode 100644 src/commands/help.ts diff --git a/package.json b/package.json index 931c92f..7b8eae3 100644 --- a/package.json +++ b/package.json @@ -72,12 +72,15 @@ } }, "dependencies": { + "@discordjs/builders": "^0.9.0", "@discordjs/opus": "^0.7.0", + "@discordjs/rest": "^0.1.0-canary.0", "@discordjs/voice": "^0.7.5", "@types/libsodium-wrappers": "^0.7.9", "array-shuffle": "^3.0.0", "debug": "^4.3.1", "delay": "^5.0.0", + "discord-api-types": "^0.25.2", "discord.js": "^13.3.0", "dotenv": "^8.5.1", "fluent-ffmpeg": "^2.1.2", diff --git a/src/bot.ts b/src/bot.ts index b49c1f6..09e9833 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -1,113 +1,91 @@ -import {Client, Message, Collection} from 'discord.js'; +import {Client, Collection, User} from 'discord.js'; import {inject, injectable} from 'inversify'; import {TYPES} from './types.js'; -import {Settings, Shortcut} from './models/index.js'; import container from './inversify.config.js'; import Command from './commands/index.js'; import debug from './utils/debug.js'; -import NaturalLanguage from './services/natural-language-commands.js'; import handleGuildCreate from './events/guild-create.js'; import handleVoiceStateUpdate from './events/voice-state-update.js'; import errorMsg from './utils/error-msg.js'; import {isUserInVoice} from './utils/channels.js'; import Config from './services/config.js'; import {generateDependencyReport} from '@discordjs/voice'; +import {REST} from '@discordjs/rest'; +import {Routes} from 'discord-api-types/v9'; @injectable() export default class { private readonly client: Client; - private readonly naturalLanguage: NaturalLanguage; private readonly token: string; private readonly commands!: Collection; - constructor(@inject(TYPES.Client) client: Client, @inject(TYPES.Services.NaturalLanguage) naturalLanguage: NaturalLanguage, @inject(TYPES.Config) config: Config) { + constructor(@inject(TYPES.Client) client: Client, @inject(TYPES.Config) config: Config) { this.client = client; - this.naturalLanguage = naturalLanguage; this.token = config.DISCORD_TOKEN; this.commands = new Collection(); } - public async listen(): Promise { + public async listen(): Promise { // Load in commands container.getAll(TYPES.Command).forEach(command => { - const commandNames = [command.name, ...command.aliases]; - - commandNames.forEach(commandName => this.commands.set(commandName, command)); + // TODO: remove ! + if (command.slashCommand?.name) { + this.commands.set(command.slashCommand.name, command); + } }); - this.client.on('messageCreate', async (msg: Message) => { - // Get guild settings - if (!msg.guild) { + // Register event handlers + this.client.on('interactionCreate', async interaction => { + if (!interaction.isCommand()) { return; } - const settings = await Settings.findByPk(msg.guild.id); + const command = this.commands.get(interaction.commandName); - if (!settings) { - // Got into a bad state, send owner welcome message - this.client.emit('guildCreate', msg.guild); + if (!command) { return; } - const {prefix, channel} = settings; - - if (!msg.content.startsWith(prefix) && !msg.author.bot && msg.channel.id === channel && await this.naturalLanguage.execute(msg)) { - // Natural language command handled message - return; - } - - if (!msg.content.startsWith(prefix) || msg.author.bot || msg.channel.id !== channel) { - return; - } - - let args = msg.content.slice(prefix.length).split(/ +/); - const command = args.shift()!.toLowerCase(); - - // Get possible shortcut - const shortcut = await Shortcut.findOne({where: {guildId: msg.guild.id, shortcut: command}}); - - let handler: Command; - - if (this.commands.has(command)) { - handler = this.commands.get(command)!; - } else if (shortcut) { - const possibleHandler = this.commands.get(shortcut.command.split(' ')[0]); - - if (possibleHandler) { - handler = possibleHandler; - args = shortcut.command.split(/ +/).slice(1); - } else { - return; - } - } else { + if (!interaction.guild) { + await interaction.reply(errorMsg('you can\'t use this bot in a DM')); return; } try { - if (handler.requiresVC && !isUserInVoice(msg.guild, msg.author)) { - await msg.channel.send(errorMsg('gotta be in a voice channel')); + if (command.requiresVC && !isUserInVoice(interaction.guild, interaction.member.user as User)) { + await interaction.reply({content: errorMsg('gotta be in a voice channel'), ephemeral: true}); return; } - await handler.execute(msg, args); + if (command.executeFromInteraction) { + await command.executeFromInteraction(interaction); + } } catch (error: unknown) { debug(error); - await msg.channel.send(errorMsg((error as Error).message.toLowerCase())); + await interaction.reply({content: errorMsg(error as Error), ephemeral: true}); } }); - this.client.on('ready', async () => { + this.client.once('ready', async () => { debug(generateDependencyReport()); - console.log(`Ready! Invite the bot with https://discordapp.com/oauth2/authorize?client_id=${this.client.user?.id ?? ''}&scope=bot&permissions=36752448`); + console.log(`Ready! Invite the bot with https://discordapp.com/oauth2/authorize?client_id=${this.client.user?.id ?? ''}&scope=bot&permissions=2184236096`); }); this.client.on('error', console.error); this.client.on('debug', debug); - // Register event handlers this.client.on('guildCreate', handleGuildCreate); this.client.on('voiceStateUpdate', handleVoiceStateUpdate); - return this.client.login(this.token); + // Update commands + await this.client.login(this.token); + + const rest = new REST({version: '9'}).setToken(this.token); + + await rest.put( + Routes.applicationGuildCommands(this.client.user!.id, this.client.guilds.cache.first()!.id), + // TODO: remove + {body: this.commands.map(command => command.slashCommand ? command.slashCommand.toJSON() : null)}, + ); } } diff --git a/src/commands/help.ts b/src/commands/help.ts deleted file mode 100644 index 7058efd..0000000 --- a/src/commands/help.ts +++ /dev/null @@ -1,66 +0,0 @@ -import {Message, Util} from 'discord.js'; -import {injectable} from 'inversify'; -import Command from '.'; -import {TYPES} from '../types.js'; -import {Settings} from '../models/index.js'; -import container from '../inversify.config.js'; - -@injectable() -export default class implements Command { - public name = 'help'; - public aliases = ['h']; - public examples = [ - ['help', 'you don\'t need a description'], - ]; - - private commands: Command[] = []; - - public async execute(msg: Message, _: string []): Promise { - if (this.commands.length === 0) { - // Lazy load to avoid circular dependencies - this.commands = container.getAll(TYPES.Command); - } - - const settings = await Settings.findOne({where: {guildId: msg.guild!.id}}); - - if (!settings) { - return; - } - - const {prefix} = settings; - - const res = Util.splitMessage(this.commands.sort((a, b) => a.name.localeCompare(b.name)).reduce((content, command) => { - const aliases = command.aliases.reduce((str, alias, i) => { - str += alias; - - if (i !== command.aliases.length - 1) { - str += ', '; - } - - return str; - }, ''); - - if (aliases === '') { - content += `**${command.name}**:\n`; - } else { - content += `**${command.name}** (${aliases}):\n`; - } - - command.examples.forEach(example => { - content += `- \`${prefix}${example[0]}\`: ${example[1]}\n`; - }); - - content += '\n'; - - return content; - }, '')); - - for (const r of res) { - // eslint-disable-next-line no-await-in-loop - await msg.author.send(r); - } - - await msg.react('🇩'); - await msg.react('🇲'); - } -} diff --git a/src/commands/index.ts b/src/commands/index.ts index a945072..981c1fb 100644 --- a/src/commands/index.ts +++ b/src/commands/index.ts @@ -1,9 +1,12 @@ -import {Message} from 'discord.js'; +import {SlashCommandBuilder} from '@discordjs/builders'; +import {CommandInteraction} from 'discord.js'; export default interface Command { - name: string; - aliases: string[]; - examples: string[][]; + // TODO: remove + name?: string; + aliases?: string[]; + examples?: string[][]; + slashCommand?: Partial & Pick; requiresVC?: boolean; - execute: (msg: Message, args: string[]) => Promise; + executeFromInteraction?: (interaction: CommandInteraction) => Promise; } diff --git a/src/commands/play.ts b/src/commands/play.ts index 856edec..9a79819 100644 --- a/src/commands/play.ts +++ b/src/commands/play.ts @@ -1,31 +1,27 @@ -import {TextChannel, Message} from 'discord.js'; +import {CommandInteraction, GuildMember} from 'discord.js'; import {URL} from 'url'; import {Except} from 'type-fest'; -import {TYPES} from '../types.js'; +import {SlashCommandBuilder} from '@discordjs/builders'; import {inject, injectable} from 'inversify'; +import Command from '.'; +import {TYPES} from '../types.js'; import {QueuedSong, STATUS} from '../services/player.js'; import PlayerManager from '../managers/player.js'; import {getMostPopularVoiceChannel, getMemberVoiceChannel} from '../utils/channels.js'; -import LoadingMessage from '../utils/loading-message.js'; import errorMsg from '../utils/error-msg.js'; -import Command from '.'; import GetSongs from '../services/get-songs.js'; @injectable() export default class implements Command { - public name = 'play'; - public aliases = ['p']; - public examples = [ - ['play', 'resume paused playback'], - ['play https://www.youtube.com/watch?v=dQw4w9WgXcQ', 'plays a YouTube video'], - ['play cool music', 'plays the first search result for "cool music" from YouTube'], - ['play https://www.youtube.com/watch?list=PLi9drqWffJ9FWBo7ZVOiaVy0UQQEm4IbP', 'adds the playlist to the queue'], - ['play https://open.spotify.com/track/3ebXMykcMXOcLeJ9xZ17XH?si=tioqSuyMRBWxhThhAW51Ig', 'plays a song from Spotify'], - ['play https://open.spotify.com/album/5dv1oLETxdsYOkS2Sic00z?si=bDa7PaloRx6bMIfKdnvYQw', 'adds all songs from album to the queue'], - ['play https://open.spotify.com/playlist/37i9dQZF1DX94qaYRnkufr?si=r2fOVL_QQjGxFM5MWb84Xw', 'adds all songs from playlist to the queue'], - ['play cool music immediate', 'adds the first search result for "cool music" to the front of the queue'], - ['play cool music i', 'adds the first search result for "cool music" to the front of the queue'], - ]; + public readonly slashCommand = new SlashCommandBuilder() + .setName('play') + .setDescription('Play a song') + .addStringOption(option => option + .setName('query') + .setDescription('YouTube URL, Spotify URL, or search query')) + .addBooleanOption(option => option + .setName('immediate') + .setDescription('adds track to the front of the queue')); public requiresVC = true; @@ -38,43 +34,43 @@ export default class implements Command { } // eslint-disable-next-line complexity - public async execute(msg: Message, args: string[]): Promise { - const [targetVoiceChannel] = getMemberVoiceChannel(msg.member!) ?? getMostPopularVoiceChannel(msg.guild!); - - const res = new LoadingMessage(msg.channel as TextChannel); - await res.start(); - - const player = this.playerManager.get(msg.guild!.id); + public async executeFromInteraction(interaction: CommandInteraction): Promise { + const [targetVoiceChannel] = getMemberVoiceChannel(interaction.member as GuildMember) ?? getMostPopularVoiceChannel(interaction.guild!); + const player = this.playerManager.get(interaction.guild!.id); const wasPlayingSong = player.getCurrent() !== null; - if (args.length === 0) { + const query = interaction.options.getString('query'); + + if (!query) { if (player.status === STATUS.PLAYING) { - await res.stop(errorMsg('already playing, give me a song name')); + await interaction.reply({content: errorMsg('already playing, give me a song name'), ephemeral: true}); return; } // Must be resuming play if (!wasPlayingSong) { - await res.stop(errorMsg('nothing to play')); + await interaction.reply({content: errorMsg('nothing to play'), ephemeral: true}); return; } await player.connect(targetVoiceChannel); await player.play(); - await res.stop('the stop-and-go light is now green'); + await interaction.reply('the stop-and-go light is now green'); return; } - const addToFrontOfQueue = args[args.length - 1] === 'i' || args[args.length - 1] === 'immediate'; + const addToFrontOfQueue = interaction.options.getBoolean('immediate'); const newSongs: Array> = []; let extraMsg = ''; + await interaction.deferReply(); + // Test if it's a complete URL try { - const url = new URL(args[0]); + const url = new URL(query); const YOUTUBE_HOSTS = [ 'www.youtube.com', @@ -96,12 +92,12 @@ export default class implements Command { if (song) { newSongs.push(song); } else { - await res.stop(errorMsg('that doesn\'t exist')); + await interaction.editReply(errorMsg('that doesn\'t exist')); return; } } } else if (url.protocol === 'spotify:' || url.host === 'open.spotify.com') { - const [convertedSongs, nSongsNotFound, totalSongs] = await this.getSongs.spotifySource(args[0]); + const [convertedSongs, nSongsNotFound, totalSongs] = await this.getSongs.spotifySource(query); if (totalSongs > 50) { extraMsg = 'a random sample of 50 songs was taken'; @@ -123,25 +119,23 @@ export default class implements Command { } } catch (_: unknown) { // Not a URL, must search YouTube - const query = addToFrontOfQueue ? args.slice(0, args.length - 1).join(' ') : args.join(' '); - const song = await this.getSongs.youtubeVideoSearch(query); if (song) { newSongs.push(song); } else { - await res.stop(errorMsg('that doesn\'t exist')); + await interaction.editReply(errorMsg('that doesn\'t exist')); return; } } if (newSongs.length === 0) { - await res.stop(errorMsg('no songs found')); + await interaction.editReply(errorMsg('no songs found')); return; } newSongs.forEach(song => { - player.add({...song, addedInChannelId: msg.channel.id}, {immediate: addToFrontOfQueue}); + player.add({...song, addedInChannelId: interaction.channel?.id}, {immediate: addToFrontOfQueue ?? false}); }); const firstSong = newSongs[0]; @@ -173,9 +167,9 @@ export default class implements Command { } if (newSongs.length === 1) { - await res.stop(`u betcha, **${firstSong.title}** added to the${addToFrontOfQueue ? ' front of the' : ''} queue${extraMsg}`); + await interaction.editReply(`u betcha, **${firstSong.title}** added to the${addToFrontOfQueue ? ' front of the' : ''} queue${extraMsg}`); } else { - await res.stop(`u betcha, **${firstSong.title}** and ${newSongs.length - 1} other songs were added to the queue${extraMsg}`); + await interaction.editReply(`u betcha, **${firstSong.title}** and ${newSongs.length - 1} other songs were added to the queue${extraMsg}`); } } } diff --git a/src/inversify.config.ts b/src/inversify.config.ts index 6ec1ba2..77ed99b 100644 --- a/src/inversify.config.ts +++ b/src/inversify.config.ts @@ -18,7 +18,6 @@ import Clear from './commands/clear.js'; import Config from './commands/config.js'; import Disconnect from './commands/disconnect.js'; import ForwardSeek from './commands/fseek.js'; -import Help from './commands/help.js'; import Pause from './commands/pause.js'; import Play from './commands/play.js'; import QueueCommand from './commands/queue.js'; @@ -59,7 +58,6 @@ container.bind(TYPES.Services.NaturalLanguage).to(NaturalLangua Config, Disconnect, ForwardSeek, - Help, Pause, Play, QueueCommand, diff --git a/src/services/player.ts b/src/services/player.ts index 4a226c5..5caace2 100644 --- a/src/services/player.ts +++ b/src/services/player.ts @@ -21,7 +21,7 @@ export interface QueuedSong { length: number; playlist: QueuedPlaylist | null; isLive: boolean; - addedInChannelId: Snowflake; + addedInChannelId?: Snowflake; } export enum STATUS { diff --git a/tsconfig.json b/tsconfig.json index d424d91..d22ad87 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "lib": ["ES2019"], + "lib": ["ES2019", "DOM"], "target": "es2018", "module": "ES2020", "moduleResolution": "node", diff --git a/yarn.lock b/yarn.lock index daceee5..6751524 100644 --- a/yarn.lock +++ b/yarn.lock @@ -53,6 +53,22 @@ ts-mixer "^6.0.0" tslib "^2.3.1" +"@discordjs/builders@^0.9.0": + version "0.9.0" + resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-0.9.0.tgz#1ca17677e7c180d4f266191596e17e9633180417" + integrity sha512-XM/5yrTxMF0SDKza32YzGDQO1t+qEJTaF8Zvxu/UOjzoqzMPPGQBjC1VgZxz8/CBLygW5qI+UVygMa88z13G3g== + dependencies: + "@sindresorhus/is" "^4.2.0" + discord-api-types "^0.24.0" + ts-mixer "^6.0.0" + tslib "^2.3.1" + zod "^3.11.6" + +"@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/collection@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-0.3.2.tgz#3c271dd8a93dad89b186d330e24dbceaab58424a" @@ -90,6 +106,20 @@ "@discordjs/node-pre-gyp" "^0.4.2" node-addon-api "^4.2.0" +"@discordjs/rest@^0.1.0-canary.0": + version "0.1.0-canary.0" + resolved "https://registry.yarnpkg.com/@discordjs/rest/-/rest-0.1.0-canary.0.tgz#666f9a1a0c1f2f5a09a3a79f77aeddaeafbcbcc1" + integrity sha512-d+s//ISYVV+e0w/926wMEeO7vju+Pn11x1JM4tcmVMCHSDgpi6pnFCNAXF1TEdnDcy7xf9tq5cf2pQkb/7ySTQ== + dependencies: + "@discordjs/collection" "^0.1.6" + "@sapphire/async-queue" "^1.1.4" + "@sapphire/snowflake" "^1.3.5" + abort-controller "^3.0.0" + discord-api-types "^0.18.1" + form-data "^4.0.0" + node-fetch "^2.6.1" + tslib "^2.3.0" + "@discordjs/voice@^0.7.5": version "0.7.5" resolved "https://registry.yarnpkg.com/@discordjs/voice/-/voice-0.7.5.tgz#c95bd4ecf73905f51990827df5209eb26472dbd5" @@ -152,11 +182,16 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@sapphire/async-queue@^1.1.8": +"@sapphire/async-queue@^1.1.4", "@sapphire/async-queue@^1.1.8": version "1.1.9" resolved "https://registry.yarnpkg.com/@sapphire/async-queue/-/async-queue-1.1.9.tgz#ce69611c8753c4affd905a7ef43061c7eb95c01b" integrity sha512-CbXaGwwlEMq+l1TRu01FJCvySJ1CEFKFclHT48nIfNeZXaAAmmwwy7scUKmYHPUa3GhoMp6Qr1B3eAJux6XgOQ== +"@sapphire/snowflake@^1.3.5": + version "1.3.6" + resolved "https://registry.yarnpkg.com/@sapphire/snowflake/-/snowflake-1.3.6.tgz#166e8c5c08d01c861edd7e2edc80b5739741715f" + integrity sha512-QnzuLp+p9D7agynVub/zqlDVriDza9y3STArBhNiNBUgIX8+GL5FpQxstRfw1jDr5jkZUjcuKYAHxjIuXKdJAg== + "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" @@ -393,6 +428,13 @@ abbrev@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.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -997,11 +1039,21 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +discord-api-types@^0.18.1: + version "0.18.1" + resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.18.1.tgz#5d08ed1263236be9c21a22065d0e6b51f790f492" + integrity sha512-hNC38R9ZF4uaujaZQtQfm5CdQO58uhdkoHQAVvMfIL0LgOSZeW575W8H6upngQOuoxWd8tiRII3LLJm9zuQKYg== + discord-api-types@^0.24.0: version "0.24.0" resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.24.0.tgz#9e429b8a1ddb4147134dfb3109093422de7ec549" integrity sha512-X0uA2a92cRjowUEXpLZIHWl4jiX1NsUpDhcEOpa1/hpO1vkaokgZ8kkPtPih9hHth5UVQ3mHBu/PpB4qjyfJ4A== +discord-api-types@^0.25.2: + version "0.25.2" + resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.25.2.tgz#e50ed152e6d48fe7963f5de1002ca6f2df57c61b" + integrity sha512-O243LXxb5gLLxubu5zgoppYQuolapGVWPw3ll0acN0+O8TnPUE2kFp9Bt3sTRYodw8xFIknOVxjSeyWYBpVcEQ== + discord.js@^13.3.0: version "13.3.1" resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-13.3.1.tgz#94fe05bc3ec0a3e4761e4f312a2a418c29721ab6" @@ -1242,6 +1294,11 @@ esutils@^2.0.2: 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== + eventemitter3@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -1376,6 +1433,15 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -3246,7 +3312,7 @@ tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.3.1: +tslib@^2.3.0, tslib@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== @@ -3567,3 +3633,8 @@ ytsr@^3.5.3: integrity sha512-BEyIKbQULmk27hiVUQ1cBszAqP8roPBOQTWPZpBioKxjSZBeicfgF2qPIQoY7koodQwRuo1DmCFz3DyrXjADxg== dependencies: miniget "^4.2.1" + +zod@^3.11.6: + version "3.11.6" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.11.6.tgz#e43a5e0c213ae2e02aefe7cb2b1a6fa3d7f1f483" + integrity sha512-daZ80A81I3/9lIydI44motWe6n59kRBfNzTuS2bfzVh1nAXi667TOTWWtatxyG+fwgNUiagSj/CWZwRRbevJIg== From d2ab10a13ab22d21f3e52106f355fc8272e11651 Mon Sep 17 00:00:00 2001 From: Max Isom Date: Sun, 12 Dec 2021 20:31:55 -0500 Subject: [PATCH 02/47] Edit interaction reply if necessary for error messages --- src/bot.ts | 7 ++++++- src/commands/play.ts | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/bot.ts b/src/bot.ts index 09e9833..01616ff 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -62,7 +62,12 @@ export default class { } } catch (error: unknown) { debug(error); - await interaction.reply({content: errorMsg(error as Error), ephemeral: true}); + + if (interaction.replied || interaction.deferred) { + await interaction.editReply(errorMsg('something went wrong')); + } else { + await interaction.reply({content: errorMsg(error as Error), ephemeral: true}); + } } }); diff --git a/src/commands/play.ts b/src/commands/play.ts index 9a79819..8e1616b 100644 --- a/src/commands/play.ts +++ b/src/commands/play.ts @@ -15,7 +15,7 @@ import GetSongs from '../services/get-songs.js'; export default class implements Command { public readonly slashCommand = new SlashCommandBuilder() .setName('play') - .setDescription('Play a song') + .setDescription('Play a song or resume playback') .addStringOption(option => option .setName('query') .setDescription('YouTube URL, Spotify URL, or search query')) From 20e944ed15d6cebc5617beaaf22032bb9c312077 Mon Sep 17 00:00:00 2001 From: Max Isom Date: Mon, 13 Dec 2021 20:29:22 -0500 Subject: [PATCH 03/47] Empty commit to test workflow From c5e4c4b5cf1c08d304eb6e41aac1615e7007ee6e Mon Sep 17 00:00:00 2001 From: Max Isom Date: Mon, 13 Dec 2021 20:45:01 -0500 Subject: [PATCH 04/47] Migrate clear command --- src/commands/clear.ts | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/commands/clear.ts b/src/commands/clear.ts index 9906dab..5c1a1eb 100644 --- a/src/commands/clear.ts +++ b/src/commands/clear.ts @@ -1,16 +1,15 @@ import {inject, injectable} from 'inversify'; -import {Message} from 'discord.js'; +import {CommandInteraction} from 'discord.js'; +import {SlashCommandBuilder} from '@discordjs/builders'; import {TYPES} from '../types.js'; import PlayerManager from '../managers/player.js'; import Command from '.'; @injectable() export default class implements Command { - public name = 'clear'; - public aliases = ['c']; - public examples = [ - ['clear', 'clears all songs in queue except currently playing'], - ]; + public readonly slashCommand = new SlashCommandBuilder() + .setName('clear') + .setDescription('clears all songs in queue except currently playing song'); public requiresVC = true; @@ -20,9 +19,9 @@ export default class implements Command { this.playerManager = playerManager; } - public async execute(msg: Message, _: string []): Promise { - this.playerManager.get(msg.guild!.id).clear(); + public async executeFromInteraction(interaction: CommandInteraction) { + this.playerManager.get(interaction.guild!.id).clear(); - await msg.channel.send('clearer than a field after a fresh harvest'); + await interaction.reply('clearer than a field after a fresh harvest'); } } From c33526b8b7825cbf01a9ca1c84ab3fd30a94ef0f Mon Sep 17 00:00:00 2001 From: Max Isom Date: Mon, 13 Dec 2021 20:51:08 -0500 Subject: [PATCH 05/47] Migrate disconnect command --- src/commands/config.ts | 81 -------------------------------------- src/commands/disconnect.ts | 23 ++++++----- src/commands/index.ts | 2 +- src/inversify.config.ts | 2 - 4 files changed, 14 insertions(+), 94 deletions(-) delete mode 100644 src/commands/config.ts diff --git a/src/commands/config.ts b/src/commands/config.ts deleted file mode 100644 index 8f3e0aa..0000000 --- a/src/commands/config.ts +++ /dev/null @@ -1,81 +0,0 @@ -import {TextChannel, Message, GuildChannel, ThreadChannel} from 'discord.js'; -import {injectable} from 'inversify'; -import {Settings} from '../models/index.js'; -import errorMsg from '../utils/error-msg.js'; -import Command from '.'; - -@injectable() -export default class implements Command { - public name = 'config'; - public aliases = []; - public examples = [ - ['config prefix !', 'set the prefix to !'], - ['config channel music-commands', 'bind the bot to the music-commands channel'], - ]; - - public async execute(msg: Message, args: string []): Promise { - if (args.length === 0) { - // Show current settings - const settings = await Settings.findByPk(msg.guild!.id); - - if (settings) { - let response = `prefix: \`${settings.prefix}\`\n`; - // eslint-disable-next-line @typescript-eslint/no-base-to-string - response += `channel: ${msg.guild!.channels.cache.get(settings.channel)!.toString()}`; - - await msg.channel.send(response); - } - - return; - } - - const setting = args[0]; - - if (args.length !== 2) { - await msg.channel.send(errorMsg('incorrect number of arguments')); - return; - } - - if (msg.author.id !== msg.guild!.ownerId) { - await msg.channel.send(errorMsg('not authorized')); - return; - } - - switch (setting) { - case 'prefix': { - const newPrefix = args[1]; - - await Settings.update({prefix: newPrefix}, {where: {guildId: msg.guild!.id}}); - - await msg.channel.send(`👍 prefix updated to \`${newPrefix}\``); - break; - } - - case 'channel': { - let channel: GuildChannel | ThreadChannel | undefined; - - if (args[1].includes('<#') && args[1].includes('>')) { - channel = msg.guild!.channels.cache.find(c => c.id === args[1].slice(2, args[1].indexOf('>'))); - } else { - channel = msg.guild!.channels.cache.find(c => c.name === args[1]); - } - - if (channel && channel.type === 'GUILD_TEXT') { - await Settings.update({channel: channel.id}, {where: {guildId: msg.guild!.id}}); - - await Promise.all([ - (channel as TextChannel).send('hey apparently I\'m bound to this channel now'), - msg.react('👍'), - ]); - } else { - await msg.channel.send(errorMsg('either that channel doesn\'t exist or you want me to become sentient and listen to a voice channel')); - } - - break; - } - - default: - await msg.channel.send(errorMsg('I\'ve never met this setting in my life')); - } - } -} diff --git a/src/commands/disconnect.ts b/src/commands/disconnect.ts index 89b0b85..d196985 100644 --- a/src/commands/disconnect.ts +++ b/src/commands/disconnect.ts @@ -1,4 +1,5 @@ -import {Message} from 'discord.js'; +import {CommandInteraction} from 'discord.js'; +import {SlashCommandBuilder} from '@discordjs/builders'; import {TYPES} from '../types.js'; import {inject, injectable} from 'inversify'; import PlayerManager from '../managers/player.js'; @@ -7,11 +8,9 @@ import Command from '.'; @injectable() export default class implements Command { - public name = 'disconnect'; - public aliases = ['dc']; - public examples = [ - ['disconnect', 'pauses and disconnects player'], - ]; + public readonly slashCommand = new SlashCommandBuilder() + .setName('disconnect') + .setDescription('pauses and disconnects player'); public requiresVC = true; @@ -21,16 +20,20 @@ export default class implements Command { this.playerManager = playerManager; } - public async execute(msg: Message, _: string []): Promise { - const player = this.playerManager.get(msg.guild!.id); + public async executeFromInteraction(interaction: CommandInteraction) { + const player = this.playerManager.get(interaction.guild!.id); if (!player.voiceConnection) { - await msg.channel.send(errorMsg('not connected')); + await interaction.reply({ + content: errorMsg('not connected'), + ephemeral: true, + }); + return; } player.disconnect(); - await msg.channel.send('u betcha'); + await interaction.reply('u betcha'); } } diff --git a/src/commands/index.ts b/src/commands/index.ts index 981c1fb..91b76c5 100644 --- a/src/commands/index.ts +++ b/src/commands/index.ts @@ -6,7 +6,7 @@ export default interface Command { name?: string; aliases?: string[]; examples?: string[][]; - slashCommand?: Partial & Pick; + readonly slashCommand?: Partial & Pick; requiresVC?: boolean; executeFromInteraction?: (interaction: CommandInteraction) => Promise; } diff --git a/src/inversify.config.ts b/src/inversify.config.ts index 77ed99b..6272dd3 100644 --- a/src/inversify.config.ts +++ b/src/inversify.config.ts @@ -15,7 +15,6 @@ import NaturalLanguage from './services/natural-language-commands.js'; // Comands import Command from './commands'; import Clear from './commands/clear.js'; -import Config from './commands/config.js'; import Disconnect from './commands/disconnect.js'; import ForwardSeek from './commands/fseek.js'; import Pause from './commands/pause.js'; @@ -55,7 +54,6 @@ container.bind(TYPES.Services.NaturalLanguage).to(NaturalLangua // Commands [ Clear, - Config, Disconnect, ForwardSeek, Pause, From cbc9aafe780805d6aa3fb456fdb1620dc66679d3 Mon Sep 17 00:00:00 2001 From: Max Isom Date: Mon, 13 Dec 2021 21:04:17 -0500 Subject: [PATCH 06/47] Migrate fseek command --- src/commands/fseek.ts | 65 ++++++++++++++++++++++++++++--------------- 1 file changed, 42 insertions(+), 23 deletions(-) diff --git a/src/commands/fseek.ts b/src/commands/fseek.ts index 16d1430..5a46a17 100644 --- a/src/commands/fseek.ts +++ b/src/commands/fseek.ts @@ -1,18 +1,21 @@ -import {Message, TextChannel} from 'discord.js'; +import {CommandInteraction} from 'discord.js'; +import {SlashCommandBuilder} from '@discordjs/builders'; import {TYPES} from '../types.js'; import {inject, injectable} from 'inversify'; import PlayerManager from '../managers/player.js'; -import LoadingMessage from '../utils/loading-message.js'; import errorMsg from '../utils/error-msg.js'; import Command from '.'; +import {prettyTime} from '../utils/time.js'; @injectable() export default class implements Command { - public name = 'fseek'; - public aliases = []; - public examples = [ - ['fseek 10', 'skips forward in current song by 10 seconds'], - ]; + public readonly slashCommand = new SlashCommandBuilder() + .setName('fseek') + .setDescription('seek forward in the current song') + .addNumberOption(option => option + .setName('seconds') + .setDescription('the number of seconds to skip forward') + .setRequired(true)); public requiresVC = true; @@ -22,38 +25,54 @@ export default class implements Command { this.playerManager = playerManager; } - public async execute(msg: Message, args: string []): Promise { - const player = this.playerManager.get(msg.guild!.id); + public async executeFromInteraction(interaction: CommandInteraction): Promise { + const player = this.playerManager.get(interaction.guild!.id); const currentSong = player.getCurrent(); if (!currentSong) { - await msg.channel.send(errorMsg('nothing is playing')); + await interaction.reply({ + content: errorMsg('nothing is playing'), + ephemeral: true, + }); + return; } if (currentSong.isLive) { - await msg.channel.send(errorMsg('can\'t seek in a livestream')); + await interaction.reply({ + content: errorMsg('can\'t seek in a livestream'), + ephemeral: true, + }); + return; } - const seekTime = parseInt(args[0], 10); + const seekTime = interaction.options.getNumber('seconds'); + + if (!seekTime) { + await interaction.reply({ + content: errorMsg('missing number of seconds to seek'), + ephemeral: true, + }); + + return; + } if (seekTime + player.getPosition() > currentSong.length) { - await msg.channel.send(errorMsg('can\'t seek past the end of the song')); + await interaction.reply({ + content: errorMsg('can\'t seek past the end of the song'), + ephemeral: true, + }); + return; } - const loading = new LoadingMessage(msg.channel as TextChannel); + await Promise.all([ + player.forwardSeek(seekTime), + interaction.deferReply(), + ]); - await loading.start(); - - try { - await player.forwardSeek(seekTime); - - await loading.stop(); - } catch (error: unknown) { - await loading.stop(errorMsg(error as Error)); - } + await interaction.editReply(`👍 seeked to ${prettyTime(player.getPosition())}`); } } From e965c023582b7f0699c37015ce79049db2be55f4 Mon Sep 17 00:00:00 2001 From: Max Isom Date: Wed, 15 Dec 2021 13:46:03 -0500 Subject: [PATCH 07/47] Migrate pause command --- src/commands/pause.ts | 22 ++++++++++++---------- src/commands/play.ts | 2 +- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/commands/pause.ts b/src/commands/pause.ts index 1dee95d..c3e8c24 100644 --- a/src/commands/pause.ts +++ b/src/commands/pause.ts @@ -1,4 +1,5 @@ -import {Message} from 'discord.js'; +import {CommandInteraction} from 'discord.js'; +import {SlashCommandBuilder} from '@discordjs/builders'; import {TYPES} from '../types.js'; import {inject, injectable} from 'inversify'; import PlayerManager from '../managers/player.js'; @@ -8,11 +9,9 @@ import Command from '.'; @injectable() export default class implements Command { - public name = 'pause'; - public aliases = []; - public examples = [ - ['pause', 'pauses currently playing song'], - ]; + public readonly slashCommand = new SlashCommandBuilder() + .setName('pause') + .setDescription('pauses the current song'); public requiresVC = true; @@ -22,15 +21,18 @@ export default class implements Command { this.playerManager = playerManager; } - public async execute(msg: Message, _: string []): Promise { - const player = this.playerManager.get(msg.guild!.id); + public async executeFromInteraction(interaction: CommandInteraction) { + const player = this.playerManager.get(interaction.guild!.id); if (player.status !== STATUS.PLAYING) { - await msg.channel.send(errorMsg('not currently playing')); + await interaction.reply({ + content: errorMsg('not currently playing'), + ephemeral: true, + }); return; } player.pause(); - await msg.channel.send('the stop-and-go light is now red'); + await interaction.reply('the stop-and-go light is now red'); } } diff --git a/src/commands/play.ts b/src/commands/play.ts index 8e1616b..6e76e37 100644 --- a/src/commands/play.ts +++ b/src/commands/play.ts @@ -15,7 +15,7 @@ import GetSongs from '../services/get-songs.js'; export default class implements Command { public readonly slashCommand = new SlashCommandBuilder() .setName('play') - .setDescription('Play a song or resume playback') + .setDescription('play a song or resume playback') .addStringOption(option => option .setName('query') .setDescription('YouTube URL, Spotify URL, or search query')) From 0b20cb3982942196303dea3cbbb98644dde441a3 Mon Sep 17 00:00:00 2001 From: Max Isom Date: Wed, 15 Dec 2021 22:01:54 -0500 Subject: [PATCH 08/47] Start migrating queue command MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Also: make it persistent & updating, add buttons ✨ --- package.json | 1 + src/bot.ts | 42 +++++- src/commands/index.ts | 8 +- src/commands/play.ts | 1 + src/commands/queue.ts | 118 ++++++++-------- src/inversify.config.ts | 2 + src/managers/updating-queue-embed.ts | 33 +++++ src/services/player.ts | 35 ++++- src/services/updating-queue-embed.ts | 196 +++++++++++++++++++++++++++ src/types.ts | 1 + yarn.lock | 5 + 11 files changed, 370 insertions(+), 72 deletions(-) create mode 100644 src/managers/updating-queue-embed.ts create mode 100644 src/services/updating-queue-embed.ts diff --git a/package.json b/package.json index 01c6341..f8993f8 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "nodemon": "^2.0.7", "ts-node": "^10.4.0", "type-fest": "^2.5.4", + "typed-emitter": "^1.4.0", "typescript": "^4.5.3" }, "eslintConfig": { diff --git a/src/bot.ts b/src/bot.ts index f0fb442..6152d2f 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -18,12 +18,14 @@ import {Routes} from 'discord-api-types/v9'; export default class { private readonly client: Client; private readonly token: string; - private readonly commands!: Collection; + private readonly commandsByName!: Collection; + private readonly commandsByButtonId!: Collection; constructor(@inject(TYPES.Client) client: Client, @inject(TYPES.Config) config: Config) { this.client = client; this.token = config.DISCORD_TOKEN; - this.commands = new Collection(); + this.commandsByName = new Collection(); + this.commandsByButtonId = new Collection(); } public async listen(): Promise { @@ -31,7 +33,11 @@ export default class { container.getAll(TYPES.Command).forEach(command => { // TODO: remove ! if (command.slashCommand?.name) { - this.commands.set(command.slashCommand.name, command); + this.commandsByName.set(command.slashCommand.name, command); + } + + if (command.handledButtonIds) { + command.handledButtonIds.forEach(id => this.commandsByButtonId.set(id, command)); } }); @@ -41,7 +47,7 @@ export default class { return; } - const command = this.commands.get(interaction.commandName); + const command = this.commandsByName.get(interaction.commandName); if (!command) { return; @@ -72,6 +78,32 @@ export default class { } }); + this.client.on('interactionCreate', async interaction => { + if (!interaction.isButton()) { + return; + } + + const command = this.commandsByButtonId.get(interaction.customId); + + if (!command) { + return; + } + + try { + if (command.handleButtonInteraction) { + await command.handleButtonInteraction(interaction); + } + } catch (error: unknown) { + debug(error); + + if (interaction.replied || interaction.deferred) { + await interaction.editReply(errorMsg('something went wrong')); + } else { + await interaction.reply({content: errorMsg(error as Error), ephemeral: true}); + } + } + }); + const spinner = ora('📡 connecting to Discord...').start(); this.client.once('ready', () => { @@ -94,7 +126,7 @@ export default class { await rest.put( Routes.applicationGuildCommands(this.client.user!.id, this.client.guilds.cache.first()!.id), // TODO: remove - {body: this.commands.map(command => command.slashCommand ? command.slashCommand.toJSON() : null)}, + {body: this.commandsByName.map(command => command.slashCommand ? command.slashCommand.toJSON() : null)}, ); } } diff --git a/src/commands/index.ts b/src/commands/index.ts index 91b76c5..1cd927b 100644 --- a/src/commands/index.ts +++ b/src/commands/index.ts @@ -1,12 +1,14 @@ import {SlashCommandBuilder} from '@discordjs/builders'; -import {CommandInteraction} from 'discord.js'; +import {ButtonInteraction, CommandInteraction} from 'discord.js'; -export default interface Command { +export default class Command { // TODO: remove name?: string; aliases?: string[]; examples?: string[][]; readonly slashCommand?: Partial & Pick; - requiresVC?: boolean; + readonly handledButtonIds?: readonly string[]; + readonly requiresVC?: boolean; executeFromInteraction?: (interaction: CommandInteraction) => Promise; + handleButtonInteraction?: (interaction: ButtonInteraction) => Promise; } diff --git a/src/commands/play.ts b/src/commands/play.ts index 6e76e37..7dc5e41 100644 --- a/src/commands/play.ts +++ b/src/commands/play.ts @@ -15,6 +15,7 @@ import GetSongs from '../services/get-songs.js'; export default class implements Command { public readonly slashCommand = new SlashCommandBuilder() .setName('play') + // TODO: make sure verb tense is consistent between all command descriptions .setDescription('play a song or resume playback') .addStringOption(option => option .setName('query') diff --git a/src/commands/queue.ts b/src/commands/queue.ts index 1c0735c..479bc33 100644 --- a/src/commands/queue.ts +++ b/src/commands/queue.ts @@ -1,82 +1,80 @@ -import {Message, MessageEmbed} from 'discord.js'; -import getYouTubeID from 'get-youtube-id'; +import {ButtonInteraction, CommandInteraction} from 'discord.js'; +import {SlashCommandBuilder} from '@discordjs/builders'; import {inject, injectable} from 'inversify'; import {TYPES} from '../types.js'; import PlayerManager from '../managers/player.js'; -import {STATUS} from '../services/player.js'; +import UpdatingQueueEmbedManager from '../managers/updating-queue-embed.js'; +import {BUTTON_IDS} from '../services/updating-queue-embed.js'; import Command from '.'; -import getProgressBar from '../utils/get-progress-bar.js'; -import errorMsg from '../utils/error-msg.js'; -import {prettyTime} from '../utils/time.js'; - -const PAGE_SIZE = 10; @injectable() export default class implements Command { - public name = 'queue'; - public aliases = ['q']; - public examples = [ - ['queue', 'shows current queue'], - ['queue 2', 'shows second page of queue'], - ]; + public readonly slashCommand = new SlashCommandBuilder() + .setName('queue') + .setDescription('show the current queue'); + + public readonly handledButtonIds = Object.values(BUTTON_IDS); private readonly playerManager: PlayerManager; + private readonly updatingQueueEmbedManager: UpdatingQueueEmbedManager; - constructor(@inject(TYPES.Managers.Player) playerManager: PlayerManager) { + constructor(@inject(TYPES.Managers.Player) playerManager: PlayerManager, @inject(TYPES.Managers.UpdatingQueueEmbed) updatingQueueEmbedManager: UpdatingQueueEmbedManager) { this.playerManager = playerManager; + this.updatingQueueEmbedManager = updatingQueueEmbedManager; } - public async execute(msg: Message, args: string []): Promise { - const player = this.playerManager.get(msg.guild!.id); + public async executeFromInteraction(interaction: CommandInteraction) { + const embed = this.updatingQueueEmbedManager.get(interaction.guild!.id); - const currentlyPlaying = player.getCurrent(); + await embed.createFromInteraction(interaction); + } - if (currentlyPlaying) { - const queueSize = player.queueSize(); - const queuePage = args[0] ? parseInt(args[0], 10) : 1; + public async handleButtonInteraction(interaction: ButtonInteraction) { + const player = this.playerManager.get(interaction.guild!.id); + const embed = this.updatingQueueEmbedManager.get(interaction.guild!.id); - const maxQueuePage = Math.ceil((queueSize + 1) / PAGE_SIZE); + const buttonId = interaction.customId as keyof typeof this.handledButtonIds; - if (queuePage > maxQueuePage) { - await msg.channel.send(errorMsg('the queue isn\'t that big')); - return; + // Not entirely sure why this is necessary. + // We don't wait for the Promise to resolve here to avoid blocking the + // main logic. However, we need to wait for the Promise to be resolved before + // throwing as otherwise a race condition pops up when bot.ts tries updating + // the interaction. + const deferedUpdatePromise = interaction.deferUpdate(); + + try { + switch (buttonId) { + case BUTTON_IDS.TRACK_BACK: + await player.back(); + break; + + case BUTTON_IDS.TRACK_FORWARD: + await player.forward(1); + break; + + case BUTTON_IDS.PAUSE: + player.pause(); + break; + + case BUTTON_IDS.PLAY: + await player.play(); + break; + + case BUTTON_IDS.PAGE_BACK: + await embed.pageBack(); + break; + + case BUTTON_IDS.PAGE_FORWARD: + await embed.pageForward(); + break; + + default: + throw new Error('unknown customId'); } + } catch (error: unknown) { + await deferedUpdatePromise; - const embed = new MessageEmbed(); - - embed.setTitle(currentlyPlaying.title); - embed.setURL(`https://www.youtube.com/watch?v=${currentlyPlaying.url.length === 11 ? currentlyPlaying.url : getYouTubeID(currentlyPlaying.url) ?? ''}`); - - let description = player.status === STATUS.PLAYING ? '⏚ī¸' : 'â–ļī¸'; - description += ' '; - description += getProgressBar(20, player.getPosition() / currentlyPlaying.length); - description += ' '; - description += `\`[${prettyTime(player.getPosition())}/${currentlyPlaying.isLive ? 'live' : prettyTime(currentlyPlaying.length)}]\``; - description += ' 🔉'; - description += player.isQueueEmpty() ? '' : '\n\n**Next up:**'; - - embed.setDescription(description); - - let footer = `Source: ${currentlyPlaying.artist}`; - - if (currentlyPlaying.playlist) { - footer += ` (${currentlyPlaying.playlist.title})`; - } - - embed.setFooter(footer); - - const queuePageBegin = (queuePage - 1) * PAGE_SIZE; - const queuePageEnd = queuePageBegin + PAGE_SIZE; - - player.getQueue().slice(queuePageBegin, queuePageEnd).forEach((song, i) => { - embed.addField(`${(i + 1 + queuePageBegin).toString()}/${queueSize.toString()}`, song.title, false); - }); - - embed.addField('Page', `${queuePage} out of ${maxQueuePage}`, false); - - await msg.channel.send({embeds: [embed]}); - } else { - await msg.channel.send('queue empty'); + throw error; } } } diff --git a/src/inversify.config.ts b/src/inversify.config.ts index 6272dd3..623e631 100644 --- a/src/inversify.config.ts +++ b/src/inversify.config.ts @@ -7,6 +7,7 @@ import ConfigProvider from './services/config.js'; // Managers import PlayerManager from './managers/player.js'; +import UpdatingQueueEmbed from './managers/updating-queue-embed.js'; // Helpers import GetSongs from './services/get-songs.js'; @@ -46,6 +47,7 @@ container.bind(TYPES.Client).toConstantValue(new Client({intents})); // Managers container.bind(TYPES.Managers.Player).to(PlayerManager).inSingletonScope(); +container.bind(TYPES.Managers.UpdatingQueueEmbed).to(UpdatingQueueEmbed).inSingletonScope(); // Helpers container.bind(TYPES.Services.GetSongs).to(GetSongs).inSingletonScope(); diff --git a/src/managers/updating-queue-embed.ts b/src/managers/updating-queue-embed.ts new file mode 100644 index 0000000..37732de --- /dev/null +++ b/src/managers/updating-queue-embed.ts @@ -0,0 +1,33 @@ +import {inject, injectable} from 'inversify'; +import {TYPES} from '../types.js'; +import PlayerManager from '../managers/player.js'; +import UpdatingQueueEmbed from '../services/updating-queue-embed.js'; + +@injectable() +export default class { + private readonly embedsByGuild: Map; + private readonly playerManager: PlayerManager; + + constructor(@inject(TYPES.Managers.Player) playerManager: PlayerManager) { + this.embedsByGuild = new Map(); + this.playerManager = playerManager; + } + + get(guildId: string): UpdatingQueueEmbed { + let embed = this.embedsByGuild.get(guildId); + + if (!embed) { + const player = this.playerManager.get(guildId); + + if (!player) { + throw new Error('Player does not exist for guild.'); + } + + embed = new UpdatingQueueEmbed(player); + + this.embedsByGuild.set(guildId, embed); + } + + return embed; + } +} diff --git a/src/services/player.ts b/src/services/player.ts index 5caace2..26e1e36 100644 --- a/src/services/player.ts +++ b/src/services/player.ts @@ -1,5 +1,7 @@ import {VoiceChannel, Snowflake, Client, TextChannel} from 'discord.js'; import {Readable} from 'stream'; +import EventEmitter from 'events'; +import TypedEmitter from 'typed-emitter'; import hasha from 'hasha'; import ytdl from 'ytdl-core'; import {WriteStream} from 'fs-capacitor'; @@ -29,8 +31,11 @@ export enum STATUS { PAUSED, } -export default class { - public status = STATUS.PAUSED; +export interface PlayerEvents { + statusChange: (oldStatus: STATUS, newStatus: STATUS) => void; +} + +export default class extends (EventEmitter as new () => TypedEmitter) { public voiceConnection: VoiceConnection | null = null; private queue: QueuedSong[] = []; private queuePosition = 0; @@ -40,11 +45,14 @@ export default class { private lastSongURL = ''; private positionInSeconds = 0; + private internalStatus = STATUS.PAUSED; private readonly discordClient: Client; private readonly fileCache: FileCacheProvider; constructor(client: Client, fileCache: FileCacheProvider) { + // eslint-disable-next-line constructor-super + super(); this.discordClient = client; this.fileCache = fileCache; } @@ -203,8 +211,12 @@ export default class { } } + canGoForward(skip: number) { + return (this.queuePosition + skip - 1) < this.queue.length; + } + manualForward(skip: number): void { - if ((this.queuePosition + skip - 1) < this.queue.length) { + if (this.canGoForward(skip)) { this.queuePosition += skip; this.positionInSeconds = 0; this.stopTrackingPosition(); @@ -213,8 +225,12 @@ export default class { } } + canGoBack() { + return this.queuePosition - 1 >= 0; + } + async back(): Promise { - if (this.queuePosition - 1 >= 0) { + if (this.canGoBack()) { this.queuePosition--; this.positionInSeconds = 0; this.stopTrackingPosition(); @@ -290,6 +306,17 @@ export default class { return this.queueSize() === 0; } + get status() { + return this.internalStatus; + } + + set status(newStatus: STATUS) { + const previousStatus = this.internalStatus; + this.internalStatus = newStatus; + + this.emit('statusChange', previousStatus, newStatus); + } + private getHashForCache(url: string): string { return hasha(url); } diff --git a/src/services/updating-queue-embed.ts b/src/services/updating-queue-embed.ts new file mode 100644 index 0000000..31d58ff --- /dev/null +++ b/src/services/updating-queue-embed.ts @@ -0,0 +1,196 @@ +import {CommandInteraction, MessageActionRow, MessageButton, MessageEmbed} from 'discord.js'; +import getYouTubeID from 'get-youtube-id'; +import getProgressBar from '../utils/get-progress-bar.js'; +import {prettyTime} from '../utils/time.js'; +import Player, {STATUS} from './player.js'; + +const PAGE_SIZE = 10; + +const REFRESH_INTERVAL_MS = 5 * 1000; + +export enum BUTTON_IDS { + PAGE_BACK = 'page-back', + PAGE_FORWARD = 'page-forward', + TRACK_BACK = 'track-back', + TRACK_FORWARD = 'track-forward', + PAUSE = 'pause', + PLAY = 'play', +} + +export default class { + private readonly player: Player; + private interaction?: CommandInteraction; + + // 1-indexed + private currentPage = 1; + + private refreshTimeout?: NodeJS.Timeout; + + constructor(player: Player) { + this.player = player; + + this.addEventHandlers(); + } + + /** + * Creates & replies with a new embed from the given interaction. + * Starts updating the embed at a regular interval. + * Can be called multiple times within the lifecycle of this class. + * Calling this method will make it forgot the previous interaction & reply. + * @param interaction + */ + async createFromInteraction(interaction: CommandInteraction) { + this.interaction = interaction; + this.currentPage = 1; + + await interaction.reply({ + embeds: [this.buildEmbed()], + components: this.buildButtons(this.player), + }); + + if (!this.refreshTimeout) { + this.refreshTimeout = setInterval(async () => this.update(), REFRESH_INTERVAL_MS); + } + } + + async update(shouldResetPage = false) { + if (shouldResetPage) { + this.currentPage = 1; + } + + await this.interaction?.editReply({ + embeds: [this.buildEmbed()], + components: this.buildButtons(this.player), + }); + } + + async pageBack() { + if (this.currentPage > 1) { + this.currentPage--; + } + + await this.update(); + } + + async pageForward() { + if (this.currentPage < this.getMaxPage()) { + this.currentPage++; + } + + await this.update(); + } + + private buildButtons(player: Player): MessageActionRow[] { + const queuePageControls = new MessageActionRow() + .addComponents( + new MessageButton() + .setCustomId(BUTTON_IDS.PAGE_BACK) + .setStyle('SECONDARY') + .setDisabled(this.currentPage === 1) + .setEmoji('âŦ…ī¸'), + + new MessageButton() + .setCustomId(BUTTON_IDS.PAGE_FORWARD) + .setStyle('SECONDARY') + .setDisabled(this.currentPage >= this.getMaxPage()) + .setEmoji('➡ī¸'), + ); + + const components = []; + + components.push( + new MessageButton() + .setCustomId(BUTTON_IDS.TRACK_BACK) + .setStyle('PRIMARY') + .setDisabled(!player.canGoBack()) + .setEmoji('⏎')); + + if (player.status === STATUS.PLAYING) { + components.push( + new MessageButton() + .setCustomId(BUTTON_IDS.PAUSE) + .setStyle('PRIMARY') + .setDisabled(!player.getCurrent()) + .setEmoji('⏸ī¸')); + } else { + components.push( + new MessageButton() + .setCustomId(BUTTON_IDS.PLAY) + .setStyle('PRIMARY') + .setDisabled(!player.getCurrent()) + .setEmoji('â–ļī¸')); + } + + components.push( + new MessageButton() + .setCustomId(BUTTON_IDS.TRACK_FORWARD) + .setStyle('PRIMARY') + .setDisabled(!player.canGoForward(1)) + .setEmoji('⏭'), + ); + + const playerControls = new MessageActionRow().addComponents(components); + + return [queuePageControls, playerControls]; + } + + /** + * Generates an embed for the current page of the queue. + * @returns MessageEmbed + */ + private buildEmbed() { + const currentlyPlaying = this.player.getCurrent(); + + if (!currentlyPlaying) { + throw new Error('queue is empty'); + } + + const queueSize = this.player.queueSize(); + + if (this.currentPage > this.getMaxPage()) { + throw new Error('the queue isn\'t that big'); + } + + const embed = new MessageEmbed(); + + embed.setTitle(currentlyPlaying.title); + embed.setURL(`https://www.youtube.com/watch?v=${currentlyPlaying.url.length === 11 ? currentlyPlaying.url : getYouTubeID(currentlyPlaying.url) ?? ''}`); + + let description = getProgressBar(20, this.player.getPosition() / currentlyPlaying.length); + description += ' '; + description += `\`[${prettyTime(this.player.getPosition())}/${currentlyPlaying.isLive ? 'live' : prettyTime(currentlyPlaying.length)}]\``; + description += ' 🔉'; + description += this.player.isQueueEmpty() ? '' : '\n\n**Next up:**'; + + embed.setDescription(description); + + let footer = `Source: ${currentlyPlaying.artist}`; + + if (currentlyPlaying.playlist) { + footer += ` (${currentlyPlaying.playlist.title})`; + } + + embed.setFooter(footer); + + const queuePageBegin = (this.currentPage - 1) * PAGE_SIZE; + const queuePageEnd = queuePageBegin + PAGE_SIZE; + + this.player.getQueue().slice(queuePageBegin, queuePageEnd).forEach((song, i) => { + embed.addField(`${(i + 1 + queuePageBegin).toString()}/${queueSize.toString()}`, song.title, false); + }); + + embed.addField('Page', `${this.currentPage} out of ${this.getMaxPage()}`, false); + + return embed; + } + + private getMaxPage() { + return Math.ceil((this.player.queueSize() + 1) / PAGE_SIZE); + } + + private addEventHandlers() { + this.player.on('statusChange', async () => this.update(true)); + + // TODO: also update on other player events + } +} diff --git a/src/types.ts b/src/types.ts index e6edd14..19c734d 100644 --- a/src/types.ts +++ b/src/types.ts @@ -8,6 +8,7 @@ export const TYPES = { ThirdParty: Symbol('ThirdParty'), Managers: { Player: Symbol('PlayerManager'), + UpdatingQueueEmbed: Symbol('UpdatingQueueEmbed'), }, Services: { GetSongs: Symbol('GetSongs'), diff --git a/yarn.lock b/yarn.lock index d9fa000..ffbdcbc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3496,6 +3496,11 @@ type-fest@^2.5.4: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.5.4.tgz#1613bf29a172ff1c66c29325466af9096fe505b5" integrity sha512-zyPomVvb6u7+gJ/GPYUH6/nLDNiTtVOqXVUHtxFv5PmZQh6skgfeRtFYzWC01T5KeNWNIx5/0P111rKFLlkFvA== +typed-emitter@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/typed-emitter/-/typed-emitter-1.4.0.tgz#38c6bf1224e764906bb20cb0b458fa914100607c" + integrity sha512-weBmoo3HhpKGgLBOYwe8EB31CzDFuaK7CCL+axXhUYhn4jo6DSkHnbefboCF5i4DQ2aMFe0C/FdTWcPdObgHyg== + 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" From 09908f4af55f02447e3fe9227f41b63c3094d212 Mon Sep 17 00:00:00 2001 From: Max Isom Date: Thu, 16 Dec 2021 15:08:28 -0500 Subject: [PATCH 09/47] Update changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d6e9487..f58ef2d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +### Changed +- Migrated to [Slash Commands](https://support.discord.com/hc/en-us/articles/1500000368501-Slash-Commands-FAQ) +- The queue embed now automatically updates every 5 seconds (and has buttons for quick interactions) ## [0.1.0] ### Added From 812d01edbd929c4d6140ed54a49cd493e9ab2b06 Mon Sep 17 00:00:00 2001 From: Max Isom Date: Thu, 16 Dec 2021 15:18:50 -0500 Subject: [PATCH 10/47] Handle if queue reply is deleted --- src/bot.ts | 13 ++++--- src/services/updating-queue-embed.ts | 55 ++++++++++++++++++++++------ 2 files changed, 52 insertions(+), 16 deletions(-) diff --git a/src/bot.ts b/src/bot.ts index 6152d2f..b9c31a7 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -70,11 +70,14 @@ export default class { } catch (error: unknown) { debug(error); - if (interaction.replied || interaction.deferred) { - await interaction.editReply(errorMsg('something went wrong')); - } else { - await interaction.reply({content: errorMsg(error as Error), ephemeral: true}); - } + // This can fail if the message was deleted, and we don't want to crash the whole bot + try { + if (interaction.replied || interaction.deferred) { + await interaction.editReply(errorMsg('something went wrong')); + } else { + await interaction.reply({content: errorMsg(error as Error), ephemeral: true}); + } + } catch {} } }); diff --git a/src/services/updating-queue-embed.ts b/src/services/updating-queue-embed.ts index 31d58ff..6496fb5 100644 --- a/src/services/updating-queue-embed.ts +++ b/src/services/updating-queue-embed.ts @@ -1,4 +1,4 @@ -import {CommandInteraction, MessageActionRow, MessageButton, MessageEmbed} from 'discord.js'; +import {CommandInteraction, MessageActionRow, MessageButton, MessageEmbed, DiscordAPIError} from 'discord.js'; import getYouTubeID from 'get-youtube-id'; import getProgressBar from '../utils/get-progress-bar.js'; import {prettyTime} from '../utils/time.js'; @@ -40,13 +40,23 @@ export default class { * @param interaction */ async createFromInteraction(interaction: CommandInteraction) { - this.interaction = interaction; - this.currentPage = 1; + const oldInteraction = this.interaction; - await interaction.reply({ - embeds: [this.buildEmbed()], - components: this.buildButtons(this.player), - }); + this.resetState(); + + this.interaction = interaction; + + await Promise.all([ + interaction.reply({ + embeds: [this.buildEmbed()], + components: this.buildButtons(this.player), + }), + (async () => { + if (oldInteraction) { + await oldInteraction.deleteReply(); + } + })(), + ]); if (!this.refreshTimeout) { this.refreshTimeout = setInterval(async () => this.update(), REFRESH_INTERVAL_MS); @@ -58,10 +68,23 @@ export default class { this.currentPage = 1; } - await this.interaction?.editReply({ - embeds: [this.buildEmbed()], - components: this.buildButtons(this.player), - }); + try { + await this.interaction?.editReply({ + embeds: [this.buildEmbed()], + components: this.buildButtons(this.player), + }); + } catch (error: unknown) { + if (error instanceof DiscordAPIError) { + // Interaction / message was deleted + if (error.code === 10008) { + this.resetState(); + + return; + } + } + + throw error; + } } async pageBack() { @@ -80,6 +103,16 @@ export default class { await this.update(); } + private resetState() { + if (this.refreshTimeout) { + clearInterval(this.refreshTimeout); + this.refreshTimeout = undefined; + } + + this.currentPage = 1; + this.interaction = undefined; + } + private buildButtons(player: Player): MessageActionRow[] { const queuePageControls = new MessageActionRow() .addComponents( From 827ff350ee5df918bc4ecb2e19b64eccc94a46c7 Mon Sep 17 00:00:00 2001 From: Federico fuji97 Rapetti Date: Sun, 26 Dec 2021 04:45:50 +0100 Subject: [PATCH 11/47] Improve commands registration --- src/bot.ts | 25 +- src/events/guild-create.ts | 19 +- src/index.ts | 2 +- tsconfig.json | 2 +- yarn.lock | 6898 ++++++++++++++++++------------------ 5 files changed, 3521 insertions(+), 3425 deletions(-) diff --git a/src/bot.ts b/src/bot.ts index b9c31a7..fd606cf 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -109,10 +109,22 @@ export default class { const spinner = ora('📡 connecting to Discord...').start(); - this.client.once('ready', () => { + this.client.once('ready', async () => { debug(generateDependencyReport()); - spinner.succeed(`Ready! Invite the bot with https://discordapp.com/oauth2/authorize?client_id=${this.client.user?.id ?? ''}&scope=bot&permissions=2184236096`); + spinner.text = '📡 Updating commands in all guilds...'; + + // Update commands + const rest = new REST({version: '9'}).setToken(this.token); + + this.client.guilds.cache.each(async guild => { + await rest.put( + Routes.applicationGuildCommands(this.client.user!.id, guild.id), + {body: this.commandsByName.map(command => command.slashCommand ? command.slashCommand.toJSON() : null)}, + ); + }); + + spinner.succeed(`Ready! Invite the bot with https://discordapp.com/oauth2/authorize?client_id=${this.client.user?.id ?? ''}&scope=applications.commands%20bot&permissions=2184236096`); }); this.client.on('error', console.error); @@ -121,15 +133,6 @@ export default class { this.client.on('guildCreate', handleGuildCreate); this.client.on('voiceStateUpdate', handleVoiceStateUpdate); - // Update commands await this.client.login(this.token); - - const rest = new REST({version: '9'}).setToken(this.token); - - await rest.put( - Routes.applicationGuildCommands(this.client.user!.id, this.client.guilds.cache.first()!.id), - // TODO: remove - {body: this.commandsByName.map(command => command.slashCommand ? command.slashCommand.toJSON() : null)}, - ); } } diff --git a/src/events/guild-create.ts b/src/events/guild-create.ts index 01f0910..38f6e6c 100644 --- a/src/events/guild-create.ts +++ b/src/events/guild-create.ts @@ -1,14 +1,31 @@ -import {Guild, TextChannel, Message, MessageReaction, User} from 'discord.js'; +import { + Guild, + TextChannel, + Message, + MessageReaction, + User, + ApplicationCommandData, +} from 'discord.js'; import emoji from 'node-emoji'; import pEvent from 'p-event'; import {Settings} from '../models/index.js'; import {chunk} from '../utils/arrays.js'; +import container from '../inversify.config.js'; +import Command from '../commands'; +import {TYPES} from '../types.js'; const DEFAULT_PREFIX = '!'; export default async (guild: Guild): Promise => { await Settings.upsert({guildId: guild.id, prefix: DEFAULT_PREFIX}); + // Setup slash commands + const commands: ApplicationCommandData[] = container.getAll(TYPES.Command) + .filter(command => command.slashCommand?.name) + .map(command => command.slashCommand as ApplicationCommandData); + + await guild.commands.set(commands); + const owner = await guild.client.users.fetch(guild.ownerId); let firstStep = '👋 Hi!\n'; diff --git a/src/index.ts b/src/index.ts index a6b6d35..ac96352 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,7 +7,7 @@ import Bot from './bot.js'; import {sequelize} from './utils/db.js'; import Config from './services/config.js'; import FileCacheProvider from './services/file-cache.js'; -import metadata from '../package.json'; +import metadata from '../package.json' assert {type: "json"}; const bot = container.get(TYPES.Bot); diff --git a/tsconfig.json b/tsconfig.json index 2970aa3..1c0987e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,7 @@ "compilerOptions": { "lib": ["ES2019", "DOM"], "target": "es2018", - "module": "ES2020", + "module": "esnext", "moduleResolution": "node", "declaration": true, "outDir": "dist", diff --git a/yarn.lock b/yarn.lock index 3233c25..2f5abc0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,279 +2,280 @@ # yarn lockfile v1 -"@babel/code-frame@7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== +"@babel/code-frame@^7.0.0", "@babel/code-frame@7.12.11": + "integrity" "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==" + "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" + "version" "7.12.11" dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.0.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.0.tgz#0dfc80309beec8411e65e706461c408b0bb9b431" - integrity sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA== - dependencies: - "@babel/highlight" "^7.16.0" - "@babel/helper-validator-identifier@^7.15.7": - version "7.15.7" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz#220df993bfe904a4a6b02ab4f3385a5ebf6e2389" - integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== + "integrity" "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz" + "version" "7.15.7" -"@babel/highlight@^7.10.4", "@babel/highlight@^7.16.0": - version "7.16.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.0.tgz#6ceb32b2ca4b8f5f361fb7fd821e3fddf4a1725a" - integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== +"@babel/highlight@^7.10.4": + "integrity" "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==" + "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz" + "version" "7.16.0" dependencies: "@babel/helper-validator-identifier" "^7.15.7" - chalk "^2.0.0" - js-tokens "^4.0.0" + "chalk" "^2.0.0" + "js-tokens" "^4.0.0" "@cspotcode/source-map-consumer@0.8.0": - version "0.8.0" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz#33bf4b7b39c178821606f669bbc447a6a629786b" - integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg== + "integrity" "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==" + "resolved" "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz" + "version" "0.8.0" "@cspotcode/source-map-support@0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz#4789840aa859e46d2f3173727ab707c66bf344f5" - integrity sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA== + "integrity" "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==" + "resolved" "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz" + "version" "0.7.0" dependencies: "@cspotcode/source-map-consumer" "0.8.0" "@discordjs/builders@^0.8.1": - version "0.8.2" - resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-0.8.2.tgz#c3ef99caa9ebe70a4196b987011d90136c71054a" - integrity sha512-/YRd11SrcluqXkKppq/FAVzLIPRVlIVmc6X8ZklspzMIHDtJ+A4W37D43SHvLdH//+NnK+SHW/WeOF4Ts54PeQ== + "integrity" "sha512-/YRd11SrcluqXkKppq/FAVzLIPRVlIVmc6X8ZklspzMIHDtJ+A4W37D43SHvLdH//+NnK+SHW/WeOF4Ts54PeQ==" + "resolved" "https://registry.npmjs.org/@discordjs/builders/-/builders-0.8.2.tgz" + "version" "0.8.2" dependencies: "@sindresorhus/is" "^4.2.0" - discord-api-types "^0.24.0" - ow "^0.27.0" - ts-mixer "^6.0.0" - tslib "^2.3.1" + "discord-api-types" "^0.24.0" + "ow" "^0.27.0" + "ts-mixer" "^6.0.0" + "tslib" "^2.3.1" "@discordjs/builders@^0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-0.9.0.tgz#1ca17677e7c180d4f266191596e17e9633180417" - integrity sha512-XM/5yrTxMF0SDKza32YzGDQO1t+qEJTaF8Zvxu/UOjzoqzMPPGQBjC1VgZxz8/CBLygW5qI+UVygMa88z13G3g== + "integrity" "sha512-XM/5yrTxMF0SDKza32YzGDQO1t+qEJTaF8Zvxu/UOjzoqzMPPGQBjC1VgZxz8/CBLygW5qI+UVygMa88z13G3g==" + "resolved" "https://registry.npmjs.org/@discordjs/builders/-/builders-0.9.0.tgz" + "version" "0.9.0" dependencies: "@sindresorhus/is" "^4.2.0" - discord-api-types "^0.24.0" - ts-mixer "^6.0.0" - tslib "^2.3.1" - zod "^3.11.6" + "discord-api-types" "^0.24.0" + "ts-mixer" "^6.0.0" + "tslib" "^2.3.1" + "zod" "^3.11.6" "@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== + "integrity" "sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ==" + "resolved" "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.6.tgz" + "version" "0.1.6" "@discordjs/collection@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-0.3.2.tgz#3c271dd8a93dad89b186d330e24dbceaab58424a" - integrity sha512-dMjLl60b2DMqObbH1MQZKePgWhsNe49XkKBZ0W5Acl5uVV43SN414i2QfZwRI7dXAqIn8pEWD2+XXQFn9KWxqg== + "integrity" "sha512-dMjLl60b2DMqObbH1MQZKePgWhsNe49XkKBZ0W5Acl5uVV43SN414i2QfZwRI7dXAqIn8pEWD2+XXQFn9KWxqg==" + "resolved" "https://registry.npmjs.org/@discordjs/collection/-/collection-0.3.2.tgz" + "version" "0.3.2" "@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== + "integrity" "sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==" + "resolved" "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz" + "version" "3.0.1" dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" + "asynckit" "^0.4.0" + "combined-stream" "^1.0.8" + "mime-types" "^2.1.12" -"@discordjs/node-pre-gyp@^0.4.2": - version "0.4.2" - resolved "https://registry.yarnpkg.com/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.2.tgz#37dd27f8d353eeb87372fcce059c5249550b37ab" - integrity sha512-V239Czn+DXFGLhhuccwEDBoTdgMGrRu30dOlzm1GzrSIjwFj01ZJerNX7x+CEX1NG1Q/1gGfOOkeZFNHjycrRA== +"@discordjs/node-pre-gyp@^0.4.0", "@discordjs/node-pre-gyp@^0.4.2": + "integrity" "sha512-V239Czn+DXFGLhhuccwEDBoTdgMGrRu30dOlzm1GzrSIjwFj01ZJerNX7x+CEX1NG1Q/1gGfOOkeZFNHjycrRA==" + "resolved" "https://registry.npmjs.org/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.2.tgz" + "version" "0.4.2" dependencies: - detect-libc "^1.0.3" - https-proxy-agent "^5.0.0" - make-dir "^3.1.0" - node-fetch "^2.6.5" - nopt "^5.0.0" - npmlog "^5.0.1" - rimraf "^3.0.2" - semver "^7.3.5" - tar "^6.1.11" + "detect-libc" "^1.0.3" + "https-proxy-agent" "^5.0.0" + "make-dir" "^3.1.0" + "node-fetch" "^2.6.5" + "nopt" "^5.0.0" + "npmlog" "^5.0.1" + "rimraf" "^3.0.2" + "semver" "^7.3.5" + "tar" "^6.1.11" + +"@discordjs/opus@^0.5.0": + "integrity" "sha512-IQhCwCy2WKXLe+qkOkwO1Wjgk20uqeAbqM62tCbzIqbTsXX4YAge8Me9RFnI77Lx+UTkgm4rSVM3VPVdS/GsUw==" + "resolved" "https://registry.npmjs.org/@discordjs/opus/-/opus-0.5.3.tgz" + "version" "0.5.3" + dependencies: + "@discordjs/node-pre-gyp" "^0.4.0" + "node-addon-api" "^3.2.1" "@discordjs/opus@^0.7.0": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@discordjs/opus/-/opus-0.7.0.tgz#69e9611a6412ea470f8e640f54478da89326ca3b" - integrity sha512-3Xxa3dh7taSDwBAR5fLALZ/KTxvbMmHCMxYLYve6NlPO7Ms1CLmKqp/R4ZoVzkRGQVUVWEhaB1s0v9jfa2tfDg== + "integrity" "sha512-3Xxa3dh7taSDwBAR5fLALZ/KTxvbMmHCMxYLYve6NlPO7Ms1CLmKqp/R4ZoVzkRGQVUVWEhaB1s0v9jfa2tfDg==" + "resolved" "https://registry.npmjs.org/@discordjs/opus/-/opus-0.7.0.tgz" + "version" "0.7.0" dependencies: "@discordjs/node-pre-gyp" "^0.4.2" - node-addon-api "^4.2.0" + "node-addon-api" "^4.2.0" "@discordjs/rest@^0.1.0-canary.0": - version "0.1.0-canary.0" - resolved "https://registry.yarnpkg.com/@discordjs/rest/-/rest-0.1.0-canary.0.tgz#666f9a1a0c1f2f5a09a3a79f77aeddaeafbcbcc1" - integrity sha512-d+s//ISYVV+e0w/926wMEeO7vju+Pn11x1JM4tcmVMCHSDgpi6pnFCNAXF1TEdnDcy7xf9tq5cf2pQkb/7ySTQ== + "integrity" "sha512-d+s//ISYVV+e0w/926wMEeO7vju+Pn11x1JM4tcmVMCHSDgpi6pnFCNAXF1TEdnDcy7xf9tq5cf2pQkb/7ySTQ==" + "resolved" "https://registry.npmjs.org/@discordjs/rest/-/rest-0.1.0-canary.0.tgz" + "version" "0.1.0-canary.0" dependencies: "@discordjs/collection" "^0.1.6" "@sapphire/async-queue" "^1.1.4" "@sapphire/snowflake" "^1.3.5" - abort-controller "^3.0.0" - discord-api-types "^0.18.1" - form-data "^4.0.0" - node-fetch "^2.6.1" - tslib "^2.3.0" + "abort-controller" "^3.0.0" + "discord-api-types" "^0.18.1" + "form-data" "^4.0.0" + "node-fetch" "^2.6.1" + "tslib" "^2.3.0" "@discordjs/voice@^0.7.5": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@discordjs/voice/-/voice-0.7.5.tgz#c95bd4ecf73905f51990827df5209eb26472dbd5" - integrity sha512-lUk+CmIXNKslT6DkC9IF9rpsqhzlTiedauUCPBzepjd4XWxwBZiyVIzR6QpbAirxkAwCoAbbje+3Ho71PGLEAw== + "integrity" "sha512-lUk+CmIXNKslT6DkC9IF9rpsqhzlTiedauUCPBzepjd4XWxwBZiyVIzR6QpbAirxkAwCoAbbje+3Ho71PGLEAw==" + "resolved" "https://registry.npmjs.org/@discordjs/voice/-/voice-0.7.5.tgz" + "version" "0.7.5" dependencies: "@types/ws" "^8.2.0" - discord-api-types "^0.24.0" - prism-media "^1.3.2" - tiny-typed-emitter "^2.1.0" - tslib "^2.3.1" - ws "^8.2.3" + "discord-api-types" "^0.24.0" + "prism-media" "^1.3.2" + "tiny-typed-emitter" "^2.1.0" + "tslib" "^2.3.1" + "ws" "^8.2.3" "@eslint/eslintrc@^0.4.3": - version "0.4.3" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c" - integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== + "integrity" "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==" + "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz" + "version" "0.4.3" dependencies: - ajv "^6.12.4" - debug "^4.1.1" - espree "^7.3.0" - globals "^13.9.0" - ignore "^4.0.6" - import-fresh "^3.2.1" - js-yaml "^3.13.1" - minimatch "^3.0.4" - strip-json-comments "^3.1.1" + "ajv" "^6.12.4" + "debug" "^4.1.1" + "espree" "^7.3.0" + "globals" "^13.9.0" + "ignore" "^4.0.6" + "import-fresh" "^3.2.1" + "js-yaml" "^3.13.1" + "minimatch" "^3.0.4" + "strip-json-comments" "^3.1.1" "@humanwhocodes/config-array@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" - integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== + "integrity" "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz" + "version" "0.5.0" dependencies: "@humanwhocodes/object-schema" "^1.2.0" - debug "^4.1.1" - minimatch "^3.0.4" + "debug" "^4.1.1" + "minimatch" "^3.0.4" "@humanwhocodes/object-schema@^1.2.0": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + "integrity" "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" + "version" "1.2.1" "@iarna/toml@2.2.5": - version "2.2.5" - resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c" - integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== + "integrity" "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==" + "resolved" "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz" + "version" "2.2.5" "@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + "version" "2.1.5" dependencies: "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" + "run-parallel" "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": + "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + "version" "2.0.5" "@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + "version" "1.2.8" dependencies: "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" + "fastq" "^1.6.0" "@octokit/auth-token@^2.4.4": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.5.0.tgz#27c37ea26c205f28443402477ffd261311f21e36" - integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== + "integrity" "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==" + "resolved" "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz" + "version" "2.5.0" dependencies: "@octokit/types" "^6.0.3" -"@octokit/core@^3.5.1": - version "3.5.1" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.5.1.tgz#8601ceeb1ec0e1b1b8217b960a413ed8e947809b" - integrity sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw== +"@octokit/core@^3.5.1", "@octokit/core@>=2", "@octokit/core@>=3": + "integrity" "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==" + "resolved" "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz" + "version" "3.5.1" dependencies: "@octokit/auth-token" "^2.4.4" "@octokit/graphql" "^4.5.8" "@octokit/request" "^5.6.0" "@octokit/request-error" "^2.0.5" "@octokit/types" "^6.0.3" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" + "before-after-hook" "^2.2.0" + "universal-user-agent" "^6.0.0" "@octokit/endpoint@^6.0.1": - version "6.0.12" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.12.tgz#3b4d47a4b0e79b1027fb8d75d4221928b2d05658" - integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== + "integrity" "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==" + "resolved" "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz" + "version" "6.0.12" dependencies: "@octokit/types" "^6.0.3" - is-plain-object "^5.0.0" - universal-user-agent "^6.0.0" + "is-plain-object" "^5.0.0" + "universal-user-agent" "^6.0.0" "@octokit/graphql@^4.5.8": - version "4.8.0" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.8.0.tgz#664d9b11c0e12112cbf78e10f49a05959aa22cc3" - integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== + "integrity" "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==" + "resolved" "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz" + "version" "4.8.0" dependencies: "@octokit/request" "^5.6.0" "@octokit/types" "^6.0.3" - universal-user-agent "^6.0.0" + "universal-user-agent" "^6.0.0" "@octokit/openapi-types@^11.2.0": - version "11.2.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-11.2.0.tgz#b38d7fc3736d52a1e96b230c1ccd4a58a2f400a6" - integrity sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA== + "integrity" "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==" + "resolved" "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz" + "version" "11.2.0" "@octokit/plugin-paginate-rest@^2.16.8": - version "2.17.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz#32e9c7cab2a374421d3d0de239102287d791bce7" - integrity sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw== + "integrity" "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==" + "resolved" "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz" + "version" "2.17.0" dependencies: "@octokit/types" "^6.34.0" "@octokit/plugin-request-log@^1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz#5e50ed7083a613816b1e4a28aeec5fb7f1462e85" - integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== + "integrity" "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==" + "resolved" "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz" + "version" "1.0.4" "@octokit/plugin-rest-endpoint-methods@^5.12.0": - version "5.13.0" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz#8c46109021a3412233f6f50d28786f8e552427ba" - integrity sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA== + "integrity" "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==" + "resolved" "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz" + "version" "5.13.0" dependencies: "@octokit/types" "^6.34.0" - deprecation "^2.3.1" + "deprecation" "^2.3.1" "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.1.0.tgz#9e150357831bfc788d13a4fd4b1913d60c74d677" - integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== + "integrity" "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==" + "resolved" "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz" + "version" "2.1.0" dependencies: "@octokit/types" "^6.0.3" - deprecation "^2.0.0" - once "^1.4.0" + "deprecation" "^2.0.0" + "once" "^1.4.0" "@octokit/request@^5.6.0": - version "5.6.2" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.6.2.tgz#1aa74d5da7b9e04ac60ef232edd9a7438dcf32d8" - integrity sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA== + "integrity" "sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==" + "resolved" "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz" + "version" "5.6.2" dependencies: "@octokit/endpoint" "^6.0.1" "@octokit/request-error" "^2.1.0" "@octokit/types" "^6.16.1" - is-plain-object "^5.0.0" - node-fetch "^2.6.1" - universal-user-agent "^6.0.0" + "is-plain-object" "^5.0.0" + "node-fetch" "^2.6.1" + "universal-user-agent" "^6.0.0" "@octokit/rest@18.12.0": - version "18.12.0" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.12.0.tgz#f06bc4952fc87130308d810ca9d00e79f6988881" - integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== + "integrity" "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==" + "resolved" "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz" + "version" "18.12.0" dependencies: "@octokit/core" "^3.5.1" "@octokit/plugin-paginate-rest" "^2.16.8" @@ -282,89 +283,89 @@ "@octokit/plugin-rest-endpoint-methods" "^5.12.0" "@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.34.0": - version "6.34.0" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.34.0.tgz#c6021333334d1ecfb5d370a8798162ddf1ae8218" - integrity sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw== + "integrity" "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==" + "resolved" "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz" + "version" "6.34.0" dependencies: "@octokit/openapi-types" "^11.2.0" "@release-it/keep-a-changelog@^2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@release-it/keep-a-changelog/-/keep-a-changelog-2.3.0.tgz#dfe888f97604a13c161e78f67509b296fb91ebc5" - integrity sha512-W3rzUsfT1BeDx9KDPJvpos7aQ+fModusP9X90VWYxOc/+tl5UUrH3Sjh2bemtG0okCtEFY/qnU3abbR5MK1wbg== + "integrity" "sha512-W3rzUsfT1BeDx9KDPJvpos7aQ+fModusP9X90VWYxOc/+tl5UUrH3Sjh2bemtG0okCtEFY/qnU3abbR5MK1wbg==" + "resolved" "https://registry.npmjs.org/@release-it/keep-a-changelog/-/keep-a-changelog-2.3.0.tgz" + "version" "2.3.0" dependencies: - detect-newline "^3.1.0" + "detect-newline" "^3.1.0" "@sapphire/async-queue@^1.1.4", "@sapphire/async-queue@^1.1.8": - version "1.1.9" - resolved "https://registry.yarnpkg.com/@sapphire/async-queue/-/async-queue-1.1.9.tgz#ce69611c8753c4affd905a7ef43061c7eb95c01b" - integrity sha512-CbXaGwwlEMq+l1TRu01FJCvySJ1CEFKFclHT48nIfNeZXaAAmmwwy7scUKmYHPUa3GhoMp6Qr1B3eAJux6XgOQ== + "integrity" "sha512-CbXaGwwlEMq+l1TRu01FJCvySJ1CEFKFclHT48nIfNeZXaAAmmwwy7scUKmYHPUa3GhoMp6Qr1B3eAJux6XgOQ==" + "resolved" "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.1.9.tgz" + "version" "1.1.9" "@sapphire/snowflake@^1.3.5": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@sapphire/snowflake/-/snowflake-1.3.6.tgz#166e8c5c08d01c861edd7e2edc80b5739741715f" - integrity sha512-QnzuLp+p9D7agynVub/zqlDVriDza9y3STArBhNiNBUgIX8+GL5FpQxstRfw1jDr5jkZUjcuKYAHxjIuXKdJAg== + "integrity" "sha512-QnzuLp+p9D7agynVub/zqlDVriDza9y3STArBhNiNBUgIX8+GL5FpQxstRfw1jDr5jkZUjcuKYAHxjIuXKdJAg==" + "resolved" "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-1.3.6.tgz" + "version" "1.3.6" "@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== + "integrity" "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" + "version" "0.14.0" "@sindresorhus/is@^4.0.0", "@sindresorhus/is@^4.0.1", "@sindresorhus/is@^4.2.0": - version "4.2.0" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.2.0.tgz#667bfc6186ae7c9e0b45a08960c551437176e1ca" - integrity sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw== + "integrity" "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==" + "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz" + "version" "4.2.0" "@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== + "integrity" "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==" + "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" + "version" "1.1.2" dependencies: - defer-to-connect "^1.0.1" + "defer-to-connect" "^1.0.1" "@szmarczak/http-timer@^4.0.5": - version "4.0.6" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" - integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== + "integrity" "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==" + "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz" + "version" "4.0.6" dependencies: - defer-to-connect "^2.0.0" + "defer-to-connect" "^2.0.0" "@szmarczak/http-timer@^5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-5.0.1.tgz#c7c1bf1141cdd4751b0399c8fc7b8b664cd5be3a" - integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== + "integrity" "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==" + "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz" + "version" "5.0.1" dependencies: - defer-to-connect "^2.0.1" + "defer-to-connect" "^2.0.1" "@tsconfig/node10@^1.0.7": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.8.tgz#c1e4e80d6f964fbecb3359c43bd48b40f7cadad9" - integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== + "integrity" "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==" + "resolved" "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz" + "version" "1.0.8" "@tsconfig/node12@^1.0.7": - version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.9.tgz#62c1f6dee2ebd9aead80dc3afa56810e58e1a04c" - integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== + "integrity" "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==" + "resolved" "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz" + "version" "1.0.9" "@tsconfig/node14@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.1.tgz#95f2d167ffb9b8d2068b0b235302fafd4df711f2" - integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== + "integrity" "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==" + "resolved" "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz" + "version" "1.0.1" "@tsconfig/node16@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.2.tgz#423c77877d0569db20e1fc80885ac4118314010e" - integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== + "integrity" "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==" + "resolved" "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz" + "version" "1.0.2" "@types/bluebird@^3.5.35": - version "3.5.36" - resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.36.tgz#00d9301d4dc35c2f6465a8aec634bb533674c652" - integrity sha512-HBNx4lhkxN7bx6P0++W8E289foSu8kO8GCk2unhuVggO+cE7rh9DhZUyPhUxNRG9m+5B5BTKxZQ5ZP92x/mx9Q== + "integrity" "sha512-HBNx4lhkxN7bx6P0++W8E289foSu8kO8GCk2unhuVggO+cE7rh9DhZUyPhUxNRG9m+5B5BTKxZQ5ZP92x/mx9Q==" + "resolved" "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.36.tgz" + "version" "3.5.36" "@types/cacheable-request@^6.0.1", "@types/cacheable-request@^6.0.2": - version "6.0.2" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.2.tgz#c324da0197de0a98a2312156536ae262429ff6b9" - integrity sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA== + "integrity" "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==" + "resolved" "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz" + "version" "6.0.2" dependencies: "@types/http-cache-semantics" "*" "@types/keyv" "*" @@ -372,956 +373,958 @@ "@types/responselike" "*" "@types/debug@^4.1.5": - version "4.1.7" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.7.tgz#7cc0ea761509124709b8b2d1090d8f6c17aadb82" - integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== + "integrity" "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==" + "resolved" "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz" + "version" "4.1.7" dependencies: "@types/ms" "*" "@types/fluent-ffmpeg@^2.1.17": - version "2.1.20" - resolved "https://registry.yarnpkg.com/@types/fluent-ffmpeg/-/fluent-ffmpeg-2.1.20.tgz#3b5f42fc8263761d58284fa46ee6759a64ce54ac" - integrity sha512-B+OvhCdJ3LgEq2PhvWNOiB/EfwnXLElfMCgc4Z1K5zXgSfo9I6uGKwR/lqmNPFQuebNnes7re3gqkV77SyypLg== + "integrity" "sha512-B+OvhCdJ3LgEq2PhvWNOiB/EfwnXLElfMCgc4Z1K5zXgSfo9I6uGKwR/lqmNPFQuebNnes7re3gqkV77SyypLg==" + "resolved" "https://registry.npmjs.org/@types/fluent-ffmpeg/-/fluent-ffmpeg-2.1.20.tgz" + "version" "2.1.20" dependencies: "@types/node" "*" "@types/fs-capacitor@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz#17113e25817f584f58100fb7a08eed288b81956e" - integrity sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ== + "integrity" "sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ==" + "resolved" "https://registry.npmjs.org/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz" + "version" "2.0.0" dependencies: "@types/node" "*" "@types/http-cache-semantics@*": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" - integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== + "integrity" "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" + "resolved" "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz" + "version" "4.0.1" "@types/json-schema@^7.0.7": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + "integrity" "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" + "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz" + "version" "7.0.9" "@types/keyv@*": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.3.tgz#1c9aae32872ec1f20dcdaee89a9f3ba88f465e41" - integrity sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg== + "integrity" "sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==" + "resolved" "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz" + "version" "3.1.3" dependencies: "@types/node" "*" "@types/libsodium-wrappers@^0.7.9": - version "0.7.9" - resolved "https://registry.yarnpkg.com/@types/libsodium-wrappers/-/libsodium-wrappers-0.7.9.tgz#89c3ad2156d5143e64bce86cfeb0045a983aeccc" - integrity sha512-LisgKLlYQk19baQwjkBZZXdJL0KbeTpdEnrAfz5hQACbklCY0gVFnsKUyjfNWF1UQsCSjw93Sj5jSbiO8RPfdw== + "integrity" "sha512-LisgKLlYQk19baQwjkBZZXdJL0KbeTpdEnrAfz5hQACbklCY0gVFnsKUyjfNWF1UQsCSjw93Sj5jSbiO8RPfdw==" + "resolved" "https://registry.npmjs.org/@types/libsodium-wrappers/-/libsodium-wrappers-0.7.9.tgz" + "version" "0.7.9" "@types/ms@*": - version "0.7.31" - resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.31.tgz#31b7ca6407128a3d2bbc27fe2d21b345397f6197" - integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== + "integrity" "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + "resolved" "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz" + "version" "0.7.31" "@types/node-emoji@^1.8.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@types/node-emoji/-/node-emoji-1.8.1.tgz#689cb74fdf6e84309bcafce93a135dfecd01de3f" - integrity sha512-0fRfA90FWm6KJfw6P9QGyo0HDTCmthZ7cWaBQndITlaWLTZ6njRyKwrwpzpg+n6kBXBIGKeUHEQuBx7bphGJkA== + "integrity" "sha512-0fRfA90FWm6KJfw6P9QGyo0HDTCmthZ7cWaBQndITlaWLTZ6njRyKwrwpzpg+n6kBXBIGKeUHEQuBx7bphGJkA==" + "resolved" "https://registry.npmjs.org/@types/node-emoji/-/node-emoji-1.8.1.tgz" + "version" "1.8.1" "@types/node-fetch@^2.5.12": - version "2.5.12" - resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.12.tgz#8a6f779b1d4e60b7a57fb6fd48d84fb545b9cc66" - integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== + "integrity" "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==" + "resolved" "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz" + "version" "2.5.12" dependencies: "@types/node" "*" - form-data "^3.0.0" + "form-data" "^3.0.0" "@types/node@*", "@types/node@^17.0.0": - version "17.0.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.2.tgz#a4c07d47ff737e8ee7e586fe636ff0e1ddff070a" - integrity sha512-JepeIUPFDARgIs0zD/SKPgFsJEAF0X5/qO80llx59gOxFTboS9Amv3S+QfB7lqBId5sFXJ99BN0J6zFRvL9dDA== + "integrity" "sha512-JepeIUPFDARgIs0zD/SKPgFsJEAF0X5/qO80llx59gOxFTboS9Amv3S+QfB7lqBId5sFXJ99BN0J6zFRvL9dDA==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-17.0.2.tgz" + "version" "17.0.2" "@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + "integrity" "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + "resolved" "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" + "version" "4.0.0" "@types/responselike@*", "@types/responselike@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" - integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== + "integrity" "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==" + "resolved" "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz" + "version" "1.0.0" dependencies: "@types/node" "*" "@types/spotify-api@*": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@types/spotify-api/-/spotify-api-0.0.12.tgz#a9a2dbf447d5f0abf7a48d14fcb572db0cbd2267" - integrity sha512-BOQKiGvXpgX0EoOFClL5aYnPuE6nCpkQS7I9xRpHnI/s0WiJ1sgqN6vavd1kLKhkfR0z4bqH65vRbw19wCVpdA== + "integrity" "sha512-BOQKiGvXpgX0EoOFClL5aYnPuE6nCpkQS7I9xRpHnI/s0WiJ1sgqN6vavd1kLKhkfR0z4bqH65vRbw19wCVpdA==" + "resolved" "https://registry.npmjs.org/@types/spotify-api/-/spotify-api-0.0.12.tgz" + "version" "0.0.12" "@types/spotify-web-api-node@^5.0.2": - version "5.0.4" - resolved "https://registry.yarnpkg.com/@types/spotify-web-api-node/-/spotify-web-api-node-5.0.4.tgz#457f3a82d08aa0a561f98ebc1d5f78228e3b0c5d" - integrity sha512-t2a0wqe/9ydzqPTvL6CKys8v3mS3jR942BqSlg2e9lOtskUFSim9pXwathV0A9MTout5dpeWC3jW1yNUzJhovg== + "integrity" "sha512-t2a0wqe/9ydzqPTvL6CKys8v3mS3jR942BqSlg2e9lOtskUFSim9pXwathV0A9MTout5dpeWC3jW1yNUzJhovg==" + "resolved" "https://registry.npmjs.org/@types/spotify-web-api-node/-/spotify-web-api-node-5.0.4.tgz" + "version" "5.0.4" dependencies: "@types/spotify-api" "*" -"@types/validator@^13.1.4": - version "13.7.0" - resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.7.0.tgz#fa25263656d234473025c2d48249a900053c355a" - integrity sha512-+jBxVvXVuggZOrm04NR8z+5+bgoW4VZyLzUO+hmPPW1mVFL/HaitLAkizfv4yg9TbG8lkfHWVMQ11yDqrVVCzA== +"@types/validator@*", "@types/validator@^13.1.4": + "integrity" "sha512-+jBxVvXVuggZOrm04NR8z+5+bgoW4VZyLzUO+hmPPW1mVFL/HaitLAkizfv4yg9TbG8lkfHWVMQ11yDqrVVCzA==" + "resolved" "https://registry.npmjs.org/@types/validator/-/validator-13.7.0.tgz" + "version" "13.7.0" "@types/ws@^8.2.0", "@types/ws@^8.2.2": - version "8.2.2" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.2.2.tgz#7c5be4decb19500ae6b3d563043cd407bf366c21" - integrity sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg== + "integrity" "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==" + "resolved" "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz" + "version" "8.2.2" dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^4.31.1": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz#c24dc7c8069c7706bc40d99f6fa87edcb2005276" - integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== +"@typescript-eslint/eslint-plugin@^4.31.1", "@typescript-eslint/eslint-plugin@>=4.29.0": + "integrity" "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz" + "version" "4.33.0" dependencies: "@typescript-eslint/experimental-utils" "4.33.0" "@typescript-eslint/scope-manager" "4.33.0" - debug "^4.3.1" - functional-red-black-tree "^1.0.1" - ignore "^5.1.8" - regexpp "^3.1.0" - semver "^7.3.5" - tsutils "^3.21.0" + "debug" "^4.3.1" + "functional-red-black-tree" "^1.0.1" + "ignore" "^5.1.8" + "regexpp" "^3.1.0" + "semver" "^7.3.5" + "tsutils" "^3.21.0" "@typescript-eslint/experimental-utils@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz#6f2a786a4209fa2222989e9380b5331b2810f7fd" - integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== + "integrity" "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz" + "version" "4.33.0" dependencies: "@types/json-schema" "^7.0.7" "@typescript-eslint/scope-manager" "4.33.0" "@typescript-eslint/types" "4.33.0" "@typescript-eslint/typescript-estree" "4.33.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" + "eslint-scope" "^5.1.1" + "eslint-utils" "^3.0.0" -"@typescript-eslint/parser@^4.31.1": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-4.33.0.tgz#dfe797570d9694e560528d18eecad86c8c744899" - integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== +"@typescript-eslint/parser@^4.0.0", "@typescript-eslint/parser@^4.31.1": + "integrity" "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz" + "version" "4.33.0" dependencies: "@typescript-eslint/scope-manager" "4.33.0" "@typescript-eslint/types" "4.33.0" "@typescript-eslint/typescript-estree" "4.33.0" - debug "^4.3.1" + "debug" "^4.3.1" "@typescript-eslint/scope-manager@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz#d38e49280d983e8772e29121cf8c6e9221f280a3" - integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== + "integrity" "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz" + "version" "4.33.0" dependencies: "@typescript-eslint/types" "4.33.0" "@typescript-eslint/visitor-keys" "4.33.0" "@typescript-eslint/types@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.33.0.tgz#a1e59036a3b53ae8430ceebf2a919dc7f9af6d72" - integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== + "integrity" "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz" + "version" "4.33.0" "@typescript-eslint/typescript-estree@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz#0dfb51c2908f68c5c08d82aefeaf166a17c24609" - integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== + "integrity" "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz" + "version" "4.33.0" dependencies: "@typescript-eslint/types" "4.33.0" "@typescript-eslint/visitor-keys" "4.33.0" - debug "^4.3.1" - globby "^11.0.3" - is-glob "^4.0.1" - semver "^7.3.5" - tsutils "^3.21.0" + "debug" "^4.3.1" + "globby" "^11.0.3" + "is-glob" "^4.0.1" + "semver" "^7.3.5" + "tsutils" "^3.21.0" "@typescript-eslint/visitor-keys@4.33.0": - version "4.33.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz#2a22f77a41604289b7a186586e9ec48ca92ef1dd" - integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== + "integrity" "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==" + "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz" + "version" "4.33.0" dependencies: "@typescript-eslint/types" "4.33.0" - eslint-visitor-keys "^2.0.0" + "eslint-visitor-keys" "^2.0.0" -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== +"abbrev@1": + "integrity" "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "resolved" "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" + "version" "1.1.1" -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== +"abort-controller@^3.0.0": + "integrity" "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==" + "resolved" "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + "version" "3.0.0" dependencies: - event-target-shim "^5.0.0" + "event-target-shim" "^5.0.0" -acorn-jsx@^5.3.1: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== +"acorn-jsx@^5.3.1": + "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" + "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + "version" "5.3.2" -acorn-walk@^8.1.1: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== +"acorn-walk@^8.1.1": + "integrity" "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" + "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" + "version" "8.2.0" -acorn@^7.4.0: - version "7.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" - integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^7.4.0": + "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" + "version" "7.4.1" -acorn@^8.4.1: - version "8.6.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.6.0.tgz#e3692ba0eb1a0c83eaa4f37f5fa7368dd7142895" - integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw== +"acorn@^8.4.1": + "integrity" "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz" + "version" "8.6.0" -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== +"agent-base@6": + "integrity" "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==" + "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + "version" "6.0.2" dependencies: - debug "4" + "debug" "4" -ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== +"ajv@^6.10.0", "ajv@^6.12.3", "ajv@^6.12.4": + "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + "version" "6.12.6" 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" + "fast-deep-equal" "^3.1.1" + "fast-json-stable-stringify" "^2.0.0" + "json-schema-traverse" "^0.4.1" + "uri-js" "^4.2.2" -ajv@^8.0.1: - version "8.8.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.8.2.tgz#01b4fef2007a28bf75f0b7fc009f62679de4abbb" - integrity sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw== +"ajv@^8.0.1": + "integrity" "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz" + "version" "8.8.2" dependencies: - fast-deep-equal "^3.1.1" - json-schema-traverse "^1.0.0" - require-from-string "^2.0.2" - uri-js "^4.2.2" + "fast-deep-equal" "^3.1.1" + "json-schema-traverse" "^1.0.0" + "require-from-string" "^2.0.2" + "uri-js" "^4.2.2" -ansi-align@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" - integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== +"ansi-align@^3.0.0": + "integrity" "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==" + "resolved" "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" + "version" "3.0.1" dependencies: - string-width "^4.1.0" + "string-width" "^4.1.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-colors@^4.1.1": + "integrity" "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" + "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" + "version" "4.1.1" -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== +"ansi-escapes@^4.2.1": + "integrity" "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==" + "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + "version" "4.3.2" dependencies: - type-fest "^0.21.3" + "type-fest" "^0.21.3" -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@^2.0.0": + "integrity" "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + "version" "2.1.1" -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +"ansi-regex@^5.0.1": + "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + "version" "5.0.1" -ansi-regex@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" - integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== +"ansi-regex@^6.0.1": + "integrity" "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + "version" "6.0.1" -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== +"ansi-styles@^3.2.1": + "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + "version" "3.2.1" dependencies: - color-convert "^1.9.0" + "color-convert" "^1.9.0" -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== +"ansi-styles@^4.0.0", "ansi-styles@^4.1.0": + "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + "version" "4.3.0" dependencies: - color-convert "^2.0.1" + "color-convert" "^2.0.1" -any-promise@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/any-promise/-/any-promise-1.3.0.tgz#abc6afeedcea52e809cdc0376aed3ce39635d17f" - integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= +"any-promise@^1.3.0": + "integrity" "sha1-q8av7tzqUugJzcA3au0845Y10X8=" + "resolved" "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" + "version" "1.3.0" -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== +"anymatch@~3.1.2": + "integrity" "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==" + "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" + "version" "3.1.2" 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== + "normalize-path" "^3.0.0" + "picomatch" "^2.0.4" "aproba@^1.0.3 || ^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" - integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + "integrity" "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" + "resolved" "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" + "version" "2.0.0" -are-we-there-yet@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" - integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== +"aproba@^1.0.3": + "integrity" "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" + "resolved" "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" + "version" "1.2.0" + +"are-we-there-yet@^2.0.0": + "integrity" "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==" + "resolved" "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz" + "version" "2.0.0" dependencies: - delegates "^1.0.0" - readable-stream "^3.6.0" + "delegates" "^1.0.0" + "readable-stream" "^3.6.0" -are-we-there-yet@~1.1.2: - version "1.1.7" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz#b15474a932adab4ff8a50d9adfa7e4e926f21146" - integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== +"are-we-there-yet@~1.1.2": + "integrity" "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==" + "resolved" "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz" + "version" "1.1.7" dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" + "delegates" "^1.0.0" + "readable-stream" "^2.0.6" -arg@^4.1.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" - integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== +"arg@^4.1.0": + "integrity" "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" + "resolved" "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + "version" "4.1.3" -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== +"argparse@^1.0.7": + "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + "version" "1.0.10" dependencies: - sprintf-js "~1.0.2" + "sprintf-js" "~1.0.2" -array-shuffle@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/array-shuffle/-/array-shuffle-3.0.0.tgz#9a927cc2ca4c8ef4d71cddef7c9ee7b3b733d54b" - integrity sha512-rogEGxHOQPhslOhpg12LJkB+bbAl484/s2AJq0BxtzQDQfKl76fS2u9zWgg3p3b9ENcuvE7K8A7l5ddiPjCRnw== +"array-shuffle@^3.0.0": + "integrity" "sha512-rogEGxHOQPhslOhpg12LJkB+bbAl484/s2AJq0BxtzQDQfKl76fS2u9zWgg3p3b9ENcuvE7K8A7l5ddiPjCRnw==" + "resolved" "https://registry.npmjs.org/array-shuffle/-/array-shuffle-3.0.0.tgz" + "version" "3.0.0" -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== +"array-union@^2.1.0": + "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + "version" "2.1.0" -asn1@~0.2.3: - version "0.2.6" - resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" - integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== +"asn1@~0.2.3": + "integrity" "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==" + "resolved" "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" + "version" "0.2.6" dependencies: - safer-buffer "~2.1.0" + "safer-buffer" "~2.1.0" -assert-plus@1.0.0, assert-plus@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" - integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= +"assert-plus@^1.0.0", "assert-plus@1.0.0": + "integrity" "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" + "resolved" "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + "version" "1.0.0" -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== +"astral-regex@^2.0.0": + "integrity" "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" + "resolved" "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" + "version" "2.0.0" -async-retry@1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" - integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== +"async-retry@1.3.3": + "integrity" "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==" + "resolved" "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz" + "version" "1.3.3" dependencies: - retry "0.13.1" + "retry" "0.13.1" -async@>=0.2.9: - version "3.2.2" - resolved "https://registry.yarnpkg.com/async/-/async-3.2.2.tgz#2eb7671034bb2194d45d30e31e24ec7e7f9670cd" - integrity sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g== +"async@>=0.2.9": + "integrity" "sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==" + "resolved" "https://registry.npmjs.org/async/-/async-3.2.2.tgz" + "version" "3.2.2" -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +"asynckit@^0.4.0": + "integrity" "sha1-x57Zf380y48robyXkLzDZkdLS3k=" + "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + "version" "0.4.0" -aws-sign2@~0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" - integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= +"aws-sign2@~0.7.0": + "integrity" "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" + "resolved" "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" + "version" "0.7.0" -aws4@^1.8.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" - integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== +"aws4@^1.8.0": + "integrity" "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" + "resolved" "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" + "version" "1.11.0" -axios@^0.19.0: - version "0.19.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" - integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== +"axios@^0.19.0": + "integrity" "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==" + "resolved" "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz" + "version" "0.19.2" dependencies: - follow-redirects "1.5.10" + "follow-redirects" "1.5.10" -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +"balanced-match@^1.0.0": + "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + "version" "1.0.2" -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +"base64-js@^1.3.1": + "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + "version" "1.5.1" -bcrypt-pbkdf@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" - integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= +"bcrypt-pbkdf@^1.0.0": + "integrity" "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=" + "resolved" "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" + "version" "1.0.2" dependencies: - tweetnacl "^0.14.3" + "tweetnacl" "^0.14.3" -before-after-hook@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" - integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== +"before-after-hook@^2.2.0": + "integrity" "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==" + "resolved" "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz" + "version" "2.2.2" -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== +"binary-extensions@^2.0.0": + "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + "version" "2.2.0" -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== +"bl@^4.1.0": + "integrity" "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==" + "resolved" "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + "version" "4.1.0" dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" + "buffer" "^5.5.0" + "inherits" "^2.0.4" + "readable-stream" "^3.4.0" -bl@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-5.0.0.tgz#6928804a41e9da9034868e1c50ca88f21f57aea2" - integrity sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ== +"bl@^5.0.0": + "integrity" "sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ==" + "resolved" "https://registry.npmjs.org/bl/-/bl-5.0.0.tgz" + "version" "5.0.0" dependencies: - buffer "^6.0.3" - inherits "^2.0.4" - readable-stream "^3.4.0" + "buffer" "^6.0.3" + "inherits" "^2.0.4" + "readable-stream" "^3.4.0" -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= +"block-stream@*": + "integrity" "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=" + "resolved" "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz" + "version" "0.0.9" dependencies: - inherits "~2.0.0" + "inherits" "~2.0.0" -boxen@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" - integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== +"boxen@^5.0.0": + "integrity" "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==" + "resolved" "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" + "version" "5.1.2" dependencies: - ansi-align "^3.0.0" - camelcase "^6.2.0" - chalk "^4.1.0" - cli-boxes "^2.2.1" - string-width "^4.2.2" - type-fest "^0.20.2" - widest-line "^3.1.0" - wrap-ansi "^7.0.0" + "ansi-align" "^3.0.0" + "camelcase" "^6.2.0" + "chalk" "^4.1.0" + "cli-boxes" "^2.2.1" + "string-width" "^4.2.2" + "type-fest" "^0.20.2" + "widest-line" "^3.1.0" + "wrap-ansi" "^7.0.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== +"brace-expansion@^1.1.7": + "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + "version" "1.1.11" dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" + "balanced-match" "^1.0.0" + "concat-map" "0.0.1" -braces@^3.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== +"braces@^3.0.1", "braces@~3.0.2": + "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" + "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + "version" "3.0.2" dependencies: - fill-range "^7.0.1" + "fill-range" "^7.0.1" -buffer@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" - integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== +"buffer@^5.5.0": + "integrity" "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==" + "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + "version" "5.7.1" dependencies: - base64-js "^1.3.1" - ieee754 "^1.1.13" + "base64-js" "^1.3.1" + "ieee754" "^1.1.13" -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== +"buffer@^6.0.3": + "integrity" "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" + "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + "version" "6.0.3" dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" + "base64-js" "^1.3.1" + "ieee754" "^1.2.1" -cacheable-lookup@^5.0.3: - version "5.0.4" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz#5a6b865b2c44357be3d5ebc2a467b032719a7005" - integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== +"cacheable-lookup@^5.0.3": + "integrity" "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" + "resolved" "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz" + "version" "5.0.4" -cacheable-lookup@^6.0.4: - version "6.0.4" - resolved "https://registry.yarnpkg.com/cacheable-lookup/-/cacheable-lookup-6.0.4.tgz#65c0e51721bb7f9f2cb513aed6da4a1b93ad7dc8" - integrity sha512-mbcDEZCkv2CZF4G01kr8eBd/5agkt9oCqz75tJMSIsquvRZ2sL6Hi5zGVKi/0OSC9oO1GHfJ2AV0ZIOY9vye0A== +"cacheable-lookup@^6.0.4": + "integrity" "sha512-mbcDEZCkv2CZF4G01kr8eBd/5agkt9oCqz75tJMSIsquvRZ2sL6Hi5zGVKi/0OSC9oO1GHfJ2AV0ZIOY9vye0A==" + "resolved" "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.0.4.tgz" + "version" "6.0.4" -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== +"cacheable-request@^6.0.0": + "integrity" "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==" + "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" + "version" "6.1.0" 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" + "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" -cacheable-request@^7.0.2: - version "7.0.2" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" - integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== +"cacheable-request@^7.0.2": + "integrity" "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==" + "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz" + "version" "7.0.2" dependencies: - clone-response "^1.0.2" - get-stream "^5.1.0" - http-cache-semantics "^4.0.0" - keyv "^4.0.0" - lowercase-keys "^2.0.0" - normalize-url "^6.0.1" - responselike "^2.0.0" + "clone-response" "^1.0.2" + "get-stream" "^5.1.0" + "http-cache-semantics" "^4.0.0" + "keyv" "^4.0.0" + "lowercase-keys" "^2.0.0" + "normalize-url" "^6.0.1" + "responselike" "^2.0.0" -call-bind@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== +"call-bind@^1.0.0": + "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" + "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + "version" "1.0.2" dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + "function-bind" "^1.1.1" + "get-intrinsic" "^1.0.2" -callsites@^3.0.0, callsites@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +"callsites@^3.0.0", "callsites@^3.1.0": + "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + "version" "3.1.0" -camelcase@^6.2.0: - version "6.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.1.tgz#250fd350cfd555d0d2160b1d51510eaf8326e86e" - integrity sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA== +"camelcase@^6.2.0": + "integrity" "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==" + "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz" + "version" "6.2.1" -caseless@~0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" - integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= +"caseless@~0.12.0": + "integrity" "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + "resolved" "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" + "version" "0.12.0" -chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== +"chalk@^2.0.0": + "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + "version" "2.4.2" dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" + "ansi-styles" "^3.2.1" + "escape-string-regexp" "^1.0.5" + "supports-color" "^5.3.0" -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== +"chalk@^4.0.0", "chalk@^4.1.0", "chalk@^4.1.1", "chalk@^4.1.2", "chalk@4.1.2": + "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + "version" "4.1.2" dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" -chalk@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.0.0.tgz#bd96c6bb8e02b96e08c0c3ee2a9d90e050c7b832" - integrity sha512-/duVOqst+luxCQRKEo4bNxinsOQtMP80ZYm7mMqzuh5PociNL0PvmHFvREJ9ueYL2TxlHjBcmLCdmocx9Vg+IQ== +"chalk@^5.0.0": + "integrity" "sha512-/duVOqst+luxCQRKEo4bNxinsOQtMP80ZYm7mMqzuh5PociNL0PvmHFvREJ9ueYL2TxlHjBcmLCdmocx9Vg+IQ==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-5.0.0.tgz" + "version" "5.0.0" -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +"chardet@^0.7.0": + "integrity" "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + "resolved" "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" + "version" "0.7.0" -chokidar@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== +"chokidar@^3.5.2": + "integrity" "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==" + "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz" + "version" "3.5.2" dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" + "anymatch" "~3.1.2" + "braces" "~3.0.2" + "glob-parent" "~5.1.2" + "is-binary-path" "~2.1.0" + "is-glob" "~4.0.1" + "normalize-path" "~3.0.0" + "readdirp" "~3.6.0" optionalDependencies: - fsevents "~2.3.2" + "fsevents" "~2.3.2" -chownr@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== +"chownr@^1.1.4": + "integrity" "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" + "resolved" "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" + "version" "1.1.4" -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== +"chownr@^2.0.0": + "integrity" "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" + "resolved" "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" + "version" "2.0.0" -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== +"ci-info@^2.0.0": + "integrity" "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + "version" "2.0.0" -ci-info@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" - integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== +"ci-info@^3.2.0": + "integrity" "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==" + "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz" + "version" "3.3.0" -cli-boxes@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== +"cli-boxes@^2.2.1": + "integrity" "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" + "resolved" "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" + "version" "2.2.1" -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== +"cli-cursor@^3.1.0": + "integrity" "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==" + "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + "version" "3.1.0" dependencies: - restore-cursor "^3.1.0" + "restore-cursor" "^3.1.0" -cli-cursor@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" - integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== +"cli-cursor@^4.0.0": + "integrity" "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==" + "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz" + "version" "4.0.0" dependencies: - restore-cursor "^4.0.0" + "restore-cursor" "^4.0.0" -cli-spinners@^2.5.0, cli-spinners@^2.6.0: - version "2.6.1" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" - integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== +"cli-spinners@^2.5.0", "cli-spinners@^2.6.0": + "integrity" "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==" + "resolved" "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz" + "version" "2.6.1" -cli-width@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" - integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== +"cli-width@^3.0.0": + "integrity" "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" + "resolved" "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" + "version" "3.0.0" -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== +"cliui@^7.0.2": + "integrity" "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==" + "resolved" "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + "version" "7.0.4" dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" + "string-width" "^4.2.0" + "strip-ansi" "^6.0.0" + "wrap-ansi" "^7.0.0" -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= +"clone-response@^1.0.2": + "integrity" "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=" + "resolved" "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz" + "version" "1.0.2" dependencies: - mimic-response "^1.0.0" + "mimic-response" "^1.0.0" -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= +"clone@^1.0.2": + "integrity" "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + "resolved" "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + "version" "1.0.4" -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= +"code-point-at@^1.0.0": + "integrity" "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" + "resolved" "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" + "version" "1.1.0" -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== +"color-convert@^1.9.0": + "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + "version" "1.9.3" dependencies: - color-name "1.1.3" + "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== +"color-convert@^2.0.1": + "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + "version" "2.0.1" dependencies: - color-name "~1.1.4" + "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": + "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + "version" "1.1.4" -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== +"color-name@1.1.3": + "integrity" "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + "version" "1.1.3" -color-support@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== +"color-support@^1.1.2": + "integrity" "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + "resolved" "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" + "version" "1.1.3" -combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== +"combined-stream@^1.0.6", "combined-stream@^1.0.8", "combined-stream@~1.0.6": + "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" + "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + "version" "1.0.8" dependencies: - delayed-stream "~1.0.0" + "delayed-stream" "~1.0.0" -compare-versions@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" - integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== +"compare-versions@^3.6.0": + "integrity" "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==" + "resolved" "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz" + "version" "3.6.0" -component-emitter@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" - integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== +"component-emitter@^1.3.0": + "integrity" "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + "resolved" "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" + "version" "1.3.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-map@0.0.1": + "integrity" "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "version" "0.0.1" -concurrently@^6.4.0: - version "6.5.1" - resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-6.5.1.tgz#4518c67f7ac680cf5c34d5adf399a2a2047edc8c" - integrity sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag== +"concurrently@^6.4.0": + "integrity" "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==" + "resolved" "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz" + "version" "6.5.1" dependencies: - chalk "^4.1.0" - date-fns "^2.16.1" - lodash "^4.17.21" - rxjs "^6.6.3" - spawn-command "^0.0.2-1" - supports-color "^8.1.0" - tree-kill "^1.2.2" - yargs "^16.2.0" + "chalk" "^4.1.0" + "date-fns" "^2.16.1" + "lodash" "^4.17.21" + "rxjs" "^6.6.3" + "spawn-command" "^0.0.2-1" + "supports-color" "^8.1.0" + "tree-kill" "^1.2.2" + "yargs" "^16.2.0" -configstore@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" - integrity sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA== +"configstore@^5.0.1": + "integrity" "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==" + "resolved" "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz" + "version" "5.0.1" 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" + "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" -confusing-browser-globals@1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz#30d1e7f3d1b882b25ec4933d1d1adac353d20a59" - integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== +"confusing-browser-globals@1.0.10": + "integrity" "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==" + "resolved" "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz" + "version" "1.0.10" -console-control-strings@^1.0.0, console-control-strings@^1.1.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= +"console-control-strings@^1.0.0", "console-control-strings@^1.1.0", "console-control-strings@~1.1.0": + "integrity" "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + "resolved" "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" + "version" "1.1.0" -cookiejar@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/cookiejar/-/cookiejar-2.1.3.tgz#fc7a6216e408e74414b90230050842dacda75acc" - integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== +"cookiejar@^2.1.2": + "integrity" "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==" + "resolved" "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz" + "version" "2.1.3" -core-util-is@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +"core-util-is@~1.0.0", "core-util-is@1.0.2": + "integrity" "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "version" "1.0.2" -core-util-is@~1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" - integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== - -cosmiconfig@7.0.1, cosmiconfig@^7.0.0: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== +"cosmiconfig@^7.0.0", "cosmiconfig@7.0.1": + "integrity" "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==" + "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz" + "version" "7.0.1" dependencies: "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" + "import-fresh" "^3.2.1" + "parse-json" "^5.0.0" + "path-type" "^4.0.0" + "yaml" "^1.10.0" -create-require@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" - integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== +"create-require@^1.1.0": + "integrity" "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" + "resolved" "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + "version" "1.1.1" -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== +"cross-spawn@^7.0.0", "cross-spawn@^7.0.2", "cross-spawn@^7.0.3": + "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" + "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + "version" "7.0.3" dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" + "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== +"crypto-random-string@^2.0.0": + "integrity" "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + "resolved" "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" + "version" "2.0.0" -dashdash@^1.12.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" - integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= +"dashdash@^1.12.0": + "integrity" "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=" + "resolved" "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" + "version" "1.14.1" dependencies: - assert-plus "^1.0.0" + "assert-plus" "^1.0.0" -date-fns@^2.16.1: - version "2.27.0" - resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.27.0.tgz#e1ff3c3ddbbab8a2eaadbb6106be2929a5a2d92b" - integrity sha512-sj+J0Mo2p2X1e306MHq282WS4/A8Pz/95GIFcsPNMPMZVI3EUrAdSv90al1k+p74WGLCruMXk23bfEDZa71X9Q== +"date-fns@^2.16.1": + "integrity" "sha512-sj+J0Mo2p2X1e306MHq282WS4/A8Pz/95GIFcsPNMPMZVI3EUrAdSv90al1k+p74WGLCruMXk23bfEDZa71X9Q==" + "resolved" "https://registry.npmjs.org/date-fns/-/date-fns-2.27.0.tgz" + "version" "2.27.0" -debug@4, debug@^4.0.1, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== +"debug@^3.2.6": + "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + "version" "3.2.7" dependencies: - ms "2.1.2" + "ms" "^2.1.1" -debug@4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== +"debug@^3.2.7": + "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + "version" "3.2.7" dependencies: - ms "2.1.2" + "ms" "^2.1.1" -debug@=3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== +"debug@^4.0.1", "debug@^4.1.1", "debug@^4.3.1", "debug@^4.3.3", "debug@4": + "integrity" "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==" + "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz" + "version" "4.3.3" dependencies: - ms "2.0.0" + "ms" "2.1.2" -debug@^3.2.6, debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== +"debug@=3.1.0": + "integrity" "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" + "version" "3.1.0" dependencies: - ms "^2.1.1" + "ms" "2.0.0" -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -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= +"debug@4.3.2": + "integrity" "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==" + "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz" + "version" "4.3.2" dependencies: - mimic-response "^1.0.0" + "ms" "2.1.2" -decompress-response@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-6.0.0.tgz#ca387612ddb7e104bd16d85aab00d5ecf09c66fc" - integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== +"decode-uri-component@^0.2.0": + "integrity" "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" + "resolved" "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" + "version" "0.2.0" + +"decompress-response@^3.3.0": + "integrity" "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=" + "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" + "version" "3.3.0" dependencies: - mimic-response "^3.1.0" + "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.4" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= +"decompress-response@^6.0.0": + "integrity" "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==" + "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" + "version" "6.0.0" dependencies: - clone "^1.0.2" + "mimic-response" "^3.1.0" -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== +"deep-extend@^0.6.0": + "integrity" "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + "resolved" "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + "version" "0.6.0" -defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" - integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== +"deep-is@^0.1.3": + "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + "version" "0.1.4" -delay@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/delay/-/delay-5.0.0.tgz#137045ef1b96e5071060dd5be60bf9334436bd1d" - integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== - -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= - -deprecated-obj@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/deprecated-obj/-/deprecated-obj-2.0.0.tgz#e6ba93a3989f6ed18d685e7d99fb8d469b4beffc" - integrity sha512-CkdywZC2rJ8RGh+y3MM1fw1EJ4oO/oNExGbRFv0AQoMS+faTd3nO7slYjkj/6t8OnIMUE+wxh6G97YHhK1ytrw== +"defaults@^1.0.3": + "integrity" "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=" + "resolved" "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz" + "version" "1.0.3" dependencies: - flat "^5.0.2" - lodash "^4.17.20" + "clone" "^1.0.2" -deprecation@^2.0.0, deprecation@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" - integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== +"defer-to-connect@^1.0.1": + "integrity" "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" + "version" "1.1.3" -detect-libc@^1.0.2, 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= +"defer-to-connect@^2.0.0", "defer-to-connect@^2.0.1": + "integrity" "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" + "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" + "version" "2.0.1" -detect-newline@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== +"delay@^5.0.0": + "integrity" "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==" + "resolved" "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz" + "version" "5.0.0" -diff@^4.0.1: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +"delayed-stream@~1.0.0": + "integrity" "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + "version" "1.0.0" -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== +"delegates@^1.0.0": + "integrity" "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "resolved" "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" + "version" "1.0.0" + +"deprecated-obj@2.0.0": + "integrity" "sha512-CkdywZC2rJ8RGh+y3MM1fw1EJ4oO/oNExGbRFv0AQoMS+faTd3nO7slYjkj/6t8OnIMUE+wxh6G97YHhK1ytrw==" + "resolved" "https://registry.npmjs.org/deprecated-obj/-/deprecated-obj-2.0.0.tgz" + "version" "2.0.0" dependencies: - path-type "^4.0.0" + "flat" "^5.0.2" + "lodash" "^4.17.20" -discord-api-types@^0.18.1: - version "0.18.1" - resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.18.1.tgz#5d08ed1263236be9c21a22065d0e6b51f790f492" - integrity sha512-hNC38R9ZF4uaujaZQtQfm5CdQO58uhdkoHQAVvMfIL0LgOSZeW575W8H6upngQOuoxWd8tiRII3LLJm9zuQKYg== +"deprecation@^2.0.0", "deprecation@^2.3.1": + "integrity" "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" + "resolved" "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz" + "version" "2.3.1" -discord-api-types@^0.24.0: - version "0.24.0" - resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.24.0.tgz#9e429b8a1ddb4147134dfb3109093422de7ec549" - integrity sha512-X0uA2a92cRjowUEXpLZIHWl4jiX1NsUpDhcEOpa1/hpO1vkaokgZ8kkPtPih9hHth5UVQ3mHBu/PpB4qjyfJ4A== +"detect-libc@^1.0.2", "detect-libc@^1.0.3": + "integrity" "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" + "resolved" "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz" + "version" "1.0.3" -discord-api-types@^0.25.2: - version "0.25.2" - resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.25.2.tgz#e50ed152e6d48fe7963f5de1002ca6f2df57c61b" - integrity sha512-O243LXxb5gLLxubu5zgoppYQuolapGVWPw3ll0acN0+O8TnPUE2kFp9Bt3sTRYodw8xFIknOVxjSeyWYBpVcEQ== +"detect-newline@^3.1.0": + "integrity" "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" + "resolved" "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + "version" "3.1.0" -discord.js@^13.3.0: - version "13.3.1" - resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-13.3.1.tgz#94fe05bc3ec0a3e4761e4f312a2a418c29721ab6" - integrity sha512-zn4G8tL5+tMV00+0aSsVYNYcIfMSdT2g0nudKny+Ikd+XKv7m6bqI7n3Vji0GIRqXDr5ArPaw+iYFM2I1Iw3vg== +"diff@^4.0.1": + "integrity" "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" + "resolved" "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + "version" "4.0.2" + +"dir-glob@^3.0.1": + "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" + "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "path-type" "^4.0.0" + +"discord-api-types@^0.18.1": + "integrity" "sha512-hNC38R9ZF4uaujaZQtQfm5CdQO58uhdkoHQAVvMfIL0LgOSZeW575W8H6upngQOuoxWd8tiRII3LLJm9zuQKYg==" + "resolved" "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.18.1.tgz" + "version" "0.18.1" + +"discord-api-types@^0.24.0": + "integrity" "sha512-X0uA2a92cRjowUEXpLZIHWl4jiX1NsUpDhcEOpa1/hpO1vkaokgZ8kkPtPih9hHth5UVQ3mHBu/PpB4qjyfJ4A==" + "resolved" "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.24.0.tgz" + "version" "0.24.0" + +"discord-api-types@^0.25.2": + "integrity" "sha512-O243LXxb5gLLxubu5zgoppYQuolapGVWPw3ll0acN0+O8TnPUE2kFp9Bt3sTRYodw8xFIknOVxjSeyWYBpVcEQ==" + "resolved" "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.25.2.tgz" + "version" "0.25.2" + +"discord.js@^13.3.0": + "integrity" "sha512-zn4G8tL5+tMV00+0aSsVYNYcIfMSdT2g0nudKny+Ikd+XKv7m6bqI7n3Vji0GIRqXDr5ArPaw+iYFM2I1Iw3vg==" + "resolved" "https://registry.npmjs.org/discord.js/-/discord.js-13.3.1.tgz" + "version" "13.3.1" dependencies: "@discordjs/builders" "^0.8.1" "@discordjs/collection" "^0.3.2" @@ -1329,3099 +1332,3172 @@ discord.js@^13.3.0: "@sapphire/async-queue" "^1.1.8" "@types/node-fetch" "^2.5.12" "@types/ws" "^8.2.0" - discord-api-types "^0.24.0" - node-fetch "^2.6.1" - ws "^8.2.3" + "discord-api-types" "^0.24.0" + "node-fetch" "^2.6.1" + "ws" "^8.2.3" -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== +"doctrine@^3.0.0": + "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" + "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + "version" "3.0.0" dependencies: - esutils "^2.0.2" + "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== +"dot-prop@^5.2.0": + "integrity" "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==" + "resolved" "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" + "version" "5.3.0" dependencies: - is-obj "^2.0.0" + "is-obj" "^2.0.0" -dot-prop@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" - integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== +"dot-prop@^6.0.1": + "integrity" "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==" + "resolved" "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz" + "version" "6.0.1" dependencies: - is-obj "^2.0.0" + "is-obj" "^2.0.0" -dotenv@^8.5.1: - version "8.6.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.6.0.tgz#061af664d19f7f4d8fc6e4ff9b584ce237adcb8b" - integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== +"dotenv@^8.5.1": + "integrity" "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" + "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz" + "version" "8.6.0" -dottie@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/dottie/-/dottie-2.0.2.tgz#cc91c0726ce3a054ebf11c55fbc92a7f266dd154" - integrity sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg== +"dottie@^2.0.0": + "integrity" "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" + "resolved" "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz" + "version" "2.0.2" -duplexer3@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" - integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= +"duplexer3@^0.1.4": + "integrity" "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + "resolved" "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz" + "version" "0.1.4" -ecc-jsbn@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" - integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= +"ecc-jsbn@~0.1.1": + "integrity" "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=" + "resolved" "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" + "version" "0.1.2" dependencies: - jsbn "~0.1.0" - safer-buffer "^2.1.0" + "jsbn" "~0.1.0" + "safer-buffer" "^2.1.0" -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== +"emoji-regex@^8.0.0": + "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + "version" "8.0.0" -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== +"end-of-stream@^1.1.0": + "integrity" "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==" + "resolved" "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + "version" "1.4.4" dependencies: - once "^1.4.0" + "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== +"enquirer@^2.3.5": + "integrity" "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==" + "resolved" "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" + "version" "2.3.6" dependencies: - ansi-colors "^4.1.1" + "ansi-colors" "^4.1.1" -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== +"error-ex@^1.3.1": + "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" + "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + "version" "1.3.2" dependencies: - is-arrayish "^0.2.1" + "is-arrayish" "^0.2.1" -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== +"escalade@^3.1.1": + "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + "version" "3.1.1" -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-goat@^2.0.0": + "integrity" "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" + "resolved" "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz" + "version" "2.1.1" -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= +"escape-string-regexp@^1.0.5": + "integrity" "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "version" "1.0.5" -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== +"escape-string-regexp@^4.0.0": + "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + "version" "4.0.0" -eslint-config-xo-typescript@^0.44.0: - version "0.44.0" - resolved "https://registry.yarnpkg.com/eslint-config-xo-typescript/-/eslint-config-xo-typescript-0.44.0.tgz#972285f401ea6b26c5802e177431de8b15851b0f" - integrity sha512-/mRj2KHHwnl3ZyM8vn68NSfRoEunkSYagWERGmNnU5UOLo4AY9jjBNZW+/sDOaPYuc5xzYmLxYspDCVCXKLGNQ== +"eslint-config-xo-typescript@^0.44.0": + "integrity" "sha512-/mRj2KHHwnl3ZyM8vn68NSfRoEunkSYagWERGmNnU5UOLo4AY9jjBNZW+/sDOaPYuc5xzYmLxYspDCVCXKLGNQ==" + "resolved" "https://registry.npmjs.org/eslint-config-xo-typescript/-/eslint-config-xo-typescript-0.44.0.tgz" + "version" "0.44.0" dependencies: - typescript ">=4.3" + "typescript" ">=4.3" -eslint-config-xo@^0.38.0: - version "0.38.0" - resolved "https://registry.yarnpkg.com/eslint-config-xo/-/eslint-config-xo-0.38.0.tgz#50cbe676a90d5582e1bbf1de750286e7cf09378e" - integrity sha512-G2jL+VyfkcZW8GoTmqLsExvrWssBedSoaQQ11vyhflDeT3csMdBVp0On+AVijrRuvgmkWeDwwUL5Rj0qDRHK6g== +"eslint-config-xo@^0.38.0": + "integrity" "sha512-G2jL+VyfkcZW8GoTmqLsExvrWssBedSoaQQ11vyhflDeT3csMdBVp0On+AVijrRuvgmkWeDwwUL5Rj0qDRHK6g==" + "resolved" "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.38.0.tgz" + "version" "0.38.0" dependencies: - confusing-browser-globals "1.0.10" + "confusing-browser-globals" "1.0.10" -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== +"eslint-scope@^5.1.1": + "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + "version" "5.1.1" dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" + "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== +"eslint-utils@^2.1.0": + "integrity" "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==" + "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" + "version" "2.1.0" dependencies: - eslint-visitor-keys "^1.1.0" + "eslint-visitor-keys" "^1.1.0" -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== +"eslint-utils@^3.0.0": + "integrity" "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==" + "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" + "version" "3.0.0" dependencies: - eslint-visitor-keys "^2.0.0" + "eslint-visitor-keys" "^2.0.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-visitor-keys@^1.1.0": + "integrity" "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" + "version" "1.3.0" -eslint-visitor-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== +"eslint-visitor-keys@^1.3.0": + "integrity" "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" + "version" "1.3.0" -eslint@^7.32.0: - version "7.32.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d" - integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== +"eslint-visitor-keys@^2.0.0": + "integrity" "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" + "version" "2.1.0" + +"eslint@*", "eslint@^5.0.0 || ^6.0.0 || ^7.0.0", "eslint@^7.32.0", "eslint@>=5", "eslint@>=7.20.0", "eslint@>=7.32.0": + "integrity" "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==" + "resolved" "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz" + "version" "7.32.0" dependencies: "@babel/code-frame" "7.12.11" "@eslint/eslintrc" "^0.4.3" "@humanwhocodes/config-array" "^0.5.0" - 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" - escape-string-regexp "^4.0.0" - eslint-scope "^5.1.1" - eslint-utils "^2.1.0" - eslint-visitor-keys "^2.0.0" - espree "^7.3.1" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - functional-red-black-tree "^1.0.1" - glob-parent "^5.1.2" - globals "^13.6.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.merge "^4.6.2" - 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 "^6.0.9" - text-table "^0.2.0" - v8-compile-cache "^2.0.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" + "escape-string-regexp" "^4.0.0" + "eslint-scope" "^5.1.1" + "eslint-utils" "^2.1.0" + "eslint-visitor-keys" "^2.0.0" + "espree" "^7.3.1" + "esquery" "^1.4.0" + "esutils" "^2.0.2" + "fast-deep-equal" "^3.1.3" + "file-entry-cache" "^6.0.1" + "functional-red-black-tree" "^1.0.1" + "glob-parent" "^5.1.2" + "globals" "^13.6.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.merge" "^4.6.2" + "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" "^6.0.9" + "text-table" "^0.2.0" + "v8-compile-cache" "^2.0.3" -espree@^7.3.0, espree@^7.3.1: - version "7.3.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" - integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== +"espree@^7.3.0", "espree@^7.3.1": + "integrity" "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==" + "resolved" "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz" + "version" "7.3.1" dependencies: - acorn "^7.4.0" - acorn-jsx "^5.3.1" - eslint-visitor-keys "^1.3.0" + "acorn" "^7.4.0" + "acorn-jsx" "^5.3.1" + "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== +"esprima@^4.0.0": + "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + "version" "4.0.1" -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== +"esquery@^1.4.0": + "integrity" "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==" + "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" + "version" "1.4.0" dependencies: - estraverse "^5.1.0" + "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== +"esrecurse@^4.3.0": + "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" + "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + "version" "4.3.0" dependencies: - estraverse "^5.2.0" + "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@^4.1.1": + "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + "version" "4.3.0" -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== +"estraverse@^5.1.0": + "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + "version" "5.3.0" -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== +"estraverse@^5.2.0": + "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + "version" "5.3.0" -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== +"esutils@^2.0.2": + "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + "version" "2.0.3" -eventemitter3@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== +"event-target-shim@^5.0.0": + "integrity" "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" + "resolved" "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + "version" "5.0.1" -execa@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== +"eventemitter3@^4.0.7": + "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + "version" "4.0.7" + +"execa@^4.0.2": + "integrity" "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==" + "resolved" "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz" + "version" "4.1.0" dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" + "cross-spawn" "^7.0.0" + "get-stream" "^5.0.0" + "human-signals" "^1.1.1" + "is-stream" "^2.0.0" + "merge-stream" "^2.0.0" + "npm-run-path" "^4.0.0" + "onetime" "^5.1.0" + "signal-exit" "^3.0.2" + "strip-final-newline" "^2.0.0" -execa@^4.0.2: - version "4.1.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" - integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== +"execa@5.1.1": + "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" + "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + "version" "5.1.1" dependencies: - cross-spawn "^7.0.0" - get-stream "^5.0.0" - human-signals "^1.1.1" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.0" - onetime "^5.1.0" - signal-exit "^3.0.2" - strip-final-newline "^2.0.0" + "cross-spawn" "^7.0.3" + "get-stream" "^6.0.0" + "human-signals" "^2.1.0" + "is-stream" "^2.0.0" + "merge-stream" "^2.0.0" + "npm-run-path" "^4.0.1" + "onetime" "^5.1.2" + "signal-exit" "^3.0.3" + "strip-final-newline" "^2.0.0" -extend@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +"extend@~3.0.2": + "integrity" "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + "resolved" "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" + "version" "3.0.2" -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== +"external-editor@^3.0.3": + "integrity" "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==" + "resolved" "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" + "version" "3.1.0" dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" + "chardet" "^0.7.0" + "iconv-lite" "^0.4.24" + "tmp" "^0.0.33" -extsprintf@1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" - integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= +"extsprintf@^1.2.0", "extsprintf@1.3.0": + "integrity" "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" + "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" + "version" "1.3.0" -extsprintf@^1.2.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" - integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== +"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": + "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + "version" "3.1.3" -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - 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-glob@^3.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== +"fast-glob@^3.1.1": + "integrity" "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==" + "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz" + "version" "3.2.7" dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" + "glob-parent" "^5.1.2" + "merge2" "^1.3.0" + "micromatch" "^4.0.4" -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-json-stable-stringify@^2.0.0": + "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + "version" "2.1.0" -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= +"fast-levenshtein@^2.0.6": + "integrity" "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + "version" "2.0.6" -fast-safe-stringify@^2.0.7: - version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== +"fast-safe-stringify@^2.0.7": + "integrity" "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" + "resolved" "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" + "version" "2.1.1" -fastq@^1.6.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" - integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== +"fastq@^1.6.0": + "integrity" "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==" + "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" + "version" "1.13.0" dependencies: - reusify "^1.0.4" + "reusify" "^1.0.4" -figures@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" - integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== +"figures@^3.0.0": + "integrity" "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==" + "resolved" "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" + "version" "3.2.0" dependencies: - escape-string-regexp "^1.0.5" + "escape-string-regexp" "^1.0.5" -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== +"file-entry-cache@^6.0.1": + "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" + "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + "version" "6.0.1" dependencies: - flat-cache "^3.0.4" + "flat-cache" "^3.0.4" -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== +"fill-range@^7.0.1": + "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" + "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + "version" "7.0.1" dependencies: - to-regex-range "^5.0.1" + "to-regex-range" "^5.0.1" -filter-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" - integrity sha1-mzERErxsYSehbgFsbF1/GeCAXFs= +"filter-obj@^1.1.0": + "integrity" "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=" + "resolved" "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz" + "version" "1.1.0" -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== +"find-up@^5.0.0": + "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + "version" "5.0.0" dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" + "locate-path" "^6.0.0" + "path-exists" "^4.0.0" -find-versions@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-4.0.0.tgz#3c57e573bf97769b8cb8df16934b627915da4965" - integrity sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ== +"find-versions@^4.0.0": + "integrity" "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==" + "resolved" "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz" + "version" "4.0.0" dependencies: - semver-regex "^3.1.2" + "semver-regex" "^3.1.2" -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== +"flat-cache@^3.0.4": + "integrity" "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==" + "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" + "version" "3.0.4" dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" + "flatted" "^3.1.0" + "rimraf" "^3.0.2" -flat@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" - integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== +"flat@^5.0.2": + "integrity" "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" + "resolved" "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" + "version" "5.0.2" -flatted@^3.1.0: - version "3.2.4" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2" - integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw== +"flatted@^3.1.0": + "integrity" "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==" + "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz" + "version" "3.2.4" -fluent-ffmpeg@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz#c952de2240f812ebda0aa8006d7776ee2acf7d74" - integrity sha1-yVLeIkD4EuvaCqgAbXd27irPfXQ= +"fluent-ffmpeg@^2.1.2": + "integrity" "sha1-yVLeIkD4EuvaCqgAbXd27irPfXQ=" + "resolved" "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz" + "version" "2.1.2" dependencies: - async ">=0.2.9" - which "^1.1.1" + "async" ">=0.2.9" + "which" "^1.1.1" -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== +"follow-redirects@1.5.10": + "integrity" "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==" + "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz" + "version" "1.5.10" dependencies: - debug "=3.1.0" + "debug" "=3.1.0" -forever-agent@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" - integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +"forever-agent@~0.6.1": + "integrity" "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + "resolved" "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + "version" "0.6.1" -form-data-encoder@1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/form-data-encoder/-/form-data-encoder-1.7.1.tgz#ac80660e4f87ee0d3d3c3638b7da8278ddb8ec96" - integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== +"form-data-encoder@1.7.1": + "integrity" "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==" + "resolved" "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz" + "version" "1.7.1" -form-data@4.0.0, form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== +"form-data@^3.0.0": + "integrity" "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==" + "resolved" "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" + "version" "3.0.1" dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" + "asynckit" "^0.4.0" + "combined-stream" "^1.0.8" + "mime-types" "^2.1.12" -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== +"form-data@^4.0.0", "form-data@4.0.0": + "integrity" "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==" + "resolved" "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" + "version" "4.0.0" dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" + "asynckit" "^0.4.0" + "combined-stream" "^1.0.8" + "mime-types" "^2.1.12" -form-data@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" - integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== +"form-data@~2.3.2": + "integrity" "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==" + "resolved" "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" + "version" "2.3.3" dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.6" - mime-types "^2.1.12" + "asynckit" "^0.4.0" + "combined-stream" "^1.0.6" + "mime-types" "^2.1.12" -formidable@^1.2.2: - version "1.2.6" - resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.6.tgz#d2a51d60162bbc9b4a055d8457a7c75315d1a168" - integrity sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ== +"formidable@^1.2.2": + "integrity" "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==" + "resolved" "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz" + "version" "1.2.6" -fs-capacitor@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-capacitor/-/fs-capacitor-7.0.1.tgz#351fa0224d74ae5ee17fdd165055082426ac60a3" - integrity sha512-YjxAAorsFA/pK3PTLuYJO+FlZ7wvGTIwGPbpGzVAJ+DUp6uof0zZjG6dcYsrGX864BMeUCj9R6lmkYZ5uY5lWQ== +"fs-capacitor@^7.0.1": + "integrity" "sha512-YjxAAorsFA/pK3PTLuYJO+FlZ7wvGTIwGPbpGzVAJ+DUp6uof0zZjG6dcYsrGX864BMeUCj9R6lmkYZ5uY5lWQ==" + "resolved" "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-7.0.1.tgz" + "version" "7.0.1" -fs-minipass@^1.2.7: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== +"fs-minipass@^1.2.7": + "integrity" "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==" + "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz" + "version" "1.2.7" dependencies: - minipass "^2.6.0" + "minipass" "^2.6.0" -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== +"fs-minipass@^2.0.0": + "integrity" "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==" + "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" + "version" "2.1.0" dependencies: - minipass "^3.0.0" + "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= +"fs.realpath@^1.0.0": + "integrity" "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "version" "1.0.0" -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -fstream@^1.0.0, fstream@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" - integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== +"fstream@^1.0.0", "fstream@^1.0.12": + "integrity" "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==" + "resolved" "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz" + "version" "1.0.12" dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" + "graceful-fs" "^4.1.2" + "inherits" "~2.0.0" + "mkdirp" ">=0.5 0" + "rimraf" "2" -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +"function-bind@^1.1.1": + "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + "version" "1.1.1" -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= +"functional-red-black-tree@^1.0.1": + "integrity" "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" + "resolved" "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" + "version" "1.0.1" -gauge@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-3.0.2.tgz#03bf4441c044383908bcfa0656ad91803259b395" - integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== +"gauge@^3.0.0": + "integrity" "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==" + "resolved" "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz" + "version" "3.0.2" dependencies: - aproba "^1.0.3 || ^2.0.0" - color-support "^1.1.2" - console-control-strings "^1.0.0" - has-unicode "^2.0.1" - object-assign "^4.1.1" - signal-exit "^3.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" - wide-align "^1.1.2" + "aproba" "^1.0.3 || ^2.0.0" + "color-support" "^1.1.2" + "console-control-strings" "^1.0.0" + "has-unicode" "^2.0.1" + "object-assign" "^4.1.1" + "signal-exit" "^3.0.0" + "string-width" "^4.2.3" + "strip-ansi" "^6.0.1" + "wide-align" "^1.1.2" -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= +"gauge@~2.7.3": + "integrity" "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=" + "resolved" "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz" + "version" "2.7.4" 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" + "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-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +"get-caller-file@^2.0.5": + "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + "version" "2.0.5" -get-intrinsic@^1.0.2: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== +"get-intrinsic@^1.0.2": + "integrity" "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==" + "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" + "version" "1.1.1" dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" + "function-bind" "^1.1.1" + "has" "^1.0.3" + "has-symbols" "^1.0.1" -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== +"get-stream@^4.1.0": + "integrity" "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" + "version" "4.1.0" dependencies: - pump "^3.0.0" + "pump" "^3.0.0" -get-stream@^5.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== +"get-stream@^5.0.0": + "integrity" "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" + "version" "5.2.0" dependencies: - pump "^3.0.0" + "pump" "^3.0.0" -get-stream@^6.0.0, get-stream@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-youtube-id@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-youtube-id/-/get-youtube-id-1.0.1.tgz#adb6f475e292d98f98ed5bfb530887656193e157" - integrity sha512-5yidLzoLXbtw82a/Wb7LrajkGn29BM6JuLWeHyNfzOGp1weGyW4+7eMz6cP23+etqj27VlOFtq8fFFDMLq/FXQ== - -getpass@^0.1.1: - version "0.1.7" - resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" - integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= +"get-stream@^5.1.0": + "integrity" "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" + "version" "5.2.0" dependencies: - assert-plus "^1.0.0" + "pump" "^3.0.0" -git-up@^4.0.0: - version "4.0.5" - resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.5.tgz#e7bb70981a37ea2fb8fe049669800a1f9a01d759" - integrity sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA== +"get-stream@^6.0.0", "get-stream@^6.0.1": + "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + "version" "6.0.1" + +"get-youtube-id@^1.0.1": + "integrity" "sha512-5yidLzoLXbtw82a/Wb7LrajkGn29BM6JuLWeHyNfzOGp1weGyW4+7eMz6cP23+etqj27VlOFtq8fFFDMLq/FXQ==" + "resolved" "https://registry.npmjs.org/get-youtube-id/-/get-youtube-id-1.0.1.tgz" + "version" "1.0.1" + +"getpass@^0.1.1": + "integrity" "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=" + "resolved" "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" + "version" "0.1.7" dependencies: - is-ssh "^1.3.0" - parse-url "^6.0.0" + "assert-plus" "^1.0.0" -git-url-parse@11.6.0: - version "11.6.0" - resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.6.0.tgz#c634b8de7faa66498a2b88932df31702c67df605" - integrity sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g== +"git-up@^4.0.0": + "integrity" "sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==" + "resolved" "https://registry.npmjs.org/git-up/-/git-up-4.0.5.tgz" + "version" "4.0.5" dependencies: - git-up "^4.0.0" + "is-ssh" "^1.3.0" + "parse-url" "^6.0.0" -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== +"git-url-parse@11.6.0": + "integrity" "sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g==" + "resolved" "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.6.0.tgz" + "version" "11.6.0" dependencies: - is-glob "^4.0.1" + "git-up" "^4.0.0" -glob@7.2.0, glob@^7.0.0, glob@^7.0.3, glob@^7.1.3: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== +"glob-parent@^5.1.2", "glob-parent@~5.1.2": + "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + "version" "5.1.2" 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" + "is-glob" "^4.0.1" -global-dirs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.0.tgz#70a76fe84ea315ab37b1f5576cbde7d48ef72686" - integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== +"glob@^7.0.0", "glob@^7.0.3", "glob@^7.1.3", "glob@7.2.0": + "integrity" "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" + "version" "7.2.0" dependencies: - ini "2.0.0" + "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" -globals@^13.6.0, globals@^13.9.0: - version "13.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.12.0.tgz#4d733760304230a0082ed96e21e5c565f898089e" - integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg== +"global-dirs@^3.0.0": + "integrity" "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==" + "resolved" "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz" + "version" "3.0.0" dependencies: - type-fest "^0.20.2" + "ini" "2.0.0" -globby@11.0.4, globby@^11.0.3: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== +"globals@^13.6.0", "globals@^13.9.0": + "integrity" "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==" + "resolved" "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz" + "version" "13.12.0" dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" + "type-fest" "^0.20.2" -got@11.8.3: - version "11.8.3" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.3.tgz#f496c8fdda5d729a90b4905d2b07dbd148170770" - integrity sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg== +"globby@^11.0.3", "globby@11.0.4": + "integrity" "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==" + "resolved" "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz" + "version" "11.0.4" dependencies: - "@sindresorhus/is" "^4.0.0" - "@szmarczak/http-timer" "^4.0.5" - "@types/cacheable-request" "^6.0.1" - "@types/responselike" "^1.0.0" - cacheable-lookup "^5.0.3" - cacheable-request "^7.0.2" - decompress-response "^6.0.0" - http2-wrapper "^1.0.0-beta.5.2" - lowercase-keys "^2.0.0" - p-cancelable "^2.0.0" - responselike "^2.0.0" + "array-union" "^2.1.0" + "dir-glob" "^3.0.1" + "fast-glob" "^3.1.1" + "ignore" "^5.1.4" + "merge2" "^1.3.0" + "slash" "^3.0.0" -got@^12.0.0: - version "12.0.0" - resolved "https://registry.yarnpkg.com/got/-/got-12.0.0.tgz#2ee3d5ff25eabc47dae975d376ddcee1d450bec1" - integrity sha512-gNNNghQ1yw0hyzie1FLK6gY90BQlXU9zSByyRygnbomHPruKQ6hAKKbpO1RfNZp8b+qNzNipGeRG3tUelKcVsA== +"got@^12.0.0": + "integrity" "sha512-gNNNghQ1yw0hyzie1FLK6gY90BQlXU9zSByyRygnbomHPruKQ6hAKKbpO1RfNZp8b+qNzNipGeRG3tUelKcVsA==" + "resolved" "https://registry.npmjs.org/got/-/got-12.0.0.tgz" + "version" "12.0.0" dependencies: "@sindresorhus/is" "^4.2.0" "@szmarczak/http-timer" "^5.0.1" "@types/cacheable-request" "^6.0.2" "@types/responselike" "^1.0.0" - cacheable-lookup "^6.0.4" - cacheable-request "^7.0.2" - decompress-response "^6.0.0" - form-data-encoder "1.7.1" - get-stream "^6.0.1" - http2-wrapper "^2.1.9" - lowercase-keys "^3.0.0" - p-cancelable "^3.0.0" - responselike "^2.0.0" + "cacheable-lookup" "^6.0.4" + "cacheable-request" "^7.0.2" + "decompress-response" "^6.0.0" + "form-data-encoder" "1.7.1" + "get-stream" "^6.0.1" + "http2-wrapper" "^2.1.9" + "lowercase-keys" "^3.0.0" + "p-cancelable" "^3.0.0" + "responselike" "^2.0.0" -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== +"got@^9.6.0": + "integrity" "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==" + "resolved" "https://registry.npmjs.org/got/-/got-9.6.0.tgz" + "version" "9.6.0" 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" + "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: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== - -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - -har-schema@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" - integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= - -har-validator@~5.1.3: - version "5.1.5" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" - integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== +"got@11.8.3": + "integrity" "sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg==" + "resolved" "https://registry.npmjs.org/got/-/got-11.8.3.tgz" + "version" "11.8.3" dependencies: - ajv "^6.12.3" - har-schema "^2.0.0" + "@sindresorhus/is" "^4.0.0" + "@szmarczak/http-timer" "^4.0.5" + "@types/cacheable-request" "^6.0.1" + "@types/responselike" "^1.0.0" + "cacheable-lookup" "^5.0.3" + "cacheable-request" "^7.0.2" + "decompress-response" "^6.0.0" + "http2-wrapper" "^1.0.0-beta.5.2" + "lowercase-keys" "^2.0.0" + "p-cancelable" "^2.0.0" + "responselike" "^2.0.0" -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= +"graceful-fs@^4.1.2": + "integrity" "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz" + "version" "4.2.8" -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== +"grapheme-splitter@^1.0.4": + "integrity" "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + "resolved" "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" + "version" "1.0.4" -has-symbols@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== +"har-schema@^2.0.0": + "integrity" "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" + "resolved" "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" + "version" "2.0.0" -has-unicode@^2.0.0, has-unicode@^2.0.1: - 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== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== +"har-validator@~5.1.3": + "integrity" "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==" + "resolved" "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" + "version" "5.1.5" dependencies: - function-bind "^1.1.1" + "ajv" "^6.12.3" + "har-schema" "^2.0.0" -hasha@^5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" - integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== +"has-flag@^3.0.0": + "integrity" "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + "version" "3.0.0" + +"has-flag@^4.0.0": + "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + "version" "4.0.0" + +"has-symbols@^1.0.1": + "integrity" "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz" + "version" "1.0.2" + +"has-unicode@^2.0.0", "has-unicode@^2.0.1": + "integrity" "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "resolved" "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" + "version" "2.0.1" + +"has-yarn@^2.1.0": + "integrity" "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" + "resolved" "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz" + "version" "2.1.0" + +"has@^1.0.3": + "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" + "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + "version" "1.0.3" dependencies: - is-stream "^2.0.0" - type-fest "^0.8.0" + "function-bind" "^1.1.1" -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-signature@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" - integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= +"hasha@^5.2.2": + "integrity" "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==" + "resolved" "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz" + "version" "5.2.2" dependencies: - assert-plus "^1.0.0" - jsprim "^1.2.2" - sshpk "^1.7.0" + "is-stream" "^2.0.0" + "type-fest" "^0.8.0" -http2-wrapper@^1.0.0-beta.5.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" - integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== +"http-cache-semantics@^4.0.0": + "integrity" "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + "resolved" "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" + "version" "4.1.0" + +"http-signature@~1.2.0": + "integrity" "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=" + "resolved" "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" + "version" "1.2.0" dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.0.0" + "assert-plus" "^1.0.0" + "jsprim" "^1.2.2" + "sshpk" "^1.7.0" -http2-wrapper@^2.1.9: - version "2.1.10" - resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-2.1.10.tgz#307cd0cee2564723692ad34c2d570d12f10e83be" - integrity sha512-QHgsdYkieKp+6JbXP25P+tepqiHYd+FVnDwXpxi/BlUcoIB0nsmTOymTNvETuTO+pDuwcSklPE72VR3DqV+Haw== +"http2-wrapper@^1.0.0-beta.5.2": + "integrity" "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==" + "resolved" "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz" + "version" "1.0.3" dependencies: - quick-lru "^5.1.1" - resolve-alpn "^1.2.0" + "quick-lru" "^5.1.1" + "resolve-alpn" "^1.0.0" -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== +"http2-wrapper@^2.1.9": + "integrity" "sha512-QHgsdYkieKp+6JbXP25P+tepqiHYd+FVnDwXpxi/BlUcoIB0nsmTOymTNvETuTO+pDuwcSklPE72VR3DqV+Haw==" + "resolved" "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.1.10.tgz" + "version" "2.1.10" dependencies: - agent-base "6" - debug "4" + "quick-lru" "^5.1.1" + "resolve-alpn" "^1.2.0" -human-signals@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" - integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -husky@^4.3.8: - version "4.3.8" - resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.8.tgz#31144060be963fd6850e5cc8f019a1dfe194296d" - integrity sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow== +"https-proxy-agent@^5.0.0": + "integrity" "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==" + "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz" + "version" "5.0.0" dependencies: - chalk "^4.0.0" - ci-info "^2.0.0" - compare-versions "^3.6.0" - cosmiconfig "^7.0.0" - find-versions "^4.0.0" - opencollective-postinstall "^2.0.2" - pkg-dir "^5.0.0" - please-upgrade-node "^3.2.0" - slash "^3.0.0" - which-pm-runs "^1.0.0" + "agent-base" "6" + "debug" "4" -iconv-lite@^0.4.24, 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== +"human-signals@^1.1.1": + "integrity" "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" + "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz" + "version" "1.1.1" + +"human-signals@^2.1.0": + "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + "version" "2.1.0" + +"husky@^4.3.8": + "integrity" "sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==" + "resolved" "https://registry.npmjs.org/husky/-/husky-4.3.8.tgz" + "version" "4.3.8" dependencies: - safer-buffer ">= 2.1.2 < 3" + "chalk" "^4.0.0" + "ci-info" "^2.0.0" + "compare-versions" "^3.6.0" + "cosmiconfig" "^7.0.0" + "find-versions" "^4.0.0" + "opencollective-postinstall" "^2.0.2" + "pkg-dir" "^5.0.0" + "please-upgrade-node" "^3.2.0" + "slash" "^3.0.0" + "which-pm-runs" "^1.0.0" -ieee754@^1.1.13, ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -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.4" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" - integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== +"iconv-lite@^0.4.24", "iconv-lite@^0.4.4": + "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" + "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + "version" "0.4.24" dependencies: - minimatch "^3.0.4" + "safer-buffer" ">= 2.1.2 < 3" -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== +"ieee754@^1.1.13", "ieee754@^1.2.1": + "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + "version" "1.2.1" -ignore@^5.1.4, ignore@^5.1.8: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== +"ignore-by-default@^1.0.1": + "integrity" "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" + "resolved" "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz" + "version" "1.0.1" -import-cwd@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-cwd/-/import-cwd-3.0.0.tgz#20845547718015126ea9b3676b7592fb8bd4cf92" - integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== +"ignore-walk@^3.0.1": + "integrity" "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==" + "resolved" "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz" + "version" "3.0.4" dependencies: - import-from "^3.0.0" + "minimatch" "^3.0.4" -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== +"ignore@^4.0.6": + "integrity" "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + "resolved" "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" + "version" "4.0.6" + +"ignore@^5.1.4", "ignore@^5.1.8": + "integrity" "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" + "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" + "version" "5.2.0" + +"import-cwd@3.0.0": + "integrity" "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==" + "resolved" "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz" + "version" "3.0.0" dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" + "import-from" "^3.0.0" -import-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" - integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== +"import-fresh@^3.0.0", "import-fresh@^3.2.1": + "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" + "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + "version" "3.3.0" dependencies: - resolve-from "^5.0.0" + "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= - -inflection@1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.13.1.tgz#c5cadd80888a90cf84c2e96e340d7edc85d5f0cb" - integrity sha512-dldYtl2WlN0QDkIDtg8+xFwOS2Tbmp12t1cHa5/YClU6ZQjTFm7B66UcVbh9NQB+HvT5BAd2t5+yKsBkw5pcqA== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= +"import-from@^3.0.0": + "integrity" "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==" + "resolved" "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz" + "version" "3.0.0" dependencies: - once "^1.3.0" - wrappy "1" + "resolve-from" "^5.0.0" -inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, 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== +"import-lazy@^2.1.0": + "integrity" "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + "resolved" "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz" + "version" "2.1.0" -ini@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" - integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== +"imurmurhash@^0.1.4": + "integrity" "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + "version" "0.1.4" -ini@~1.3.0: - version "1.3.8" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" - integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== +"inflection@1.13.1": + "integrity" "sha512-dldYtl2WlN0QDkIDtg8+xFwOS2Tbmp12t1cHa5/YClU6ZQjTFm7B66UcVbh9NQB+HvT5BAd2t5+yKsBkw5pcqA==" + "resolved" "https://registry.npmjs.org/inflection/-/inflection-1.13.1.tgz" + "version" "1.13.1" -inquirer@8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.0.tgz#f44f008dd344bbfc4b30031f45d984e034a3ac3a" - integrity sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ== +"inflight@^1.0.4": + "integrity" "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" + "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + "version" "1.0.6" dependencies: - ansi-escapes "^4.2.1" - chalk "^4.1.1" - cli-cursor "^3.1.0" - cli-width "^3.0.0" - external-editor "^3.0.3" - figures "^3.0.0" - lodash "^4.17.21" - mute-stream "0.0.8" - ora "^5.4.1" - run-async "^2.4.0" - rxjs "^7.2.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - through "^2.3.6" + "once" "^1.3.0" + "wrappy" "1" -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== +"inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.0", "inherits@~2.0.3", "inherits@2": + "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + "version" "2.0.4" -inversify@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/inversify/-/inversify-6.0.1.tgz#b20d35425d5d8c5cd156120237aad0008d969f02" - integrity sha512-B3ex30927698TJENHR++8FfEaJGqoWOgI6ZY5Ht/nLUsFCwHn6akbwtnUAPCgUepAnTpe2qHxhDNjoKLyz6rgQ== +"ini@~1.3.0": + "integrity" "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "resolved" "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + "version" "1.3.8" -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +"ini@2.0.0": + "integrity" "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" + "resolved" "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" + "version" "2.0.0" -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== +"inquirer@8.2.0": + "integrity" "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==" + "resolved" "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz" + "version" "8.2.0" dependencies: - binary-extensions "^2.0.0" + "ansi-escapes" "^4.2.1" + "chalk" "^4.1.1" + "cli-cursor" "^3.1.0" + "cli-width" "^3.0.0" + "external-editor" "^3.0.3" + "figures" "^3.0.0" + "lodash" "^4.17.21" + "mute-stream" "0.0.8" + "ora" "^5.4.1" + "run-async" "^2.4.0" + "rxjs" "^7.2.0" + "string-width" "^4.1.0" + "strip-ansi" "^6.0.0" + "through" "^2.3.6" -is-ci@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" - integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== +"interpret@^1.0.0": + "integrity" "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + "resolved" "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" + "version" "1.4.0" + +"inversify@^6.0.1": + "integrity" "sha512-B3ex30927698TJENHR++8FfEaJGqoWOgI6ZY5Ht/nLUsFCwHn6akbwtnUAPCgUepAnTpe2qHxhDNjoKLyz6rgQ==" + "resolved" "https://registry.npmjs.org/inversify/-/inversify-6.0.1.tgz" + "version" "6.0.1" + +"is-arrayish@^0.2.1": + "integrity" "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + "version" "0.2.1" + +"is-binary-path@~2.1.0": + "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" + "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + "version" "2.1.0" dependencies: - ci-info "^3.2.0" + "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== +"is-ci@^2.0.0": + "integrity" "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==" + "resolved" "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" + "version" "2.0.0" dependencies: - ci-info "^2.0.0" + "ci-info" "^2.0.0" -is-core-module@^2.2.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" - integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== +"is-ci@3.0.1": + "integrity" "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==" + "resolved" "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz" + "version" "3.0.1" dependencies: - has "^1.0.3" + "ci-info" "^3.2.0" -is-docker@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -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= +"is-core-module@^2.2.0": + "integrity" "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==" + "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz" + "version" "2.8.0" dependencies: - number-is-nan "^1.0.0" + "has" "^1.0.3" -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-docker@^2.0.0": + "integrity" "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" + "resolved" "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + "version" "2.2.1" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== +"is-extglob@^2.1.1": + "integrity" "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + "version" "2.1.1" + +"is-fullwidth-code-point@^1.0.0": + "integrity" "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" + "version" "1.0.0" dependencies: - is-extglob "^2.1.1" + "number-is-nan" "^1.0.0" -is-installed-globally@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" - integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== +"is-fullwidth-code-point@^3.0.0": + "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + "version" "3.0.0" + +"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@~4.0.1": + "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" + "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + "version" "4.0.3" dependencies: - global-dirs "^3.0.0" - is-path-inside "^3.0.2" + "is-extglob" "^2.1.1" -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== - -is-interactive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-2.0.0.tgz#40c57614593826da1100ade6059778d597f16e90" - integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ== - -is-npm@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" - integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== - -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.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - -is-ssh@^1.3.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.3.tgz#7f133285ccd7f2c2c7fc897b771b53d95a2b2c7e" - integrity sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ== +"is-installed-globally@^0.4.0": + "integrity" "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==" + "resolved" "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" + "version" "0.4.0" dependencies: - protocols "^1.1.0" + "global-dirs" "^3.0.0" + "is-path-inside" "^3.0.2" -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== +"is-interactive@^1.0.0": + "integrity" "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" + "resolved" "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + "version" "1.0.0" -is-typedarray@^1.0.0, 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-interactive@^2.0.0": + "integrity" "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==" + "resolved" "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz" + "version" "2.0.0" -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== +"is-npm@^5.0.0": + "integrity" "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" + "resolved" "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz" + "version" "5.0.0" -is-unicode-supported@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.1.0.tgz#9127b71f9fa82f52ca5c20e982e7bec0ee31ee1e" - integrity sha512-lDcxivp8TJpLG75/DpatAqNzOpDPSpED8XNtrpBHTdQ2InQ1PbW78jhwSxyxhhu+xbVSast2X38bwj8atwoUQA== +"is-number@^7.0.0": + "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + "version" "7.0.0" -is-wsl@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== +"is-obj@^2.0.0": + "integrity" "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" + "version" "2.0.0" + +"is-path-inside@^3.0.2": + "integrity" "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + "version" "3.0.3" + +"is-plain-object@^5.0.0": + "integrity" "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" + "version" "5.0.0" + +"is-ssh@^1.3.0": + "integrity" "sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ==" + "resolved" "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.3.tgz" + "version" "1.3.3" dependencies: - is-docker "^2.0.0" + "protocols" "^1.1.0" -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== +"is-stream@^2.0.0": + "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + "version" "2.0.1" -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= +"is-typedarray@^1.0.0", "is-typedarray@~1.0.0": + "integrity" "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "resolved" "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + "version" "1.0.0" -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= +"is-unicode-supported@^0.1.0": + "integrity" "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + "version" "0.1.0" -iso8601-duration@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/iso8601-duration/-/iso8601-duration-1.3.0.tgz#29d7b69e0574e4acdee50c5e5e09adab4137ba5a" - integrity sha512-K4CiUBzo3YeWk76FuET/dQPH03WE04R94feo5TSKQCXpoXQt9E4yx2CnY737QZnSAI3PI4WlKo/zfqizGx52QQ== +"is-unicode-supported@^1.1.0": + "integrity" "sha512-lDcxivp8TJpLG75/DpatAqNzOpDPSpED8XNtrpBHTdQ2InQ1PbW78jhwSxyxhhu+xbVSast2X38bwj8atwoUQA==" + "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.1.0.tgz" + "version" "1.1.0" -isstream@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" - integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= - -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.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== +"is-wsl@^2.1.1": + "integrity" "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==" + "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + "version" "2.2.0" dependencies: - argparse "^1.0.7" - esprima "^4.0.0" + "is-docker" "^2.0.0" -jsbn@~0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" - integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= +"is-yarn-global@^0.3.0": + "integrity" "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + "resolved" "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz" + "version" "0.3.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= +"isarray@~1.0.0": + "integrity" "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "version" "1.0.0" -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== +"isexe@^2.0.0": + "integrity" "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + "version" "2.0.0" -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== +"iso8601-duration@^1.3.0": + "integrity" "sha512-K4CiUBzo3YeWk76FuET/dQPH03WE04R94feo5TSKQCXpoXQt9E4yx2CnY737QZnSAI3PI4WlKo/zfqizGx52QQ==" + "resolved" "https://registry.npmjs.org/iso8601-duration/-/iso8601-duration-1.3.0.tgz" + "version" "1.3.0" -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== +"isstream@~0.1.2": + "integrity" "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + "resolved" "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + "version" "0.1.2" -json-schema-traverse@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" - integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== +"js-tokens@^4.0.0": + "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + "version" "4.0.0" -json-schema@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" - integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== - -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= - -json-stringify-safe@~5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" - integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= - -jsprim@^1.2.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" - integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== +"js-yaml@^3.13.1": + "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + "version" "3.14.1" dependencies: - assert-plus "1.0.0" - extsprintf "1.3.0" - json-schema "0.4.0" - verror "1.10.0" + "argparse" "^1.0.7" + "esprima" "^4.0.0" -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== +"jsbn@~0.1.0": + "integrity" "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + "resolved" "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + "version" "0.1.1" + +"json-buffer@3.0.0": + "integrity" "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" + "version" "3.0.0" + +"json-buffer@3.0.1": + "integrity" "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" + "version" "3.0.1" + +"json-parse-even-better-errors@^2.3.0": + "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + "version" "2.3.1" + +"json-schema-traverse@^0.4.1": + "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + "version" "0.4.1" + +"json-schema-traverse@^1.0.0": + "integrity" "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + "version" "1.0.0" + +"json-schema@0.4.0": + "integrity" "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + "resolved" "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" + "version" "0.4.0" + +"json-stable-stringify-without-jsonify@^1.0.1": + "integrity" "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + "version" "1.0.1" + +"json-stringify-safe@~5.0.1": + "integrity" "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + "version" "5.0.1" + +"jsprim@^1.2.2": + "integrity" "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==" + "resolved" "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" + "version" "1.4.2" dependencies: - json-buffer "3.0.0" + "assert-plus" "1.0.0" + "extsprintf" "1.3.0" + "json-schema" "0.4.0" + "verror" "1.10.0" -keyv@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.4.tgz#f040b236ea2b06ed15ed86fbef8407e1a1c8e376" - integrity sha512-vqNHbAc8BBsxk+7QBYLW0Y219rWcClspR6WSeoHYKG5mnsSoOH+BL1pWq02DDCVdvvuUny5rkBlzMRzoqc+GIg== +"keyv@^3.0.0": + "integrity" "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==" + "resolved" "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" + "version" "3.1.0" dependencies: - json-buffer "3.0.1" + "json-buffer" "3.0.0" -latest-version@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-5.1.0.tgz#119dfe908fe38d15dfa43ecd13fa12ec8832face" - integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== +"keyv@^4.0.0": + "integrity" "sha512-vqNHbAc8BBsxk+7QBYLW0Y219rWcClspR6WSeoHYKG5mnsSoOH+BL1pWq02DDCVdvvuUny5rkBlzMRzoqc+GIg==" + "resolved" "https://registry.npmjs.org/keyv/-/keyv-4.0.4.tgz" + "version" "4.0.4" dependencies: - package-json "^6.3.0" + "json-buffer" "3.0.1" -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== +"latest-version@^5.1.0": + "integrity" "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==" + "resolved" "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" + "version" "5.1.0" dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" + "package-json" "^6.3.0" -libsodium-wrappers@^0.7.9: - version "0.7.9" - resolved "https://registry.yarnpkg.com/libsodium-wrappers/-/libsodium-wrappers-0.7.9.tgz#4ffc2b69b8f7c7c7c5594a93a4803f80f6d0f346" - integrity sha512-9HaAeBGk1nKTRFRHkt7nzxqCvnkWTjn1pdjKgcUnZxj0FyOP4CnhgFhMdrFfgNsukijBGyBLpP2m2uKT1vuWhQ== +"levn@^0.4.1": + "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" + "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + "version" "0.4.1" dependencies: - libsodium "^0.7.0" + "prelude-ls" "^1.2.1" + "type-check" "~0.4.0" -libsodium@^0.7.0: - version "0.7.9" - resolved "https://registry.yarnpkg.com/libsodium/-/libsodium-0.7.9.tgz#4bb7bcbf662ddd920d8795c227ae25bbbfa3821b" - integrity sha512-gfeADtR4D/CM0oRUviKBViMGXZDgnFdMKMzHsvBdqLBHd9ySi6EtYnmuhHVDDYgYpAO8eU8hEY+F8vIUAPh08A== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== +"libsodium-wrappers@^0.7.9": + "integrity" "sha512-9HaAeBGk1nKTRFRHkt7nzxqCvnkWTjn1pdjKgcUnZxj0FyOP4CnhgFhMdrFfgNsukijBGyBLpP2m2uKT1vuWhQ==" + "resolved" "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.9.tgz" + "version" "0.7.9" dependencies: - p-locate "^5.0.0" + "libsodium" "^0.7.0" -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= +"libsodium@^0.7.0": + "integrity" "sha512-gfeADtR4D/CM0oRUviKBViMGXZDgnFdMKMzHsvBdqLBHd9ySi6EtYnmuhHVDDYgYpAO8eU8hEY+F8vIUAPh08A==" + "resolved" "https://registry.npmjs.org/libsodium/-/libsodium-0.7.9.tgz" + "version" "0.7.9" -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +"lines-and-columns@^1.1.6": + "integrity" "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + "version" "1.2.4" -lodash.truncate@^4.4.2: - version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" - integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= - -lodash@4.17.21, lodash@^4.17.20, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== +"locate-path@^6.0.0": + "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + "version" "6.0.0" dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" + "p-locate" "^5.0.0" -log-symbols@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-5.1.0.tgz#a20e3b9a5f53fac6aeb8e2bb22c07cf2c8f16d93" - integrity sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA== +"lodash.isequal@^4.5.0": + "integrity" "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" + "resolved" "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" + "version" "4.5.0" + +"lodash.merge@^4.6.2": + "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + "version" "4.6.2" + +"lodash.truncate@^4.4.2": + "integrity" "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=" + "resolved" "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" + "version" "4.4.2" + +"lodash@^4.17.20", "lodash@^4.17.21", "lodash@4.17.21": + "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + "version" "4.17.21" + +"log-symbols@^4.1.0": + "integrity" "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==" + "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + "version" "4.1.0" dependencies: - chalk "^5.0.0" - is-unicode-supported "^1.1.0" + "chalk" "^4.1.0" + "is-unicode-supported" "^0.1.0" -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== - -lowercase-keys@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-3.0.0.tgz#c5e7d442e37ead247ae9db117a9d0a467c89d4f2" - integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== +"log-symbols@^5.0.0": + "integrity" "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==" + "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz" + "version" "5.1.0" dependencies: - yallist "^4.0.0" + "chalk" "^5.0.0" + "is-unicode-supported" "^1.1.0" -m3u8stream@^0.8.4: - version "0.8.4" - resolved "https://registry.yarnpkg.com/m3u8stream/-/m3u8stream-0.8.4.tgz#15b49d0c2b510755ea43c1e53f85d7aaa4dc65c2" - integrity sha512-sco80Db+30RvcaIOndenX6E6oQNgTiBKeJbFPc+yDXwPQIkryfboEbCvXPlBRq3mQTCVPQO93TDVlfRwqpD35w== +"lowercase-keys@^1.0.0", "lowercase-keys@^1.0.1": + "integrity" "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" + "version" "1.0.1" + +"lowercase-keys@^2.0.0": + "integrity" "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" + "version" "2.0.0" + +"lowercase-keys@^3.0.0": + "integrity" "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==" + "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz" + "version" "3.0.0" + +"lru-cache@^6.0.0": + "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + "version" "6.0.0" dependencies: - miniget "^4.0.0" - sax "^1.2.4" + "yallist" "^4.0.0" -macos-release@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.5.0.tgz#067c2c88b5f3fb3c56a375b2ec93826220fa1ff2" - integrity sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g== - -make-dir@^3.0.0, make-dir@^3.1.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== +"m3u8stream@^0.8.4": + "integrity" "sha512-sco80Db+30RvcaIOndenX6E6oQNgTiBKeJbFPc+yDXwPQIkryfboEbCvXPlBRq3mQTCVPQO93TDVlfRwqpD35w==" + "resolved" "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.4.tgz" + "version" "0.8.4" dependencies: - semver "^6.0.0" + "miniget" "^4.0.0" + "sax" "^1.2.4" -make-error@^1.1.1: - version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" - integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +"macos-release@^2.5.0": + "integrity" "sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==" + "resolved" "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz" + "version" "2.5.0" -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -methods@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= - -micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== +"make-dir@^3.0.0", "make-dir@^3.1.0": + "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" + "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + "version" "3.1.0" dependencies: - braces "^3.0.1" - picomatch "^2.2.3" + "semver" "^6.0.0" -mime-db@1.51.0: - version "1.51.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.51.0.tgz#d9ff62451859b18342d960850dc3cfb77e63fb0c" - integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== +"make-error@^1.1.1": + "integrity" "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" + "resolved" "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + "version" "1.3.6" -mime-types@2.1.34, mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.34" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.34.tgz#5a712f9ec1503511a945803640fafe09d3793c24" - integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== +"merge-stream@^2.0.0": + "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + "version" "2.0.0" + +"merge2@^1.3.0": + "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + "version" "1.4.1" + +"methods@^1.1.2": + "integrity" "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + "version" "1.1.2" + +"micromatch@^4.0.4": + "integrity" "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==" + "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz" + "version" "4.0.4" dependencies: - mime-db "1.51.0" + "braces" "^3.0.1" + "picomatch" "^2.2.3" -mime@^2.4.6: - version "2.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" - integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== +"mime-db@1.51.0": + "integrity" "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" + "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz" + "version" "1.51.0" -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -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== - -mimic-response@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-3.1.0.tgz#2d1d59af9c1b129815accc2c46a022a5ce1fa3c9" - integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== - -miniget@^4.0.0, miniget@^4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/miniget/-/miniget-4.2.1.tgz#11a1c24817a059e292378eb9cff4328d9240c665" - integrity sha512-O/DduzDR6f+oDtVype9S/Qu5hhnx73EDYGyZKwU/qN82lehFZdfhoa4DT51SpsO+8epYrB3gcRmws56ROfTIoQ== - -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== +"mime-types@^2.1.12", "mime-types@~2.1.19", "mime-types@2.1.34": + "integrity" "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==" + "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz" + "version" "2.1.34" dependencies: - brace-expansion "^1.1.7" + "mime-db" "1.51.0" -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== +"mime@^2.4.6": + "integrity" "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" + "resolved" "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" + "version" "2.6.0" -minipass@^2.6.0, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== +"mimic-fn@^2.1.0": + "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + "version" "2.1.0" + +"mimic-response@^1.0.0", "mimic-response@^1.0.1": + "integrity" "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" + "version" "1.0.1" + +"mimic-response@^3.1.0": + "integrity" "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" + "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" + "version" "3.1.0" + +"miniget@^4.0.0", "miniget@^4.2.1": + "integrity" "sha512-O/DduzDR6f+oDtVype9S/Qu5hhnx73EDYGyZKwU/qN82lehFZdfhoa4DT51SpsO+8epYrB3gcRmws56ROfTIoQ==" + "resolved" "https://registry.npmjs.org/miniget/-/miniget-4.2.1.tgz" + "version" "4.2.1" + +"minimatch@^3.0.4": + "integrity" "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" + "version" "3.0.4" dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" + "brace-expansion" "^1.1.7" -minipass@^3.0.0: - version "3.1.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.6.tgz#3b8150aa688a711a1521af5e8779c1d3bb4f45ee" - integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== +"minimist@^1.2.0", "minimist@^1.2.5": + "integrity" "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" + "version" "1.2.5" + +"minipass@^2.6.0", "minipass@^2.9.0": + "integrity" "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==" + "resolved" "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz" + "version" "2.9.0" dependencies: - yallist "^4.0.0" + "safe-buffer" "^5.1.2" + "yallist" "^3.0.0" -minizlib@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== +"minipass@^3.0.0": + "integrity" "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==" + "resolved" "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz" + "version" "3.1.6" dependencies: - minipass "^2.9.0" + "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== +"minizlib@^1.3.3": + "integrity" "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==" + "resolved" "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz" + "version" "1.3.3" dependencies: - minipass "^3.0.0" - yallist "^4.0.0" + "minipass" "^2.9.0" -"mkdirp@>=0.5 0", mkdirp@^0.5.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== +"minizlib@^2.1.1": + "integrity" "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==" + "resolved" "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" + "version" "2.1.2" dependencies: - minimist "^1.2.5" + "minipass" "^3.0.0" + "yallist" "^4.0.0" -mkdirp@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -moment-timezone@^0.5.31: - version "0.5.34" - resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.34.tgz#a75938f7476b88f155d3504a9343f7519d9a405c" - integrity sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg== +"mkdirp@^0.5.0", "mkdirp@^0.5.1", "mkdirp@^0.5.5", "mkdirp@>=0.5 0": + "integrity" "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" + "version" "0.5.5" dependencies: - moment ">= 2.9.0" + "minimist" "^1.2.5" -"moment@>= 2.9.0", moment@^2.26.0: - version "2.29.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" - integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== +"mkdirp@^1.0.3": + "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + "version" "1.0.4" -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: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - -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.2.1: - version "2.9.1" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.9.1.tgz#22d1dffbe3490c2b83e301f7709b6736cd8f2684" - integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ== +"moment-timezone@^0.5.31": + "integrity" "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==" + "resolved" "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz" + "version" "0.5.34" dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" + "moment" ">= 2.9.0" -new-github-release-url@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/new-github-release-url/-/new-github-release-url-1.0.0.tgz#493847e6fecce39c247e9d89929be773d2e7f777" - integrity sha512-dle7yf655IMjyFUqn6Nxkb18r4AOAkzRcgcZv6WZ0IqrOH4QCEZ8Sm6I7XX21zvHdBeeMeTkhR9qT2Z0EJDx6A== +"moment@^2.26.0", "moment@>= 2.9.0": + "integrity" "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" + "resolved" "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz" + "version" "2.29.1" + +"ms@^2.1.1", "ms@2.1.2": + "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + "version" "2.1.2" + +"ms@2.0.0": + "integrity" "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + "version" "2.0.0" + +"mute-stream@0.0.8": + "integrity" "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + "resolved" "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" + "version" "0.0.8" + +"natural-compare@^1.4.0": + "integrity" "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + "version" "1.4.0" + +"needle@^2.2.1": + "integrity" "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==" + "resolved" "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz" + "version" "2.9.1" dependencies: - type-fest "^0.4.1" + "debug" "^3.2.6" + "iconv-lite" "^0.4.4" + "sax" "^1.2.4" -node-addon-api@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" - integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== - -node-addon-api@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-4.2.0.tgz#117cbb5a959dff0992e1c586ae0393573e4d2a87" - integrity sha512-eazsqzwG2lskuzBqCGPi7Ac2UgOoMz8JVOXVhTvvPDYhthvNpefx8jWD8Np7Gv+2Sz0FlPWZk0nJV0z598Wn8Q== - -node-emoji@^1.10.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" - integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== +"new-github-release-url@1.0.0": + "integrity" "sha512-dle7yf655IMjyFUqn6Nxkb18r4AOAkzRcgcZv6WZ0IqrOH4QCEZ8Sm6I7XX21zvHdBeeMeTkhR9qT2Z0EJDx6A==" + "resolved" "https://registry.npmjs.org/new-github-release-url/-/new-github-release-url-1.0.0.tgz" + "version" "1.0.0" dependencies: - lodash "^4.17.21" + "type-fest" "^0.4.1" -node-fetch@^2.6.1, node-fetch@^2.6.5: - version "2.6.6" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.6.tgz#1751a7c01834e8e1697758732e9efb6eeadfaf89" - integrity sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA== - dependencies: - whatwg-url "^5.0.0" +"node-addon-api@^3.0.0": + "integrity" "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" + "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz" + "version" "3.2.1" -node-gyp@3.x: - version "3.8.0" - resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-3.8.0.tgz#540304261c330e80d0d5edce253a68cb3964218c" - integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== - dependencies: - fstream "^1.0.0" - glob "^7.0.3" - graceful-fs "^4.1.2" - mkdirp "^0.5.0" - nopt "2 || 3" - npmlog "0 || 1 || 2 || 3 || 4" - osenv "0" - request "^2.87.0" - rimraf "2" - semver "~5.3.0" - tar "^2.0.0" - which "1" +"node-addon-api@^3.2.1": + "integrity" "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" + "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz" + "version" "3.2.1" -node-pre-gyp@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz#db1f33215272f692cd38f03238e3e9b47c5dd054" - integrity sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4" +"node-addon-api@^4.2.0": + "integrity" "sha512-eazsqzwG2lskuzBqCGPi7Ac2UgOoMz8JVOXVhTvvPDYhthvNpefx8jWD8Np7Gv+2Sz0FlPWZk0nJV0z598Wn8Q==" + "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.2.0.tgz" + "version" "4.2.0" -nodemon@^2.0.7: - version "2.0.15" - resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-2.0.15.tgz#504516ce3b43d9dc9a955ccd9ec57550a31a8d4e" - integrity sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA== +"node-emoji@^1.10.0": + "integrity" "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==" + "resolved" "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" + "version" "1.11.0" dependencies: - chokidar "^3.5.2" - debug "^3.2.7" - ignore-by-default "^1.0.1" - minimatch "^3.0.4" - pstree.remy "^1.1.8" - semver "^5.7.1" - supports-color "^5.5.0" - touch "^3.1.0" - undefsafe "^2.0.5" - update-notifier "^5.1.0" + "lodash" "^4.17.21" -nodesplash@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/nodesplash/-/nodesplash-0.1.1.tgz#b3f876e7be6366f2fffb814d02de6baf2db1158a" - integrity sha512-V5yqmtR9ovc0PAUVIisaV0H1WL7tgZOVuiniJaDNP/DZHYybwaPw5wm6Jkx/0M0j13JcDW1NsAxxuv2DtngCPQ== +"node-fetch@^2.6.1", "node-fetch@^2.6.5": + "integrity" "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==" + "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz" + "version" "2.6.6" dependencies: - grapheme-splitter "^1.0.4" + "whatwg-url" "^5.0.0" + +"node-gyp@3.x": + "integrity" "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==" + "resolved" "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz" + "version" "3.8.0" + dependencies: + "fstream" "^1.0.0" + "glob" "^7.0.3" + "graceful-fs" "^4.1.2" + "mkdirp" "^0.5.0" + "nopt" "2 || 3" + "npmlog" "0 || 1 || 2 || 3 || 4" + "osenv" "0" + "request" "^2.87.0" + "rimraf" "2" + "semver" "~5.3.0" + "tar" "^2.0.0" + "which" "1" + +"node-pre-gyp@^0.11.0": + "integrity" "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==" + "resolved" "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz" + "version" "0.11.0" + dependencies: + "detect-libc" "^1.0.2" + "mkdirp" "^0.5.1" + "needle" "^2.2.1" + "nopt" "^4.0.1" + "npm-packlist" "^1.1.6" + "npmlog" "^4.0.2" + "rc" "^1.2.7" + "rimraf" "^2.6.1" + "semver" "^5.3.0" + "tar" "^4" + +"nodemon@^2.0.7": + "integrity" "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==" + "resolved" "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz" + "version" "2.0.15" + dependencies: + "chokidar" "^3.5.2" + "debug" "^3.2.7" + "ignore-by-default" "^1.0.1" + "minimatch" "^3.0.4" + "pstree.remy" "^1.1.8" + "semver" "^5.7.1" + "supports-color" "^5.5.0" + "touch" "^3.1.0" + "undefsafe" "^2.0.5" + "update-notifier" "^5.1.0" + +"nodesplash@^0.1.1": + "integrity" "sha512-V5yqmtR9ovc0PAUVIisaV0H1WL7tgZOVuiniJaDNP/DZHYybwaPw5wm6Jkx/0M0j13JcDW1NsAxxuv2DtngCPQ==" + "resolved" "https://registry.npmjs.org/nodesplash/-/nodesplash-0.1.1.tgz" + "version" "0.1.1" + dependencies: + "grapheme-splitter" "^1.0.4" + +"nopt@^4.0.1": + "integrity" "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==" + "resolved" "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "abbrev" "1" + "osenv" "^0.1.4" + +"nopt@^5.0.0": + "integrity" "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==" + "resolved" "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "abbrev" "1" + +"nopt@~1.0.10": + "integrity" "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=" + "resolved" "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "abbrev" "1" "nopt@2 || 3": - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= + "integrity" "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=" + "resolved" "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" + "version" "3.0.6" dependencies: - abbrev "1" + "abbrev" "1" -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== +"normalize-path@^3.0.0", "normalize-path@~3.0.0": + "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + "version" "3.0.0" + +"normalize-url@^4.1.0": + "integrity" "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" + "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" + "version" "4.5.1" + +"normalize-url@^6.0.1", "normalize-url@^6.1.0": + "integrity" "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" + "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" + "version" "6.1.0" + +"npm-bundled@^1.0.1": + "integrity" "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==" + "resolved" "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz" + "version" "1.1.2" dependencies: - abbrev "1" - osenv "^0.1.4" + "npm-normalize-package-bin" "^1.0.1" -nopt@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" - integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== +"npm-normalize-package-bin@^1.0.1": + "integrity" "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + "resolved" "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz" + "version" "1.0.1" + +"npm-packlist@^1.1.6": + "integrity" "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==" + "resolved" "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz" + "version" "1.4.8" dependencies: - abbrev "1" + "ignore-walk" "^3.0.1" + "npm-bundled" "^1.0.1" + "npm-normalize-package-bin" "^1.0.1" -nopt@~1.0.10: - version "1.0.10" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee" - integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= +"npm-run-path@^4.0.0", "npm-run-path@^4.0.1": + "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" + "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + "version" "4.0.1" dependencies: - abbrev "1" + "path-key" "^3.0.0" -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.1" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" - integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== - -normalize-url@^6.0.1, normalize-url@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" - integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== - -npm-bundled@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" - integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== +"npmlog@^4.0.2": + "integrity" "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==" + "resolved" "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz" + "version" "4.1.2" dependencies: - npm-normalize-package-bin "^1.0.1" + "are-we-there-yet" "~1.1.2" + "console-control-strings" "~1.1.0" + "gauge" "~2.7.3" + "set-blocking" "~2.0.0" -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.1.6: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== +"npmlog@^5.0.1": + "integrity" "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==" + "resolved" "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz" + "version" "5.0.1" dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" + "are-we-there-yet" "^2.0.0" + "console-control-strings" "^1.1.0" + "gauge" "^3.0.0" + "set-blocking" "^2.0.0" -npm-run-path@^4.0.0, npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== +"npmlog@0 || 1 || 2 || 3 || 4": + "integrity" "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==" + "resolved" "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz" + "version" "4.1.2" dependencies: - path-key "^3.0.0" + "are-we-there-yet" "~1.1.2" + "console-control-strings" "~1.1.0" + "gauge" "~2.7.3" + "set-blocking" "~2.0.0" -"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.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== +"number-is-nan@^1.0.0": + "integrity" "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" + "resolved" "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + "version" "1.0.1" + +"oauth-sign@~0.9.0": + "integrity" "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + "resolved" "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" + "version" "0.9.0" + +"object-assign@^4.1.0", "object-assign@^4.1.1": + "integrity" "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + "version" "4.1.1" + +"object-inspect@^1.9.0": + "integrity" "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" + "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz" + "version" "1.12.0" + +"once@^1.3.0", "once@^1.3.1", "once@^1.4.0": + "integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" + "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + "version" "1.4.0" dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" + "wrappy" "1" -npmlog@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-5.0.1.tgz#f06678e80e29419ad67ab964e0fa69959c1eb8b0" - integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== +"onetime@^5.1.0", "onetime@^5.1.2": + "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" + "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + "version" "5.1.2" dependencies: - are-we-there-yet "^2.0.0" - console-control-strings "^1.1.0" - gauge "^3.0.0" - set-blocking "^2.0.0" + "mimic-fn" "^2.1.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= - -oauth-sign@~0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" - integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== - -object-assign@^4.1.0, object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-inspect@^1.9.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" - integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== - -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= +"open@7.4.2": + "integrity" "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==" + "resolved" "https://registry.npmjs.org/open/-/open-7.4.2.tgz" + "version" "7.4.2" dependencies: - wrappy "1" + "is-docker" "^2.0.0" + "is-wsl" "^2.1.1" -onetime@^5.1.0, onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== +"opencollective-postinstall@^2.0.2": + "integrity" "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==" + "resolved" "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz" + "version" "2.0.3" + +"optionator@^0.9.1": + "integrity" "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==" + "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" + "version" "0.9.1" dependencies: - mimic-fn "^2.1.0" + "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" -open@7.4.2: - version "7.4.2" - resolved "https://registry.yarnpkg.com/open/-/open-7.4.2.tgz#b8147e26dcf3e426316c730089fd71edd29c2321" - integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== +"ora@^5.4.1": + "integrity" "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==" + "resolved" "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + "version" "5.4.1" dependencies: - is-docker "^2.0.0" - is-wsl "^2.1.1" + "bl" "^4.1.0" + "chalk" "^4.1.0" + "cli-cursor" "^3.1.0" + "cli-spinners" "^2.5.0" + "is-interactive" "^1.0.0" + "is-unicode-supported" "^0.1.0" + "log-symbols" "^4.1.0" + "strip-ansi" "^6.0.0" + "wcwidth" "^1.0.1" -opencollective-postinstall@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" - integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== +"ora@^6.0.1": + "integrity" "sha512-TDdKkKHdWE6jo/6pIa5U5AWcSVfpNRFJ8sdRJpioGNVPLAzZzHs/N+QhUfF7ZbyoC+rnDuNTKzeDJUbAza9g4g==" + "resolved" "https://registry.npmjs.org/ora/-/ora-6.0.1.tgz" + "version" "6.0.1" 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" + "bl" "^5.0.0" + "chalk" "^4.1.2" + "cli-cursor" "^4.0.0" + "cli-spinners" "^2.6.0" + "is-interactive" "^2.0.0" + "is-unicode-supported" "^1.1.0" + "log-symbols" "^5.0.0" + "strip-ansi" "^7.0.1" + "wcwidth" "^1.0.1" -ora@5.4.1, ora@^5.4.1: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== +"ora@5.4.1": + "integrity" "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==" + "resolved" "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + "version" "5.4.1" dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" + "bl" "^4.1.0" + "chalk" "^4.1.0" + "cli-cursor" "^3.1.0" + "cli-spinners" "^2.5.0" + "is-interactive" "^1.0.0" + "is-unicode-supported" "^0.1.0" + "log-symbols" "^4.1.0" + "strip-ansi" "^6.0.0" + "wcwidth" "^1.0.1" -ora@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-6.0.1.tgz#68caa9fd6c485a40d6f46c50a3940fa3df99c7f3" - integrity sha512-TDdKkKHdWE6jo/6pIa5U5AWcSVfpNRFJ8sdRJpioGNVPLAzZzHs/N+QhUfF7ZbyoC+rnDuNTKzeDJUbAza9g4g== +"os-homedir@^1.0.0": + "integrity" "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + "resolved" "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" + "version" "1.0.2" + +"os-name@4.0.1": + "integrity" "sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==" + "resolved" "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz" + "version" "4.0.1" dependencies: - bl "^5.0.0" - chalk "^4.1.2" - cli-cursor "^4.0.0" - cli-spinners "^2.6.0" - is-interactive "^2.0.0" - is-unicode-supported "^1.1.0" - log-symbols "^5.0.0" - strip-ansi "^7.0.1" - wcwidth "^1.0.1" + "macos-release" "^2.5.0" + "windows-release" "^4.0.0" -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", "os-tmpdir@~1.0.2": + "integrity" "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + "resolved" "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + "version" "1.0.2" -os-name@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/os-name/-/os-name-4.0.1.tgz#32cee7823de85a8897647ba4d76db46bf845e555" - integrity sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw== +"osenv@^0.1.4", "osenv@0": + "integrity" "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==" + "resolved" "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz" + "version" "0.1.5" dependencies: - macos-release "^2.5.0" - windows-release "^4.0.0" + "os-homedir" "^1.0.0" + "os-tmpdir" "^1.0.0" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: - 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, 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" - -ow@^0.27.0: - version "0.27.0" - resolved "https://registry.yarnpkg.com/ow/-/ow-0.27.0.tgz#d44da088e8184fa11de64b5813206f9f86ab68d0" - integrity sha512-SGnrGUbhn4VaUGdU0EJLMwZWSupPmF46hnTRII7aCLCrqixTAC5eKo8kI4/XXf1eaaI8YEVT+3FeGNJI9himAQ== +"ow@^0.27.0": + "integrity" "sha512-SGnrGUbhn4VaUGdU0EJLMwZWSupPmF46hnTRII7aCLCrqixTAC5eKo8kI4/XXf1eaaI8YEVT+3FeGNJI9himAQ==" + "resolved" "https://registry.npmjs.org/ow/-/ow-0.27.0.tgz" + "version" "0.27.0" dependencies: "@sindresorhus/is" "^4.0.1" - callsites "^3.1.0" - dot-prop "^6.0.1" - lodash.isequal "^4.5.0" - type-fest "^1.2.1" - vali-date "^1.0.0" + "callsites" "^3.1.0" + "dot-prop" "^6.0.1" + "lodash.isequal" "^4.5.0" + "type-fest" "^1.2.1" + "vali-date" "^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== +"p-cancelable@^1.0.0": + "integrity" "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" + "version" "1.1.0" -p-cancelable@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-2.1.1.tgz#aab7fbd416582fa32a3db49859c122487c5ed2cf" - integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== +"p-cancelable@^2.0.0": + "integrity" "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" + "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz" + "version" "2.1.1" -p-cancelable@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-3.0.0.tgz#63826694b54d61ca1c20ebcb6d3ecf5e14cd8050" - integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== +"p-cancelable@^3.0.0": + "integrity" "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==" + "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz" + "version" "3.0.0" -p-event@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/p-event/-/p-event-4.2.0.tgz#af4b049c8acd91ae81083ebd1e6f5cae2044c1b5" - integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== +"p-event@^4.2.0": + "integrity" "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==" + "resolved" "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz" + "version" "4.2.0" dependencies: - p-timeout "^3.1.0" + "p-timeout" "^3.1.0" -p-finally@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" - integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= +"p-finally@^1.0.0": + "integrity" "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" + "resolved" "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" + "version" "1.0.0" -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== +"p-limit@^3.0.2": + "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + "version" "3.1.0" dependencies: - yocto-queue "^0.1.0" + "yocto-queue" "^0.1.0" -p-limit@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" - integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== +"p-limit@^4.0.0": + "integrity" "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz" + "version" "4.0.0" dependencies: - yocto-queue "^1.0.0" + "yocto-queue" "^1.0.0" -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== +"p-locate@^5.0.0": + "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + "version" "5.0.0" dependencies: - p-limit "^3.0.2" + "p-limit" "^3.0.2" -p-queue@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-7.1.0.tgz#c2bb28f8dc0ebf3fadb985b8706cf2ce5fe5f275" - integrity sha512-V+0vPJbhYkBqknPp0qnaz+dWcj8cNepfXZcsVIVEHPbFQXMPwrzCNIiM4FoxGtwHXtPzVCPHDvqCr1YrOJX2Gw== +"p-queue@^7.1.0": + "integrity" "sha512-V+0vPJbhYkBqknPp0qnaz+dWcj8cNepfXZcsVIVEHPbFQXMPwrzCNIiM4FoxGtwHXtPzVCPHDvqCr1YrOJX2Gw==" + "resolved" "https://registry.npmjs.org/p-queue/-/p-queue-7.1.0.tgz" + "version" "7.1.0" dependencies: - eventemitter3 "^4.0.7" - p-timeout "^5.0.0" + "eventemitter3" "^4.0.7" + "p-timeout" "^5.0.0" -p-timeout@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-3.2.0.tgz#c7e17abc971d2a7962ef83626b35d635acf23dfe" - integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== +"p-timeout@^3.1.0": + "integrity" "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==" + "resolved" "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" + "version" "3.2.0" dependencies: - p-finally "^1.0.0" + "p-finally" "^1.0.0" -p-timeout@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-5.0.2.tgz#d12964c4b2f988e15f72b455c2c428d82a0ec0a0" - integrity sha512-sEmji9Yaq+Tw+STwsGAE56hf7gMy9p0tQfJojIAamB7WHJYJKf1qlsg9jqBWG8q9VCxKPhZaP/AcXwEoBcYQhQ== +"p-timeout@^5.0.0": + "integrity" "sha512-sEmji9Yaq+Tw+STwsGAE56hf7gMy9p0tQfJojIAamB7WHJYJKf1qlsg9jqBWG8q9VCxKPhZaP/AcXwEoBcYQhQ==" + "resolved" "https://registry.npmjs.org/p-timeout/-/p-timeout-5.0.2.tgz" + "version" "5.0.2" -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== +"package-json@^6.3.0": + "integrity" "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==" + "resolved" "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" + "version" "6.5.0" dependencies: - got "^9.6.0" - registry-auth-token "^4.0.0" - registry-url "^5.0.0" - semver "^6.2.0" + "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== +"parent-module@^1.0.0": + "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" + "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + "version" "1.0.1" dependencies: - callsites "^3.0.0" + "callsites" "^3.0.0" -parse-json@5.2.0, parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== +"parse-json@^5.0.0", "parse-json@5.2.0": + "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" + "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + "version" "5.2.0" dependencies: "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" + "error-ex" "^1.3.1" + "json-parse-even-better-errors" "^2.3.0" + "lines-and-columns" "^1.1.6" -parse-path@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf" - integrity sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA== +"parse-path@^4.0.0": + "integrity" "sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA==" + "resolved" "https://registry.npmjs.org/parse-path/-/parse-path-4.0.3.tgz" + "version" "4.0.3" dependencies: - is-ssh "^1.3.0" - protocols "^1.4.0" - qs "^6.9.4" - query-string "^6.13.8" + "is-ssh" "^1.3.0" + "protocols" "^1.4.0" + "qs" "^6.9.4" + "query-string" "^6.13.8" -parse-url@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-6.0.0.tgz#f5dd262a7de9ec00914939220410b66cff09107d" - integrity sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw== +"parse-url@^6.0.0": + "integrity" "sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw==" + "resolved" "https://registry.npmjs.org/parse-url/-/parse-url-6.0.0.tgz" + "version" "6.0.0" dependencies: - is-ssh "^1.3.0" - normalize-url "^6.1.0" - parse-path "^4.0.0" - protocols "^1.4.0" + "is-ssh" "^1.3.0" + "normalize-url" "^6.1.0" + "parse-path" "^4.0.0" + "protocols" "^1.4.0" -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== +"path-exists@^4.0.0": + "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + "version" "4.0.0" -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-is-absolute@^1.0.0": + "integrity" "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + "version" "1.0.1" -path-key@^3.0.0, 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== +"path-key@^3.0.0", "path-key@^3.1.0": + "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + "version" "3.1.1" -path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +"path-parse@^1.0.6": + "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + "version" "1.0.7" -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +"path-type@^4.0.0": + "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + "version" "4.0.0" -performance-now@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" - integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +"performance-now@^2.1.0": + "integrity" "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + "resolved" "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" + "version" "2.1.0" -pg-connection-string@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.5.0.tgz#538cadd0f7e603fc09a12590f3b8a452c2c0cf34" - integrity sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ== +"pg-connection-string@^2.5.0": + "integrity" "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + "resolved" "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz" + "version" "2.5.0" -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== +"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.2.3": + "integrity" "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" + "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" + "version" "2.3.0" -pkg-dir@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" - integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== +"pkg-dir@^5.0.0": + "integrity" "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==" + "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz" + "version" "5.0.0" dependencies: - find-up "^5.0.0" + "find-up" "^5.0.0" -please-upgrade-node@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" - integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== +"please-upgrade-node@^3.2.0": + "integrity" "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==" + "resolved" "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz" + "version" "3.2.0" dependencies: - semver-compare "^1.0.0" + "semver-compare" "^1.0.0" -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== +"prelude-ls@^1.2.1": + "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + "version" "1.2.1" -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= +"prepend-http@^2.0.0": + "integrity" "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" + "version" "2.0.0" -prism-media@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/prism-media/-/prism-media-1.3.2.tgz#a1f04423ec15d22f3d62b1987b6a25dc49aad13b" - integrity sha512-L6UsGHcT6i4wrQhFF1aPK+MNYgjRqR2tUoIqEY+CG1NqVkMjPRKzS37j9f8GiYPlD6wG9ruBj+q5Ax+bH8Ik1g== +"prism-media@^1.3.2": + "integrity" "sha512-L6UsGHcT6i4wrQhFF1aPK+MNYgjRqR2tUoIqEY+CG1NqVkMjPRKzS37j9f8GiYPlD6wG9ruBj+q5Ax+bH8Ik1g==" + "resolved" "https://registry.npmjs.org/prism-media/-/prism-media-1.3.2.tgz" + "version" "1.3.2" -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== +"process-nextick-args@~2.0.0": + "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + "version" "2.0.1" -progress@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" - integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +"progress@^2.0.0": + "integrity" "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + "resolved" "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" + "version" "2.0.3" -protocols@^1.1.0, protocols@^1.4.0: - version "1.4.8" - resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" - integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg== +"protocols@^1.1.0", "protocols@^1.4.0": + "integrity" "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==" + "resolved" "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz" + "version" "1.4.8" -psl@^1.1.28: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== +"psl@^1.1.28": + "integrity" "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + "resolved" "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz" + "version" "1.8.0" -pstree.remy@^1.1.8: - 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== +"pstree.remy@^1.1.8": + "integrity" "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + "resolved" "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz" + "version" "1.1.8" -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== +"pump@^3.0.0": + "integrity" "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==" + "resolved" "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + "version" "3.0.0" dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" + "end-of-stream" "^1.1.0" + "once" "^1.3.1" -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +"punycode@^2.1.0", "punycode@^2.1.1": + "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + "version" "2.1.1" -pupa@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/pupa/-/pupa-2.1.1.tgz#f5e8fd4afc2c5d97828faa523549ed8744a20d62" - integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== +"pupa@^2.1.1": + "integrity" "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==" + "resolved" "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz" + "version" "2.1.1" dependencies: - escape-goat "^2.0.0" + "escape-goat" "^2.0.0" -qs@^6.9.4: - version "6.10.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.2.tgz#c1431bea37fc5b24c5bdbafa20f16bdf2a4b9ffe" - integrity sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw== +"qs@^6.9.4": + "integrity" "sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw==" + "resolved" "https://registry.npmjs.org/qs/-/qs-6.10.2.tgz" + "version" "6.10.2" dependencies: - side-channel "^1.0.4" + "side-channel" "^1.0.4" -qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== +"qs@~6.5.2": + "integrity" "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + "resolved" "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" + "version" "6.5.2" -query-string@^6.13.8: - version "6.14.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" - integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== +"query-string@^6.13.8": + "integrity" "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==" + "resolved" "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz" + "version" "6.14.1" dependencies: - decode-uri-component "^0.2.0" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" + "decode-uri-component" "^0.2.0" + "filter-obj" "^1.1.0" + "split-on-first" "^1.0.0" + "strict-uri-encode" "^2.0.0" -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +"queue-microtask@^1.2.2": + "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + "version" "1.2.3" -quick-lru@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" - integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== +"quick-lru@^5.1.1": + "integrity" "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + "resolved" "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" + "version" "5.1.1" -rc@^1.2.7, rc@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== +"rc@^1.2.7", "rc@^1.2.8": + "integrity" "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==" + "resolved" "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" + "version" "1.2.8" dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" + "deep-extend" "^0.6.0" + "ini" "~1.3.0" + "minimist" "^1.2.0" + "strip-json-comments" "~2.0.1" -readable-stream@^2.0.6: - 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== +"readable-stream@^2.0.6": + "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + "version" "2.3.7" 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" + "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" -readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== +"readable-stream@^3.4.0", "readable-stream@^3.6.0": + "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" + "version" "3.6.0" dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" + "inherits" "^2.0.3" + "string_decoder" "^1.1.1" + "util-deprecate" "^1.0.1" -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== +"readdirp@~3.6.0": + "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" + "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + "version" "3.6.0" dependencies: - picomatch "^2.2.1" + "picomatch" "^2.2.1" -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= +"rechoir@^0.6.2": + "integrity" "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=" + "resolved" "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" + "version" "0.6.2" dependencies: - resolve "^1.1.6" + "resolve" "^1.1.6" -reflect-metadata@^0.1.13: - version "0.1.13" - resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" - integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== +"reflect-metadata@*", "reflect-metadata@^0.1.13": + "integrity" "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + "resolved" "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz" + "version" "0.1.13" -regexpp@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== +"regexpp@^3.1.0": + "integrity" "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" + "resolved" "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" + "version" "3.2.0" -registry-auth-token@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/registry-auth-token/-/registry-auth-token-4.2.1.tgz#6d7b4006441918972ccd5fedcd41dc322c79b250" - integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== +"registry-auth-token@^4.0.0": + "integrity" "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==" + "resolved" "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz" + "version" "4.2.1" dependencies: - rc "^1.2.8" + "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== +"registry-url@^5.0.0": + "integrity" "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==" + "resolved" "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" + "version" "5.1.0" dependencies: - rc "^1.2.8" + "rc" "^1.2.8" -release-it@^14.11.8: - version "14.11.8" - resolved "https://registry.yarnpkg.com/release-it/-/release-it-14.11.8.tgz#6da25daa93286d832cae4f10008a3bf0c08c2725" - integrity sha512-951DJ0kwjwU7CwGU3BCvRBgLxuJsOPRrZkqx0AsugJdSyPpUdwY9nlU0RAoSKqgh+VTerzecXLIIwgsGIpNxlA== +"release-it@^14.11.8", "release-it@^14.8.0": + "integrity" "sha512-951DJ0kwjwU7CwGU3BCvRBgLxuJsOPRrZkqx0AsugJdSyPpUdwY9nlU0RAoSKqgh+VTerzecXLIIwgsGIpNxlA==" + "resolved" "https://registry.npmjs.org/release-it/-/release-it-14.11.8.tgz" + "version" "14.11.8" dependencies: "@iarna/toml" "2.2.5" "@octokit/rest" "18.12.0" - async-retry "1.3.3" - chalk "4.1.2" - cosmiconfig "7.0.1" - debug "4.3.2" - deprecated-obj "2.0.0" - execa "5.1.1" - form-data "4.0.0" - git-url-parse "11.6.0" - globby "11.0.4" - got "11.8.3" - import-cwd "3.0.0" - inquirer "8.2.0" - is-ci "3.0.1" - lodash "4.17.21" - mime-types "2.1.34" - new-github-release-url "1.0.0" - open "7.4.2" - ora "5.4.1" - os-name "4.0.1" - parse-json "5.2.0" - semver "7.3.5" - shelljs "0.8.4" - update-notifier "5.1.0" - url-join "4.0.1" - uuid "8.3.2" - yaml "1.10.2" - yargs-parser "20.2.9" + "async-retry" "1.3.3" + "chalk" "4.1.2" + "cosmiconfig" "7.0.1" + "debug" "4.3.2" + "deprecated-obj" "2.0.0" + "execa" "5.1.1" + "form-data" "4.0.0" + "git-url-parse" "11.6.0" + "globby" "11.0.4" + "got" "11.8.3" + "import-cwd" "3.0.0" + "inquirer" "8.2.0" + "is-ci" "3.0.1" + "lodash" "4.17.21" + "mime-types" "2.1.34" + "new-github-release-url" "1.0.0" + "open" "7.4.2" + "ora" "5.4.1" + "os-name" "4.0.1" + "parse-json" "5.2.0" + "semver" "7.3.5" + "shelljs" "0.8.4" + "update-notifier" "5.1.0" + "url-join" "4.0.1" + "uuid" "8.3.2" + "yaml" "1.10.2" + "yargs-parser" "20.2.9" -request@^2.87.0: - version "2.88.2" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" - integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== +"request@^2.87.0": + "integrity" "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==" + "resolved" "https://registry.npmjs.org/request/-/request-2.88.2.tgz" + "version" "2.88.2" dependencies: - aws-sign2 "~0.7.0" - aws4 "^1.8.0" - caseless "~0.12.0" - combined-stream "~1.0.6" - extend "~3.0.2" - forever-agent "~0.6.1" - form-data "~2.3.2" - har-validator "~5.1.3" - http-signature "~1.2.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.19" - oauth-sign "~0.9.0" - performance-now "^2.1.0" - qs "~6.5.2" - safe-buffer "^5.1.2" - tough-cookie "~2.5.0" - tunnel-agent "^0.6.0" - uuid "^3.3.2" + "aws-sign2" "~0.7.0" + "aws4" "^1.8.0" + "caseless" "~0.12.0" + "combined-stream" "~1.0.6" + "extend" "~3.0.2" + "forever-agent" "~0.6.1" + "form-data" "~2.3.2" + "har-validator" "~5.1.3" + "http-signature" "~1.2.0" + "is-typedarray" "~1.0.0" + "isstream" "~0.1.2" + "json-stringify-safe" "~5.0.1" + "mime-types" "~2.1.19" + "oauth-sign" "~0.9.0" + "performance-now" "^2.1.0" + "qs" "~6.5.2" + "safe-buffer" "^5.1.2" + "tough-cookie" "~2.5.0" + "tunnel-agent" "^0.6.0" + "uuid" "^3.3.2" -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +"require-directory@^2.1.1": + "integrity" "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + "version" "2.1.1" -require-from-string@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" - integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== +"require-from-string@^2.0.2": + "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + "version" "2.0.2" -resolve-alpn@^1.0.0, resolve-alpn@^1.2.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.1.tgz#b7adbdac3546aaaec20b45e7d8265927072726f9" - integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== +"resolve-alpn@^1.0.0", "resolve-alpn@^1.2.0": + "integrity" "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" + "resolved" "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz" + "version" "1.2.1" -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== +"resolve-from@^4.0.0": + "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + "version" "4.0.0" -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +"resolve-from@^5.0.0": + "integrity" "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + "version" "5.0.0" -resolve@^1.1.6: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== +"resolve@^1.1.6": + "integrity" "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz" + "version" "1.20.0" dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" + "is-core-module" "^2.2.0" + "path-parse" "^1.0.6" -responselike@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" - integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= +"responselike@^1.0.2": + "integrity" "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=" + "resolved" "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" + "version" "1.0.2" dependencies: - lowercase-keys "^1.0.0" + "lowercase-keys" "^1.0.0" -responselike@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/responselike/-/responselike-2.0.0.tgz#26391bcc3174f750f9a79eacc40a12a5c42d7723" - integrity sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw== +"responselike@^2.0.0": + "integrity" "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==" + "resolved" "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz" + "version" "2.0.0" dependencies: - lowercase-keys "^2.0.0" + "lowercase-keys" "^2.0.0" -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== +"restore-cursor@^3.1.0": + "integrity" "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==" + "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + "version" "3.1.0" dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" + "onetime" "^5.1.0" + "signal-exit" "^3.0.2" -restore-cursor@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" - integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== +"restore-cursor@^4.0.0": + "integrity" "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==" + "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz" + "version" "4.0.0" dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" + "onetime" "^5.1.0" + "signal-exit" "^3.0.2" -retry-as-promised@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/retry-as-promised/-/retry-as-promised-3.2.0.tgz#769f63d536bec4783549db0777cb56dadd9d8543" - integrity sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg== +"retry-as-promised@^3.2.0": + "integrity" "sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg==" + "resolved" "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.2.0.tgz" + "version" "3.2.0" dependencies: - any-promise "^1.3.0" + "any-promise" "^1.3.0" -retry@0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== +"retry@0.13.1": + "integrity" "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" + "resolved" "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" + "version" "0.13.1" -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +"reusify@^1.0.4": + "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + "version" "1.0.4" -rimraf@2, rimraf@^2.6.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== +"rimraf@^2.6.1": + "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" + "version" "2.7.1" dependencies: - glob "^7.1.3" + "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== +"rimraf@^3.0.2": + "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + "version" "3.0.2" dependencies: - glob "^7.1.3" + "glob" "^7.1.3" -run-async@^2.4.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== +"rimraf@2": + "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" + "version" "2.7.1" dependencies: - queue-microtask "^1.2.2" + "glob" "^7.1.3" -rxjs@^6.6.3: - version "6.6.7" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" - integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== +"run-async@^2.4.0": + "integrity" "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" + "resolved" "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" + "version" "2.4.1" + +"run-parallel@^1.1.9": + "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" + "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + "version" "1.2.0" dependencies: - tslib "^1.9.0" + "queue-microtask" "^1.2.2" -rxjs@^7.2.0: - version "7.4.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.4.0.tgz#a12a44d7eebf016f5ff2441b87f28c9a51cebc68" - integrity sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w== +"rxjs@^6.6.3": + "integrity" "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==" + "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" + "version" "6.6.7" dependencies: - tslib "~2.1.0" + "tslib" "^1.9.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -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", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -sax@^1.1.3, 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-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" - integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= - -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== +"rxjs@^7.2.0": + "integrity" "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==" + "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz" + "version" "7.4.0" dependencies: - semver "^6.3.0" + "tslib" "~2.1.0" -semver-regex@^3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-3.1.3.tgz#b2bcc6f97f63269f286994e297e229b6245d0dc3" - integrity sha512-Aqi54Mk9uYTjVexLnR67rTyBusmwd04cLkHy9hNvk3+G3nT2Oyg7E0l4XVbOaNwIvQ3hHeYxGcyEy+mKreyBFQ== +"safe-buffer@^5.0.1", "safe-buffer@^5.1.2", "safe-buffer@^5.2.1", "safe-buffer@~5.2.0": + "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + "version" "5.2.1" -semver@7.3.5, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: - version "7.3.5" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" - integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== +"safe-buffer@~5.1.0", "safe-buffer@~5.1.1": + "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + "version" "5.1.2" + +"safer-buffer@^2.0.2", "safer-buffer@^2.1.0", "safer-buffer@>= 2.1.2 < 3", "safer-buffer@~2.1.0": + "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + "version" "2.1.2" + +"sax@^1.1.3", "sax@^1.2.4": + "integrity" "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + "resolved" "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" + "version" "1.2.4" + +"semver-compare@^1.0.0": + "integrity" "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=" + "resolved" "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" + "version" "1.0.0" + +"semver-diff@^3.1.1": + "integrity" "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==" + "resolved" "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz" + "version" "3.1.1" dependencies: - lru-cache "^6.0.0" + "semver" "^6.3.0" -semver@^5.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-regex@^3.1.2": + "integrity" "sha512-Aqi54Mk9uYTjVexLnR67rTyBusmwd04cLkHy9hNvk3+G3nT2Oyg7E0l4XVbOaNwIvQ3hHeYxGcyEy+mKreyBFQ==" + "resolved" "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.3.tgz" + "version" "3.1.3" -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@^5.3.0": + "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + "version" "5.7.1" -semver@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.3.0.tgz#9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f" - integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= +"semver@^5.7.1": + "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + "version" "5.7.1" -sequelize-pool@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/sequelize-pool/-/sequelize-pool-6.1.0.tgz#caaa0c1e324d3c2c3a399fed2c7998970925d668" - integrity sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg== +"semver@^6.0.0": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" -sequelize-typescript@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/sequelize-typescript/-/sequelize-typescript-2.1.1.tgz#92445632062db868b760cd20215406403da737a2" - integrity sha512-4am/5O6dlAvtR/akH2KizcECm4rRAjWr+oc5mo9vFVMez8hrbOhQlDNzk0H6VMOQASCN7yBF+qOnSEN60V6/vA== +"semver@^6.2.0": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" + +"semver@^6.3.0": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" + +"semver@^7.2.1", "semver@^7.3.2", "semver@^7.3.4", "semver@^7.3.5", "semver@7.3.5": + "integrity" "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" + "version" "7.3.5" dependencies: - glob "7.2.0" + "lru-cache" "^6.0.0" -sequelize@6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/sequelize/-/sequelize-6.11.0.tgz#11620b02ab2ca02af59ec652dd22bef7ccd348af" - integrity sha512-+j3N5lr+FR1eicMRGR3bRsGOl9HMY0UGb2PyB2i1yZ64XBgsz3xejMH0UD45LcUitj40soDGIa9CyvZG0dfzKg== +"semver@~5.3.0": + "integrity" "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" + "version" "5.3.0" + +"sequelize-pool@^6.0.0": + "integrity" "sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg==" + "resolved" "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-6.1.0.tgz" + "version" "6.1.0" + +"sequelize-typescript@^2.1.1": + "integrity" "sha512-4am/5O6dlAvtR/akH2KizcECm4rRAjWr+oc5mo9vFVMez8hrbOhQlDNzk0H6VMOQASCN7yBF+qOnSEN60V6/vA==" + "resolved" "https://registry.npmjs.org/sequelize-typescript/-/sequelize-typescript-2.1.1.tgz" + "version" "2.1.1" dependencies: - debug "^4.1.1" - dottie "^2.0.0" - inflection "1.13.1" - lodash "^4.17.20" - moment "^2.26.0" - moment-timezone "^0.5.31" - pg-connection-string "^2.5.0" - retry-as-promised "^3.2.0" - semver "^7.3.2" - sequelize-pool "^6.0.0" - toposort-class "^1.0.1" - uuid "^8.1.0" - validator "^13.7.0" - wkx "^0.5.0" + "glob" "7.2.0" -set-blocking@^2.0.0, 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= - -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== +"sequelize@>=6.6.5", "sequelize@6.11.0": + "integrity" "sha512-+j3N5lr+FR1eicMRGR3bRsGOl9HMY0UGb2PyB2i1yZ64XBgsz3xejMH0UD45LcUitj40soDGIa9CyvZG0dfzKg==" + "resolved" "https://registry.npmjs.org/sequelize/-/sequelize-6.11.0.tgz" + "version" "6.11.0" dependencies: - shebang-regex "^3.0.0" + "debug" "^4.1.1" + "dottie" "^2.0.0" + "inflection" "1.13.1" + "lodash" "^4.17.20" + "moment" "^2.26.0" + "moment-timezone" "^0.5.31" + "pg-connection-string" "^2.5.0" + "retry-as-promised" "^3.2.0" + "semver" "^7.3.2" + "sequelize-pool" "^6.0.0" + "toposort-class" "^1.0.1" + "uuid" "^8.1.0" + "validator" "^13.7.0" + "wkx" "^0.5.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== +"set-blocking@^2.0.0", "set-blocking@~2.0.0": + "integrity" "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "resolved" "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + "version" "2.0.0" -shelljs@0.8.4: - version "0.8.4" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" - integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== +"shebang-command@^2.0.0": + "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" + "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + "version" "2.0.0" dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" + "shebang-regex" "^3.0.0" -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== +"shebang-regex@^3.0.0": + "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + "version" "3.0.0" + +"shelljs@0.8.4": + "integrity" "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==" + "resolved" "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz" + "version" "0.8.4" dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" + "glob" "^7.0.0" + "interpret" "^1.0.0" + "rechoir" "^0.6.2" -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: - version "3.0.6" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" - integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" - integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== +"side-channel@^1.0.4": + "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" + "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + "version" "1.0.4" dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" + "call-bind" "^1.0.0" + "get-intrinsic" "^1.0.2" + "object-inspect" "^1.9.0" -spawn-command@^0.0.2-1: - version "0.0.2-1" - resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2-1.tgz#62f5e9466981c1b796dc5929937e11c9c6921bd0" - integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= +"signal-exit@^3.0.0", "signal-exit@^3.0.2", "signal-exit@^3.0.3": + "integrity" "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" + "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz" + "version" "3.0.6" -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== +"slash@^3.0.0": + "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + "version" "3.0.0" -spotify-uri@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spotify-uri/-/spotify-uri-2.2.0.tgz#8db641615cf6e122284874287fe39e89595922df" - integrity sha512-uUybj02bfyfCoZ0MJ80MkqbKxtIVRJfbRGk05KJFq1li3zb7yNfN1f+TAw4wcXgp7jLWExeiw2wyPQXZ8PHtfg== - -spotify-web-api-node@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/spotify-web-api-node/-/spotify-web-api-node-5.0.2.tgz#683669b3ccc046a5a357300f151df93a2b3539fe" - integrity sha512-r82dRWU9PMimHvHEzL0DwEJrzFk+SMCVfq249SLt3I7EFez7R+jeoKQd+M1//QcnjqlXPs2am4DFsGk8/GCsrA== +"slice-ansi@^4.0.0": + "integrity" "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==" + "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" + "version" "4.0.0" dependencies: - superagent "^6.1.0" + "ansi-styles" "^4.0.0" + "astral-regex" "^2.0.0" + "is-fullwidth-code-point" "^3.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= +"spawn-command@^0.0.2-1": + "integrity" "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=" + "resolved" "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz" + "version" "0.0.2-1" -sqlite3@^5.0.2: - version "5.0.2" - resolved "https://registry.yarnpkg.com/sqlite3/-/sqlite3-5.0.2.tgz#00924adcc001c17686e0a6643b6cbbc2d3965083" - integrity sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA== +"split-on-first@^1.0.0": + "integrity" "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" + "resolved" "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz" + "version" "1.1.0" + +"spotify-uri@^2.2.0": + "integrity" "sha512-uUybj02bfyfCoZ0MJ80MkqbKxtIVRJfbRGk05KJFq1li3zb7yNfN1f+TAw4wcXgp7jLWExeiw2wyPQXZ8PHtfg==" + "resolved" "https://registry.npmjs.org/spotify-uri/-/spotify-uri-2.2.0.tgz" + "version" "2.2.0" + +"spotify-web-api-node@^5.0.2": + "integrity" "sha512-r82dRWU9PMimHvHEzL0DwEJrzFk+SMCVfq249SLt3I7EFez7R+jeoKQd+M1//QcnjqlXPs2am4DFsGk8/GCsrA==" + "resolved" "https://registry.npmjs.org/spotify-web-api-node/-/spotify-web-api-node-5.0.2.tgz" + "version" "5.0.2" dependencies: - node-addon-api "^3.0.0" - node-pre-gyp "^0.11.0" + "superagent" "^6.1.0" + +"sprintf-js@~1.0.2": + "integrity" "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + "version" "1.0.3" + +"sqlite3@^5.0.2": + "integrity" "sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA==" + "resolved" "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.2.tgz" + "version" "5.0.2" + dependencies: + "node-addon-api" "^3.0.0" + "node-pre-gyp" "^0.11.0" optionalDependencies: - node-gyp "3.x" + "node-gyp" "3.x" -sshpk@^1.7.0: - version "1.16.1" - resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" - integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== +"sshpk@^1.7.0": + "integrity" "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==" + "resolved" "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz" + "version" "1.16.1" dependencies: - asn1 "~0.2.3" - assert-plus "^1.0.0" - bcrypt-pbkdf "^1.0.0" - dashdash "^1.12.0" - ecc-jsbn "~0.1.1" - getpass "^0.1.1" - jsbn "~0.1.0" - safer-buffer "^2.0.2" - tweetnacl "~0.14.0" + "asn1" "~0.2.3" + "assert-plus" "^1.0.0" + "bcrypt-pbkdf" "^1.0.0" + "dashdash" "^1.12.0" + "ecc-jsbn" "~0.1.1" + "getpass" "^0.1.1" + "jsbn" "~0.1.0" + "safer-buffer" "^2.0.2" + "tweetnacl" "~0.14.0" -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= +"strict-uri-encode@^2.0.0": + "integrity" "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" + "resolved" "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz" + "version" "2.0.0" -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= +"string_decoder@^1.1.1": + "integrity" "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" + "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + "version" "1.3.0" dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" + "safe-buffer" "~5.2.0" -"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== +"string_decoder@~1.1.1": + "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" + "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + "version" "1.1.1" dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" + "safe-buffer" "~5.1.0" -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== +"string-width@^1.0.1": + "integrity" "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" + "version" "1.0.2" dependencies: - safe-buffer "~5.2.0" + "code-point-at" "^1.0.0" + "is-fullwidth-code-point" "^1.0.0" + "strip-ansi" "^3.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== +"string-width@^1.0.2 || 2 || 3 || 4", "string-width@^4.0.0", "string-width@^4.1.0", "string-width@^4.2.0", "string-width@^4.2.2", "string-width@^4.2.3": + "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + "version" "4.2.3" dependencies: - safe-buffer "~5.1.0" + "emoji-regex" "^8.0.0" + "is-fullwidth-code-point" "^3.0.0" + "strip-ansi" "^6.0.1" -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= +"strip-ansi@^3.0.0", "strip-ansi@^3.0.1": + "integrity" "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + "version" "3.0.1" dependencies: - ansi-regex "^2.0.0" + "ansi-regex" "^2.0.0" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== +"strip-ansi@^6.0.0", "strip-ansi@^6.0.1": + "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + "version" "6.0.1" dependencies: - ansi-regex "^5.0.1" + "ansi-regex" "^5.0.1" -strip-ansi@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" - integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== +"strip-ansi@^7.0.1": + "integrity" "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz" + "version" "7.0.1" dependencies: - ansi-regex "^6.0.1" + "ansi-regex" "^6.0.1" -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +"strip-final-newline@^2.0.0": + "integrity" "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + "version" "2.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@^3.1.0", "strip-json-comments@^3.1.1": + "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + "version" "3.1.1" -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= +"strip-json-comments@~2.0.1": + "integrity" "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" + "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + "version" "2.0.1" -superagent@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/superagent/-/superagent-6.1.0.tgz#09f08807bc41108ef164cfb4be293cebd480f4a6" - integrity sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg== +"superagent@^6.1.0": + "integrity" "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==" + "resolved" "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz" + "version" "6.1.0" dependencies: - component-emitter "^1.3.0" - cookiejar "^2.1.2" - debug "^4.1.1" - fast-safe-stringify "^2.0.7" - form-data "^3.0.0" - formidable "^1.2.2" - methods "^1.1.2" - mime "^2.4.6" - qs "^6.9.4" - readable-stream "^3.6.0" - semver "^7.3.2" + "component-emitter" "^1.3.0" + "cookiejar" "^2.1.2" + "debug" "^4.1.1" + "fast-safe-stringify" "^2.0.7" + "form-data" "^3.0.0" + "formidable" "^1.2.2" + "methods" "^1.1.2" + "mime" "^2.4.6" + "qs" "^6.9.4" + "readable-stream" "^3.6.0" + "semver" "^7.3.2" -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== +"supports-color@^5.3.0": + "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + "version" "5.5.0" dependencies: - has-flag "^3.0.0" + "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== +"supports-color@^5.5.0": + "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + "version" "5.5.0" dependencies: - has-flag "^4.0.0" + "has-flag" "^3.0.0" -supports-color@^8.1.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== +"supports-color@^7.1.0": + "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + "version" "7.2.0" dependencies: - has-flag "^4.0.0" + "has-flag" "^4.0.0" -table@^6.0.9: - version "6.7.5" - resolved "https://registry.yarnpkg.com/table/-/table-6.7.5.tgz#f04478c351ef3d8c7904f0e8be90a1b62417d238" - integrity sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw== +"supports-color@^8.1.0": + "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + "version" "8.1.1" dependencies: - ajv "^8.0.1" - lodash.truncate "^4.4.2" - slice-ansi "^4.0.0" - string-width "^4.2.3" - strip-ansi "^6.0.1" + "has-flag" "^4.0.0" -tar@^2.0.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.2.tgz#0ca8848562c7299b8b446ff6a4d60cdbb23edc40" - integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== +"table@^6.0.9": + "integrity" "sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw==" + "resolved" "https://registry.npmjs.org/table/-/table-6.7.5.tgz" + "version" "6.7.5" dependencies: - block-stream "*" - fstream "^1.0.12" - inherits "2" + "ajv" "^8.0.1" + "lodash.truncate" "^4.4.2" + "slice-ansi" "^4.0.0" + "string-width" "^4.2.3" + "strip-ansi" "^6.0.1" -tar@^4: - version "4.4.19" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.19.tgz#2e4d7263df26f2b914dee10c825ab132123742f3" - integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== +"tar@^2.0.0": + "integrity" "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==" + "resolved" "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz" + "version" "2.2.2" dependencies: - chownr "^1.1.4" - fs-minipass "^1.2.7" - minipass "^2.9.0" - minizlib "^1.3.3" - mkdirp "^0.5.5" - safe-buffer "^5.2.1" - yallist "^3.1.1" + "block-stream" "*" + "fstream" "^1.0.12" + "inherits" "2" -tar@^6.1.11: - version "6.1.11" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.11.tgz#6760a38f003afa1b2ffd0ffe9e9abbd0eab3d621" - integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== +"tar@^4": + "integrity" "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==" + "resolved" "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz" + "version" "4.4.19" 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" + "chownr" "^1.1.4" + "fs-minipass" "^1.2.7" + "minipass" "^2.9.0" + "minizlib" "^1.3.3" + "mkdirp" "^0.5.5" + "safe-buffer" "^5.2.1" + "yallist" "^3.1.1" -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= - -through@^2.3.6: - version "2.3.8" - resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" - integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= - -tiny-typed-emitter@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz#b3b027fdd389ff81a152c8e847ee2f5be9fad7b5" - integrity sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA== - -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== +"tar@^6.1.11": + "integrity" "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==" + "resolved" "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz" + "version" "6.1.11" dependencies: - os-tmpdir "~1.0.2" + "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" -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== +"text-table@^0.2.0": + "integrity" "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + "version" "0.2.0" -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== +"through@^2.3.6": + "integrity" "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + "version" "2.3.8" + +"tiny-typed-emitter@^2.1.0": + "integrity" "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==" + "resolved" "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz" + "version" "2.1.0" + +"tmp@^0.0.33": + "integrity" "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==" + "resolved" "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" + "version" "0.0.33" dependencies: - is-number "^7.0.0" + "os-tmpdir" "~1.0.2" -toposort-class@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toposort-class/-/toposort-class-1.0.1.tgz#7ffd1f78c8be28c3ba45cd4e1a3f5ee193bd9988" - integrity sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg= +"to-readable-stream@^1.0.0": + "integrity" "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + "resolved" "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" + "version" "1.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== +"to-regex-range@^5.0.1": + "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" + "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + "version" "5.0.1" dependencies: - nopt "~1.0.10" + "is-number" "^7.0.0" -tough-cookie@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" - integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== +"toposort-class@^1.0.1": + "integrity" "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" + "resolved" "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz" + "version" "1.0.1" + +"touch@^3.1.0": + "integrity" "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==" + "resolved" "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz" + "version" "3.1.0" dependencies: - psl "^1.1.28" - punycode "^2.1.1" + "nopt" "~1.0.10" -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= +"tough-cookie@~2.5.0": + "integrity" "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==" + "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" + "version" "2.5.0" + dependencies: + "psl" "^1.1.28" + "punycode" "^2.1.1" -tree-kill@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" - integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== +"tr46@~0.0.3": + "integrity" "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + "resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + "version" "0.0.3" -ts-mixer@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/ts-mixer/-/ts-mixer-6.0.0.tgz#4e631d3a36e3fa9521b973b132e8353bc7267f9f" - integrity sha512-nXIb1fvdY5CBSrDIblLn73NW0qRDk5yJ0Sk1qPBF560OdJfQp9jhl+0tzcY09OZ9U+6GpeoI9RjwoIKFIoB9MQ== +"tree-kill@^1.2.2": + "integrity" "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" + "resolved" "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" + "version" "1.2.2" -ts-node@^10.4.0: - version "10.4.0" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.4.0.tgz#680f88945885f4e6cf450e7f0d6223dd404895f7" - integrity sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A== +"ts-mixer@^6.0.0": + "integrity" "sha512-nXIb1fvdY5CBSrDIblLn73NW0qRDk5yJ0Sk1qPBF560OdJfQp9jhl+0tzcY09OZ9U+6GpeoI9RjwoIKFIoB9MQ==" + "resolved" "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.0.tgz" + "version" "6.0.0" + +"ts-node@^10.4.0": + "integrity" "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==" + "resolved" "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz" + "version" "10.4.0" dependencies: "@cspotcode/source-map-support" "0.7.0" "@tsconfig/node10" "^1.0.7" "@tsconfig/node12" "^1.0.7" "@tsconfig/node14" "^1.0.0" "@tsconfig/node16" "^1.0.2" - acorn "^8.4.1" - acorn-walk "^8.1.1" - arg "^4.1.0" - create-require "^1.1.0" - diff "^4.0.1" - make-error "^1.1.1" - yn "3.1.1" + "acorn" "^8.4.1" + "acorn-walk" "^8.1.1" + "arg" "^4.1.0" + "create-require" "^1.1.0" + "diff" "^4.0.1" + "make-error" "^1.1.1" + "yn" "3.1.1" -tslib@^1.8.1, tslib@^1.9.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +"tslib@^1.8.1": + "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + "version" "1.14.1" -tslib@^2.3.0, tslib@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== +"tslib@^1.9.0": + "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + "version" "1.14.1" -tslib@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" - integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== +"tslib@^2.3.0", "tslib@^2.3.1": + "integrity" "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz" + "version" "2.3.1" -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== +"tslib@~2.1.0": + "integrity" "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz" + "version" "2.1.0" + +"tsutils@^3.21.0": + "integrity" "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==" + "resolved" "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + "version" "3.21.0" dependencies: - tslib "^1.8.1" + "tslib" "^1.8.1" -tunnel-agent@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" - integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= +"tunnel-agent@^0.6.0": + "integrity" "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=" + "resolved" "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + "version" "0.6.0" dependencies: - safe-buffer "^5.0.1" + "safe-buffer" "^5.0.1" -tweetnacl@^0.14.3, tweetnacl@~0.14.0: - version "0.14.5" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" - integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +"tweetnacl@^0.14.3", "tweetnacl@~0.14.0": + "integrity" "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" + "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + "version" "0.14.5" -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== +"type-check@^0.4.0", "type-check@~0.4.0": + "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" + "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + "version" "0.4.0" dependencies: - prelude-ls "^1.2.1" + "prelude-ls" "^1.2.1" -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== +"type-fest@^0.20.2": + "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + "version" "0.20.2" -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +"type-fest@^0.21.3": + "integrity" "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + "version" "0.21.3" -type-fest@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" - integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== +"type-fest@^0.4.1": + "integrity" "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz" + "version" "0.4.1" -type-fest@^0.8.0: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +"type-fest@^0.8.0": + "integrity" "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" + "version" "0.8.1" -type-fest@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" - integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== +"type-fest@^1.2.1": + "integrity" "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz" + "version" "1.4.0" -type-fest@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.8.0.tgz#39d7c9f9c508df8d6ce1cf5a966b0e6568dcc50d" - integrity sha512-O+V9pAshf9C6loGaH0idwsmugI2LxVNR7DtS40gVo2EXZVYFgz9OuNtOhgHLdHdapOEWNdvz9Ob/eeuaWwwlxA== +"type-fest@^2.8.0": + "integrity" "sha512-O+V9pAshf9C6loGaH0idwsmugI2LxVNR7DtS40gVo2EXZVYFgz9OuNtOhgHLdHdapOEWNdvz9Ob/eeuaWwwlxA==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-2.8.0.tgz" + "version" "2.8.0" -typed-emitter@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/typed-emitter/-/typed-emitter-1.4.0.tgz#38c6bf1224e764906bb20cb0b458fa914100607c" - integrity sha512-weBmoo3HhpKGgLBOYwe8EB31CzDFuaK7CCL+axXhUYhn4jo6DSkHnbefboCF5i4DQ2aMFe0C/FdTWcPdObgHyg== +"typed-emitter@^1.4.0": + "integrity" "sha512-weBmoo3HhpKGgLBOYwe8EB31CzDFuaK7CCL+axXhUYhn4jo6DSkHnbefboCF5i4DQ2aMFe0C/FdTWcPdObgHyg==" + "resolved" "https://registry.npmjs.org/typed-emitter/-/typed-emitter-1.4.0.tgz" + "version" "1.4.0" -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== +"typedarray-to-buffer@^3.1.5": + "integrity" "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==" + "resolved" "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" + "version" "3.1.5" dependencies: - is-typedarray "^1.0.0" + "is-typedarray" "^1.0.0" -typescript@>=4.3, typescript@^4.5.4: - version "4.5.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.5.4.tgz#a17d3a0263bf5c8723b9c52f43c5084edf13c2e8" - integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg== +"typescript@^4.5.4", "typescript@>=2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", "typescript@>=4.3": + "integrity" "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==" + "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz" + "version" "4.5.4" -undefsafe@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c" - integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== +"undefsafe@^2.0.5": + "integrity" "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + "resolved" "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz" + "version" "2.0.5" -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== +"unique-string@^2.0.0": + "integrity" "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==" + "resolved" "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" + "version" "2.0.0" dependencies: - crypto-random-string "^2.0.0" + "crypto-random-string" "^2.0.0" -universal-user-agent@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" - integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== +"universal-user-agent@^6.0.0": + "integrity" "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" + "resolved" "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz" + "version" "6.0.0" -update-notifier@5.1.0, update-notifier@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" - integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== +"update-notifier@^5.1.0", "update-notifier@5.1.0": + "integrity" "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==" + "resolved" "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz" + "version" "5.1.0" dependencies: - boxen "^5.0.0" - chalk "^4.1.0" - configstore "^5.0.1" - has-yarn "^2.1.0" - import-lazy "^2.1.0" - is-ci "^2.0.0" - is-installed-globally "^0.4.0" - is-npm "^5.0.0" - is-yarn-global "^0.3.0" - latest-version "^5.1.0" - pupa "^2.1.1" - semver "^7.3.4" - semver-diff "^3.1.1" - xdg-basedir "^4.0.0" + "boxen" "^5.0.0" + "chalk" "^4.1.0" + "configstore" "^5.0.1" + "has-yarn" "^2.1.0" + "import-lazy" "^2.1.0" + "is-ci" "^2.0.0" + "is-installed-globally" "^0.4.0" + "is-npm" "^5.0.0" + "is-yarn-global" "^0.3.0" + "latest-version" "^5.1.0" + "pupa" "^2.1.1" + "semver" "^7.3.4" + "semver-diff" "^3.1.1" + "xdg-basedir" "^4.0.0" -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== +"uri-js@^4.2.2": + "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" + "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + "version" "4.4.1" dependencies: - punycode "^2.1.0" + "punycode" "^2.1.0" -url-join@4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" - integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== +"url-join@4.0.1": + "integrity" "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" + "resolved" "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz" + "version" "4.0.1" -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= +"url-parse-lax@^3.0.0": + "integrity" "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=" + "resolved" "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" + "version" "3.0.0" dependencies: - prepend-http "^2.0.0" + "prepend-http" "^2.0.0" -util-deprecate@^1.0.1, 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= +"util-deprecate@^1.0.1", "util-deprecate@~1.0.1": + "integrity" "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "version" "1.0.2" -uuid@8.3.2, uuid@^8.1.0: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== +"uuid@^3.3.2": + "integrity" "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" + "version" "3.4.0" -uuid@^3.3.2: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +"uuid@^8.1.0", "uuid@8.3.2": + "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + "version" "8.3.2" -v8-compile-cache@^2.0.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== +"v8-compile-cache@^2.0.3": + "integrity" "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" + "resolved" "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" + "version" "2.3.0" -vali-date@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" - integrity sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY= +"vali-date@^1.0.0": + "integrity" "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=" + "resolved" "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz" + "version" "1.0.0" -validator@^13.7.0: - version "13.7.0" - resolved "https://registry.yarnpkg.com/validator/-/validator-13.7.0.tgz#4f9658ba13ba8f3d82ee881d3516489ea85c0857" - integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== +"validator@^13.7.0": + "integrity" "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" + "resolved" "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz" + "version" "13.7.0" -verror@1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" - integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= +"verror@1.10.0": + "integrity" "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=" + "resolved" "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" + "version" "1.10.0" dependencies: - assert-plus "^1.0.0" - core-util-is "1.0.2" - extsprintf "^1.2.0" + "assert-plus" "^1.0.0" + "core-util-is" "1.0.2" + "extsprintf" "^1.2.0" -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= +"wcwidth@^1.0.1": + "integrity" "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=" + "resolved" "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + "version" "1.0.1" dependencies: - defaults "^1.0.3" + "defaults" "^1.0.3" -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= +"webidl-conversions@^3.0.0": + "integrity" "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + "version" "3.0.1" -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= +"whatwg-url@^5.0.0": + "integrity" "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=" + "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + "version" "5.0.0" dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" + "tr46" "~0.0.3" + "webidl-conversions" "^3.0.0" -which-pm-runs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" - integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= +"which-pm-runs@^1.0.0": + "integrity" "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=" + "resolved" "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz" + "version" "1.0.0" -which@1, which@^1.1.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== +"which@^1.1.1": + "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" + "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + "version" "1.3.1" dependencies: - isexe "^2.0.0" + "isexe" "^2.0.0" -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== +"which@^2.0.1": + "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" + "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + "version" "2.0.2" dependencies: - isexe "^2.0.0" + "isexe" "^2.0.0" -wide-align@^1.1.0, wide-align@^1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" - integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== +"which@1": + "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" + "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + "version" "1.3.1" dependencies: - string-width "^1.0.2 || 2 || 3 || 4" + "isexe" "^2.0.0" -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== +"wide-align@^1.1.0", "wide-align@^1.1.2": + "integrity" "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==" + "resolved" "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" + "version" "1.1.5" dependencies: - string-width "^4.0.0" + "string-width" "^1.0.2 || 2 || 3 || 4" -windows-release@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/windows-release/-/windows-release-4.0.0.tgz#4725ec70217d1bf6e02c7772413b29cdde9ec377" - integrity sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg== +"widest-line@^3.1.0": + "integrity" "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==" + "resolved" "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" + "version" "3.1.0" dependencies: - execa "^4.0.2" + "string-width" "^4.0.0" -wkx@^0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/wkx/-/wkx-0.5.0.tgz#c6c37019acf40e517cc6b94657a25a3d4aa33e8c" - integrity sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg== +"windows-release@^4.0.0": + "integrity" "sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==" + "resolved" "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "execa" "^4.0.2" + +"wkx@^0.5.0": + "integrity" "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==" + "resolved" "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz" + "version" "0.5.0" dependencies: "@types/node" "*" -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== +"word-wrap@^1.2.3": + "integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" + "version" "1.2.3" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== +"wrap-ansi@^7.0.0": + "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + "version" "7.0.0" dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" + "ansi-styles" "^4.0.0" + "string-width" "^4.1.0" + "strip-ansi" "^6.0.0" -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= +"wrappy@1": + "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "version" "1.0.2" -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== +"write-file-atomic@^3.0.0": + "integrity" "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==" + "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" + "version" "3.0.3" dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" + "imurmurhash" "^0.1.4" + "is-typedarray" "^1.0.0" + "signal-exit" "^3.0.2" + "typedarray-to-buffer" "^3.1.5" -ws@^8.2.3: - version "8.4.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.4.0.tgz#f05e982a0a88c604080e8581576e2a063802bed6" - integrity sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ== +"ws@^8.2.3": + "integrity" "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==" + "resolved" "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz" + "version" "8.4.0" -xbytes@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/xbytes/-/xbytes-1.7.0.tgz#a44ca476af66c54e79f744756a035326c697bb8d" - integrity sha512-iZglBXuHoC1F7jRz7746QhicNE167tEVq2H/iYQ1jIFdYIjqL8OfM86K52csfRZm+d83/VJO8bu37jN/G1ekKQ== +"xbytes@^1.7.0": + "integrity" "sha512-iZglBXuHoC1F7jRz7746QhicNE167tEVq2H/iYQ1jIFdYIjqL8OfM86K52csfRZm+d83/VJO8bu37jN/G1ekKQ==" + "resolved" "https://registry.npmjs.org/xbytes/-/xbytes-1.7.0.tgz" + "version" "1.7.0" -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== +"xdg-basedir@^4.0.0": + "integrity" "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" + "resolved" "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz" + "version" "4.0.0" -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== +"y18n@^5.0.5": + "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + "resolved" "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + "version" "5.0.8" -yallist@^3.0.0, yallist@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== +"yallist@^3.0.0", "yallist@^3.1.1": + "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + "version" "3.1.1" -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== +"yallist@^4.0.0": + "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + "version" "4.0.0" -yaml@1.10.2, yaml@^1.10.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== +"yaml@^1.10.0", "yaml@1.10.2": + "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + "version" "1.10.2" -yargs-parser@20.2.9, yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== +"yargs-parser@^20.2.2", "yargs-parser@20.2.9": + "integrity" "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" + "version" "20.2.9" -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== +"yargs@^16.2.0": + "integrity" "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==" + "resolved" "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" + "version" "16.2.0" dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" + "cliui" "^7.0.2" + "escalade" "^3.1.1" + "get-caller-file" "^2.0.5" + "require-directory" "^2.1.1" + "string-width" "^4.2.0" + "y18n" "^5.0.5" + "yargs-parser" "^20.2.2" -yn@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" - integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== +"yn@3.1.1": + "integrity" "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" + "resolved" "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + "version" "3.1.1" -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== +"yocto-queue@^0.1.0": + "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + "version" "0.1.0" -yocto-queue@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" - integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== +"yocto-queue@^1.0.0": + "integrity" "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==" + "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz" + "version" "1.0.0" -youtube.ts@^0.2.2: - version "0.2.3" - resolved "https://registry.yarnpkg.com/youtube.ts/-/youtube.ts-0.2.3.tgz#5bfb618df4f3f31c2720eb667980e9152aae370d" - integrity sha512-KUowS4ixsIciDKo7qWAjqb+cTV37wCDQFd4YQ7Wk5nw6ZTcihCiqVfW24LKaX4kp7lH6Xj93fxVcaj78zJ/oow== +"youtube.ts@^0.2.2": + "integrity" "sha512-KUowS4ixsIciDKo7qWAjqb+cTV37wCDQFd4YQ7Wk5nw6ZTcihCiqVfW24LKaX4kp7lH6Xj93fxVcaj78zJ/oow==" + "resolved" "https://registry.npmjs.org/youtube.ts/-/youtube.ts-0.2.3.tgz" + "version" "0.2.3" dependencies: - axios "^0.19.0" - ytdl-core "^4.9.1" + "axios" "^0.19.0" + "ytdl-core" "^4.9.1" -ytdl-core@^4.9.1: - version "4.9.2" - resolved "https://registry.yarnpkg.com/ytdl-core/-/ytdl-core-4.9.2.tgz#c2d1ec44ee3cabff35e5843c6831755e69ffacf0" - integrity sha512-aTlsvsN++03MuOtyVD4DRF9Z/9UAeeuiNbjs+LjQBAiw4Hrdp48T3U9vAmRPyvREzupraY8pqRoBfKGqpq+eHA== +"ytdl-core@^4.9.1": + "integrity" "sha512-aTlsvsN++03MuOtyVD4DRF9Z/9UAeeuiNbjs+LjQBAiw4Hrdp48T3U9vAmRPyvREzupraY8pqRoBfKGqpq+eHA==" + "resolved" "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.9.2.tgz" + "version" "4.9.2" dependencies: - m3u8stream "^0.8.4" - miniget "^4.0.0" - sax "^1.1.3" + "m3u8stream" "^0.8.4" + "miniget" "^4.0.0" + "sax" "^1.1.3" -ytsr@^3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/ytsr/-/ytsr-3.5.3.tgz#88e8e2df11ce53c28b456b5510272495cb42ac3a" - integrity sha512-BEyIKbQULmk27hiVUQ1cBszAqP8roPBOQTWPZpBioKxjSZBeicfgF2qPIQoY7koodQwRuo1DmCFz3DyrXjADxg== +"ytsr@^3.5.3": + "integrity" "sha512-BEyIKbQULmk27hiVUQ1cBszAqP8roPBOQTWPZpBioKxjSZBeicfgF2qPIQoY7koodQwRuo1DmCFz3DyrXjADxg==" + "resolved" "https://registry.npmjs.org/ytsr/-/ytsr-3.5.3.tgz" + "version" "3.5.3" dependencies: - miniget "^4.2.1" + "miniget" "^4.2.1" -zod@^3.11.6: - version "3.11.6" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.11.6.tgz#e43a5e0c213ae2e02aefe7cb2b1a6fa3d7f1f483" - integrity sha512-daZ80A81I3/9lIydI44motWe6n59kRBfNzTuS2bfzVh1nAXi667TOTWWtatxyG+fwgNUiagSj/CWZwRRbevJIg== +"zod@^3.11.6": + "integrity" "sha512-daZ80A81I3/9lIydI44motWe6n59kRBfNzTuS2bfzVh1nAXi667TOTWWtatxyG+fwgNUiagSj/CWZwRRbevJIg==" + "resolved" "https://registry.npmjs.org/zod/-/zod-3.11.6.tgz" + "version" "3.11.6" From f2eec9f50150157f1a01f24900aebcc922a61277 Mon Sep 17 00:00:00 2001 From: Federico fuji97 Rapetti Date: Sun, 26 Dec 2021 04:56:55 +0100 Subject: [PATCH 12/47] Change node.js version to v17 in Dockerfile --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b58556a..2923c98 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:16.13.0-alpine AS base +FROM node:17-alpine AS base # Install ffmpeg and build dependencies RUN apk add --no-cache ffmpeg python2 make g++ From 57eef9b099bd0296659d65eddb546090dba411d7 Mon Sep 17 00:00:00 2001 From: Federico fuji97 Rapetti Date: Sun, 26 Dec 2021 18:05:09 +0100 Subject: [PATCH 13/47] Fix lint on Windows --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 13eb324..44c9434 100644 --- a/package.json +++ b/package.json @@ -17,8 +17,8 @@ "dts" ], "scripts": { - "lint": "eslint 'src/**/*.ts'", - "lint:fix": "eslint 'src/**/*.ts' --fix", + "lint": "eslint \"src/**/*.{ts,tsx}\"", + "lint:fix": "eslint '\"src/**/*.{ts,tsx}\" --fix", "clean": "rm -rf dist dts", "test": "npm run lint", "build": "tsc", From 767cbf0e6c9f50c96a2af2792909b81739e89a02 Mon Sep 17 00:00:00 2001 From: Federico fuji97 Rapetti Date: Sun, 26 Dec 2021 18:05:56 +0100 Subject: [PATCH 14/47] Rollback to Node v16.13.0 --- Dockerfile | 2 +- src/index.ts | 2 +- tsconfig.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2923c98..b58556a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM node:17-alpine AS base +FROM node:16.13.0-alpine AS base # Install ffmpeg and build dependencies RUN apk add --no-cache ffmpeg python2 make g++ diff --git a/src/index.ts b/src/index.ts index ac96352..a6b6d35 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,7 +7,7 @@ import Bot from './bot.js'; import {sequelize} from './utils/db.js'; import Config from './services/config.js'; import FileCacheProvider from './services/file-cache.js'; -import metadata from '../package.json' assert {type: "json"}; +import metadata from '../package.json'; const bot = container.get(TYPES.Bot); diff --git a/tsconfig.json b/tsconfig.json index 1c0987e..28b7f7d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,7 @@ "compilerOptions": { "lib": ["ES2019", "DOM"], "target": "es2018", - "module": "esnext", + "module": "es2022", "moduleResolution": "node", "declaration": true, "outDir": "dist", From 7298ae15623c069fa297321ba51b3d66957cc542 Mon Sep 17 00:00:00 2001 From: Federico fuji97 Rapetti Date: Sun, 26 Dec 2021 18:06:24 +0100 Subject: [PATCH 15/47] Update remove command to slash command --- src/commands/remove.ts | 41 ++++++++++++++++++++++++++++++++++------- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/src/commands/remove.ts b/src/commands/remove.ts index 9c40a71..f0c1b15 100644 --- a/src/commands/remove.ts +++ b/src/commands/remove.ts @@ -1,18 +1,26 @@ -import {Message} from 'discord.js'; +import {CommandInteraction, Message} from 'discord.js'; import {inject, injectable} from 'inversify'; import {TYPES} from '../types.js'; import PlayerManager from '../managers/player.js'; import Command from '.'; import errorMsg from '../utils/error-msg.js'; +import {SlashCommandBuilder} from '@discordjs/builders'; @injectable() export default class implements Command { - public name = 'remove'; - public aliases = ['rm']; - public examples = [ - ['remove 1', 'removes the next song in the queue'], - ['rm 5-7', 'remove every song in range 5 - 7 (inclusive) from the queue'], - ]; + public readonly slashCommand = new SlashCommandBuilder() + .setName('remove') + // TODO: make sure verb tense is consistent between all command descriptions + .setDescription('remove songs from the queue') + .addIntegerOption(option => + option.setName('position') + .setDescription('position of the song to remove [default: 1]') + .setRequired(false), + ) + .addIntegerOption(option => + option.setName('range') + .setDescription('number of songs to remove [default: 1]') + .setRequired(false)); private readonly playerManager: PlayerManager; @@ -20,6 +28,25 @@ export default class implements Command { this.playerManager = playerManager; } + public async executeFromInteraction(interaction: CommandInteraction): Promise { + const player = this.playerManager.get(interaction.guild!.id); + + const position = interaction.options.getInteger('position') ?? 1; + const range = interaction.options.getInteger('range') ?? 1; + + if (position < 1) { + await interaction.reply('position must be greater than 0'); + } + + if (range < 1) { + await interaction.reply('range must be greater than 0'); + } + + player.removeFromQueue(position, range); + + await interaction.reply(':wastebasket: removed'); + } + public async execute(msg: Message, args: string []): Promise { const player = this.playerManager.get(msg.guild!.id); From 995c0360fe2ae11e9c9c2c82f8bdd81966e2919b Mon Sep 17 00:00:00 2001 From: Federico fuji97 Rapetti Date: Sun, 26 Dec 2021 19:44:17 +0100 Subject: [PATCH 16/47] Change module version to ES2020 --- src/events/guild-create.ts | 8 +------- tsconfig.json | 2 +- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/src/events/guild-create.ts b/src/events/guild-create.ts index 38f6e6c..722b736 100644 --- a/src/events/guild-create.ts +++ b/src/events/guild-create.ts @@ -1,10 +1,4 @@ -import { - Guild, - TextChannel, - Message, - MessageReaction, - User, - ApplicationCommandData, +import {Guild, TextChannel, Message, MessageReaction, User, ApplicationCommandData, } from 'discord.js'; import emoji from 'node-emoji'; import pEvent from 'p-event'; diff --git a/tsconfig.json b/tsconfig.json index 28b7f7d..2970aa3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,7 @@ "compilerOptions": { "lib": ["ES2019", "DOM"], "target": "es2018", - "module": "es2022", + "module": "ES2020", "moduleResolution": "node", "declaration": true, "outDir": "dist", From 1890f264ac2cf9e51d58707772f27a7500bdfc4d Mon Sep 17 00:00:00 2001 From: Federico fuji97 Rapetti Date: Mon, 27 Dec 2021 16:43:23 +0100 Subject: [PATCH 17/47] Refactor skip command as slash command --- src/commands/skip.ts | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/commands/skip.ts b/src/commands/skip.ts index 4bab307..e38204c 100644 --- a/src/commands/skip.ts +++ b/src/commands/skip.ts @@ -1,10 +1,11 @@ -import {Message, TextChannel} from 'discord.js'; +import {CommandInteraction, Message, TextChannel} from 'discord.js'; import {TYPES} from '../types.js'; import {inject, injectable} from 'inversify'; import PlayerManager from '../managers/player.js'; import Command from '.'; import LoadingMessage from '../utils/loading-message.js'; import errorMsg from '../utils/error-msg.js'; +import {SlashCommandBuilder} from '@discordjs/builders'; @injectable() export default class implements Command { @@ -15,6 +16,15 @@ export default class implements Command { ['skip 2', 'skips the next 2 songs'], ]; + public readonly slashCommand = new SlashCommandBuilder() + .setName('skip') + // TODO: make sure verb tense is consistent between all command descriptions + .setDescription('skips the next songs') + .addIntegerOption(option => option + .setName('number') + .setDescription('number of songs to skip [default: 1]') + .setRequired(false)); + public requiresVC = true; private readonly playerManager: PlayerManager; @@ -23,6 +33,23 @@ export default class implements Command { this.playerManager = playerManager; } + public async executeFromInteraction(interaction: CommandInteraction): Promise { + const numToSkip = interaction.options.getInteger('skip') ?? 1; + + if (numToSkip < 1) { + await interaction.reply({content: errorMsg('invalid number of songs to skip'), ephemeral: true}); + } + + const player = this.playerManager.get(interaction.guild!.id); + + try { + await player.forward(numToSkip); + await interaction.reply('keep \'er movin\''); + } catch (_: unknown) { + await interaction.reply({content: errorMsg('invalid number of songs to skip'), ephemeral: true}); + } + } + public async execute(msg: Message, args: string []): Promise { let numToSkip = 1; From 29c32ce65ec0c7103e4c895ec6e98207eb298ae6 Mon Sep 17 00:00:00 2001 From: Federico fuji97 Rapetti Date: Mon, 27 Dec 2021 16:53:36 +0100 Subject: [PATCH 18/47] Refactor unskip command as slash command --- src/commands/unskip.ts | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/commands/unskip.ts b/src/commands/unskip.ts index a453448..8945553 100644 --- a/src/commands/unskip.ts +++ b/src/commands/unskip.ts @@ -1,12 +1,17 @@ -import {Message} from 'discord.js'; +import {CommandInteraction, Message} from 'discord.js'; import {TYPES} from '../types.js'; import {inject, injectable} from 'inversify'; import PlayerManager from '../managers/player.js'; import errorMsg from '../utils/error-msg.js'; import Command from '.'; +import {SlashCommandBuilder} from '@discordjs/builders'; @injectable() export default class implements Command { + public readonly slashCommand = new SlashCommandBuilder() + .setName('unskip') + .setDescription('goes back in the queue by one song'); + public name = 'unskip'; public aliases = ['back']; public examples = [ @@ -21,6 +26,21 @@ export default class implements Command { this.playerManager = playerManager; } + public async executeFromInteraction(interaction: CommandInteraction): Promise { + const player = this.playerManager.get(interaction.guild!.id); + + try { + await player.back(); + + await interaction.reply('back \'er up\''); + } catch (_: unknown) { + await interaction.reply({ + content: errorMsg('no song to go back to'), + ephemeral: true, + }); + } + } + public async execute(msg: Message, _: string []): Promise { const player = this.playerManager.get(msg.guild!.id); From e7a87c4f529b85cf03a8a8cfc009336fd85334c9 Mon Sep 17 00:00:00 2001 From: Federico fuji97 Rapetti Date: Mon, 27 Dec 2021 16:56:19 +0100 Subject: [PATCH 19/47] Remove old functions from commands --- src/commands/remove.ts | 67 ++++++------------------------------------ src/commands/skip.ts | 3 +- src/commands/unskip.ts | 20 +------------ 3 files changed, 11 insertions(+), 79 deletions(-) diff --git a/src/commands/remove.ts b/src/commands/remove.ts index f0c1b15..76ba901 100644 --- a/src/commands/remove.ts +++ b/src/commands/remove.ts @@ -1,4 +1,4 @@ -import {CommandInteraction, Message} from 'discord.js'; +import {CommandInteraction} from 'discord.js'; import {inject, injectable} from 'inversify'; import {TYPES} from '../types.js'; import PlayerManager from '../managers/player.js'; @@ -10,7 +10,6 @@ import {SlashCommandBuilder} from '@discordjs/builders'; export default class implements Command { public readonly slashCommand = new SlashCommandBuilder() .setName('remove') - // TODO: make sure verb tense is consistent between all command descriptions .setDescription('remove songs from the queue') .addIntegerOption(option => option.setName('position') @@ -35,69 +34,21 @@ export default class implements Command { const range = interaction.options.getInteger('range') ?? 1; if (position < 1) { - await interaction.reply('position must be greater than 0'); + await interaction.reply({ + content: errorMsg('position must be greater than 0'), + ephemeral: true, + }); } if (range < 1) { - await interaction.reply('range must be greater than 0'); + await interaction.reply({ + content: errorMsg('range must be greater than 0'), + ephemeral: true, + }); } player.removeFromQueue(position, range); await interaction.reply(':wastebasket: removed'); } - - public async execute(msg: Message, args: string []): Promise { - const player = this.playerManager.get(msg.guild!.id); - - if (args.length === 0) { - await msg.channel.send(errorMsg('missing song position or range')); - return; - } - - const reg = /^(\d+)-(\d+)$|^(\d+)$/g; // Expression has 3 groups: x-y or z. x-y is range, z is a single digit. - const match = reg.exec(args[0]); - - if (match === null) { - await msg.channel.send(errorMsg('incorrect format')); - return; - } - - if (match[3] === undefined) { // 3rd group (z) doesn't exist -> a range - const range = [parseInt(match[1], 10), parseInt(match[2], 10)]; - - if (range[0] < 1) { - await msg.channel.send(errorMsg('position must be greater than 0')); - return; - } - - if (range[1] > player.queueSize()) { - await msg.channel.send(errorMsg('position is outside of the queue\'s range')); - return; - } - - if (range[0] < range[1]) { - player.removeFromQueue(range[0], range[1] - range[0] + 1); - } else { - await msg.channel.send(errorMsg('range is backwards')); - return; - } - } else { // 3rd group exists -> just one song - const index = parseInt(match[3], 10); - - if (index < 1) { - await msg.channel.send(errorMsg('position must be greater than 0')); - return; - } - - if (index > player.queueSize()) { - await msg.channel.send(errorMsg('position is outside of the queue\'s range')); - return; - } - - player.removeFromQueue(index, 1); - } - - await msg.channel.send(':wastebasket: removed'); - } } diff --git a/src/commands/skip.ts b/src/commands/skip.ts index e38204c..93b8bc3 100644 --- a/src/commands/skip.ts +++ b/src/commands/skip.ts @@ -18,8 +18,7 @@ export default class implements Command { public readonly slashCommand = new SlashCommandBuilder() .setName('skip') - // TODO: make sure verb tense is consistent between all command descriptions - .setDescription('skips the next songs') + .setDescription('skips the next songs') .addIntegerOption(option => option .setName('number') .setDescription('number of songs to skip [default: 1]') diff --git a/src/commands/unskip.ts b/src/commands/unskip.ts index 8945553..6842498 100644 --- a/src/commands/unskip.ts +++ b/src/commands/unskip.ts @@ -1,4 +1,4 @@ -import {CommandInteraction, Message} from 'discord.js'; +import {CommandInteraction} from 'discord.js'; import {TYPES} from '../types.js'; import {inject, injectable} from 'inversify'; import PlayerManager from '../managers/player.js'; @@ -12,12 +12,6 @@ export default class implements Command { .setName('unskip') .setDescription('goes back in the queue by one song'); - public name = 'unskip'; - public aliases = ['back']; - public examples = [ - ['unskip', 'goes back in the queue by one song'], - ]; - public requiresVC = true; private readonly playerManager: PlayerManager; @@ -40,16 +34,4 @@ export default class implements Command { }); } } - - public async execute(msg: Message, _: string []): Promise { - const player = this.playerManager.get(msg.guild!.id); - - try { - await player.back(); - - await msg.channel.send('back \'er up\''); - } catch (_: unknown) { - await msg.channel.send(errorMsg('no song to go back to')); - } - } } From 65e1f975b9653a8baafdf023d6e14bac2856fc19 Mon Sep 17 00:00:00 2001 From: Federico fuji97 Rapetti Date: Mon, 27 Dec 2021 18:26:37 +0100 Subject: [PATCH 20/47] Refactor seek command as slash command --- src/commands/seek.ts | 57 ++++++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/src/commands/seek.ts b/src/commands/seek.ts index 5578aca..708567f 100644 --- a/src/commands/seek.ts +++ b/src/commands/seek.ts @@ -1,21 +1,22 @@ -import {Message, TextChannel} from 'discord.js'; +import {CommandInteraction} from 'discord.js'; import {TYPES} from '../types.js'; import {inject, injectable} from 'inversify'; import PlayerManager from '../managers/player.js'; -import LoadingMessage from '../utils/loading-message.js'; import errorMsg from '../utils/error-msg.js'; import Command from '.'; -import {parseTime} from '../utils/time.js'; +import {parseTime, prettyTime} from '../utils/time.js'; +import {SlashCommandBuilder} from '@discordjs/builders'; @injectable() export default class implements Command { - public name = 'seek'; - public aliases = []; - public examples = [ - ['seek 10', 'seeks to 10 seconds from beginning of song'], - ['seek 1:30', 'seeks to 1 minute and 30 seconds from beginning of song'], - ['seek 1:00:00', 'seeks to 1 hour from beginning of song'], - ]; + public readonly slashCommand = new SlashCommandBuilder() + .setName('seek') + .setDescription('seek to a position from beginning of song') + .addStringOption(option => + option.setName('time') + .setDescription('time to seek') + .setRequired(true), + ); public requiresVC = true; @@ -25,22 +26,28 @@ export default class implements Command { this.playerManager = playerManager; } - public async execute(msg: Message, args: string []): Promise { - const player = this.playerManager.get(msg.guild!.id); + public async executeFromInteraction(interaction: CommandInteraction): Promise { + const player = this.playerManager.get(interaction.guild!.id); const currentSong = player.getCurrent(); if (!currentSong) { - await msg.channel.send(errorMsg('nothing is playing')); + await interaction.reply({ + content: errorMsg('nothing is playing'), + ephemeral: true, + }); return; } if (currentSong.isLive) { - await msg.channel.send(errorMsg('can\'t seek in a livestream')); + await interaction.reply({ + content: errorMsg('can\'t seek in a livestream'), + ephemeral: true, + }); return; } - const time = args[0]; + const time = interaction.options.getString('time')!; let seekTime = 0; @@ -51,20 +58,18 @@ export default class implements Command { } if (seekTime > currentSong.length) { - await msg.channel.send(errorMsg('can\'t seek past the end of the song')); + await interaction.reply({ + content: errorMsg('can\'t seek past the end of the song'), + ephemeral: true, + }); return; } - const loading = new LoadingMessage(msg.channel as TextChannel); + await Promise.all([ + player.seek(seekTime), + interaction.deferReply(), + ]); - await loading.start(); - - try { - await player.seek(seekTime); - - await loading.stop(); - } catch (error: unknown) { - await loading.stop(errorMsg(error as Error)); - } + await interaction.editReply(`👍 seeked to ${prettyTime(player.getPosition())}`); } } From 55d8a2e97b6391e000af59c1e86966edc4e4aa81 Mon Sep 17 00:00:00 2001 From: Federico fuji97 Rapetti Date: Mon, 27 Dec 2021 18:41:26 +0100 Subject: [PATCH 21/47] Refactor shuffle command as slash command --- src/commands/shuffle.ts | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/commands/shuffle.ts b/src/commands/shuffle.ts index d50f0b3..f560e41 100644 --- a/src/commands/shuffle.ts +++ b/src/commands/shuffle.ts @@ -1,17 +1,16 @@ -import {Message} from 'discord.js'; +import {CommandInteraction} from 'discord.js'; import {TYPES} from '../types.js'; import {inject, injectable} from 'inversify'; import PlayerManager from '../managers/player.js'; import errorMsg from '../utils/error-msg.js'; import Command from '.'; +import {SlashCommandBuilder} from '@discordjs/builders'; @injectable() export default class implements Command { - public name = 'shuffle'; - public aliases = []; - public examples = [ - ['shuffle', 'shuffles the current queue'], - ]; + public readonly slashCommand = new SlashCommandBuilder() + .setName('shuffle') + .setDescription('shuffles the current queue'); public requiresVC = true; @@ -21,16 +20,19 @@ export default class implements Command { this.playerManager = playerManager; } - public async execute(msg: Message, _: string []): Promise { - const player = this.playerManager.get(msg.guild!.id); + public async executeFromInteraction(interaction: CommandInteraction): Promise { + const player = this.playerManager.get(interaction.guild!.id); if (player.isQueueEmpty()) { - await msg.channel.send(errorMsg('not enough songs to shuffle')); + await interaction.reply({ + content: errorMsg('not enough songs to shuffle'), + ephemeral: true, + }); return; } player.shuffle(); - await msg.channel.send('shuffled'); + await interaction.reply('shuffled'); } } From 83fa78e9fad8a217b7eaef28903d388e53854cf2 Mon Sep 17 00:00:00 2001 From: Max Isom Date: Mon, 27 Dec 2021 22:58:22 -0600 Subject: [PATCH 22/47] Fix invite scope --- src/bot.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bot.ts b/src/bot.ts index b9c31a7..d59fb9f 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -112,7 +112,7 @@ export default class { this.client.once('ready', () => { debug(generateDependencyReport()); - spinner.succeed(`Ready! Invite the bot with https://discordapp.com/oauth2/authorize?client_id=${this.client.user?.id ?? ''}&scope=bot&permissions=2184236096`); + spinner.succeed(`Ready! Invite the bot with https://discordapp.com/oauth2/authorize?client_id=${this.client.user?.id ?? ''}&scope=bot%20applications.commands&permissions=2184236096`); }); this.client.on('error', console.error); From ac1fef836fed6ffe5be9830c73a06e29c70628c8 Mon Sep 17 00:00:00 2001 From: Federico fuji97 Rapetti Date: Mon, 10 Jan 2022 19:41:43 +0100 Subject: [PATCH 23/47] Change welcome message to use slash command --- src/events/guild-create.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/events/guild-create.ts b/src/events/guild-create.ts index 722b736..6263673 100644 --- a/src/events/guild-create.ts +++ b/src/events/guild-create.ts @@ -86,7 +86,7 @@ export default async (guild: Guild): Promise => { // Send welcome const boundChannel = guild.client.channels.cache.get(chosenChannel.id) as TextChannel; - await boundChannel.send(`hey <@${owner.id}> try \`${prefixCharacter}play https://www.youtube.com/watch?v=dQw4w9WgXcQ\``); + await boundChannel.send(`hey <@${owner.id}> try \`\\play https://www.youtube.com/watch?v=dQw4w9WgXcQ\``); await firstStepMsg.channel.send(`Sounds good. Check out **#${chosenChannel.name}** to get started.`); }; From ab164353c1151666a8ed339fd753099391a1f08d Mon Sep 17 00:00:00 2001 From: Federico fuji97 Rapetti Date: Mon, 10 Jan 2022 20:13:50 +0100 Subject: [PATCH 24/47] Refactor bot commands update system --- src/bot.ts | 28 ++++++++++++++++++++++------ src/events/guild-create.ts | 15 ++++++++++----- src/services/config.ts | 2 ++ 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/src/bot.ts b/src/bot.ts index fd606cf..bcd6c20 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -18,17 +18,22 @@ import {Routes} from 'discord-api-types/v9'; export default class { private readonly client: Client; private readonly token: string; + private readonly env: string; private readonly commandsByName!: Collection; private readonly commandsByButtonId!: Collection; constructor(@inject(TYPES.Client) client: Client, @inject(TYPES.Config) config: Config) { this.client = client; this.token = config.DISCORD_TOKEN; + this.env = config.NODE_ENV; this.commandsByName = new Collection(); this.commandsByButtonId = new Collection(); } public async listen(): Promise { + // Log environment + console.log(`Starting environment: ${this.env}\n`); + // Load in commands container.getAll(TYPES.Command).forEach(command => { // TODO: remove ! @@ -117,12 +122,23 @@ export default class { // Update commands const rest = new REST({version: '9'}).setToken(this.token); - this.client.guilds.cache.each(async guild => { - await rest.put( - Routes.applicationGuildCommands(this.client.user!.id, guild.id), - {body: this.commandsByName.map(command => command.slashCommand ? command.slashCommand.toJSON() : null)}, - ); - }); + switch (this.env) { + case 'production': + // If production, set commands bot-wide + await rest.put( + Routes.applicationCommands(this.client.user!.id), + {body: this.commandsByName.map(command => command.slashCommand ? command.slashCommand.toJSON() : null)}, + ); + break; + default: + // If development, set commands guild-wide + this.client.guilds.cache.each(async guild => { + await rest.put( + Routes.applicationGuildCommands(this.client.user!.id, guild.id), + {body: this.commandsByName.map(command => command.slashCommand ? command.slashCommand.toJSON() : null)}, + ); + }); + } spinner.succeed(`Ready! Invite the bot with https://discordapp.com/oauth2/authorize?client_id=${this.client.user?.id ?? ''}&scope=applications.commands%20bot&permissions=2184236096`); }); diff --git a/src/events/guild-create.ts b/src/events/guild-create.ts index 6263673..5e0ee59 100644 --- a/src/events/guild-create.ts +++ b/src/events/guild-create.ts @@ -7,18 +7,23 @@ import {chunk} from '../utils/arrays.js'; import container from '../inversify.config.js'; import Command from '../commands'; import {TYPES} from '../types.js'; +import Config from '../services/config.js'; const DEFAULT_PREFIX = '!'; export default async (guild: Guild): Promise => { await Settings.upsert({guildId: guild.id, prefix: DEFAULT_PREFIX}); - // Setup slash commands - const commands: ApplicationCommandData[] = container.getAll(TYPES.Command) - .filter(command => command.slashCommand?.name) - .map(command => command.slashCommand as ApplicationCommandData); + const config = container.get(TYPES.Config); - await guild.commands.set(commands); + // Setup slash commands + if (config.NODE_ENV === 'production') { + const commands: ApplicationCommandData[] = container.getAll(TYPES.Command) + .filter(command => command.slashCommand?.name) + .map(command => command.slashCommand as ApplicationCommandData); + + await guild.commands.set(commands); + } const owner = await guild.client.users.fetch(guild.ownerId); diff --git a/src/services/config.ts b/src/services/config.ts index 96b161c..838873f 100644 --- a/src/services/config.ts +++ b/src/services/config.ts @@ -12,6 +12,7 @@ const CONFIG_MAP = { YOUTUBE_API_KEY: process.env.YOUTUBE_API_KEY, SPOTIFY_CLIENT_ID: process.env.SPOTIFY_CLIENT_ID, SPOTIFY_CLIENT_SECRET: process.env.SPOTIFY_CLIENT_SECRET, + NODE_ENV: process.env.NODE_ENV ?? 'development', DATA_DIR, CACHE_DIR: path.join(DATA_DIR, 'cache'), CACHE_LIMIT_IN_BYTES: xbytes.parseSize(process.env.CACHE_LIMIT ?? '2GB'), @@ -23,6 +24,7 @@ export default class Config { readonly YOUTUBE_API_KEY!: string; readonly SPOTIFY_CLIENT_ID!: string; readonly SPOTIFY_CLIENT_SECRET!: string; + readonly NODE_ENV!: string; readonly DATA_DIR!: string; readonly CACHE_DIR!: string; readonly CACHE_LIMIT_IN_BYTES!: number; From e4a4b523243337a474a39e2386bed6578f97bb83 Mon Sep 17 00:00:00 2001 From: Federico fuji97 Rapetti Date: Mon, 10 Jan 2022 20:18:48 +0100 Subject: [PATCH 25/47] Update Docker templates in README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 069f41d..292355e 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ There are a variety of image tags available: (Replace empty config strings with correct values.) ```bash -docker run -it -v "$(pwd)/data":/data -e DISCORD_TOKEN='' -e SPOTIFY_CLIENT_ID='' -e SPOTIFY_CLIENT_SECRET='' -e YOUTUBE_API_KEY='' codetheweb/muse:latest +docker run -it -v "$(pwd)/data":/data -e DISCORD_TOKEN='' -e SPOTIFY_CLIENT_ID='' -e SPOTIFY_CLIENT_SECRET='' -e YOUTUBE_API_KEY='' -e NODE_ENV='development' codetheweb/muse:latest ``` This starts Muse and creates a data directory in your current directory. @@ -69,6 +69,7 @@ services: - YOUTUBE_API_KEY= - SPOTIFY_CLIENT_ID= - SPOTIFY_CLIENT_SECRET= + - NODE_ENV=development ``` #### Node.js From ce686b42815c4f7a1e87496612a647009da7a741 Mon Sep 17 00:00:00 2001 From: Federico fuji97 Rapetti Date: Mon, 10 Jan 2022 22:02:55 +0100 Subject: [PATCH 26/47] Fix lint commands and lint errors --- package.json | 2 +- src/bot.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 44c9434..6e33002 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ ], "scripts": { "lint": "eslint \"src/**/*.{ts,tsx}\"", - "lint:fix": "eslint '\"src/**/*.{ts,tsx}\" --fix", + "lint:fix": "eslint \"src/**/*.{ts,tsx}\" --fix", "clean": "rm -rf dist dts", "test": "npm run lint", "build": "tsc", diff --git a/src/bot.ts b/src/bot.ts index b2e591b..d42a718 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -139,7 +139,7 @@ export default class { ); }); } - + spinner.succeed(`Ready! Invite the bot with https://discordapp.com/oauth2/authorize?client_id=${this.client.user?.id ?? ''}&scope=bot%20applications.commands&permissions=2184236096`); }); From 19848ba9f71cb59c4e1b5a6a7e2ea567a192365f Mon Sep 17 00:00:00 2001 From: Federico fuji97 Rapetti Date: Tue, 11 Jan 2022 23:33:12 +0100 Subject: [PATCH 27/47] Edit Docker templates --- Dockerfile | 1 + README.md | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index b58556a..2a8ac5a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -30,5 +30,6 @@ FROM base AS prod COPY --from=builder /usr/app/dist dist ENV DATA_DIR /data +ENV NODE_ENV production CMD ["yarn", "start"] diff --git a/README.md b/README.md index 292355e..e1145f6 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ services: - YOUTUBE_API_KEY= - SPOTIFY_CLIENT_ID= - SPOTIFY_CLIENT_SECRET= - - NODE_ENV=development + # - NODE_ENV=production ``` #### Node.js From 03fdf1aab7ff5278f22c7dda9fc77e49c458d76a Mon Sep 17 00:00:00 2001 From: Federico fuji97 Rapetti Date: Wed, 12 Jan 2022 00:47:54 +0100 Subject: [PATCH 28/47] Refactor production checks --- src/bot.ts | 33 +++++++++++++++++---------------- src/events/guild-create.ts | 2 +- src/services/config.ts | 4 ++-- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/bot.ts b/src/bot.ts index d42a718..74b56d8 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -18,21 +18,25 @@ import {Routes} from 'discord-api-types/v9'; export default class { private readonly client: Client; private readonly token: string; - private readonly env: string; + private readonly isProduction: boolean; private readonly commandsByName!: Collection; private readonly commandsByButtonId!: Collection; constructor(@inject(TYPES.Client) client: Client, @inject(TYPES.Config) config: Config) { this.client = client; this.token = config.DISCORD_TOKEN; - this.env = config.NODE_ENV; + this.isProduction = config.IS_PRODUCTION; this.commandsByName = new Collection(); this.commandsByButtonId = new Collection(); } public async listen(): Promise { // Log environment - console.log(`Starting environment: ${this.env}\n`); + if (this.isProduction) { + console.log('Production environment\n'); + } else { + console.log('Development environment\n'); + } // Load in commands container.getAll(TYPES.Command).forEach(command => { @@ -122,22 +126,19 @@ export default class { // Update commands const rest = new REST({version: '9'}).setToken(this.token); - switch (this.env) { - case 'production': - // If production, set commands bot-wide + if (this.isProduction) { + await rest.put( + Routes.applicationCommands(this.client.user!.id), + {body: this.commandsByName.map(command => command.slashCommand ? command.slashCommand.toJSON() : null)}, + ); + } else { + // If development, set commands guild-wide + this.client.guilds.cache.each(async guild => { await rest.put( - Routes.applicationCommands(this.client.user!.id), + Routes.applicationGuildCommands(this.client.user!.id, guild.id), {body: this.commandsByName.map(command => command.slashCommand ? command.slashCommand.toJSON() : null)}, ); - break; - default: - // If development, set commands guild-wide - this.client.guilds.cache.each(async guild => { - await rest.put( - Routes.applicationGuildCommands(this.client.user!.id, guild.id), - {body: this.commandsByName.map(command => command.slashCommand ? command.slashCommand.toJSON() : null)}, - ); - }); + }); } spinner.succeed(`Ready! Invite the bot with https://discordapp.com/oauth2/authorize?client_id=${this.client.user?.id ?? ''}&scope=bot%20applications.commands&permissions=2184236096`); diff --git a/src/events/guild-create.ts b/src/events/guild-create.ts index 5e0ee59..c305527 100644 --- a/src/events/guild-create.ts +++ b/src/events/guild-create.ts @@ -17,7 +17,7 @@ export default async (guild: Guild): Promise => { const config = container.get(TYPES.Config); // Setup slash commands - if (config.NODE_ENV === 'production') { + if (config.IS_PRODUCTION) { const commands: ApplicationCommandData[] = container.getAll(TYPES.Command) .filter(command => command.slashCommand?.name) .map(command => command.slashCommand as ApplicationCommandData); diff --git a/src/services/config.ts b/src/services/config.ts index 838873f..ae7ef4b 100644 --- a/src/services/config.ts +++ b/src/services/config.ts @@ -12,7 +12,7 @@ const CONFIG_MAP = { YOUTUBE_API_KEY: process.env.YOUTUBE_API_KEY, SPOTIFY_CLIENT_ID: process.env.SPOTIFY_CLIENT_ID, SPOTIFY_CLIENT_SECRET: process.env.SPOTIFY_CLIENT_SECRET, - NODE_ENV: process.env.NODE_ENV ?? 'development', + IS_PRODUCTION: process.env.NODE_ENV === 'production', DATA_DIR, CACHE_DIR: path.join(DATA_DIR, 'cache'), CACHE_LIMIT_IN_BYTES: xbytes.parseSize(process.env.CACHE_LIMIT ?? '2GB'), @@ -24,7 +24,7 @@ export default class Config { readonly YOUTUBE_API_KEY!: string; readonly SPOTIFY_CLIENT_ID!: string; readonly SPOTIFY_CLIENT_SECRET!: string; - readonly NODE_ENV!: string; + readonly IS_PRODUCTION!: boolean; readonly DATA_DIR!: string; readonly CACHE_DIR!: string; readonly CACHE_LIMIT_IN_BYTES!: number; From 732a3bb87acd1e6c8e500f1615a549b311961bea Mon Sep 17 00:00:00 2001 From: "Federico \"fuji97\" Rapetti" Date: Thu, 13 Jan 2022 12:51:56 +0100 Subject: [PATCH 29/47] Fix typo in guild-create.ts --- src/events/guild-create.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/events/guild-create.ts b/src/events/guild-create.ts index c305527..008e22b 100644 --- a/src/events/guild-create.ts +++ b/src/events/guild-create.ts @@ -17,7 +17,7 @@ export default async (guild: Guild): Promise => { const config = container.get(TYPES.Config); // Setup slash commands - if (config.IS_PRODUCTION) { + if (!config.IS_PRODUCTION) { const commands: ApplicationCommandData[] = container.getAll(TYPES.Command) .filter(command => command.slashCommand?.name) .map(command => command.slashCommand as ApplicationCommandData); From 0f0c3eb6813391917c604629ae0523da3f35f012 Mon Sep 17 00:00:00 2001 From: "Federico \"fuji97\" Rapetti" Date: Thu, 13 Jan 2022 12:59:18 +0100 Subject: [PATCH 30/47] Wrap guild-wise command set code in a Promise.all() to correctly wait the API to resolve --- src/bot.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/bot.ts b/src/bot.ts index 74b56d8..cb10d1b 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -13,6 +13,7 @@ import Config from './services/config.js'; import {generateDependencyReport} from '@discordjs/voice'; import {REST} from '@discordjs/rest'; import {Routes} from 'discord-api-types/v9'; +import {Promise} from 'bluebird'; @injectable() export default class { @@ -133,12 +134,14 @@ export default class { ); } else { // If development, set commands guild-wide - this.client.guilds.cache.each(async guild => { - await rest.put( - Routes.applicationGuildCommands(this.client.user!.id, guild.id), - {body: this.commandsByName.map(command => command.slashCommand ? command.slashCommand.toJSON() : null)}, - ); - }); + await Promise.all( + this.client.guilds.cache.map(async guild => { + await rest.put( + Routes.applicationGuildCommands(this.client.user!.id, guild.id), + {body: this.commandsByName.map(command => command.slashCommand ? command.slashCommand.toJSON() : null)}, + ); + }), + ); } spinner.succeed(`Ready! Invite the bot with https://discordapp.com/oauth2/authorize?client_id=${this.client.user?.id ?? ''}&scope=bot%20applications.commands&permissions=2184236096`); From 86e9936578d19c2115fc03acae1794532a09d62e Mon Sep 17 00:00:00 2001 From: Max Isom Date: Tue, 18 Jan 2022 22:09:07 -0600 Subject: [PATCH 31/47] Update README, naming --- README.md | 23 +- src/bot.ts | 21 +- src/events/guild-create.ts | 2 +- src/services/config.ts | 6 +- yarn.lock | 6878 ++++++++++++++++++------------------ 5 files changed, 3416 insertions(+), 3514 deletions(-) diff --git a/README.md b/README.md index e1145f6..f614548 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Muse is a **highly-opinionated midwestern self-hosted** Discord music bot **that doesn't suck**. It's made for small to medium-sized Discord servers/guilds (think about a group the size of you, your friends, and your friend's friends). -### Features +## Features - đŸŽĨ Livestreams - ⏊ Seeking within a song/video @@ -16,11 +16,11 @@ Muse is a **highly-opinionated midwestern self-hosted** Discord music bot **that - ✍ī¸ Written in TypeScript, easily extendable - ❤ī¸ Loyal Packers fan -### Design Philosophy +## Design Philosophy I believe it makes much more sense to let Discord handle user permissions (whenever possible) rather than building them into a bot and adding additional complexity. Instead of only allowing users with a certain role to control Muse, Muse allows anyone who has access to its bound channel to control it. Instead of specifying the owner as a user ID in the config, Muse simply looks at the guild owner. -### Running +## Running Muse is written in TypeScript. You can either run Muse with Docker (recommended) or directly with Node.js. Both methods require API keys passed in as environment variables: @@ -30,14 +30,14 @@ Muse is written in TypeScript. You can either run Muse with Docker (recommended) Muse will log a URL when run. Open this URL in a browser to invite Muse to your server. Muse will DM the server owner after it's added with setup instructions. -#### Versioning +### Versioning The `master` branch acts as the developing / bleeding edge branch and is not guaranteed to be stable. When running a production instance, I recommend that you use the [latest release](https://github.com/codetheweb/muse/releases/). -#### Docker +### đŸŗ Docker There are a variety of image tags available: - `:2`: versions >= 2.0.0 @@ -48,7 +48,7 @@ There are a variety of image tags available: (Replace empty config strings with correct values.) ```bash -docker run -it -v "$(pwd)/data":/data -e DISCORD_TOKEN='' -e SPOTIFY_CLIENT_ID='' -e SPOTIFY_CLIENT_SECRET='' -e YOUTUBE_API_KEY='' -e NODE_ENV='development' codetheweb/muse:latest +docker run -it -v "$(pwd)/data":/data -e DISCORD_TOKEN='' -e SPOTIFY_CLIENT_ID='' -e SPOTIFY_CLIENT_SECRET='' -e YOUTUBE_API_KEY='' codetheweb/muse:latest ``` This starts Muse and creates a data directory in your current directory. @@ -69,10 +69,9 @@ services: - YOUTUBE_API_KEY= - SPOTIFY_CLIENT_ID= - SPOTIFY_CLIENT_SECRET= - # - NODE_ENV=production ``` -#### Node.js +### Node.js **Prerequisites**: Node.js, ffmpeg @@ -85,6 +84,12 @@ services: **Note**: if you're on Windows, you may need to manually set the ffmpeg path. See [#345](https://github.com/codetheweb/muse/issues/345) for details. -#### Advanced +## ⚙ī¸ Additional configuration (advanced) + +### Cache By default, Muse limits the total cache size to around 2 GB. If you want to change this, set the environment variable `CACHE_LIMIT`. For example, `CACHE_LIMIT=512MB` or `CACHE_LIMIT=10GB`. + +### Bot-wide commands + +If you have Muse running in a lot of guilds (10+) you may want to switch to registering commands bot-wide rather than for each guild. (The downside to this is that command updates can take up to an hour to propogate.) To do this, set the environment variable `REGISTER_COMMANDS_ON_BOT` to `true`. diff --git a/src/bot.ts b/src/bot.ts index cb10d1b..fb92d14 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -13,32 +13,24 @@ import Config from './services/config.js'; import {generateDependencyReport} from '@discordjs/voice'; import {REST} from '@discordjs/rest'; import {Routes} from 'discord-api-types/v9'; -import {Promise} from 'bluebird'; @injectable() export default class { private readonly client: Client; private readonly token: string; - private readonly isProduction: boolean; + private readonly shouldRegisterCommandsOnBot: boolean; private readonly commandsByName!: Collection; private readonly commandsByButtonId!: Collection; constructor(@inject(TYPES.Client) client: Client, @inject(TYPES.Config) config: Config) { this.client = client; this.token = config.DISCORD_TOKEN; - this.isProduction = config.IS_PRODUCTION; + this.shouldRegisterCommandsOnBot = config.REGISTER_COMMANDS_ON_BOT; this.commandsByName = new Collection(); this.commandsByButtonId = new Collection(); } public async listen(): Promise { - // Log environment - if (this.isProduction) { - console.log('Production environment\n'); - } else { - console.log('Development environment\n'); - } - // Load in commands container.getAll(TYPES.Command).forEach(command => { // TODO: remove ! @@ -122,18 +114,19 @@ export default class { this.client.once('ready', async () => { debug(generateDependencyReport()); - spinner.text = '📡 Updating commands in all guilds...'; - // Update commands const rest = new REST({version: '9'}).setToken(this.token); - if (this.isProduction) { + if (this.shouldRegisterCommandsOnBot) { + spinner.text = '📡 updating commands on bot...'; + await rest.put( Routes.applicationCommands(this.client.user!.id), {body: this.commandsByName.map(command => command.slashCommand ? command.slashCommand.toJSON() : null)}, ); } else { - // If development, set commands guild-wide + spinner.text = '📡 updating commands in all guilds...'; + await Promise.all( this.client.guilds.cache.map(async guild => { await rest.put( diff --git a/src/events/guild-create.ts b/src/events/guild-create.ts index 008e22b..e7a6467 100644 --- a/src/events/guild-create.ts +++ b/src/events/guild-create.ts @@ -17,7 +17,7 @@ export default async (guild: Guild): Promise => { const config = container.get(TYPES.Config); // Setup slash commands - if (!config.IS_PRODUCTION) { + if (!config.REGISTER_COMMANDS_ON_BOT) { const commands: ApplicationCommandData[] = container.getAll(TYPES.Command) .filter(command => command.slashCommand?.name) .map(command => command.slashCommand as ApplicationCommandData); diff --git a/src/services/config.ts b/src/services/config.ts index ae7ef4b..34e612c 100644 --- a/src/services/config.ts +++ b/src/services/config.ts @@ -12,7 +12,7 @@ const CONFIG_MAP = { YOUTUBE_API_KEY: process.env.YOUTUBE_API_KEY, SPOTIFY_CLIENT_ID: process.env.SPOTIFY_CLIENT_ID, SPOTIFY_CLIENT_SECRET: process.env.SPOTIFY_CLIENT_SECRET, - IS_PRODUCTION: process.env.NODE_ENV === 'production', + REGISTER_COMMANDS_ON_BOT: process.env.REGISTER_COMMANDS_ON_BOT === 'true', DATA_DIR, CACHE_DIR: path.join(DATA_DIR, 'cache'), CACHE_LIMIT_IN_BYTES: xbytes.parseSize(process.env.CACHE_LIMIT ?? '2GB'), @@ -24,7 +24,7 @@ export default class Config { readonly YOUTUBE_API_KEY!: string; readonly SPOTIFY_CLIENT_ID!: string; readonly SPOTIFY_CLIENT_SECRET!: string; - readonly IS_PRODUCTION!: boolean; + readonly REGISTER_COMMANDS_ON_BOT!: boolean; readonly DATA_DIR!: string; readonly CACHE_DIR!: string; readonly CACHE_LIMIT_IN_BYTES!: number; @@ -40,6 +40,8 @@ export default class Config { this[key as ConditionalKeys] = value; } else if (typeof value === 'string') { this[key as ConditionalKeys] = value; + } else if (typeof value === 'boolean') { + this[key as ConditionalKeys] = value; } else { throw new Error(`Unsupported type for ${key}`); } diff --git a/yarn.lock b/yarn.lock index 2f5abc0..bbfe7d4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,280 +2,272 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@7.12.11": - "integrity" "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" - "version" "7.12.11" +"@babel/code-frame@7.12.11", "@babel/code-frame@^7.0.0": + version "7.12.11" + resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: "@babel/highlight" "^7.10.4" "@babel/helper-validator-identifier@^7.15.7": - "integrity" "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz" - "version" "7.15.7" + version "7.15.7" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz" + integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== "@babel/highlight@^7.10.4": - "integrity" "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==" - "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz" - "version" "7.16.0" + version "7.16.0" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz" + integrity sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g== dependencies: "@babel/helper-validator-identifier" "^7.15.7" - "chalk" "^2.0.0" - "js-tokens" "^4.0.0" + chalk "^2.0.0" + js-tokens "^4.0.0" "@cspotcode/source-map-consumer@0.8.0": - "integrity" "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==" - "resolved" "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz" - "version" "0.8.0" + version "0.8.0" + resolved "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz" + integrity sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg== "@cspotcode/source-map-support@0.7.0": - "integrity" "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==" - "resolved" "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz" - "version" "0.7.0" + version "0.7.0" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz" + integrity sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA== dependencies: "@cspotcode/source-map-consumer" "0.8.0" "@discordjs/builders@^0.8.1": - "integrity" "sha512-/YRd11SrcluqXkKppq/FAVzLIPRVlIVmc6X8ZklspzMIHDtJ+A4W37D43SHvLdH//+NnK+SHW/WeOF4Ts54PeQ==" - "resolved" "https://registry.npmjs.org/@discordjs/builders/-/builders-0.8.2.tgz" - "version" "0.8.2" + version "0.8.2" + resolved "https://registry.npmjs.org/@discordjs/builders/-/builders-0.8.2.tgz" + integrity sha512-/YRd11SrcluqXkKppq/FAVzLIPRVlIVmc6X8ZklspzMIHDtJ+A4W37D43SHvLdH//+NnK+SHW/WeOF4Ts54PeQ== dependencies: "@sindresorhus/is" "^4.2.0" - "discord-api-types" "^0.24.0" - "ow" "^0.27.0" - "ts-mixer" "^6.0.0" - "tslib" "^2.3.1" + discord-api-types "^0.24.0" + ow "^0.27.0" + ts-mixer "^6.0.0" + tslib "^2.3.1" "@discordjs/builders@^0.9.0": - "integrity" "sha512-XM/5yrTxMF0SDKza32YzGDQO1t+qEJTaF8Zvxu/UOjzoqzMPPGQBjC1VgZxz8/CBLygW5qI+UVygMa88z13G3g==" - "resolved" "https://registry.npmjs.org/@discordjs/builders/-/builders-0.9.0.tgz" - "version" "0.9.0" + version "0.9.0" + resolved "https://registry.npmjs.org/@discordjs/builders/-/builders-0.9.0.tgz" + integrity sha512-XM/5yrTxMF0SDKza32YzGDQO1t+qEJTaF8Zvxu/UOjzoqzMPPGQBjC1VgZxz8/CBLygW5qI+UVygMa88z13G3g== dependencies: "@sindresorhus/is" "^4.2.0" - "discord-api-types" "^0.24.0" - "ts-mixer" "^6.0.0" - "tslib" "^2.3.1" - "zod" "^3.11.6" + discord-api-types "^0.24.0" + ts-mixer "^6.0.0" + tslib "^2.3.1" + zod "^3.11.6" "@discordjs/collection@^0.1.6": - "integrity" "sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ==" - "resolved" "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.6.tgz" - "version" "0.1.6" + version "0.1.6" + resolved "https://registry.npmjs.org/@discordjs/collection/-/collection-0.1.6.tgz" + integrity sha512-utRNxnd9kSS2qhyivo9lMlt5qgAUasH2gb7BEOn6p0efFh24gjGomHzWKMAPn2hEReOPQZCJaRKoURwRotKucQ== "@discordjs/collection@^0.3.2": - "integrity" "sha512-dMjLl60b2DMqObbH1MQZKePgWhsNe49XkKBZ0W5Acl5uVV43SN414i2QfZwRI7dXAqIn8pEWD2+XXQFn9KWxqg==" - "resolved" "https://registry.npmjs.org/@discordjs/collection/-/collection-0.3.2.tgz" - "version" "0.3.2" + version "0.3.2" + resolved "https://registry.npmjs.org/@discordjs/collection/-/collection-0.3.2.tgz" + integrity sha512-dMjLl60b2DMqObbH1MQZKePgWhsNe49XkKBZ0W5Acl5uVV43SN414i2QfZwRI7dXAqIn8pEWD2+XXQFn9KWxqg== "@discordjs/form-data@^3.0.1": - "integrity" "sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg==" - "resolved" "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz" - "version" "3.0.1" + version "3.0.1" + resolved "https://registry.npmjs.org/@discordjs/form-data/-/form-data-3.0.1.tgz" + integrity sha512-ZfFsbgEXW71Rw/6EtBdrP5VxBJy4dthyC0tpQKGKmYFImlmmrykO14Za+BiIVduwjte0jXEBlhSKf0MWbFp9Eg== dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.8" - "mime-types" "^2.1.12" + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" -"@discordjs/node-pre-gyp@^0.4.0", "@discordjs/node-pre-gyp@^0.4.2": - "integrity" "sha512-V239Czn+DXFGLhhuccwEDBoTdgMGrRu30dOlzm1GzrSIjwFj01ZJerNX7x+CEX1NG1Q/1gGfOOkeZFNHjycrRA==" - "resolved" "https://registry.npmjs.org/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.2.tgz" - "version" "0.4.2" +"@discordjs/node-pre-gyp@^0.4.2": + version "0.4.2" + resolved "https://registry.npmjs.org/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.2.tgz" + integrity sha512-V239Czn+DXFGLhhuccwEDBoTdgMGrRu30dOlzm1GzrSIjwFj01ZJerNX7x+CEX1NG1Q/1gGfOOkeZFNHjycrRA== dependencies: - "detect-libc" "^1.0.3" - "https-proxy-agent" "^5.0.0" - "make-dir" "^3.1.0" - "node-fetch" "^2.6.5" - "nopt" "^5.0.0" - "npmlog" "^5.0.1" - "rimraf" "^3.0.2" - "semver" "^7.3.5" - "tar" "^6.1.11" - -"@discordjs/opus@^0.5.0": - "integrity" "sha512-IQhCwCy2WKXLe+qkOkwO1Wjgk20uqeAbqM62tCbzIqbTsXX4YAge8Me9RFnI77Lx+UTkgm4rSVM3VPVdS/GsUw==" - "resolved" "https://registry.npmjs.org/@discordjs/opus/-/opus-0.5.3.tgz" - "version" "0.5.3" - dependencies: - "@discordjs/node-pre-gyp" "^0.4.0" - "node-addon-api" "^3.2.1" + detect-libc "^1.0.3" + https-proxy-agent "^5.0.0" + make-dir "^3.1.0" + node-fetch "^2.6.5" + nopt "^5.0.0" + npmlog "^5.0.1" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.11" "@discordjs/opus@^0.7.0": - "integrity" "sha512-3Xxa3dh7taSDwBAR5fLALZ/KTxvbMmHCMxYLYve6NlPO7Ms1CLmKqp/R4ZoVzkRGQVUVWEhaB1s0v9jfa2tfDg==" - "resolved" "https://registry.npmjs.org/@discordjs/opus/-/opus-0.7.0.tgz" - "version" "0.7.0" + version "0.7.0" + resolved "https://registry.npmjs.org/@discordjs/opus/-/opus-0.7.0.tgz" + integrity sha512-3Xxa3dh7taSDwBAR5fLALZ/KTxvbMmHCMxYLYve6NlPO7Ms1CLmKqp/R4ZoVzkRGQVUVWEhaB1s0v9jfa2tfDg== dependencies: "@discordjs/node-pre-gyp" "^0.4.2" - "node-addon-api" "^4.2.0" + node-addon-api "^4.2.0" "@discordjs/rest@^0.1.0-canary.0": - "integrity" "sha512-d+s//ISYVV+e0w/926wMEeO7vju+Pn11x1JM4tcmVMCHSDgpi6pnFCNAXF1TEdnDcy7xf9tq5cf2pQkb/7ySTQ==" - "resolved" "https://registry.npmjs.org/@discordjs/rest/-/rest-0.1.0-canary.0.tgz" - "version" "0.1.0-canary.0" + version "0.1.0-canary.0" + resolved "https://registry.npmjs.org/@discordjs/rest/-/rest-0.1.0-canary.0.tgz" + integrity sha512-d+s//ISYVV+e0w/926wMEeO7vju+Pn11x1JM4tcmVMCHSDgpi6pnFCNAXF1TEdnDcy7xf9tq5cf2pQkb/7ySTQ== dependencies: "@discordjs/collection" "^0.1.6" "@sapphire/async-queue" "^1.1.4" "@sapphire/snowflake" "^1.3.5" - "abort-controller" "^3.0.0" - "discord-api-types" "^0.18.1" - "form-data" "^4.0.0" - "node-fetch" "^2.6.1" - "tslib" "^2.3.0" + abort-controller "^3.0.0" + discord-api-types "^0.18.1" + form-data "^4.0.0" + node-fetch "^2.6.1" + tslib "^2.3.0" "@discordjs/voice@^0.7.5": - "integrity" "sha512-lUk+CmIXNKslT6DkC9IF9rpsqhzlTiedauUCPBzepjd4XWxwBZiyVIzR6QpbAirxkAwCoAbbje+3Ho71PGLEAw==" - "resolved" "https://registry.npmjs.org/@discordjs/voice/-/voice-0.7.5.tgz" - "version" "0.7.5" + version "0.7.5" + resolved "https://registry.npmjs.org/@discordjs/voice/-/voice-0.7.5.tgz" + integrity sha512-lUk+CmIXNKslT6DkC9IF9rpsqhzlTiedauUCPBzepjd4XWxwBZiyVIzR6QpbAirxkAwCoAbbje+3Ho71PGLEAw== dependencies: "@types/ws" "^8.2.0" - "discord-api-types" "^0.24.0" - "prism-media" "^1.3.2" - "tiny-typed-emitter" "^2.1.0" - "tslib" "^2.3.1" - "ws" "^8.2.3" + discord-api-types "^0.24.0" + prism-media "^1.3.2" + tiny-typed-emitter "^2.1.0" + tslib "^2.3.1" + ws "^8.2.3" "@eslint/eslintrc@^0.4.3": - "integrity" "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==" - "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz" - "version" "0.4.3" + version "0.4.3" + resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz" + integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw== dependencies: - "ajv" "^6.12.4" - "debug" "^4.1.1" - "espree" "^7.3.0" - "globals" "^13.9.0" - "ignore" "^4.0.6" - "import-fresh" "^3.2.1" - "js-yaml" "^3.13.1" - "minimatch" "^3.0.4" - "strip-json-comments" "^3.1.1" + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" "@humanwhocodes/config-array@^0.5.0": - "integrity" "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz" - "version" "0.5.0" + version "0.5.0" + resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz" + integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg== dependencies: "@humanwhocodes/object-schema" "^1.2.0" - "debug" "^4.1.1" - "minimatch" "^3.0.4" + debug "^4.1.1" + minimatch "^3.0.4" "@humanwhocodes/object-schema@^1.2.0": - "integrity" "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" - "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" - "version" "1.2.1" + version "1.2.1" + resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== "@iarna/toml@2.2.5": - "integrity" "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==" - "resolved" "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz" - "version" "2.2.5" + version "2.2.5" + resolved "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz" + integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== "@nodelib/fs.scandir@2.1.5": - "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - "version" "2.1.5" + version "2.1.5" + resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== dependencies: "@nodelib/fs.stat" "2.0.5" - "run-parallel" "^1.1.9" + run-parallel "^1.1.9" -"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": - "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - "version" "2.0.5" +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== "@nodelib/fs.walk@^1.2.3": - "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" - "version" "1.2.8" + version "1.2.8" + resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== dependencies: "@nodelib/fs.scandir" "2.1.5" - "fastq" "^1.6.0" + fastq "^1.6.0" "@octokit/auth-token@^2.4.4": - "integrity" "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==" - "resolved" "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz" - "version" "2.5.0" + version "2.5.0" + resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz" + integrity sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g== dependencies: "@octokit/types" "^6.0.3" -"@octokit/core@^3.5.1", "@octokit/core@>=2", "@octokit/core@>=3": - "integrity" "sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw==" - "resolved" "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz" - "version" "3.5.1" +"@octokit/core@^3.5.1": + version "3.5.1" + resolved "https://registry.npmjs.org/@octokit/core/-/core-3.5.1.tgz" + integrity sha512-omncwpLVxMP+GLpLPgeGJBF6IWJFjXDS5flY5VbppePYX9XehevbDykRH9PdCdvqt9TS5AOTiDide7h0qrkHjw== dependencies: "@octokit/auth-token" "^2.4.4" "@octokit/graphql" "^4.5.8" "@octokit/request" "^5.6.0" "@octokit/request-error" "^2.0.5" "@octokit/types" "^6.0.3" - "before-after-hook" "^2.2.0" - "universal-user-agent" "^6.0.0" + before-after-hook "^2.2.0" + universal-user-agent "^6.0.0" "@octokit/endpoint@^6.0.1": - "integrity" "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==" - "resolved" "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz" - "version" "6.0.12" + version "6.0.12" + resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz" + integrity sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA== dependencies: "@octokit/types" "^6.0.3" - "is-plain-object" "^5.0.0" - "universal-user-agent" "^6.0.0" + is-plain-object "^5.0.0" + universal-user-agent "^6.0.0" "@octokit/graphql@^4.5.8": - "integrity" "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==" - "resolved" "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz" - "version" "4.8.0" + version "4.8.0" + resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz" + integrity sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg== dependencies: "@octokit/request" "^5.6.0" "@octokit/types" "^6.0.3" - "universal-user-agent" "^6.0.0" + universal-user-agent "^6.0.0" "@octokit/openapi-types@^11.2.0": - "integrity" "sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA==" - "resolved" "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz" - "version" "11.2.0" + version "11.2.0" + resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-11.2.0.tgz" + integrity sha512-PBsVO+15KSlGmiI8QAzaqvsNlZlrDlyAJYcrXBCvVUxCp7VnXjkwPoFHgjEJXx3WF9BAwkA6nfCUA7i9sODzKA== "@octokit/plugin-paginate-rest@^2.16.8": - "integrity" "sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw==" - "resolved" "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz" - "version" "2.17.0" + version "2.17.0" + resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.17.0.tgz" + integrity sha512-tzMbrbnam2Mt4AhuyCHvpRkS0oZ5MvwwcQPYGtMv4tUa5kkzG58SVB0fcsLulOZQeRnOgdkZWkRUiyBlh0Bkyw== dependencies: "@octokit/types" "^6.34.0" "@octokit/plugin-request-log@^1.0.4": - "integrity" "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==" - "resolved" "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz" - "version" "1.0.4" + version "1.0.4" + resolved "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz" + integrity sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA== "@octokit/plugin-rest-endpoint-methods@^5.12.0": - "integrity" "sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA==" - "resolved" "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz" - "version" "5.13.0" + version "5.13.0" + resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.13.0.tgz" + integrity sha512-uJjMTkN1KaOIgNtUPMtIXDOjx6dGYysdIFhgA52x4xSadQCz3b/zJexvITDVpANnfKPW/+E0xkOvLntqMYpviA== dependencies: "@octokit/types" "^6.34.0" - "deprecation" "^2.3.1" + deprecation "^2.3.1" "@octokit/request-error@^2.0.5", "@octokit/request-error@^2.1.0": - "integrity" "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==" - "resolved" "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz" - "version" "2.1.0" + version "2.1.0" + resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz" + integrity sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg== dependencies: "@octokit/types" "^6.0.3" - "deprecation" "^2.0.0" - "once" "^1.4.0" + deprecation "^2.0.0" + once "^1.4.0" "@octokit/request@^5.6.0": - "integrity" "sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA==" - "resolved" "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz" - "version" "5.6.2" + version "5.6.2" + resolved "https://registry.npmjs.org/@octokit/request/-/request-5.6.2.tgz" + integrity sha512-je66CvSEVf0jCpRISxkUcCa0UkxmFs6eGDRSbfJtAVwbLH5ceqF+YEyC8lj8ystKyZTy8adWr0qmkY52EfOeLA== dependencies: "@octokit/endpoint" "^6.0.1" "@octokit/request-error" "^2.1.0" "@octokit/types" "^6.16.1" - "is-plain-object" "^5.0.0" - "node-fetch" "^2.6.1" - "universal-user-agent" "^6.0.0" + is-plain-object "^5.0.0" + node-fetch "^2.6.1" + universal-user-agent "^6.0.0" "@octokit/rest@18.12.0": - "integrity" "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==" - "resolved" "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz" - "version" "18.12.0" + version "18.12.0" + resolved "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz" + integrity sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q== dependencies: "@octokit/core" "^3.5.1" "@octokit/plugin-paginate-rest" "^2.16.8" @@ -283,89 +275,89 @@ "@octokit/plugin-rest-endpoint-methods" "^5.12.0" "@octokit/types@^6.0.3", "@octokit/types@^6.16.1", "@octokit/types@^6.34.0": - "integrity" "sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw==" - "resolved" "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz" - "version" "6.34.0" + version "6.34.0" + resolved "https://registry.npmjs.org/@octokit/types/-/types-6.34.0.tgz" + integrity sha512-s1zLBjWhdEI2zwaoSgyOFoKSl109CUcVBCc7biPJ3aAf6LGLU6szDvi31JPU7bxfla2lqfhjbbg/5DdFNxOwHw== dependencies: "@octokit/openapi-types" "^11.2.0" "@release-it/keep-a-changelog@^2.3.0": - "integrity" "sha512-W3rzUsfT1BeDx9KDPJvpos7aQ+fModusP9X90VWYxOc/+tl5UUrH3Sjh2bemtG0okCtEFY/qnU3abbR5MK1wbg==" - "resolved" "https://registry.npmjs.org/@release-it/keep-a-changelog/-/keep-a-changelog-2.3.0.tgz" - "version" "2.3.0" + version "2.3.0" + resolved "https://registry.npmjs.org/@release-it/keep-a-changelog/-/keep-a-changelog-2.3.0.tgz" + integrity sha512-W3rzUsfT1BeDx9KDPJvpos7aQ+fModusP9X90VWYxOc/+tl5UUrH3Sjh2bemtG0okCtEFY/qnU3abbR5MK1wbg== dependencies: - "detect-newline" "^3.1.0" + detect-newline "^3.1.0" "@sapphire/async-queue@^1.1.4", "@sapphire/async-queue@^1.1.8": - "integrity" "sha512-CbXaGwwlEMq+l1TRu01FJCvySJ1CEFKFclHT48nIfNeZXaAAmmwwy7scUKmYHPUa3GhoMp6Qr1B3eAJux6XgOQ==" - "resolved" "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.1.9.tgz" - "version" "1.1.9" + version "1.1.9" + resolved "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.1.9.tgz" + integrity sha512-CbXaGwwlEMq+l1TRu01FJCvySJ1CEFKFclHT48nIfNeZXaAAmmwwy7scUKmYHPUa3GhoMp6Qr1B3eAJux6XgOQ== "@sapphire/snowflake@^1.3.5": - "integrity" "sha512-QnzuLp+p9D7agynVub/zqlDVriDza9y3STArBhNiNBUgIX8+GL5FpQxstRfw1jDr5jkZUjcuKYAHxjIuXKdJAg==" - "resolved" "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-1.3.6.tgz" - "version" "1.3.6" + version "1.3.6" + resolved "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-1.3.6.tgz" + integrity sha512-QnzuLp+p9D7agynVub/zqlDVriDza9y3STArBhNiNBUgIX8+GL5FpQxstRfw1jDr5jkZUjcuKYAHxjIuXKdJAg== "@sindresorhus/is@^0.14.0": - "integrity" "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" - "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" - "version" "0.14.0" + version "0.14.0" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" + integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== "@sindresorhus/is@^4.0.0", "@sindresorhus/is@^4.0.1", "@sindresorhus/is@^4.2.0": - "integrity" "sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw==" - "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz" - "version" "4.2.0" + version "4.2.0" + resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-4.2.0.tgz" + integrity sha512-VkE3KLBmJwcCaVARtQpfuKcKv8gcBmUubrfHGF84dXuuW6jgsRYxPtzcIhPyK9WAPpRt2/xY6zkD9MnRaJzSyw== "@szmarczak/http-timer@^1.1.2": - "integrity" "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==" - "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" - "version" "1.1.2" + version "1.1.2" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz" + integrity sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA== dependencies: - "defer-to-connect" "^1.0.1" + defer-to-connect "^1.0.1" "@szmarczak/http-timer@^4.0.5": - "integrity" "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==" - "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz" - "version" "4.0.6" + version "4.0.6" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== dependencies: - "defer-to-connect" "^2.0.0" + defer-to-connect "^2.0.0" "@szmarczak/http-timer@^5.0.1": - "integrity" "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==" - "resolved" "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz" - "version" "5.0.1" + version "5.0.1" + resolved "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz" + integrity sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw== dependencies: - "defer-to-connect" "^2.0.1" + defer-to-connect "^2.0.1" "@tsconfig/node10@^1.0.7": - "integrity" "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==" - "resolved" "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz" - "version" "1.0.8" + version "1.0.8" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz" + integrity sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg== "@tsconfig/node12@^1.0.7": - "integrity" "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==" - "resolved" "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz" - "version" "1.0.9" + version "1.0.9" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz" + integrity sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw== "@tsconfig/node14@^1.0.0": - "integrity" "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==" - "resolved" "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz" - "version" "1.0.1" + version "1.0.1" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz" + integrity sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg== "@tsconfig/node16@^1.0.2": - "integrity" "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==" - "resolved" "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz" - "version" "1.0.2" + version "1.0.2" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz" + integrity sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA== "@types/bluebird@^3.5.35": - "integrity" "sha512-HBNx4lhkxN7bx6P0++W8E289foSu8kO8GCk2unhuVggO+cE7rh9DhZUyPhUxNRG9m+5B5BTKxZQ5ZP92x/mx9Q==" - "resolved" "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.36.tgz" - "version" "3.5.36" + version "3.5.36" + resolved "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.36.tgz" + integrity sha512-HBNx4lhkxN7bx6P0++W8E289foSu8kO8GCk2unhuVggO+cE7rh9DhZUyPhUxNRG9m+5B5BTKxZQ5ZP92x/mx9Q== "@types/cacheable-request@^6.0.1", "@types/cacheable-request@^6.0.2": - "integrity" "sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA==" - "resolved" "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz" - "version" "6.0.2" + version "6.0.2" + resolved "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.2.tgz" + integrity sha512-B3xVo+dlKM6nnKTcmm5ZtY/OL8bOAOd2Olee9M1zft65ox50OzjEHW91sDiU9j6cvW8Ejg1/Qkf4xd2kugApUA== dependencies: "@types/http-cache-semantics" "*" "@types/keyv" "*" @@ -373,958 +365,951 @@ "@types/responselike" "*" "@types/debug@^4.1.5": - "integrity" "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==" - "resolved" "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz" - "version" "4.1.7" + version "4.1.7" + resolved "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz" + integrity sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg== dependencies: "@types/ms" "*" "@types/fluent-ffmpeg@^2.1.17": - "integrity" "sha512-B+OvhCdJ3LgEq2PhvWNOiB/EfwnXLElfMCgc4Z1K5zXgSfo9I6uGKwR/lqmNPFQuebNnes7re3gqkV77SyypLg==" - "resolved" "https://registry.npmjs.org/@types/fluent-ffmpeg/-/fluent-ffmpeg-2.1.20.tgz" - "version" "2.1.20" + version "2.1.20" + resolved "https://registry.npmjs.org/@types/fluent-ffmpeg/-/fluent-ffmpeg-2.1.20.tgz" + integrity sha512-B+OvhCdJ3LgEq2PhvWNOiB/EfwnXLElfMCgc4Z1K5zXgSfo9I6uGKwR/lqmNPFQuebNnes7re3gqkV77SyypLg== dependencies: "@types/node" "*" "@types/fs-capacitor@^2.0.0": - "integrity" "sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ==" - "resolved" "https://registry.npmjs.org/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz" - "version" "2.0.0" + version "2.0.0" + resolved "https://registry.npmjs.org/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz" + integrity sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ== dependencies: "@types/node" "*" "@types/http-cache-semantics@*": - "integrity" "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" - "resolved" "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz" - "version" "4.0.1" + version "4.0.1" + resolved "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz" + integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== "@types/json-schema@^7.0.7": - "integrity" "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" - "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz" - "version" "7.0.9" + version "7.0.9" + resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== "@types/keyv@*": - "integrity" "sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg==" - "resolved" "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz" - "version" "3.1.3" + version "3.1.3" + resolved "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.3.tgz" + integrity sha512-FXCJgyyN3ivVgRoml4h94G/p3kY+u/B86La+QptcqJaWtBWtmc6TtkNfS40n9bIvyLteHh7zXOtgbobORKPbDg== dependencies: "@types/node" "*" "@types/libsodium-wrappers@^0.7.9": - "integrity" "sha512-LisgKLlYQk19baQwjkBZZXdJL0KbeTpdEnrAfz5hQACbklCY0gVFnsKUyjfNWF1UQsCSjw93Sj5jSbiO8RPfdw==" - "resolved" "https://registry.npmjs.org/@types/libsodium-wrappers/-/libsodium-wrappers-0.7.9.tgz" - "version" "0.7.9" + version "0.7.9" + resolved "https://registry.npmjs.org/@types/libsodium-wrappers/-/libsodium-wrappers-0.7.9.tgz" + integrity sha512-LisgKLlYQk19baQwjkBZZXdJL0KbeTpdEnrAfz5hQACbklCY0gVFnsKUyjfNWF1UQsCSjw93Sj5jSbiO8RPfdw== "@types/ms@*": - "integrity" "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" - "resolved" "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz" - "version" "0.7.31" + version "0.7.31" + resolved "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz" + integrity sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA== "@types/node-emoji@^1.8.1": - "integrity" "sha512-0fRfA90FWm6KJfw6P9QGyo0HDTCmthZ7cWaBQndITlaWLTZ6njRyKwrwpzpg+n6kBXBIGKeUHEQuBx7bphGJkA==" - "resolved" "https://registry.npmjs.org/@types/node-emoji/-/node-emoji-1.8.1.tgz" - "version" "1.8.1" + version "1.8.1" + resolved "https://registry.npmjs.org/@types/node-emoji/-/node-emoji-1.8.1.tgz" + integrity sha512-0fRfA90FWm6KJfw6P9QGyo0HDTCmthZ7cWaBQndITlaWLTZ6njRyKwrwpzpg+n6kBXBIGKeUHEQuBx7bphGJkA== "@types/node-fetch@^2.5.12": - "integrity" "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==" - "resolved" "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz" - "version" "2.5.12" + version "2.5.12" + resolved "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz" + integrity sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw== dependencies: "@types/node" "*" - "form-data" "^3.0.0" + form-data "^3.0.0" "@types/node@*", "@types/node@^17.0.0": - "integrity" "sha512-JepeIUPFDARgIs0zD/SKPgFsJEAF0X5/qO80llx59gOxFTboS9Amv3S+QfB7lqBId5sFXJ99BN0J6zFRvL9dDA==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-17.0.2.tgz" - "version" "17.0.2" + version "17.0.2" + resolved "https://registry.npmjs.org/@types/node/-/node-17.0.2.tgz" + integrity sha512-JepeIUPFDARgIs0zD/SKPgFsJEAF0X5/qO80llx59gOxFTboS9Amv3S+QfB7lqBId5sFXJ99BN0J6zFRvL9dDA== "@types/parse-json@^4.0.0": - "integrity" "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - "resolved" "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" - "version" "4.0.0" + version "4.0.0" + resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/responselike@*", "@types/responselike@^1.0.0": - "integrity" "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==" - "resolved" "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz" - "version" "1.0.0" + version "1.0.0" + resolved "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz" + integrity sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA== dependencies: "@types/node" "*" "@types/spotify-api@*": - "integrity" "sha512-BOQKiGvXpgX0EoOFClL5aYnPuE6nCpkQS7I9xRpHnI/s0WiJ1sgqN6vavd1kLKhkfR0z4bqH65vRbw19wCVpdA==" - "resolved" "https://registry.npmjs.org/@types/spotify-api/-/spotify-api-0.0.12.tgz" - "version" "0.0.12" + version "0.0.12" + resolved "https://registry.npmjs.org/@types/spotify-api/-/spotify-api-0.0.12.tgz" + integrity sha512-BOQKiGvXpgX0EoOFClL5aYnPuE6nCpkQS7I9xRpHnI/s0WiJ1sgqN6vavd1kLKhkfR0z4bqH65vRbw19wCVpdA== "@types/spotify-web-api-node@^5.0.2": - "integrity" "sha512-t2a0wqe/9ydzqPTvL6CKys8v3mS3jR942BqSlg2e9lOtskUFSim9pXwathV0A9MTout5dpeWC3jW1yNUzJhovg==" - "resolved" "https://registry.npmjs.org/@types/spotify-web-api-node/-/spotify-web-api-node-5.0.4.tgz" - "version" "5.0.4" + version "5.0.4" + resolved "https://registry.npmjs.org/@types/spotify-web-api-node/-/spotify-web-api-node-5.0.4.tgz" + integrity sha512-t2a0wqe/9ydzqPTvL6CKys8v3mS3jR942BqSlg2e9lOtskUFSim9pXwathV0A9MTout5dpeWC3jW1yNUzJhovg== dependencies: "@types/spotify-api" "*" -"@types/validator@*", "@types/validator@^13.1.4": - "integrity" "sha512-+jBxVvXVuggZOrm04NR8z+5+bgoW4VZyLzUO+hmPPW1mVFL/HaitLAkizfv4yg9TbG8lkfHWVMQ11yDqrVVCzA==" - "resolved" "https://registry.npmjs.org/@types/validator/-/validator-13.7.0.tgz" - "version" "13.7.0" +"@types/validator@^13.1.4": + version "13.7.0" + resolved "https://registry.npmjs.org/@types/validator/-/validator-13.7.0.tgz" + integrity sha512-+jBxVvXVuggZOrm04NR8z+5+bgoW4VZyLzUO+hmPPW1mVFL/HaitLAkizfv4yg9TbG8lkfHWVMQ11yDqrVVCzA== "@types/ws@^8.2.0", "@types/ws@^8.2.2": - "integrity" "sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg==" - "resolved" "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz" - "version" "8.2.2" + version "8.2.2" + resolved "https://registry.npmjs.org/@types/ws/-/ws-8.2.2.tgz" + integrity sha512-NOn5eIcgWLOo6qW8AcuLZ7G8PycXu0xTxxkS6Q18VWFxgPUSOwV0pBj2a/4viNZVu25i7RIB7GttdkAIUUXOOg== dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^4.31.1", "@typescript-eslint/eslint-plugin@>=4.29.0": - "integrity" "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz" - "version" "4.33.0" +"@typescript-eslint/eslint-plugin@^4.31.1": + version "4.33.0" + resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz" + integrity sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg== dependencies: "@typescript-eslint/experimental-utils" "4.33.0" "@typescript-eslint/scope-manager" "4.33.0" - "debug" "^4.3.1" - "functional-red-black-tree" "^1.0.1" - "ignore" "^5.1.8" - "regexpp" "^3.1.0" - "semver" "^7.3.5" - "tsutils" "^3.21.0" + debug "^4.3.1" + functional-red-black-tree "^1.0.1" + ignore "^5.1.8" + regexpp "^3.1.0" + semver "^7.3.5" + tsutils "^3.21.0" "@typescript-eslint/experimental-utils@4.33.0": - "integrity" "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz" - "version" "4.33.0" + version "4.33.0" + resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz" + integrity sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q== dependencies: "@types/json-schema" "^7.0.7" "@typescript-eslint/scope-manager" "4.33.0" "@typescript-eslint/types" "4.33.0" "@typescript-eslint/typescript-estree" "4.33.0" - "eslint-scope" "^5.1.1" - "eslint-utils" "^3.0.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" -"@typescript-eslint/parser@^4.0.0", "@typescript-eslint/parser@^4.31.1": - "integrity" "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz" - "version" "4.33.0" +"@typescript-eslint/parser@^4.31.1": + version "4.33.0" + resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz" + integrity sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA== dependencies: "@typescript-eslint/scope-manager" "4.33.0" "@typescript-eslint/types" "4.33.0" "@typescript-eslint/typescript-estree" "4.33.0" - "debug" "^4.3.1" + debug "^4.3.1" "@typescript-eslint/scope-manager@4.33.0": - "integrity" "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz" - "version" "4.33.0" + version "4.33.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz" + integrity sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ== dependencies: "@typescript-eslint/types" "4.33.0" "@typescript-eslint/visitor-keys" "4.33.0" "@typescript-eslint/types@4.33.0": - "integrity" "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz" - "version" "4.33.0" + version "4.33.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz" + integrity sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ== "@typescript-eslint/typescript-estree@4.33.0": - "integrity" "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz" - "version" "4.33.0" + version "4.33.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz" + integrity sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA== dependencies: "@typescript-eslint/types" "4.33.0" "@typescript-eslint/visitor-keys" "4.33.0" - "debug" "^4.3.1" - "globby" "^11.0.3" - "is-glob" "^4.0.1" - "semver" "^7.3.5" - "tsutils" "^3.21.0" + debug "^4.3.1" + globby "^11.0.3" + is-glob "^4.0.1" + semver "^7.3.5" + tsutils "^3.21.0" "@typescript-eslint/visitor-keys@4.33.0": - "integrity" "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==" - "resolved" "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz" - "version" "4.33.0" + version "4.33.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz" + integrity sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg== dependencies: "@typescript-eslint/types" "4.33.0" - "eslint-visitor-keys" "^2.0.0" + eslint-visitor-keys "^2.0.0" -"abbrev@1": - "integrity" "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" - "resolved" "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" - "version" "1.1.1" +abbrev@1: + version "1.1.1" + resolved "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== -"abort-controller@^3.0.0": - "integrity" "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==" - "resolved" "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" - "version" "3.0.0" +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== dependencies: - "event-target-shim" "^5.0.0" + event-target-shim "^5.0.0" -"acorn-jsx@^5.3.1": - "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" - "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - "version" "5.3.2" +acorn-jsx@^5.3.1: + version "5.3.2" + resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -"acorn-walk@^8.1.1": - "integrity" "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" - "resolved" "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" - "version" "8.2.0" +acorn-walk@^8.1.1: + version "8.2.0" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^7.4.0": - "integrity" "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" - "version" "7.4.1" +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -"acorn@^8.4.1": - "integrity" "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==" - "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz" - "version" "8.6.0" +acorn@^8.4.1: + version "8.6.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz" + integrity sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw== -"agent-base@6": - "integrity" "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==" - "resolved" "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" - "version" "6.0.2" +agent-base@6: + version "6.0.2" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: - "debug" "4" + debug "4" -"ajv@^6.10.0", "ajv@^6.12.3", "ajv@^6.12.4": - "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - "version" "6.12.6" +ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 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" + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" -"ajv@^8.0.1": - "integrity" "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz" - "version" "8.8.2" +ajv@^8.0.1: + version "8.8.2" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz" + integrity sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw== dependencies: - "fast-deep-equal" "^3.1.1" - "json-schema-traverse" "^1.0.0" - "require-from-string" "^2.0.2" - "uri-js" "^4.2.2" + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" -"ansi-align@^3.0.0": - "integrity" "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==" - "resolved" "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" - "version" "3.0.1" +ansi-align@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== dependencies: - "string-width" "^4.1.0" + string-width "^4.1.0" -"ansi-colors@^4.1.1": - "integrity" "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" - "resolved" "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" - "version" "4.1.1" +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== -"ansi-escapes@^4.2.1": - "integrity" "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==" - "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" - "version" "4.3.2" +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: - "type-fest" "^0.21.3" + type-fest "^0.21.3" -"ansi-regex@^2.0.0": - "integrity" "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - "version" "2.1.1" +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= -"ansi-regex@^5.0.1": - "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - "version" "5.0.1" +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== -"ansi-regex@^6.0.1": - "integrity" "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" - "version" "6.0.1" +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== -"ansi-styles@^3.2.1": - "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - "version" "3.2.1" +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: - "color-convert" "^1.9.0" + color-convert "^1.9.0" -"ansi-styles@^4.0.0", "ansi-styles@^4.1.0": - "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - "version" "4.3.0" +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: - "color-convert" "^2.0.1" + color-convert "^2.0.1" -"any-promise@^1.3.0": - "integrity" "sha1-q8av7tzqUugJzcA3au0845Y10X8=" - "resolved" "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" - "version" "1.3.0" +any-promise@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" + integrity sha1-q8av7tzqUugJzcA3au0845Y10X8= -"anymatch@~3.1.2": - "integrity" "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" - "version" "3.1.2" +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== dependencies: - "normalize-path" "^3.0.0" - "picomatch" "^2.0.4" + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== "aproba@^1.0.3 || ^2.0.0": - "integrity" "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==" - "resolved" "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" - "version" "2.0.0" + version "2.0.0" + resolved "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== -"aproba@^1.0.3": - "integrity" "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" - "resolved" "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" - "version" "1.2.0" - -"are-we-there-yet@^2.0.0": - "integrity" "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==" - "resolved" "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz" - "version" "2.0.0" +are-we-there-yet@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz" + integrity sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw== dependencies: - "delegates" "^1.0.0" - "readable-stream" "^3.6.0" + delegates "^1.0.0" + readable-stream "^3.6.0" -"are-we-there-yet@~1.1.2": - "integrity" "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==" - "resolved" "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz" - "version" "1.1.7" +are-we-there-yet@~1.1.2: + version "1.1.7" + resolved "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz" + integrity sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g== dependencies: - "delegates" "^1.0.0" - "readable-stream" "^2.0.6" + delegates "^1.0.0" + readable-stream "^2.0.6" -"arg@^4.1.0": - "integrity" "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" - "resolved" "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" - "version" "4.1.3" +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== -"argparse@^1.0.7": - "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - "version" "1.0.10" +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== dependencies: - "sprintf-js" "~1.0.2" + sprintf-js "~1.0.2" -"array-shuffle@^3.0.0": - "integrity" "sha512-rogEGxHOQPhslOhpg12LJkB+bbAl484/s2AJq0BxtzQDQfKl76fS2u9zWgg3p3b9ENcuvE7K8A7l5ddiPjCRnw==" - "resolved" "https://registry.npmjs.org/array-shuffle/-/array-shuffle-3.0.0.tgz" - "version" "3.0.0" +array-shuffle@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/array-shuffle/-/array-shuffle-3.0.0.tgz" + integrity sha512-rogEGxHOQPhslOhpg12LJkB+bbAl484/s2AJq0BxtzQDQfKl76fS2u9zWgg3p3b9ENcuvE7K8A7l5ddiPjCRnw== -"array-union@^2.1.0": - "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" - "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" - "version" "2.1.0" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== -"asn1@~0.2.3": - "integrity" "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==" - "resolved" "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" - "version" "0.2.6" +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== dependencies: - "safer-buffer" "~2.1.0" + safer-buffer "~2.1.0" -"assert-plus@^1.0.0", "assert-plus@1.0.0": - "integrity" "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" - "resolved" "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" - "version" "1.0.0" +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= -"astral-regex@^2.0.0": - "integrity" "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" - "resolved" "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" - "version" "2.0.0" +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -"async-retry@1.3.3": - "integrity" "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==" - "resolved" "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz" - "version" "1.3.3" +async-retry@1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz" + integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== dependencies: - "retry" "0.13.1" + retry "0.13.1" -"async@>=0.2.9": - "integrity" "sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g==" - "resolved" "https://registry.npmjs.org/async/-/async-3.2.2.tgz" - "version" "3.2.2" +async@>=0.2.9: + version "3.2.2" + resolved "https://registry.npmjs.org/async/-/async-3.2.2.tgz" + integrity sha512-H0E+qZaDEfx/FY4t7iLRv1W2fFI6+pyCeTw1uN20AQPiwqwM6ojPxHxdLv4z8hi2DtnW9BOckSspLucW7pIE5g== -"asynckit@^0.4.0": - "integrity" "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - "resolved" "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" - "version" "0.4.0" +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -"aws-sign2@~0.7.0": - "integrity" "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" - "resolved" "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" - "version" "0.7.0" +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= -"aws4@^1.8.0": - "integrity" "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" - "resolved" "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" - "version" "1.11.0" +aws4@^1.8.0: + version "1.11.0" + resolved "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -"axios@^0.19.0": - "integrity" "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==" - "resolved" "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz" - "version" "0.19.2" +axios@^0.19.0: + version "0.19.2" + resolved "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== dependencies: - "follow-redirects" "1.5.10" + follow-redirects "1.5.10" -"balanced-match@^1.0.0": - "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - "version" "1.0.2" +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -"base64-js@^1.3.1": - "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" - "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" - "version" "1.5.1" +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== -"bcrypt-pbkdf@^1.0.0": - "integrity" "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=" - "resolved" "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" - "version" "1.0.2" +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= dependencies: - "tweetnacl" "^0.14.3" + tweetnacl "^0.14.3" -"before-after-hook@^2.2.0": - "integrity" "sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ==" - "resolved" "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz" - "version" "2.2.2" +before-after-hook@^2.2.0: + version "2.2.2" + resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.2.tgz" + integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== -"binary-extensions@^2.0.0": - "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - "version" "2.2.0" +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== -"bl@^4.1.0": - "integrity" "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==" - "resolved" "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" - "version" "4.1.0" +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== dependencies: - "buffer" "^5.5.0" - "inherits" "^2.0.4" - "readable-stream" "^3.4.0" + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" -"bl@^5.0.0": - "integrity" "sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ==" - "resolved" "https://registry.npmjs.org/bl/-/bl-5.0.0.tgz" - "version" "5.0.0" +bl@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/bl/-/bl-5.0.0.tgz" + integrity sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ== dependencies: - "buffer" "^6.0.3" - "inherits" "^2.0.4" - "readable-stream" "^3.4.0" + buffer "^6.0.3" + inherits "^2.0.4" + readable-stream "^3.4.0" -"block-stream@*": - "integrity" "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=" - "resolved" "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz" - "version" "0.0.9" +block-stream@*: + version "0.0.9" + resolved "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz" + integrity sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo= dependencies: - "inherits" "~2.0.0" + inherits "~2.0.0" -"boxen@^5.0.0": - "integrity" "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==" - "resolved" "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" - "version" "5.1.2" +boxen@^5.0.0: + version "5.1.2" + resolved "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== dependencies: - "ansi-align" "^3.0.0" - "camelcase" "^6.2.0" - "chalk" "^4.1.0" - "cli-boxes" "^2.2.1" - "string-width" "^4.2.2" - "type-fest" "^0.20.2" - "widest-line" "^3.1.0" - "wrap-ansi" "^7.0.0" + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" -"brace-expansion@^1.1.7": - "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - "version" "1.1.11" +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: - "balanced-match" "^1.0.0" - "concat-map" "0.0.1" + balanced-match "^1.0.0" + concat-map "0.0.1" -"braces@^3.0.1", "braces@~3.0.2": - "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" - "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - "version" "3.0.2" +braces@^3.0.1, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: - "fill-range" "^7.0.1" + fill-range "^7.0.1" -"buffer@^5.5.0": - "integrity" "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" - "version" "5.7.1" +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== dependencies: - "base64-js" "^1.3.1" - "ieee754" "^1.1.13" + base64-js "^1.3.1" + ieee754 "^1.1.13" -"buffer@^6.0.3": - "integrity" "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" - "version" "6.0.3" +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== dependencies: - "base64-js" "^1.3.1" - "ieee754" "^1.2.1" + base64-js "^1.3.1" + ieee754 "^1.2.1" -"cacheable-lookup@^5.0.3": - "integrity" "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==" - "resolved" "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz" - "version" "5.0.4" +cacheable-lookup@^5.0.3: + version "5.0.4" + resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz" + integrity sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA== -"cacheable-lookup@^6.0.4": - "integrity" "sha512-mbcDEZCkv2CZF4G01kr8eBd/5agkt9oCqz75tJMSIsquvRZ2sL6Hi5zGVKi/0OSC9oO1GHfJ2AV0ZIOY9vye0A==" - "resolved" "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.0.4.tgz" - "version" "6.0.4" +cacheable-lookup@^6.0.4: + version "6.0.4" + resolved "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.0.4.tgz" + integrity sha512-mbcDEZCkv2CZF4G01kr8eBd/5agkt9oCqz75tJMSIsquvRZ2sL6Hi5zGVKi/0OSC9oO1GHfJ2AV0ZIOY9vye0A== -"cacheable-request@^6.0.0": - "integrity" "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==" - "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" - "version" "6.1.0" +cacheable-request@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz" + 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" + 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" -"cacheable-request@^7.0.2": - "integrity" "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==" - "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz" - "version" "7.0.2" +cacheable-request@^7.0.2: + version "7.0.2" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz" + integrity sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew== dependencies: - "clone-response" "^1.0.2" - "get-stream" "^5.1.0" - "http-cache-semantics" "^4.0.0" - "keyv" "^4.0.0" - "lowercase-keys" "^2.0.0" - "normalize-url" "^6.0.1" - "responselike" "^2.0.0" + clone-response "^1.0.2" + get-stream "^5.1.0" + http-cache-semantics "^4.0.0" + keyv "^4.0.0" + lowercase-keys "^2.0.0" + normalize-url "^6.0.1" + responselike "^2.0.0" -"call-bind@^1.0.0": - "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" - "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - "version" "1.0.2" +call-bind@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: - "function-bind" "^1.1.1" - "get-intrinsic" "^1.0.2" + function-bind "^1.1.1" + get-intrinsic "^1.0.2" -"callsites@^3.0.0", "callsites@^3.1.0": - "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - "version" "3.1.0" +callsites@^3.0.0, callsites@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -"camelcase@^6.2.0": - "integrity" "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz" - "version" "6.2.1" +camelcase@^6.2.0: + version "6.2.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz" + integrity sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA== -"caseless@~0.12.0": - "integrity" "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - "resolved" "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" - "version" "0.12.0" +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= -"chalk@^2.0.0": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" +chalk@4.1.2, chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" + ansi-styles "^4.1.0" + supports-color "^7.1.0" -"chalk@^4.0.0", "chalk@^4.1.0", "chalk@^4.1.1", "chalk@^4.1.2", "chalk@4.1.2": - "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - "version" "4.1.2" +chalk@^2.0.0: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" -"chalk@^5.0.0": - "integrity" "sha512-/duVOqst+luxCQRKEo4bNxinsOQtMP80ZYm7mMqzuh5PociNL0PvmHFvREJ9ueYL2TxlHjBcmLCdmocx9Vg+IQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-5.0.0.tgz" - "version" "5.0.0" +chalk@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-5.0.0.tgz" + integrity sha512-/duVOqst+luxCQRKEo4bNxinsOQtMP80ZYm7mMqzuh5PociNL0PvmHFvREJ9ueYL2TxlHjBcmLCdmocx9Vg+IQ== -"chardet@^0.7.0": - "integrity" "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" - "resolved" "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" - "version" "0.7.0" +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -"chokidar@^3.5.2": - "integrity" "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz" - "version" "3.5.2" +chokidar@^3.5.2: + version "3.5.2" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz" + integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== dependencies: - "anymatch" "~3.1.2" - "braces" "~3.0.2" - "glob-parent" "~5.1.2" - "is-binary-path" "~2.1.0" - "is-glob" "~4.0.1" - "normalize-path" "~3.0.0" - "readdirp" "~3.6.0" + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" optionalDependencies: - "fsevents" "~2.3.2" + fsevents "~2.3.2" -"chownr@^1.1.4": - "integrity" "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" - "resolved" "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" - "version" "1.1.4" +chownr@^1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== -"chownr@^2.0.0": - "integrity" "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==" - "resolved" "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" - "version" "2.0.0" +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== -"ci-info@^2.0.0": - "integrity" "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" - "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" - "version" "2.0.0" +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -"ci-info@^3.2.0": - "integrity" "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==" - "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz" - "version" "3.3.0" +ci-info@^3.2.0: + version "3.3.0" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz" + integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== -"cli-boxes@^2.2.1": - "integrity" "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" - "resolved" "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" - "version" "2.2.1" +cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== -"cli-cursor@^3.1.0": - "integrity" "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==" - "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" - "version" "3.1.0" +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== dependencies: - "restore-cursor" "^3.1.0" + restore-cursor "^3.1.0" -"cli-cursor@^4.0.0": - "integrity" "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==" - "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz" - "version" "4.0.0" +cli-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz" + integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== dependencies: - "restore-cursor" "^4.0.0" + restore-cursor "^4.0.0" -"cli-spinners@^2.5.0", "cli-spinners@^2.6.0": - "integrity" "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==" - "resolved" "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz" - "version" "2.6.1" +cli-spinners@^2.5.0, cli-spinners@^2.6.0: + version "2.6.1" + resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== -"cli-width@^3.0.0": - "integrity" "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==" - "resolved" "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" - "version" "3.0.0" +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -"cliui@^7.0.2": - "integrity" "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==" - "resolved" "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" - "version" "7.0.4" +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: - "string-width" "^4.2.0" - "strip-ansi" "^6.0.0" - "wrap-ansi" "^7.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" -"clone-response@^1.0.2": - "integrity" "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=" - "resolved" "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz" - "version" "1.0.2" +clone-response@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= dependencies: - "mimic-response" "^1.0.0" + mimic-response "^1.0.0" -"clone@^1.0.2": - "integrity" "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" - "resolved" "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" - "version" "1.0.4" +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= -"code-point-at@^1.0.0": - "integrity" "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - "resolved" "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" - "version" "1.1.0" +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= -"color-convert@^1.9.0": - "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - "version" "1.9.3" +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: - "color-name" "1.1.3" + color-name "1.1.3" -"color-convert@^2.0.1": - "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - "version" "2.0.1" +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: - "color-name" "~1.1.4" + color-name "~1.1.4" -"color-name@~1.1.4": - "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - "version" "1.1.4" +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -"color-name@1.1.3": - "integrity" "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - "version" "1.1.3" +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -"color-support@^1.1.2": - "integrity" "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" - "resolved" "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" - "version" "1.1.3" +color-support@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== -"combined-stream@^1.0.6", "combined-stream@^1.0.8", "combined-stream@~1.0.6": - "integrity" "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==" - "resolved" "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" - "version" "1.0.8" +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: - "delayed-stream" "~1.0.0" + delayed-stream "~1.0.0" -"compare-versions@^3.6.0": - "integrity" "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==" - "resolved" "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz" - "version" "3.6.0" +compare-versions@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz" + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== -"component-emitter@^1.3.0": - "integrity" "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - "resolved" "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" - "version" "1.3.0" +component-emitter@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== -"concat-map@0.0.1": - "integrity" "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - "version" "0.0.1" +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= -"concurrently@^6.4.0": - "integrity" "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==" - "resolved" "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz" - "version" "6.5.1" +concurrently@^6.4.0: + version "6.5.1" + resolved "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz" + integrity sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag== dependencies: - "chalk" "^4.1.0" - "date-fns" "^2.16.1" - "lodash" "^4.17.21" - "rxjs" "^6.6.3" - "spawn-command" "^0.0.2-1" - "supports-color" "^8.1.0" - "tree-kill" "^1.2.2" - "yargs" "^16.2.0" + chalk "^4.1.0" + date-fns "^2.16.1" + lodash "^4.17.21" + rxjs "^6.6.3" + spawn-command "^0.0.2-1" + supports-color "^8.1.0" + tree-kill "^1.2.2" + yargs "^16.2.0" -"configstore@^5.0.1": - "integrity" "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==" - "resolved" "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz" - "version" "5.0.1" +configstore@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz" + 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" + 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" -"confusing-browser-globals@1.0.10": - "integrity" "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==" - "resolved" "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz" - "version" "1.0.10" +confusing-browser-globals@1.0.10: + version "1.0.10" + resolved "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz" + integrity sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA== -"console-control-strings@^1.0.0", "console-control-strings@^1.1.0", "console-control-strings@~1.1.0": - "integrity" "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" - "resolved" "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" - "version" "1.1.0" +console-control-strings@^1.0.0, console-control-strings@^1.1.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= -"cookiejar@^2.1.2": - "integrity" "sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ==" - "resolved" "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz" - "version" "2.1.3" +cookiejar@^2.1.2: + version "2.1.3" + resolved "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.3.tgz" + integrity sha512-JxbCBUdrfr6AQjOXrxoTvAMJO4HBTUIlBzslcJPAz+/KT8yk53fXun51u+RenNYvad/+Vc2DIz5o9UxlCDymFQ== -"core-util-is@~1.0.0", "core-util-is@1.0.2": - "integrity" "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - "version" "1.0.2" +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -"cosmiconfig@^7.0.0", "cosmiconfig@7.0.1": - "integrity" "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz" - "version" "7.0.1" +cosmiconfig@7.0.1, cosmiconfig@^7.0.0: + version "7.0.1" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== dependencies: "@types/parse-json" "^4.0.0" - "import-fresh" "^3.2.1" - "parse-json" "^5.0.0" - "path-type" "^4.0.0" - "yaml" "^1.10.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" -"create-require@^1.1.0": - "integrity" "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" - "resolved" "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" - "version" "1.1.1" +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== -"cross-spawn@^7.0.0", "cross-spawn@^7.0.2", "cross-spawn@^7.0.3": - "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - "version" "7.0.3" +cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: - "path-key" "^3.1.0" - "shebang-command" "^2.0.0" - "which" "^2.0.1" + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" -"crypto-random-string@^2.0.0": - "integrity" "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" - "resolved" "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" - "version" "2.0.0" +crypto-random-string@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz" + integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -"dashdash@^1.12.0": - "integrity" "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=" - "resolved" "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" - "version" "1.14.1" +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= dependencies: - "assert-plus" "^1.0.0" + assert-plus "^1.0.0" -"date-fns@^2.16.1": - "integrity" "sha512-sj+J0Mo2p2X1e306MHq282WS4/A8Pz/95GIFcsPNMPMZVI3EUrAdSv90al1k+p74WGLCruMXk23bfEDZa71X9Q==" - "resolved" "https://registry.npmjs.org/date-fns/-/date-fns-2.27.0.tgz" - "version" "2.27.0" +date-fns@^2.16.1: + version "2.27.0" + resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.27.0.tgz" + integrity sha512-sj+J0Mo2p2X1e306MHq282WS4/A8Pz/95GIFcsPNMPMZVI3EUrAdSv90al1k+p74WGLCruMXk23bfEDZa71X9Q== -"debug@^3.2.6": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" +debug@4, debug@^4.0.1, debug@^4.1.1, debug@^4.3.1, debug@^4.3.3: + version "4.3.3" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== dependencies: - "ms" "^2.1.1" + ms "2.1.2" -"debug@^3.2.7": - "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" - "version" "3.2.7" +debug@4.3.2: + version "4.3.2" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz" + integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== dependencies: - "ms" "^2.1.1" + ms "2.1.2" -"debug@^4.0.1", "debug@^4.1.1", "debug@^4.3.1", "debug@^4.3.3", "debug@4": - "integrity" "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz" - "version" "4.3.3" +debug@=3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== dependencies: - "ms" "2.1.2" + ms "2.0.0" -"debug@=3.1.0": - "integrity" "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==" - "resolved" "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz" - "version" "3.1.0" +debug@^3.2.6, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: - "ms" "2.0.0" + ms "^2.1.1" -"debug@4.3.2": - "integrity" "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz" - "version" "4.3.2" +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= dependencies: - "ms" "2.1.2" + mimic-response "^1.0.0" -"decode-uri-component@^0.2.0": - "integrity" "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - "resolved" "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" - "version" "0.2.0" - -"decompress-response@^3.3.0": - "integrity" "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=" - "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" - "version" "3.3.0" +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== dependencies: - "mimic-response" "^1.0.0" + mimic-response "^3.1.0" -"decompress-response@^6.0.0": - "integrity" "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==" - "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" - "version" "6.0.0" +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= dependencies: - "mimic-response" "^3.1.0" + clone "^1.0.2" -"deep-extend@^0.6.0": - "integrity" "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" - "resolved" "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" - "version" "0.6.0" +defer-to-connect@^1.0.1: + version "1.1.3" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" + integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== -"deep-is@^0.1.3": - "integrity" "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - "version" "0.1.4" +defer-to-connect@^2.0.0, defer-to-connect@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== -"defaults@^1.0.3": - "integrity" "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=" - "resolved" "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz" - "version" "1.0.3" +delay@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz" + integrity sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +deprecated-obj@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/deprecated-obj/-/deprecated-obj-2.0.0.tgz" + integrity sha512-CkdywZC2rJ8RGh+y3MM1fw1EJ4oO/oNExGbRFv0AQoMS+faTd3nO7slYjkj/6t8OnIMUE+wxh6G97YHhK1ytrw== dependencies: - "clone" "^1.0.2" + flat "^5.0.2" + lodash "^4.17.20" -"defer-to-connect@^1.0.1": - "integrity" "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" - "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz" - "version" "1.1.3" +deprecation@^2.0.0, deprecation@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz" + integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== -"defer-to-connect@^2.0.0", "defer-to-connect@^2.0.1": - "integrity" "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==" - "resolved" "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz" - "version" "2.0.1" +detect-libc@^1.0.2, detect-libc@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= -"delay@^5.0.0": - "integrity" "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==" - "resolved" "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz" - "version" "5.0.0" +detect-newline@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -"delayed-stream@~1.0.0": - "integrity" "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - "resolved" "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" - "version" "1.0.0" +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== -"delegates@^1.0.0": - "integrity" "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" - "resolved" "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz" - "version" "1.0.0" - -"deprecated-obj@2.0.0": - "integrity" "sha512-CkdywZC2rJ8RGh+y3MM1fw1EJ4oO/oNExGbRFv0AQoMS+faTd3nO7slYjkj/6t8OnIMUE+wxh6G97YHhK1ytrw==" - "resolved" "https://registry.npmjs.org/deprecated-obj/-/deprecated-obj-2.0.0.tgz" - "version" "2.0.0" +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== dependencies: - "flat" "^5.0.2" - "lodash" "^4.17.20" + path-type "^4.0.0" -"deprecation@^2.0.0", "deprecation@^2.3.1": - "integrity" "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==" - "resolved" "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz" - "version" "2.3.1" +discord-api-types@^0.18.1: + version "0.18.1" + resolved "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.18.1.tgz" + integrity sha512-hNC38R9ZF4uaujaZQtQfm5CdQO58uhdkoHQAVvMfIL0LgOSZeW575W8H6upngQOuoxWd8tiRII3LLJm9zuQKYg== -"detect-libc@^1.0.2", "detect-libc@^1.0.3": - "integrity" "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" - "resolved" "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz" - "version" "1.0.3" +discord-api-types@^0.24.0: + version "0.24.0" + resolved "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.24.0.tgz" + integrity sha512-X0uA2a92cRjowUEXpLZIHWl4jiX1NsUpDhcEOpa1/hpO1vkaokgZ8kkPtPih9hHth5UVQ3mHBu/PpB4qjyfJ4A== -"detect-newline@^3.1.0": - "integrity" "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==" - "resolved" "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" - "version" "3.1.0" +discord-api-types@^0.25.2: + version "0.25.2" + resolved "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.25.2.tgz" + integrity sha512-O243LXxb5gLLxubu5zgoppYQuolapGVWPw3ll0acN0+O8TnPUE2kFp9Bt3sTRYodw8xFIknOVxjSeyWYBpVcEQ== -"diff@^4.0.1": - "integrity" "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" - "resolved" "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" - "version" "4.0.2" - -"dir-glob@^3.0.1": - "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" - "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "path-type" "^4.0.0" - -"discord-api-types@^0.18.1": - "integrity" "sha512-hNC38R9ZF4uaujaZQtQfm5CdQO58uhdkoHQAVvMfIL0LgOSZeW575W8H6upngQOuoxWd8tiRII3LLJm9zuQKYg==" - "resolved" "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.18.1.tgz" - "version" "0.18.1" - -"discord-api-types@^0.24.0": - "integrity" "sha512-X0uA2a92cRjowUEXpLZIHWl4jiX1NsUpDhcEOpa1/hpO1vkaokgZ8kkPtPih9hHth5UVQ3mHBu/PpB4qjyfJ4A==" - "resolved" "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.24.0.tgz" - "version" "0.24.0" - -"discord-api-types@^0.25.2": - "integrity" "sha512-O243LXxb5gLLxubu5zgoppYQuolapGVWPw3ll0acN0+O8TnPUE2kFp9Bt3sTRYodw8xFIknOVxjSeyWYBpVcEQ==" - "resolved" "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.25.2.tgz" - "version" "0.25.2" - -"discord.js@^13.3.0": - "integrity" "sha512-zn4G8tL5+tMV00+0aSsVYNYcIfMSdT2g0nudKny+Ikd+XKv7m6bqI7n3Vji0GIRqXDr5ArPaw+iYFM2I1Iw3vg==" - "resolved" "https://registry.npmjs.org/discord.js/-/discord.js-13.3.1.tgz" - "version" "13.3.1" +discord.js@^13.3.0: + version "13.3.1" + resolved "https://registry.npmjs.org/discord.js/-/discord.js-13.3.1.tgz" + integrity sha512-zn4G8tL5+tMV00+0aSsVYNYcIfMSdT2g0nudKny+Ikd+XKv7m6bqI7n3Vji0GIRqXDr5ArPaw+iYFM2I1Iw3vg== dependencies: "@discordjs/builders" "^0.8.1" "@discordjs/collection" "^0.3.2" @@ -1332,3172 +1317,3089 @@ "@sapphire/async-queue" "^1.1.8" "@types/node-fetch" "^2.5.12" "@types/ws" "^8.2.0" - "discord-api-types" "^0.24.0" - "node-fetch" "^2.6.1" - "ws" "^8.2.3" + discord-api-types "^0.24.0" + node-fetch "^2.6.1" + ws "^8.2.3" -"doctrine@^3.0.0": - "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" - "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" - "version" "3.0.0" +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: - "esutils" "^2.0.2" + esutils "^2.0.2" -"dot-prop@^5.2.0": - "integrity" "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==" - "resolved" "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" - "version" "5.3.0" +dot-prop@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz" + integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== dependencies: - "is-obj" "^2.0.0" + is-obj "^2.0.0" -"dot-prop@^6.0.1": - "integrity" "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==" - "resolved" "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz" - "version" "6.0.1" +dot-prop@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== dependencies: - "is-obj" "^2.0.0" + is-obj "^2.0.0" -"dotenv@^8.5.1": - "integrity" "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==" - "resolved" "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz" - "version" "8.6.0" +dotenv@^8.5.1: + version "8.6.0" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-8.6.0.tgz" + integrity sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g== -"dottie@^2.0.0": - "integrity" "sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg==" - "resolved" "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz" - "version" "2.0.2" +dottie@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/dottie/-/dottie-2.0.2.tgz" + integrity sha512-fmrwR04lsniq/uSr8yikThDTrM7epXHBAAjH9TbeH3rEA8tdCO7mRzB9hdmdGyJCxF8KERo9CITcm3kGuoyMhg== -"duplexer3@^0.1.4": - "integrity" "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - "resolved" "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz" - "version" "0.1.4" +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= -"ecc-jsbn@~0.1.1": - "integrity" "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=" - "resolved" "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" - "version" "0.1.2" +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= dependencies: - "jsbn" "~0.1.0" - "safer-buffer" "^2.1.0" + jsbn "~0.1.0" + safer-buffer "^2.1.0" -"emoji-regex@^8.0.0": - "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - "version" "8.0.0" +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -"end-of-stream@^1.1.0": - "integrity" "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==" - "resolved" "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" - "version" "1.4.4" +end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== dependencies: - "once" "^1.4.0" + once "^1.4.0" -"enquirer@^2.3.5": - "integrity" "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==" - "resolved" "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" - "version" "2.3.6" +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== dependencies: - "ansi-colors" "^4.1.1" + ansi-colors "^4.1.1" -"error-ex@^1.3.1": - "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" - "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - "version" "1.3.2" +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== dependencies: - "is-arrayish" "^0.2.1" + is-arrayish "^0.2.1" -"escalade@^3.1.1": - "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - "version" "3.1.1" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -"escape-goat@^2.0.0": - "integrity" "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" - "resolved" "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz" - "version" "2.1.1" +escape-goat@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz" + integrity sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q== -"escape-string-regexp@^1.0.5": - "integrity" "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - "version" "1.0.5" +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -"escape-string-regexp@^4.0.0": - "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - "version" "4.0.0" +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -"eslint-config-xo-typescript@^0.44.0": - "integrity" "sha512-/mRj2KHHwnl3ZyM8vn68NSfRoEunkSYagWERGmNnU5UOLo4AY9jjBNZW+/sDOaPYuc5xzYmLxYspDCVCXKLGNQ==" - "resolved" "https://registry.npmjs.org/eslint-config-xo-typescript/-/eslint-config-xo-typescript-0.44.0.tgz" - "version" "0.44.0" +eslint-config-xo-typescript@^0.44.0: + version "0.44.0" + resolved "https://registry.npmjs.org/eslint-config-xo-typescript/-/eslint-config-xo-typescript-0.44.0.tgz" + integrity sha512-/mRj2KHHwnl3ZyM8vn68NSfRoEunkSYagWERGmNnU5UOLo4AY9jjBNZW+/sDOaPYuc5xzYmLxYspDCVCXKLGNQ== dependencies: - "typescript" ">=4.3" + typescript ">=4.3" -"eslint-config-xo@^0.38.0": - "integrity" "sha512-G2jL+VyfkcZW8GoTmqLsExvrWssBedSoaQQ11vyhflDeT3csMdBVp0On+AVijrRuvgmkWeDwwUL5Rj0qDRHK6g==" - "resolved" "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.38.0.tgz" - "version" "0.38.0" +eslint-config-xo@^0.38.0: + version "0.38.0" + resolved "https://registry.npmjs.org/eslint-config-xo/-/eslint-config-xo-0.38.0.tgz" + integrity sha512-G2jL+VyfkcZW8GoTmqLsExvrWssBedSoaQQ11vyhflDeT3csMdBVp0On+AVijrRuvgmkWeDwwUL5Rj0qDRHK6g== dependencies: - "confusing-browser-globals" "1.0.10" + confusing-browser-globals "1.0.10" -"eslint-scope@^5.1.1": - "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" - "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" - "version" "5.1.1" +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== dependencies: - "esrecurse" "^4.3.0" - "estraverse" "^4.1.1" + esrecurse "^4.3.0" + estraverse "^4.1.1" -"eslint-utils@^2.1.0": - "integrity" "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==" - "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" - "version" "2.1.0" +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== dependencies: - "eslint-visitor-keys" "^1.1.0" + eslint-visitor-keys "^1.1.0" -"eslint-utils@^3.0.0": - "integrity" "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==" - "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" - "version" "3.0.0" +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== dependencies: - "eslint-visitor-keys" "^2.0.0" + eslint-visitor-keys "^2.0.0" -"eslint-visitor-keys@^1.1.0": - "integrity" "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" - "version" "1.3.0" +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== -"eslint-visitor-keys@^1.3.0": - "integrity" "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz" - "version" "1.3.0" +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -"eslint-visitor-keys@^2.0.0": - "integrity" "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" - "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" - "version" "2.1.0" - -"eslint@*", "eslint@^5.0.0 || ^6.0.0 || ^7.0.0", "eslint@^7.32.0", "eslint@>=5", "eslint@>=7.20.0", "eslint@>=7.32.0": - "integrity" "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==" - "resolved" "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz" - "version" "7.32.0" +eslint@^7.32.0: + version "7.32.0" + resolved "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz" + integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA== dependencies: "@babel/code-frame" "7.12.11" "@eslint/eslintrc" "^0.4.3" "@humanwhocodes/config-array" "^0.5.0" - "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" - "escape-string-regexp" "^4.0.0" - "eslint-scope" "^5.1.1" - "eslint-utils" "^2.1.0" - "eslint-visitor-keys" "^2.0.0" - "espree" "^7.3.1" - "esquery" "^1.4.0" - "esutils" "^2.0.2" - "fast-deep-equal" "^3.1.3" - "file-entry-cache" "^6.0.1" - "functional-red-black-tree" "^1.0.1" - "glob-parent" "^5.1.2" - "globals" "^13.6.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.merge" "^4.6.2" - "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" "^6.0.9" - "text-table" "^0.2.0" - "v8-compile-cache" "^2.0.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" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.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.merge "^4.6.2" + 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 "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" -"espree@^7.3.0", "espree@^7.3.1": - "integrity" "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==" - "resolved" "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz" - "version" "7.3.1" +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== dependencies: - "acorn" "^7.4.0" - "acorn-jsx" "^5.3.1" - "eslint-visitor-keys" "^1.3.0" + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" -"esprima@^4.0.0": - "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - "version" "4.0.1" +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -"esquery@^1.4.0": - "integrity" "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==" - "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" - "version" "1.4.0" +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== dependencies: - "estraverse" "^5.1.0" + estraverse "^5.1.0" -"esrecurse@^4.3.0": - "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" - "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - "version" "4.3.0" +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== dependencies: - "estraverse" "^5.2.0" + estraverse "^5.2.0" -"estraverse@^4.1.1": - "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" - "version" "4.3.0" +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== -"estraverse@^5.1.0": - "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - "version" "5.3.0" +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== -"estraverse@^5.2.0": - "integrity" "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" - "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - "version" "5.3.0" +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -"esutils@^2.0.2": - "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" - "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - "version" "2.0.3" +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== -"event-target-shim@^5.0.0": - "integrity" "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" - "resolved" "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz" - "version" "5.0.1" +eventemitter3@^4.0.7: + version "4.0.7" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== -"eventemitter3@^4.0.7": - "integrity" "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" - "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" - "version" "4.0.7" - -"execa@^4.0.2": - "integrity" "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==" - "resolved" "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz" - "version" "4.1.0" +execa@5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== dependencies: - "cross-spawn" "^7.0.0" - "get-stream" "^5.0.0" - "human-signals" "^1.1.1" - "is-stream" "^2.0.0" - "merge-stream" "^2.0.0" - "npm-run-path" "^4.0.0" - "onetime" "^5.1.0" - "signal-exit" "^3.0.2" - "strip-final-newline" "^2.0.0" + cross-spawn "^7.0.3" + get-stream "^6.0.0" + human-signals "^2.1.0" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.1" + onetime "^5.1.2" + signal-exit "^3.0.3" + strip-final-newline "^2.0.0" -"execa@5.1.1": - "integrity" "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==" - "resolved" "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz" - "version" "5.1.1" +execa@^4.0.2: + version "4.1.0" + resolved "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: - "cross-spawn" "^7.0.3" - "get-stream" "^6.0.0" - "human-signals" "^2.1.0" - "is-stream" "^2.0.0" - "merge-stream" "^2.0.0" - "npm-run-path" "^4.0.1" - "onetime" "^5.1.2" - "signal-exit" "^3.0.3" - "strip-final-newline" "^2.0.0" + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" -"extend@~3.0.2": - "integrity" "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - "resolved" "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" - "version" "3.0.2" +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -"external-editor@^3.0.3": - "integrity" "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==" - "resolved" "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" - "version" "3.1.0" +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== dependencies: - "chardet" "^0.7.0" - "iconv-lite" "^0.4.24" - "tmp" "^0.0.33" + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" -"extsprintf@^1.2.0", "extsprintf@1.3.0": - "integrity" "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" - "resolved" "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" - "version" "1.3.0" +extsprintf@1.3.0, extsprintf@^1.2.0: + version "1.3.0" + resolved "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= -"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": - "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - "version" "3.1.3" +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -"fast-glob@^3.1.1": - "integrity" "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==" - "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz" - "version" "3.2.7" +fast-glob@^3.1.1: + version "3.2.7" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz" + integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" - "glob-parent" "^5.1.2" - "merge2" "^1.3.0" - "micromatch" "^4.0.4" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" -"fast-json-stable-stringify@^2.0.0": - "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - "version" "2.1.0" +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -"fast-levenshtein@^2.0.6": - "integrity" "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - "version" "2.0.6" +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -"fast-safe-stringify@^2.0.7": - "integrity" "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" - "resolved" "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" - "version" "2.1.1" +fast-safe-stringify@^2.0.7: + version "2.1.1" + resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== -"fastq@^1.6.0": - "integrity" "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==" - "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" - "version" "1.13.0" +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== dependencies: - "reusify" "^1.0.4" + reusify "^1.0.4" -"figures@^3.0.0": - "integrity" "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==" - "resolved" "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" - "version" "3.2.0" +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== dependencies: - "escape-string-regexp" "^1.0.5" + escape-string-regexp "^1.0.5" -"file-entry-cache@^6.0.1": - "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" - "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" - "version" "6.0.1" +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== dependencies: - "flat-cache" "^3.0.4" + flat-cache "^3.0.4" -"fill-range@^7.0.1": - "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - "version" "7.0.1" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: - "to-regex-range" "^5.0.1" + to-regex-range "^5.0.1" -"filter-obj@^1.1.0": - "integrity" "sha1-mzERErxsYSehbgFsbF1/GeCAXFs=" - "resolved" "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz" - "version" "1.1.0" +filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz" + integrity sha1-mzERErxsYSehbgFsbF1/GeCAXFs= -"find-up@^5.0.0": - "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - "version" "5.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: - "locate-path" "^6.0.0" - "path-exists" "^4.0.0" + locate-path "^6.0.0" + path-exists "^4.0.0" -"find-versions@^4.0.0": - "integrity" "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==" - "resolved" "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz" - "version" "4.0.0" +find-versions@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz" + integrity sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ== dependencies: - "semver-regex" "^3.1.2" + semver-regex "^3.1.2" -"flat-cache@^3.0.4": - "integrity" "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==" - "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" - "version" "3.0.4" +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== dependencies: - "flatted" "^3.1.0" - "rimraf" "^3.0.2" + flatted "^3.1.0" + rimraf "^3.0.2" -"flat@^5.0.2": - "integrity" "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" - "resolved" "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" - "version" "5.0.2" +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -"flatted@^3.1.0": - "integrity" "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==" - "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz" - "version" "3.2.4" +flatted@^3.1.0: + version "3.2.4" + resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz" + integrity sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw== -"fluent-ffmpeg@^2.1.2": - "integrity" "sha1-yVLeIkD4EuvaCqgAbXd27irPfXQ=" - "resolved" "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz" - "version" "2.1.2" +fluent-ffmpeg@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/fluent-ffmpeg/-/fluent-ffmpeg-2.1.2.tgz" + integrity sha1-yVLeIkD4EuvaCqgAbXd27irPfXQ= dependencies: - "async" ">=0.2.9" - "which" "^1.1.1" + async ">=0.2.9" + which "^1.1.1" -"follow-redirects@1.5.10": - "integrity" "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==" - "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz" - "version" "1.5.10" +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== dependencies: - "debug" "=3.1.0" + debug "=3.1.0" -"forever-agent@~0.6.1": - "integrity" "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" - "resolved" "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" - "version" "0.6.1" +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -"form-data-encoder@1.7.1": - "integrity" "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==" - "resolved" "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz" - "version" "1.7.1" +form-data-encoder@1.7.1: + version "1.7.1" + resolved "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz" + integrity sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg== -"form-data@^3.0.0": - "integrity" "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" - "version" "3.0.1" +form-data@4.0.0, form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.8" - "mime-types" "^2.1.12" + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" -"form-data@^4.0.0", "form-data@4.0.0": - "integrity" "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" - "version" "4.0.0" +form-data@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz" + integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.8" - "mime-types" "^2.1.12" + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" -"form-data@~2.3.2": - "integrity" "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==" - "resolved" "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" - "version" "2.3.3" +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== dependencies: - "asynckit" "^0.4.0" - "combined-stream" "^1.0.6" - "mime-types" "^2.1.12" + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" -"formidable@^1.2.2": - "integrity" "sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==" - "resolved" "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz" - "version" "1.2.6" +formidable@^1.2.2: + version "1.2.6" + resolved "https://registry.npmjs.org/formidable/-/formidable-1.2.6.tgz" + integrity sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ== -"fs-capacitor@^7.0.1": - "integrity" "sha512-YjxAAorsFA/pK3PTLuYJO+FlZ7wvGTIwGPbpGzVAJ+DUp6uof0zZjG6dcYsrGX864BMeUCj9R6lmkYZ5uY5lWQ==" - "resolved" "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-7.0.1.tgz" - "version" "7.0.1" +fs-capacitor@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fs-capacitor/-/fs-capacitor-7.0.1.tgz" + integrity sha512-YjxAAorsFA/pK3PTLuYJO+FlZ7wvGTIwGPbpGzVAJ+DUp6uof0zZjG6dcYsrGX864BMeUCj9R6lmkYZ5uY5lWQ== -"fs-minipass@^1.2.7": - "integrity" "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==" - "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz" - "version" "1.2.7" +fs-minipass@^1.2.7: + version "1.2.7" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== dependencies: - "minipass" "^2.6.0" + minipass "^2.6.0" -"fs-minipass@^2.0.0": - "integrity" "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==" - "resolved" "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" - "version" "2.1.0" +fs-minipass@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: - "minipass" "^3.0.0" + minipass "^3.0.0" -"fs.realpath@^1.0.0": - "integrity" "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - "version" "1.0.0" +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -"fstream@^1.0.0", "fstream@^1.0.12": - "integrity" "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==" - "resolved" "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz" - "version" "1.0.12" +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +fstream@^1.0.0, fstream@^1.0.12: + version "1.0.12" + resolved "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== dependencies: - "graceful-fs" "^4.1.2" - "inherits" "~2.0.0" - "mkdirp" ">=0.5 0" - "rimraf" "2" + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" -"function-bind@^1.1.1": - "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - "version" "1.1.1" +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -"functional-red-black-tree@^1.0.1": - "integrity" "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" - "resolved" "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" - "version" "1.0.1" +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= -"gauge@^3.0.0": - "integrity" "sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==" - "resolved" "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz" - "version" "3.0.2" +gauge@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/gauge/-/gauge-3.0.2.tgz" + integrity sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q== dependencies: - "aproba" "^1.0.3 || ^2.0.0" - "color-support" "^1.1.2" - "console-control-strings" "^1.0.0" - "has-unicode" "^2.0.1" - "object-assign" "^4.1.1" - "signal-exit" "^3.0.0" - "string-width" "^4.2.3" - "strip-ansi" "^6.0.1" - "wide-align" "^1.1.2" + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.2" + console-control-strings "^1.0.0" + has-unicode "^2.0.1" + object-assign "^4.1.1" + signal-exit "^3.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.2" -"gauge@~2.7.3": - "integrity" "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=" - "resolved" "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz" - "version" "2.7.4" +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz" + 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" + 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-caller-file@^2.0.5": - "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" - "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" - "version" "2.0.5" +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -"get-intrinsic@^1.0.2": - "integrity" "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==" - "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" - "version" "1.1.1" +get-intrinsic@^1.0.2: + version "1.1.1" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== dependencies: - "function-bind" "^1.1.1" - "has" "^1.0.3" - "has-symbols" "^1.0.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" -"get-stream@^4.1.0": - "integrity" "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" - "version" "4.1.0" +get-stream@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== dependencies: - "pump" "^3.0.0" + pump "^3.0.0" -"get-stream@^5.0.0": - "integrity" "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" - "version" "5.2.0" +get-stream@^5.0.0, get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: - "pump" "^3.0.0" + pump "^3.0.0" -"get-stream@^5.1.0": - "integrity" "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz" - "version" "5.2.0" +get-stream@^6.0.0, get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-youtube-id@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/get-youtube-id/-/get-youtube-id-1.0.1.tgz" + integrity sha512-5yidLzoLXbtw82a/Wb7LrajkGn29BM6JuLWeHyNfzOGp1weGyW4+7eMz6cP23+etqj27VlOFtq8fFFDMLq/FXQ== + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= dependencies: - "pump" "^3.0.0" + assert-plus "^1.0.0" -"get-stream@^6.0.0", "get-stream@^6.0.1": - "integrity" "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz" - "version" "6.0.1" - -"get-youtube-id@^1.0.1": - "integrity" "sha512-5yidLzoLXbtw82a/Wb7LrajkGn29BM6JuLWeHyNfzOGp1weGyW4+7eMz6cP23+etqj27VlOFtq8fFFDMLq/FXQ==" - "resolved" "https://registry.npmjs.org/get-youtube-id/-/get-youtube-id-1.0.1.tgz" - "version" "1.0.1" - -"getpass@^0.1.1": - "integrity" "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=" - "resolved" "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz" - "version" "0.1.7" +git-up@^4.0.0: + version "4.0.5" + resolved "https://registry.npmjs.org/git-up/-/git-up-4.0.5.tgz" + integrity sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA== dependencies: - "assert-plus" "^1.0.0" + is-ssh "^1.3.0" + parse-url "^6.0.0" -"git-up@^4.0.0": - "integrity" "sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==" - "resolved" "https://registry.npmjs.org/git-up/-/git-up-4.0.5.tgz" - "version" "4.0.5" +git-url-parse@11.6.0: + version "11.6.0" + resolved "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.6.0.tgz" + integrity sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g== dependencies: - "is-ssh" "^1.3.0" - "parse-url" "^6.0.0" + git-up "^4.0.0" -"git-url-parse@11.6.0": - "integrity" "sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g==" - "resolved" "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.6.0.tgz" - "version" "11.6.0" +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: - "git-up" "^4.0.0" + is-glob "^4.0.1" -"glob-parent@^5.1.2", "glob-parent@~5.1.2": - "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - "version" "5.1.2" +glob@7.2.0, glob@^7.0.0, glob@^7.0.3, glob@^7.1.3: + version "7.2.0" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: - "is-glob" "^4.0.1" + 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" -"glob@^7.0.0", "glob@^7.0.3", "glob@^7.1.3", "glob@7.2.0": - "integrity" "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" - "version" "7.2.0" +global-dirs@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz" + integrity sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA== 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" + ini "2.0.0" -"global-dirs@^3.0.0": - "integrity" "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==" - "resolved" "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz" - "version" "3.0.0" +globals@^13.6.0, globals@^13.9.0: + version "13.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz" + integrity sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg== dependencies: - "ini" "2.0.0" + type-fest "^0.20.2" -"globals@^13.6.0", "globals@^13.9.0": - "integrity" "sha512-uS8X6lSKN2JumVoXrbUz+uG4BYG+eiawqm3qFcT7ammfbUHeCBoJMlHcec/S3krSk73/AE/f0szYFmgAA3kYZg==" - "resolved" "https://registry.npmjs.org/globals/-/globals-13.12.0.tgz" - "version" "13.12.0" +globby@11.0.4, globby@^11.0.3: + version "11.0.4" + resolved "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz" + integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== dependencies: - "type-fest" "^0.20.2" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.1.1" + ignore "^5.1.4" + merge2 "^1.3.0" + slash "^3.0.0" -"globby@^11.0.3", "globby@11.0.4": - "integrity" "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==" - "resolved" "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz" - "version" "11.0.4" - dependencies: - "array-union" "^2.1.0" - "dir-glob" "^3.0.1" - "fast-glob" "^3.1.1" - "ignore" "^5.1.4" - "merge2" "^1.3.0" - "slash" "^3.0.0" - -"got@^12.0.0": - "integrity" "sha512-gNNNghQ1yw0hyzie1FLK6gY90BQlXU9zSByyRygnbomHPruKQ6hAKKbpO1RfNZp8b+qNzNipGeRG3tUelKcVsA==" - "resolved" "https://registry.npmjs.org/got/-/got-12.0.0.tgz" - "version" "12.0.0" - dependencies: - "@sindresorhus/is" "^4.2.0" - "@szmarczak/http-timer" "^5.0.1" - "@types/cacheable-request" "^6.0.2" - "@types/responselike" "^1.0.0" - "cacheable-lookup" "^6.0.4" - "cacheable-request" "^7.0.2" - "decompress-response" "^6.0.0" - "form-data-encoder" "1.7.1" - "get-stream" "^6.0.1" - "http2-wrapper" "^2.1.9" - "lowercase-keys" "^3.0.0" - "p-cancelable" "^3.0.0" - "responselike" "^2.0.0" - -"got@^9.6.0": - "integrity" "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==" - "resolved" "https://registry.npmjs.org/got/-/got-9.6.0.tgz" - "version" "9.6.0" - 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" - -"got@11.8.3": - "integrity" "sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg==" - "resolved" "https://registry.npmjs.org/got/-/got-11.8.3.tgz" - "version" "11.8.3" +got@11.8.3: + version "11.8.3" + resolved "https://registry.npmjs.org/got/-/got-11.8.3.tgz" + integrity sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg== dependencies: "@sindresorhus/is" "^4.0.0" "@szmarczak/http-timer" "^4.0.5" "@types/cacheable-request" "^6.0.1" "@types/responselike" "^1.0.0" - "cacheable-lookup" "^5.0.3" - "cacheable-request" "^7.0.2" - "decompress-response" "^6.0.0" - "http2-wrapper" "^1.0.0-beta.5.2" - "lowercase-keys" "^2.0.0" - "p-cancelable" "^2.0.0" - "responselike" "^2.0.0" + cacheable-lookup "^5.0.3" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + http2-wrapper "^1.0.0-beta.5.2" + lowercase-keys "^2.0.0" + p-cancelable "^2.0.0" + responselike "^2.0.0" -"graceful-fs@^4.1.2": - "integrity" "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" - "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz" - "version" "4.2.8" - -"grapheme-splitter@^1.0.4": - "integrity" "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" - "resolved" "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" - "version" "1.0.4" - -"har-schema@^2.0.0": - "integrity" "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" - "resolved" "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" - "version" "2.0.0" - -"har-validator@~5.1.3": - "integrity" "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==" - "resolved" "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" - "version" "5.1.5" +got@^12.0.0: + version "12.0.0" + resolved "https://registry.npmjs.org/got/-/got-12.0.0.tgz" + integrity sha512-gNNNghQ1yw0hyzie1FLK6gY90BQlXU9zSByyRygnbomHPruKQ6hAKKbpO1RfNZp8b+qNzNipGeRG3tUelKcVsA== dependencies: - "ajv" "^6.12.3" - "har-schema" "^2.0.0" + "@sindresorhus/is" "^4.2.0" + "@szmarczak/http-timer" "^5.0.1" + "@types/cacheable-request" "^6.0.2" + "@types/responselike" "^1.0.0" + cacheable-lookup "^6.0.4" + cacheable-request "^7.0.2" + decompress-response "^6.0.0" + form-data-encoder "1.7.1" + get-stream "^6.0.1" + http2-wrapper "^2.1.9" + lowercase-keys "^3.0.0" + p-cancelable "^3.0.0" + responselike "^2.0.0" -"has-flag@^3.0.0": - "integrity" "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - "version" "3.0.0" - -"has-flag@^4.0.0": - "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - "version" "4.0.0" - -"has-symbols@^1.0.1": - "integrity" "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz" - "version" "1.0.2" - -"has-unicode@^2.0.0", "has-unicode@^2.0.1": - "integrity" "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" - "resolved" "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" - "version" "2.0.1" - -"has-yarn@^2.1.0": - "integrity" "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" - "resolved" "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz" - "version" "2.1.0" - -"has@^1.0.3": - "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" - "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - "version" "1.0.3" +got@^9.6.0: + version "9.6.0" + resolved "https://registry.npmjs.org/got/-/got-9.6.0.tgz" + integrity sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q== dependencies: - "function-bind" "^1.1.1" + "@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" -"hasha@^5.2.2": - "integrity" "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==" - "resolved" "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz" - "version" "5.2.2" +graceful-fs@^4.1.2: + version "4.2.8" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz" + integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== + +grapheme-splitter@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" + integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: - "is-stream" "^2.0.0" - "type-fest" "^0.8.0" + ajv "^6.12.3" + har-schema "^2.0.0" -"http-cache-semantics@^4.0.0": - "integrity" "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" - "resolved" "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" - "version" "4.1.0" +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -"http-signature@~1.2.0": - "integrity" "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=" - "resolved" "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" - "version" "1.2.0" +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-unicode@^2.0.0, has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-yarn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz" + integrity sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: - "assert-plus" "^1.0.0" - "jsprim" "^1.2.2" - "sshpk" "^1.7.0" + function-bind "^1.1.1" -"http2-wrapper@^1.0.0-beta.5.2": - "integrity" "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==" - "resolved" "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz" - "version" "1.0.3" +hasha@^5.2.2: + version "5.2.2" + resolved "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz" + integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== dependencies: - "quick-lru" "^5.1.1" - "resolve-alpn" "^1.0.0" + is-stream "^2.0.0" + type-fest "^0.8.0" -"http2-wrapper@^2.1.9": - "integrity" "sha512-QHgsdYkieKp+6JbXP25P+tepqiHYd+FVnDwXpxi/BlUcoIB0nsmTOymTNvETuTO+pDuwcSklPE72VR3DqV+Haw==" - "resolved" "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.1.10.tgz" - "version" "2.1.10" +http-cache-semantics@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz" + integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= dependencies: - "quick-lru" "^5.1.1" - "resolve-alpn" "^1.2.0" + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" -"https-proxy-agent@^5.0.0": - "integrity" "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==" - "resolved" "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz" - "version" "5.0.0" +http2-wrapper@^1.0.0-beta.5.2: + version "1.0.3" + resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz" + integrity sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg== dependencies: - "agent-base" "6" - "debug" "4" + quick-lru "^5.1.1" + resolve-alpn "^1.0.0" -"human-signals@^1.1.1": - "integrity" "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" - "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz" - "version" "1.1.1" - -"human-signals@^2.1.0": - "integrity" "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" - "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" - "version" "2.1.0" - -"husky@^4.3.8": - "integrity" "sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow==" - "resolved" "https://registry.npmjs.org/husky/-/husky-4.3.8.tgz" - "version" "4.3.8" +http2-wrapper@^2.1.9: + version "2.1.10" + resolved "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.1.10.tgz" + integrity sha512-QHgsdYkieKp+6JbXP25P+tepqiHYd+FVnDwXpxi/BlUcoIB0nsmTOymTNvETuTO+pDuwcSklPE72VR3DqV+Haw== dependencies: - "chalk" "^4.0.0" - "ci-info" "^2.0.0" - "compare-versions" "^3.6.0" - "cosmiconfig" "^7.0.0" - "find-versions" "^4.0.0" - "opencollective-postinstall" "^2.0.2" - "pkg-dir" "^5.0.0" - "please-upgrade-node" "^3.2.0" - "slash" "^3.0.0" - "which-pm-runs" "^1.0.0" + quick-lru "^5.1.1" + resolve-alpn "^1.2.0" -"iconv-lite@^0.4.24", "iconv-lite@^0.4.4": - "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - "version" "0.4.24" +https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== dependencies: - "safer-buffer" ">= 2.1.2 < 3" + agent-base "6" + debug "4" -"ieee754@^1.1.13", "ieee754@^1.2.1": - "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" - "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" - "version" "1.2.1" +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== -"ignore-by-default@^1.0.1": - "integrity" "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" - "resolved" "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz" - "version" "1.0.1" +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -"ignore-walk@^3.0.1": - "integrity" "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==" - "resolved" "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz" - "version" "3.0.4" +husky@^4.3.8: + version "4.3.8" + resolved "https://registry.npmjs.org/husky/-/husky-4.3.8.tgz" + integrity sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow== dependencies: - "minimatch" "^3.0.4" + chalk "^4.0.0" + ci-info "^2.0.0" + compare-versions "^3.6.0" + cosmiconfig "^7.0.0" + find-versions "^4.0.0" + opencollective-postinstall "^2.0.2" + pkg-dir "^5.0.0" + please-upgrade-node "^3.2.0" + slash "^3.0.0" + which-pm-runs "^1.0.0" -"ignore@^4.0.6": - "integrity" "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" - "version" "4.0.6" - -"ignore@^5.1.4", "ignore@^5.1.8": - "integrity" "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" - "version" "5.2.0" - -"import-cwd@3.0.0": - "integrity" "sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==" - "resolved" "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz" - "version" "3.0.0" +iconv-lite@^0.4.24, iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: - "import-from" "^3.0.0" + safer-buffer ">= 2.1.2 < 3" -"import-fresh@^3.0.0", "import-fresh@^3.2.1": - "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" - "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - "version" "3.3.0" +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore-by-default@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz" + integrity sha1-SMptcvbGo68Aqa1K5odr44ieKwk= + +ignore-walk@^3.0.1: + version "3.0.4" + resolved "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz" + integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== dependencies: - "parent-module" "^1.0.0" - "resolve-from" "^4.0.0" + minimatch "^3.0.4" -"import-from@^3.0.0": - "integrity" "sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==" - "resolved" "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz" - "version" "3.0.0" +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.4, ignore@^5.1.8: + version "5.2.0" + resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +import-cwd@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/import-cwd/-/import-cwd-3.0.0.tgz" + integrity sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg== dependencies: - "resolve-from" "^5.0.0" + import-from "^3.0.0" -"import-lazy@^2.1.0": - "integrity" "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" - "resolved" "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz" - "version" "2.1.0" - -"imurmurhash@^0.1.4": - "integrity" "sha1-khi5srkoojixPcT7a21XbyMUU+o=" - "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - "version" "0.1.4" - -"inflection@1.13.1": - "integrity" "sha512-dldYtl2WlN0QDkIDtg8+xFwOS2Tbmp12t1cHa5/YClU6ZQjTFm7B66UcVbh9NQB+HvT5BAd2t5+yKsBkw5pcqA==" - "resolved" "https://registry.npmjs.org/inflection/-/inflection-1.13.1.tgz" - "version" "1.13.1" - -"inflight@^1.0.4": - "integrity" "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" - "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - "version" "1.0.6" +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== dependencies: - "once" "^1.3.0" - "wrappy" "1" + parent-module "^1.0.0" + resolve-from "^4.0.0" -"inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.0", "inherits@~2.0.3", "inherits@2": - "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - "version" "2.0.4" - -"ini@~1.3.0": - "integrity" "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" - "resolved" "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" - "version" "1.3.8" - -"ini@2.0.0": - "integrity" "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" - "resolved" "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" - "version" "2.0.0" - -"inquirer@8.2.0": - "integrity" "sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ==" - "resolved" "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz" - "version" "8.2.0" +import-from@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/import-from/-/import-from-3.0.0.tgz" + integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== dependencies: - "ansi-escapes" "^4.2.1" - "chalk" "^4.1.1" - "cli-cursor" "^3.1.0" - "cli-width" "^3.0.0" - "external-editor" "^3.0.3" - "figures" "^3.0.0" - "lodash" "^4.17.21" - "mute-stream" "0.0.8" - "ora" "^5.4.1" - "run-async" "^2.4.0" - "rxjs" "^7.2.0" - "string-width" "^4.1.0" - "strip-ansi" "^6.0.0" - "through" "^2.3.6" + resolve-from "^5.0.0" -"interpret@^1.0.0": - "integrity" "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" - "resolved" "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" - "version" "1.4.0" +import-lazy@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz" + integrity sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM= -"inversify@^6.0.1": - "integrity" "sha512-B3ex30927698TJENHR++8FfEaJGqoWOgI6ZY5Ht/nLUsFCwHn6akbwtnUAPCgUepAnTpe2qHxhDNjoKLyz6rgQ==" - "resolved" "https://registry.npmjs.org/inversify/-/inversify-6.0.1.tgz" - "version" "6.0.1" +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -"is-arrayish@^0.2.1": - "integrity" "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - "version" "0.2.1" +inflection@1.13.1: + version "1.13.1" + resolved "https://registry.npmjs.org/inflection/-/inflection-1.13.1.tgz" + integrity sha512-dldYtl2WlN0QDkIDtg8+xFwOS2Tbmp12t1cHa5/YClU6ZQjTFm7B66UcVbh9NQB+HvT5BAd2t5+yKsBkw5pcqA== -"is-binary-path@~2.1.0": - "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" - "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - "version" "2.1.0" +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= dependencies: - "binary-extensions" "^2.0.0" + once "^1.3.0" + wrappy "1" -"is-ci@^2.0.0": - "integrity" "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==" - "resolved" "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" - "version" "2.0.0" +inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz" + integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== + +ini@~1.3.0: + version "1.3.8" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inquirer@8.2.0: + version "8.2.0" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.2.0.tgz" + integrity sha512-0crLweprevJ02tTuA6ThpoAERAGyVILC4sS74uib58Xf/zSr1/ZWtmm7D5CI+bSQEaA04f0K7idaHpQbSWgiVQ== dependencies: - "ci-info" "^2.0.0" + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.2.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" -"is-ci@3.0.1": - "integrity" "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==" - "resolved" "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz" - "version" "3.0.1" +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +inversify@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/inversify/-/inversify-6.0.1.tgz" + integrity sha512-B3ex30927698TJENHR++8FfEaJGqoWOgI6ZY5Ht/nLUsFCwHn6akbwtnUAPCgUepAnTpe2qHxhDNjoKLyz6rgQ== + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: - "ci-info" "^3.2.0" + binary-extensions "^2.0.0" -"is-core-module@^2.2.0": - "integrity" "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==" - "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz" - "version" "2.8.0" +is-ci@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz" + integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== dependencies: - "has" "^1.0.3" + ci-info "^3.2.0" -"is-docker@^2.0.0": - "integrity" "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==" - "resolved" "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" - "version" "2.2.1" - -"is-extglob@^2.1.1": - "integrity" "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - "version" "2.1.1" - -"is-fullwidth-code-point@^1.0.0": - "integrity" "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" - "version" "1.0.0" +is-ci@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" + integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== dependencies: - "number-is-nan" "^1.0.0" + ci-info "^2.0.0" -"is-fullwidth-code-point@^3.0.0": - "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" - "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - "version" "3.0.0" - -"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@~4.0.1": - "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - "version" "4.0.3" +is-core-module@^2.2.0: + version "2.8.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz" + integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== dependencies: - "is-extglob" "^2.1.1" + has "^1.0.3" -"is-installed-globally@^0.4.0": - "integrity" "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==" - "resolved" "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" - "version" "0.4.0" +is-docker@^2.0.0: + version "2.2.1" + resolved "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= dependencies: - "global-dirs" "^3.0.0" - "is-path-inside" "^3.0.2" + number-is-nan "^1.0.0" -"is-interactive@^1.0.0": - "integrity" "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==" - "resolved" "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" - "version" "1.0.0" +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -"is-interactive@^2.0.0": - "integrity" "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==" - "resolved" "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz" - "version" "2.0.0" - -"is-npm@^5.0.0": - "integrity" "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" - "resolved" "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz" - "version" "5.0.0" - -"is-number@^7.0.0": - "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - "version" "7.0.0" - -"is-obj@^2.0.0": - "integrity" "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" - "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" - "version" "2.0.0" - -"is-path-inside@^3.0.2": - "integrity" "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" - "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" - "version" "3.0.3" - -"is-plain-object@^5.0.0": - "integrity" "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" - "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" - "version" "5.0.0" - -"is-ssh@^1.3.0": - "integrity" "sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ==" - "resolved" "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.3.tgz" - "version" "1.3.3" +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: - "protocols" "^1.1.0" + is-extglob "^2.1.1" -"is-stream@^2.0.0": - "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" - "version" "2.0.1" - -"is-typedarray@^1.0.0", "is-typedarray@~1.0.0": - "integrity" "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" - "resolved" "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" - "version" "1.0.0" - -"is-unicode-supported@^0.1.0": - "integrity" "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" - "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" - "version" "0.1.0" - -"is-unicode-supported@^1.1.0": - "integrity" "sha512-lDcxivp8TJpLG75/DpatAqNzOpDPSpED8XNtrpBHTdQ2InQ1PbW78jhwSxyxhhu+xbVSast2X38bwj8atwoUQA==" - "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.1.0.tgz" - "version" "1.1.0" - -"is-wsl@^2.1.1": - "integrity" "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==" - "resolved" "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" - "version" "2.2.0" +is-installed-globally@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz" + integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== dependencies: - "is-docker" "^2.0.0" + global-dirs "^3.0.0" + is-path-inside "^3.0.2" -"is-yarn-global@^0.3.0": - "integrity" "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" - "resolved" "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz" - "version" "0.3.0" +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== -"isarray@~1.0.0": - "integrity" "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - "version" "1.0.0" +is-interactive@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz" + integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ== -"isexe@^2.0.0": - "integrity" "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - "version" "2.0.0" +is-npm@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz" + integrity sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA== -"iso8601-duration@^1.3.0": - "integrity" "sha512-K4CiUBzo3YeWk76FuET/dQPH03WE04R94feo5TSKQCXpoXQt9E4yx2CnY737QZnSAI3PI4WlKo/zfqizGx52QQ==" - "resolved" "https://registry.npmjs.org/iso8601-duration/-/iso8601-duration-1.3.0.tgz" - "version" "1.3.0" +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -"isstream@~0.1.2": - "integrity" "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" - "resolved" "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" - "version" "0.1.2" +is-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz" + integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -"js-tokens@^4.0.0": - "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - "version" "4.0.0" +is-path-inside@^3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== -"js-yaml@^3.13.1": - "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" - "version" "3.14.1" +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + +is-ssh@^1.3.0: + version "1.3.3" + resolved "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.3.tgz" + integrity sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ== dependencies: - "argparse" "^1.0.7" - "esprima" "^4.0.0" + protocols "^1.1.0" -"jsbn@~0.1.0": - "integrity" "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" - "resolved" "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" - "version" "0.1.1" +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== -"json-buffer@3.0.0": - "integrity" "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" - "version" "3.0.0" +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= -"json-buffer@3.0.1": - "integrity" "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" - "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" - "version" "3.0.1" +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== -"json-parse-even-better-errors@^2.3.0": - "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" - "version" "2.3.1" +is-unicode-supported@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.1.0.tgz" + integrity sha512-lDcxivp8TJpLG75/DpatAqNzOpDPSpED8XNtrpBHTdQ2InQ1PbW78jhwSxyxhhu+xbVSast2X38bwj8atwoUQA== -"json-schema-traverse@^0.4.1": - "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - "version" "0.4.1" - -"json-schema-traverse@^1.0.0": - "integrity" "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" - "version" "1.0.0" - -"json-schema@0.4.0": - "integrity" "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - "resolved" "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" - "version" "0.4.0" - -"json-stable-stringify-without-jsonify@^1.0.1": - "integrity" "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" - "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - "version" "1.0.1" - -"json-stringify-safe@~5.0.1": - "integrity" "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" - "resolved" "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - "version" "5.0.1" - -"jsprim@^1.2.2": - "integrity" "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==" - "resolved" "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" - "version" "1.4.2" +is-wsl@^2.1.1: + version "2.2.0" + resolved "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== dependencies: - "assert-plus" "1.0.0" - "extsprintf" "1.3.0" - "json-schema" "0.4.0" - "verror" "1.10.0" + is-docker "^2.0.0" -"keyv@^3.0.0": - "integrity" "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==" - "resolved" "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" - "version" "3.1.0" +is-yarn-global@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz" + integrity sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +iso8601-duration@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/iso8601-duration/-/iso8601-duration-1.3.0.tgz" + integrity sha512-K4CiUBzo3YeWk76FuET/dQPH03WE04R94feo5TSKQCXpoXQt9E4yx2CnY737QZnSAI3PI4WlKo/zfqizGx52QQ== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: - "json-buffer" "3.0.0" + argparse "^1.0.7" + esprima "^4.0.0" -"keyv@^4.0.0": - "integrity" "sha512-vqNHbAc8BBsxk+7QBYLW0Y219rWcClspR6WSeoHYKG5mnsSoOH+BL1pWq02DDCVdvvuUny5rkBlzMRzoqc+GIg==" - "resolved" "https://registry.npmjs.org/keyv/-/keyv-4.0.4.tgz" - "version" "4.0.4" +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== dependencies: - "json-buffer" "3.0.1" + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" -"latest-version@^5.1.0": - "integrity" "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==" - "resolved" "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" - "version" "5.1.0" +keyv@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz" + integrity sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA== dependencies: - "package-json" "^6.3.0" + json-buffer "3.0.0" -"levn@^0.4.1": - "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" - "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - "version" "0.4.1" +keyv@^4.0.0: + version "4.0.4" + resolved "https://registry.npmjs.org/keyv/-/keyv-4.0.4.tgz" + integrity sha512-vqNHbAc8BBsxk+7QBYLW0Y219rWcClspR6WSeoHYKG5mnsSoOH+BL1pWq02DDCVdvvuUny5rkBlzMRzoqc+GIg== dependencies: - "prelude-ls" "^1.2.1" - "type-check" "~0.4.0" + json-buffer "3.0.1" -"libsodium-wrappers@^0.7.9": - "integrity" "sha512-9HaAeBGk1nKTRFRHkt7nzxqCvnkWTjn1pdjKgcUnZxj0FyOP4CnhgFhMdrFfgNsukijBGyBLpP2m2uKT1vuWhQ==" - "resolved" "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.9.tgz" - "version" "0.7.9" +latest-version@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" + integrity sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA== dependencies: - "libsodium" "^0.7.0" + package-json "^6.3.0" -"libsodium@^0.7.0": - "integrity" "sha512-gfeADtR4D/CM0oRUviKBViMGXZDgnFdMKMzHsvBdqLBHd9ySi6EtYnmuhHVDDYgYpAO8eU8hEY+F8vIUAPh08A==" - "resolved" "https://registry.npmjs.org/libsodium/-/libsodium-0.7.9.tgz" - "version" "0.7.9" - -"lines-and-columns@^1.1.6": - "integrity" "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - "version" "1.2.4" - -"locate-path@^6.0.0": - "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - "version" "6.0.0" +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== dependencies: - "p-locate" "^5.0.0" + prelude-ls "^1.2.1" + type-check "~0.4.0" -"lodash.isequal@^4.5.0": - "integrity" "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" - "resolved" "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" - "version" "4.5.0" - -"lodash.merge@^4.6.2": - "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - "version" "4.6.2" - -"lodash.truncate@^4.4.2": - "integrity" "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=" - "resolved" "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" - "version" "4.4.2" - -"lodash@^4.17.20", "lodash@^4.17.21", "lodash@4.17.21": - "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - "version" "4.17.21" - -"log-symbols@^4.1.0": - "integrity" "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==" - "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" - "version" "4.1.0" +libsodium-wrappers@^0.7.9: + version "0.7.9" + resolved "https://registry.npmjs.org/libsodium-wrappers/-/libsodium-wrappers-0.7.9.tgz" + integrity sha512-9HaAeBGk1nKTRFRHkt7nzxqCvnkWTjn1pdjKgcUnZxj0FyOP4CnhgFhMdrFfgNsukijBGyBLpP2m2uKT1vuWhQ== dependencies: - "chalk" "^4.1.0" - "is-unicode-supported" "^0.1.0" + libsodium "^0.7.0" -"log-symbols@^5.0.0": - "integrity" "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==" - "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz" - "version" "5.1.0" +libsodium@^0.7.0: + version "0.7.9" + resolved "https://registry.npmjs.org/libsodium/-/libsodium-0.7.9.tgz" + integrity sha512-gfeADtR4D/CM0oRUviKBViMGXZDgnFdMKMzHsvBdqLBHd9ySi6EtYnmuhHVDDYgYpAO8eU8hEY+F8vIUAPh08A== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: - "chalk" "^5.0.0" - "is-unicode-supported" "^1.1.0" + p-locate "^5.0.0" -"lowercase-keys@^1.0.0", "lowercase-keys@^1.0.1": - "integrity" "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" - "version" "1.0.1" +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= -"lowercase-keys@^2.0.0": - "integrity" "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" - "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" - "version" "2.0.0" +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -"lowercase-keys@^3.0.0": - "integrity" "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==" - "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz" - "version" "3.0.0" +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= -"lru-cache@^6.0.0": - "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - "version" "6.0.0" +lodash@4.17.21, lodash@^4.17.20, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: - "yallist" "^4.0.0" + chalk "^4.1.0" + is-unicode-supported "^0.1.0" -"m3u8stream@^0.8.4": - "integrity" "sha512-sco80Db+30RvcaIOndenX6E6oQNgTiBKeJbFPc+yDXwPQIkryfboEbCvXPlBRq3mQTCVPQO93TDVlfRwqpD35w==" - "resolved" "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.4.tgz" - "version" "0.8.4" +log-symbols@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz" + integrity sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA== dependencies: - "miniget" "^4.0.0" - "sax" "^1.2.4" + chalk "^5.0.0" + is-unicode-supported "^1.1.0" -"macos-release@^2.5.0": - "integrity" "sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g==" - "resolved" "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz" - "version" "2.5.0" +lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== -"make-dir@^3.0.0", "make-dir@^3.1.0": - "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" - "version" "3.1.0" +lowercase-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz" + integrity sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA== + +lowercase-keys@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz" + integrity sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== dependencies: - "semver" "^6.0.0" + yallist "^4.0.0" -"make-error@^1.1.1": - "integrity" "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - "resolved" "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" - "version" "1.3.6" - -"merge-stream@^2.0.0": - "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - "version" "2.0.0" - -"merge2@^1.3.0": - "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - "version" "1.4.1" - -"methods@^1.1.2": - "integrity" "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - "resolved" "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" - "version" "1.1.2" - -"micromatch@^4.0.4": - "integrity" "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz" - "version" "4.0.4" +m3u8stream@^0.8.4: + version "0.8.4" + resolved "https://registry.npmjs.org/m3u8stream/-/m3u8stream-0.8.4.tgz" + integrity sha512-sco80Db+30RvcaIOndenX6E6oQNgTiBKeJbFPc+yDXwPQIkryfboEbCvXPlBRq3mQTCVPQO93TDVlfRwqpD35w== dependencies: - "braces" "^3.0.1" - "picomatch" "^2.2.3" + miniget "^4.0.0" + sax "^1.2.4" -"mime-db@1.51.0": - "integrity" "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" - "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz" - "version" "1.51.0" +macos-release@^2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/macos-release/-/macos-release-2.5.0.tgz" + integrity sha512-EIgv+QZ9r+814gjJj0Bt5vSLJLzswGmSUbUpbi9AIr/fsN2IWFBl2NucV9PAiek+U1STK468tEkxmVYUtuAN3g== -"mime-types@^2.1.12", "mime-types@~2.1.19", "mime-types@2.1.34": - "integrity" "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==" - "resolved" "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz" - "version" "2.1.34" +make-dir@^3.0.0, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: - "mime-db" "1.51.0" + semver "^6.0.0" -"mime@^2.4.6": - "integrity" "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==" - "resolved" "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" - "version" "2.6.0" +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== -"mimic-fn@^2.1.0": - "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - "version" "2.1.0" +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== -"mimic-response@^1.0.0", "mimic-response@^1.0.1": - "integrity" "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" - "version" "1.0.1" +merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -"mimic-response@^3.1.0": - "integrity" "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" - "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" - "version" "3.1.0" +methods@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz" + integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4= -"miniget@^4.0.0", "miniget@^4.2.1": - "integrity" "sha512-O/DduzDR6f+oDtVype9S/Qu5hhnx73EDYGyZKwU/qN82lehFZdfhoa4DT51SpsO+8epYrB3gcRmws56ROfTIoQ==" - "resolved" "https://registry.npmjs.org/miniget/-/miniget-4.2.1.tgz" - "version" "4.2.1" - -"minimatch@^3.0.4": - "integrity" "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" - "version" "3.0.4" +micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== dependencies: - "brace-expansion" "^1.1.7" + braces "^3.0.1" + picomatch "^2.2.3" -"minimist@^1.2.0", "minimist@^1.2.5": - "integrity" "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" - "version" "1.2.5" +mime-db@1.51.0: + version "1.51.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz" + integrity sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g== -"minipass@^2.6.0", "minipass@^2.9.0": - "integrity" "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==" - "resolved" "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz" - "version" "2.9.0" +mime-types@2.1.34, mime-types@^2.1.12, mime-types@~2.1.19: + version "2.1.34" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz" + integrity sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A== dependencies: - "safe-buffer" "^5.1.2" - "yallist" "^3.0.0" + mime-db "1.51.0" -"minipass@^3.0.0": - "integrity" "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==" - "resolved" "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz" - "version" "3.1.6" +mime@^2.4.6: + version "2.6.0" + resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0, mimic-response@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +miniget@^4.0.0, miniget@^4.2.1: + version "4.2.1" + resolved "https://registry.npmjs.org/miniget/-/miniget-4.2.1.tgz" + integrity sha512-O/DduzDR6f+oDtVype9S/Qu5hhnx73EDYGyZKwU/qN82lehFZdfhoa4DT51SpsO+8epYrB3gcRmws56ROfTIoQ== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: - "yallist" "^4.0.0" + brace-expansion "^1.1.7" -"minizlib@^1.3.3": - "integrity" "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==" - "resolved" "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz" - "version" "1.3.3" +minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass@^2.6.0, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== dependencies: - "minipass" "^2.9.0" + safe-buffer "^5.1.2" + yallist "^3.0.0" -"minizlib@^2.1.1": - "integrity" "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==" - "resolved" "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" - "version" "2.1.2" +minipass@^3.0.0: + version "3.1.6" + resolved "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz" + integrity sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ== dependencies: - "minipass" "^3.0.0" - "yallist" "^4.0.0" + yallist "^4.0.0" -"mkdirp@^0.5.0", "mkdirp@^0.5.1", "mkdirp@^0.5.5", "mkdirp@>=0.5 0": - "integrity" "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" - "version" "0.5.5" +minizlib@^1.3.3: + version "1.3.3" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== dependencies: - "minimist" "^1.2.5" + minipass "^2.9.0" -"mkdirp@^1.0.3": - "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" - "version" "1.0.4" - -"moment-timezone@^0.5.31": - "integrity" "sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg==" - "resolved" "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz" - "version" "0.5.34" +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: - "moment" ">= 2.9.0" + minipass "^3.0.0" + yallist "^4.0.0" -"moment@^2.26.0", "moment@>= 2.9.0": - "integrity" "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" - "resolved" "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz" - "version" "2.29.1" - -"ms@^2.1.1", "ms@2.1.2": - "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - "version" "2.1.2" - -"ms@2.0.0": - "integrity" "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - "version" "2.0.0" - -"mute-stream@0.0.8": - "integrity" "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" - "resolved" "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" - "version" "0.0.8" - -"natural-compare@^1.4.0": - "integrity" "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" - "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - "version" "1.4.0" - -"needle@^2.2.1": - "integrity" "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==" - "resolved" "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz" - "version" "2.9.1" +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.5: + version "0.5.5" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: - "debug" "^3.2.6" - "iconv-lite" "^0.4.4" - "sax" "^1.2.4" + minimist "^1.2.5" -"new-github-release-url@1.0.0": - "integrity" "sha512-dle7yf655IMjyFUqn6Nxkb18r4AOAkzRcgcZv6WZ0IqrOH4QCEZ8Sm6I7XX21zvHdBeeMeTkhR9qT2Z0EJDx6A==" - "resolved" "https://registry.npmjs.org/new-github-release-url/-/new-github-release-url-1.0.0.tgz" - "version" "1.0.0" +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +moment-timezone@^0.5.31: + version "0.5.34" + resolved "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.34.tgz" + integrity sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg== dependencies: - "type-fest" "^0.4.1" + moment ">= 2.9.0" -"node-addon-api@^3.0.0": - "integrity" "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" - "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz" - "version" "3.2.1" +"moment@>= 2.9.0", moment@^2.26.0: + version "2.29.1" + resolved "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz" + integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== -"node-addon-api@^3.2.1": - "integrity" "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==" - "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz" - "version" "3.2.1" +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -"node-addon-api@^4.2.0": - "integrity" "sha512-eazsqzwG2lskuzBqCGPi7Ac2UgOoMz8JVOXVhTvvPDYhthvNpefx8jWD8Np7Gv+2Sz0FlPWZk0nJV0z598Wn8Q==" - "resolved" "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.2.0.tgz" - "version" "4.2.0" +ms@2.1.2, ms@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -"node-emoji@^1.10.0": - "integrity" "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==" - "resolved" "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" - "version" "1.11.0" +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +needle@^2.2.1: + version "2.9.1" + resolved "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz" + integrity sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ== dependencies: - "lodash" "^4.17.21" + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" -"node-fetch@^2.6.1", "node-fetch@^2.6.5": - "integrity" "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==" - "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz" - "version" "2.6.6" +new-github-release-url@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/new-github-release-url/-/new-github-release-url-1.0.0.tgz" + integrity sha512-dle7yf655IMjyFUqn6Nxkb18r4AOAkzRcgcZv6WZ0IqrOH4QCEZ8Sm6I7XX21zvHdBeeMeTkhR9qT2Z0EJDx6A== dependencies: - "whatwg-url" "^5.0.0" + type-fest "^0.4.1" -"node-gyp@3.x": - "integrity" "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==" - "resolved" "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz" - "version" "3.8.0" - dependencies: - "fstream" "^1.0.0" - "glob" "^7.0.3" - "graceful-fs" "^4.1.2" - "mkdirp" "^0.5.0" - "nopt" "2 || 3" - "npmlog" "0 || 1 || 2 || 3 || 4" - "osenv" "0" - "request" "^2.87.0" - "rimraf" "2" - "semver" "~5.3.0" - "tar" "^2.0.0" - "which" "1" +node-addon-api@^3.0.0: + version "3.2.1" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== -"node-pre-gyp@^0.11.0": - "integrity" "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==" - "resolved" "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz" - "version" "0.11.0" - dependencies: - "detect-libc" "^1.0.2" - "mkdirp" "^0.5.1" - "needle" "^2.2.1" - "nopt" "^4.0.1" - "npm-packlist" "^1.1.6" - "npmlog" "^4.0.2" - "rc" "^1.2.7" - "rimraf" "^2.6.1" - "semver" "^5.3.0" - "tar" "^4" +node-addon-api@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.2.0.tgz" + integrity sha512-eazsqzwG2lskuzBqCGPi7Ac2UgOoMz8JVOXVhTvvPDYhthvNpefx8jWD8Np7Gv+2Sz0FlPWZk0nJV0z598Wn8Q== -"nodemon@^2.0.7": - "integrity" "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==" - "resolved" "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz" - "version" "2.0.15" +node-emoji@^1.10.0: + version "1.11.0" + resolved "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz" + integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== dependencies: - "chokidar" "^3.5.2" - "debug" "^3.2.7" - "ignore-by-default" "^1.0.1" - "minimatch" "^3.0.4" - "pstree.remy" "^1.1.8" - "semver" "^5.7.1" - "supports-color" "^5.5.0" - "touch" "^3.1.0" - "undefsafe" "^2.0.5" - "update-notifier" "^5.1.0" + lodash "^4.17.21" -"nodesplash@^0.1.1": - "integrity" "sha512-V5yqmtR9ovc0PAUVIisaV0H1WL7tgZOVuiniJaDNP/DZHYybwaPw5wm6Jkx/0M0j13JcDW1NsAxxuv2DtngCPQ==" - "resolved" "https://registry.npmjs.org/nodesplash/-/nodesplash-0.1.1.tgz" - "version" "0.1.1" +node-fetch@^2.6.1, node-fetch@^2.6.5: + version "2.6.6" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz" + integrity sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA== dependencies: - "grapheme-splitter" "^1.0.4" + whatwg-url "^5.0.0" -"nopt@^4.0.1": - "integrity" "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==" - "resolved" "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz" - "version" "4.0.3" +node-gyp@3.x: + version "3.8.0" + resolved "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz" + integrity sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA== dependencies: - "abbrev" "1" - "osenv" "^0.1.4" + fstream "^1.0.0" + glob "^7.0.3" + graceful-fs "^4.1.2" + mkdirp "^0.5.0" + nopt "2 || 3" + npmlog "0 || 1 || 2 || 3 || 4" + osenv "0" + request "^2.87.0" + rimraf "2" + semver "~5.3.0" + tar "^2.0.0" + which "1" -"nopt@^5.0.0": - "integrity" "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==" - "resolved" "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz" - "version" "5.0.0" +node-pre-gyp@^0.11.0: + version "0.11.0" + resolved "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz" + integrity sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q== dependencies: - "abbrev" "1" + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" -"nopt@~1.0.10": - "integrity" "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=" - "resolved" "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz" - "version" "1.0.10" +nodemon@^2.0.7: + version "2.0.15" + resolved "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz" + integrity sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA== dependencies: - "abbrev" "1" + chokidar "^3.5.2" + debug "^3.2.7" + ignore-by-default "^1.0.1" + minimatch "^3.0.4" + pstree.remy "^1.1.8" + semver "^5.7.1" + supports-color "^5.5.0" + touch "^3.1.0" + undefsafe "^2.0.5" + update-notifier "^5.1.0" + +nodesplash@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/nodesplash/-/nodesplash-0.1.1.tgz" + integrity sha512-V5yqmtR9ovc0PAUVIisaV0H1WL7tgZOVuiniJaDNP/DZHYybwaPw5wm6Jkx/0M0j13JcDW1NsAxxuv2DtngCPQ== + dependencies: + grapheme-splitter "^1.0.4" "nopt@2 || 3": - "integrity" "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=" - "resolved" "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" - "version" "3.0.6" + version "3.0.6" + resolved "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" + integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= dependencies: - "abbrev" "1" + abbrev "1" -"normalize-path@^3.0.0", "normalize-path@~3.0.0": - "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - "version" "3.0.0" - -"normalize-url@^4.1.0": - "integrity" "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" - "version" "4.5.1" - -"normalize-url@^6.0.1", "normalize-url@^6.1.0": - "integrity" "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" - "version" "6.1.0" - -"npm-bundled@^1.0.1": - "integrity" "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==" - "resolved" "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz" - "version" "1.1.2" +nopt@^4.0.1: + version "4.0.3" + resolved "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== dependencies: - "npm-normalize-package-bin" "^1.0.1" + abbrev "1" + osenv "^0.1.4" -"npm-normalize-package-bin@^1.0.1": - "integrity" "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" - "resolved" "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz" - "version" "1.0.1" - -"npm-packlist@^1.1.6": - "integrity" "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==" - "resolved" "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz" - "version" "1.4.8" +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== dependencies: - "ignore-walk" "^3.0.1" - "npm-bundled" "^1.0.1" - "npm-normalize-package-bin" "^1.0.1" + abbrev "1" -"npm-run-path@^4.0.0", "npm-run-path@^4.0.1": - "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - "version" "4.0.1" +nopt@~1.0.10: + version "1.0.10" + resolved "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz" + integrity sha1-bd0hvSoxQXuScn3Vhfim83YI6+4= dependencies: - "path-key" "^3.0.0" + abbrev "1" -"npmlog@^4.0.2": - "integrity" "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==" - "resolved" "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz" - "version" "4.1.2" +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-url@^4.1.0: + version "4.5.1" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz" + integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== + +normalize-url@^6.0.1, normalize-url@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +npm-bundled@^1.0.1: + version "1.1.2" + resolved "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== dependencies: - "are-we-there-yet" "~1.1.2" - "console-control-strings" "~1.1.0" - "gauge" "~2.7.3" - "set-blocking" "~2.0.0" + npm-normalize-package-bin "^1.0.1" -"npmlog@^5.0.1": - "integrity" "sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==" - "resolved" "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz" - "version" "5.0.1" +npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +npm-packlist@^1.1.6: + version "1.4.8" + resolved "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== dependencies: - "are-we-there-yet" "^2.0.0" - "console-control-strings" "^1.1.0" - "gauge" "^3.0.0" - "set-blocking" "^2.0.0" + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-normalize-package-bin "^1.0.1" -"npmlog@0 || 1 || 2 || 3 || 4": - "integrity" "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==" - "resolved" "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz" - "version" "4.1.2" +npm-run-path@^4.0.0, npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== dependencies: - "are-we-there-yet" "~1.1.2" - "console-control-strings" "~1.1.0" - "gauge" "~2.7.3" - "set-blocking" "~2.0.0" + path-key "^3.0.0" -"number-is-nan@^1.0.0": - "integrity" "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - "resolved" "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" - "version" "1.0.1" - -"oauth-sign@~0.9.0": - "integrity" "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" - "resolved" "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" - "version" "0.9.0" - -"object-assign@^4.1.0", "object-assign@^4.1.1": - "integrity" "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - "version" "4.1.1" - -"object-inspect@^1.9.0": - "integrity" "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" - "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz" - "version" "1.12.0" - -"once@^1.3.0", "once@^1.3.1", "once@^1.4.0": - "integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" - "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - "version" "1.4.0" +"npmlog@0 || 1 || 2 || 3 || 4", npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== dependencies: - "wrappy" "1" + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" -"onetime@^5.1.0", "onetime@^5.1.2": - "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" - "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" - "version" "5.1.2" +npmlog@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/npmlog/-/npmlog-5.0.1.tgz" + integrity sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw== dependencies: - "mimic-fn" "^2.1.0" + are-we-there-yet "^2.0.0" + console-control-strings "^1.1.0" + gauge "^3.0.0" + set-blocking "^2.0.0" -"open@7.4.2": - "integrity" "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==" - "resolved" "https://registry.npmjs.org/open/-/open-7.4.2.tgz" - "version" "7.4.2" +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-inspect@^1.9.0: + version "1.12.0" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz" + integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: - "is-docker" "^2.0.0" - "is-wsl" "^2.1.1" + wrappy "1" -"opencollective-postinstall@^2.0.2": - "integrity" "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==" - "resolved" "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz" - "version" "2.0.3" - -"optionator@^0.9.1": - "integrity" "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==" - "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" - "version" "0.9.1" +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 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" + mimic-fn "^2.1.0" -"ora@^5.4.1": - "integrity" "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==" - "resolved" "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" - "version" "5.4.1" +open@7.4.2: + version "7.4.2" + resolved "https://registry.npmjs.org/open/-/open-7.4.2.tgz" + integrity sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q== dependencies: - "bl" "^4.1.0" - "chalk" "^4.1.0" - "cli-cursor" "^3.1.0" - "cli-spinners" "^2.5.0" - "is-interactive" "^1.0.0" - "is-unicode-supported" "^0.1.0" - "log-symbols" "^4.1.0" - "strip-ansi" "^6.0.0" - "wcwidth" "^1.0.1" + is-docker "^2.0.0" + is-wsl "^2.1.1" -"ora@^6.0.1": - "integrity" "sha512-TDdKkKHdWE6jo/6pIa5U5AWcSVfpNRFJ8sdRJpioGNVPLAzZzHs/N+QhUfF7ZbyoC+rnDuNTKzeDJUbAza9g4g==" - "resolved" "https://registry.npmjs.org/ora/-/ora-6.0.1.tgz" - "version" "6.0.1" +opencollective-postinstall@^2.0.2: + version "2.0.3" + resolved "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz" + integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== dependencies: - "bl" "^5.0.0" - "chalk" "^4.1.2" - "cli-cursor" "^4.0.0" - "cli-spinners" "^2.6.0" - "is-interactive" "^2.0.0" - "is-unicode-supported" "^1.1.0" - "log-symbols" "^5.0.0" - "strip-ansi" "^7.0.1" - "wcwidth" "^1.0.1" + 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" -"ora@5.4.1": - "integrity" "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==" - "resolved" "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" - "version" "5.4.1" +ora@5.4.1, ora@^5.4.1: + version "5.4.1" + resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== dependencies: - "bl" "^4.1.0" - "chalk" "^4.1.0" - "cli-cursor" "^3.1.0" - "cli-spinners" "^2.5.0" - "is-interactive" "^1.0.0" - "is-unicode-supported" "^0.1.0" - "log-symbols" "^4.1.0" - "strip-ansi" "^6.0.0" - "wcwidth" "^1.0.1" + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" -"os-homedir@^1.0.0": - "integrity" "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" - "resolved" "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" - "version" "1.0.2" - -"os-name@4.0.1": - "integrity" "sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw==" - "resolved" "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz" - "version" "4.0.1" +ora@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/ora/-/ora-6.0.1.tgz" + integrity sha512-TDdKkKHdWE6jo/6pIa5U5AWcSVfpNRFJ8sdRJpioGNVPLAzZzHs/N+QhUfF7ZbyoC+rnDuNTKzeDJUbAza9g4g== dependencies: - "macos-release" "^2.5.0" - "windows-release" "^4.0.0" + bl "^5.0.0" + chalk "^4.1.2" + cli-cursor "^4.0.0" + cli-spinners "^2.6.0" + is-interactive "^2.0.0" + is-unicode-supported "^1.1.0" + log-symbols "^5.0.0" + strip-ansi "^7.0.1" + wcwidth "^1.0.1" -"os-tmpdir@^1.0.0", "os-tmpdir@~1.0.2": - "integrity" "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" - "resolved" "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" - "version" "1.0.2" +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= -"osenv@^0.1.4", "osenv@0": - "integrity" "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==" - "resolved" "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz" - "version" "0.1.5" +os-name@4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/os-name/-/os-name-4.0.1.tgz" + integrity sha512-xl9MAoU97MH1Xt5K9ERft2YfCAoaO6msy1OBA0ozxEC0x0TmIoE6K3QvgJMMZA9yKGLmHXNY/YZoDbiGDj4zYw== dependencies: - "os-homedir" "^1.0.0" - "os-tmpdir" "^1.0.0" + macos-release "^2.5.0" + windows-release "^4.0.0" -"ow@^0.27.0": - "integrity" "sha512-SGnrGUbhn4VaUGdU0EJLMwZWSupPmF46hnTRII7aCLCrqixTAC5eKo8kI4/XXf1eaaI8YEVT+3FeGNJI9himAQ==" - "resolved" "https://registry.npmjs.org/ow/-/ow-0.27.0.tgz" - "version" "0.27.0" +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@0, osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +ow@^0.27.0: + version "0.27.0" + resolved "https://registry.npmjs.org/ow/-/ow-0.27.0.tgz" + integrity sha512-SGnrGUbhn4VaUGdU0EJLMwZWSupPmF46hnTRII7aCLCrqixTAC5eKo8kI4/XXf1eaaI8YEVT+3FeGNJI9himAQ== dependencies: "@sindresorhus/is" "^4.0.1" - "callsites" "^3.1.0" - "dot-prop" "^6.0.1" - "lodash.isequal" "^4.5.0" - "type-fest" "^1.2.1" - "vali-date" "^1.0.0" + callsites "^3.1.0" + dot-prop "^6.0.1" + lodash.isequal "^4.5.0" + type-fest "^1.2.1" + vali-date "^1.0.0" -"p-cancelable@^1.0.0": - "integrity" "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" - "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" - "version" "1.1.0" +p-cancelable@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz" + integrity sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw== -"p-cancelable@^2.0.0": - "integrity" "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==" - "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz" - "version" "2.1.1" +p-cancelable@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz" + integrity sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg== -"p-cancelable@^3.0.0": - "integrity" "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==" - "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz" - "version" "3.0.0" +p-cancelable@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz" + integrity sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw== -"p-event@^4.2.0": - "integrity" "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==" - "resolved" "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz" - "version" "4.2.0" +p-event@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz" + integrity sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ== dependencies: - "p-timeout" "^3.1.0" + p-timeout "^3.1.0" -"p-finally@^1.0.0": - "integrity" "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - "resolved" "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" - "version" "1.0.0" +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -"p-limit@^3.0.2": - "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - "version" "3.1.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: - "yocto-queue" "^0.1.0" + yocto-queue "^0.1.0" -"p-limit@^4.0.0": - "integrity" "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz" - "version" "4.0.0" +p-limit@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz" + integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== dependencies: - "yocto-queue" "^1.0.0" + yocto-queue "^1.0.0" -"p-locate@^5.0.0": - "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - "version" "5.0.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: - "p-limit" "^3.0.2" + p-limit "^3.0.2" -"p-queue@^7.1.0": - "integrity" "sha512-V+0vPJbhYkBqknPp0qnaz+dWcj8cNepfXZcsVIVEHPbFQXMPwrzCNIiM4FoxGtwHXtPzVCPHDvqCr1YrOJX2Gw==" - "resolved" "https://registry.npmjs.org/p-queue/-/p-queue-7.1.0.tgz" - "version" "7.1.0" +p-queue@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/p-queue/-/p-queue-7.1.0.tgz" + integrity sha512-V+0vPJbhYkBqknPp0qnaz+dWcj8cNepfXZcsVIVEHPbFQXMPwrzCNIiM4FoxGtwHXtPzVCPHDvqCr1YrOJX2Gw== dependencies: - "eventemitter3" "^4.0.7" - "p-timeout" "^5.0.0" + eventemitter3 "^4.0.7" + p-timeout "^5.0.0" -"p-timeout@^3.1.0": - "integrity" "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==" - "resolved" "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" - "version" "3.2.0" +p-timeout@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz" + integrity sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg== dependencies: - "p-finally" "^1.0.0" + p-finally "^1.0.0" -"p-timeout@^5.0.0": - "integrity" "sha512-sEmji9Yaq+Tw+STwsGAE56hf7gMy9p0tQfJojIAamB7WHJYJKf1qlsg9jqBWG8q9VCxKPhZaP/AcXwEoBcYQhQ==" - "resolved" "https://registry.npmjs.org/p-timeout/-/p-timeout-5.0.2.tgz" - "version" "5.0.2" +p-timeout@^5.0.0: + version "5.0.2" + resolved "https://registry.npmjs.org/p-timeout/-/p-timeout-5.0.2.tgz" + integrity sha512-sEmji9Yaq+Tw+STwsGAE56hf7gMy9p0tQfJojIAamB7WHJYJKf1qlsg9jqBWG8q9VCxKPhZaP/AcXwEoBcYQhQ== -"package-json@^6.3.0": - "integrity" "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==" - "resolved" "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" - "version" "6.5.0" +package-json@^6.3.0: + version "6.5.0" + resolved "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz" + integrity sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ== dependencies: - "got" "^9.6.0" - "registry-auth-token" "^4.0.0" - "registry-url" "^5.0.0" - "semver" "^6.2.0" + got "^9.6.0" + registry-auth-token "^4.0.0" + registry-url "^5.0.0" + semver "^6.2.0" -"parent-module@^1.0.0": - "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" - "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - "version" "1.0.1" +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== dependencies: - "callsites" "^3.0.0" + callsites "^3.0.0" -"parse-json@^5.0.0", "parse-json@5.2.0": - "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" - "version" "5.2.0" +parse-json@5.2.0, parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" - "error-ex" "^1.3.1" - "json-parse-even-better-errors" "^2.3.0" - "lines-and-columns" "^1.1.6" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" -"parse-path@^4.0.0": - "integrity" "sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA==" - "resolved" "https://registry.npmjs.org/parse-path/-/parse-path-4.0.3.tgz" - "version" "4.0.3" +parse-path@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/parse-path/-/parse-path-4.0.3.tgz" + integrity sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA== dependencies: - "is-ssh" "^1.3.0" - "protocols" "^1.4.0" - "qs" "^6.9.4" - "query-string" "^6.13.8" + is-ssh "^1.3.0" + protocols "^1.4.0" + qs "^6.9.4" + query-string "^6.13.8" -"parse-url@^6.0.0": - "integrity" "sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw==" - "resolved" "https://registry.npmjs.org/parse-url/-/parse-url-6.0.0.tgz" - "version" "6.0.0" +parse-url@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/parse-url/-/parse-url-6.0.0.tgz" + integrity sha512-cYyojeX7yIIwuJzledIHeLUBVJ6COVLeT4eF+2P6aKVzwvgKQPndCBv3+yQ7pcWjqToYwaligxzSYNNmGoMAvw== dependencies: - "is-ssh" "^1.3.0" - "normalize-url" "^6.1.0" - "parse-path" "^4.0.0" - "protocols" "^1.4.0" + is-ssh "^1.3.0" + normalize-url "^6.1.0" + parse-path "^4.0.0" + protocols "^1.4.0" -"path-exists@^4.0.0": - "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - "version" "4.0.0" +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== -"path-is-absolute@^1.0.0": - "integrity" "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - "version" "1.0.1" +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -"path-key@^3.0.0", "path-key@^3.1.0": - "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - "version" "3.1.1" +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== -"path-parse@^1.0.6": - "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - "version" "1.0.7" +path-parse@^1.0.6: + version "1.0.7" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -"path-type@^4.0.0": - "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - "version" "4.0.0" +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== -"performance-now@^2.1.0": - "integrity" "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" - "resolved" "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" - "version" "2.1.0" +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -"pg-connection-string@^2.5.0": - "integrity" "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" - "resolved" "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz" - "version" "2.5.0" +pg-connection-string@^2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz" + integrity sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ== -"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.2.3": - "integrity" "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" - "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" - "version" "2.3.0" +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: + version "2.3.0" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== -"pkg-dir@^5.0.0": - "integrity" "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz" - "version" "5.0.0" +pkg-dir@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz" + integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== dependencies: - "find-up" "^5.0.0" + find-up "^5.0.0" -"please-upgrade-node@^3.2.0": - "integrity" "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==" - "resolved" "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz" - "version" "3.2.0" +please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== dependencies: - "semver-compare" "^1.0.0" + semver-compare "^1.0.0" -"prelude-ls@^1.2.1": - "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" - "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" - "version" "1.2.1" +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -"prepend-http@^2.0.0": - "integrity" "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" - "version" "2.0.0" +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= -"prism-media@^1.3.2": - "integrity" "sha512-L6UsGHcT6i4wrQhFF1aPK+MNYgjRqR2tUoIqEY+CG1NqVkMjPRKzS37j9f8GiYPlD6wG9ruBj+q5Ax+bH8Ik1g==" - "resolved" "https://registry.npmjs.org/prism-media/-/prism-media-1.3.2.tgz" - "version" "1.3.2" +prism-media@^1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/prism-media/-/prism-media-1.3.2.tgz" + integrity sha512-L6UsGHcT6i4wrQhFF1aPK+MNYgjRqR2tUoIqEY+CG1NqVkMjPRKzS37j9f8GiYPlD6wG9ruBj+q5Ax+bH8Ik1g== -"process-nextick-args@~2.0.0": - "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" - "version" "2.0.1" +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -"progress@^2.0.0": - "integrity" "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" - "resolved" "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" - "version" "2.0.3" +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== -"protocols@^1.1.0", "protocols@^1.4.0": - "integrity" "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==" - "resolved" "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz" - "version" "1.4.8" +protocols@^1.1.0, protocols@^1.4.0: + version "1.4.8" + resolved "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz" + integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg== -"psl@^1.1.28": - "integrity" "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" - "resolved" "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz" - "version" "1.8.0" +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== -"pstree.remy@^1.1.8": - "integrity" "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" - "resolved" "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz" - "version" "1.1.8" +pstree.remy@^1.1.8: + version "1.1.8" + resolved "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz" + integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w== -"pump@^3.0.0": - "integrity" "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==" - "resolved" "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" - "version" "3.0.0" +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== dependencies: - "end-of-stream" "^1.1.0" - "once" "^1.3.1" + end-of-stream "^1.1.0" + once "^1.3.1" -"punycode@^2.1.0", "punycode@^2.1.1": - "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" - "version" "2.1.1" +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== -"pupa@^2.1.1": - "integrity" "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==" - "resolved" "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz" - "version" "2.1.1" +pupa@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz" + integrity sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A== dependencies: - "escape-goat" "^2.0.0" + escape-goat "^2.0.0" -"qs@^6.9.4": - "integrity" "sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.10.2.tgz" - "version" "6.10.2" +qs@^6.9.4: + version "6.10.2" + resolved "https://registry.npmjs.org/qs/-/qs-6.10.2.tgz" + integrity sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw== dependencies: - "side-channel" "^1.0.4" + side-channel "^1.0.4" -"qs@~6.5.2": - "integrity" "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" - "resolved" "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" - "version" "6.5.2" +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -"query-string@^6.13.8": - "integrity" "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==" - "resolved" "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz" - "version" "6.14.1" +query-string@^6.13.8: + version "6.14.1" + resolved "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz" + integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== dependencies: - "decode-uri-component" "^0.2.0" - "filter-obj" "^1.1.0" - "split-on-first" "^1.0.0" - "strict-uri-encode" "^2.0.0" + decode-uri-component "^0.2.0" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" -"queue-microtask@^1.2.2": - "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" - "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - "version" "1.2.3" +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== -"quick-lru@^5.1.1": - "integrity" "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" - "resolved" "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" - "version" "5.1.1" +quick-lru@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz" + integrity sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA== -"rc@^1.2.7", "rc@^1.2.8": - "integrity" "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==" - "resolved" "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" - "version" "1.2.8" +rc@^1.2.7, rc@^1.2.8: + version "1.2.8" + resolved "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== dependencies: - "deep-extend" "^0.6.0" - "ini" "~1.3.0" - "minimist" "^1.2.0" - "strip-json-comments" "~2.0.1" + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" -"readable-stream@^2.0.6": - "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - "version" "2.3.7" +readable-stream@^2.0.6: + version "2.3.7" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + 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" + 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" -"readable-stream@^3.4.0", "readable-stream@^3.6.0": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" +readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" -"readdirp@~3.6.0": - "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" - "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - "version" "3.6.0" +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: - "picomatch" "^2.2.1" + picomatch "^2.2.1" -"rechoir@^0.6.2": - "integrity" "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=" - "resolved" "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" - "version" "0.6.2" +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= dependencies: - "resolve" "^1.1.6" + resolve "^1.1.6" -"reflect-metadata@*", "reflect-metadata@^0.1.13": - "integrity" "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - "resolved" "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz" - "version" "0.1.13" +reflect-metadata@^0.1.13: + version "0.1.13" + resolved "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz" + integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== -"regexpp@^3.1.0": - "integrity" "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" - "resolved" "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" - "version" "3.2.0" +regexpp@^3.1.0: + version "3.2.0" + resolved "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== -"registry-auth-token@^4.0.0": - "integrity" "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==" - "resolved" "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz" - "version" "4.2.1" +registry-auth-token@^4.0.0: + version "4.2.1" + resolved "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz" + integrity sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw== dependencies: - "rc" "^1.2.8" + rc "^1.2.8" -"registry-url@^5.0.0": - "integrity" "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==" - "resolved" "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" - "version" "5.1.0" +registry-url@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz" + integrity sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw== dependencies: - "rc" "^1.2.8" + rc "^1.2.8" -"release-it@^14.11.8", "release-it@^14.8.0": - "integrity" "sha512-951DJ0kwjwU7CwGU3BCvRBgLxuJsOPRrZkqx0AsugJdSyPpUdwY9nlU0RAoSKqgh+VTerzecXLIIwgsGIpNxlA==" - "resolved" "https://registry.npmjs.org/release-it/-/release-it-14.11.8.tgz" - "version" "14.11.8" +release-it@^14.11.8: + version "14.11.8" + resolved "https://registry.npmjs.org/release-it/-/release-it-14.11.8.tgz" + integrity sha512-951DJ0kwjwU7CwGU3BCvRBgLxuJsOPRrZkqx0AsugJdSyPpUdwY9nlU0RAoSKqgh+VTerzecXLIIwgsGIpNxlA== dependencies: "@iarna/toml" "2.2.5" "@octokit/rest" "18.12.0" - "async-retry" "1.3.3" - "chalk" "4.1.2" - "cosmiconfig" "7.0.1" - "debug" "4.3.2" - "deprecated-obj" "2.0.0" - "execa" "5.1.1" - "form-data" "4.0.0" - "git-url-parse" "11.6.0" - "globby" "11.0.4" - "got" "11.8.3" - "import-cwd" "3.0.0" - "inquirer" "8.2.0" - "is-ci" "3.0.1" - "lodash" "4.17.21" - "mime-types" "2.1.34" - "new-github-release-url" "1.0.0" - "open" "7.4.2" - "ora" "5.4.1" - "os-name" "4.0.1" - "parse-json" "5.2.0" - "semver" "7.3.5" - "shelljs" "0.8.4" - "update-notifier" "5.1.0" - "url-join" "4.0.1" - "uuid" "8.3.2" - "yaml" "1.10.2" - "yargs-parser" "20.2.9" + async-retry "1.3.3" + chalk "4.1.2" + cosmiconfig "7.0.1" + debug "4.3.2" + deprecated-obj "2.0.0" + execa "5.1.1" + form-data "4.0.0" + git-url-parse "11.6.0" + globby "11.0.4" + got "11.8.3" + import-cwd "3.0.0" + inquirer "8.2.0" + is-ci "3.0.1" + lodash "4.17.21" + mime-types "2.1.34" + new-github-release-url "1.0.0" + open "7.4.2" + ora "5.4.1" + os-name "4.0.1" + parse-json "5.2.0" + semver "7.3.5" + shelljs "0.8.4" + update-notifier "5.1.0" + url-join "4.0.1" + uuid "8.3.2" + yaml "1.10.2" + yargs-parser "20.2.9" -"request@^2.87.0": - "integrity" "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==" - "resolved" "https://registry.npmjs.org/request/-/request-2.88.2.tgz" - "version" "2.88.2" +request@^2.87.0: + version "2.88.2" + resolved "https://registry.npmjs.org/request/-/request-2.88.2.tgz" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: - "aws-sign2" "~0.7.0" - "aws4" "^1.8.0" - "caseless" "~0.12.0" - "combined-stream" "~1.0.6" - "extend" "~3.0.2" - "forever-agent" "~0.6.1" - "form-data" "~2.3.2" - "har-validator" "~5.1.3" - "http-signature" "~1.2.0" - "is-typedarray" "~1.0.0" - "isstream" "~0.1.2" - "json-stringify-safe" "~5.0.1" - "mime-types" "~2.1.19" - "oauth-sign" "~0.9.0" - "performance-now" "^2.1.0" - "qs" "~6.5.2" - "safe-buffer" "^5.1.2" - "tough-cookie" "~2.5.0" - "tunnel-agent" "^0.6.0" - "uuid" "^3.3.2" + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" -"require-directory@^2.1.1": - "integrity" "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" - "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" - "version" "2.1.1" +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= -"require-from-string@^2.0.2": - "integrity" "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" - "resolved" "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" - "version" "2.0.2" +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== -"resolve-alpn@^1.0.0", "resolve-alpn@^1.2.0": - "integrity" "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" - "resolved" "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz" - "version" "1.2.1" +resolve-alpn@^1.0.0, resolve-alpn@^1.2.0: + version "1.2.1" + resolved "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz" + integrity sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g== -"resolve-from@^4.0.0": - "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - "version" "4.0.0" +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -"resolve-from@^5.0.0": - "integrity" "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" - "version" "5.0.0" +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== -"resolve@^1.1.6": - "integrity" "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz" - "version" "1.20.0" +resolve@^1.1.6: + version "1.20.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== dependencies: - "is-core-module" "^2.2.0" - "path-parse" "^1.0.6" + is-core-module "^2.2.0" + path-parse "^1.0.6" -"responselike@^1.0.2": - "integrity" "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=" - "resolved" "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" - "version" "1.0.2" +responselike@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= dependencies: - "lowercase-keys" "^1.0.0" + lowercase-keys "^1.0.0" -"responselike@^2.0.0": - "integrity" "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==" - "resolved" "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz" - "version" "2.0.0" +responselike@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz" + integrity sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw== dependencies: - "lowercase-keys" "^2.0.0" + lowercase-keys "^2.0.0" -"restore-cursor@^3.1.0": - "integrity" "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==" - "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" - "version" "3.1.0" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== dependencies: - "onetime" "^5.1.0" - "signal-exit" "^3.0.2" + onetime "^5.1.0" + signal-exit "^3.0.2" -"restore-cursor@^4.0.0": - "integrity" "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==" - "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz" - "version" "4.0.0" +restore-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz" + integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== dependencies: - "onetime" "^5.1.0" - "signal-exit" "^3.0.2" + onetime "^5.1.0" + signal-exit "^3.0.2" -"retry-as-promised@^3.2.0": - "integrity" "sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg==" - "resolved" "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.2.0.tgz" - "version" "3.2.0" +retry-as-promised@^3.2.0: + version "3.2.0" + resolved "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-3.2.0.tgz" + integrity sha512-CybGs60B7oYU/qSQ6kuaFmRd9sTZ6oXSc0toqePvV74Ac6/IFZSI1ReFQmtCN+uvW1Mtqdwpvt/LGOiCBAY2Mg== dependencies: - "any-promise" "^1.3.0" + any-promise "^1.3.0" -"retry@0.13.1": - "integrity" "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" - "resolved" "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" - "version" "0.13.1" +retry@0.13.1: + version "0.13.1" + resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== -"reusify@^1.0.4": - "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" - "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" - "version" "1.0.4" +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -"rimraf@^2.6.1": - "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - "version" "2.7.1" +rimraf@2, rimraf@^2.6.1: + version "2.7.1" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: - "glob" "^7.1.3" + glob "^7.1.3" -"rimraf@^3.0.2": - "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" - "version" "3.0.2" +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: - "glob" "^7.1.3" + glob "^7.1.3" -"rimraf@2": - "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - "version" "2.7.1" +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== dependencies: - "glob" "^7.1.3" + queue-microtask "^1.2.2" -"run-async@^2.4.0": - "integrity" "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==" - "resolved" "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" - "version" "2.4.1" - -"run-parallel@^1.1.9": - "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" - "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - "version" "1.2.0" +rxjs@^6.6.3: + version "6.6.7" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: - "queue-microtask" "^1.2.2" + tslib "^1.9.0" -"rxjs@^6.6.3": - "integrity" "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==" - "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" - "version" "6.6.7" +rxjs@^7.2.0: + version "7.4.0" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz" + integrity sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w== dependencies: - "tslib" "^1.9.0" + tslib "~2.1.0" -"rxjs@^7.2.0": - "integrity" "sha512-7SQDi7xeTMCJpqViXh8gL/lebcwlp3d831F05+9B44A4B0WfsEwUQHR64gsH1kvJ+Ep/J9K2+n1hVl1CsGN23w==" - "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-7.4.0.tgz" - "version" "7.4.0" +safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@^1.1.3, sax@^1.2.4: + version "1.2.4" + resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" + integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + +semver-diff@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz" + integrity sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg== dependencies: - "tslib" "~2.1.0" + semver "^6.3.0" -"safe-buffer@^5.0.1", "safe-buffer@^5.1.2", "safe-buffer@^5.2.1", "safe-buffer@~5.2.0": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" +semver-regex@^3.1.2: + version "3.1.3" + resolved "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.3.tgz" + integrity sha512-Aqi54Mk9uYTjVexLnR67rTyBusmwd04cLkHy9hNvk3+G3nT2Oyg7E0l4XVbOaNwIvQ3hHeYxGcyEy+mKreyBFQ== -"safe-buffer@~5.1.0", "safe-buffer@~5.1.1": - "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - "version" "5.1.2" - -"safer-buffer@^2.0.2", "safer-buffer@^2.1.0", "safer-buffer@>= 2.1.2 < 3", "safer-buffer@~2.1.0": - "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - "version" "2.1.2" - -"sax@^1.1.3", "sax@^1.2.4": - "integrity" "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" - "resolved" "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz" - "version" "1.2.4" - -"semver-compare@^1.0.0": - "integrity" "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=" - "resolved" "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz" - "version" "1.0.0" - -"semver-diff@^3.1.1": - "integrity" "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==" - "resolved" "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz" - "version" "3.1.1" +semver@7.3.5, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: + version "7.3.5" + resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== dependencies: - "semver" "^6.3.0" + lru-cache "^6.0.0" -"semver-regex@^3.1.2": - "integrity" "sha512-Aqi54Mk9uYTjVexLnR67rTyBusmwd04cLkHy9hNvk3+G3nT2Oyg7E0l4XVbOaNwIvQ3hHeYxGcyEy+mKreyBFQ==" - "resolved" "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.3.tgz" - "version" "3.1.3" +semver@^5.3.0, semver@^5.7.1: + version "5.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -"semver@^5.3.0": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" +semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -"semver@^5.7.1": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" +semver@~5.3.0: + version "5.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" + integrity sha1-myzl094C0XxgEq0yaqa00M9U+U8= -"semver@^6.0.0": - "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - "version" "6.3.0" +sequelize-pool@^6.0.0: + version "6.1.0" + resolved "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-6.1.0.tgz" + integrity sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg== -"semver@^6.2.0": - "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - "version" "6.3.0" - -"semver@^6.3.0": - "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - "version" "6.3.0" - -"semver@^7.2.1", "semver@^7.3.2", "semver@^7.3.4", "semver@^7.3.5", "semver@7.3.5": - "integrity" "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz" - "version" "7.3.5" +sequelize-typescript@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/sequelize-typescript/-/sequelize-typescript-2.1.1.tgz" + integrity sha512-4am/5O6dlAvtR/akH2KizcECm4rRAjWr+oc5mo9vFVMez8hrbOhQlDNzk0H6VMOQASCN7yBF+qOnSEN60V6/vA== dependencies: - "lru-cache" "^6.0.0" + glob "7.2.0" -"semver@~5.3.0": - "integrity" "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz" - "version" "5.3.0" - -"sequelize-pool@^6.0.0": - "integrity" "sha512-4YwEw3ZgK/tY/so+GfnSgXkdwIJJ1I32uZJztIEgZeAO6HMgj64OzySbWLgxj+tXhZCJnzRfkY9gINw8Ft8ZMg==" - "resolved" "https://registry.npmjs.org/sequelize-pool/-/sequelize-pool-6.1.0.tgz" - "version" "6.1.0" - -"sequelize-typescript@^2.1.1": - "integrity" "sha512-4am/5O6dlAvtR/akH2KizcECm4rRAjWr+oc5mo9vFVMez8hrbOhQlDNzk0H6VMOQASCN7yBF+qOnSEN60V6/vA==" - "resolved" "https://registry.npmjs.org/sequelize-typescript/-/sequelize-typescript-2.1.1.tgz" - "version" "2.1.1" +sequelize@6.11.0: + version "6.11.0" + resolved "https://registry.npmjs.org/sequelize/-/sequelize-6.11.0.tgz" + integrity sha512-+j3N5lr+FR1eicMRGR3bRsGOl9HMY0UGb2PyB2i1yZ64XBgsz3xejMH0UD45LcUitj40soDGIa9CyvZG0dfzKg== dependencies: - "glob" "7.2.0" + debug "^4.1.1" + dottie "^2.0.0" + inflection "1.13.1" + lodash "^4.17.20" + moment "^2.26.0" + moment-timezone "^0.5.31" + pg-connection-string "^2.5.0" + retry-as-promised "^3.2.0" + semver "^7.3.2" + sequelize-pool "^6.0.0" + toposort-class "^1.0.1" + uuid "^8.1.0" + validator "^13.7.0" + wkx "^0.5.0" -"sequelize@>=6.6.5", "sequelize@6.11.0": - "integrity" "sha512-+j3N5lr+FR1eicMRGR3bRsGOl9HMY0UGb2PyB2i1yZ64XBgsz3xejMH0UD45LcUitj40soDGIa9CyvZG0dfzKg==" - "resolved" "https://registry.npmjs.org/sequelize/-/sequelize-6.11.0.tgz" - "version" "6.11.0" +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== dependencies: - "debug" "^4.1.1" - "dottie" "^2.0.0" - "inflection" "1.13.1" - "lodash" "^4.17.20" - "moment" "^2.26.0" - "moment-timezone" "^0.5.31" - "pg-connection-string" "^2.5.0" - "retry-as-promised" "^3.2.0" - "semver" "^7.3.2" - "sequelize-pool" "^6.0.0" - "toposort-class" "^1.0.1" - "uuid" "^8.1.0" - "validator" "^13.7.0" - "wkx" "^0.5.0" + shebang-regex "^3.0.0" -"set-blocking@^2.0.0", "set-blocking@~2.0.0": - "integrity" "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" - "resolved" "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" - "version" "2.0.0" +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -"shebang-command@^2.0.0": - "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - "version" "2.0.0" +shelljs@0.8.4: + version "0.8.4" + resolved "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz" + integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== dependencies: - "shebang-regex" "^3.0.0" + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" -"shebang-regex@^3.0.0": - "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - "version" "3.0.0" - -"shelljs@0.8.4": - "integrity" "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==" - "resolved" "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz" - "version" "0.8.4" +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: - "glob" "^7.0.0" - "interpret" "^1.0.0" - "rechoir" "^0.6.2" + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" -"side-channel@^1.0.4": - "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" - "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" - "version" "1.0.4" +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.6" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz" + integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: - "call-bind" "^1.0.0" - "get-intrinsic" "^1.0.2" - "object-inspect" "^1.9.0" + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" -"signal-exit@^3.0.0", "signal-exit@^3.0.2", "signal-exit@^3.0.3": - "integrity" "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==" - "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz" - "version" "3.0.6" +spawn-command@^0.0.2-1: + version "0.0.2-1" + resolved "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz" + integrity sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A= -"slash@^3.0.0": - "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" - "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" - "version" "3.0.0" +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== -"slice-ansi@^4.0.0": - "integrity" "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==" - "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" - "version" "4.0.0" +spotify-uri@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/spotify-uri/-/spotify-uri-2.2.0.tgz" + integrity sha512-uUybj02bfyfCoZ0MJ80MkqbKxtIVRJfbRGk05KJFq1li3zb7yNfN1f+TAw4wcXgp7jLWExeiw2wyPQXZ8PHtfg== + +spotify-web-api-node@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/spotify-web-api-node/-/spotify-web-api-node-5.0.2.tgz" + integrity sha512-r82dRWU9PMimHvHEzL0DwEJrzFk+SMCVfq249SLt3I7EFez7R+jeoKQd+M1//QcnjqlXPs2am4DFsGk8/GCsrA== dependencies: - "ansi-styles" "^4.0.0" - "astral-regex" "^2.0.0" - "is-fullwidth-code-point" "^3.0.0" + superagent "^6.1.0" -"spawn-command@^0.0.2-1": - "integrity" "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=" - "resolved" "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz" - "version" "0.0.2-1" +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -"split-on-first@^1.0.0": - "integrity" "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==" - "resolved" "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz" - "version" "1.1.0" - -"spotify-uri@^2.2.0": - "integrity" "sha512-uUybj02bfyfCoZ0MJ80MkqbKxtIVRJfbRGk05KJFq1li3zb7yNfN1f+TAw4wcXgp7jLWExeiw2wyPQXZ8PHtfg==" - "resolved" "https://registry.npmjs.org/spotify-uri/-/spotify-uri-2.2.0.tgz" - "version" "2.2.0" - -"spotify-web-api-node@^5.0.2": - "integrity" "sha512-r82dRWU9PMimHvHEzL0DwEJrzFk+SMCVfq249SLt3I7EFez7R+jeoKQd+M1//QcnjqlXPs2am4DFsGk8/GCsrA==" - "resolved" "https://registry.npmjs.org/spotify-web-api-node/-/spotify-web-api-node-5.0.2.tgz" - "version" "5.0.2" +sqlite3@^5.0.2: + version "5.0.2" + resolved "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.2.tgz" + integrity sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA== dependencies: - "superagent" "^6.1.0" - -"sprintf-js@~1.0.2": - "integrity" "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - "version" "1.0.3" - -"sqlite3@^5.0.2": - "integrity" "sha512-1SdTNo+BVU211Xj1csWa8lV6KM0CtucDwRyA0VHl91wEH1Mgh7RxUpI4rVvG7OhHrzCSGaVyW5g8vKvlrk9DJA==" - "resolved" "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.2.tgz" - "version" "5.0.2" - dependencies: - "node-addon-api" "^3.0.0" - "node-pre-gyp" "^0.11.0" + node-addon-api "^3.0.0" + node-pre-gyp "^0.11.0" optionalDependencies: - "node-gyp" "3.x" + node-gyp "3.x" -"sshpk@^1.7.0": - "integrity" "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==" - "resolved" "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz" - "version" "1.16.1" +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== dependencies: - "asn1" "~0.2.3" - "assert-plus" "^1.0.0" - "bcrypt-pbkdf" "^1.0.0" - "dashdash" "^1.12.0" - "ecc-jsbn" "~0.1.1" - "getpass" "^0.1.1" - "jsbn" "~0.1.0" - "safer-buffer" "^2.0.2" - "tweetnacl" "~0.14.0" + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" -"strict-uri-encode@^2.0.0": - "integrity" "sha1-ucczDHBChi9rFC3CdLvMWGbONUY=" - "resolved" "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz" - "version" "2.0.0" +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz" + integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= -"string_decoder@^1.1.1": - "integrity" "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - "version" "1.3.0" +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= dependencies: - "safe-buffer" "~5.2.0" + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" -"string_decoder@~1.1.1": - "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - "version" "1.1.1" +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: - "safe-buffer" "~5.1.0" + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" -"string-width@^1.0.1": - "integrity" "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz" - "version" "1.0.2" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: - "code-point-at" "^1.0.0" - "is-fullwidth-code-point" "^1.0.0" - "strip-ansi" "^3.0.0" + safe-buffer "~5.2.0" -"string-width@^1.0.2 || 2 || 3 || 4", "string-width@^4.0.0", "string-width@^4.1.0", "string-width@^4.2.0", "string-width@^4.2.2", "string-width@^4.2.3": - "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" - "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - "version" "4.2.3" +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: - "emoji-regex" "^8.0.0" - "is-fullwidth-code-point" "^3.0.0" - "strip-ansi" "^6.0.1" + safe-buffer "~5.1.0" -"strip-ansi@^3.0.0", "strip-ansi@^3.0.1": - "integrity" "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - "version" "3.0.1" +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= dependencies: - "ansi-regex" "^2.0.0" + ansi-regex "^2.0.0" -"strip-ansi@^6.0.0", "strip-ansi@^6.0.1": - "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - "version" "6.0.1" +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: - "ansi-regex" "^5.0.1" + ansi-regex "^5.0.1" -"strip-ansi@^7.0.1": - "integrity" "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz" - "version" "7.0.1" +strip-ansi@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz" + integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== dependencies: - "ansi-regex" "^6.0.1" + ansi-regex "^6.0.1" -"strip-final-newline@^2.0.0": - "integrity" "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" - "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" - "version" "2.0.0" +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -"strip-json-comments@^3.1.0", "strip-json-comments@^3.1.1": - "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" - "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - "version" "3.1.1" +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== -"strip-json-comments@~2.0.1": - "integrity" "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" - "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" - "version" "2.0.1" +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -"superagent@^6.1.0": - "integrity" "sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg==" - "resolved" "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz" - "version" "6.1.0" +superagent@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/superagent/-/superagent-6.1.0.tgz" + integrity sha512-OUDHEssirmplo3F+1HWKUrUjvnQuA+nZI6i/JJBdXb5eq9IyEQwPyPpqND+SSsxf6TygpBEkUjISVRN4/VOpeg== dependencies: - "component-emitter" "^1.3.0" - "cookiejar" "^2.1.2" - "debug" "^4.1.1" - "fast-safe-stringify" "^2.0.7" - "form-data" "^3.0.0" - "formidable" "^1.2.2" - "methods" "^1.1.2" - "mime" "^2.4.6" - "qs" "^6.9.4" - "readable-stream" "^3.6.0" - "semver" "^7.3.2" + component-emitter "^1.3.0" + cookiejar "^2.1.2" + debug "^4.1.1" + fast-safe-stringify "^2.0.7" + form-data "^3.0.0" + formidable "^1.2.2" + methods "^1.1.2" + mime "^2.4.6" + qs "^6.9.4" + readable-stream "^3.6.0" + semver "^7.3.2" -"supports-color@^5.3.0": - "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - "version" "5.5.0" +supports-color@^5.3.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: - "has-flag" "^3.0.0" + has-flag "^3.0.0" -"supports-color@^5.5.0": - "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - "version" "5.5.0" +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: - "has-flag" "^3.0.0" + has-flag "^4.0.0" -"supports-color@^7.1.0": - "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - "version" "7.2.0" +supports-color@^8.1.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: - "has-flag" "^4.0.0" + has-flag "^4.0.0" -"supports-color@^8.1.0": - "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - "version" "8.1.1" +table@^6.0.9: + version "6.7.5" + resolved "https://registry.npmjs.org/table/-/table-6.7.5.tgz" + integrity sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw== dependencies: - "has-flag" "^4.0.0" + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" -"table@^6.0.9": - "integrity" "sha512-LFNeryOqiQHqCVKzhkymKwt6ozeRhlm8IL1mE8rNUurkir4heF6PzMyRgaTa4tlyPTGGgXuvVOF/OLWiH09Lqw==" - "resolved" "https://registry.npmjs.org/table/-/table-6.7.5.tgz" - "version" "6.7.5" +tar@^2.0.0: + version "2.2.2" + resolved "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz" + integrity sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA== dependencies: - "ajv" "^8.0.1" - "lodash.truncate" "^4.4.2" - "slice-ansi" "^4.0.0" - "string-width" "^4.2.3" - "strip-ansi" "^6.0.1" + block-stream "*" + fstream "^1.0.12" + inherits "2" -"tar@^2.0.0": - "integrity" "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==" - "resolved" "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz" - "version" "2.2.2" +tar@^4: + version "4.4.19" + resolved "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz" + integrity sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA== dependencies: - "block-stream" "*" - "fstream" "^1.0.12" - "inherits" "2" + chownr "^1.1.4" + fs-minipass "^1.2.7" + minipass "^2.9.0" + minizlib "^1.3.3" + mkdirp "^0.5.5" + safe-buffer "^5.2.1" + yallist "^3.1.1" -"tar@^4": - "integrity" "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==" - "resolved" "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz" - "version" "4.4.19" +tar@^6.1.11: + version "6.1.11" + resolved "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz" + integrity sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA== dependencies: - "chownr" "^1.1.4" - "fs-minipass" "^1.2.7" - "minipass" "^2.9.0" - "minizlib" "^1.3.3" - "mkdirp" "^0.5.5" - "safe-buffer" "^5.2.1" - "yallist" "^3.1.1" + 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" -"tar@^6.1.11": - "integrity" "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==" - "resolved" "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz" - "version" "6.1.11" +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +tiny-typed-emitter@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz" + integrity sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA== + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== 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" + os-tmpdir "~1.0.2" -"text-table@^0.2.0": - "integrity" "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" - "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - "version" "0.2.0" +to-readable-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" + integrity sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q== -"through@^2.3.6": - "integrity" "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - "version" "2.3.8" - -"tiny-typed-emitter@^2.1.0": - "integrity" "sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==" - "resolved" "https://registry.npmjs.org/tiny-typed-emitter/-/tiny-typed-emitter-2.1.0.tgz" - "version" "2.1.0" - -"tmp@^0.0.33": - "integrity" "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==" - "resolved" "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" - "version" "0.0.33" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: - "os-tmpdir" "~1.0.2" + is-number "^7.0.0" -"to-readable-stream@^1.0.0": - "integrity" "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" - "resolved" "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz" - "version" "1.0.0" +toposort-class@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz" + integrity sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg= -"to-regex-range@^5.0.1": - "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" - "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - "version" "5.0.1" +touch@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz" + integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA== dependencies: - "is-number" "^7.0.0" + nopt "~1.0.10" -"toposort-class@^1.0.1": - "integrity" "sha1-f/0feMi+KMO6Rc1OGj9e4ZO9mYg=" - "resolved" "https://registry.npmjs.org/toposort-class/-/toposort-class-1.0.1.tgz" - "version" "1.0.1" - -"touch@^3.1.0": - "integrity" "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==" - "resolved" "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz" - "version" "3.1.0" +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: - "nopt" "~1.0.10" + psl "^1.1.28" + punycode "^2.1.1" -"tough-cookie@~2.5.0": - "integrity" "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==" - "resolved" "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz" - "version" "2.5.0" - dependencies: - "psl" "^1.1.28" - "punycode" "^2.1.1" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= -"tr46@~0.0.3": - "integrity" "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" - "version" "0.0.3" +tree-kill@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== -"tree-kill@^1.2.2": - "integrity" "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==" - "resolved" "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz" - "version" "1.2.2" +ts-mixer@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.0.tgz" + integrity sha512-nXIb1fvdY5CBSrDIblLn73NW0qRDk5yJ0Sk1qPBF560OdJfQp9jhl+0tzcY09OZ9U+6GpeoI9RjwoIKFIoB9MQ== -"ts-mixer@^6.0.0": - "integrity" "sha512-nXIb1fvdY5CBSrDIblLn73NW0qRDk5yJ0Sk1qPBF560OdJfQp9jhl+0tzcY09OZ9U+6GpeoI9RjwoIKFIoB9MQ==" - "resolved" "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.0.tgz" - "version" "6.0.0" - -"ts-node@^10.4.0": - "integrity" "sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A==" - "resolved" "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz" - "version" "10.4.0" +ts-node@^10.4.0: + version "10.4.0" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz" + integrity sha512-g0FlPvvCXSIO1JDF6S232P5jPYqBkRL9qly81ZgAOSU7rwI0stphCgd2kLiCrU9DjQCrJMWEqcNSjQL02s6d8A== dependencies: "@cspotcode/source-map-support" "0.7.0" "@tsconfig/node10" "^1.0.7" "@tsconfig/node12" "^1.0.7" "@tsconfig/node14" "^1.0.0" "@tsconfig/node16" "^1.0.2" - "acorn" "^8.4.1" - "acorn-walk" "^8.1.1" - "arg" "^4.1.0" - "create-require" "^1.1.0" - "diff" "^4.0.1" - "make-error" "^1.1.1" - "yn" "3.1.1" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + yn "3.1.1" -"tslib@^1.8.1": - "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - "version" "1.14.1" +tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -"tslib@^1.9.0": - "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - "version" "1.14.1" +tslib@^2.3.0, tslib@^2.3.1: + version "2.3.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== -"tslib@^2.3.0", "tslib@^2.3.1": - "integrity" "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz" - "version" "2.3.1" +tslib@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz" + integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== -"tslib@~2.1.0": - "integrity" "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz" - "version" "2.1.0" - -"tsutils@^3.21.0": - "integrity" "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==" - "resolved" "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" - "version" "3.21.0" +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== dependencies: - "tslib" "^1.8.1" + tslib "^1.8.1" -"tunnel-agent@^0.6.0": - "integrity" "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=" - "resolved" "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" - "version" "0.6.0" +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= dependencies: - "safe-buffer" "^5.0.1" + safe-buffer "^5.0.1" -"tweetnacl@^0.14.3", "tweetnacl@~0.14.0": - "integrity" "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" - "resolved" "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" - "version" "0.14.5" +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= -"type-check@^0.4.0", "type-check@~0.4.0": - "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" - "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - "version" "0.4.0" +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== dependencies: - "prelude-ls" "^1.2.1" + prelude-ls "^1.2.1" -"type-fest@^0.20.2": - "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - "version" "0.20.2" +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== -"type-fest@^0.21.3": - "integrity" "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" - "version" "0.21.3" +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== -"type-fest@^0.4.1": - "integrity" "sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz" - "version" "0.4.1" +type-fest@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.4.1.tgz" + integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== -"type-fest@^0.8.0": - "integrity" "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" - "version" "0.8.1" +type-fest@^0.8.0: + version "0.8.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -"type-fest@^1.2.1": - "integrity" "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz" - "version" "1.4.0" +type-fest@^1.2.1: + version "1.4.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz" + integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== -"type-fest@^2.8.0": - "integrity" "sha512-O+V9pAshf9C6loGaH0idwsmugI2LxVNR7DtS40gVo2EXZVYFgz9OuNtOhgHLdHdapOEWNdvz9Ob/eeuaWwwlxA==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-2.8.0.tgz" - "version" "2.8.0" +type-fest@^2.8.0: + version "2.8.0" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.8.0.tgz" + integrity sha512-O+V9pAshf9C6loGaH0idwsmugI2LxVNR7DtS40gVo2EXZVYFgz9OuNtOhgHLdHdapOEWNdvz9Ob/eeuaWwwlxA== -"typed-emitter@^1.4.0": - "integrity" "sha512-weBmoo3HhpKGgLBOYwe8EB31CzDFuaK7CCL+axXhUYhn4jo6DSkHnbefboCF5i4DQ2aMFe0C/FdTWcPdObgHyg==" - "resolved" "https://registry.npmjs.org/typed-emitter/-/typed-emitter-1.4.0.tgz" - "version" "1.4.0" +typed-emitter@^1.4.0: + version "1.4.0" + resolved "https://registry.npmjs.org/typed-emitter/-/typed-emitter-1.4.0.tgz" + integrity sha512-weBmoo3HhpKGgLBOYwe8EB31CzDFuaK7CCL+axXhUYhn4jo6DSkHnbefboCF5i4DQ2aMFe0C/FdTWcPdObgHyg== -"typedarray-to-buffer@^3.1.5": - "integrity" "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==" - "resolved" "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" - "version" "3.1.5" +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== dependencies: - "is-typedarray" "^1.0.0" + is-typedarray "^1.0.0" -"typescript@^4.5.4", "typescript@>=2.7", "typescript@>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta", "typescript@>=4.3": - "integrity" "sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg==" - "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz" - "version" "4.5.4" +typescript@>=4.3, typescript@^4.5.4: + version "4.5.4" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.5.4.tgz" + integrity sha512-VgYs2A2QIRuGphtzFV7aQJduJ2gyfTljngLzjpfW9FoYZF6xuw1W0vW9ghCKLfcWrCFxK81CSGRAvS1pn4fIUg== -"undefsafe@^2.0.5": - "integrity" "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" - "resolved" "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz" - "version" "2.0.5" +undefsafe@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz" + integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== -"unique-string@^2.0.0": - "integrity" "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==" - "resolved" "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" - "version" "2.0.0" +unique-string@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz" + integrity sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg== dependencies: - "crypto-random-string" "^2.0.0" + crypto-random-string "^2.0.0" -"universal-user-agent@^6.0.0": - "integrity" "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==" - "resolved" "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz" - "version" "6.0.0" +universal-user-agent@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz" + integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== -"update-notifier@^5.1.0", "update-notifier@5.1.0": - "integrity" "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==" - "resolved" "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz" - "version" "5.1.0" +update-notifier@5.1.0, update-notifier@^5.1.0: + version "5.1.0" + resolved "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz" + integrity sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw== dependencies: - "boxen" "^5.0.0" - "chalk" "^4.1.0" - "configstore" "^5.0.1" - "has-yarn" "^2.1.0" - "import-lazy" "^2.1.0" - "is-ci" "^2.0.0" - "is-installed-globally" "^0.4.0" - "is-npm" "^5.0.0" - "is-yarn-global" "^0.3.0" - "latest-version" "^5.1.0" - "pupa" "^2.1.1" - "semver" "^7.3.4" - "semver-diff" "^3.1.1" - "xdg-basedir" "^4.0.0" + boxen "^5.0.0" + chalk "^4.1.0" + configstore "^5.0.1" + has-yarn "^2.1.0" + import-lazy "^2.1.0" + is-ci "^2.0.0" + is-installed-globally "^0.4.0" + is-npm "^5.0.0" + is-yarn-global "^0.3.0" + latest-version "^5.1.0" + pupa "^2.1.1" + semver "^7.3.4" + semver-diff "^3.1.1" + xdg-basedir "^4.0.0" -"uri-js@^4.2.2": - "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" - "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - "version" "4.4.1" +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: - "punycode" "^2.1.0" + punycode "^2.1.0" -"url-join@4.0.1": - "integrity" "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==" - "resolved" "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz" - "version" "4.0.1" +url-join@4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz" + integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== -"url-parse-lax@^3.0.0": - "integrity" "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=" - "resolved" "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" - "version" "3.0.0" +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= dependencies: - "prepend-http" "^2.0.0" + prepend-http "^2.0.0" -"util-deprecate@^1.0.1", "util-deprecate@~1.0.1": - "integrity" "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - "version" "1.0.2" +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -"uuid@^3.3.2": - "integrity" "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" - "version" "3.4.0" +uuid@8.3.2, uuid@^8.1.0: + version "8.3.2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -"uuid@^8.1.0", "uuid@8.3.2": - "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" - "version" "8.3.2" +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -"v8-compile-cache@^2.0.3": - "integrity" "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==" - "resolved" "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" - "version" "2.3.0" +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== -"vali-date@^1.0.0": - "integrity" "sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY=" - "resolved" "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz" - "version" "1.0.0" +vali-date@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/vali-date/-/vali-date-1.0.0.tgz" + integrity sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY= -"validator@^13.7.0": - "integrity" "sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw==" - "resolved" "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz" - "version" "13.7.0" +validator@^13.7.0: + version "13.7.0" + resolved "https://registry.npmjs.org/validator/-/validator-13.7.0.tgz" + integrity sha512-nYXQLCBkpJ8X6ltALua9dRrZDHVYxjJ1wgskNt1lH9fzGjs3tgojGSCBjmEPwkWS1y29+DrizMTW19Pr9uB2nw== -"verror@1.10.0": - "integrity" "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=" - "resolved" "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" - "version" "1.10.0" +verror@1.10.0: + version "1.10.0" + resolved "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= dependencies: - "assert-plus" "^1.0.0" - "core-util-is" "1.0.2" - "extsprintf" "^1.2.0" + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" -"wcwidth@^1.0.1": - "integrity" "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=" - "resolved" "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" - "version" "1.0.1" +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= dependencies: - "defaults" "^1.0.3" + defaults "^1.0.3" -"webidl-conversions@^3.0.0": - "integrity" "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" - "version" "3.0.1" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= -"whatwg-url@^5.0.0": - "integrity" "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=" - "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" - "version" "5.0.0" +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= dependencies: - "tr46" "~0.0.3" - "webidl-conversions" "^3.0.0" + tr46 "~0.0.3" + webidl-conversions "^3.0.0" -"which-pm-runs@^1.0.0": - "integrity" "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=" - "resolved" "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz" - "version" "1.0.0" +which-pm-runs@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz" + integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= -"which@^1.1.1": - "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" - "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - "version" "1.3.1" +which@1, which@^1.1.1: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== dependencies: - "isexe" "^2.0.0" + isexe "^2.0.0" -"which@^2.0.1": - "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" - "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - "version" "2.0.2" +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== dependencies: - "isexe" "^2.0.0" + isexe "^2.0.0" -"which@1": - "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" - "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - "version" "1.3.1" +wide-align@^1.1.0, wide-align@^1.1.2: + version "1.1.5" + resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== dependencies: - "isexe" "^2.0.0" + string-width "^1.0.2 || 2 || 3 || 4" -"wide-align@^1.1.0", "wide-align@^1.1.2": - "integrity" "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==" - "resolved" "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" - "version" "1.1.5" +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== dependencies: - "string-width" "^1.0.2 || 2 || 3 || 4" + string-width "^4.0.0" -"widest-line@^3.1.0": - "integrity" "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==" - "resolved" "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" - "version" "3.1.0" +windows-release@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz" + integrity sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg== dependencies: - "string-width" "^4.0.0" + execa "^4.0.2" -"windows-release@^4.0.0": - "integrity" "sha512-OxmV4wzDKB1x7AZaZgXMVsdJ1qER1ed83ZrTYd5Bwq2HfJVg3DJS8nqlAG4sMoJ7mu8cuRmLEYyU13BKwctRAg==" - "resolved" "https://registry.npmjs.org/windows-release/-/windows-release-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "execa" "^4.0.2" - -"wkx@^0.5.0": - "integrity" "sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg==" - "resolved" "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz" - "version" "0.5.0" +wkx@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/wkx/-/wkx-0.5.0.tgz" + integrity sha512-Xng/d4Ichh8uN4l0FToV/258EjMGU9MGcA0HV2d9B/ZpZB3lqQm7nkOdZdm5GhKtLLhAE7PiVQwN4eN+2YJJUg== dependencies: "@types/node" "*" -"word-wrap@^1.2.3": - "integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" - "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" - "version" "1.2.3" +word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -"wrap-ansi@^7.0.0": - "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" - "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - "version" "7.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: - "ansi-styles" "^4.0.0" - "string-width" "^4.1.0" - "strip-ansi" "^6.0.0" + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" -"wrappy@1": - "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - "version" "1.0.2" +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -"write-file-atomic@^3.0.0": - "integrity" "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==" - "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" - "version" "3.0.3" +write-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" + 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" + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" -"ws@^8.2.3": - "integrity" "sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ==" - "resolved" "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz" - "version" "8.4.0" +ws@^8.2.3: + version "8.4.0" + resolved "https://registry.npmjs.org/ws/-/ws-8.4.0.tgz" + integrity sha512-IHVsKe2pjajSUIl4KYMQOdlyliovpEPquKkqbwswulszzI7r0SfQrxnXdWAEqOlDCLrVSJzo+O1hAwdog2sKSQ== -"xbytes@^1.7.0": - "integrity" "sha512-iZglBXuHoC1F7jRz7746QhicNE167tEVq2H/iYQ1jIFdYIjqL8OfM86K52csfRZm+d83/VJO8bu37jN/G1ekKQ==" - "resolved" "https://registry.npmjs.org/xbytes/-/xbytes-1.7.0.tgz" - "version" "1.7.0" +xbytes@^1.7.0: + version "1.7.0" + resolved "https://registry.npmjs.org/xbytes/-/xbytes-1.7.0.tgz" + integrity sha512-iZglBXuHoC1F7jRz7746QhicNE167tEVq2H/iYQ1jIFdYIjqL8OfM86K52csfRZm+d83/VJO8bu37jN/G1ekKQ== -"xdg-basedir@^4.0.0": - "integrity" "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" - "resolved" "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz" - "version" "4.0.0" +xdg-basedir@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz" + integrity sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q== -"y18n@^5.0.5": - "integrity" "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" - "resolved" "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" - "version" "5.0.8" +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== -"yallist@^3.0.0", "yallist@^3.1.1": - "integrity" "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" - "version" "3.1.1" +yallist@^3.0.0, yallist@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== -"yallist@^4.0.0": - "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - "version" "4.0.0" +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -"yaml@^1.10.0", "yaml@1.10.2": - "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" - "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" - "version" "1.10.2" +yaml@1.10.2, yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -"yargs-parser@^20.2.2", "yargs-parser@20.2.9": - "integrity" "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" - "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" - "version" "20.2.9" +yargs-parser@20.2.9, yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== -"yargs@^16.2.0": - "integrity" "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==" - "resolved" "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" - "version" "16.2.0" +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: - "cliui" "^7.0.2" - "escalade" "^3.1.1" - "get-caller-file" "^2.0.5" - "require-directory" "^2.1.1" - "string-width" "^4.2.0" - "y18n" "^5.0.5" - "yargs-parser" "^20.2.2" + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" -"yn@3.1.1": - "integrity" "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" - "resolved" "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" - "version" "3.1.1" +yn@3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== -"yocto-queue@^0.1.0": - "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" - "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - "version" "0.1.0" +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -"yocto-queue@^1.0.0": - "integrity" "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==" - "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz" - "version" "1.0.0" +yocto-queue@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz" + integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== -"youtube.ts@^0.2.2": - "integrity" "sha512-KUowS4ixsIciDKo7qWAjqb+cTV37wCDQFd4YQ7Wk5nw6ZTcihCiqVfW24LKaX4kp7lH6Xj93fxVcaj78zJ/oow==" - "resolved" "https://registry.npmjs.org/youtube.ts/-/youtube.ts-0.2.3.tgz" - "version" "0.2.3" +youtube.ts@^0.2.2: + version "0.2.3" + resolved "https://registry.npmjs.org/youtube.ts/-/youtube.ts-0.2.3.tgz" + integrity sha512-KUowS4ixsIciDKo7qWAjqb+cTV37wCDQFd4YQ7Wk5nw6ZTcihCiqVfW24LKaX4kp7lH6Xj93fxVcaj78zJ/oow== dependencies: - "axios" "^0.19.0" - "ytdl-core" "^4.9.1" + axios "^0.19.0" + ytdl-core "^4.9.1" -"ytdl-core@^4.9.1": - "integrity" "sha512-aTlsvsN++03MuOtyVD4DRF9Z/9UAeeuiNbjs+LjQBAiw4Hrdp48T3U9vAmRPyvREzupraY8pqRoBfKGqpq+eHA==" - "resolved" "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.9.2.tgz" - "version" "4.9.2" +ytdl-core@^4.9.1: + version "4.9.2" + resolved "https://registry.npmjs.org/ytdl-core/-/ytdl-core-4.9.2.tgz" + integrity sha512-aTlsvsN++03MuOtyVD4DRF9Z/9UAeeuiNbjs+LjQBAiw4Hrdp48T3U9vAmRPyvREzupraY8pqRoBfKGqpq+eHA== dependencies: - "m3u8stream" "^0.8.4" - "miniget" "^4.0.0" - "sax" "^1.1.3" + m3u8stream "^0.8.4" + miniget "^4.0.0" + sax "^1.1.3" -"ytsr@^3.5.3": - "integrity" "sha512-BEyIKbQULmk27hiVUQ1cBszAqP8roPBOQTWPZpBioKxjSZBeicfgF2qPIQoY7koodQwRuo1DmCFz3DyrXjADxg==" - "resolved" "https://registry.npmjs.org/ytsr/-/ytsr-3.5.3.tgz" - "version" "3.5.3" +ytsr@^3.5.3: + version "3.5.3" + resolved "https://registry.npmjs.org/ytsr/-/ytsr-3.5.3.tgz" + integrity sha512-BEyIKbQULmk27hiVUQ1cBszAqP8roPBOQTWPZpBioKxjSZBeicfgF2qPIQoY7koodQwRuo1DmCFz3DyrXjADxg== dependencies: - "miniget" "^4.2.1" + miniget "^4.2.1" -"zod@^3.11.6": - "integrity" "sha512-daZ80A81I3/9lIydI44motWe6n59kRBfNzTuS2bfzVh1nAXi667TOTWWtatxyG+fwgNUiagSj/CWZwRRbevJIg==" - "resolved" "https://registry.npmjs.org/zod/-/zod-3.11.6.tgz" - "version" "3.11.6" +zod@^3.11.6: + version "3.11.6" + resolved "https://registry.npmjs.org/zod/-/zod-3.11.6.tgz" + integrity sha512-daZ80A81I3/9lIydI44motWe6n59kRBfNzTuS2bfzVh1nAXi667TOTWWtatxyG+fwgNUiagSj/CWZwRRbevJIg== From 4169104c4df909c9c700ca0481dddd74d86169ec Mon Sep 17 00:00:00 2001 From: Max Isom Date: Wed, 19 Jan 2022 13:46:32 -0600 Subject: [PATCH 32/47] Type fixes, remove shortcuts --- src/bot.ts | 4 +- src/commands/clear.ts | 2 +- src/commands/disconnect.ts | 2 +- src/commands/fseek.ts | 2 +- src/commands/index.ts | 10 +-- src/commands/pause.ts | 2 +- src/commands/play.ts | 2 +- src/commands/queue.ts | 2 +- src/commands/remove.ts | 2 +- src/commands/seek.ts | 2 +- src/commands/shortcuts.ts | 128 ------------------------------------- src/commands/shuffle.ts | 2 +- src/commands/skip.ts | 28 +------- src/commands/unskip.ts | 2 +- src/inversify.config.ts | 2 - 15 files changed, 17 insertions(+), 175 deletions(-) delete mode 100644 src/commands/shortcuts.ts diff --git a/src/bot.ts b/src/bot.ts index 8550303..a18e344 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -69,8 +69,8 @@ export default class { return; } - if (command.executeFromInteraction) { - await command.executeFromInteraction(interaction); + if (command.execute) { + await command.execute(interaction); } } catch (error: unknown) { debug(error); diff --git a/src/commands/clear.ts b/src/commands/clear.ts index 5c1a1eb..2b258cb 100644 --- a/src/commands/clear.ts +++ b/src/commands/clear.ts @@ -19,7 +19,7 @@ export default class implements Command { this.playerManager = playerManager; } - public async executeFromInteraction(interaction: CommandInteraction) { + public async execute(interaction: CommandInteraction) { this.playerManager.get(interaction.guild!.id).clear(); await interaction.reply('clearer than a field after a fresh harvest'); diff --git a/src/commands/disconnect.ts b/src/commands/disconnect.ts index d196985..c63f9a2 100644 --- a/src/commands/disconnect.ts +++ b/src/commands/disconnect.ts @@ -20,7 +20,7 @@ export default class implements Command { this.playerManager = playerManager; } - public async executeFromInteraction(interaction: CommandInteraction) { + public async execute(interaction: CommandInteraction) { const player = this.playerManager.get(interaction.guild!.id); if (!player.voiceConnection) { diff --git a/src/commands/fseek.ts b/src/commands/fseek.ts index 5a46a17..f4f1172 100644 --- a/src/commands/fseek.ts +++ b/src/commands/fseek.ts @@ -25,7 +25,7 @@ export default class implements Command { this.playerManager = playerManager; } - public async executeFromInteraction(interaction: CommandInteraction): Promise { + public async execute(interaction: CommandInteraction): Promise { const player = this.playerManager.get(interaction.guild!.id); const currentSong = player.getCurrent(); diff --git a/src/commands/index.ts b/src/commands/index.ts index 1cd927b..b9f5877 100644 --- a/src/commands/index.ts +++ b/src/commands/index.ts @@ -1,14 +1,10 @@ import {SlashCommandBuilder} from '@discordjs/builders'; import {ButtonInteraction, CommandInteraction} from 'discord.js'; -export default class Command { - // TODO: remove - name?: string; - aliases?: string[]; - examples?: string[][]; - readonly slashCommand?: Partial & Pick; +export default interface Command { + readonly slashCommand: Partial & Pick; readonly handledButtonIds?: readonly string[]; readonly requiresVC?: boolean; - executeFromInteraction?: (interaction: CommandInteraction) => Promise; + execute: (interaction: CommandInteraction) => Promise; handleButtonInteraction?: (interaction: ButtonInteraction) => Promise; } diff --git a/src/commands/pause.ts b/src/commands/pause.ts index c3e8c24..5d87b87 100644 --- a/src/commands/pause.ts +++ b/src/commands/pause.ts @@ -21,7 +21,7 @@ export default class implements Command { this.playerManager = playerManager; } - public async executeFromInteraction(interaction: CommandInteraction) { + public async execute(interaction: CommandInteraction) { const player = this.playerManager.get(interaction.guild!.id); if (player.status !== STATUS.PLAYING) { diff --git a/src/commands/play.ts b/src/commands/play.ts index 4ac566b..619c18f 100644 --- a/src/commands/play.ts +++ b/src/commands/play.ts @@ -40,7 +40,7 @@ export default class implements Command { } // eslint-disable-next-line complexity - public async executeFromInteraction(interaction: CommandInteraction): Promise { + public async execute(interaction: CommandInteraction): Promise { const [targetVoiceChannel] = getMemberVoiceChannel(interaction.member as GuildMember) ?? getMostPopularVoiceChannel(interaction.guild!); const settings = await prisma.setting.findUnique({where: {guildId: interaction.guild!.id}}); diff --git a/src/commands/queue.ts b/src/commands/queue.ts index 479bc33..9768f58 100644 --- a/src/commands/queue.ts +++ b/src/commands/queue.ts @@ -23,7 +23,7 @@ export default class implements Command { this.updatingQueueEmbedManager = updatingQueueEmbedManager; } - public async executeFromInteraction(interaction: CommandInteraction) { + public async execute(interaction: CommandInteraction) { const embed = this.updatingQueueEmbedManager.get(interaction.guild!.id); await embed.createFromInteraction(interaction); diff --git a/src/commands/remove.ts b/src/commands/remove.ts index 76ba901..c58fbdf 100644 --- a/src/commands/remove.ts +++ b/src/commands/remove.ts @@ -27,7 +27,7 @@ export default class implements Command { this.playerManager = playerManager; } - public async executeFromInteraction(interaction: CommandInteraction): Promise { + public async execute(interaction: CommandInteraction): Promise { const player = this.playerManager.get(interaction.guild!.id); const position = interaction.options.getInteger('position') ?? 1; diff --git a/src/commands/seek.ts b/src/commands/seek.ts index 708567f..ecfde64 100644 --- a/src/commands/seek.ts +++ b/src/commands/seek.ts @@ -26,7 +26,7 @@ export default class implements Command { this.playerManager = playerManager; } - public async executeFromInteraction(interaction: CommandInteraction): Promise { + public async execute(interaction: CommandInteraction): Promise { const player = this.playerManager.get(interaction.guild!.id); const currentSong = player.getCurrent(); diff --git a/src/commands/shortcuts.ts b/src/commands/shortcuts.ts deleted file mode 100644 index e40d10a..0000000 --- a/src/commands/shortcuts.ts +++ /dev/null @@ -1,128 +0,0 @@ -import {Message} from 'discord.js'; -import {injectable} from 'inversify'; -import errorMsg from '../utils/error-msg.js'; -import Command from '.'; -import {prisma} from '../utils/db.js'; - -@injectable() -export default class implements Command { - public name = 'shortcuts'; - public aliases = []; - public examples = [ - ['shortcuts', 'show all shortcuts'], - ['shortcuts set s skip', 'aliases `s` to `skip`'], - ['shortcuts set party play https://www.youtube.com/watch?v=zK6oOJ1wz8k', 'aliases `party` to a specific play command'], - ['shortcuts delete party', 'removes the `party` shortcut'], - ]; - - public async execute(msg: Message, args: string []): Promise { - if (args.length === 0) { - // Get shortcuts for guild - const shortcuts = await prisma.shortcut.findMany({ - where: { - guildId: msg.guild!.id, - }, - }); - - if (shortcuts.length === 0) { - await msg.channel.send('no shortcuts exist'); - return; - } - - // Get prefix for guild - const settings = await prisma.setting.findUnique({ - where: { - guildId: msg.guild!.id, - }, - }); - - if (!settings) { - return; - } - - const {prefix} = settings; - - const res = shortcuts.reduce((accum, shortcut) => { - accum += `${prefix}${shortcut.shortcut}: ${shortcut.command}\n`; - - return accum; - }, ''); - - await msg.channel.send(res); - } else { - const action = args[0]; - - const shortcutName = args[1]; - - switch (action) { - case 'set': { - const shortcut = await prisma.shortcut.findFirst({ - where: { - guildId: msg.guild!.id, - shortcut: shortcutName, - }, - }); - - const command = args.slice(2).join(' '); - - const newShortcut = {shortcut: shortcutName, command, guildId: msg.guild!.id, authorId: msg.author.id}; - - if (shortcut) { - if (shortcut.authorId !== msg.author.id && msg.author.id !== msg.guild!.ownerId) { - await msg.channel.send(errorMsg('you do\'nt have permission to do that')); - return; - } - - await prisma.shortcut.update({ - where: { - id: shortcut.id, - }, - data: newShortcut, - }); - await msg.channel.send('shortcut updated'); - } else { - await prisma.shortcut.create({data: newShortcut}); - await msg.channel.send('shortcut created'); - } - - break; - } - - case 'delete': { - // Check if shortcut exists - const shortcut = await prisma.shortcut.findFirst({ - where: { - guildId: msg.guild!.id, - shortcut: shortcutName, - }, - }); - - if (!shortcut) { - await msg.channel.send(errorMsg('shortcut doesn\'t exist')); - return; - } - - // Check permissions - if (shortcut.authorId !== msg.author.id && msg.author.id !== msg.guild!.ownerId) { - await msg.channel.send(errorMsg('you don\'t have permission to do that')); - return; - } - - await prisma.shortcut.delete({ - where: { - id: shortcut.id, - }, - }); - - await msg.channel.send('shortcut deleted'); - - break; - } - - default: { - await msg.channel.send(errorMsg('unknown command')); - } - } - } - } -} diff --git a/src/commands/shuffle.ts b/src/commands/shuffle.ts index f560e41..9c0a664 100644 --- a/src/commands/shuffle.ts +++ b/src/commands/shuffle.ts @@ -20,7 +20,7 @@ export default class implements Command { this.playerManager = playerManager; } - public async executeFromInteraction(interaction: CommandInteraction): Promise { + public async execute(interaction: CommandInteraction): Promise { const player = this.playerManager.get(interaction.guild!.id); if (player.isQueueEmpty()) { diff --git a/src/commands/skip.ts b/src/commands/skip.ts index 93b8bc3..f8900da 100644 --- a/src/commands/skip.ts +++ b/src/commands/skip.ts @@ -1,9 +1,8 @@ -import {CommandInteraction, Message, TextChannel} from 'discord.js'; +import {CommandInteraction} from 'discord.js'; import {TYPES} from '../types.js'; import {inject, injectable} from 'inversify'; import PlayerManager from '../managers/player.js'; import Command from '.'; -import LoadingMessage from '../utils/loading-message.js'; import errorMsg from '../utils/error-msg.js'; import {SlashCommandBuilder} from '@discordjs/builders'; @@ -32,7 +31,7 @@ export default class implements Command { this.playerManager = playerManager; } - public async executeFromInteraction(interaction: CommandInteraction): Promise { + public async execute(interaction: CommandInteraction): Promise { const numToSkip = interaction.options.getInteger('skip') ?? 1; if (numToSkip < 1) { @@ -48,27 +47,4 @@ export default class implements Command { await interaction.reply({content: errorMsg('invalid number of songs to skip'), ephemeral: true}); } } - - public async execute(msg: Message, args: string []): Promise { - let numToSkip = 1; - - if (args.length === 1) { - if (!Number.isNaN(parseInt(args[0], 10))) { - numToSkip = parseInt(args[0], 10); - } - } - - const player = this.playerManager.get(msg.guild!.id); - - const loader = new LoadingMessage(msg.channel as TextChannel); - - try { - await loader.start(); - await player.forward(numToSkip); - - await loader.stop('keep \'er movin\''); - } catch (_: unknown) { - await loader.stop(errorMsg('no song to skip to')); - } - } } diff --git a/src/commands/unskip.ts b/src/commands/unskip.ts index 6842498..746cdf9 100644 --- a/src/commands/unskip.ts +++ b/src/commands/unskip.ts @@ -20,7 +20,7 @@ export default class implements Command { this.playerManager = playerManager; } - public async executeFromInteraction(interaction: CommandInteraction): Promise { + public async execute(interaction: CommandInteraction): Promise { const player = this.playerManager.get(interaction.guild!.id); try { diff --git a/src/inversify.config.ts b/src/inversify.config.ts index 623e631..5714d6f 100644 --- a/src/inversify.config.ts +++ b/src/inversify.config.ts @@ -23,7 +23,6 @@ import Play from './commands/play.js'; import QueueCommand from './commands/queue.js'; import Remove from './commands/remove.js'; import Seek from './commands/seek.js'; -import Shortcuts from './commands/shortcuts.js'; import Shuffle from './commands/shuffle.js'; import Skip from './commands/skip.js'; import Unskip from './commands/unskip.js'; @@ -63,7 +62,6 @@ container.bind(TYPES.Services.NaturalLanguage).to(NaturalLangua QueueCommand, Remove, Seek, - Shortcuts, Shuffle, Skip, Unskip, From 43baa57c51ce25aadf7b9d5a75a992e6c1edc7da Mon Sep 17 00:00:00 2001 From: Max Isom Date: Wed, 19 Jan 2022 14:00:50 -0600 Subject: [PATCH 33/47] Remove unnecessary properties --- src/commands/skip.ts | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/commands/skip.ts b/src/commands/skip.ts index f8900da..dd24eb2 100644 --- a/src/commands/skip.ts +++ b/src/commands/skip.ts @@ -8,13 +8,6 @@ import {SlashCommandBuilder} from '@discordjs/builders'; @injectable() export default class implements Command { - public name = 'skip'; - public aliases = ['s']; - public examples = [ - ['skip', 'skips the current song'], - ['skip 2', 'skips the next 2 songs'], - ]; - public readonly slashCommand = new SlashCommandBuilder() .setName('skip') .setDescription('skips the next songs') From 7901fcce3d7d0ce2ec91ba36a3ba9107e8709bff Mon Sep 17 00:00:00 2001 From: Max Isom Date: Wed, 19 Jan 2022 18:15:12 -0600 Subject: [PATCH 34/47] =?UTF-8?q?=E2=9C=A8=20add=20autocomplete?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/bot.ts | 45 +++++++++++++++--------- src/commands/index.ts | 3 +- src/commands/play.ts | 19 ++++++++-- src/utils/get-youtube-suggestions-for.ts | 15 ++++++++ 4 files changed, 63 insertions(+), 19 deletions(-) create mode 100644 src/utils/get-youtube-suggestions-for.ts diff --git a/src/bot.ts b/src/bot.ts index a18e344..c51caf9 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -87,27 +87,40 @@ export default class { }); this.client.on('interactionCreate', async interaction => { - if (!interaction.isButton()) { - return; - } - - const command = this.commandsByButtonId.get(interaction.customId); - - if (!command) { - return; - } - try { - if (command.handleButtonInteraction) { - await command.handleButtonInteraction(interaction); + if (interaction.isButton()) { + const command = this.commandsByButtonId.get(interaction.customId); + + if (!command) { + return; + } + + if (command.handleButtonInteraction) { + await command.handleButtonInteraction(interaction); + } + } + + if (interaction.isAutocomplete()) { + const command = this.commandsByName.get(interaction.commandName); + + if (!command) { + return; + } + + if (command.handleAutocompleteInteraction) { + await command.handleAutocompleteInteraction(interaction); + } } } catch (error: unknown) { debug(error); - if (interaction.replied || interaction.deferred) { - await interaction.editReply(errorMsg('something went wrong')); - } else { - await interaction.reply({content: errorMsg(error as Error), ephemeral: true}); + // Can't reply with errors for autocomplete queries + if (interaction.isButton()) { + if (interaction.replied || interaction.deferred) { + await interaction.editReply(errorMsg('something went wrong')); + } else { + await interaction.reply({content: errorMsg(error as Error), ephemeral: true}); + } } } }); diff --git a/src/commands/index.ts b/src/commands/index.ts index b9f5877..1d1646f 100644 --- a/src/commands/index.ts +++ b/src/commands/index.ts @@ -1,5 +1,5 @@ import {SlashCommandBuilder} from '@discordjs/builders'; -import {ButtonInteraction, CommandInteraction} from 'discord.js'; +import {AutocompleteInteraction, ButtonInteraction, CommandInteraction} from 'discord.js'; export default interface Command { readonly slashCommand: Partial & Pick; @@ -7,4 +7,5 @@ export default interface Command { readonly requiresVC?: boolean; execute: (interaction: CommandInteraction) => Promise; handleButtonInteraction?: (interaction: ButtonInteraction) => Promise; + handleAutocompleteInteraction?: (interaction: AutocompleteInteraction) => Promise; } diff --git a/src/commands/play.ts b/src/commands/play.ts index 619c18f..7e5dee1 100644 --- a/src/commands/play.ts +++ b/src/commands/play.ts @@ -1,4 +1,4 @@ -import {CommandInteraction, GuildMember} from 'discord.js'; +import {AutocompleteInteraction, CommandInteraction, GuildMember} from 'discord.js'; import {URL} from 'url'; import {Except} from 'type-fest'; import {SlashCommandBuilder} from '@discordjs/builders'; @@ -12,6 +12,7 @@ import {getMostPopularVoiceChannel, getMemberVoiceChannel} from '../utils/channe import errorMsg from '../utils/error-msg.js'; import GetSongs from '../services/get-songs.js'; import {prisma} from '../utils/db.js'; +import getYouTubeSuggestionsFor from '../utils/get-youtube-suggestions-for.js'; @injectable() export default class implements Command { @@ -21,7 +22,8 @@ export default class implements Command { .setDescription('play a song or resume playback') .addStringOption(option => option .setName('query') - .setDescription('YouTube URL, Spotify URL, or search query')) + .setDescription('YouTube URL, Spotify URL, or search query') + .setAutocomplete(true)) .addBooleanOption(option => option .setName('immediate') .setDescription('adds track to the front of the queue')) @@ -191,4 +193,17 @@ export default class implements Command { await interaction.editReply(`u betcha, **${firstSong.title}** and ${newSongs.length - 1} other songs were added to the queue${extraMsg}`); } } + + public async handleAutocompleteInteraction(interaction: AutocompleteInteraction): Promise { + const query = interaction.options.getString('query')?.trim(); + + if (!query || query.length === 0) { + return interaction.respond([]); + } + + await interaction.respond((await getYouTubeSuggestionsFor(query)).map(s => ({ + name: s, + value: s, + }))); + } } diff --git a/src/utils/get-youtube-suggestions-for.ts b/src/utils/get-youtube-suggestions-for.ts new file mode 100644 index 0000000..11977e4 --- /dev/null +++ b/src/utils/get-youtube-suggestions-for.ts @@ -0,0 +1,15 @@ +import got from 'got'; + +const getYouTubeSuggestionsFor = async (query: string): Promise => { + const [_, suggestions] = await got('https://suggestqueries.google.com/complete/search?client=firefox&ds=yt&q=', { + searchParams: { + client: 'firefox', + ds: 'yt', + q: query, + }, + }).json<[string, string[]]>(); + + return suggestions; +}; + +export default getYouTubeSuggestionsFor; From 09665af53ee1b1903fc9ea719722aa5dfdc26325 Mon Sep 17 00:00:00 2001 From: Max Isom Date: Fri, 21 Jan 2022 19:57:51 -0600 Subject: [PATCH 35/47] Refine autocomplete --- src/commands/play.ts | 27 +++++-- src/services/get-songs.ts | 4 +- src/utils/constants.ts | 2 + ...get-youtube-and-spotify-suggestions-for.ts | 70 +++++++++++++++++++ 4 files changed, 94 insertions(+), 9 deletions(-) create mode 100644 src/utils/constants.ts create mode 100644 src/utils/get-youtube-and-spotify-suggestions-for.ts diff --git a/src/commands/play.ts b/src/commands/play.ts index 7e5dee1..5ef4c1d 100644 --- a/src/commands/play.ts +++ b/src/commands/play.ts @@ -4,6 +4,7 @@ import {Except} from 'type-fest'; import {SlashCommandBuilder} from '@discordjs/builders'; import shuffle from 'array-shuffle'; import {inject, injectable} from 'inversify'; +import Spotify from 'spotify-web-api-node'; import Command from '.'; import {TYPES} from '../types.js'; import {QueuedSong, STATUS} from '../services/player.js'; @@ -12,7 +13,10 @@ import {getMostPopularVoiceChannel, getMemberVoiceChannel} from '../utils/channe import errorMsg from '../utils/error-msg.js'; import GetSongs from '../services/get-songs.js'; import {prisma} from '../utils/db.js'; -import getYouTubeSuggestionsFor from '../utils/get-youtube-suggestions-for.js'; +import ThirdParty from '../services/third-party.js'; +import getYouTubeAndSpotifySuggestionsFor from '../utils/get-youtube-and-spotify-suggestions-for.js'; +import KeyValueCacheProvider from '../services/key-value-cache.js'; +import {ONE_HOUR_IN_SECONDS} from '../utils/constants.js'; @injectable() export default class implements Command { @@ -35,10 +39,14 @@ export default class implements Command { private readonly playerManager: PlayerManager; private readonly getSongs: GetSongs; + private readonly spotify: Spotify; + private readonly cache: KeyValueCacheProvider; - constructor(@inject(TYPES.Managers.Player) playerManager: PlayerManager, @inject(TYPES.Services.GetSongs) getSongs: GetSongs) { + constructor(@inject(TYPES.Managers.Player) playerManager: PlayerManager, @inject(TYPES.Services.GetSongs) getSongs: GetSongs, @inject(TYPES.ThirdParty) thirdParty: ThirdParty, @inject(TYPES.KeyValueCache) cache: KeyValueCacheProvider) { this.playerManager = playerManager; this.getSongs = getSongs; + this.spotify = thirdParty.spotify; + this.cache = cache; } // eslint-disable-next-line complexity @@ -201,9 +209,16 @@ export default class implements Command { return interaction.respond([]); } - await interaction.respond((await getYouTubeSuggestionsFor(query)).map(s => ({ - name: s, - value: s, - }))); + const suggestions = await this.cache.wrap( + getYouTubeAndSpotifySuggestionsFor, + query, + this.spotify, + 10, + { + expiresIn: ONE_HOUR_IN_SECONDS, + key: `autocomplete:${query}`, + }); + + await interaction.respond(suggestions); } } diff --git a/src/services/get-songs.ts b/src/services/get-songs.ts index 780f7ec..996a638 100644 --- a/src/services/get-songs.ts +++ b/src/services/get-songs.ts @@ -15,12 +15,10 @@ import {cleanUrl} from '../utils/url.js'; import ThirdParty from './third-party.js'; import Config from './config.js'; import KeyValueCacheProvider from './key-value-cache.js'; +import {ONE_HOUR_IN_SECONDS, ONE_MINUTE_IN_SECONDS} from '../utils/constants.js'; type QueuedSongWithoutChannel = Except; -const ONE_HOUR_IN_SECONDS = 60 * 60; -const ONE_MINUTE_IN_SECONDS = 1 * 60; - @injectable() export default class { private readonly youtube: YouTube; diff --git a/src/utils/constants.ts b/src/utils/constants.ts new file mode 100644 index 0000000..70d9e2c --- /dev/null +++ b/src/utils/constants.ts @@ -0,0 +1,2 @@ +export const ONE_HOUR_IN_SECONDS = 60 * 60; +export const ONE_MINUTE_IN_SECONDS = 1 * 60; diff --git a/src/utils/get-youtube-and-spotify-suggestions-for.ts b/src/utils/get-youtube-and-spotify-suggestions-for.ts new file mode 100644 index 0000000..10f9394 --- /dev/null +++ b/src/utils/get-youtube-and-spotify-suggestions-for.ts @@ -0,0 +1,70 @@ +import {ApplicationCommandOptionChoice} from 'discord.js'; +import SpotifyWebApi from 'spotify-web-api-node'; +import getYouTubeSuggestionsFor from './get-youtube-suggestions-for.js'; + +const filterDuplicates = (items: T[]) => { + const results: T[] = []; + + for (const item of items) { + if (!results.some(result => result.name === item.name)) { + results.push(item); + } + } + + return results; +}; + +const getYouTubeAndSpotifySuggestionsFor = async (query: string, spotify: SpotifyWebApi, limit = 10): Promise => { + const [youtubeSuggestions, spotifyResults] = await Promise.all([ + getYouTubeSuggestionsFor(query), + spotify.search(query, ['track', 'album'], {limit: 5}), + ]); + + const totalYouTubeResults = youtubeSuggestions.length; + + const spotifyAlbums = filterDuplicates(spotifyResults.body.albums?.items ?? []); + const spotifyTracks = filterDuplicates(spotifyResults.body.tracks?.items ?? []); + + const totalSpotifyResults = spotifyAlbums.length + spotifyTracks.length; + + // Number of results for each source should be roughly the same. + // If we don't have enough Spotify suggestions, prioritize YouTube results. + const maxSpotifySuggestions = Math.floor(limit / 2); + const numOfSpotifySuggestions = Math.min(maxSpotifySuggestions, totalSpotifyResults); + + const maxYouTubeSuggestions = limit - numOfSpotifySuggestions; + const numOfYouTubeSuggestions = Math.min(maxYouTubeSuggestions, totalYouTubeResults); + + const suggestions: ApplicationCommandOptionChoice[] = []; + + suggestions.push( + ...youtubeSuggestions + .slice(0, numOfYouTubeSuggestions) + .map(suggestion => ({ + name: `YouTube: ${suggestion}`, + value: suggestion, + }), + )); + + const maxSpotifyAlbums = Math.floor(numOfSpotifySuggestions / 2); + const numOfSpotifyAlbums = Math.min(maxSpotifyAlbums, spotifyResults.body.albums?.items.length ?? 0); + const maxSpotifyTracks = numOfSpotifySuggestions - numOfSpotifyAlbums; + + suggestions.push( + ...spotifyAlbums.slice(0, maxSpotifyAlbums).map(album => ({ + name: `Spotify: đŸ’ŋ ${album.name}${album.artists.length > 0 ? ` - ${album.artists[0].name}` : ''}`, + value: `spotify:album:${album.id}`, + })), + ); + + suggestions.push( + ...spotifyTracks.slice(0, maxSpotifyTracks).map(track => ({ + name: `Spotify: đŸŽĩ ${track.name}${track.artists.length > 0 ? ` - ${track.artists[0].name}` : ''}`, + value: `spotify:track:${track.id}`, + })), + ); + + return suggestions; +}; + +export default getYouTubeAndSpotifySuggestionsFor; From 2e5e509b3233b1eb6c2b5834308d0cecfbb58634 Mon Sep 17 00:00:00 2001 From: Max Isom Date: Wed, 26 Jan 2022 22:30:58 -0500 Subject: [PATCH 36/47] Throw errors in command handlers --- package.json | 1 - src/commands/disconnect.ts | 8 +------- src/commands/fseek.ts | 29 ++++------------------------- src/commands/pause.ts | 7 +------ src/commands/remove.ts | 11 ++--------- src/commands/seek.ts | 19 +++---------------- src/commands/shuffle.ts | 7 +------ src/commands/skip.ts | 5 ++--- src/commands/unskip.ts | 6 +----- src/services/player.ts | 20 +++----------------- yarn.lock | 5 ----- 11 files changed, 18 insertions(+), 100 deletions(-) diff --git a/package.json b/package.json index 3fdc256..554c400 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,6 @@ "release-it": "^14.11.8", "ts-node": "^10.4.0", "type-fest": "^2.8.0", - "typed-emitter": "^1.4.0", "typescript": "^4.5.4" }, "eslintConfig": { diff --git a/src/commands/disconnect.ts b/src/commands/disconnect.ts index c63f9a2..4df76db 100644 --- a/src/commands/disconnect.ts +++ b/src/commands/disconnect.ts @@ -3,7 +3,6 @@ import {SlashCommandBuilder} from '@discordjs/builders'; import {TYPES} from '../types.js'; import {inject, injectable} from 'inversify'; import PlayerManager from '../managers/player.js'; -import errorMsg from '../utils/error-msg.js'; import Command from '.'; @injectable() @@ -24,12 +23,7 @@ export default class implements Command { const player = this.playerManager.get(interaction.guild!.id); if (!player.voiceConnection) { - await interaction.reply({ - content: errorMsg('not connected'), - ephemeral: true, - }); - - return; + throw new Error('not connected'); } player.disconnect(); diff --git a/src/commands/fseek.ts b/src/commands/fseek.ts index f4f1172..985a7c4 100644 --- a/src/commands/fseek.ts +++ b/src/commands/fseek.ts @@ -3,7 +3,6 @@ import {SlashCommandBuilder} from '@discordjs/builders'; import {TYPES} from '../types.js'; import {inject, injectable} from 'inversify'; import PlayerManager from '../managers/player.js'; -import errorMsg from '../utils/error-msg.js'; import Command from '.'; import {prettyTime} from '../utils/time.js'; @@ -31,41 +30,21 @@ export default class implements Command { const currentSong = player.getCurrent(); if (!currentSong) { - await interaction.reply({ - content: errorMsg('nothing is playing'), - ephemeral: true, - }); - - return; + throw new Error('nothing is playing'); } if (currentSong.isLive) { - await interaction.reply({ - content: errorMsg('can\'t seek in a livestream'), - ephemeral: true, - }); - - return; + throw new Error('can\'t seek in a livestream'); } const seekTime = interaction.options.getNumber('seconds'); if (!seekTime) { - await interaction.reply({ - content: errorMsg('missing number of seconds to seek'), - ephemeral: true, - }); - - return; + throw new Error('missing number of seconds to seek'); } if (seekTime + player.getPosition() > currentSong.length) { - await interaction.reply({ - content: errorMsg('can\'t seek past the end of the song'), - ephemeral: true, - }); - - return; + throw new Error('can\'t seek past the end of the song'); } await Promise.all([ diff --git a/src/commands/pause.ts b/src/commands/pause.ts index 5d87b87..fc98bdf 100644 --- a/src/commands/pause.ts +++ b/src/commands/pause.ts @@ -4,7 +4,6 @@ import {TYPES} from '../types.js'; import {inject, injectable} from 'inversify'; import PlayerManager from '../managers/player.js'; import {STATUS} from '../services/player.js'; -import errorMsg from '../utils/error-msg.js'; import Command from '.'; @injectable() @@ -25,11 +24,7 @@ export default class implements Command { const player = this.playerManager.get(interaction.guild!.id); if (player.status !== STATUS.PLAYING) { - await interaction.reply({ - content: errorMsg('not currently playing'), - ephemeral: true, - }); - return; + throw new Error('not currently playing'); } player.pause(); diff --git a/src/commands/remove.ts b/src/commands/remove.ts index c58fbdf..55c416f 100644 --- a/src/commands/remove.ts +++ b/src/commands/remove.ts @@ -3,7 +3,6 @@ import {inject, injectable} from 'inversify'; import {TYPES} from '../types.js'; import PlayerManager from '../managers/player.js'; import Command from '.'; -import errorMsg from '../utils/error-msg.js'; import {SlashCommandBuilder} from '@discordjs/builders'; @injectable() @@ -34,17 +33,11 @@ export default class implements Command { const range = interaction.options.getInteger('range') ?? 1; if (position < 1) { - await interaction.reply({ - content: errorMsg('position must be greater than 0'), - ephemeral: true, - }); + throw new Error('position must be at least 1'); } if (range < 1) { - await interaction.reply({ - content: errorMsg('range must be greater than 0'), - ephemeral: true, - }); + throw new Error('range must be at least 1'); } player.removeFromQueue(position, range); diff --git a/src/commands/seek.ts b/src/commands/seek.ts index ecfde64..07f6590 100644 --- a/src/commands/seek.ts +++ b/src/commands/seek.ts @@ -2,7 +2,6 @@ import {CommandInteraction} from 'discord.js'; import {TYPES} from '../types.js'; import {inject, injectable} from 'inversify'; import PlayerManager from '../managers/player.js'; -import errorMsg from '../utils/error-msg.js'; import Command from '.'; import {parseTime, prettyTime} from '../utils/time.js'; import {SlashCommandBuilder} from '@discordjs/builders'; @@ -32,19 +31,11 @@ export default class implements Command { const currentSong = player.getCurrent(); if (!currentSong) { - await interaction.reply({ - content: errorMsg('nothing is playing'), - ephemeral: true, - }); - return; + throw new Error('nothing is playing'); } if (currentSong.isLive) { - await interaction.reply({ - content: errorMsg('can\'t seek in a livestream'), - ephemeral: true, - }); - return; + throw new Error('can\'t seek in a livestream'); } const time = interaction.options.getString('time')!; @@ -58,11 +49,7 @@ export default class implements Command { } if (seekTime > currentSong.length) { - await interaction.reply({ - content: errorMsg('can\'t seek past the end of the song'), - ephemeral: true, - }); - return; + throw new Error('can\'t seek past the end of the song'); } await Promise.all([ diff --git a/src/commands/shuffle.ts b/src/commands/shuffle.ts index 9c0a664..e27f1e2 100644 --- a/src/commands/shuffle.ts +++ b/src/commands/shuffle.ts @@ -2,7 +2,6 @@ import {CommandInteraction} from 'discord.js'; import {TYPES} from '../types.js'; import {inject, injectable} from 'inversify'; import PlayerManager from '../managers/player.js'; -import errorMsg from '../utils/error-msg.js'; import Command from '.'; import {SlashCommandBuilder} from '@discordjs/builders'; @@ -24,11 +23,7 @@ export default class implements Command { const player = this.playerManager.get(interaction.guild!.id); if (player.isQueueEmpty()) { - await interaction.reply({ - content: errorMsg('not enough songs to shuffle'), - ephemeral: true, - }); - return; + throw new Error('not enough songs to shuffle'); } player.shuffle(); diff --git a/src/commands/skip.ts b/src/commands/skip.ts index cfcd605..4c51e77 100644 --- a/src/commands/skip.ts +++ b/src/commands/skip.ts @@ -3,7 +3,6 @@ import {TYPES} from '../types.js'; import {inject, injectable} from 'inversify'; import PlayerManager from '../managers/player.js'; import Command from '.'; -import errorMsg from '../utils/error-msg.js'; import {SlashCommandBuilder} from '@discordjs/builders'; import {buildPlayingMessageEmbed} from '../utils/build-embed.js'; @@ -29,7 +28,7 @@ export default class implements Command { const numToSkip = interaction.options.getInteger('skip') ?? 1; if (numToSkip < 1) { - await interaction.reply({content: errorMsg('invalid number of songs to skip'), ephemeral: true}); + throw new Error('invalid number of songs to skip'); } const player = this.playerManager.get(interaction.guild!.id); @@ -41,7 +40,7 @@ export default class implements Command { embeds: player.getCurrent() ? [buildPlayingMessageEmbed(player)] : [], }); } catch (_: unknown) { - await interaction.reply({content: errorMsg('no song to skip to'), ephemeral: true}); + throw new Error('no song to skip to'); } } } diff --git a/src/commands/unskip.ts b/src/commands/unskip.ts index b1947b8..17d6489 100644 --- a/src/commands/unskip.ts +++ b/src/commands/unskip.ts @@ -2,7 +2,6 @@ import {CommandInteraction} from 'discord.js'; import {TYPES} from '../types.js'; import {inject, injectable} from 'inversify'; import PlayerManager from '../managers/player.js'; -import errorMsg from '../utils/error-msg.js'; import Command from '.'; import {SlashCommandBuilder} from '@discordjs/builders'; import {buildPlayingMessageEmbed} from '../utils/build-embed.js'; @@ -31,10 +30,7 @@ export default class implements Command { embeds: player.getCurrent() ? [buildPlayingMessageEmbed(player)] : [], }); } catch (_: unknown) { - await interaction.reply({ - content: errorMsg('no song to go back to'), - ephemeral: true, - }); + throw new Error('no song to go back to'); } } } diff --git a/src/services/player.ts b/src/services/player.ts index 9257d98..871b1c1 100644 --- a/src/services/player.ts +++ b/src/services/player.ts @@ -1,7 +1,5 @@ import {VoiceChannel, Snowflake, Client, TextChannel} from 'discord.js'; import {Readable} from 'stream'; -import EventEmitter from 'events'; -import TypedEmitter from 'typed-emitter'; import hasha from 'hasha'; import ytdl from 'ytdl-core'; import {WriteStream} from 'fs-capacitor'; @@ -37,8 +35,10 @@ export interface PlayerEvents { statusChange: (oldStatus: STATUS, newStatus: STATUS) => void; } -export default class extends (EventEmitter as new () => TypedEmitter) { +export default class { public voiceConnection: VoiceConnection | null = null; + public status = STATUS.PAUSED; + private queue: QueuedSong[] = []; private queuePosition = 0; private audioPlayer: AudioPlayer | null = null; @@ -47,14 +47,11 @@ export default class extends (EventEmitter as new () => TypedEmitter TypedEmitter Date: Wed, 26 Jan 2022 22:34:51 -0500 Subject: [PATCH 37/47] Remove natural langauge handlers --- src/inversify.config.ts | 2 - src/services/natural-language-commands.ts | 131 ---------------------- 2 files changed, 133 deletions(-) delete mode 100644 src/services/natural-language-commands.ts diff --git a/src/inversify.config.ts b/src/inversify.config.ts index b2a18fb..a1187a9 100644 --- a/src/inversify.config.ts +++ b/src/inversify.config.ts @@ -10,7 +10,6 @@ import PlayerManager from './managers/player.js'; // Helpers import GetSongs from './services/get-songs.js'; -import NaturalLanguage from './services/natural-language-commands.js'; // Comands import Command from './commands'; @@ -48,7 +47,6 @@ container.bind(TYPES.Managers.Player).to(PlayerManager).inSinglet // Helpers container.bind(TYPES.Services.GetSongs).to(GetSongs).inSingletonScope(); -container.bind(TYPES.Services.NaturalLanguage).to(NaturalLanguage).inSingletonScope(); // Commands [ diff --git a/src/services/natural-language-commands.ts b/src/services/natural-language-commands.ts deleted file mode 100644 index 4ce8ea3..0000000 --- a/src/services/natural-language-commands.ts +++ /dev/null @@ -1,131 +0,0 @@ -import {inject, injectable} from 'inversify'; -import {Message, Guild, GuildMember} from 'discord.js'; -import {TYPES} from '../types.js'; -import PlayerManager from '../managers/player.js'; -import {QueuedSong} from '../services/player.js'; -import {getMostPopularVoiceChannel, getMemberVoiceChannel} from '../utils/channels.js'; - -@injectable() -export default class { - private readonly playerManager: PlayerManager; - - constructor(@inject(TYPES.Managers.Player) playerManager: PlayerManager) { - this.playerManager = playerManager; - } - - async execute(msg: Message): Promise { - if (msg.content.startsWith('say') && msg.content.endsWith('muse')) { - const res = msg.content.slice(3, msg.content.indexOf('muse')).trim(); - - await msg.channel.send(res); - return true; - } - - if (msg.content.toLowerCase().includes('packers')) { - await Promise.all([ - msg.channel.send('GO PACKERS GO!!!'), - this.playClip(msg.guild!, msg.member!, { - title: 'GO PACKERS!', - artist: 'Unknown', - url: 'https://www.youtube.com/watch?v=qkdtID7mY3E', - length: 204, - playlist: null, - isLive: false, - addedInChannelId: msg.channel.id, - thumbnailUrl: null, - requestedBy: msg.author.id, - }, 8, 10), - ]); - - return true; - } - - if (msg.content.toLowerCase().includes('bears')) { - await Promise.all([ - msg.channel.send('F*** THE BEARS'), - this.playClip(msg.guild!, msg.member!, { - title: 'GO PACKERS!', - artist: 'Charlie Berens', - url: 'https://www.youtube.com/watch?v=UaqlE9Pyy_Q', - length: 385, - playlist: null, - isLive: false, - addedInChannelId: msg.channel.id, - thumbnailUrl: null, - requestedBy: msg.author.id, - }, 358, 5.5), - ]); - - return true; - } - - if (msg.content.toLowerCase().includes('bitconnect')) { - await Promise.all([ - msg.channel.send('🌊 🌊 🌊 🌊'), - this.playClip(msg.guild!, msg.member!, { - title: 'BITCONNEEECCT', - artist: 'Carlos Matos', - url: 'https://www.youtube.com/watch?v=lCcwn6bGUtU', - length: 227, - playlist: null, - isLive: false, - addedInChannelId: msg.channel.id, - thumbnailUrl: null, - requestedBy: msg.author.id, - }, 50, 13), - ]); - - return true; - } - - return false; - } - - private async playClip(guild: Guild, member: GuildMember, song: QueuedSong, position: number, duration: number): Promise { - const player = this.playerManager.get(guild.id); - - const [channel, n] = getMemberVoiceChannel(member) ?? getMostPopularVoiceChannel(guild); - - if (!player.voiceConnection && n === 0) { - return; - } - - if (!player.voiceConnection) { - await player.connect(channel); - } - - const isPlaying = player.getCurrent() !== null; - let oldPosition = 0; - - player.add(song, {immediate: true}); - - if (isPlaying) { - oldPosition = player.getPosition(); - - player.manualForward(1); - } - - await player.seek(position); - - return new Promise((resolve, reject) => { - try { - setTimeout(async () => { - if (player.getCurrent()?.title === song.title) { - player.removeCurrent(); - - if (isPlaying) { - await player.back(); - await player.seek(oldPosition); - } else { - player.disconnect(); - } - } - - resolve(); - }, duration * 1000); - } catch (error: unknown) { - reject(error); - } - }); - } -} From 8e00726dc2c8179c7aa03f72e96544e78b4fb001 Mon Sep 17 00:00:00 2001 From: Max Isom Date: Thu, 27 Jan 2022 21:26:00 -0500 Subject: [PATCH 38/47] Add /favorites --- .../migration.sql | 10 + .../migration.sql | 10 + .../migration.sql | 8 + .../migration.sql | 11 + .../migration.sql | 21 ++ package.json | 4 +- schema.prisma | 13 +- src/bot.ts | 30 ++- src/commands/favorites.ts | 191 ++++++++++++++++++ src/commands/index.ts | 6 +- src/commands/play.ts | 178 ++-------------- src/events/guild-create.ts | 105 ++-------- src/inversify.config.ts | 8 +- src/managers/player.ts | 2 +- src/scripts/run-with-database-url.ts | 6 +- src/services/add-query-to-queue.ts | 155 ++++++++++++++ src/services/player.ts | 4 +- src/types.ts | 2 +- yarn.lock | 4 +- 19 files changed, 478 insertions(+), 290 deletions(-) create mode 100644 migrations/20220128000207_add_favorite_query_model/migration.sql create mode 100644 migrations/20220128000623_remove_shortcut_model/migration.sql create mode 100644 migrations/20220128003935_make_favorite_query_name_unqiue/migration.sql create mode 100644 migrations/20220128012347_fix_unique_constraint/migration.sql create mode 100644 migrations/20220128020826_remove_prefix_from_setting/migration.sql create mode 100644 src/commands/favorites.ts create mode 100644 src/services/add-query-to-queue.ts diff --git a/migrations/20220128000207_add_favorite_query_model/migration.sql b/migrations/20220128000207_add_favorite_query_model/migration.sql new file mode 100644 index 0000000..ec69910 --- /dev/null +++ b/migrations/20220128000207_add_favorite_query_model/migration.sql @@ -0,0 +1,10 @@ +-- CreateTable +CREATE TABLE "FavoriteQuery" ( + "id" INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, + "guildId" TEXT NOT NULL, + "authorId" TEXT NOT NULL, + "name" TEXT NOT NULL, + "query" TEXT NOT NULL, + "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" DATETIME NOT NULL +); diff --git a/migrations/20220128000623_remove_shortcut_model/migration.sql b/migrations/20220128000623_remove_shortcut_model/migration.sql new file mode 100644 index 0000000..469b453 --- /dev/null +++ b/migrations/20220128000623_remove_shortcut_model/migration.sql @@ -0,0 +1,10 @@ +/* + Warnings: + + - You are about to drop the `Shortcut` table. If the table is not empty, all the data it contains will be lost. + +*/ +-- DropTable +PRAGMA foreign_keys=off; +DROP TABLE "Shortcut"; +PRAGMA foreign_keys=on; diff --git a/migrations/20220128003935_make_favorite_query_name_unqiue/migration.sql b/migrations/20220128003935_make_favorite_query_name_unqiue/migration.sql new file mode 100644 index 0000000..39fb6f7 --- /dev/null +++ b/migrations/20220128003935_make_favorite_query_name_unqiue/migration.sql @@ -0,0 +1,8 @@ +/* + Warnings: + + - A unique constraint covering the columns `[name]` on the table `FavoriteQuery` will be added. If there are existing duplicate values, this will fail. + +*/ +-- CreateIndex +CREATE UNIQUE INDEX "FavoriteQuery_name_key" ON "FavoriteQuery"("name"); diff --git a/migrations/20220128012347_fix_unique_constraint/migration.sql b/migrations/20220128012347_fix_unique_constraint/migration.sql new file mode 100644 index 0000000..f777d06 --- /dev/null +++ b/migrations/20220128012347_fix_unique_constraint/migration.sql @@ -0,0 +1,11 @@ +/* + Warnings: + + - A unique constraint covering the columns `[guildId,name]` on the table `FavoriteQuery` will be added. If there are existing duplicate values, this will fail. + +*/ +-- DropIndex +DROP INDEX "FavoriteQuery_name_key"; + +-- CreateIndex +CREATE UNIQUE INDEX "FavoriteQuery_guildId_name_key" ON "FavoriteQuery"("guildId", "name"); diff --git a/migrations/20220128020826_remove_prefix_from_setting/migration.sql b/migrations/20220128020826_remove_prefix_from_setting/migration.sql new file mode 100644 index 0000000..c06286b --- /dev/null +++ b/migrations/20220128020826_remove_prefix_from_setting/migration.sql @@ -0,0 +1,21 @@ +/* + Warnings: + + - You are about to drop the column `finishedSetup` on the `Setting` table. All the data in the column will be lost. + - You are about to drop the column `prefix` on the `Setting` table. All the data in the column will be lost. + +*/ +-- RedefineTables +PRAGMA foreign_keys=OFF; +CREATE TABLE "new_Setting" ( + "guildId" TEXT NOT NULL PRIMARY KEY, + "channel" TEXT, + "playlistLimit" INTEGER NOT NULL DEFAULT 50, + "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" DATETIME NOT NULL +); +INSERT INTO "new_Setting" ("channel", "createdAt", "guildId", "playlistLimit", "updatedAt") SELECT "channel", "createdAt", "guildId", "playlistLimit", "updatedAt" FROM "Setting"; +DROP TABLE "Setting"; +ALTER TABLE "new_Setting" RENAME TO "Setting"; +PRAGMA foreign_key_check; +PRAGMA foreign_keys=ON; diff --git a/package.json b/package.json index 554c400..831b368 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,7 @@ "eslint-config-xo-typescript": "^0.44.0", "husky": "^4.3.8", "nodemon": "^2.0.7", - "prisma": "^3.7.0", + "prisma": "^3.8.1", "release-it": "^14.11.8", "ts-node": "^10.4.0", "type-fest": "^2.8.0", @@ -85,7 +85,7 @@ "@discordjs/opus": "^0.7.0", "@discordjs/rest": "^0.1.0-canary.0", "@discordjs/voice": "^0.7.5", - "@prisma/client": "^3.7.0", + "@prisma/client": "^3.8.1", "@types/libsodium-wrappers": "^0.7.9", "array-shuffle": "^3.0.0", "debug": "^4.3.3", diff --git a/schema.prisma b/schema.prisma index 95ce596..bf61bd7 100644 --- a/schema.prisma +++ b/schema.prisma @@ -25,25 +25,20 @@ model KeyValueCache { model Setting { guildId String @id - prefix String channel String? - finishedSetup Boolean @default(false) playlistLimit Int @default(50) createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } -model Shortcut { +model FavoriteQuery { id Int @id @default(autoincrement()) guildId String authorId String - shortcut String - command String + name String + query String createdAt DateTime @default(now()) updatedAt DateTime @updatedAt - - @@index([shortcut], map: "shortcuts_shortcut") - @@index([guildId], map: "shortcuts_guild_id") - @@index([guildId, shortcut]) + @@unique([guildId, name]) } diff --git a/src/bot.ts b/src/bot.ts index f89fad5..3ba15bc 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -35,16 +35,25 @@ export default class { public async register(): Promise { // Load in commands - container.getAll(TYPES.Command).forEach(command => { - // TODO: remove ! - if (command.slashCommand?.name) { + for (const command of container.getAll(TYPES.Command)) { + // Make sure we can serialize to JSON without errors + try { + command.slashCommand.toJSON(); + } catch (error) { + console.error(error); + throw new Error(`Could not serialize /${command.slashCommand.name ?? ''} to JSON`); + } + + if (command.slashCommand.name) { this.commandsByName.set(command.slashCommand.name, command); } if (command.handledButtonIds) { - command.handledButtonIds.forEach(id => this.commandsByButtonId.set(id, command)); + for (const buttonId of command.handledButtonIds) { + this.commandsByButtonId.set(buttonId, command); + } } - }); + } // Register event handlers this.client.on('interactionCreate', async interaction => { @@ -61,7 +70,9 @@ export default class { return; } - if (command.requiresVC && interaction.member && !isUserInVoice(interaction.guild, interaction.member.user as User)) { + const requiresVC = command.requiresVC instanceof Function ? command.requiresVC(interaction) : command.requiresVC; + + if (requiresVC && interaction.member && !isUserInVoice(interaction.guild, interaction.member.user as User)) { await interaction.reply({content: errorMsg('gotta be in a voice channel'), ephemeral: true}); return; } @@ -122,13 +133,16 @@ export default class { } else { spinner.text = '📡 updating commands in all guilds...'; - await Promise.all( - this.client.guilds.cache.map(async guild => { + await Promise.all([ + ...this.client.guilds.cache.map(async guild => { await rest.put( Routes.applicationGuildCommands(this.client.user!.id, guild.id), {body: this.commandsByName.map(command => command.slashCommand.toJSON())}, ); }), + // Remove commands registered on bot (if they exist) + rest.put(Routes.applicationCommands(this.client.user!.id), {body: []}), + ], ); } diff --git a/src/commands/favorites.ts b/src/commands/favorites.ts new file mode 100644 index 0000000..b15a5c9 --- /dev/null +++ b/src/commands/favorites.ts @@ -0,0 +1,191 @@ +import {SlashCommandBuilder} from '@discordjs/builders'; +import {AutocompleteInteraction, CommandInteraction, MessageEmbed} from 'discord.js'; +import {inject, injectable} from 'inversify'; +import Command from '.'; +import AddQueryToQueue from '../services/add-query-to-queue.js'; +import {TYPES} from '../types.js'; +import {prisma} from '../utils/db.js'; + +@injectable() +export default class implements Command { + public readonly slashCommand = new SlashCommandBuilder() + .setName('favorites') + .setDescription('adds a song to your favorites') + .addSubcommand(subcommand => subcommand + .setName('use') + .setDescription('use a favorite') + .addStringOption(option => option + .setName('name') + .setDescription('name of favorite') + .setRequired(true) + .setAutocomplete(true)) + .addBooleanOption(option => option + .setName('immediate') + .setDescription('add track to the front of the queue')) + .addBooleanOption(option => option + .setName('shuffle') + .setDescription('shuffle the input if you\'re adding multiple tracks'))) + .addSubcommand(subcommand => subcommand + .setName('list') + .setDescription('list all favorites')) + .addSubcommand(subcommand => subcommand + .setName('create') + .setDescription('create a new favorite') + .addStringOption(option => option + .setName('name') + .setDescription('you\'ll type this when using this favorite') + .setRequired(true)) + .addStringOption(option => option + .setName('query') + .setDescription('any input you\'d normally give to the play command') + .setRequired(true), + )) + .addSubcommand(subcommand => subcommand + .setName('remove') + .setDescription('remove a favorite') + .addStringOption(option => option + .setName('name') + .setDescription('name of favorite') + .setAutocomplete(true) + .setRequired(true), + ), + ); + + constructor(@inject(TYPES.Services.AddQueryToQueue) private readonly addQueryToQueue: AddQueryToQueue) {} + + requiresVC = (interaction: CommandInteraction) => interaction.options.getSubcommand() === 'use'; + + async execute(interaction: CommandInteraction) { + switch (interaction.options.getSubcommand()) { + case 'use': + await this.use(interaction); + break; + case 'list': + await this.list(interaction); + break; + case 'create': + await this.create(interaction); + break; + case 'remove': + await this.remove(interaction); + break; + default: + throw new Error('unknown subcommand'); + } + } + + async handleAutocompleteInteraction(interaction: AutocompleteInteraction) { + const query = interaction.options.getString('name')!.trim(); + + const favorites = await prisma.favoriteQuery.findMany({ + where: { + guildId: interaction.guild!.id, + }, + }); + + const names = favorites.map(favorite => favorite.name); + + const results = query === '' ? names : names.filter(name => name.startsWith(query)); + + await interaction.respond(results.map(r => ({ + name: r, + value: r, + }))); + } + + private async use(interaction: CommandInteraction) { + const name = interaction.options.getString('name')!.trim(); + + const favorite = await prisma.favoriteQuery.findFirst({ + where: { + name, + guildId: interaction.guild!.id, + }, + }); + + if (!favorite) { + throw new Error('no favorite with that name exists'); + } + + await this.addQueryToQueue.addToQueue({ + interaction, + query: favorite.query, + shuffleAdditions: interaction.options.getBoolean('shuffle') ?? false, + addToFrontOfQueue: interaction.options.getBoolean('immediate') ?? false, + }); + } + + private async list(interaction: CommandInteraction) { + const favorites = await prisma.favoriteQuery.findMany({ + where: { + guildId: interaction.guild!.id, + }, + }); + + if (favorites.length === 0) { + await interaction.reply('there aren\'t any favorites yet'); + return; + } + + const embed = new MessageEmbed().setTitle('Favorites'); + + let description = ''; + for (const favorite of favorites) { + description += `**${favorite.name}**: ${favorite.query} (<@${favorite.authorId}>)\n`; + } + + embed.setDescription(description); + + await interaction.reply({ + embeds: [embed], + }); + } + + private async create(interaction: CommandInteraction) { + const name = interaction.options.getString('name')!.trim(); + const query = interaction.options.getString('query')!.trim(); + + const existingFavorite = await prisma.favoriteQuery.findFirst({where: { + guildId: interaction.guild!.id, + name, + }}); + + if (existingFavorite) { + throw new Error('a favorite with that name already exists'); + } + + await prisma.favoriteQuery.create({ + data: { + authorId: interaction.member!.user.id, + guildId: interaction.guild!.id, + name, + query, + }, + }); + + await interaction.reply('👍 favorite created'); + } + + private async remove(interaction: CommandInteraction) { + const name = interaction.options.getString('name')!.trim(); + + const favorite = await prisma.favoriteQuery.findFirst({where: { + name, + guildId: interaction.guild!.id, + }}); + + if (!favorite) { + throw new Error('no favorite with that name exists'); + } + + const isUserGuildOwner = interaction.member!.user.id === interaction.guild!.ownerId; + + if (favorite.authorId !== interaction.member!.user.id && !isUserGuildOwner) { + throw new Error('you can only remove your own favorites'); + } + + await prisma.favoriteQuery.delete({where: {id: favorite.id}}); + + await interaction.reply('👍 favorite removed'); + } +} diff --git a/src/commands/index.ts b/src/commands/index.ts index 1d1646f..02349d2 100644 --- a/src/commands/index.ts +++ b/src/commands/index.ts @@ -1,10 +1,10 @@ -import {SlashCommandBuilder} from '@discordjs/builders'; +import {SlashCommandBuilder, SlashCommandSubcommandsOnlyBuilder} from '@discordjs/builders'; import {AutocompleteInteraction, ButtonInteraction, CommandInteraction} from 'discord.js'; export default interface Command { - readonly slashCommand: Partial & Pick; + readonly slashCommand: Partial & Pick; readonly handledButtonIds?: readonly string[]; - readonly requiresVC?: boolean; + readonly requiresVC?: boolean | ((interaction: CommandInteraction) => boolean); execute: (interaction: CommandInteraction) => Promise; handleButtonInteraction?: (interaction: ButtonInteraction) => Promise; handleAutocompleteInteraction?: (interaction: AutocompleteInteraction) => Promise; diff --git a/src/commands/play.ts b/src/commands/play.ts index d1ab940..e8d565c 100644 --- a/src/commands/play.ts +++ b/src/commands/play.ts @@ -1,22 +1,15 @@ -import {AutocompleteInteraction, CommandInteraction, GuildMember} from 'discord.js'; +import {AutocompleteInteraction, CommandInteraction} from 'discord.js'; import {URL} from 'url'; -import {Except} from 'type-fest'; import {SlashCommandBuilder} from '@discordjs/builders'; -import shuffle from 'array-shuffle'; import {inject, injectable} from 'inversify'; import Spotify from 'spotify-web-api-node'; import Command from '.'; import {TYPES} from '../types.js'; -import {QueuedSong, STATUS} from '../services/player.js'; -import PlayerManager from '../managers/player.js'; -import {getMostPopularVoiceChannel, getMemberVoiceChannel} from '../utils/channels.js'; -import GetSongs from '../services/get-songs.js'; -import {prisma} from '../utils/db.js'; import ThirdParty from '../services/third-party.js'; import getYouTubeAndSpotifySuggestionsFor from '../utils/get-youtube-and-spotify-suggestions-for.js'; import KeyValueCacheProvider from '../services/key-value-cache.js'; import {ONE_HOUR_IN_SECONDS} from '../utils/constants.js'; -import {buildPlayingMessageEmbed} from '../utils/build-embed.js'; +import AddQueryToQueue from '../services/add-query-to-queue.js'; @injectable() export default class implements Command { @@ -30,178 +23,31 @@ export default class implements Command { .setAutocomplete(true)) .addBooleanOption(option => option .setName('immediate') - .setDescription('adds track to the front of the queue')) + .setDescription('add track to the front of the queue')) .addBooleanOption(option => option .setName('shuffle') - .setDescription('shuffles the input if it\'s a playlist')); + .setDescription('shuffle the input if you\'re adding multiple tracks')); public requiresVC = true; - private readonly playerManager: PlayerManager; - private readonly getSongs: GetSongs; private readonly spotify: Spotify; private readonly cache: KeyValueCacheProvider; + private readonly addQueryToQueue: AddQueryToQueue; - constructor(@inject(TYPES.Managers.Player) playerManager: PlayerManager, @inject(TYPES.Services.GetSongs) getSongs: GetSongs, @inject(TYPES.ThirdParty) thirdParty: ThirdParty, @inject(TYPES.KeyValueCache) cache: KeyValueCacheProvider) { - this.playerManager = playerManager; - this.getSongs = getSongs; + constructor(@inject(TYPES.ThirdParty) thirdParty: ThirdParty, @inject(TYPES.KeyValueCache) cache: KeyValueCacheProvider, @inject(TYPES.Services.AddQueryToQueue) addQueryToQueue: AddQueryToQueue) { this.spotify = thirdParty.spotify; this.cache = cache; + this.addQueryToQueue = addQueryToQueue; } // eslint-disable-next-line complexity public async execute(interaction: CommandInteraction): Promise { - const [targetVoiceChannel] = getMemberVoiceChannel(interaction.member as GuildMember) ?? getMostPopularVoiceChannel(interaction.guild!); - - const settings = await prisma.setting.findUnique({where: {guildId: interaction.guild!.id}}); - - if (!settings) { - throw new Error('Could not find settings for guild'); - } - - const {playlistLimit} = settings; - - const player = this.playerManager.get(interaction.guild!.id); - const wasPlayingSong = player.getCurrent() !== null; - - const query = interaction.options.getString('query'); - - if (!query) { - if (player.status === STATUS.PLAYING) { - throw new Error('already playing, give me a song name'); - } - - // Must be resuming play - if (!wasPlayingSong) { - throw new Error('nothing to play'); - } - - await player.connect(targetVoiceChannel); - await player.play(); - - await interaction.reply({ - content: 'the stop-and-go light is now green', - embeds: [buildPlayingMessageEmbed(player)], - }); - - return; - } - - const addToFrontOfQueue = interaction.options.getBoolean('immediate'); - const shuffleAdditions = interaction.options.getBoolean('shuffle'); - - await interaction.deferReply(); - - let newSongs: Array> = []; - let extraMsg = ''; - - // Test if it's a complete URL - try { - const url = new URL(query); - - const YOUTUBE_HOSTS = [ - 'www.youtube.com', - 'youtu.be', - 'youtube.com', - 'music.youtube.com', - 'www.music.youtube.com', - ]; - - if (YOUTUBE_HOSTS.includes(url.host)) { - // YouTube source - if (url.searchParams.get('list')) { - // YouTube playlist - newSongs.push(...await this.getSongs.youtubePlaylist(url.searchParams.get('list')!)); - } else { - const song = await this.getSongs.youtubeVideo(url.href); - - if (song) { - newSongs.push(song); - } else { - throw new Error('that doesn\'t exist'); - } - } - } else if (url.protocol === 'spotify:' || url.host === 'open.spotify.com') { - const [convertedSongs, nSongsNotFound, totalSongs] = await this.getSongs.spotifySource(query, playlistLimit); - - if (totalSongs > playlistLimit) { - extraMsg = `a random sample of ${playlistLimit} songs was taken`; - } - - if (totalSongs > playlistLimit && nSongsNotFound !== 0) { - extraMsg += ' and '; - } - - if (nSongsNotFound !== 0) { - if (nSongsNotFound === 1) { - extraMsg += '1 song was not found'; - } else { - extraMsg += `${nSongsNotFound.toString()} songs were not found`; - } - } - - newSongs.push(...convertedSongs); - } - } catch (_: unknown) { - // Not a URL, must search YouTube - const song = await this.getSongs.youtubeVideoSearch(query); - - if (song) { - newSongs.push(song); - } else { - throw new Error('that doesn\'t exist'); - } - } - - if (newSongs.length === 0) { - throw new Error('no songs found'); - } - - if (shuffleAdditions) { - newSongs = shuffle(newSongs); - } - - newSongs.forEach(song => { - player.add({...song, addedInChannelId: interaction.channel!.id, requestedBy: interaction.member!.user.id}, {immediate: addToFrontOfQueue ?? false}); + await this.addQueryToQueue.addToQueue({ + interaction, + query: interaction.options.getString('query')!.trim(), + addToFrontOfQueue: interaction.options.getBoolean('immediate') ?? false, + shuffleAdditions: interaction.options.getBoolean('shuffle') ?? false, }); - - const firstSong = newSongs[0]; - - let statusMsg = ''; - - if (player.voiceConnection === null) { - await player.connect(targetVoiceChannel); - - // Resume / start playback - await player.play(); - - if (wasPlayingSong) { - statusMsg = 'resuming playback'; - } - - await interaction.editReply({ - embeds: [buildPlayingMessageEmbed(player)], - }); - } - - // Build response message - if (statusMsg !== '') { - if (extraMsg === '') { - extraMsg = statusMsg; - } else { - extraMsg = `${statusMsg}, ${extraMsg}`; - } - } - - if (extraMsg !== '') { - extraMsg = ` (${extraMsg})`; - } - - if (newSongs.length === 1) { - await interaction.editReply(`u betcha, **${firstSong.title}** added to the${addToFrontOfQueue ? ' front of the' : ''} queue${extraMsg}`); - } else { - await interaction.editReply(`u betcha, **${firstSong.title}** and ${newSongs.length - 1} other songs were added to the queue${extraMsg}`); - } } public async handleAutocompleteInteraction(interaction: AutocompleteInteraction): Promise { diff --git a/src/events/guild-create.ts b/src/events/guild-create.ts index 3cf94ea..8db7e2f 100644 --- a/src/events/guild-create.ts +++ b/src/events/guild-create.ts @@ -1,15 +1,11 @@ -import {Guild, TextChannel, Message, MessageReaction, User, ApplicationCommandData, -} from 'discord.js'; -import emoji from 'node-emoji'; -import pEvent from 'p-event'; -import {chunk} from '../utils/arrays.js'; +import {Guild, Client} from 'discord.js'; import container from '../inversify.config.js'; import Command from '../commands'; import {TYPES} from '../types.js'; import Config from '../services/config.js'; import {prisma} from '../utils/db.js'; - -const DEFAULT_PREFIX = '!'; +import {REST} from '@discordjs/rest'; +import {Routes} from 'discord-api-types/v9'; export default async (guild: Guild): Promise => { await prisma.setting.upsert({ @@ -18,99 +14,22 @@ export default async (guild: Guild): Promise => { }, create: { guildId: guild.id, - prefix: DEFAULT_PREFIX, - }, - update: { - prefix: DEFAULT_PREFIX, }, + update: {}, }); const config = container.get(TYPES.Config); // Setup slash commands if (!config.REGISTER_COMMANDS_ON_BOT) { - const commands: ApplicationCommandData[] = container.getAll(TYPES.Command) - .filter(command => command.slashCommand?.name) - .map(command => command.slashCommand as ApplicationCommandData); + const token = container.get(TYPES.Config).DISCORD_TOKEN; + const client = container.get(TYPES.Client); - await guild.commands.set(commands); + const rest = new REST({version: '9'}).setToken(token); + + await rest.put( + Routes.applicationGuildCommands(client.user!.id, guild.id), + {body: container.getAll(TYPES.Command).map(command => command.slashCommand.toJSON())}, + ); } - - const owner = await guild.client.users.fetch(guild.ownerId); - - let firstStep = '👋 Hi!\n'; - firstStep += 'I just need to ask a few questions before you start listening to music.\n\n'; - firstStep += 'First, what channel should I listen to for music commands?\n\n'; - - const firstStepMsg = await owner.send(firstStep); - - // Show emoji selector - interface EmojiChannel { - name: string; - id: string; - emoji: string; - } - - const emojiChannels: EmojiChannel[] = []; - - for (const [channelId, channel] of guild.channels.cache) { - if (channel.type === 'GUILD_TEXT') { - emojiChannels.push({ - name: channel.name, - id: channelId, - emoji: emoji.random().emoji, - }); - } - } - - const sentMessageIds: string[] = []; - - chunk(emojiChannels, 10).map(async chunk => { - let str = ''; - for (const channel of chunk) { - str += `${channel.emoji}: #${channel.name}\n`; - } - - const msg = await owner.send(str); - - sentMessageIds.push(msg.id); - - await Promise.all(chunk.map(async channel => msg.react(channel.emoji))); - }); - - // Wait for response from user - const [choice] = await pEvent(guild.client, 'messageReactionAdd', { - multiArgs: true, - filter: ([reaction, user]: [MessageReaction, User]) => sentMessageIds.includes(reaction.message.id) && user.id === owner.id, - }); - - const chosenChannel = emojiChannels.find(e => e.emoji === (choice as unknown as MessageReaction).emoji.name)!; - - // Second setup step (get prefix) - let secondStep = `👍 Cool, I'll listen to **#${chosenChannel.name}** \n\n`; - secondStep += 'Last question: what character should I use for a prefix? Type a single character and hit enter.'; - - await owner.send(secondStep); - - const prefixResponses = await firstStepMsg.channel.awaitMessages({filter: (r: Message) => r.content.length === 1, max: 1}); - - const prefixCharacter = prefixResponses.first()!.content; - - // Save settings - await prisma.setting.update({ - where: { - guildId: guild.id, - }, - data: { - channel: chosenChannel.id, - prefix: prefixCharacter, - }, - }); - - // Send welcome - const boundChannel = guild.client.channels.cache.get(chosenChannel.id) as TextChannel; - - await boundChannel.send(`hey <@${owner.id}> try \`\\play https://www.youtube.com/watch?v=dQw4w9WgXcQ\``); - - await firstStepMsg.channel.send(`Sounds good. Check out **#${chosenChannel.name}** to get started.`); }; diff --git a/src/inversify.config.ts b/src/inversify.config.ts index a1187a9..f423614 100644 --- a/src/inversify.config.ts +++ b/src/inversify.config.ts @@ -8,13 +8,15 @@ import ConfigProvider from './services/config.js'; // Managers import PlayerManager from './managers/player.js'; -// Helpers +// Services +import AddQueryToQueue from './services/add-query-to-queue.js'; import GetSongs from './services/get-songs.js'; // Comands import Command from './commands'; import Clear from './commands/clear.js'; import Disconnect from './commands/disconnect.js'; +import Favorites from './commands/favorites.js'; import ForwardSeek from './commands/fseek.js'; import Pause from './commands/pause.js'; import Play from './commands/play.js'; @@ -45,13 +47,15 @@ container.bind(TYPES.Client).toConstantValue(new Client({intents})); // Managers container.bind(TYPES.Managers.Player).to(PlayerManager).inSingletonScope(); -// Helpers +// Services container.bind(TYPES.Services.GetSongs).to(GetSongs).inSingletonScope(); +container.bind(TYPES.Services.AddQueryToQueue).to(AddQueryToQueue).inSingletonScope(); // Commands [ Clear, Disconnect, + Favorites, ForwardSeek, Pause, Play, diff --git a/src/managers/player.ts b/src/managers/player.ts index 5d816b8..218a0b2 100644 --- a/src/managers/player.ts +++ b/src/managers/player.ts @@ -20,7 +20,7 @@ export default class { let player = this.guildPlayers.get(guildId); if (!player) { - player = new Player(this.discordClient, this.fileCache); + player = new Player(this.discordClient, this.fileCache, guildId); this.guildPlayers.set(guildId, player); } diff --git a/src/scripts/run-with-database-url.ts b/src/scripts/run-with-database-url.ts index b7ae3a7..e4ab39a 100644 --- a/src/scripts/run-with-database-url.ts +++ b/src/scripts/run-with-database-url.ts @@ -2,12 +2,14 @@ import {DATA_DIR} from '../services/config.js'; import createDatabaseUrl from '../utils/create-database-url.js'; import {execa} from 'execa'; -process.env.DATABASE_URL = createDatabaseUrl(DATA_DIR); - (async () => { await execa(process.argv[2], process.argv.slice(3), { preferLocal: true, stderr: process.stderr, stdout: process.stdout, + stdin: process.stdin, + env: { + DATABASE_URL: createDatabaseUrl(DATA_DIR), + }, }); })(); diff --git a/src/services/add-query-to-queue.ts b/src/services/add-query-to-queue.ts new file mode 100644 index 0000000..bb512c6 --- /dev/null +++ b/src/services/add-query-to-queue.ts @@ -0,0 +1,155 @@ +import {CommandInteraction, GuildMember} from 'discord.js'; +import {inject, injectable} from 'inversify'; +import {Except} from 'type-fest'; +import shuffle from 'array-shuffle'; +import {TYPES} from '../types.js'; +import GetSongs from '../services/get-songs.js'; +import {QueuedSong} from './player.js'; +import PlayerManager from '../managers/player.js'; +import {prisma} from '../utils/db.js'; +import {buildPlayingMessageEmbed} from '../utils/build-embed.js'; +import {getMemberVoiceChannel, getMostPopularVoiceChannel} from '../utils/channels.js'; + +@injectable() +export default class AddQueryToQueue { + constructor(@inject(TYPES.Services.GetSongs) private readonly getSongs: GetSongs, @inject(TYPES.Managers.Player) private readonly playerManager: PlayerManager) {} + + public async addToQueue({ + query, + addToFrontOfQueue, + shuffleAdditions, + interaction, + }: { + query: string; + addToFrontOfQueue: boolean; + shuffleAdditions: boolean; + interaction: CommandInteraction; + }): Promise { + const guildId = interaction.guild!.id; + const player = this.playerManager.get(guildId); + const wasPlayingSong = player.getCurrent() !== null; + + const [targetVoiceChannel] = getMemberVoiceChannel(interaction.member as GuildMember) ?? getMostPopularVoiceChannel(interaction.guild!); + + const settings = await prisma.setting.findUnique({where: {guildId}}); + + if (!settings) { + throw new Error('Could not find settings for guild'); + } + + const {playlistLimit} = settings; + + await interaction.deferReply(); + + let newSongs: Array> = []; + let extraMsg = ''; + + // Test if it's a complete URL + try { + const url = new URL(query); + + const YOUTUBE_HOSTS = [ + 'www.youtube.com', + 'youtu.be', + 'youtube.com', + 'music.youtube.com', + 'www.music.youtube.com', + ]; + + if (YOUTUBE_HOSTS.includes(url.host)) { + // YouTube source + if (url.searchParams.get('list')) { + // YouTube playlist + newSongs.push(...await this.getSongs.youtubePlaylist(url.searchParams.get('list')!)); + } else { + const song = await this.getSongs.youtubeVideo(url.href); + + if (song) { + newSongs.push(song); + } else { + throw new Error('that doesn\'t exist'); + } + } + } else if (url.protocol === 'spotify:' || url.host === 'open.spotify.com') { + const [convertedSongs, nSongsNotFound, totalSongs] = await this.getSongs.spotifySource(query, playlistLimit); + + if (totalSongs > playlistLimit) { + extraMsg = `a random sample of ${playlistLimit} songs was taken`; + } + + if (totalSongs > playlistLimit && nSongsNotFound !== 0) { + extraMsg += ' and '; + } + + if (nSongsNotFound !== 0) { + if (nSongsNotFound === 1) { + extraMsg += '1 song was not found'; + } else { + extraMsg += `${nSongsNotFound.toString()} songs were not found`; + } + } + + newSongs.push(...convertedSongs); + } + } catch (_: unknown) { + // Not a URL, must search YouTube + const song = await this.getSongs.youtubeVideoSearch(query); + + if (song) { + newSongs.push(song); + } else { + throw new Error('that doesn\'t exist'); + } + } + + if (newSongs.length === 0) { + throw new Error('no songs found'); + } + + if (shuffleAdditions) { + newSongs = shuffle(newSongs); + } + + newSongs.forEach(song => { + player.add({...song, addedInChannelId: interaction.channel!.id, requestedBy: interaction.member!.user.id}, {immediate: addToFrontOfQueue ?? false}); + }); + + const firstSong = newSongs[0]; + + let statusMsg = ''; + + if (player.voiceConnection === null) { + await player.connect(targetVoiceChannel); + + // Resume / start playback + await player.play(); + + if (wasPlayingSong) { + statusMsg = 'resuming playback'; + } + + await interaction.editReply({ + embeds: [buildPlayingMessageEmbed(player)], + }); + } + + // Build response message + if (statusMsg !== '') { + if (extraMsg === '') { + extraMsg = statusMsg; + } else { + extraMsg = `${statusMsg}, ${extraMsg}`; + } + } + + if (extraMsg !== '') { + extraMsg = ` (${extraMsg})`; + } + + if (newSongs.length === 1) { + await interaction.editReply(`u betcha, **${firstSong.title}** added to the${addToFrontOfQueue ? ' front of the' : ''} queue${extraMsg}`); + } else { + await interaction.editReply(`u betcha, **${firstSong.title}** and ${newSongs.length - 1} other songs were added to the queue${extraMsg}`); + } + } +} diff --git a/src/services/player.ts b/src/services/player.ts index 871b1c1..8255119 100644 --- a/src/services/player.ts +++ b/src/services/player.ts @@ -38,6 +38,7 @@ export interface PlayerEvents { export default class { public voiceConnection: VoiceConnection | null = null; public status = STATUS.PAUSED; + public guildId: string; private queue: QueuedSong[] = []; private queuePosition = 0; @@ -51,9 +52,10 @@ export default class { private readonly discordClient: Client; private readonly fileCache: FileCacheProvider; - constructor(client: Client, fileCache: FileCacheProvider) { + constructor(client: Client, fileCache: FileCacheProvider, guildId: string) { this.discordClient = client; this.fileCache = fileCache; + this.guildId = guildId; } async connect(channel: VoiceChannel): Promise { diff --git a/src/types.ts b/src/types.ts index 19c734d..47108b9 100644 --- a/src/types.ts +++ b/src/types.ts @@ -11,7 +11,7 @@ export const TYPES = { UpdatingQueueEmbed: Symbol('UpdatingQueueEmbed'), }, Services: { + AddQueryToQueue: Symbol('AddQueryToQueue'), GetSongs: Symbol('GetSongs'), - NaturalLanguage: Symbol('NaturalLanguage'), }, }; diff --git a/yarn.lock b/yarn.lock index 16fe8bd..9804d00 100644 --- a/yarn.lock +++ b/yarn.lock @@ -279,7 +279,7 @@ dependencies: "@octokit/openapi-types" "^11.2.0" -"@prisma/client@^3.7.0": +"@prisma/client@^3.8.1": version "3.8.1" resolved "https://registry.yarnpkg.com/@prisma/client/-/client-3.8.1.tgz#c11eda8e84760867552ffde4de7b48fb2cf1e1c0" integrity sha512-NxD1Xbkx1eT1mxSwo1RwZe665mqBETs0VxohuwNfFIxMqcp0g6d4TgugPxwZ4Jb4e5wCu8mQ9quMedhNWIWcZQ== @@ -2899,7 +2899,7 @@ prism-media@^1.3.2: resolved "https://registry.yarnpkg.com/prism-media/-/prism-media-1.3.2.tgz#a1f04423ec15d22f3d62b1987b6a25dc49aad13b" integrity sha512-L6UsGHcT6i4wrQhFF1aPK+MNYgjRqR2tUoIqEY+CG1NqVkMjPRKzS37j9f8GiYPlD6wG9ruBj+q5Ax+bH8Ik1g== -prisma@^3.7.0: +prisma@^3.8.1: version "3.8.1" resolved "https://registry.yarnpkg.com/prisma/-/prisma-3.8.1.tgz#44395cef7cbb1ea86216cb84ee02f856c08a7873" integrity sha512-Q8zHwS9m70TaD7qI8u+8hTAmiTpK+IpvRYF3Rgb/OeWGQJOMgZCFFvNCiSfoLEQ95wilK7ctW3KOpc9AuYnRUA== From 1621b2c2815f7458df19320361a4a5a41c9cf4d3 Mon Sep 17 00:00:00 2001 From: Max Isom Date: Sat, 29 Jan 2022 11:20:40 -0500 Subject: [PATCH 39/47] Add permissions system --- .../migration.sql | 19 ++++ .../migration.sql | 2 + schema.prisma | 2 +- src/bot.ts | 5 + src/commands/config.ts | 103 ++++++++++++++++++ src/commands/favorites.ts | 12 +- src/inversify.config.ts | 2 + src/utils/update-permissions-for-guild.ts | 44 ++++++++ 8 files changed, 184 insertions(+), 5 deletions(-) create mode 100644 migrations/20220129010359_remove_channel/migration.sql create mode 100644 migrations/20220129012310_add_role_id_column/migration.sql create mode 100644 src/commands/config.ts create mode 100644 src/utils/update-permissions-for-guild.ts diff --git a/migrations/20220129010359_remove_channel/migration.sql b/migrations/20220129010359_remove_channel/migration.sql new file mode 100644 index 0000000..38a5336 --- /dev/null +++ b/migrations/20220129010359_remove_channel/migration.sql @@ -0,0 +1,19 @@ +/* + Warnings: + + - You are about to drop the column `channel` on the `Setting` table. All the data in the column will be lost. + +*/ +-- RedefineTables +PRAGMA foreign_keys=OFF; +CREATE TABLE "new_Setting" ( + "guildId" TEXT NOT NULL PRIMARY KEY, + "playlistLimit" INTEGER NOT NULL DEFAULT 50, + "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" DATETIME NOT NULL +); +INSERT INTO "new_Setting" ("createdAt", "guildId", "playlistLimit", "updatedAt") SELECT "createdAt", "guildId", "playlistLimit", "updatedAt" FROM "Setting"; +DROP TABLE "Setting"; +ALTER TABLE "new_Setting" RENAME TO "Setting"; +PRAGMA foreign_key_check; +PRAGMA foreign_keys=ON; diff --git a/migrations/20220129012310_add_role_id_column/migration.sql b/migrations/20220129012310_add_role_id_column/migration.sql new file mode 100644 index 0000000..d46c94c --- /dev/null +++ b/migrations/20220129012310_add_role_id_column/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "Setting" ADD COLUMN "roleId" TEXT; diff --git a/schema.prisma b/schema.prisma index bf61bd7..66ea3b7 100644 --- a/schema.prisma +++ b/schema.prisma @@ -25,8 +25,8 @@ model KeyValueCache { model Setting { guildId String @id - channel String? playlistLimit Int @default(50) + roleId String? createdAt DateTime @default(now()) updatedAt DateTime @updatedAt } diff --git a/src/bot.ts b/src/bot.ts index 3ba15bc..d6bf02f 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -13,6 +13,7 @@ import Config from './services/config.js'; import {generateDependencyReport} from '@discordjs/voice'; import {REST} from '@discordjs/rest'; import {Routes} from 'discord-api-types/v9'; +import updatePermissionsForGuild from './utils/update-permissions-for-guild.js'; @injectable() export default class { @@ -146,6 +147,10 @@ export default class { ); } + // Update permissions + spinner.text = '📡 updating permissions...'; + await Promise.all(this.client.guilds.cache.map(async guild => updatePermissionsForGuild(guild))); + spinner.succeed(`Ready! Invite the bot with https://discordapp.com/oauth2/authorize?client_id=${this.client.user?.id ?? ''}&scope=bot%20applications.commands&permissions=2184236096`); }); diff --git a/src/commands/config.ts b/src/commands/config.ts new file mode 100644 index 0000000..65aa36b --- /dev/null +++ b/src/commands/config.ts @@ -0,0 +1,103 @@ +import {SlashCommandBuilder} from '@discordjs/builders'; +import {CommandInteraction, MessageEmbed} from 'discord.js'; +import {injectable} from 'inversify'; +import {prisma} from '../utils/db.js'; +import updatePermissionsForGuild from '../utils/update-permissions-for-guild.js'; +import Command from './index.js'; + +@injectable() +export default class implements Command { + public readonly slashCommand = new SlashCommandBuilder() + .setName('config') + .setDescription('configure bot settings') + .addSubcommand(subcommand => subcommand + .setName('set-playlist-limit') + .setDescription('set the maximum number of tracks that can be added from a playlist') + .addIntegerOption(option => option + .setName('limit') + .setDescription('maximum number of tracks') + .setRequired(true))) + .addSubcommand(subcommand => subcommand + .setName('set-role') + .setDescription('set the role that is allowed to use the bot') + .addRoleOption(option => option + .setName('role') + .setDescription('allowed role') + .setRequired(true))) + .addSubcommand(subcommand => subcommand + .setName('get') + .setDescription('show all settings')); + + async execute(interaction: CommandInteraction) { + switch (interaction.options.getSubcommand()) { + case 'set-playlist-limit': { + const limit = interaction.options.getInteger('limit')!; + + if (limit < 1) { + throw new Error('invalid limit'); + } + + await prisma.setting.update({ + where: { + guildId: interaction.guild!.id, + }, + data: { + playlistLimit: limit, + }, + }); + + await interaction.reply('👍 limit updated'); + + break; + } + + case 'set-role': { + const role = interaction.options.getRole('role')!; + + await prisma.setting.update({ + where: { + guildId: interaction.guild!.id, + }, + data: { + roleId: role.id, + }, + }); + + await updatePermissionsForGuild(interaction.guild!); + + await interaction.reply('👍 role updated'); + + break; + } + + case 'get': { + const embed = new MessageEmbed().setTitle('Config'); + + const config = await prisma.setting.findUnique({where: {guildId: interaction.guild!.id}}); + + if (!config) { + throw new Error('no config found'); + } + + const settingsToShow = { + 'Playlist Limit': config.playlistLimit, + Role: config.roleId ? `<@&${config.roleId}>` : 'not set', + }; + + let description = ''; + for (const [key, value] of Object.entries(settingsToShow)) { + description += `**${key}**: ${value}\n`; + } + + embed.setDescription(description); + + await interaction.reply({embeds: [embed]}); + + break; + } + + default: + throw new Error('unknown subcommand'); + } + } +} diff --git a/src/commands/favorites.ts b/src/commands/favorites.ts index b15a5c9..98f1ba9 100644 --- a/src/commands/favorites.ts +++ b/src/commands/favorites.ts @@ -75,6 +75,7 @@ export default class implements Command { } async handleAutocompleteInteraction(interaction: AutocompleteInteraction) { + const subcommand = interaction.options.getSubcommand(); const query = interaction.options.getString('name')!.trim(); const favorites = await prisma.favoriteQuery.findMany({ @@ -83,13 +84,16 @@ export default class implements Command { }, }); - const names = favorites.map(favorite => favorite.name); + let results = query === '' ? favorites : favorites.filter(f => f.name.startsWith(query)); - const results = query === '' ? names : names.filter(name => name.startsWith(query)); + if (subcommand === 'remove') { + // Only show favorites that user is allowed to remove + results = interaction.member?.user.id === interaction.guild?.ownerId ? results : results.filter(r => r.authorId === interaction.member!.user.id); + } await interaction.respond(results.map(r => ({ - name: r, - value: r, + name: r.name, + value: r.name, }))); } diff --git a/src/inversify.config.ts b/src/inversify.config.ts index f423614..d29d3de 100644 --- a/src/inversify.config.ts +++ b/src/inversify.config.ts @@ -15,6 +15,7 @@ import GetSongs from './services/get-songs.js'; // Comands import Command from './commands'; import Clear from './commands/clear.js'; +import Config from './commands/config.js'; import Disconnect from './commands/disconnect.js'; import Favorites from './commands/favorites.js'; import ForwardSeek from './commands/fseek.js'; @@ -54,6 +55,7 @@ container.bind(TYPES.Services.AddQueryToQueue).to(AddQueryToQue // Commands [ Clear, + Config, Disconnect, Favorites, ForwardSeek, diff --git a/src/utils/update-permissions-for-guild.ts b/src/utils/update-permissions-for-guild.ts new file mode 100644 index 0000000..ca7c427 --- /dev/null +++ b/src/utils/update-permissions-for-guild.ts @@ -0,0 +1,44 @@ +import {ApplicationCommandPermissionData, Guild} from 'discord.js'; +import {prisma} from './db.js'; + +const COMMANDS_TO_LIMIT_TO_GUILD_OWNER = ['config']; + +const updatePermissionsForGuild = async (guild: Guild) => { + const settings = await prisma.setting.findUnique({ + where: { + guildId: guild.id, + }, + }); + + if (!settings) { + throw new Error('could not find settings for guild'); + } + + const permissions: ApplicationCommandPermissionData[] = [ + { + id: guild.ownerId, + type: 'USER', + permission: true, + }, + { + id: guild.roles.everyone.id, + type: 'ROLE', + permission: false, + }, + ]; + const commands = await guild.commands.fetch(); + + await guild.commands.permissions.set({fullPermissions: commands.map(command => ({ + id: command.id, + permissions: COMMANDS_TO_LIMIT_TO_GUILD_OWNER.includes(command.name) ? permissions : [ + ...permissions, + ...(settings.roleId ? [{ + id: settings.roleId, + type: 'ROLE' as const, + permission: true, + }] : []), + ], + }))}); +}; + +export default updatePermissionsForGuild; From fc5c1ee002260335971855eb31589d5aed25620a Mon Sep 17 00:00:00 2001 From: Max Isom Date: Sat, 29 Jan 2022 11:27:39 -0500 Subject: [PATCH 40/47] Handle ownership transfer events --- src/bot.ts | 2 ++ src/events/handle-guild-update.ts | 10 ++++++++++ 2 files changed, 12 insertions(+) create mode 100644 src/events/handle-guild-update.ts diff --git a/src/bot.ts b/src/bot.ts index d6bf02f..29cf818 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -14,6 +14,7 @@ import {generateDependencyReport} from '@discordjs/voice'; import {REST} from '@discordjs/rest'; import {Routes} from 'discord-api-types/v9'; import updatePermissionsForGuild from './utils/update-permissions-for-guild.js'; +import handleGuildUpdate from './events/handle-guild-update.js'; @injectable() export default class { @@ -159,6 +160,7 @@ export default class { this.client.on('guildCreate', handleGuildCreate); this.client.on('voiceStateUpdate', handleVoiceStateUpdate); + this.client.on('guildUpdate', handleGuildUpdate); await this.client.login(this.token); } diff --git a/src/events/handle-guild-update.ts b/src/events/handle-guild-update.ts new file mode 100644 index 0000000..837bbbe --- /dev/null +++ b/src/events/handle-guild-update.ts @@ -0,0 +1,10 @@ +import {Guild} from 'discord.js'; +import updatePermissionsForGuild from '../utils/update-permissions-for-guild.js'; + +const handleGuildUpdate = async (oldGuild: Guild, newGuild: Guild) => { + if (oldGuild.ownerId !== newGuild.ownerId) { + await updatePermissionsForGuild(newGuild); + } +}; + +export default handleGuildUpdate; From d6c9d4b1128c5cddda74b3a84575388670edf221 Mon Sep 17 00:00:00 2001 From: Max Isom Date: Sat, 29 Jan 2022 11:36:24 -0500 Subject: [PATCH 41/47] Update invite permissions, send message to owner --- src/bot.ts | 4 ++-- src/events/guild-create.ts | 4 ++++ src/events/{handle-guild-update.ts => guild-update.ts} | 0 3 files changed, 6 insertions(+), 2 deletions(-) rename src/events/{handle-guild-update.ts => guild-update.ts} (100%) diff --git a/src/bot.ts b/src/bot.ts index 29cf818..0a041ec 100644 --- a/src/bot.ts +++ b/src/bot.ts @@ -7,6 +7,7 @@ import Command from './commands/index.js'; import debug from './utils/debug.js'; import handleGuildCreate from './events/guild-create.js'; import handleVoiceStateUpdate from './events/voice-state-update.js'; +import handleGuildUpdate from './events/guild-update.js'; import errorMsg from './utils/error-msg.js'; import {isUserInVoice} from './utils/channels.js'; import Config from './services/config.js'; @@ -14,7 +15,6 @@ import {generateDependencyReport} from '@discordjs/voice'; import {REST} from '@discordjs/rest'; import {Routes} from 'discord-api-types/v9'; import updatePermissionsForGuild from './utils/update-permissions-for-guild.js'; -import handleGuildUpdate from './events/handle-guild-update.js'; @injectable() export default class { @@ -152,7 +152,7 @@ export default class { spinner.text = '📡 updating permissions...'; await Promise.all(this.client.guilds.cache.map(async guild => updatePermissionsForGuild(guild))); - spinner.succeed(`Ready! Invite the bot with https://discordapp.com/oauth2/authorize?client_id=${this.client.user?.id ?? ''}&scope=bot%20applications.commands&permissions=2184236096`); + spinner.succeed(`Ready! Invite the bot with https://discordapp.com/oauth2/authorize?client_id=${this.client.user?.id ?? ''}&scope=bot%20applications.commands&permissions=36700160`); }); this.client.on('error', console.error); diff --git a/src/events/guild-create.ts b/src/events/guild-create.ts index 8db7e2f..630d6cb 100644 --- a/src/events/guild-create.ts +++ b/src/events/guild-create.ts @@ -32,4 +32,8 @@ export default async (guild: Guild): Promise => { {body: container.getAll(TYPES.Command).map(command => command.slashCommand.toJSON())}, ); } + + const owner = await guild.fetchOwner(); + + await owner.send('👋 Hi! Someone (probably you) just invited me to a server you own. I can\'t be used by your server members until you complete setup by running /config set-role in your server.'); }; diff --git a/src/events/handle-guild-update.ts b/src/events/guild-update.ts similarity index 100% rename from src/events/handle-guild-update.ts rename to src/events/guild-update.ts From 6eb704c5b4f7a92e254f14eab962ac8bc76a081b Mon Sep 17 00:00:00 2001 From: Max Isom Date: Sat, 29 Jan 2022 12:06:11 -0500 Subject: [PATCH 42/47] Fix resume playback bug --- Dockerfile | 4 ++++ src/commands/play.ts | 38 +++++++++++++++++++++++++++++++++++--- src/utils/log-banner.ts | 1 + 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index b2ca0c4..47a3592 100644 --- a/Dockerfile +++ b/Dockerfile @@ -35,7 +35,11 @@ COPY --from=builder /usr/app/migrations migrations RUN yarn prisma generate +ARG COMMIT_HASH=unknown + ENV DATA_DIR /data ENV NODE_ENV production +ENV BUILD_DATE $(date) +ENV COMMIT_HASH $COMMIT_HASH CMD ["yarn", "start"] diff --git a/src/commands/play.ts b/src/commands/play.ts index e8d565c..2d2fc6d 100644 --- a/src/commands/play.ts +++ b/src/commands/play.ts @@ -1,4 +1,4 @@ -import {AutocompleteInteraction, CommandInteraction} from 'discord.js'; +import {AutocompleteInteraction, CommandInteraction, GuildMember} from 'discord.js'; import {URL} from 'url'; import {SlashCommandBuilder} from '@discordjs/builders'; import {inject, injectable} from 'inversify'; @@ -10,6 +10,10 @@ import getYouTubeAndSpotifySuggestionsFor from '../utils/get-youtube-and-spotify import KeyValueCacheProvider from '../services/key-value-cache.js'; import {ONE_HOUR_IN_SECONDS} from '../utils/constants.js'; import AddQueryToQueue from '../services/add-query-to-queue.js'; +import PlayerManager from '../managers/player.js'; +import {STATUS} from '../services/player.js'; +import {buildPlayingMessageEmbed} from '../utils/build-embed.js'; +import {getMemberVoiceChannel, getMostPopularVoiceChannel} from '../utils/channels.js'; @injectable() export default class implements Command { @@ -33,18 +37,46 @@ export default class implements Command { private readonly spotify: Spotify; private readonly cache: KeyValueCacheProvider; private readonly addQueryToQueue: AddQueryToQueue; + private readonly playerManager: PlayerManager; - constructor(@inject(TYPES.ThirdParty) thirdParty: ThirdParty, @inject(TYPES.KeyValueCache) cache: KeyValueCacheProvider, @inject(TYPES.Services.AddQueryToQueue) addQueryToQueue: AddQueryToQueue) { + constructor(@inject(TYPES.ThirdParty) thirdParty: ThirdParty, @inject(TYPES.KeyValueCache) cache: KeyValueCacheProvider, @inject(TYPES.Services.AddQueryToQueue) addQueryToQueue: AddQueryToQueue, @inject(TYPES.Managers.Player) playerManager: PlayerManager) { this.spotify = thirdParty.spotify; this.cache = cache; this.addQueryToQueue = addQueryToQueue; + this.playerManager = playerManager; } // eslint-disable-next-line complexity public async execute(interaction: CommandInteraction): Promise { + const query = interaction.options.getString('query'); + + const player = this.playerManager.get(interaction.guild!.id); + const [targetVoiceChannel] = getMemberVoiceChannel(interaction.member as GuildMember) ?? getMostPopularVoiceChannel(interaction.guild!); + + if (!query) { + if (player.status === STATUS.PLAYING) { + throw new Error('already playing, give me a song name'); + } + + // Must be resuming play + if (!player.getCurrent()) { + throw new Error('nothing to play'); + } + + await player.connect(targetVoiceChannel); + await player.play(); + + await interaction.reply({ + content: 'the stop-and-go light is now green', + embeds: [buildPlayingMessageEmbed(player)], + }); + + return; + } + await this.addQueryToQueue.addToQueue({ interaction, - query: interaction.options.getString('query')!.trim(), + query: query.trim(), addToFrontOfQueue: interaction.options.getBoolean('immediate') ?? false, shuffleAdditions: interaction.options.getBoolean('shuffle') ?? false, }); diff --git a/src/utils/log-banner.ts b/src/utils/log-banner.ts index 0ad6466..9cde988 100644 --- a/src/utils/log-banner.ts +++ b/src/utils/log-banner.ts @@ -9,6 +9,7 @@ const logBanner = () => { paypalUser: 'codetheweb', githubSponsor: 'codetheweb', madeByPrefix: 'Made with đŸŽļ by ', + buildDate: process.env.BUILD_DATE ? new Date(process.env.BUILD_DATE) : undefined, }).join('\n')); console.log('\n'); }; From 9d8275bbdaeb68cd5013696ef5962b0e7b04a12c Mon Sep 17 00:00:00 2001 From: Max Isom Date: Sat, 29 Jan 2022 20:12:21 -0500 Subject: [PATCH 43/47] Bump packages, add debug logging --- package.json | 8 ++-- src/managers/player.ts | 7 +--- src/services/player.ts | 21 +++++----- yarn.lock | 90 +++++++++++++++--------------------------- 4 files changed, 48 insertions(+), 78 deletions(-) diff --git a/package.json b/package.json index 831b368..7bcaf9e 100644 --- a/package.json +++ b/package.json @@ -81,17 +81,17 @@ } }, "dependencies": { - "@discordjs/builders": "^0.9.0", + "@discordjs/builders": "^0.12.0", "@discordjs/opus": "^0.7.0", - "@discordjs/rest": "^0.1.0-canary.0", - "@discordjs/voice": "^0.7.5", + "@discordjs/rest": "^0.3.0", + "@discordjs/voice": "^0.8.0", "@prisma/client": "^3.8.1", "@types/libsodium-wrappers": "^0.7.9", "array-shuffle": "^3.0.0", "debug": "^4.3.3", "delay": "^5.0.0", "discord-api-types": "^0.26.1", - "discord.js": "^13.5.0", + "discord.js": "^13.6.0", "dotenv": "^8.5.1", "execa": "^6.0.0", "fluent-ffmpeg": "^2.1.2", diff --git a/src/managers/player.ts b/src/managers/player.ts index 218a0b2..420cf48 100644 --- a/src/managers/player.ts +++ b/src/managers/player.ts @@ -1,5 +1,4 @@ import {inject, injectable} from 'inversify'; -import {Client} from 'discord.js'; import {TYPES} from '../types.js'; import Player from '../services/player.js'; import FileCacheProvider from '../services/file-cache.js'; @@ -7,12 +6,10 @@ import FileCacheProvider from '../services/file-cache.js'; @injectable() export default class { private readonly guildPlayers: Map; - private readonly discordClient: Client; private readonly fileCache: FileCacheProvider; - constructor(@inject(TYPES.FileCache) fileCache: FileCacheProvider, @inject(TYPES.Client) client: Client) { + constructor(@inject(TYPES.FileCache) fileCache: FileCacheProvider) { this.guildPlayers = new Map(); - this.discordClient = client; this.fileCache = fileCache; } @@ -20,7 +17,7 @@ export default class { let player = this.guildPlayers.get(guildId); if (!player) { - player = new Player(this.discordClient, this.fileCache, guildId); + player = new Player(this.fileCache, guildId); this.guildPlayers.set(guildId, player); } diff --git a/src/services/player.ts b/src/services/player.ts index 8255119..47b3cb8 100644 --- a/src/services/player.ts +++ b/src/services/player.ts @@ -1,13 +1,13 @@ -import {VoiceChannel, Snowflake, Client, TextChannel} from 'discord.js'; +import {VoiceChannel, Snowflake} from 'discord.js'; import {Readable} from 'stream'; import hasha from 'hasha'; import ytdl from 'ytdl-core'; import {WriteStream} from 'fs-capacitor'; import ffmpeg from 'fluent-ffmpeg'; import shuffle from 'array-shuffle'; -import errorMsg from '../utils/error-msg.js'; import {AudioPlayer, AudioPlayerStatus, createAudioPlayer, createAudioResource, joinVoiceChannel, StreamType, VoiceConnection, VoiceConnectionStatus} from '@discordjs/voice'; import FileCacheProvider from './file-cache.js'; +import debug from '../utils/debug.js'; export interface QueuedPlaylist { title: string; @@ -49,11 +49,9 @@ export default class { private positionInSeconds = 0; - private readonly discordClient: Client; private readonly fileCache: FileCacheProvider; - constructor(client: Client, fileCache: FileCacheProvider, guildId: string) { - this.discordClient = client; + constructor(fileCache: FileCacheProvider, guildId: string) { this.fileCache = fileCache; this.guildId = guildId; } @@ -62,7 +60,6 @@ export default class { const conn = joinVoiceChannel({ channelId: channel.id, guildId: channel.guild.id, - // @ts-expect-error (see https://github.com/discordjs/voice/issues/166) adapterCreator: channel.guild.voiceAdapterCreator, }); @@ -150,9 +147,11 @@ export default class { const stream = await this.getStream(currentSong.url); this.audioPlayer = createAudioPlayer(); this.voiceConnection.subscribe(this.audioPlayer); - this.audioPlayer.play(createAudioResource(stream, { + const resource = createAudioResource(stream, { inputType: StreamType.WebmOpus, - })); + }); + + this.audioPlayer.play(resource); this.attachListeners(); @@ -167,14 +166,13 @@ export default class { this.lastSongURL = currentSong.url; } } catch (error: unknown) { - const currentSong = this.getCurrent(); await this.forward(1); if ((error as {statusCode: number}).statusCode === 410 && currentSong) { const channelId = currentSong.addedInChannelId; if (channelId) { - await (this.discordClient.channels.cache.get(channelId) as TextChannel).send(errorMsg(`${currentSong.title} is unavailable`)); + debug(`${currentSong.title} is unavailable`); return; } } @@ -405,6 +403,9 @@ export default class { .on('error', error => { console.error(error); reject(error); + }) + .on('start', command => { + debug(`Spawned ffmpeg with ${command as string}`); }); youtubeStream.pipe(capacitor); diff --git a/yarn.lock b/yarn.lock index 9804d00..8981c00 100644 --- a/yarn.lock +++ b/yarn.lock @@ -53,22 +53,17 @@ tslib "^2.3.1" zod "^3.11.6" -"@discordjs/builders@^0.9.0": - version "0.9.0" - resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-0.9.0.tgz#1ca17677e7c180d4f266191596e17e9633180417" - integrity sha512-XM/5yrTxMF0SDKza32YzGDQO1t+qEJTaF8Zvxu/UOjzoqzMPPGQBjC1VgZxz8/CBLygW5qI+UVygMa88z13G3g== +"@discordjs/builders@^0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@discordjs/builders/-/builders-0.12.0.tgz#5f6d95d1b231fa975a7e28ca3f8098e517676887" + integrity sha512-Vx2MjUZd6QVo1uS2uWt708Fd6cHWGFblAvbpL5EBO+kLl0BADmPwwvts+YJ/VfSywed6Vsk6K2cEooR/Ytjhjw== dependencies: - "@sindresorhus/is" "^4.2.0" - discord-api-types "^0.24.0" + "@sindresorhus/is" "^4.3.0" + discord-api-types "^0.26.1" ts-mixer "^6.0.0" tslib "^2.3.1" zod "^3.11.6" -"@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/collection@^0.4.0": version "0.4.0" resolved "https://registry.yarnpkg.com/@discordjs/collection/-/collection-0.4.0.tgz#b6488286a1cc7b41b644d7e6086f25a1c1e6f837" @@ -97,31 +92,30 @@ "@discordjs/node-pre-gyp" "^0.4.2" node-addon-api "^4.2.0" -"@discordjs/rest@^0.1.0-canary.0": - version "0.1.0-canary.0" - resolved "https://registry.yarnpkg.com/@discordjs/rest/-/rest-0.1.0-canary.0.tgz#666f9a1a0c1f2f5a09a3a79f77aeddaeafbcbcc1" - integrity sha512-d+s//ISYVV+e0w/926wMEeO7vju+Pn11x1JM4tcmVMCHSDgpi6pnFCNAXF1TEdnDcy7xf9tq5cf2pQkb/7ySTQ== +"@discordjs/rest@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@discordjs/rest/-/rest-0.3.0.tgz#89e06a42b168c91598891d6bf860353e28fba5d2" + integrity sha512-F9aeP3odlAlllM1ciBZLdd+adiAyBj4VaZBejj4UMj4afE2wfCkNTGvYYiRxrXUE9fN7e/BuDP2ePl0tVA2m7Q== dependencies: - "@discordjs/collection" "^0.1.6" - "@sapphire/async-queue" "^1.1.4" - "@sapphire/snowflake" "^1.3.5" - abort-controller "^3.0.0" - discord-api-types "^0.18.1" + "@discordjs/collection" "^0.4.0" + "@sapphire/async-queue" "^1.1.9" + "@sapphire/snowflake" "^3.0.1" + discord-api-types "^0.26.1" form-data "^4.0.0" - node-fetch "^2.6.1" - tslib "^2.3.0" + node-fetch "^2.6.5" + tslib "^2.3.1" -"@discordjs/voice@^0.7.5": - version "0.7.5" - resolved "https://registry.yarnpkg.com/@discordjs/voice/-/voice-0.7.5.tgz#c95bd4ecf73905f51990827df5209eb26472dbd5" - integrity sha512-lUk+CmIXNKslT6DkC9IF9rpsqhzlTiedauUCPBzepjd4XWxwBZiyVIzR6QpbAirxkAwCoAbbje+3Ho71PGLEAw== +"@discordjs/voice@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@discordjs/voice/-/voice-0.8.0.tgz#5d790fc25b883698f6eb7762efe1af00b6440947" + integrity sha512-o0JfVLMs3eLjUzPf6oxMydEeum40I7xzfUc66SLN+RrKpSAsTbngf5qnCF53nm+KDNSvrwg1AZqNm4LEAdxJIA== dependencies: "@types/ws" "^8.2.0" - discord-api-types "^0.24.0" + discord-api-types "^0.26.1" prism-media "^1.3.2" tiny-typed-emitter "^2.1.0" tslib "^2.3.1" - ws "^8.2.3" + ws "^8.4.2" "@eslint/eslintrc@^0.4.3": version "0.4.3" @@ -303,22 +297,22 @@ dependencies: detect-newline "^3.1.0" -"@sapphire/async-queue@^1.1.4", "@sapphire/async-queue@^1.1.9": +"@sapphire/async-queue@^1.1.9": version "1.1.9" resolved "https://registry.yarnpkg.com/@sapphire/async-queue/-/async-queue-1.1.9.tgz#ce69611c8753c4affd905a7ef43061c7eb95c01b" integrity sha512-CbXaGwwlEMq+l1TRu01FJCvySJ1CEFKFclHT48nIfNeZXaAAmmwwy7scUKmYHPUa3GhoMp6Qr1B3eAJux6XgOQ== -"@sapphire/snowflake@^1.3.5": - version "1.3.6" - resolved "https://registry.yarnpkg.com/@sapphire/snowflake/-/snowflake-1.3.6.tgz#166e8c5c08d01c861edd7e2edc80b5739741715f" - integrity sha512-QnzuLp+p9D7agynVub/zqlDVriDza9y3STArBhNiNBUgIX8+GL5FpQxstRfw1jDr5jkZUjcuKYAHxjIuXKdJAg== +"@sapphire/snowflake@^3.0.1": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@sapphire/snowflake/-/snowflake-3.1.0.tgz#1c2d9781d3b1de0bcb02b7079898947ce754d394" + integrity sha512-K+OiqXSx4clIaXcoaghrCV56zsm3bZZ5SBpgJkgvAKegFFdETMntHviUfypjt8xVleIuDaNyQA4APOIl3BMcxg== "@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== -"@sindresorhus/is@^4.0.0", "@sindresorhus/is@^4.2.0": +"@sindresorhus/is@^4.0.0", "@sindresorhus/is@^4.2.0", "@sindresorhus/is@^4.3.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.4.0.tgz#e277e5bdbdf7cb1e20d320f02f5e2ed113cd3185" integrity sha512-QppPM/8l3Mawvh4rn9CNEYIU9bxpXUCRMaX9yUpvBk1nMKusLKpfXGDEKExKaPhLzcn3lzil7pR6rnJ11HgeRQ== @@ -556,13 +550,6 @@ abbrev@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.3.1: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -1205,22 +1192,12 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" -discord-api-types@^0.18.1: - version "0.18.1" - resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.18.1.tgz#5d08ed1263236be9c21a22065d0e6b51f790f492" - integrity sha512-hNC38R9ZF4uaujaZQtQfm5CdQO58uhdkoHQAVvMfIL0LgOSZeW575W8H6upngQOuoxWd8tiRII3LLJm9zuQKYg== - -discord-api-types@^0.24.0: - version "0.24.0" - resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.24.0.tgz#9e429b8a1ddb4147134dfb3109093422de7ec549" - integrity sha512-X0uA2a92cRjowUEXpLZIHWl4jiX1NsUpDhcEOpa1/hpO1vkaokgZ8kkPtPih9hHth5UVQ3mHBu/PpB4qjyfJ4A== - discord-api-types@^0.26.0, discord-api-types@^0.26.1: version "0.26.1" resolved "https://registry.yarnpkg.com/discord-api-types/-/discord-api-types-0.26.1.tgz#726f766ddc37d60da95740991d22cb6ef2ed787b" integrity sha512-T5PdMQ+Y1MEECYMV5wmyi9VEYPagEDEi4S0amgsszpWY0VB9JJ/hEvM6BgLhbdnKky4gfmZEXtEEtojN8ZKJQQ== -discord.js@^13.5.0: +discord.js@^13.6.0: version "13.6.0" resolved "https://registry.yarnpkg.com/discord.js/-/discord.js-13.6.0.tgz#d8a8a591dbf25cbcf9c783d5ddf22c4694860475" integrity sha512-tXNR8zgsEPxPBvGk3AQjJ9ljIIC6/LOPjzKwpwz8Y1Q2X66Vi3ZqFgRHYwnHKC0jC0F+l4LzxlhmOJsBZDNg9g== @@ -1440,11 +1417,6 @@ esutils@^2.0.2: 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== - eventemitter3@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" @@ -3496,7 +3468,7 @@ tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.1.0, tslib@^2.3.0, tslib@^2.3.1: +tslib@^2.1.0, tslib@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== @@ -3712,7 +3684,7 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^8.2.3, ws@^8.4.0: +ws@^8.4.0, ws@^8.4.2: version "8.4.2" resolved "https://registry.yarnpkg.com/ws/-/ws-8.4.2.tgz#18e749868d8439f2268368829042894b6907aa0b" integrity sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA== From 50c047f589b45da63a50e2edf4686608b607fcd2 Mon Sep 17 00:00:00 2001 From: Max Isom Date: Sat, 5 Feb 2022 13:26:19 -0500 Subject: [PATCH 44/47] Update changelog --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea445de..1eb1216 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Changed - Migrated to [Slash Commands](https://support.discord.com/hc/en-us/articles/1500000368501-Slash-Commands-FAQ) -- The queue embed now automatically updates every 5 seconds (and has buttons for quick interactions) +- Upgrading **will cause unavoidable data loss**. Because slash commands work differently, **all shortcuts will be lost**. Functionality similar to shortcuts is provided by the `/favorites` command. +- Because slash commands require different permissions, **you must kick Muse and re-add Muse to your server** before you can use the bot. ## [0.5.4] - 2022-02-01 ### Fixed From e7d0c96f8a6190e5434282df2594be1c438071fc Mon Sep 17 00:00:00 2001 From: Max Isom Date: Sat, 5 Feb 2022 16:59:29 -0500 Subject: [PATCH 45/47] Update readme --- .github/hero.png | Bin 0 -> 230274 bytes README.md | 8 +++----- 2 files changed, 3 insertions(+), 5 deletions(-) create mode 100644 .github/hero.png diff --git a/.github/hero.png b/.github/hero.png new file mode 100644 index 0000000000000000000000000000000000000000..0599c670c9dc047b20ec81e4ad75ee0a0e7c7836 GIT binary patch literal 230274 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�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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index f614548..f5f07cf 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,8 @@ Muse is a **highly-opinionated midwestern self-hosted** Discord music bot **that doesn't suck**. It's made for small to medium-sized Discord servers/guilds (think about a group the size of you, your friends, and your friend's friends). +![Hero graphic](.github/hero.png) + ## Features - đŸŽĨ Livestreams @@ -16,10 +18,6 @@ Muse is a **highly-opinionated midwestern self-hosted** Discord music bot **that - ✍ī¸ Written in TypeScript, easily extendable - ❤ī¸ Loyal Packers fan -## Design Philosophy - -I believe it makes much more sense to let Discord handle user permissions (whenever possible) rather than building them into a bot and adding additional complexity. Instead of only allowing users with a certain role to control Muse, Muse allows anyone who has access to its bound channel to control it. Instead of specifying the owner as a user ID in the config, Muse simply looks at the guild owner. - ## Running Muse is written in TypeScript. You can either run Muse with Docker (recommended) or directly with Node.js. Both methods require API keys passed in as environment variables: @@ -92,4 +90,4 @@ By default, Muse limits the total cache size to around 2 GB. If you want to chan ### Bot-wide commands -If you have Muse running in a lot of guilds (10+) you may want to switch to registering commands bot-wide rather than for each guild. (The downside to this is that command updates can take up to an hour to propogate.) To do this, set the environment variable `REGISTER_COMMANDS_ON_BOT` to `true`. +If you have Muse running in a lot of guilds (10+) you may want to switch to registering commands bot-wide rather than for each guild. (The downside to this is that command updates can take up to an hour to propagate.) To do this, set the environment variable `REGISTER_COMMANDS_ON_BOT` to `true`. From 967de2fd91b56d441d6e2239e09bd5f904937c11 Mon Sep 17 00:00:00 2001 From: Max Isom Date: Sat, 5 Feb 2022 17:10:12 -0500 Subject: [PATCH 46/47] Consistent verb tense --- src/commands/disconnect.ts | 2 +- src/commands/favorites.ts | 2 +- src/commands/pause.ts | 2 +- src/commands/play.ts | 1 - src/commands/shuffle.ts | 2 +- src/commands/skip.ts | 2 +- src/commands/unskip.ts | 2 +- 7 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/commands/disconnect.ts b/src/commands/disconnect.ts index 4df76db..fd6b984 100644 --- a/src/commands/disconnect.ts +++ b/src/commands/disconnect.ts @@ -9,7 +9,7 @@ import Command from '.'; export default class implements Command { public readonly slashCommand = new SlashCommandBuilder() .setName('disconnect') - .setDescription('pauses and disconnects player'); + .setDescription('pause and disconnect Muse'); public requiresVC = true; diff --git a/src/commands/favorites.ts b/src/commands/favorites.ts index 98f1ba9..4dbf943 100644 --- a/src/commands/favorites.ts +++ b/src/commands/favorites.ts @@ -10,7 +10,7 @@ import {prisma} from '../utils/db.js'; export default class implements Command { public readonly slashCommand = new SlashCommandBuilder() .setName('favorites') - .setDescription('adds a song to your favorites') + .setDescription('add a song to your favorites') .addSubcommand(subcommand => subcommand .setName('use') .setDescription('use a favorite') diff --git a/src/commands/pause.ts b/src/commands/pause.ts index fc98bdf..7b9d295 100644 --- a/src/commands/pause.ts +++ b/src/commands/pause.ts @@ -10,7 +10,7 @@ import Command from '.'; export default class implements Command { public readonly slashCommand = new SlashCommandBuilder() .setName('pause') - .setDescription('pauses the current song'); + .setDescription('pause the current song'); public requiresVC = true; diff --git a/src/commands/play.ts b/src/commands/play.ts index 2d2fc6d..08436c2 100644 --- a/src/commands/play.ts +++ b/src/commands/play.ts @@ -19,7 +19,6 @@ import {getMemberVoiceChannel, getMostPopularVoiceChannel} from '../utils/channe export default class implements Command { public readonly slashCommand = new SlashCommandBuilder() .setName('play') - // TODO: make sure verb tense is consistent between all command descriptions .setDescription('play a song or resume playback') .addStringOption(option => option .setName('query') diff --git a/src/commands/shuffle.ts b/src/commands/shuffle.ts index e27f1e2..819c01c 100644 --- a/src/commands/shuffle.ts +++ b/src/commands/shuffle.ts @@ -9,7 +9,7 @@ import {SlashCommandBuilder} from '@discordjs/builders'; export default class implements Command { public readonly slashCommand = new SlashCommandBuilder() .setName('shuffle') - .setDescription('shuffles the current queue'); + .setDescription('shuffle the current queue'); public requiresVC = true; diff --git a/src/commands/skip.ts b/src/commands/skip.ts index 4c51e77..a580775 100644 --- a/src/commands/skip.ts +++ b/src/commands/skip.ts @@ -10,7 +10,7 @@ import {buildPlayingMessageEmbed} from '../utils/build-embed.js'; export default class implements Command { public readonly slashCommand = new SlashCommandBuilder() .setName('skip') - .setDescription('skips the next songs') + .setDescription('skip the next songs') .addIntegerOption(option => option .setName('number') .setDescription('number of songs to skip [default: 1]') diff --git a/src/commands/unskip.ts b/src/commands/unskip.ts index 17d6489..936f4ef 100644 --- a/src/commands/unskip.ts +++ b/src/commands/unskip.ts @@ -10,7 +10,7 @@ import {buildPlayingMessageEmbed} from '../utils/build-embed.js'; export default class implements Command { public readonly slashCommand = new SlashCommandBuilder() .setName('unskip') - .setDescription('goes back in the queue by one song'); + .setDescription('go back in the queue by one song'); public requiresVC = true; From 4f5b806b9b3065e335429618bd17eb5dba7e4ccb Mon Sep 17 00:00:00 2001 From: Max Isom Date: Sat, 5 Feb 2022 17:12:51 -0500 Subject: [PATCH 47/47] You ok GitHub?