diff --git a/.env.example b/.env.example index c4a7a1b..dc52329 100644 --- a/.env.example +++ b/.env.example @@ -26,3 +26,5 @@ SMTP_USERNAME= SMTP_PASSWORD= MAILGUN_API_KEY= +WAKATIME_API_KEY= +GITHUB_TOKEN= diff --git a/.gitignore b/.gitignore index 0a78c7b..ad74280 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ coverage tmp database/seeders .idea/ +/database/migrations/ diff --git a/app/Controllers/Http/LocationsController.ts b/app/Controllers/Http/LocationsController.ts index 9b2bc8d..29ffb5c 100644 --- a/app/Controllers/Http/LocationsController.ts +++ b/app/Controllers/Http/LocationsController.ts @@ -13,13 +13,6 @@ export default class LocationsController { }) } - public async history ({ response }: HttpContextContract) { - const locations = await Location.query().orderBy('since', 'desc') - return response.status(200).send({ - locations - }) - } - public async add ({ request, response }: HttpContextContract) { const data = await request.validate(LocationValidator) await Location.create(data) diff --git a/app/Controllers/Http/PostsController.ts b/app/Controllers/Http/PostsController.ts deleted file mode 100644 index dba1438..0000000 --- a/app/Controllers/Http/PostsController.ts +++ /dev/null @@ -1,74 +0,0 @@ -import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' -import Post from "App/Models/Post"; -import Redis from "@ioc:Adonis/Addons/Redis"; - -export default class PostsController { - - public async getLikes ({params}: HttpContextContract) { - let post = await Post.findBy('slug', params.slug) - - if (!post) { - post = await Post.create({ - slug: params.slug, - likes: 0 - }) - } - - return post.likes - } - - public async unlike ({request, params}: HttpContextContract) { - const post = await Post.findByOrFail('slug', params.slug) - const ip = await request.ip() - - const getLikes = post.likes - 1 - const isLiked = await Redis.exists(`artapi/posts/${post.slug}/${ip}`) - - if (isLiked) { - await Redis.del(`artapi/posts/${post.slug}/${ip}`) - await post.merge({ - likes: getLikes - }).save() - return { - code: 200, - post - } - } - } - - public async isLiked ({params, request}: HttpContextContract) { - const post = await Post.findBy('slug', params.slug) - if (post) { - const ip = request.ip() - return Redis.exists(`artapi/posts/${post.slug}/${ip}`); - } - return false - } - - public async like ({request, params}: HttpContextContract) { - let post = await Post.findBy('slug', params.slug) - const ip = await request.ip() - - if (!post) { - post = await Post.create({ - slug: params.slug, - likes: 0 - }) - } - - const getLikes = post.likes + 1 - const isLiked = await Redis.exists(`artapi/posts/${post.slug}/${ip}`) - - if (!isLiked) { - await Redis.set(`artapi/posts/${post.slug}/${ip}`, Date.now()) - await post.merge({ - likes: getLikes - }).save() - return { - code: 200, - post - } - } - } - -} diff --git a/app/Controllers/Http/MeController.ts b/app/Controllers/Http/ProfileController.ts similarity index 96% rename from app/Controllers/Http/MeController.ts rename to app/Controllers/Http/ProfileController.ts index 3b526ba..78eedaf 100644 --- a/app/Controllers/Http/MeController.ts +++ b/app/Controllers/Http/ProfileController.ts @@ -1,6 +1,6 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; -export default class MeController { +export default class ProfileController { public me ({ response }: HttpContextContract) { return response.status(200).send({ diff --git a/app/Controllers/Http/StatesController.ts b/app/Controllers/Http/StatesController.ts index fdef799..da3f438 100644 --- a/app/Controllers/Http/StatesController.ts +++ b/app/Controllers/Http/StatesController.ts @@ -5,57 +5,54 @@ import {UpdateGitHubReadme} from "App/tasks/UpdateGithubReadme"; export default class StatesController { public async get ({response}: HttpContextContract) { - const is_sleeping = await Redis.get('artapi/states/sleeping') || "false" - const is_learning = await Redis.get('artapi/states/learning') || "false" - const is_developing = await Redis.get('artapi/states/developing') || "false" - const is_listening_music = await Redis.get('artapi/states/listening') || "false" + const is_sleeping = await Redis.exists('artapi/states/sleeping') + const is_listening_music = await Redis.exists('artapi/states/listening') + const is_developing = await Redis.exists('artapi/states/developing') + const is_learning = await Redis.exists('artapi/states/learning') return response.status(200).send({ - is_sleeping: getStatus(is_sleeping), - is_learning: getStatus(is_learning), - is_developing: getStatus(is_developing), - is_listening_music: getStatus(is_listening_music) + is_learning: this.getStatus(is_learning), + is_sleeping: this.getStatus(is_sleeping), + is_developing: this.getStatus(is_developing), + is_listening_music: this.getStatus(is_listening_music) }) } - public async setSleepingStatus ({request, response}: HttpContextContract) { - const sleeping = await request.input('sleeping') - await Redis.set('artapi/states/sleeping', sleeping) - await UpdateGitHubReadme() - return response.status(200).send({ - message: 'State successfully updated !' - }) + public async set ({request, response}: HttpContextContract) { + const state = await request.param('state') + const value = await request.input('value') + + if (state && value) { + await Redis.set(`artapi/states/${state}`, value) + + switch (state) { + case 'learning': + await Redis.set(`artapi/states/developing`, 'false') + await Redis.set(`artapi/states/sleeping`, 'false') + break + case 'developing': + await Redis.set(`artapi/states/learning`, 'false') + await Redis.set(`artapi/states/sleeping`, 'false') + break + case 'listening': + await Redis.set(`artapi/states/sleeping`, 'false') + break + case 'sleeping': + await Redis.set(`artapi/states/developing`, 'false') + await Redis.set(`artapi/states/listening`, 'false') + await Redis.set(`artapi/states/learning`, 'false') + break + } + + await UpdateGitHubReadme() + return response.status(200).send({ + message: 'State successfully updated !' + }) + } } - public async setDevelopingStatus ({request, response}: HttpContextContract) { - const developing = await request.input('developing') - await Redis.set('artapi/states/developing', developing) - await UpdateGitHubReadme() - return response.status(200).send({ - message: 'State successfully updated !' - }) - } - - public async setLearningStatus ({request, response}: HttpContextContract) { - const learning = await request.input('learning') - await Redis.set('artapi/states/learning', learning) - await UpdateGitHubReadme() - return response.status(200).send({ - message: 'State successfully updated !' - }) - } - - public async setListeningStatus ({request, response}: HttpContextContract) { - const listening = await request.input('listening') - await Redis.set('artapi/states/listening', listening) - await UpdateGitHubReadme() - return response.status(200).send({ - message: 'State successfully updated !' - }) + public getStatus(state: number): string { + return state === 1 ? "Yes" : "No" } } - -function getStatus(state: string) { - return state === "true" -} diff --git a/app/Controllers/Http/StatsController.ts b/app/Controllers/Http/StatsController.ts deleted file mode 100644 index 9bac89f..0000000 --- a/app/Controllers/Http/StatsController.ts +++ /dev/null @@ -1,54 +0,0 @@ -import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' -import {getTotalStats, getWeeklyStats, getMonthlyStats, getDailyStats} from 'App/Helpers/StatsHelper' -import DockerBuild from "App/Models/DockerBuild" -import DockerCommand from "App/Models/DockerCommand" -import {UpdateGitHubReadme} from "App/tasks/UpdateGithubReadme"; - -export default class StatsController { - - public async get ({response}: HttpContextContract) { - const daily = await getDailyStats() - const weekly = await getWeeklyStats() - const monthly = await getMonthlyStats() - const total = await getTotalStats() - return response.status(200).send({ - daily: daily, - weekly: weekly, - monthly: monthly, - total: total, - }) - } - - public async incrementBuild () { - const date = new Date() - const last_entry = await DockerBuild.findBy('created_at', date) - - if (last_entry) { - last_entry.builds = last_entry.builds ++ - await last_entry.save() - } else { - await DockerBuild.create({ - builds: BigInt(1) - }) - } - - await UpdateGitHubReadme() - } - - public async incrementCommand () { - const date = new Date() - const last_entry = await DockerCommand.findBy('created_at', date) - - if (last_entry) { - last_entry.commands = last_entry.commands ++ - await last_entry.save() - } else { - await DockerCommand.create({ - commands: BigInt(1) - }) - } - - await UpdateGitHubReadme() - } - -} diff --git a/app/Helpers/GetWakatimeActivity.ts b/app/Helpers/GetWakatimeActivity.ts new file mode 100644 index 0000000..78f995e --- /dev/null +++ b/app/Helpers/GetWakatimeActivity.ts @@ -0,0 +1,15 @@ +import axios from "axios"; +import Env from "@ioc:Adonis/Core/Env"; + +export default function getActivity() { + let last_activity = '' + axios.get('https://wakatime.com/api/v1/users/current', { + headers: { + 'Authorization': `Basic ${Env.get('WAKATIME_API_KEY')}` + } + }) + .then((res) => { + last_activity = res.data.last_heartbeat_at + }) + return last_activity +} diff --git a/app/Helpers/StatsHelper.ts b/app/Helpers/StatsHelper.ts deleted file mode 100644 index 87043c0..0000000 --- a/app/Helpers/StatsHelper.ts +++ /dev/null @@ -1,45 +0,0 @@ -import DockerCommand from "App/Models/DockerCommand"; -import DockerBuild from "App/Models/DockerBuild"; - -async function getDailyStats() { - const commands = await DockerCommand.query().where('created_at', '>', new Date().getTime()) - const builds = await DockerBuild.query().where('created_at', '>', new Date().getTime()) - - return { - docker_commands_run: commands.length, - docker_build_count: builds.length, - } -} - -async function getWeeklyStats() { - const commands = await DockerCommand.query().where('created_at', '>', new Date().getTime() - 1000 * 60 * 60 * 24 * 7) - const builds = await DockerBuild.query().where('created_at', '>', new Date().getTime() - 1000 * 60 * 60 * 24 * 7) - - return { - docker_commands_run: commands.length, - docker_build_count: builds.length, - } -} - -async function getMonthlyStats() { - const commands = await DockerCommand.query().where('created_at', '>', new Date().getMonth() - 1) - const builds = await DockerBuild.query().where('created_at', '>', new Date().getMonth() - 1) - - return { - docker_commands_run: commands.length, - docker_build_count: builds.length, - } -} - -async function getTotalStats() { - const commands = await DockerCommand.query() - const builds = await DockerBuild.query() - - return { - docker_commands_run: commands.length, - docker_build_count: builds.length - } -} - - -export {getMonthlyStats, getTotalStats, getWeeklyStats, getDailyStats} diff --git a/app/Models/DockerBuild.ts b/app/Models/DockerBuild.ts deleted file mode 100644 index 8d76380..0000000 --- a/app/Models/DockerBuild.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { DateTime } from 'luxon' -import { BaseModel, column } from '@ioc:Adonis/Lucid/Orm' - -export default class DockerBuild extends BaseModel { - @column({ isPrimary: true }) - public id: number - - @column() - public builds: bigint - - @column.dateTime({ autoCreate: true }) - public createdAt: DateTime -} diff --git a/app/Models/DockerCommand.ts b/app/Models/DockerCommand.ts deleted file mode 100644 index 5892642..0000000 --- a/app/Models/DockerCommand.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { DateTime } from 'luxon' -import { BaseModel, column } from '@ioc:Adonis/Lucid/Orm' - -export default class DockerCommand extends BaseModel { - @column({ isPrimary: true }) - public id: number - - @column() - public commands: bigint - - @column.dateTime({ autoCreate: true }) - public createdAt: DateTime -} diff --git a/app/tasks/UpdateGithubReadme.ts b/app/tasks/UpdateGithubReadme.ts index 0cf8987..9b4f0c4 100644 --- a/app/tasks/UpdateGithubReadme.ts +++ b/app/tasks/UpdateGithubReadme.ts @@ -1,24 +1,13 @@ -import {getDailyStats, getMonthlyStats, getTotalStats, getWeeklyStats} from "App/Helpers/StatsHelper"; import Redis from "@ioc:Adonis/Addons/Redis"; import axios from 'axios' import Env from "@ioc:Adonis/Core/Env"; export async function UpdateGitHubReadme(): Promise { - const daily_stats = await getDailyStats() - const weekly_stats = await getWeeklyStats() - const monthly = await getMonthlyStats() - const total_stats = await getTotalStats() - const sleeping = await Redis.get('artapi/states/sleeping') const learning = await Redis.get('artapi/states/learning') const developing = await Redis.get('artapi/states/developing') const listening_music = await Redis.get('artapi/states/listening') - const stats_table = `| Statistics | Daily | Weekly | Monthly | Total | -| :------------------------------------------ | ----------: | ----------: | -----------: | -----------: | -| :computer: Commands | **${daily_stats.docker_commands_run}** | **${weekly_stats.docker_commands_run}** | **${monthly.docker_commands_run}** | **${total_stats.docker_commands_run}** | -| :hammer: Docker Builds | **${daily_stats.docker_build_count}** | **${weekly_stats.docker_build_count}** | **${monthly.docker_build_count}** | **${total_stats.docker_build_count}** |` - const infos_table = `| Informations | State | | ---------------------------: | ------: | | :musical_note: Music Playing | **${getStatus(listening_music)}** | @@ -36,27 +25,17 @@ export async function UpdateGitHubReadme(): Promise { const content = Buffer.from(read_me.content, 'base64').toString() - const stats_table_check = '| Statistics' + content.split('| Statistics')[1] - if (!stats_table_check) change = true - const old_stats_table = stats_table_check.split('| Informations')[0] - if (!old_stats_table) change = true - const infos_table_check = '| Informations' + content.split('| Informations')[1] if (!infos_table_check) change = true const old_infos_table = infos_table_check.split('###### Curious')[0] if (!old_infos_table) change = true - if (old_infos_table == infos_table && old_stats_table == stats_table) change = false - if (!change) return - let new_content = content.replace(old_stats_table, stats_table + '\n\n'); - new_content = new_content.replace(old_infos_table, infos_table + '\n\n') - await axios.put('https://api.github.com/repos/ArthurDanjou/ArthurDanjou/contents/README.md', { message: 'Updating recent statistics & informations', - content: Buffer.from(new_content, 'utf8').toString('base64'), + content: Buffer.from(content.replace(old_infos_table, infos_table + '\n\n'), 'utf8').toString('base64'), sha: read_me.sha, author: { name: 'api.arthurdanjou.fr - API Automation', diff --git a/database/migrations/1617635419347_users.ts b/database/migrations/1617635419347_users.ts new file mode 100644 index 0000000..b1267ab --- /dev/null +++ b/database/migrations/1617635419347_users.ts @@ -0,0 +1,16 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class Users extends BaseSchema { + protected tableName = 'users' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id') + table.timestamps(true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/env.ts b/env.ts index 8084854..b5d921f 100644 --- a/env.ts +++ b/env.ts @@ -48,4 +48,5 @@ export default Env.rules({ //Mailgun MAILGUN_API_KEY: Env.schema.string(), + WAKATIME_API_KEY: Env.schema.string(), }) diff --git a/start/kernel.ts b/start/kernel.ts index 72ff201..98d1bb2 100644 --- a/start/kernel.ts +++ b/start/kernel.ts @@ -9,8 +9,7 @@ | */ -import Server from '@ioc:Adonis/Core/Server' - +import Server from "@ioc:Adonis/Core/Server"; /* |-------------------------------------------------------------------------- | Global middleware @@ -20,8 +19,9 @@ import Server from '@ioc:Adonis/Core/Server' | are defined for all HTTP requests. | */ + Server.middleware.register([ - 'Adonis/Core/BodyParserMiddleware', + //'Adonis/Core/BodyParserMiddleware', 'App/Middleware/SilentAuth', ]) diff --git a/start/routes.ts b/start/routes.ts index 39d560e..686aacb 100644 --- a/start/routes.ts +++ b/start/routes.ts @@ -8,18 +8,16 @@ const BASE_URL = "https://api.arthurdanjou.fr" Route.get('/', async ({response}: HttpContextContract) => { return response.status(200).send({ domain: BASE_URL, - version: "1.0", + version: "2.0", source: `${BASE_URL}/source`, healthCheck: `${BASE_URL}/health`, routes: { - arthur_data: `${BASE_URL}/me`, - stats_data: `${BASE_URL}/stats`, - states_data: `${BASE_URL}/states`, - locations_data: `${BASE_URL}/locations`, - locations_history: `${BASE_URL}/locations/history`, + profile: `${BASE_URL}/profile`, + stats: `${BASE_URL}/stats`, + states: `${BASE_URL}/states`, + locations: `${BASE_URL}/locations`, projects: `${BASE_URL}/projects` - }, - + } }) }) @@ -32,19 +30,15 @@ Route.get('health', async ({response}: HttpContextContract) => { return report.healthy ? response.ok(report) : response.badRequest(report) }) -Route.get('/me', 'MeController.me') +// ArtAPI +Route.get('/profile', 'ProfileController.me') Route.get('/locations', 'LocationsController.get') -Route.get('/locations/history', 'LocationsController.history') Route.get('/stats', 'StatsController.get') Route.get('/states', 'StatesController.get') Route.get('/projects', 'ProjectsController.get') -Route.resource('users', 'UsersController').only(['index', 'show']) -Route.get('/posts/:slug', 'PostsController.getLikes') -Route.get('/posts/is/:slug', 'PostsController.isLiked') -Route.post('/posts/:slug/like', 'PostsController.like') -Route.post('/posts/:slug/unlike', 'PostsController.unlike') -Route.resource('subscribers', 'SubscribersController').only(['index', 'show', 'store']) +Route.resource('users', 'UsersController').only(['index', 'show']) +Route.resource('subscribers', 'SubscribersController').only(['index', 'show', 'store']) Route.group(() => { Route.get('/', 'FileController.index') Route.get('/:filename', async ({ response, params }) => { @@ -54,13 +48,9 @@ Route.group(() => { Route.group(() => { Route.resource('users', 'UsersController').only(['store', 'update', 'destroy']) - Route.resource('posts', 'PostsController').only(['store', 'update', 'destroy']) Route.resource('subscribers', 'SubscribersController').only(['update', 'destroy']) Route.resource('files', 'FileController').only(['store', 'destroy']) - Route.post('/states/sleeping', 'StatesController.setSleepingStatus') - Route.post('/states/learning', 'StatesController.setLearningStatus') - Route.post('/states/developing', 'StatesController.setDevelopingStatus') - Route.post('/states/music', 'StatesController.setListeningStatus') + Route.post('/states', 'StatesController.set') Route.post('/stats/build', 'StatesController.incrementBuild') Route.post('/stats/command', 'StatesController.incrementCommand') Route.post('/locations', 'LocationsController.add') diff --git a/storage/ElectronJs.png b/storage/ElectronJs.png deleted file mode 100644 index 270da01..0000000 Binary files a/storage/ElectronJs.png and /dev/null differ diff --git a/storage/GoLang.png b/storage/GoLang.png deleted file mode 100644 index 0dbf29b..0000000 Binary files a/storage/GoLang.png and /dev/null differ diff --git a/storage/Java.png b/storage/Java.png deleted file mode 100644 index 2e3aba9..0000000 Binary files a/storage/Java.png and /dev/null differ diff --git a/storage/JavaScript.png b/storage/JavaScript.png deleted file mode 100644 index 37b87db..0000000 Binary files a/storage/JavaScript.png and /dev/null differ diff --git a/storage/Logo.jpg b/storage/Logo.jpg deleted file mode 100644 index d9db127..0000000 Binary files a/storage/Logo.jpg and /dev/null differ diff --git a/storage/MariaDB.png b/storage/MariaDB.png deleted file mode 100644 index 092a2d6..0000000 Binary files a/storage/MariaDB.png and /dev/null differ diff --git a/storage/NuxtJs.png b/storage/NuxtJs.png deleted file mode 100644 index 4a55181..0000000 Binary files a/storage/NuxtJs.png and /dev/null differ diff --git a/storage/TwitterBanner.png b/storage/TwitterBanner.png deleted file mode 100644 index 92461aa..0000000 Binary files a/storage/TwitterBanner.png and /dev/null differ diff --git a/storage/TypeScript.png b/storage/TypeScript.png deleted file mode 100644 index 4c97153..0000000 Binary files a/storage/TypeScript.png and /dev/null differ diff --git a/storage/VueJs.png b/storage/VueJs.png deleted file mode 100644 index 1ae2074..0000000 Binary files a/storage/VueJs.png and /dev/null differ diff --git a/storage/cercle-cv.png b/storage/cercle-cv.png deleted file mode 100644 index 14c4e0a..0000000 Binary files a/storage/cercle-cv.png and /dev/null differ diff --git a/storage/website.png b/storage/website.png deleted file mode 100644 index 6f79a38..0000000 Binary files a/storage/website.png and /dev/null differ diff --git a/yarn.lock b/yarn.lock index 8d3c84e..441adee 100644 --- a/yarn.lock +++ b/yarn.lock @@ -307,6 +307,21 @@ resolved "https://registry.yarnpkg.com/@kdf/salt/-/salt-2.0.1.tgz#2d355a764524fa85217609addc376084b71de385" integrity sha512-1RBY7HcGYuWBm0+4ygjdRerN+mhpuT5picGB6+azqUXsz/IZljegrKkeHRiV6wuxY8n4HrxOuw8ou7JuGxRWdQ== +"@mapbox/node-pre-gyp@^1.0.1": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.2.tgz#c5f9261ba86afcc7085a8250ee9fa222b0238be9" + integrity sha512-5FRuyoOeDBR7tR+zj+pH52j1uQ2Cyp01umBcvFOw+Q6zs6gqN7FWz/k6cbaxKAxsjBuGTyMMG8aKgt+B9PX4cQ== + dependencies: + detect-libc "^1.0.3" + https-proxy-agent "^5.0.0" + make-dir "^3.1.0" + node-fetch "^2.6.1" + nopt "^5.0.0" + npmlog "^4.1.2" + rimraf "^3.0.2" + semver "^7.3.4" + tar "^6.1.0" + "@mrmlnc/readdir-enhanced@^2.2.1": version "2.2.1" resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" @@ -479,9 +494,9 @@ integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ== "@types/faker@^5.1.6": - version "5.1.7" - resolved "https://registry.yarnpkg.com/@types/faker/-/faker-5.1.7.tgz#1c3f0655f6e912f5578ce40baa941ab8705fc0ef" - integrity sha512-ByseCEyhb+64fapaFR/yASUfAU+Ia4LpCnHhoNMQJFSIBvbtFoEZQB0elwrSF/idpKL5OZvmZhCCukGV8Zi22w== + version "5.5.0" + resolved "https://registry.yarnpkg.com/@types/faker/-/faker-5.5.0.tgz#c1d1d3015559e0f7ca3a7a2e3a2ee31066d5a0f9" + integrity sha512-WPBf6jgCsRrbPrgDuWHfbI+cd2CT33JUK+w8NM8jU7KmNr9PF+2eKhD0DKV32nMlyzdMnTHc5TSAG1jpkZbN5A== "@types/glob@^7.1.1": version "7.1.3" @@ -637,6 +652,13 @@ adonis-preset-ts@^2.1.0: resolved "https://registry.yarnpkg.com/adonis-preset-ts/-/adonis-preset-ts-2.1.0.tgz#3fccdee1c82c574114dc089d8c76dddf5a223054" integrity sha512-cQH/NP250gOF9k3TTDhVsTOPSAvyH4MhKVZ4ryYiihA+vnP27sut1gVIrRas3Evl5d2wEgWVGI5DgdP/ZFSk0w== +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== + dependencies: + debug "4" + aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" @@ -718,13 +740,13 @@ are-we-there-yet@~1.1.2: readable-stream "^2.0.6" argon2@^0.27.1: - version "0.27.1" - resolved "https://registry.yarnpkg.com/argon2/-/argon2-0.27.1.tgz#4ff1dda0de4f5a2089f373bba5c2c6962e0f0668" - integrity sha512-On68kSinTh4DOlLVCEYgQYpx0yuGRsqU9UwV7jUB26PWv+092r8Uz891KFVEqdsksiDXDhA7kXL4z3in/FBItg== + version "0.27.2" + resolved "https://registry.yarnpkg.com/argon2/-/argon2-0.27.2.tgz#f334ca15aee748739ac81f76b85d197841e8cdcc" + integrity sha512-evnzS/Q9rj6ahaaCJjLDoJo9ZuXHhVL2BrBz3wFHb5/i9zAJovBuIY+5t2En7tJjhFXs4O3rUZDeGZxBiDOLwQ== dependencies: + "@mapbox/node-pre-gyp" "^1.0.1" "@phc/format" "^1.0.0" node-addon-api "^3.0.2" - node-pre-gyp "^0.17.0" opencollective-postinstall "^2.0.3" args@^5.0.1: @@ -1049,10 +1071,10 @@ chokidar@^3.5.1: optionalDependencies: fsevents "~2.3.1" -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== class-utils@^0.3.5: version "0.3.6" @@ -1304,20 +1326,13 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -debug@4.3.1, debug@^4.3.1: +debug@4, debug@4.3.1, debug@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: ms "2.1.2" -debug@^3.2.6: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - debug@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" @@ -1581,9 +1596,9 @@ extglob@^2.0.4: to-regex "^3.0.1" faker@^5.4.0: - version "5.5.1" - resolved "https://registry.yarnpkg.com/faker/-/faker-5.5.1.tgz#30e4e8ba15c8c08d0494ba935f247d8e2469675d" - integrity sha512-JCFXcVesClQ6RlSWmBMFQmGDAZq6hjbJAFgKALx31uPaQC6p3SWT2ojaJGD8bMQri+8VNqDOkI2F8QC+ABvZng== + version "5.5.2" + resolved "https://registry.yarnpkg.com/faker/-/faker-5.5.2.tgz#d6f99923fb757b26733a6d2396ddb448ac5bb446" + integrity sha512-6G3lzZXWjWfqTJDS9KhHFIislZMGdrzDqews3T14E/dsANVbs3YT4A3jSNDrbA/gbtmjLuKJx9DzcLucdXBqBw== fast-deep-equal@^3.1.3: version "3.1.3" @@ -1719,12 +1734,12 @@ fs-extra@^9.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-minipass@^1.2.5: - 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@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: - minipass "^2.6.0" + minipass "^3.0.0" fs-readdir-recursive@^1.1.0: version "1.1.0" @@ -2004,12 +2019,20 @@ http2-wrapper@^1.0.0-beta.5.2: 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== + dependencies: + agent-base "6" + debug "4" + 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== -iconv-lite@0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -2026,13 +2049,6 @@ igniculus@^1.5.0: resolved "https://registry.yarnpkg.com/igniculus/-/igniculus-1.5.0.tgz#f6d5e7784dbe948b4e6a8a22a54d365de90623d0" integrity sha1-9tXneE2+lItOaooipU02XekGI9A= -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - ignore@^4.0.3: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -2072,9 +2088,9 @@ interpret@^2.2.0: integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== ioredis@^4.24.3: - version "4.24.5" - resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.24.5.tgz#32f56ccb04d2e9ff00aa935caf348fd4e19867b0" - integrity sha512-a1uk8WXM4Xe9bfYUJH17Up9ODEASjYCWiD/BKojPHp5YDDMX/QBOWxgSmrtpRE+ARdLYUoXSLeyGZyegLdHcOg== + version "4.24.6" + resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.24.6.tgz#e46dd45257848510c40b0d50f7c2cc266026552e" + integrity sha512-HxZHYYSC7URouhGKI7l7PhVuSMk6VcdnBMjUcIkW4DhKVqzutF7eixZHKHf51X0SCnbI0eljMtToEydCMIrA2g== dependencies: cluster-key-slot "^1.1.0" debug "^4.3.1" @@ -2485,7 +2501,7 @@ macroable@^5.1.1: resolved "https://registry.yarnpkg.com/macroable/-/macroable-5.1.1.tgz#0001338592467570f3d823c54fd94697e3a5f85b" integrity sha512-az63yGhRPuJWAwJuDHxuWwvVF0+5S9m3u/mtuLcFtmESSFUxZxSZXQYp3SOiGnyqVScLn8b5nSDQXQCtMlP9LA== -make-dir@^3.0.0, make-dir@^3.0.2: +make-dir@^3.0.0, make-dir@^3.0.2, 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== @@ -2575,10 +2591,10 @@ micromatch@^3.1.10: snapdragon "^0.8.1" to-regex "^3.0.2" -mime-db@1.46.0: - version "1.46.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.46.0.tgz#6267748a7f799594de3cbc8cde91def349661cee" - integrity sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ== +mime-db@1.47.0: + version "1.47.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" + integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== mime-kind@^3.0.0: version "3.0.0" @@ -2589,11 +2605,11 @@ mime-kind@^3.0.0: mime-types "^2.1.24" mime-types@^2.1.24, mime-types@^2.1.29, mime-types@~2.1.24: - version "2.1.29" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.29.tgz#1d4ab77da64b91f5f72489df29236563754bb1b2" - integrity sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ== + version "2.1.30" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" + integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== dependencies: - mime-db "1.46.0" + mime-db "1.47.0" mime@1.6.0: version "1.6.0" @@ -2627,25 +2643,25 @@ minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist@^1.2.0, minimist@^1.2.5: +minimist@^1.2.0: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -minipass@^2.6.0, minipass@^2.8.6, 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== +minipass@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" + yallist "^4.0.0" -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== dependencies: - minipass "^2.9.0" + minipass "^3.0.0" + yallist "^4.0.0" mixin-deep@^1.2.0: version "1.3.2" @@ -2655,12 +2671,10 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@^0.5.0, mkdirp@^0.5.5: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" +mkdirp@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== mri@1.1.4: version "1.1.4" @@ -2708,7 +2722,7 @@ ms@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, ms@^2.1.3: +ms@^2.1.3: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -2758,15 +2772,6 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -needle@^2.5.2: - version "2.6.0" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.6.0.tgz#24dbb55f2509e2324b4a99d61f413982013ccdbe" - integrity sha512-KKYdza4heMsEfSWD7VPUIz3zX2XDwOyX2d+geb4vrERZMT5RMU6ujjaD+I5Yr54uZxQ2w6XRTAhHBbSCyovZBg== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -2797,27 +2802,16 @@ node-emoji@^1.10.0: dependencies: lodash.toarray "^4.4.0" +node-fetch@^2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + node-modules-regexp@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-pre-gyp@^0.17.0: - version "0.17.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.17.0.tgz#5af3f7b4c3848b5ed00edc3d298ff836daae5f1d" - integrity sha512-abzZt1hmOjkZez29ppg+5gGqdPLUuJeAEwVPtHYEJgx0qzttCbcKFpxrCQn2HYbwCv2c+7JwH4BgEzFkUGpn4A== - dependencies: - detect-libc "^1.0.3" - mkdirp "^0.5.5" - needle "^2.5.2" - nopt "^4.0.3" - npm-packlist "^1.4.8" - npmlog "^4.1.2" - rc "^1.2.8" - rimraf "^2.7.1" - semver "^5.7.1" - tar "^4.4.13" - node-repl-await@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/node-repl-await/-/node-repl-await-0.1.2.tgz#dff7fcdca39a7eaa88e596b5492b856d0800845d" @@ -2834,13 +2828,12 @@ nodemailer@^6.5.0: resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.5.0.tgz#d12c28d8d48778918e25f1999d97910231b175d9" integrity sha512-Tm4RPrrIZbnqDKAvX+/4M+zovEReiKlEXWDzG4iwtpL9X34MJY+D5LnQPH/+eghe8DLlAVshHAJZAZWBGhkguw== -nopt@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== +nopt@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-5.0.0.tgz#530942bb58a512fccafe53fe210f13a25355dc88" + integrity sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ== dependencies: abbrev "1" - osenv "^0.1.4" normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" @@ -2857,27 +2850,6 @@ normalize-url@^5.3.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-5.3.0.tgz#8959b3cdaa295b61592c1f245dded34b117618dd" integrity sha512-9/nOVLYYe/dO/eJeQUNaGUF4m4Z5E7cb9oNTKabH+bNf19mqj60txTcveQxL0GlcWLXCxkOu2/LwL8oW0idIDA== -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.4.8: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - 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" @@ -2968,24 +2940,6 @@ opencollective-postinstall@^2.0.3: resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-tmpdir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - p-all@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-all/-/p-all-2.1.0.tgz#91419be56b7dee8fe4c5db875d55e0da084244a0" @@ -3468,14 +3422,14 @@ rev-hash@^3.0.0: resolved "https://registry.yarnpkg.com/rev-hash/-/rev-hash-3.0.0.tgz#951d73d02b9606ea4bbb7ee3d93c252cd8556ce5" integrity sha512-s+87HfEKAu95TaTxnbCobn0/BkbzR23LHSwVdYvr8mn5+PPjzy+hTWyh92b5oaLgig9TKPe5d6ZcubsVBtUrZg== -rimraf@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" - integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== dependencies: glob "^7.1.3" -safe-buffer@*, safe-buffer@5.2.1, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: +safe-buffer@*, safe-buffer@5.2.1, safe-buffer@^5.1.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== @@ -3497,12 +3451,7 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - -semver@^5.6.0, semver@^5.7.1: +semver@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -3512,7 +3461,7 @@ semver@^6.0.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -semver@^7.3.5: +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== @@ -3688,9 +3637,9 @@ snapdragon@^0.8.1: use "^3.1.0" sonic-boom@^1.0.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-1.4.0.tgz#d6d35196c32609b46193145afc1174a8c692d21e" - integrity sha512-1xUAszhQBOrjk7uisbStQZYkZxD3vkYlCUw5qzOblWQ1ILN5v0dVPAs+QPgszzoPmbdWx6jyT9XiLJ95JdlLiQ== + version "1.4.1" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-1.4.1.tgz#d35d6a74076624f12e6f917ade7b9d75e918f53e" + integrity sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg== dependencies: atomic-sleep "^1.0.0" flatstr "^1.0.12" @@ -3900,18 +3849,17 @@ supports-hyperlinks@^2.1.0: has-flag "^4.0.0" supports-color "^7.0.0" -tar@^4.4.13: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== +tar@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.0.tgz#d1724e9bcc04b977b18d5c573b333a2207229a83" + integrity sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA== dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" + 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" tarn@^3.0.1: version "3.0.1" @@ -4146,11 +4094,6 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"