From dc4919fcd17afbbc8fa28a8f43fb709913787b71 Mon Sep 17 00:00:00 2001 From: Arthur Danjou Date: Mon, 21 Jun 2021 21:28:51 +0200 Subject: [PATCH 001/244] Working on new features --- app/Controllers/Http/GuestBookController.ts | 12 ++++--- app/Controllers/Http/LocationsController.ts | 2 +- app/Controllers/Http/ProjectsController.ts | 2 +- app/Controllers/Http/SubscribersController.ts | 21 ++++++++++++ app/Controllers/Http/UsersController.ts | 8 ++--- app/Models/Subscriber.ts | 16 +++++++++ .../{StoreValidator.ts => GuestValidator.ts} | 2 +- ...oreValidator.ts => SubscriberValidator.ts} | 5 ++- app/Validators/subscriber/UpdateValidator.ts | 21 ------------ ...toreValidator.ts => UserStoreValidator.ts} | 2 +- ...ateValidator.ts => UserUpdateValidator.ts} | 2 +- .../migrations/1603020084373_subscribers.ts | 1 - database/migrations/1605093034793_users.ts | 34 ------------------- .../1608409461999_docker_commands.ts | 17 ---------- .../migrations/1608409468598_docker_builds.ts | 17 ---------- start/routes.ts | 16 ++++++--- 16 files changed, 66 insertions(+), 112 deletions(-) create mode 100644 app/Controllers/Http/SubscribersController.ts create mode 100644 app/Models/Subscriber.ts rename app/Validators/guestbook/{StoreValidator.ts => GuestValidator.ts} (93%) rename app/Validators/subscriber/{StoreValidator.ts => SubscriberValidator.ts} (86%) delete mode 100644 app/Validators/subscriber/UpdateValidator.ts rename app/Validators/users/{StoreValidator.ts => UserStoreValidator.ts} (93%) rename app/Validators/users/{UpdateValidator.ts => UserUpdateValidator.ts} (95%) delete mode 100644 database/migrations/1605093034793_users.ts delete mode 100644 database/migrations/1608409461999_docker_commands.ts delete mode 100644 database/migrations/1608409468598_docker_builds.ts diff --git a/app/Controllers/Http/GuestBookController.ts b/app/Controllers/Http/GuestBookController.ts index b7f80e7..fae543f 100644 --- a/app/Controllers/Http/GuestBookController.ts +++ b/app/Controllers/Http/GuestBookController.ts @@ -1,16 +1,18 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import GuestBookMessage from "../../Models/GuestBookMessage"; -import StoreValidator from "../../Validators/guestbook/StoreValidator"; +import GuestValidator from "../../Validators/guestbook/GuestValidator"; export default class GuestBookController { - public async index () { + public async get () { return GuestBookMessage.query().orderBy('created_at', 'desc') } - public async store ({request}: HttpContextContract) { - const data = await request.validate(StoreValidator) - return await GuestBookMessage.create(data) + public async store ({request, auth}: HttpContextContract) { + if (auth.isLoggedIn) { + const data = await request.validate(GuestValidator) + return await GuestBookMessage.create(data) + } } } diff --git a/app/Controllers/Http/LocationsController.ts b/app/Controllers/Http/LocationsController.ts index 29ffb5c..73fb1f9 100644 --- a/app/Controllers/Http/LocationsController.ts +++ b/app/Controllers/Http/LocationsController.ts @@ -13,7 +13,7 @@ export default class LocationsController { }) } - public async add ({ request, response }: HttpContextContract) { + public async store ({ request, response }: HttpContextContract) { const data = await request.validate(LocationValidator) await Location.create(data) return response.status(200).send({ diff --git a/app/Controllers/Http/ProjectsController.ts b/app/Controllers/Http/ProjectsController.ts index 7b031e0..212ce49 100644 --- a/app/Controllers/Http/ProjectsController.ts +++ b/app/Controllers/Http/ProjectsController.ts @@ -11,7 +11,7 @@ export default class ProjectsController { }) } - public async add ({ request, response}: HttpContextContract) { + public async store ({ request, response}: HttpContextContract) { const data = await request.validate(ProjectValidator) await Project.create(data) return response.status(200).send({ diff --git a/app/Controllers/Http/SubscribersController.ts b/app/Controllers/Http/SubscribersController.ts new file mode 100644 index 0000000..198b699 --- /dev/null +++ b/app/Controllers/Http/SubscribersController.ts @@ -0,0 +1,21 @@ +import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' +import SubscriberValidator from "../../Validators/subscriber/SubscriberValidator"; +import Subscriber from "../../Models/Subscriber"; + +export default class SubscribersController { + + public async get ({ response }: HttpContextContract) { + return response.status(200).send({ + count: Subscriber.query().count + }) + } + + public async store ({ request, response }: HttpContextContract) { + const data = await request.validate(SubscriberValidator) + await Subscriber.create(data) + return response.status(200).send({ + message: 'Subscriber successfully registered !' + }) + } + +} diff --git a/app/Controllers/Http/UsersController.ts b/app/Controllers/Http/UsersController.ts index 166182f..18f5c78 100644 --- a/app/Controllers/Http/UsersController.ts +++ b/app/Controllers/Http/UsersController.ts @@ -1,7 +1,7 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import User from "App/Models/User"; -import StoreValidator from "App/Validators/users/StoreValidator"; -import UpdateValidator from "App/Validators/users/UpdateValidator"; +import UserStoreValidator from "../../../app/Validators/users/UserStoreValidator"; +import UserUpdateValidator from "../../../app/Validators/users/UserUpdateValidator"; export default class UsersController { @@ -10,7 +10,7 @@ export default class UsersController { } public async store ({request}: HttpContextContract) { - const data = await request.validate(StoreValidator) + const data = await request.validate(UserStoreValidator) return await User.create(data) } @@ -20,7 +20,7 @@ export default class UsersController { public async update({ request, params, response }: HttpContextContract) { const user = await User.findOrFail(params.id) - const data = await request.validate(UpdateValidator) + const data = await request.validate(UserUpdateValidator) const { email } = data const user2 = await User.findBy('email', email) diff --git a/app/Models/Subscriber.ts b/app/Models/Subscriber.ts new file mode 100644 index 0000000..8464704 --- /dev/null +++ b/app/Models/Subscriber.ts @@ -0,0 +1,16 @@ +import { DateTime } from 'luxon' +import { BaseModel, column } from '@ioc:Adonis/Lucid/Orm' + +export default class Subscriber extends BaseModel { + @column({ isPrimary: true }) + public id: number + + @column() + public email: string + + @column.dateTime({ autoCreate: true }) + public createdAt: DateTime + + @column.dateTime({ autoCreate: true, autoUpdate: true }) + public updatedAt: DateTime +} diff --git a/app/Validators/guestbook/StoreValidator.ts b/app/Validators/guestbook/GuestValidator.ts similarity index 93% rename from app/Validators/guestbook/StoreValidator.ts rename to app/Validators/guestbook/GuestValidator.ts index 10463d6..dca0283 100644 --- a/app/Validators/guestbook/StoreValidator.ts +++ b/app/Validators/guestbook/GuestValidator.ts @@ -1,7 +1,7 @@ import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' import {rules, schema} from '@ioc:Adonis/Core/Validator' -export default class StoreValidator { +export default class GuestValidator { constructor (private ctx: HttpContextContract) { } diff --git a/app/Validators/subscriber/StoreValidator.ts b/app/Validators/subscriber/SubscriberValidator.ts similarity index 86% rename from app/Validators/subscriber/StoreValidator.ts rename to app/Validators/subscriber/SubscriberValidator.ts index f077768..6c44bed 100644 --- a/app/Validators/subscriber/StoreValidator.ts +++ b/app/Validators/subscriber/SubscriberValidator.ts @@ -1,7 +1,7 @@ import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' import {rules, schema} from '@ioc:Adonis/Core/Validator' -export default class StoreValidator { +export default class SubscriberValidator { constructor (private ctx: HttpContextContract) { } @@ -9,8 +9,7 @@ export default class StoreValidator { email: schema.string({ trim: true }, [ rules.email(), rules.unique({table: 'subscribers', column: 'email'}) - ]), - name: schema.string() + ]) }) public cacheKey = this.ctx.routeKey diff --git a/app/Validators/subscriber/UpdateValidator.ts b/app/Validators/subscriber/UpdateValidator.ts deleted file mode 100644 index a879367..0000000 --- a/app/Validators/subscriber/UpdateValidator.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' -import {rules, schema} from '@ioc:Adonis/Core/Validator' - -export default class UpdateValidator { - constructor (private ctx: HttpContextContract) { - } - - public schema = schema.create({ - email: schema.string({ trim: true }, [ - rules.email(), - rules.unique({table: 'subscribers', column: 'email'}) - ]), - name: schema.string.optional() - }) - - public cacheKey = this.ctx.routeKey - - public messages = { - required: 'Le champ {{field}} doit être valide !' - } -} diff --git a/app/Validators/users/StoreValidator.ts b/app/Validators/users/UserStoreValidator.ts similarity index 93% rename from app/Validators/users/StoreValidator.ts rename to app/Validators/users/UserStoreValidator.ts index a27168d..a9749c8 100644 --- a/app/Validators/users/StoreValidator.ts +++ b/app/Validators/users/UserStoreValidator.ts @@ -1,7 +1,7 @@ import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' import {rules, schema} from '@ioc:Adonis/Core/Validator' -export default class StoreValidator { +export default class UserStoreValidator { constructor (private ctx: HttpContextContract) { } diff --git a/app/Validators/users/UpdateValidator.ts b/app/Validators/users/UserUpdateValidator.ts similarity index 95% rename from app/Validators/users/UpdateValidator.ts rename to app/Validators/users/UserUpdateValidator.ts index b58b427..9badcf3 100644 --- a/app/Validators/users/UpdateValidator.ts +++ b/app/Validators/users/UserUpdateValidator.ts @@ -1,7 +1,7 @@ import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' import {rules, schema} from '@ioc:Adonis/Core/Validator' -export default class UpdateValidator { +export default class UserUpdateValidator { constructor (private ctx: HttpContextContract) { } diff --git a/database/migrations/1603020084373_subscribers.ts b/database/migrations/1603020084373_subscribers.ts index 5fb9837..6a3d955 100644 --- a/database/migrations/1603020084373_subscribers.ts +++ b/database/migrations/1603020084373_subscribers.ts @@ -6,7 +6,6 @@ export default class Subscribers extends BaseSchema { public async up () { this.schema.createTable(this.tableName, (table) => { table.increments('id').primary() - table.string('name') table.string('email').notNullable() table.timestamps(true) }) diff --git a/database/migrations/1605093034793_users.ts b/database/migrations/1605093034793_users.ts deleted file mode 100644 index b5cf8b9..0000000 --- a/database/migrations/1605093034793_users.ts +++ /dev/null @@ -1,34 +0,0 @@ -import BaseSchema from '@ioc:Adonis/Lucid/Schema' - -export default class UsersSchema extends BaseSchema { - protected tableName = 'users' - - public async up () { - this.schema.createTable(this.tableName, (table) => { - table.increments('id').primary() - table.string('email', 255).notNullable() - table.string('password', 180).defaultTo(this.randomPassword()).notNullable() - table.boolean('is_confirmed').defaultTo(false).notNullable() - table.string('remember_me_token').defaultTo(null).nullable() - table.string('confirmation_token').defaultTo(null).nullable() - table.timestamps(true) - }) - } - - private randomPassword () { - let chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - let password = '' - let passwordLength = 12 - - for (let i = 0; i < passwordLength; i++) { - let rnum = Math.floor(Math.random() * chars.length); - password += chars.substring(rnum,rnum+1); - } - - return password - } - - public async down () { - this.schema.dropTable(this.tableName) - } -} diff --git a/database/migrations/1608409461999_docker_commands.ts b/database/migrations/1608409461999_docker_commands.ts deleted file mode 100644 index f4fa533..0000000 --- a/database/migrations/1608409461999_docker_commands.ts +++ /dev/null @@ -1,17 +0,0 @@ -import BaseSchema from '@ioc:Adonis/Lucid/Schema' - -export default class DockerCommands extends BaseSchema { - protected tableName = 'docker_commands' - - public async up () { - this.schema.createTable(this.tableName, (table) => { - table.increments('id') - table.bigInteger('commands') - table.timestamps(true) - }) - } - - public async down () { - this.schema.dropTable(this.tableName) - } -} diff --git a/database/migrations/1608409468598_docker_builds.ts b/database/migrations/1608409468598_docker_builds.ts deleted file mode 100644 index 1c47f1b..0000000 --- a/database/migrations/1608409468598_docker_builds.ts +++ /dev/null @@ -1,17 +0,0 @@ -import BaseSchema from '@ioc:Adonis/Lucid/Schema' - -export default class DockerBuilds extends BaseSchema { - protected tableName = 'docker_builds' - - public async up () { - this.schema.createTable(this.tableName, (table) => { - table.increments('id') - table.bigInteger('builds') - table.timestamps(true) - }) - } - - public async down () { - this.schema.dropTable(this.tableName) - } -} diff --git a/start/routes.ts b/start/routes.ts index 2f12c38..4f4849d 100644 --- a/start/routes.ts +++ b/start/routes.ts @@ -41,6 +41,7 @@ Route.get('/states', 'StatesController.get') Route.get('/projects', 'ProjectsController.get') Route.resource('users', 'UsersController').only(['index', 'show']) + Route.group(() => { Route.get('/', 'FileController.index') Route.get('/:filename', async ({ response, params }) => { @@ -51,22 +52,27 @@ Route.group(() => { Route.group(() => { Route.resource('users', 'UsersController').only(['store', 'update', 'destroy']) Route.resource('files', 'FileController').only(['store', 'destroy']) - Route.post('/locations', 'LocationsController.add') - Route.post('/projects', 'ProjectsController.add') + Route.post('/locations', 'LocationsController.store') + Route.post('/projects', 'ProjectsController.store') Route.resource('guestbook', 'GuestBookController').only(['index', 'show']) }).middleware('auth:web') Route.group(() => { - // ArtAPI Route.post('form', 'FormsController.send') - // ArtSite + Route.group(() => { Route.get('/:slug', 'PostsController.getLikes') Route.post('/:slug/like', 'PostsController.like') Route.post('/:slug/unlike', 'PostsController.unlike') }).prefix('posts') -}).middleware('auth:api') + + Route.get('subscribers', 'SubscribersController.get') + Route.post('subscribers', 'SubscribersController.store') + + Route.get('guestbook', 'GuestBookController.get') + Route.post('guestbook', 'GuestBookController.store') +})//.middleware('auth:api') Route.group(() => { Route.get('/me', 'AuthController.user').middleware('auth') From 0f7a29d195c43ad35474ac8237e72192c40f89f7 Mon Sep 17 00:00:00 2001 From: Arthur Danjou Date: Mon, 21 Jun 2021 21:29:22 +0200 Subject: [PATCH 002/244] Working on new features --- start/routes.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start/routes.ts b/start/routes.ts index 4f4849d..0872abe 100644 --- a/start/routes.ts +++ b/start/routes.ts @@ -72,7 +72,7 @@ Route.group(() => { Route.get('guestbook', 'GuestBookController.get') Route.post('guestbook', 'GuestBookController.store') -})//.middleware('auth:api') +}).middleware('auth:api') Route.group(() => { Route.get('/me', 'AuthController.user').middleware('auth') From 1605721b571f20f01a5c28c488a797ef08c2366a Mon Sep 17 00:00:00 2001 From: Arthur Danjou Date: Mon, 21 Jun 2021 22:10:17 +0200 Subject: [PATCH 003/244] Working on new features --- app/Controllers/Http/AuthController.ts | 115 +++++++++++++++---------- start/routes.ts | 2 - 2 files changed, 71 insertions(+), 46 deletions(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index c5fa42e..f0229b2 100644 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -1,129 +1,156 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' -import User from "App/Models/User"; -import AuthValidator from "App/Validators/AuthValidator"; +import User from "../../Models/User"; +import AuthValidator from "../../Validators/AuthValidator"; import {AllyUserContract} from "@ioc:Adonis/Addons/Ally"; export default class AuthController { - public async loginWeb ({request, auth}: HttpContextContract) { + public async loginWeb ({ request, auth, response }: HttpContextContract) { const data = await request.validate(AuthValidator) const {email, password, remember_me } = data - - try { - await auth.attempt(email, password, remember_me) - const user = await User.query() - .where('id', auth.user!.id) - .firstOrFail() - if (!remember_me) { - await user.merge({ - rememberMeToken: '' - }).save() - } - return { user } - } catch (error) { - if (error.code === 'E_INVALID_AUTH_UID') return { error: "L'utilisateur n'a pas été trouvé" } - if (error.code === 'E_INVALID_AUTH_PASSWORD') return { error: "L'identifiant ou le mot de passe est incorrect" } + await auth.attempt(email, password, remember_me) + const user = await User.query() + .where('id', auth.user!.id) + .firstOrFail() + if (!remember_me) { + await user.merge({ + rememberMeToken: '' + }).save() } + return response.status(200).send({ + user: user + }) } - public async loginApi ({request, auth}: HttpContextContract) { + public async loginApi ({ request, auth, response }: HttpContextContract) { const email = request.input('email') const password = request.input('password') const token = await auth.use('api').attempt(email, password, { expiresIn: '2 days' }) - return token.toJSON() + return response.status(200).send(token.toJSON()) } - public async createInfiniteToken ({request, auth}: HttpContextContract) { + public async createInfiniteToken ({ request, auth, response }: HttpContextContract) { const email = request.input('email') const password = request.input('password') const token = await auth.use('api').attempt(email, password) - return token.toJSON() + return response.status(200).send(token.toJSON()) } - public async logoutWeb ({auth}: HttpContextContract) { + public async logoutWeb ({ auth, response }: HttpContextContract) { await auth.logout() - return { message: 'Vous avez été déconnecté' } + return response.status(200).send({ + message: 'You have been disconnected' + }) } - public async logoutApi ({auth}: HttpContextContract) { + public async logoutApi ({ auth, response }: HttpContextContract) { await auth.use('api').logout() - return { message: 'Vous avez été déconnecté' } + return response.status(200).send({ + message: 'You have been disconnected' + }) } - public async user ({auth}: HttpContextContract) { + public async user ({ auth, response }: HttpContextContract) { await auth.authenticate() - return await User.query() + const user = await User.query() .where('id', auth.user!.id) .firstOrFail() + return response.status(200).send({ + user: user + }) } - public async twitter ({ally, auth}: HttpContextContract) { + public async twitter ({ ally, auth, response }: HttpContextContract) { const twitter = ally.use('twitter') if (twitter.accessDenied()) { - return 'Access Denied' + return response.status(403).send({ + message: 'Access Denied' + }) } if (twitter.stateMisMatch()) { - return 'Request expired. Retry again' + return response.status(405).send({ + message: 'Request expired. Retry again' + }) } if (twitter.hasError()) { - return twitter.getError() + return response.status(500).send({ + message: twitter.getError() + }) } const twitterUser = await twitter.user() const user = await this.createUser(twitterUser) await auth.use('web').login(user) - return user + return response.status(200).send({ + user: user + }) } - public async github ({ally, auth}: HttpContextContract) { + public async github ({ ally, auth, response }: HttpContextContract) { const github = ally.use('github') if (github.accessDenied()) { - return 'Access Denied' + return response.status(403).send({ + message: 'Access Denied' + }) } if (github.stateMisMatch()) { - return 'Request expired. Retry again' + return response.status(405).send({ + message: 'Request expired. Retry again' + }) } if (github.hasError()) { - return github.getError() + return response.status(500).send({ + message: github.getError() + }) } const githubUser = await github.user() const user = await this.createUser(githubUser) await auth.use('web').login(user) - return user + return response.status(200).send({ + user: user + }) } - public async google ({ally, auth}: HttpContextContract) { + public async google ({ ally, auth, response, }: HttpContextContract) { const google = ally.use('google') if (google.accessDenied()) { - return 'Access Denied' + return response.status(403).send({ + message: 'Access Denied' + }) } if (google.stateMisMatch()) { - return 'Request expired. Retry again' + return response.status(405).send({ + message: 'Request expired. Retry again' + }) } if (google.hasError()) { - return google.getError() + return response.status(500).send({ + message: google.getError() + }) } const googleUser = await google.user() const user = await this.createUser(googleUser) await auth.use('web').login(user) - return user + return response.status(200).send({ + user: user + }) } - public async createUser(allyUser: AllyUserContract): Promise { + public async createUser (allyUser: AllyUserContract): Promise { return await User.firstOrCreate({ email: allyUser.email!, }, { diff --git a/start/routes.ts b/start/routes.ts index 0872abe..4c2c9f8 100644 --- a/start/routes.ts +++ b/start/routes.ts @@ -54,8 +54,6 @@ Route.group(() => { Route.resource('files', 'FileController').only(['store', 'destroy']) Route.post('/locations', 'LocationsController.store') Route.post('/projects', 'ProjectsController.store') - - Route.resource('guestbook', 'GuestBookController').only(['index', 'show']) }).middleware('auth:web') Route.group(() => { From 80655aaae45845ac5016180088b50f0f47425f5e Mon Sep 17 00:00:00 2001 From: Arthur Danjou Date: Mon, 21 Jun 2021 22:20:43 +0200 Subject: [PATCH 004/244] Working on new features --- app/Controllers/Http/StatesController.ts | 4 +--- app/Tasks/GetDiscordActivity.ts | 3 +++ app/{tasks => Tasks}/UpdateGithubReadme.ts | 0 3 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 app/Tasks/GetDiscordActivity.ts rename app/{tasks => Tasks}/UpdateGithubReadme.ts (100%) diff --git a/app/Controllers/Http/StatesController.ts b/app/Controllers/Http/StatesController.ts index b6b2d63..725b4fa 100644 --- a/app/Controllers/Http/StatesController.ts +++ b/app/Controllers/Http/StatesController.ts @@ -1,7 +1,6 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import Redis from "@ioc:Adonis/Addons/Redis"; -import {UpdateGitHubReadme} from "App/tasks/UpdateGithubReadme"; -import Logger from "@ioc:Adonis/Core/Logger"; +import {UpdateGitHubReadme} from "app/Tasks/UpdateGithubReadme"; export default class StatesController { @@ -52,7 +51,6 @@ export default class StatesController { message: 'State successfully updated !' }) } - Logger.info("Finish") } public getStatus(state: string | null): string { diff --git a/app/Tasks/GetDiscordActivity.ts b/app/Tasks/GetDiscordActivity.ts new file mode 100644 index 0000000..57f4b45 --- /dev/null +++ b/app/Tasks/GetDiscordActivity.ts @@ -0,0 +1,3 @@ +export async function UpdateGitHubReadMe(): Promise { + +} diff --git a/app/tasks/UpdateGithubReadme.ts b/app/Tasks/UpdateGithubReadme.ts similarity index 100% rename from app/tasks/UpdateGithubReadme.ts rename to app/Tasks/UpdateGithubReadme.ts From cb3681f3b1630598b887255d1b183d8f71c1eb40 Mon Sep 17 00:00:00 2001 From: Arthur Danjou Date: Sun, 27 Jun 2021 18:55:04 +0200 Subject: [PATCH 005/244] Working on emails --- .env.example | 6 ++++-- app/Mailers/FormConfirmation.ts | 3 ++- config/mail.ts | 20 ++++++++++++-------- contracts/mail.ts | 2 +- env.ts | 6 ++++-- pnpm-lock.yaml | 26 +++++++++++++------------- 6 files changed, 36 insertions(+), 27 deletions(-) diff --git a/.env.example b/.env.example index 92e298b..8e05d9e 100644 --- a/.env.example +++ b/.env.example @@ -27,8 +27,10 @@ API_VERSION= CACHE_VIEWS= -MAILGUN_API_KEY= -MAILGUN_URL= +SMTP_HOST= +SMTP_PORT= +SMTP_USERNAME= +SMTP_PASSWORD= GITHUB_CLIENT_ID= GITHUB_CLIENT_SECRET= diff --git a/app/Mailers/FormConfirmation.ts b/app/Mailers/FormConfirmation.ts index c3c3c77..235c3af 100644 --- a/app/Mailers/FormConfirmation.ts +++ b/app/Mailers/FormConfirmation.ts @@ -14,7 +14,8 @@ export default class FormConfirmation extends BaseMailer { public prepare(message: MessageContract) { message - .from('contact@arthurdanjou.fr') + .from('no-reply@arthurdanjou.fr') + .replyTo('contact@arthurdanjou.fr') .to(this.email) .subject('Confirmation Form') .html(this.html) diff --git a/config/mail.ts b/config/mail.ts index a547551..dd4fed5 100644 --- a/config/mail.ts +++ b/config/mail.ts @@ -18,7 +18,7 @@ const mailConfig: MailConfig = { | a mailer | */ - mailer: 'mailgun', + mailer: 'smtp', /* |-------------------------------------------------------------------------- @@ -36,17 +36,21 @@ const mailConfig: MailConfig = { mailers: { /* |-------------------------------------------------------------------------- - | Mailgun + | Smtp |-------------------------------------------------------------------------- | - | Uses Mailgun service for sending emails. + | Uses SMTP protocol for sending email | */ - mailgun: { - driver: 'mailgun', - baseUrl: 'https://api.mailgun.net/v3/', - key: Env.get('MAILGUN_API_KEY'), - domain: Env.get('MAILGUN_URL'), + smtp: { + driver: 'smtp', + host: Env.get('SMTP_HOST'), + port: Env.get('SMTP_PORT'), + auth: { + user: Env.get('SMTP_USERNAME'), + pass: Env.get('SMTP_PASSWORD'), + type: 'login', + } }, }, diff --git a/contracts/mail.ts b/contracts/mail.ts index efe2ba5..cb3413e 100644 --- a/contracts/mail.ts +++ b/contracts/mail.ts @@ -9,6 +9,6 @@ declare module '@ioc:Adonis/Addons/Mail' { import { MailDrivers } from '@ioc:Adonis/Addons/Mail' interface MailersList { - mailgun: MailDrivers['mailgun'], + smtp: MailDrivers['smtp'], } } diff --git a/env.ts b/env.ts index 54da07e..d4e8801 100644 --- a/env.ts +++ b/env.ts @@ -51,8 +51,10 @@ export default Env.rules({ API_VERSION: Env.schema.string(), //Mails - MAILGUN_API_KEY: Env.schema.string(), - MAILGUN_URL: Env.schema.string(), + SMTP_HOST: Env.schema.string({ format: 'host' }), + SMTP_PORT: Env.schema.number(), + SMTP_USERNAME: Env.schema.string(), + SMTP_PASSWORD: Env.schema.string(), //Socials Authentication GOOGLE_CLIENT_ID: Env.schema.string(), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a8323a8..308db41 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -280,7 +280,7 @@ packages: fast-deep-equal: 3.1.3 igniculus: 1.5.0 knex: 0.95.6_mysql@2.18.1 - knex-dynamic-connection: 2.1.0_mysql@2.18.1 + knex-dynamic-connection: 2.1.1_mysql@2.18.1 luxon: 1.27.0 macroable: 5.1.3 pretty-hrtime: 1.0.3 @@ -398,7 +398,7 @@ packages: marked-terminal: 4.1.1_marked@2.1.1 mrm-core: 6.0.0 mustache: 4.2.0 - open: 8.2.0 + open: 8.2.1 dev: true /@adonisjs/validator/11.0.2_dca74b6a7cfaf1624e10c0567ec6c737: @@ -415,7 +415,7 @@ packages: '@types/luxon': 1.27.0 '@types/validator': 13.1.4 luxon: 1.27.0 - normalize-url: 6.0.1 + normalize-url: 6.1.0 tmp-cache: 1.1.0 validator: 13.6.0 dev: false @@ -1069,7 +1069,7 @@ packages: http-cache-semantics: 4.1.0 keyv: 4.0.3 lowercase-keys: 2.0.0 - normalize-url: 6.0.1 + normalize-url: 6.1.0 responselike: 2.0.0 dev: false @@ -2637,8 +2637,8 @@ packages: resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==} engines: {node: '>=6'} - /knex-dynamic-connection/2.1.0_mysql@2.18.1: - resolution: {integrity: sha512-yi0aYQ0a4uTPqbzkqYwWquR9CzAVC+7ejPyx/l263031l5F2FtTAFvxxV1HDntnusn1XsiR7F+iCJ2LvYUJ2qA==} + /knex-dynamic-connection/2.1.1_mysql@2.18.1: + resolution: {integrity: sha512-/Lwg/T13eNRJVoSJ4e9SH3slVUmg37UHxDxVluAAKdJZxYVj8YsP2x50JSk310RmKsYbOZ8oB8SwVVEuRa4nYw==} dependencies: debug: 4.3.1 knex: 0.95.6_mysql@2.18.1 @@ -3413,8 +3413,8 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - /normalize-url/6.0.1: - resolution: {integrity: sha512-VU4pzAuh7Kip71XEmO9aNREYAdMHFGTVj/i+CaTImS8x0i1d3jUZkXhqluy/PRgjPLMgsLQulYY3PJ/aSbSjpQ==} + /normalize-url/6.1.0: + resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} engines: {node: '>=10'} dev: false @@ -3494,8 +3494,8 @@ packages: dependencies: mimic-fn: 2.1.0 - /open/8.2.0: - resolution: {integrity: sha512-O8uInONB4asyY3qUcEytpgwxQG3O0fJ/hlssoUHsBboOIRVZzT6Wq+Rwj5nffbeUhOdMjpXeISpDDzHCMRDuOQ==} + /open/8.2.1: + resolution: {integrity: sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==} engines: {node: '>=12'} dependencies: define-lazy-prop: 2.0.0 @@ -4649,8 +4649,8 @@ packages: engines: {node: '>= 12'} dev: true - /yargs-parser/20.2.7: - resolution: {integrity: sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==} + /yargs-parser/20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} engines: {node: '>=10'} dev: false @@ -4664,7 +4664,7 @@ packages: require-directory: 2.1.1 string-width: 4.2.2 y18n: 5.0.8 - yargs-parser: 20.2.7 + yargs-parser: 20.2.9 dev: false /youch-terminal/1.1.1: From 28810152b52fdc1dab0262fcd262a5538f0c1f1d Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 30 Jun 2021 16:37:16 +0200 Subject: [PATCH 006/244] Rename tasks directory --- app/Controllers/Http/StatesController.ts | 2 +- app/{tasks => Tasks}/UpdateGithubReadme.ts | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename app/{tasks => Tasks}/UpdateGithubReadme.ts (100%) diff --git a/app/Controllers/Http/StatesController.ts b/app/Controllers/Http/StatesController.ts index b6b2d63..d40723c 100644 --- a/app/Controllers/Http/StatesController.ts +++ b/app/Controllers/Http/StatesController.ts @@ -1,6 +1,6 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import Redis from "@ioc:Adonis/Addons/Redis"; -import {UpdateGitHubReadme} from "App/tasks/UpdateGithubReadme"; +import {UpdateGitHubReadme} from "app/Tasks/UpdateGithubReadme"; import Logger from "@ioc:Adonis/Core/Logger"; export default class StatesController { diff --git a/app/tasks/UpdateGithubReadme.ts b/app/Tasks/UpdateGithubReadme.ts similarity index 100% rename from app/tasks/UpdateGithubReadme.ts rename to app/Tasks/UpdateGithubReadme.ts From bc21d0d5083550892fccac037c4562b05771d701 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 30 Jun 2021 18:36:04 +0200 Subject: [PATCH 007/244] Working on OAuth --- config/ally.ts | 6 +- config/auth.ts | 63 +------------------ contracts/auth.ts | 13 ---- ..._tokens.ts => 1625068552541_api_tokens.ts} | 4 -- env.ts | 6 +- start/routes.ts | 43 ++++++------- 6 files changed, 27 insertions(+), 108 deletions(-) rename database/migrations/{1605093087010_api_tokens.ts => 1625068552541_api_tokens.ts} (88%) diff --git a/config/ally.ts b/config/ally.ts index 19ad0aa..42279d4 100644 --- a/config/ally.ts +++ b/config/ally.ts @@ -27,7 +27,7 @@ const allyConfig: AllyConfig = { driver: 'github', clientId: Env.get('GITHUB_CLIENT_ID'), clientSecret: Env.get('GITHUB_CLIENT_SECRET'), - callbackUrl: `${Env.get('HOST')}:${Env.get('PORT')}/auth/github`, + callbackUrl: `${Env.get('BASE_URL')}:${Env.get('PORT')}/auth/github/callback`, }, /* |-------------------------------------------------------------------------- @@ -38,7 +38,7 @@ const allyConfig: AllyConfig = { driver: 'twitter', clientId: Env.get('TWITTER_CLIENT_ID'), clientSecret: Env.get('TWITTER_CLIENT_SECRET'), - callbackUrl: `${Env.get('HOST')}:${Env.get('PORT')}/auth/twitter`, + callbackUrl: `${Env.get('BASE_URL')}:${Env.get('PORT')}/auth/twitter/callback`, }, /* |-------------------------------------------------------------------------- @@ -49,7 +49,7 @@ const allyConfig: AllyConfig = { driver: 'google', clientId: Env.get('GOOGLE_CLIENT_ID'), clientSecret: Env.get('GOOGLE_CLIENT_SECRET'), - callbackUrl: `${Env.get('HOST')}:${Env.get('PORT')}/auth/google`, + callbackUrl: `${Env.get('BASE_URL')}:${Env.get('PORT')}/auth/google/callback`, }, } diff --git a/config/auth.ts b/config/auth.ts index 557179b..1209c01 100644 --- a/config/auth.ts +++ b/config/auth.ts @@ -17,69 +17,8 @@ import { AuthConfig } from '@ioc:Adonis/Addons/Auth' | */ const authConfig: AuthConfig = { - guard: 'web', + guard: 'api', guards: { - /* - |-------------------------------------------------------------------------- - | Web Guard - |-------------------------------------------------------------------------- - | - | Web guard uses classic old school sessions for authenticating users. - | If you are building a standard web application, it is recommended to - | use web guard with session driver - | - */ - web: { - driver: 'session', - - provider: { - /* - |-------------------------------------------------------------------------- - | Driver - |-------------------------------------------------------------------------- - | - | Name of the driver - | - */ - driver: 'lucid', - - /* - |-------------------------------------------------------------------------- - | Identifier key - |-------------------------------------------------------------------------- - | - | The identifier key is the unique key on the model. In most cases specifying - | the primary key is the right choice. - | - */ - identifierKey: 'id', - - /* - |-------------------------------------------------------------------------- - | Uids - |-------------------------------------------------------------------------- - | - | Uids are used to search a user against one of the mentioned columns. During - | login, the auth module will search the user mentioned value against one - | of the mentioned columns to find their user record. - | - */ - uids: ['email'], - - /* - |-------------------------------------------------------------------------- - | Model - |-------------------------------------------------------------------------- - | - | The model to use for fetching or finding users. The model is imported - | lazily since the config files are read way earlier in the lifecycle - | of booting the app and the models may not be in a usable state at - | that time. - | - */ - model: () => import('App/Models/User'), - }, - }, /* |-------------------------------------------------------------------------- | OAT Guard diff --git a/contracts/auth.ts b/contracts/auth.ts index a498628..90916e2 100644 --- a/contracts/auth.ts +++ b/contracts/auth.ts @@ -55,19 +55,6 @@ declare module '@ioc:Adonis/Addons/Auth' { | */ interface GuardsList { - /* - |-------------------------------------------------------------------------- - | Web Guard - |-------------------------------------------------------------------------- - | - | The web guard uses sessions for maintaining user login state. It uses - | the `user` provider for fetching user details. - | - */ - web: { - implementation: SessionGuardContract<'user', 'web'>, - config: SessionGuardConfig<'user'>, - }, /* |-------------------------------------------------------------------------- | OAT Guard diff --git a/database/migrations/1605093087010_api_tokens.ts b/database/migrations/1625068552541_api_tokens.ts similarity index 88% rename from database/migrations/1605093087010_api_tokens.ts rename to database/migrations/1625068552541_api_tokens.ts index 1cf309c..ed8d363 100644 --- a/database/migrations/1605093087010_api_tokens.ts +++ b/database/migrations/1625068552541_api_tokens.ts @@ -10,10 +10,6 @@ export default class ApiTokens extends BaseSchema { table.string('name').notNullable() table.string('type').notNullable() table.string('token', 64).notNullable() - - /** - * "useTz: true" utilizes timezone option in PostgreSQL and MSSQL - */ table.timestamp('expires_at', { useTz: true }).nullable() table.timestamp('created_at', { useTz: true }).notNullable() }) diff --git a/env.ts b/env.ts index d4e8801..8f2d2db 100644 --- a/env.ts +++ b/env.ts @@ -17,7 +17,7 @@ import Env from '@ioc:Adonis/Core/Env' export default Env.rules({ //App - HOST: Env.schema.string({ format: 'host' }), + HOST: Env.schema.string(), PORT: Env.schema.number(), APP_KEY: Env.schema.string(), APP_NAME: Env.schema.string(), @@ -32,7 +32,7 @@ export default Env.rules({ //Mysql DB_CONNECTION: Env.schema.string(), - MYSQL_HOST: Env.schema.string({ format: 'host' }), + MYSQL_HOST: Env.schema.string(), MYSQL_PORT: Env.schema.number(), MYSQL_USER: Env.schema.string(), MYSQL_PASSWORD: Env.schema.string.optional(), @@ -47,7 +47,7 @@ export default Env.rules({ //Utils GITHUB_TOKEN: Env.schema.string(), GITHUB_SOURCE: Env.schema.string({ format: 'url' }), - BASE_URL: Env.schema.string({ format: 'url' }), + BASE_URL: Env.schema.string(), API_VERSION: Env.schema.string(), //Mails diff --git a/start/routes.ts b/start/routes.ts index 66e4327..6fc02cb 100644 --- a/start/routes.ts +++ b/start/routes.ts @@ -26,7 +26,7 @@ Route.get('/source', async ({response}: HttpContextContract) => { return response.redirect(Env.get('GITHUB_SOURCE')) }) -Route.get('health', async ({response}: HttpContextContract) => { +Route.get('/health', async ({response}: HttpContextContract) => { const report = await HealthCheck.getReport() const isLive = await HealthCheck.isLive() const isReady = await HealthCheck.isReady() @@ -36,31 +36,20 @@ Route.get('health', async ({response}: HttpContextContract) => { // ArtAPI Route.get('/profile', 'ProfileController.me') Route.get('/locations', 'LocationsController.get') -//Route.get('/stats', 'StatsController.get') +Route.get('/stats', 'StatsController.get') Route.get('/states', 'StatesController.get') Route.get('/projects', 'ProjectsController.get') -Route.resource('users', 'UsersController').only(['index', 'show']) - -Route.group(() => { - Route.get('/', 'FileController.index') - Route.get('/:filename', async ({ response, params }) => { - response.download(Application.makePath('storage', params.filename)) - }) -}).prefix('/files') - -Route.group(() => { - Route.resource('users', 'UsersController').only(['store', 'update', 'destroy']) - Route.resource('files', 'FileController').only(['store', 'destroy']) - Route.post('/locations', 'LocationsController.store') - Route.post('/projects', 'ProjectsController.store') -}).middleware('auth:web') - Route.group(() => { Route.post('form', 'FormsController.send') - Route.post('states/:state', 'StatesController.set') + Route.resource('users', 'UsersController') + Route.resource('files', 'FileController').only(['store', 'destroy']) + + Route.post('/locations', 'LocationsController.store') + Route.post('/projects', 'ProjectsController.store') + Route.group(() => { Route.get('/:slug', 'PostsController.getLikes') Route.post('/:slug/like', 'PostsController.like') @@ -72,7 +61,15 @@ Route.group(() => { Route.get('guestbook', 'GuestBookController.get') Route.post('guestbook', 'GuestBookController.store') -}).middleware('auth:api') + + Route.group(() => { + Route.get('/', 'FileController.index') + Route.get('/:filename', async ({ response, params }) => { + response.download(Application.makePath('storage', params.filename)) + }) + }).prefix('/files') + +}).middleware('auth') Route.group(() => { Route.get('/me', 'AuthController.user').middleware('auth') @@ -88,13 +85,13 @@ Route.group(() => { Route.get('/github/callback', 'AuthController.github') Route.get('/google/callback', 'AuthController.google') - Route.get('/twitter/redirect', async ({ ally}) => { + Route.get('/twitter', async ({ ally }) => { return ally.use('twitter').redirect() }) - Route.get('/github/redirect', async ({ ally}) => { + Route.get('/github', async ({ ally }) => { return ally.use('github').redirect() }) - Route.get('/google/redirect', async ({ ally}) => { + Route.get('/google', async ({ ally }) => { return ally.use('google').redirect() }) }).prefix('auth') From b263de65fa52d6e4272870073de2beac73757507 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 30 Jun 2021 19:12:29 +0200 Subject: [PATCH 008/244] Working on OAuth --- app/Controllers/Http/AuthController.ts | 41 +- app/Controllers/Http/GuestBookController.ts | 4 +- app/Controllers/Http/StatesController.ts | 2 +- app/Controllers/Http/SubscribersController.ts | 4 +- app/Controllers/Http/UsersController.ts | 4 +- config/ally.ts | 26 +- contracts/ally.ts | 8 +- pnpm-lock.yaml | 4683 ---------------- start/routes.ts | 7 +- yarn.lock | 4859 +++++++++++++++++ 10 files changed, 4893 insertions(+), 4745 deletions(-) delete mode 100644 pnpm-lock.yaml create mode 100644 yarn.lock diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index f0229b2..2bac585 100644 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -1,32 +1,14 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' -import User from "../../Models/User"; -import AuthValidator from "../../Validators/AuthValidator"; +import User from "App/Models/User"; import {AllyUserContract} from "@ioc:Adonis/Addons/Ally"; export default class AuthController { - public async loginWeb ({ request, auth, response }: HttpContextContract) { - const data = await request.validate(AuthValidator) - const {email, password, remember_me } = data - await auth.attempt(email, password, remember_me) - const user = await User.query() - .where('id', auth.user!.id) - .firstOrFail() - if (!remember_me) { - await user.merge({ - rememberMeToken: '' - }).save() - } - return response.status(200).send({ - user: user - }) - } - - public async loginApi ({ request, auth, response }: HttpContextContract) { + public async login ({ request, auth, response }: HttpContextContract) { const email = request.input('email') const password = request.input('password') - const token = await auth.use('api').attempt(email, password, { + const token = await auth.attempt(email, password, { expiresIn: '2 days' }) return response.status(200).send(token.toJSON()) @@ -35,24 +17,17 @@ export default class AuthController { public async createInfiniteToken ({ request, auth, response }: HttpContextContract) { const email = request.input('email') const password = request.input('password') - const token = await auth.use('api').attempt(email, password) + const token = await auth.attempt(email, password) return response.status(200).send(token.toJSON()) } - public async logoutWeb ({ auth, response }: HttpContextContract) { + public async logout ({ auth, response }: HttpContextContract) { await auth.logout() return response.status(200).send({ message: 'You have been disconnected' }) } - public async logoutApi ({ auth, response }: HttpContextContract) { - await auth.use('api').logout() - return response.status(200).send({ - message: 'You have been disconnected' - }) - } - public async user ({ auth, response }: HttpContextContract) { await auth.authenticate() const user = await User.query() @@ -86,7 +61,7 @@ export default class AuthController { const twitterUser = await twitter.user() const user = await this.createUser(twitterUser) - await auth.use('web').login(user) + await auth.login(user) return response.status(200).send({ user: user }) @@ -115,7 +90,7 @@ export default class AuthController { const githubUser = await github.user() const user = await this.createUser(githubUser) - await auth.use('web').login(user) + await auth.login(user) return response.status(200).send({ user: user }) @@ -144,7 +119,7 @@ export default class AuthController { const googleUser = await google.user() const user = await this.createUser(googleUser) - await auth.use('web').login(user) + await auth.login(user) return response.status(200).send({ user: user }) diff --git a/app/Controllers/Http/GuestBookController.ts b/app/Controllers/Http/GuestBookController.ts index fae543f..cd57426 100644 --- a/app/Controllers/Http/GuestBookController.ts +++ b/app/Controllers/Http/GuestBookController.ts @@ -1,6 +1,6 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; -import GuestBookMessage from "../../Models/GuestBookMessage"; -import GuestValidator from "../../Validators/guestbook/GuestValidator"; +import GuestBookMessage from "App/Models/GuestBookMessage"; +import GuestValidator from "App/Validators/guestbook/GuestValidator"; export default class GuestBookController { diff --git a/app/Controllers/Http/StatesController.ts b/app/Controllers/Http/StatesController.ts index 725b4fa..7c4f067 100644 --- a/app/Controllers/Http/StatesController.ts +++ b/app/Controllers/Http/StatesController.ts @@ -1,6 +1,6 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import Redis from "@ioc:Adonis/Addons/Redis"; -import {UpdateGitHubReadme} from "app/Tasks/UpdateGithubReadme"; +import {UpdateGitHubReadme} from "App/Tasks/UpdateGithubReadme"; export default class StatesController { diff --git a/app/Controllers/Http/SubscribersController.ts b/app/Controllers/Http/SubscribersController.ts index 198b699..b4ef8e1 100644 --- a/app/Controllers/Http/SubscribersController.ts +++ b/app/Controllers/Http/SubscribersController.ts @@ -1,6 +1,6 @@ import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' -import SubscriberValidator from "../../Validators/subscriber/SubscriberValidator"; -import Subscriber from "../../Models/Subscriber"; +import Subscriber from "App/Models/Subscriber"; +import SubscriberValidator from "App/Validators/subscriber/SubscriberValidator"; export default class SubscribersController { diff --git a/app/Controllers/Http/UsersController.ts b/app/Controllers/Http/UsersController.ts index 18f5c78..992ffeb 100644 --- a/app/Controllers/Http/UsersController.ts +++ b/app/Controllers/Http/UsersController.ts @@ -1,7 +1,7 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import User from "App/Models/User"; -import UserStoreValidator from "../../../app/Validators/users/UserStoreValidator"; -import UserUpdateValidator from "../../../app/Validators/users/UserUpdateValidator"; +import UserStoreValidator from "App/Validators/users/UserStoreValidator"; +import UserUpdateValidator from "App/Validators/users/UserUpdateValidator"; export default class UsersController { diff --git a/config/ally.ts b/config/ally.ts index 42279d4..91c14d3 100644 --- a/config/ally.ts +++ b/config/ally.ts @@ -27,18 +27,7 @@ const allyConfig: AllyConfig = { driver: 'github', clientId: Env.get('GITHUB_CLIENT_ID'), clientSecret: Env.get('GITHUB_CLIENT_SECRET'), - callbackUrl: `${Env.get('BASE_URL')}:${Env.get('PORT')}/auth/github/callback`, - }, - /* - |-------------------------------------------------------------------------- - | Twitter driver - |-------------------------------------------------------------------------- - */ - twitter: { - driver: 'twitter', - clientId: Env.get('TWITTER_CLIENT_ID'), - clientSecret: Env.get('TWITTER_CLIENT_SECRET'), - callbackUrl: `${Env.get('BASE_URL')}:${Env.get('PORT')}/auth/twitter/callback`, + callbackUrl: `${Env.get('BASE_URL')}/auth/github/callback` }, /* |-------------------------------------------------------------------------- @@ -49,7 +38,18 @@ const allyConfig: AllyConfig = { driver: 'google', clientId: Env.get('GOOGLE_CLIENT_ID'), clientSecret: Env.get('GOOGLE_CLIENT_SECRET'), - callbackUrl: `${Env.get('BASE_URL')}:${Env.get('PORT')}/auth/google/callback`, + callbackUrl: `${Env.get('BASE_URL')}/auth/google/callback` + }, + /* + |-------------------------------------------------------------------------- + | Twitter driver + |-------------------------------------------------------------------------- + */ + twitter: { + driver: 'twitter', + clientId: Env.get('TWITTER_CLIENT_ID'), + clientSecret: Env.get('TWITTER_CLIENT_SECRET'), + callbackUrl: `${Env.get('BASE_URL')}/auth/twitter/callback` }, } diff --git a/contracts/ally.ts b/contracts/ally.ts index 9d87505..ee66084 100644 --- a/contracts/ally.ts +++ b/contracts/ally.ts @@ -11,13 +11,13 @@ declare module '@ioc:Adonis/Addons/Ally' { config: GithubDriverConfig implementation: GithubDriverContract } + google: { + config: GoogleDriverConfig + implementation: GoogleDriverContract + } twitter: { config: TwitterDriverConfig implementation: TwitterDriverContract } - google: { - config: GoogleDriverConfig - implementation: GoogleDriverContract - } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml deleted file mode 100644 index 308db41..0000000 --- a/pnpm-lock.yaml +++ /dev/null @@ -1,4683 +0,0 @@ -lockfileVersion: 5.3 - -specifiers: - '@adonisjs/ally': ^4.0.2 - '@adonisjs/assembler': ^5.3.2 - '@adonisjs/auth': ^8.0.6 - '@adonisjs/core': ~5.1.8 - '@adonisjs/lucid': ^15.0.1 - '@adonisjs/mail': ^7.2.1 - '@adonisjs/redis': ^7.0.6 - '@adonisjs/repl': ^3.1.4 - '@adonisjs/session': ^6.0.6 - '@adonisjs/view': ^6.0.3 - adonis-preset-ts: ^2.1.0 - axios: ^0.21.1 - luxon: ^1.27.0 - mjml: ^4.10.0 - mysql: ^2.18.1 - phc-argon2: ^1.1.1 - pino-pretty: ^5.0.2 - proxy-addr: ^2.0.7 - reflect-metadata: ^0.1.13 - tslib: ^2.3.0 - typescript: ^4.3.4 - youch: ^2.2.2 - youch-terminal: ^1.1.1 - -dependencies: - '@adonisjs/ally': 4.0.2_@adonisjs+core@5.1.8 - '@adonisjs/auth': 8.0.6_c4b385bf85cbff12102b763d51671a12 - '@adonisjs/core': 5.1.8 - '@adonisjs/lucid': 15.0.1_cb1dbb0288a33fe9c18d8197c75b1491 - '@adonisjs/mail': 7.2.1_40c32606acc132e155ed0c7207a8fe3b - '@adonisjs/redis': 7.0.6_@adonisjs+core@5.1.8 - '@adonisjs/repl': 3.1.4_@adonisjs+core@5.1.8 - '@adonisjs/session': 6.0.6_@adonisjs+core@5.1.8 - '@adonisjs/view': 6.0.3_@adonisjs+core@5.1.8 - axios: 0.21.1 - luxon: 1.27.0 - mjml: 4.10.0 - mysql: 2.18.1 - phc-argon2: 1.1.1 - proxy-addr: 2.0.7 - reflect-metadata: 0.1.13 - tslib: 2.3.0 - -devDependencies: - '@adonisjs/assembler': 5.3.2_@adonisjs+core@5.1.8 - adonis-preset-ts: 2.1.0 - pino-pretty: 5.0.2 - typescript: 4.3.4 - youch: 2.2.2 - youch-terminal: 1.1.1 - -packages: - - /@adonisjs/ace/11.0.2_@adonisjs+application@5.1.3: - resolution: {integrity: sha512-d7DQ9p1DYjs3JkGFlj9M/w8Li1J6Z8buoUjfLas5vmPOObWPe9gaDPYsFk773Z8UymR4UIVV7/HL6o5lKQt0Wg==} - peerDependencies: - '@adonisjs/application': ^5.0.0 - dependencies: - '@adonisjs/application': 5.1.3 - '@poppinss/cliui': 2.2.4 - '@poppinss/prompts': 1.2.2 - '@poppinss/utils': 3.1.3 - fs-extra: 10.0.0 - getopts: 2.3.0 - leven: 3.1.0 - mustache: 4.2.0 - slash: 3.0.0 - term-size: 2.2.1 - dev: false - - /@adonisjs/ally/4.0.2_@adonisjs+core@5.1.8: - resolution: {integrity: sha512-p8dUK//l+isTGLiiO9IPaxfAftuCYSt9t2oY4Wz2Dj2mfEtcvZY5OcdCKFYcHeN1Ax47HbLXIooq+en7rqq5PQ==} - peerDependencies: - '@adonisjs/core': ^5.1.0 - dependencies: - '@adonisjs/core': 5.1.8 - '@poppinss/oauth-client': 2.0.4 - '@poppinss/utils': 3.1.3 - dev: false - - /@adonisjs/application/5.1.3: - resolution: {integrity: sha512-rsVY2kZybR3RP+4nsprni1eJPT9xtqLkZ9EVFvMZl4LGc9l/6YQ5962tSoNABA/oScmOKJRqzUq7X9b2iuVxjw==} - dependencies: - '@adonisjs/config': 3.0.3 - '@adonisjs/env': 3.0.3 - '@adonisjs/fold': 8.1.3 - '@adonisjs/logger': 4.0.3 - '@adonisjs/profiler': 6.0.4_@adonisjs+logger@4.0.3 - '@poppinss/utils': 3.1.3 - semver: 7.3.5 - - /@adonisjs/assembler/5.3.2_@adonisjs+core@5.1.8: - resolution: {integrity: sha512-rznJDptvAvS+6kO7KU6IpS9NiCb5HwMpg3bzdqeQMZXeKTCk8bJmsFRNCq3ADlNTR2bTcgZfFEccjG+wIfxtDw==} - peerDependencies: - '@adonisjs/core': ^5.1.0 - dependencies: - '@adonisjs/application': 5.1.3 - '@adonisjs/core': 5.1.8 - '@adonisjs/env': 3.0.3 - '@adonisjs/ioc-transformer': 2.3.0 - '@adonisjs/require-ts': 2.0.6 - '@adonisjs/sink': 5.1.5_@adonisjs+application@5.1.3 - '@poppinss/chokidar-ts': 3.3.0 - '@poppinss/cliui': 2.2.4 - '@poppinss/utils': 3.1.3 - cpy: 8.1.2 - emittery: 0.9.2 - execa: 5.1.1 - fs-extra: 10.0.0 - get-port: 5.1.1 - has-yarn: 2.1.0 - picomatch: 2.3.0 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@adonisjs/auth/8.0.6_c4b385bf85cbff12102b763d51671a12: - resolution: {integrity: sha512-aAnfQlUGmlcG5o9Q+mm0Krr9Yh87IYDq3E1jD/TPR9TCgjM00KoBdT7rl+c419FmKItNQaQU1XJuu1VOjaoLIw==} - peerDependencies: - '@adonisjs/core': ^5.1.1 - '@adonisjs/lucid': ^15.0.0 - '@adonisjs/redis': ^7.0.0 - '@adonisjs/session': ^6.0.0 - peerDependenciesMeta: - '@adonisjs/lucid': - optional: true - '@adonisjs/redis': - optional: true - '@adonisjs/session': - optional: true - dependencies: - '@adonisjs/core': 5.1.8 - '@adonisjs/lucid': 15.0.1_cb1dbb0288a33fe9c18d8197c75b1491 - '@adonisjs/redis': 7.0.6_@adonisjs+core@5.1.8 - '@adonisjs/session': 6.0.6_@adonisjs+core@5.1.8 - '@poppinss/hooks': 3.0.4 - '@poppinss/utils': 3.1.3 - luxon: 1.27.0 - transitivePeerDependencies: - - '@adonisjs/application' - dev: false - - /@adonisjs/bodyparser/7.1.2_46c28d435ca83b93716a5580899f99e1: - resolution: {integrity: sha512-94uW/mASYiCb8stk0UIJNm2x/OWEyWCp+Yz3aas4mK7KYA00OcgASkJ/6BxX88JxszXM0xMOXbEaU5Z1G/XqRw==} - peerDependencies: - '@adonisjs/application': ^5.0.0 - '@adonisjs/http-server': ^5.0.0 - dependencies: - '@adonisjs/application': 5.1.3 - '@adonisjs/http-server': 5.4.1_@adonisjs+application@5.1.3 - '@poppinss/co-body': 1.1.3 - '@poppinss/multiparty': 1.0.2 - '@poppinss/utils': 3.1.3 - bytes: 3.1.0 - end-of-stream: 1.4.4 - file-type: 16.5.0 - fs-extra: 10.0.0 - media-typer: 1.1.0 - dev: false - - /@adonisjs/config/3.0.3: - resolution: {integrity: sha512-qh3A5ax5cuJpL7jwOe82wUtqiAfKTFezjPToyJ8pQHCjt8ghwvXtTiwJ7XZas1e4BY8QuEfL+sqC7NYFiaCX3A==} - dependencies: - '@poppinss/utils': 3.1.3 - - /@adonisjs/core/5.1.8: - resolution: {integrity: sha512-rZPgpTPHKSsI1MdK1xYeNrDdU6eh8I6sPI4lnZK7gW8l82mX6IJ70Soz1jEk0AZf/qe0YpAWeulBOgwOwbzFkA==} - dependencies: - '@adonisjs/ace': 11.0.2_@adonisjs+application@5.1.3 - '@adonisjs/application': 5.1.3 - '@adonisjs/bodyparser': 7.1.2_46c28d435ca83b93716a5580899f99e1 - '@adonisjs/encryption': 4.0.3_@adonisjs+application@5.1.3 - '@adonisjs/events': 7.1.0_@adonisjs+application@5.1.3 - '@adonisjs/hash': 7.0.6_@adonisjs+application@5.1.3 - '@adonisjs/http-server': 5.4.1_@adonisjs+application@5.1.3 - '@adonisjs/validator': 11.0.2_dca74b6a7cfaf1624e10c0567ec6c737 - '@poppinss/cliui': 2.2.4 - '@poppinss/utils': 3.1.3 - fs-extra: 10.0.0 - serve-static: 1.14.1 - stringify-attributes: 2.0.0 - dev: false - - /@adonisjs/encryption/4.0.3_@adonisjs+application@5.1.3: - resolution: {integrity: sha512-vCGu6hf2/GAP4xSwU8Wr2BPLv1P8GBK6/xo7B8ScOWAubMpwEl0fHc1QFTqXTN5N/iXMl8TdrSvK3bQHAmK7zw==} - peerDependencies: - '@adonisjs/application': ^5.0.0 - dependencies: - '@adonisjs/application': 5.1.3 - '@poppinss/utils': 3.1.3 - dev: false - - /@adonisjs/env/3.0.3: - resolution: {integrity: sha512-zdJcpKktH+JISbberQYB+caVeSAidIZ8vJh1vqH/sWyRRqaFNRmqXQCyUBUHk9Hi47ksGKk/biIvsXhiLjcNtw==} - dependencies: - '@poppinss/utils': 3.1.3 - dotenv: 10.0.0 - validator: 13.6.0 - - /@adonisjs/events/7.1.0_@adonisjs+application@5.1.3: - resolution: {integrity: sha512-OTi+x5c0/zqnNuROasqIYfYEjCSWM7H+eCVZtMehRX4pF+phK4Fo0IDgRjD78R9QFLob9/VuQRbqR12iWR7yoQ==} - peerDependencies: - '@adonisjs/application': ^5.0.0 - dependencies: - '@adonisjs/application': 5.1.3 - emittery: 0.9.2 - dev: false - - /@adonisjs/fold/8.1.3: - resolution: {integrity: sha512-lQ0JYsVEcXi3EnPZKZIiXbbRjAUg2qenLkeY3tB3+/J1i30olPFmGiZWEuUZ6PgrMd7WQEsEob7UnnCweOsSIw==} - dependencies: - '@poppinss/utils': 3.1.3 - - /@adonisjs/hash/7.0.6_@adonisjs+application@5.1.3: - resolution: {integrity: sha512-uxKtoPwM5N9A2CZK1cTDbee8Ox4Ma+iFOMs+b8NRwwvCcWioQm5r1YTf64Apxc4do6Pd6AgQNwkL412y0dARCw==} - peerDependencies: - '@adonisjs/application': ^5.0.0 - dependencies: - '@adonisjs/application': 5.1.3 - '@phc/format': 1.0.0 - '@poppinss/manager': 4.0.3 - '@poppinss/utils': 3.1.3 - dev: false - - /@adonisjs/http-server/5.4.1_@adonisjs+application@5.1.3: - resolution: {integrity: sha512-FmIlyyYkYMsZqUr+VcH0kOSzEDJ0shjiszsqNo24Y+/S2KEIFzrZEJr9TjmZg2gghfePZyMf88I0CzpBT9dU+Q==} - peerDependencies: - '@adonisjs/application': ^5.0.0 - dependencies: - '@adonisjs/application': 5.1.3 - '@poppinss/matchit': 3.1.2 - '@poppinss/utils': 3.1.3 - accepts: 1.3.7 - co-compose: 6.1.3 - content-disposition: 0.5.3 - cookie: 0.4.1 - destroy: 1.0.4 - encodeurl: 1.0.2 - etag: 1.8.1 - fresh: 0.5.2 - haye: 3.0.0 - macroable: 5.1.3 - mime-types: 2.1.31 - ms: 2.1.3 - on-finished: 2.3.0 - pluralize: 8.0.0 - proxy-addr: 2.0.7 - qs: 6.10.1 - tmp-cache: 1.1.0 - type-is: 1.6.18 - vary: 1.1.2 - dev: false - - /@adonisjs/ioc-transformer/2.3.0: - resolution: {integrity: sha512-I1Lv76ksY5YvdTkU2JUVJvV1ZKUgIVTYG5e7emUrBS4Y4rEZILuU1YwEviv0xd1P1TzkQ9CNPiJlv8/m3cOQ+g==} - dev: true - - /@adonisjs/logger/4.0.3: - resolution: {integrity: sha512-sSTgRd7Bld9XCACi/D/FdP7ZNcATnOfyZ+/kQYMpnKU3YdDmv9oLoQojtzVXv/AUI2B19HR00ruV9xpu4McByQ==} - dependencies: - '@poppinss/utils': 3.1.3 - '@types/pino': 6.3.8 - abstract-logging: 2.0.1 - pino: 6.11.3 - - /@adonisjs/lucid/15.0.1_cb1dbb0288a33fe9c18d8197c75b1491: - resolution: {integrity: sha512-ab3tJ9JgafaXvtOzyqd83Xs6Z1raNnSZfkVJlRHvwf3rviBEAPOLVYUDtjx7QskDkDAIam+21WkUNRHcByXQcw==} - peerDependencies: - '@adonisjs/core': ^5.1.0 - dependencies: - '@adonisjs/core': 5.1.8 - '@poppinss/hooks': 3.0.4 - '@poppinss/utils': 3.1.3 - '@types/faker': 5.5.6 - faker: 5.5.3 - fast-deep-equal: 3.1.3 - igniculus: 1.5.0 - knex: 0.95.6_mysql@2.18.1 - knex-dynamic-connection: 2.1.1_mysql@2.18.1 - luxon: 1.27.0 - macroable: 5.1.3 - pretty-hrtime: 1.0.3 - qs: 6.10.1 - transitivePeerDependencies: - - '@adonisjs/application' - - mysql - - mysql2 - - pg - - sqlite3 - - supports-color - - tedious - dev: false - - /@adonisjs/mail/7.2.1_40c32606acc132e155ed0c7207a8fe3b: - resolution: {integrity: sha512-CrusOu+RjL2ukTx7M2yNzEiBFBPxK1Uct45e9BZ+hO0vQgZs3y2/61E+w0A8ZqlJh4gtM7ZtX+afDi4vEgCAxg==} - peerDependencies: - '@adonisjs/core': ^5.1.0 - '@adonisjs/view': ^6.0.0 - dependencies: - '@adonisjs/core': 5.1.8 - '@adonisjs/view': 6.0.3_@adonisjs+core@5.1.8 - '@poppinss/colors': 2.1.4 - '@poppinss/manager': 4.0.3 - '@poppinss/utils': 3.1.3 - fastq: 1.11.0 - get-stream: 6.0.1 - got: 11.8.2 - ical-generator: 2.2.0_luxon@1.27.0 - multi-part: 3.0.0 - nodemailer: 6.6.2 - transitivePeerDependencies: - - '@touch4it/ical-timezones' - - '@types/luxon' - - '@types/mocha' - - '@types/node' - - dayjs - - luxon - - moment - - moment-timezone - - rrule - dev: false - - /@adonisjs/profiler/6.0.4_@adonisjs+logger@4.0.3: - resolution: {integrity: sha512-L4F4qScik4OlO2JWfgyKjA6PtF3zyv73Yj9ThH3aV9kd+Hr+zXiqycX8BeU9gXM4eVbpM2HRCVg57pjtGG1zow==} - peerDependencies: - '@adonisjs/logger': ^4.0.0 - dependencies: - '@adonisjs/logger': 4.0.3 - '@poppinss/utils': 3.1.3 - jest-worker: 27.0.2 - - /@adonisjs/redis/7.0.6_@adonisjs+core@5.1.8: - resolution: {integrity: sha512-SqVm8I6yMey+BjwismpsYYXrzJSkP+ylBzj1UXmPFNCnamlVe4SgtGCsD8gxNanpy/y5otNliKsnLieaXbdZww==} - peerDependencies: - '@adonisjs/core': ^5.1.0 - dependencies: - '@adonisjs/core': 5.1.8 - '@poppinss/utils': 3.1.3 - '@types/ioredis': 4.26.4 - ioredis: 4.27.6 - transitivePeerDependencies: - - supports-color - dev: false - - /@adonisjs/repl/3.1.4_@adonisjs+core@5.1.8: - resolution: {integrity: sha512-xyL7raCKFcfmJvM+PVNdU6dBEzGx+7QLJTddRIuvPBlvWlijnzoIwwAmYmKIYfxL5ESiBipa7GqEGsO/8Ue0Qw==} - peerDependencies: - '@adonisjs/core': ^5.1.0 - dependencies: - '@adonisjs/core': 5.1.8 - '@poppinss/colors': 2.1.4 - node-repl-await: 0.1.2 - parse-imports: 0.0.5 - string-width: 4.2.2 - dev: false - - /@adonisjs/require-ts/2.0.6: - resolution: {integrity: sha512-q4tMUUdoIr8wVGRz41TsGhlArfy+yoKIbB+T7PC/GS0aBQ0BRl2kJTuNDD29oFdDTmbzWNJtmRQKkJRYWJBhpg==} - dependencies: - '@poppinss/utils': 3.1.3 - debug: 4.3.2 - find-cache-dir: 3.3.1 - fs-extra: 10.0.0 - normalize-path: 3.0.0 - pirates: 4.0.1 - rev-hash: 3.0.0 - source-map-support: 0.5.19 - transitivePeerDependencies: - - supports-color - dev: true - - /@adonisjs/session/6.0.6_@adonisjs+core@5.1.8: - resolution: {integrity: sha512-0FaNszd+T3Dlm32DkOLdJNrWuA7hNcByJQzu86yVtwaZl/0ek5njZ6bAfgcwG9htsT+VzTDYM4zjuDPFMCoNkQ==} - peerDependencies: - '@adonisjs/core': ^5.1.0 - dependencies: - '@adonisjs/core': 5.1.8 - '@poppinss/utils': 3.1.3 - fs-extra: 10.0.0 - dev: false - - /@adonisjs/sink/5.1.5_@adonisjs+application@5.1.3: - resolution: {integrity: sha512-f/p9+OFluCaYXUrUAhCz20KPmOHub9CxNybSyzFSl34pPb0kIJbTcm5wjAz3nomAi5XZ5ZKMPpTYywc1KggGVA==} - peerDependencies: - '@adonisjs/application': ^5.0.0 - dependencies: - '@adonisjs/application': 5.1.3 - '@poppinss/cliui': 2.2.4 - '@poppinss/prompts': 1.2.2 - '@poppinss/utils': 3.1.3 - cp-file: 9.1.0 - fs-extra: 10.0.0 - marked: 2.1.1 - marked-terminal: 4.1.1_marked@2.1.1 - mrm-core: 6.0.0 - mustache: 4.2.0 - open: 8.2.1 - dev: true - - /@adonisjs/validator/11.0.2_dca74b6a7cfaf1624e10c0567ec6c737: - resolution: {integrity: sha512-nie4N40Sg48r+zR+WZCausHhh2WQo+YQ0CoWRgk3yJbdesMGne0cWnTp59O9FmSboL2KVDDnNWmxqb72AAuyIQ==} - peerDependencies: - '@adonisjs/application': ^5.0.0 - '@adonisjs/bodyparser': ^7.0.0 - '@adonisjs/http-server': ^5.0.0 - dependencies: - '@adonisjs/application': 5.1.3 - '@adonisjs/bodyparser': 7.1.2_46c28d435ca83b93716a5580899f99e1 - '@adonisjs/http-server': 5.4.1_@adonisjs+application@5.1.3 - '@poppinss/utils': 3.1.3 - '@types/luxon': 1.27.0 - '@types/validator': 13.1.4 - luxon: 1.27.0 - normalize-url: 6.1.0 - tmp-cache: 1.1.0 - validator: 13.6.0 - dev: false - - /@adonisjs/view/6.0.3_@adonisjs+core@5.1.8: - resolution: {integrity: sha512-5/glig7MpgW0F+7bLDatDTrMuaHmj+0Qp1G+qR3BXjU6ErqXuEiGlrk/7If4196oAjiTdwkqrW77BEvClp+6hA==} - peerDependencies: - '@adonisjs/core': ^5.1.0 - dependencies: - '@adonisjs/core': 5.1.8 - edge-error: 2.0.4 - edge-supercharged: 3.1.1 - edge.js: 5.2.1 - dev: false - - /@arr/every/1.0.1: - resolution: {integrity: sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg==} - engines: {node: '>=4'} - dev: false - - /@babel/runtime/7.14.6: - resolution: {integrity: sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.13.7 - dev: false - - /@hapi/bourne/2.0.0: - resolution: {integrity: sha512-WEezM1FWztfbzqIUbsDzFRVMxSoLy3HugVcux6KDDtTqzPsLE8NDRHfXvev66aH1i2oOKKar3/XDjbvh/OUBdg==} - dev: true - - /@kdf/salt/2.0.1: - resolution: {integrity: sha512-1RBY7HcGYuWBm0+4ygjdRerN+mhpuT5picGB6+azqUXsz/IZljegrKkeHRiV6wuxY8n4HrxOuw8ou7JuGxRWdQ==} - engines: {node: '>=10'} - dev: false - - /@mapbox/node-pre-gyp/1.0.5: - resolution: {integrity: sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA==} - hasBin: true - 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.5 - tar: 6.1.0 - transitivePeerDependencies: - - supports-color - dev: false - - /@mrmlnc/readdir-enhanced/2.2.1: - resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==} - engines: {node: '>=4'} - dependencies: - call-me-maybe: 1.0.1 - glob-to-regexp: 0.3.0 - dev: true - - /@nodelib/fs.stat/1.1.3: - resolution: {integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==} - engines: {node: '>= 6'} - dev: true - - /@phc/format/1.0.0: - resolution: {integrity: sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ==} - engines: {node: '>=10'} - dev: false - - /@poppinss/chokidar-ts/3.3.0: - resolution: {integrity: sha512-cQ1zQsfAR1Kgp3c4z90n8IFgSCqSoFXpf3lNn5epMV/04gh+ojE0Vb0rpEHXpFSTW7xzmm7Mx3D0pbjfv8LpfA==} - dependencies: - builtin-modules: 3.2.0 - chokidar: 3.5.2 - debug: 4.3.1 - emittery: 0.9.2 - fs-extra: 10.0.0 - mem: 8.1.1 - picomatch: 2.3.0 - transitivePeerDependencies: - - supports-color - dev: true - - /@poppinss/cliui/2.2.4: - resolution: {integrity: sha512-ipmnZE65sLubc7mQJapb3T5NZ+HHKjqVxxzDr0nQuXNXQf+GtBjpt9RQ9K1RfGOcvMkxWEEsoHNLMNNA8KzWKg==} - dependencies: - '@poppinss/colors': 2.1.4 - cli-boxes: 3.0.0 - cli-table3: 0.6.0 - color-support: 1.1.3 - log-update: 4.0.0 - pretty-hrtime: 1.0.3 - string-width: 4.2.2 - - /@poppinss/co-body/1.1.3: - resolution: {integrity: sha512-Qhm2sGNTSRpKAlqt+ofZwWMzMI8QJXd36DN6F1Ska2B0Lt1Ev3qi+kNHym1GcIJ2NG/P/LS7i2fIbKZtGXnZ9w==} - dependencies: - '@poppinss/utils': 3.1.3 - inflation: 2.0.0 - qs: 6.10.1 - raw-body: 2.4.1 - type-is: 1.6.18 - dev: false - - /@poppinss/colors/2.1.4: - resolution: {integrity: sha512-exilWCx08WvIL0bg6txQJX0WqM5ELnY4Gxc8K0G29UE0mwPoZ14hAWsBSdFea/BXMQGOgV72NoQ7scbRpEt7Ug==} - dependencies: - color-support: 1.1.3 - kleur: 4.1.4 - - /@poppinss/hooks/3.0.4: - resolution: {integrity: sha512-vVtd8v3grQ0JcbZgvUrUIUeMqTcHkE31nJGE/jRxDEbCiusBwBJD6D16a5Wzbl+o6xRldlhIcdDn+AE8PUpuVA==} - peerDependencies: - '@adonisjs/application': '>=4.0.0' - peerDependenciesMeta: - '@adonisjs/application': - optional: true - dev: false - - /@poppinss/inspect/1.0.1: - resolution: {integrity: sha512-kLeEaBSGhlleyYvKc7c9s3uE6xv7cwyulE0EgHf4jU/CL96h0yC4mkdw1wvC1l1PYYQozCGy46FwMBAAMOobCA==} - dev: false - - /@poppinss/manager/4.0.3: - resolution: {integrity: sha512-yPGfsgJzAqyKLtES00MvsSmdrkuJDDymG1ZlRw5oEBu34wOZUo2jAR0UZHmLi4xqCjm/7D9RwMLMxj9IH72AZw==} - dev: false - - /@poppinss/matchit/3.1.2: - resolution: {integrity: sha512-Bx+jY+vmdQFmwYiHliiPjr+oVBaGnh79B1h1FSAm3jME1QylLFt8PPYC0ymO8Q5PzJj/KuE3jeTnZhRHOWqq8g==} - dependencies: - '@arr/every': 1.0.1 - dev: false - - /@poppinss/multiparty/1.0.2: - resolution: {integrity: sha512-SQuw3FmvAr/3TnAx8L/S7CKO4pKKVozscu9DZ/GXFCNd7KCKvajaDl0RCna0CgABJQBBcdKHxx3w1yH0NedzDA==} - dependencies: - http-errors: 1.8.0 - safe-buffer: 5.2.1 - uid-safe: 2.1.5 - dev: false - - /@poppinss/oauth-client/2.0.4: - resolution: {integrity: sha512-bl8ITdz0FG1ydCAmXVJxrlEtUm42JZK4yj6jA7CVsVhKhzf8OwG3XY8kVETmh/APp8kH8vSM6u5l+lgPKpdlIA==} - dependencies: - '@types/luxon': 1.27.0 - got: 11.8.2 - luxon: 1.27.0 - dev: false - - /@poppinss/prompts/1.2.2: - resolution: {integrity: sha512-0gnd1Xt1oAFNj10kcbnPDiSJzpjH+s8Dm0Yt7ZeTn2hQXsc9NJkb8Gz7CMFaHDuNYpdorz3fmvefsM9lTx5/jw==} - dependencies: - '@poppinss/colors': 2.1.4 - enquirer: 2.3.6 - - /@poppinss/utils/3.1.3: - resolution: {integrity: sha512-A/FGhb+05UGf26rpicvyVCGabtC1Zw3LuugH9eHDYnWS4PLb8tDOdJF+yiOQ6QgGdMbYamzKUsPSgnOgSF4MGA==} - dependencies: - '@types/bytes': 3.1.0 - '@types/he': 1.1.1 - buffer-alloc: 1.2.0 - bytes: 3.1.0 - change-case: 4.1.2 - cuid: 2.1.8 - fast-safe-stringify: 2.0.7 - fs-readdir-recursive: 1.1.0 - he: 1.2.0 - kind-of: 6.0.3 - lodash: 4.17.21 - ms: 2.1.3 - pluralize: 8.0.0 - require-all: 3.0.0 - resolve-from: 5.0.0 - slugify: 1.5.3 - truncatise: 0.0.8 - - /@sindresorhus/is/4.0.1: - resolution: {integrity: sha512-Qm9hBEBu18wt1PO2flE7LPb30BHMQt1eQgbV76YntdNk73XZGpn3izvGTYxbGgzXKgbCjiia0uxTd3aTNQrY/g==} - engines: {node: '>=10'} - dev: false - - /@szmarczak/http-timer/4.0.5: - resolution: {integrity: sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==} - engines: {node: '>=10'} - dependencies: - defer-to-connect: 2.0.1 - dev: false - - /@tokenizer/token/0.1.1: - resolution: {integrity: sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w==} - dev: false - - /@types/bytes/3.1.0: - resolution: {integrity: sha512-5YG1AiIC8HPPXRvYAIa7ehK3YMAwd0DWiPCtpuL9sgKceWLyWsVtLRA+lT4NkoanDNF9slwQ66lPizWDpgRlWA==} - - /@types/cacheable-request/6.0.1: - resolution: {integrity: sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==} - dependencies: - '@types/http-cache-semantics': 4.0.0 - '@types/keyv': 3.1.1 - '@types/node': 15.12.4 - '@types/responselike': 1.0.0 - dev: false - - /@types/debug/4.1.5: - resolution: {integrity: sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ==} - dev: false - - /@types/faker/5.5.6: - resolution: {integrity: sha512-UCRj0kLg4sXs2XFVm48OU/wIjyJZkpRkwxhRGVQb5l5GmemkeW22WTz9iiDhYPBUqTzDsIWzhFRuF/4DD5+q2Q==} - dev: false - - /@types/glob/7.1.3: - resolution: {integrity: sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==} - dependencies: - '@types/minimatch': 3.0.4 - '@types/node': 15.12.4 - dev: true - - /@types/he/1.1.1: - resolution: {integrity: sha512-jpzrsR1ns0n3kyWt92QfOUQhIuJGQ9+QGa7M62rO6toe98woQjnsnzjdMtsQXCdvjjmqjS2ZBCC7xKw0cdzU+Q==} - - /@types/http-cache-semantics/4.0.0: - resolution: {integrity: sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==} - dev: false - - /@types/ioredis/4.26.4: - resolution: {integrity: sha512-QFbjNq7EnOGw6d1gZZt2h26OFXjx7z+eqEnbCHSrDI1OOLEgOHMKdtIajJbuCr9uO+X9kQQRe7Lz6uxqxl5XKg==} - dependencies: - '@types/node': 15.12.4 - dev: false - - /@types/keyv/3.1.1: - resolution: {integrity: sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==} - dependencies: - '@types/node': 15.12.4 - dev: false - - /@types/luxon/1.27.0: - resolution: {integrity: sha512-rr2lNXsErnA/ARtgFn46NtQjUa66cuwZYeo/2K7oqqxhJErhXgHBPyNKCo+pfOC3L7HFwtao8ebViiU9h4iAxA==} - dev: false - - /@types/minimatch/3.0.4: - resolution: {integrity: sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==} - dev: true - - /@types/node/15.12.4: - resolution: {integrity: sha512-zrNj1+yqYF4WskCMOHwN+w9iuD12+dGm0rQ35HLl9/Ouuq52cEtd0CH9qMgrdNmi5ejC1/V7vKEXYubB+65DkA==} - - /@types/pino-pretty/4.7.0: - resolution: {integrity: sha512-fIZ+VXf9gJoJR4tiiM7G+j/bZkPoZEfFGzA4d8tAWCTpTVyvVaBwnmdLs3wEXYpMjw8eXulrOzNCjmGHT3FgHw==} - dependencies: - '@types/pino': 6.3.8 - - /@types/pino-std-serializers/2.4.1: - resolution: {integrity: sha512-17XcksO47M24IVTVKPeAByWUd3Oez7EbIjXpSbzMPhXVzgjGtrOa49gKBwxH9hb8dKv58OelsWQ+A1G1l9S3wQ==} - dependencies: - '@types/node': 15.12.4 - - /@types/pino/6.3.8: - resolution: {integrity: sha512-E47CmRy1FNMaCN8r0d8ECQOjXen9O0p6GGsUjLfmawlxRKosZ82WP1oWVKj+ikTkMDHxWzN5BuKmplo44ynrIg==} - dependencies: - '@types/node': 15.12.4 - '@types/pino-pretty': 4.7.0 - '@types/pino-std-serializers': 2.4.1 - '@types/sonic-boom': 0.7.0 - - /@types/readable-stream/2.3.10: - resolution: {integrity: sha512-xwSXvAv9x4B9Vj88AMZnFyEVLilz1EBxKvRUhGqIF4nJpRQBSTm7jS236X4Y9Y2qPsVvaMxwrGJlNhLHEahlFQ==} - dependencies: - '@types/node': 15.12.4 - safe-buffer: 5.2.1 - dev: false - - /@types/responselike/1.0.0: - resolution: {integrity: sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==} - dependencies: - '@types/node': 15.12.4 - dev: false - - /@types/sonic-boom/0.7.0: - resolution: {integrity: sha512-AfqR0fZMoUXUNwusgXKxcE9DPlHNDHQp6nKYUd4PSRpLobF5CCevSpyTEBcVZreqaWKCnGBr9KI1fHMTttoB7A==} - dependencies: - '@types/node': 15.12.4 - - /@types/stack-trace/0.0.29: - resolution: {integrity: sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==} - dev: true - - /@types/validator/13.1.4: - resolution: {integrity: sha512-19C02B8mr53HufY7S+HO/EHBD7a/R22IwEwyqiHaR19iwL37dN3o0M8RianVInfSSqP7InVSg/o0mUATM4JWsQ==} - dev: false - - /abbrev/1.1.1: - resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - dev: false - - /abstract-logging/2.0.1: - resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} - - /accepts/1.3.7: - resolution: {integrity: sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==} - engines: {node: '>= 0.6'} - dependencies: - mime-types: 2.1.31 - negotiator: 0.6.2 - dev: false - - /acorn-class-fields/1.0.0_acorn@8.4.0: - resolution: {integrity: sha512-l+1FokF34AeCXGBHkrXFmml9nOIRI+2yBnBpO5MaVAaTIJ96irWLtcCxX+7hAp6USHFCe+iyyBB4ZhxV807wmA==} - engines: {node: '>=4.8.2'} - peerDependencies: - acorn: ^6 || ^7 || ^8 - dependencies: - acorn: 8.4.0 - acorn-private-class-elements: 1.0.0_acorn@8.4.0 - dev: false - - /acorn-private-class-elements/1.0.0_acorn@8.4.0: - resolution: {integrity: sha512-zYNcZtxKgVCg1brS39BEou86mIao1EV7eeREG+6WMwKbuYTeivRRs6S2XdWnboRde6G9wKh2w+WBydEyJsJ6mg==} - engines: {node: '>=4.8.2'} - peerDependencies: - acorn: ^6.1.0 || ^7 || ^8 - dependencies: - acorn: 8.4.0 - dev: false - - /acorn-private-methods/1.0.0_acorn@8.4.0: - resolution: {integrity: sha512-Jou2L3nfwfPpFdmmHObI3yUpVPM1bPohTUAZCyVDw5Efyn9LSS6E36neRLCRfIr8QjskAfdxRdABOrvP4c/gwQ==} - engines: {node: '>=4.8.2'} - peerDependencies: - acorn: ^6 || ^7 || ^8 - dependencies: - acorn: 8.4.0 - acorn-private-class-elements: 1.0.0_acorn@8.4.0 - dev: false - - /acorn-static-class-features/1.0.0_acorn@8.4.0: - resolution: {integrity: sha512-XZJECjbmMOKvMHiNzbiPXuXpLAJfN3dAKtfIYbk1eHiWdsutlek+gS7ND4B8yJ3oqvHo1NxfafnezVmq7NXK0A==} - engines: {node: '>=4.8.2'} - peerDependencies: - acorn: ^6.1.0 || ^7 || ^8 - dependencies: - acorn: 8.4.0 - acorn-private-class-elements: 1.0.0_acorn@8.4.0 - dev: false - - /acorn-walk/8.1.0: - resolution: {integrity: sha512-mjmzmv12YIG/G8JQdQuz2MUDShEJ6teYpT5bmWA4q7iwoGen8xtt3twF3OvzIUl+Q06aWIjvnwQUKvQ6TtMRjg==} - engines: {node: '>=0.4.0'} - dev: false - - /acorn/8.4.0: - resolution: {integrity: sha512-ULr0LDaEqQrMFGyQ3bhJkLsbtrQ8QibAseGZeaSUiT/6zb9IvIkomWHJIvgvwad+hinRAgsI51JcWk2yvwyL+w==} - engines: {node: '>=0.4.0'} - hasBin: true - dev: false - - /adonis-preset-ts/2.1.0: - resolution: {integrity: sha512-cQH/NP250gOF9k3TTDhVsTOPSAvyH4MhKVZ4ryYiihA+vnP27sut1gVIrRas3Evl5d2wEgWVGI5DgdP/ZFSk0w==} - dev: true - - /agent-base/6.0.2: - resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} - engines: {node: '>= 6.0.0'} - dependencies: - debug: 4.3.1 - transitivePeerDependencies: - - supports-color - dev: false - - /aggregate-error/3.1.0: - resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} - engines: {node: '>=8'} - dependencies: - clean-stack: 2.2.0 - indent-string: 4.0.0 - dev: true - - /ansi-colors/4.1.1: - resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} - engines: {node: '>=6'} - - /ansi-escapes/4.3.2: - resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.21.3 - - /ansi-regex/2.1.1: - resolution: {integrity: sha1-w7M6te42DYbg5ijwRorn7yfWVN8=} - engines: {node: '>=0.10.0'} - - /ansi-regex/5.0.0: - resolution: {integrity: sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==} - engines: {node: '>=8'} - - /ansi-styles/2.2.1: - resolution: {integrity: sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=} - engines: {node: '>=0.10.0'} - dev: true - - /ansi-styles/3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - dev: true - - /ansi-styles/4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - dependencies: - color-convert: 2.0.1 - - /ansicolors/0.3.2: - resolution: {integrity: sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=} - dev: true - - /anymatch/3.1.2: - resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==} - engines: {node: '>= 8'} - dependencies: - normalize-path: 3.0.0 - picomatch: 2.3.0 - - /aproba/1.2.0: - resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==} - dev: false - - /are-we-there-yet/1.1.5: - resolution: {integrity: sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==} - dependencies: - delegates: 1.0.0 - readable-stream: 2.3.7 - dev: false - - /argon2/0.27.2: - resolution: {integrity: sha512-evnzS/Q9rj6ahaaCJjLDoJo9ZuXHhVL2BrBz3wFHb5/i9zAJovBuIY+5t2En7tJjhFXs4O3rUZDeGZxBiDOLwQ==} - engines: {node: '>=10.0.0'} - requiresBuild: true - dependencies: - '@mapbox/node-pre-gyp': 1.0.5 - '@phc/format': 1.0.0 - node-addon-api: 3.2.1 - opencollective-postinstall: 2.0.3 - transitivePeerDependencies: - - supports-color - dev: false - - /args/5.0.1: - resolution: {integrity: sha512-1kqmFCFsPffavQFGt8OxJdIcETti99kySRUPMpOhaGjL6mRJn8HFU1OxKY5bMqfZKUwTQc1mZkAjmGYaVOHFtQ==} - engines: {node: '>= 6.0.0'} - dependencies: - camelcase: 5.0.0 - chalk: 2.4.2 - leven: 2.1.0 - mri: 1.1.4 - dev: true - - /arr-diff/4.0.0: - resolution: {integrity: sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=} - engines: {node: '>=0.10.0'} - dev: true - - /arr-flatten/1.1.0: - resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==} - engines: {node: '>=0.10.0'} - dev: true - - /arr-union/3.1.0: - resolution: {integrity: sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=} - engines: {node: '>=0.10.0'} - dev: true - - /array-union/1.0.2: - resolution: {integrity: sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=} - engines: {node: '>=0.10.0'} - dependencies: - array-uniq: 1.0.3 - dev: true - - /array-uniq/1.0.3: - resolution: {integrity: sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=} - engines: {node: '>=0.10.0'} - dev: true - - /array-unique/0.3.2: - resolution: {integrity: sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=} - engines: {node: '>=0.10.0'} - dev: true - - /arrify/2.0.1: - resolution: {integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==} - engines: {node: '>=8'} - dev: true - - /assign-symbols/1.0.0: - resolution: {integrity: sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=} - engines: {node: '>=0.10.0'} - dev: true - - /astral-regex/2.0.0: - resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} - engines: {node: '>=8'} - - /astring/1.7.5: - resolution: {integrity: sha512-lobf6RWXb8c4uZ7Mdq0U12efYmpD1UFnyOWVJPTa3ukqZrMopav+2hdNu0hgBF0JIBFK9QgrBDfwYvh3DFJDAA==} - hasBin: true - dev: false - - /atob/2.1.2: - resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==} - engines: {node: '>= 4.5.0'} - hasBin: true - dev: true - - /atomic-sleep/1.0.0: - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} - engines: {node: '>=8.0.0'} - - /axios/0.21.1: - resolution: {integrity: sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==} - dependencies: - follow-redirects: 1.14.1 - transitivePeerDependencies: - - debug - dev: false - - /babel-code-frame/6.26.0: - resolution: {integrity: sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=} - dependencies: - chalk: 1.1.3 - esutils: 2.0.3 - js-tokens: 3.0.2 - dev: true - - /balanced-match/1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - /base/0.11.2: - resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==} - engines: {node: '>=0.10.0'} - dependencies: - cache-base: 1.0.1 - class-utils: 0.3.6 - component-emitter: 1.3.0 - define-property: 1.0.0 - isobject: 3.0.1 - mixin-deep: 1.3.2 - pascalcase: 0.1.1 - dev: true - - /bignumber.js/9.0.0: - resolution: {integrity: sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==} - dev: false - - /binary-extensions/2.2.0: - resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} - engines: {node: '>=8'} - - /boolbase/1.0.0: - resolution: {integrity: sha1-aN/1++YMUes3cl6p4+0xDcwed24=} - dev: false - - /brace-expansion/1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - /braces/2.3.2: - resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==} - engines: {node: '>=0.10.0'} - dependencies: - arr-flatten: 1.1.0 - array-unique: 0.3.2 - extend-shallow: 2.0.1 - fill-range: 4.0.0 - isobject: 3.0.1 - repeat-element: 1.1.4 - snapdragon: 0.8.2 - snapdragon-node: 2.1.1 - split-string: 3.1.0 - to-regex: 3.0.2 - dev: true - - /braces/3.0.2: - resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} - engines: {node: '>=8'} - dependencies: - fill-range: 7.0.1 - - /buffer-alloc-unsafe/1.1.0: - resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} - - /buffer-alloc/1.2.0: - resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} - dependencies: - buffer-alloc-unsafe: 1.1.0 - buffer-fill: 1.0.0 - - /buffer-fill/1.0.0: - resolution: {integrity: sha1-+PeLdniYiO858gXNY39o5wISKyw=} - - /buffer-from/1.1.1: - resolution: {integrity: sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==} - dev: true - - /builtin-modules/3.2.0: - resolution: {integrity: sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==} - engines: {node: '>=6'} - dev: true - - /builtins/1.0.3: - resolution: {integrity: sha1-y5T662HIaWRR2zZTThQi+U8K7og=} - dev: true - - /bytes/3.1.0: - resolution: {integrity: sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==} - engines: {node: '>= 0.8'} - - /cache-base/1.0.1: - resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==} - engines: {node: '>=0.10.0'} - dependencies: - collection-visit: 1.0.0 - component-emitter: 1.3.0 - get-value: 2.0.6 - has-value: 1.0.0 - isobject: 3.0.1 - set-value: 2.0.1 - to-object-path: 0.3.0 - union-value: 1.0.1 - unset-value: 1.0.0 - dev: true - - /cacheable-lookup/5.0.4: - resolution: {integrity: sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==} - engines: {node: '>=10.6.0'} - dev: false - - /cacheable-request/7.0.2: - resolution: {integrity: sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==} - engines: {node: '>=8'} - dependencies: - clone-response: 1.0.2 - get-stream: 5.2.0 - http-cache-semantics: 4.1.0 - keyv: 4.0.3 - lowercase-keys: 2.0.0 - normalize-url: 6.1.0 - responselike: 2.0.0 - dev: false - - /call-bind/1.0.2: - resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==} - dependencies: - function-bind: 1.1.1 - get-intrinsic: 1.1.1 - dev: false - - /call-me-maybe/1.0.1: - resolution: {integrity: sha1-JtII6onje1y95gJQoV8DHBak1ms=} - dev: true - - /camel-case/3.0.0: - resolution: {integrity: sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=} - dependencies: - no-case: 2.3.2 - upper-case: 1.1.3 - dev: false - - /camel-case/4.1.2: - resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} - dependencies: - pascal-case: 3.1.2 - tslib: 2.3.0 - - /camelcase/5.0.0: - resolution: {integrity: sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==} - engines: {node: '>=6'} - dev: true - - /capital-case/1.0.4: - resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} - dependencies: - no-case: 3.0.4 - tslib: 2.3.0 - upper-case-first: 2.0.2 - - /cardinal/2.1.1: - resolution: {integrity: sha1-fMEFXYItISlU0HsIXeolHMe8VQU=} - hasBin: true - dependencies: - ansicolors: 0.3.2 - redeyed: 2.1.1 - dev: true - - /chalk/1.1.3: - resolution: {integrity: sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=} - engines: {node: '>=0.10.0'} - dependencies: - ansi-styles: 2.2.1 - escape-string-regexp: 1.0.5 - has-ansi: 2.0.0 - strip-ansi: 3.0.1 - supports-color: 2.0.0 - dev: true - - /chalk/2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - dev: true - - /chalk/4.1.1: - resolution: {integrity: sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - dev: true - - /change-case/4.1.2: - resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} - dependencies: - camel-case: 4.1.2 - capital-case: 1.0.4 - constant-case: 3.0.4 - dot-case: 3.0.4 - header-case: 2.0.4 - no-case: 3.0.4 - param-case: 3.0.4 - pascal-case: 3.1.2 - path-case: 3.0.4 - sentence-case: 3.0.4 - snake-case: 3.0.4 - tslib: 2.3.0 - - /cheerio-select/1.5.0: - resolution: {integrity: sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==} - dependencies: - css-select: 4.1.3 - css-what: 5.0.1 - domelementtype: 2.2.0 - domhandler: 4.2.0 - domutils: 2.7.0 - dev: false - - /cheerio/1.0.0-rc.10: - resolution: {integrity: sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==} - engines: {node: '>= 6'} - dependencies: - cheerio-select: 1.5.0 - dom-serializer: 1.3.2 - domhandler: 4.2.0 - htmlparser2: 6.1.0 - parse5: 6.0.1 - parse5-htmlparser2-tree-adapter: 6.0.1 - tslib: 2.3.0 - dev: false - - /chokidar/3.5.2: - resolution: {integrity: sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==} - engines: {node: '>= 8.10.0'} - 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 - optionalDependencies: - fsevents: 2.3.2 - - /chownr/2.0.0: - resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} - engines: {node: '>=10'} - dev: false - - /class-utils/0.3.6: - resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - define-property: 0.2.5 - isobject: 3.0.1 - static-extend: 0.1.2 - dev: true - - /clean-css/4.2.3: - resolution: {integrity: sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==} - engines: {node: '>= 4.0'} - dependencies: - source-map: 0.6.1 - dev: false - - /clean-stack/2.2.0: - resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} - engines: {node: '>=6'} - dev: true - - /cli-boxes/3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} - engines: {node: '>=10'} - - /cli-cursor/3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - dependencies: - restore-cursor: 3.1.0 - - /cli-table/0.3.6: - resolution: {integrity: sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ==} - engines: {node: '>= 0.2.0'} - dependencies: - colors: 1.0.3 - dev: true - - /cli-table3/0.6.0: - resolution: {integrity: sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ==} - engines: {node: 10.* || >= 12.*} - dependencies: - object-assign: 4.1.1 - string-width: 4.2.2 - optionalDependencies: - colors: 1.4.0 - - /cliui/7.0.4: - resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} - dependencies: - string-width: 4.2.2 - strip-ansi: 6.0.0 - wrap-ansi: 7.0.0 - dev: false - - /clone-response/1.0.2: - resolution: {integrity: sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=} - dependencies: - mimic-response: 1.0.1 - dev: false - - /cluster-key-slot/1.1.0: - resolution: {integrity: sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw==} - engines: {node: '>=0.10.0'} - dev: false - - /co-compose/6.1.3: - resolution: {integrity: sha512-P1Nd4PFgHFM5dKtjOgmdwWx653CeTeCXntKQZ7iX48f0wIEoakNIMg2+W6RRpcWa9wdUBS4MiOtJNRspqjg7Bw==} - dev: false - - /code-point-at/1.1.0: - resolution: {integrity: sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=} - engines: {node: '>=0.10.0'} - dev: false - - /collection-visit/1.0.0: - resolution: {integrity: sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=} - engines: {node: '>=0.10.0'} - dependencies: - map-visit: 1.0.0 - object-visit: 1.0.1 - dev: true - - /color-convert/1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - dev: true - - /color-convert/2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - dependencies: - color-name: 1.1.4 - - /color-name/1.1.3: - resolution: {integrity: sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=} - dev: true - - /color-name/1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - /color-support/1.1.3: - resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} - hasBin: true - - /colorette/1.2.1: - resolution: {integrity: sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw==} - dev: false - - /colors/1.0.3: - resolution: {integrity: sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=} - engines: {node: '>=0.1.90'} - dev: true - - /colors/1.4.0: - resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} - engines: {node: '>=0.1.90'} - optional: true - - /commander/2.20.3: - resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - - /commander/5.1.0: - resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} - engines: {node: '>= 6'} - dev: false - - /commander/7.2.0: - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} - engines: {node: '>= 10'} - dev: false - - /comment-json/2.4.2: - resolution: {integrity: sha512-T+iXox779qsqneMYx/x5BZyz4xjCeQRmuNVzz8tko7qZUs3MlzpA3RAs+O1XsgcKToNBMIvfVzafGOeiU7RggA==} - engines: {node: '>= 6'} - dependencies: - core-util-is: 1.0.2 - esprima: 4.0.1 - has-own-prop: 2.0.0 - repeat-string: 1.6.1 - dev: true - - /commondir/1.0.1: - resolution: {integrity: sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=} - dev: true - - /component-emitter/1.3.0: - resolution: {integrity: sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==} - dev: true - - /concat-map/0.0.1: - resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} - - /config-chain/1.1.13: - resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} - dependencies: - ini: 1.3.8 - proto-list: 1.2.4 - dev: false - - /console-control-strings/1.1.0: - resolution: {integrity: sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=} - dev: false - - /constant-case/3.0.4: - resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} - dependencies: - no-case: 3.0.4 - tslib: 2.3.0 - upper-case: 2.0.2 - - /content-disposition/0.5.3: - resolution: {integrity: sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==} - engines: {node: '>= 0.6'} - dependencies: - safe-buffer: 5.1.2 - dev: false - - /cookie/0.4.1: - resolution: {integrity: sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==} - engines: {node: '>= 0.6'} - - /copy-descriptor/0.1.1: - resolution: {integrity: sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=} - engines: {node: '>=0.10.0'} - dev: true - - /core-util-is/1.0.2: - resolution: {integrity: sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=} - - /cp-file/7.0.0: - resolution: {integrity: sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==} - engines: {node: '>=8'} - dependencies: - graceful-fs: 4.2.6 - make-dir: 3.1.0 - nested-error-stacks: 2.1.0 - p-event: 4.2.0 - dev: true - - /cp-file/9.1.0: - resolution: {integrity: sha512-3scnzFj/94eb7y4wyXRWwvzLFaQp87yyfTnChIjlfYrVqp5lVO3E2hIJMeQIltUT0K2ZAB3An1qXcBmwGyvuwA==} - engines: {node: '>=10'} - dependencies: - graceful-fs: 4.2.6 - make-dir: 3.1.0 - nested-error-stacks: 2.1.0 - p-event: 4.2.0 - dev: true - - /cpy/8.1.2: - resolution: {integrity: sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg==} - engines: {node: '>=8'} - dependencies: - arrify: 2.0.1 - cp-file: 7.0.0 - globby: 9.2.0 - has-glob: 1.0.0 - junk: 3.1.0 - nested-error-stacks: 2.1.0 - p-all: 2.1.0 - p-filter: 2.1.0 - p-map: 3.0.0 - dev: true - - /cross-spawn/7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} - engines: {node: '>= 8'} - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - dev: true - - /css-select/4.1.3: - resolution: {integrity: sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==} - dependencies: - boolbase: 1.0.0 - css-what: 5.0.1 - domhandler: 4.2.0 - domutils: 2.7.0 - nth-check: 2.0.0 - dev: false - - /css-what/5.0.1: - resolution: {integrity: sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==} - engines: {node: '>= 6'} - dev: false - - /cuid/2.1.8: - resolution: {integrity: sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg==} - - /dateformat/4.5.1: - resolution: {integrity: sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q==} - dev: true - - /debug/2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - dependencies: - ms: 2.0.0 - - /debug/4.3.1: - resolution: {integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - - /debug/4.3.2: - resolution: {integrity: sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.2 - dev: true - - /decode-uri-component/0.2.0: - resolution: {integrity: sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=} - engines: {node: '>=0.10'} - dev: true - - /decompress-response/6.0.0: - resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} - engines: {node: '>=10'} - dependencies: - mimic-response: 3.1.0 - dev: false - - /deep-extend/0.6.0: - resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} - engines: {node: '>=4.0.0'} - dev: true - - /defer-to-connect/2.0.1: - resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} - engines: {node: '>=10'} - dev: false - - /define-lazy-prop/2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - dev: true - - /define-property/0.2.5: - resolution: {integrity: sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 0.1.6 - dev: true - - /define-property/1.0.0: - resolution: {integrity: sha1-dp66rz9KY6rTr56NMEybvnm/sOY=} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.2 - dev: true - - /define-property/2.0.2: - resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==} - engines: {node: '>=0.10.0'} - dependencies: - is-descriptor: 1.0.2 - isobject: 3.0.1 - dev: true - - /delegates/1.0.0: - resolution: {integrity: sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=} - dev: false - - /denque/1.5.0: - resolution: {integrity: sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ==} - engines: {node: '>=0.10'} - dev: false - - /depd/1.1.2: - resolution: {integrity: sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=} - engines: {node: '>= 0.6'} - dev: false - - /destroy/1.0.4: - resolution: {integrity: sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=} - dev: false - - /detect-indent/6.1.0: - resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} - engines: {node: '>=8'} - dev: true - - /detect-libc/1.0.3: - resolution: {integrity: sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=} - engines: {node: '>=0.10'} - hasBin: true - dev: false - - /detect-node/2.0.4: - resolution: {integrity: sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==} - dev: false - - /dir-glob/2.2.2: - resolution: {integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==} - engines: {node: '>=4'} - dependencies: - path-type: 3.0.0 - dev: true - - /dom-serializer/1.3.2: - resolution: {integrity: sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==} - dependencies: - domelementtype: 2.2.0 - domhandler: 4.2.0 - entities: 2.2.0 - dev: false - - /domelementtype/2.2.0: - resolution: {integrity: sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==} - dev: false - - /domhandler/3.3.0: - resolution: {integrity: sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.2.0 - dev: false - - /domhandler/4.2.0: - resolution: {integrity: sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.2.0 - dev: false - - /domutils/2.7.0: - resolution: {integrity: sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg==} - dependencies: - dom-serializer: 1.3.2 - domelementtype: 2.2.0 - domhandler: 4.2.0 - dev: false - - /dot-case/3.0.4: - resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - dependencies: - no-case: 3.0.4 - tslib: 2.3.0 - - /dotenv/10.0.0: - resolution: {integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==} - engines: {node: '>=10'} - - /edge-error/2.0.4: - resolution: {integrity: sha512-8oA1IfaPmOfl+hz/O4assGCxnGhSAXz05vYMFQD8uk5Tct47+sr2uGVYOU4JoetYtH2XOZR2PurJJVPyuTKmyg==} - dev: false - - /edge-lexer/4.0.6: - resolution: {integrity: sha512-esF2KhZYvekx8rJp+0xtzgEwzBByKK5d3jA/ucp/JG+0sO6ZojzgJBXJ9vN8bm6Rc3ZgUEKwgmdYJPNZKcSvzQ==} - dependencies: - edge-error: 2.0.4 - dev: false - - /edge-parser/8.0.7: - resolution: {integrity: sha512-5o2S/S8KVMEMbKtTRdlIb0vS/LJ66SsUn4NTs0Qr/3Qee+HoEAKbeDckjY4SIDpX7q+zI/mse85FxhgDWak/5g==} - dependencies: - acorn: 8.4.0 - astring: 1.7.5 - edge-error: 2.0.4 - edge-lexer: 4.0.6 - js-stringify: 1.0.2 - dev: false - - /edge-supercharged/3.1.1: - resolution: {integrity: sha512-Pxgst3UeR+0PWuTIG2QHuFgFe73TMoVMphRsa/bOmIvOkQ87cD7+VxiS9ph2KbA4djJ2ChbdgtbNiIvju5yXEw==} - dependencies: - '@poppinss/utils': 3.1.3 - slash: 3.0.0 - dev: false - - /edge.js/5.2.1: - resolution: {integrity: sha512-+vduj8qCzRpmUia9e3YKhkwtQBLoW6mBeyUoZU4cUmuEqf/ZFH1FBsb3oBQKLQ3thfJoluKG9ekwoSlFPvLbPA==} - dependencies: - '@poppinss/inspect': 1.0.1 - '@poppinss/utils': 3.1.3 - edge-error: 2.0.4 - edge-lexer: 4.0.6 - edge-parser: 8.0.7 - js-stringify: 1.0.2 - macroable: 5.1.3 - stringify-attributes: 2.0.0 - dev: false - - /editorconfig/0.15.3: - resolution: {integrity: sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==} - hasBin: true - dependencies: - commander: 2.20.3 - lru-cache: 4.1.5 - semver: 5.7.1 - sigmund: 1.0.1 - - /ee-first/1.1.1: - resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} - dev: false - - /emittery/0.9.2: - resolution: {integrity: sha512-sweWHu3j4dQm+NjLPu17pv+m5lCeK7g4Ov0NgfbRUEyzLc59DYDeRYXqlxEvuolaToI0VR3ThjFAghzl7Acjfw==} - engines: {node: '>=12'} - - /emoji-regex/8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - - /encodeurl/1.0.2: - resolution: {integrity: sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=} - engines: {node: '>= 0.8'} - dev: false - - /end-of-stream/1.4.4: - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} - dependencies: - once: 1.4.0 - - /enquirer/2.3.6: - resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} - engines: {node: '>=8.6'} - dependencies: - ansi-colors: 4.1.1 - - /entities/2.2.0: - resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} - dev: false - - /es-module-lexer/0.3.26: - resolution: {integrity: sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA==} - dev: false - - /escalade/3.1.1: - resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} - engines: {node: '>=6'} - dev: false - - /escape-goat/2.1.1: - resolution: {integrity: sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==} - engines: {node: '>=8'} - dev: false - - /escape-goat/3.0.0: - resolution: {integrity: sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw==} - engines: {node: '>=10'} - dev: false - - /escape-html/1.0.3: - resolution: {integrity: sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=} - dev: false - - /escape-string-regexp/1.0.5: - resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=} - engines: {node: '>=0.8.0'} - dev: true - - /esm/3.2.25: - resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} - engines: {node: '>=6'} - dev: false - - /esprima/4.0.1: - resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} - engines: {node: '>=4'} - hasBin: true - dev: true - - /esutils/2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - dev: true - - /etag/1.8.1: - resolution: {integrity: sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=} - engines: {node: '>= 0.6'} - dev: false - - /execa/5.1.1: - resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} - engines: {node: '>=10'} - dependencies: - cross-spawn: 7.0.3 - get-stream: 6.0.1 - 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 - dev: true - - /expand-brackets/2.1.4: - resolution: {integrity: sha1-t3c14xXOMPa27/D4OwQVGiJEliI=} - engines: {node: '>=0.10.0'} - dependencies: - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - posix-character-classes: 0.1.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - dev: true - - /extend-shallow/2.0.1: - resolution: {integrity: sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=} - engines: {node: '>=0.10.0'} - dependencies: - is-extendable: 0.1.1 - dev: true - - /extend-shallow/3.0.2: - resolution: {integrity: sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=} - engines: {node: '>=0.10.0'} - dependencies: - assign-symbols: 1.0.0 - is-extendable: 1.0.1 - dev: true - - /extend/3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - dev: true - - /extglob/2.0.4: - resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==} - engines: {node: '>=0.10.0'} - dependencies: - array-unique: 0.3.2 - define-property: 1.0.0 - expand-brackets: 2.1.4 - extend-shallow: 2.0.1 - fragment-cache: 0.2.1 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - dev: true - - /faker/5.5.3: - resolution: {integrity: sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g==} - dev: false - - /fast-deep-equal/3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: false - - /fast-glob/2.2.7: - resolution: {integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==} - engines: {node: '>=4.0.0'} - dependencies: - '@mrmlnc/readdir-enhanced': 2.2.1 - '@nodelib/fs.stat': 1.1.3 - glob-parent: 3.1.0 - is-glob: 4.0.1 - merge2: 1.4.1 - micromatch: 3.1.10 - dev: true - - /fast-redact/3.0.1: - resolution: {integrity: sha512-kYpn4Y/valC9MdrISg47tZOpYBNoTXKgT9GYXFpHN/jYFs+lFkPoisY+LcBODdKVMY96ATzvzsWv+ES/4Kmufw==} - engines: {node: '>=6'} - - /fast-safe-stringify/2.0.7: - resolution: {integrity: sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==} - - /fastq/1.11.0: - resolution: {integrity: sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==} - dependencies: - reusify: 1.0.4 - dev: false - - /file-type/12.4.2: - resolution: {integrity: sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==} - engines: {node: '>=8'} - dev: false - - /file-type/16.5.0: - resolution: {integrity: sha512-OxgWA9tbL8N/WP00GD1z8O0MiwQKFyWRs1q+3FhjdvcGgKqwxcejyGWso3n4/IMU6DdwV+ARZ4A7TTnPkDcSiw==} - engines: {node: '>=8'} - dependencies: - readable-web-to-node-stream: 3.0.1 - strtok3: 6.0.8 - token-types: 2.1.1 - dev: false - - /fill-range/4.0.0: - resolution: {integrity: sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-number: 3.0.0 - repeat-string: 1.6.1 - to-regex-range: 2.1.1 - dev: true - - /fill-range/7.0.1: - resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} - engines: {node: '>=8'} - dependencies: - to-regex-range: 5.0.1 - - /find-cache-dir/3.3.1: - resolution: {integrity: sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==} - engines: {node: '>=8'} - dependencies: - commondir: 1.0.1 - make-dir: 3.1.0 - pkg-dir: 4.2.0 - dev: true - - /find-up/4.1.0: - resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} - engines: {node: '>=8'} - dependencies: - locate-path: 5.0.0 - path-exists: 4.0.0 - dev: true - - /flatstr/1.0.12: - resolution: {integrity: sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw==} - - /follow-redirects/1.14.1: - resolution: {integrity: sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - dev: false - - /for-in/1.0.2: - resolution: {integrity: sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=} - engines: {node: '>=0.10.0'} - dev: true - - /forwarded/0.2.0: - resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} - engines: {node: '>= 0.6'} - dev: false - - /fragment-cache/0.2.1: - resolution: {integrity: sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=} - engines: {node: '>=0.10.0'} - dependencies: - map-cache: 0.2.2 - dev: true - - /fresh/0.5.2: - resolution: {integrity: sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=} - engines: {node: '>= 0.6'} - dev: false - - /fs-extra/10.0.0: - resolution: {integrity: sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==} - engines: {node: '>=12'} - dependencies: - graceful-fs: 4.2.6 - jsonfile: 6.1.0 - universalify: 2.0.0 - - /fs-extra/8.1.0: - resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} - engines: {node: '>=6 <7 || >=8'} - dependencies: - graceful-fs: 4.2.6 - jsonfile: 4.0.0 - universalify: 0.1.2 - dev: true - - /fs-minipass/2.1.0: - resolution: {integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.1.3 - dev: false - - /fs-readdir-recursive/1.1.0: - resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} - - /fs.realpath/1.0.0: - resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=} - - /fsevents/2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - optional: true - - /function-bind/1.1.1: - resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} - dev: false - - /gauge/2.7.4: - resolution: {integrity: sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=} - dependencies: - aproba: 1.2.0 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.3 - string-width: 1.0.2 - strip-ansi: 3.0.1 - wide-align: 1.1.3 - dev: false - - /get-caller-file/2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - dev: false - - /get-intrinsic/1.1.1: - resolution: {integrity: sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==} - dependencies: - function-bind: 1.1.1 - has: 1.0.3 - has-symbols: 1.0.2 - dev: false - - /get-port/5.1.1: - resolution: {integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==} - engines: {node: '>=8'} - dev: true - - /get-stream/5.2.0: - resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} - engines: {node: '>=8'} - dependencies: - pump: 3.0.0 - dev: false - - /get-stream/6.0.1: - resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} - engines: {node: '>=10'} - - /get-value/2.0.6: - resolution: {integrity: sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=} - engines: {node: '>=0.10.0'} - dev: true - - /getopts/2.2.5: - resolution: {integrity: sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA==} - dev: false - - /getopts/2.3.0: - resolution: {integrity: sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==} - dev: false - - /glob-parent/3.1.0: - resolution: {integrity: sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=} - dependencies: - is-glob: 3.1.0 - path-dirname: 1.0.2 - dev: true - - /glob-parent/5.1.2: - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} - engines: {node: '>= 6'} - dependencies: - is-glob: 4.0.1 - - /glob-to-regexp/0.3.0: - resolution: {integrity: sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=} - dev: true - - /glob/7.1.7: - resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} - dependencies: - fs.realpath: 1.0.0 - inflight: 1.0.6 - inherits: 2.0.4 - minimatch: 3.0.4 - once: 1.4.0 - path-is-absolute: 1.0.1 - - /globby/9.2.0: - resolution: {integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==} - engines: {node: '>=6'} - dependencies: - '@types/glob': 7.1.3 - array-union: 1.0.2 - dir-glob: 2.2.2 - fast-glob: 2.2.7 - glob: 7.1.7 - ignore: 4.0.6 - pify: 4.0.1 - slash: 2.0.0 - dev: true - - /got/11.8.2: - resolution: {integrity: sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ==} - engines: {node: '>=10.19.0'} - dependencies: - '@sindresorhus/is': 4.0.1 - '@szmarczak/http-timer': 4.0.5 - '@types/cacheable-request': 6.0.1 - '@types/responselike': 1.0.0 - cacheable-lookup: 5.0.4 - cacheable-request: 7.0.2 - decompress-response: 6.0.0 - http2-wrapper: 1.0.3 - lowercase-keys: 2.0.0 - p-cancelable: 2.1.1 - responselike: 2.0.0 - dev: false - - /graceful-fs/4.2.6: - resolution: {integrity: sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==} - - /has-ansi/2.0.0: - resolution: {integrity: sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=} - engines: {node: '>=0.10.0'} - dependencies: - ansi-regex: 2.1.1 - dev: true - - /has-flag/3.0.0: - resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=} - engines: {node: '>=4'} - dev: true - - /has-flag/4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - /has-glob/1.0.0: - resolution: {integrity: sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc=} - engines: {node: '>=0.10.0'} - dependencies: - is-glob: 3.1.0 - dev: true - - /has-own-prop/2.0.0: - resolution: {integrity: sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ==} - engines: {node: '>=8'} - dev: true - - /has-symbols/1.0.2: - resolution: {integrity: sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==} - engines: {node: '>= 0.4'} - dev: false - - /has-unicode/2.0.1: - resolution: {integrity: sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=} - dev: false - - /has-value/0.3.1: - resolution: {integrity: sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 0.1.4 - isobject: 2.1.0 - dev: true - - /has-value/1.0.0: - resolution: {integrity: sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=} - engines: {node: '>=0.10.0'} - dependencies: - get-value: 2.0.6 - has-values: 1.0.0 - isobject: 3.0.1 - dev: true - - /has-values/0.1.4: - resolution: {integrity: sha1-bWHeldkd/Km5oCCJrThL/49it3E=} - engines: {node: '>=0.10.0'} - dev: true - - /has-values/1.0.0: - resolution: {integrity: sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - kind-of: 4.0.0 - dev: true - - /has-yarn/2.1.0: - resolution: {integrity: sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==} - engines: {node: '>=8'} - dev: true - - /has/1.0.3: - resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} - engines: {node: '>= 0.4.0'} - dependencies: - function-bind: 1.1.1 - dev: false - - /haye/3.0.0: - resolution: {integrity: sha512-yWxbPdeex78IR3x3X/DdqkZbVG4rP4UaRdUGmpClfnUh1C61mASt7Iav8vk2tXcTMSygBHDDfgoVqk68NJqzhQ==} - dev: false - - /he/1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - - /header-case/2.0.4: - resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} - dependencies: - capital-case: 1.0.4 - tslib: 2.3.0 - - /html-minifier/4.0.0: - resolution: {integrity: sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig==} - engines: {node: '>=6'} - hasBin: true - dependencies: - camel-case: 3.0.0 - clean-css: 4.2.3 - commander: 2.20.3 - he: 1.2.0 - param-case: 2.1.1 - relateurl: 0.2.7 - uglify-js: 3.13.9 - dev: false - - /htmlparser2/4.1.0: - resolution: {integrity: sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==} - dependencies: - domelementtype: 2.2.0 - domhandler: 3.3.0 - domutils: 2.7.0 - entities: 2.2.0 - dev: false - - /htmlparser2/6.1.0: - resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} - dependencies: - domelementtype: 2.2.0 - domhandler: 4.2.0 - domutils: 2.7.0 - entities: 2.2.0 - dev: false - - /http-cache-semantics/4.1.0: - resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} - dev: false - - /http-errors/1.7.3: - resolution: {integrity: sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==} - engines: {node: '>= 0.6'} - dependencies: - depd: 1.1.2 - inherits: 2.0.4 - setprototypeof: 1.1.1 - statuses: 1.5.0 - toidentifier: 1.0.0 - dev: false - - /http-errors/1.8.0: - resolution: {integrity: sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A==} - engines: {node: '>= 0.6'} - dependencies: - depd: 1.1.2 - inherits: 2.0.4 - setprototypeof: 1.2.0 - statuses: 1.5.0 - toidentifier: 1.0.0 - dev: false - - /http2-wrapper/1.0.3: - resolution: {integrity: sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==} - engines: {node: '>=10.19.0'} - dependencies: - quick-lru: 5.1.1 - resolve-alpn: 1.1.2 - dev: false - - /https-proxy-agent/5.0.0: - resolution: {integrity: sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==} - engines: {node: '>= 6'} - dependencies: - agent-base: 6.0.2 - debug: 4.3.1 - transitivePeerDependencies: - - supports-color - dev: false - - /human-signals/2.1.0: - resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} - engines: {node: '>=10.17.0'} - dev: true - - /ical-generator/2.2.0_luxon@1.27.0: - resolution: {integrity: sha512-rn31KfGw1x5bQUasxmqT0s1qKoPYl0dq/EH5DGWrVFMpKrNtDO+VODUaiWvtgQb1JgmDkX5fBjKfB0+zHuaNjQ==} - engines: {node: '>=10.1.0'} - peerDependencies: - '@touch4it/ical-timezones': ^1.6.1 - '@types/luxon': ^1.26.0 - '@types/mocha': ^8.2.1 - '@types/node': ^15.0.3 - dayjs: ^1.10.4 - luxon: ^1.26.0 - moment: ^2.29.1 - moment-timezone: ^0.5.33 - rrule: ^2.6.8 - peerDependenciesMeta: - '@touch4it/ical-timezones': - optional: true - '@types/luxon': - optional: true - '@types/mocha': - optional: true - '@types/node': - optional: true - dayjs: - optional: true - luxon: - optional: true - moment: - optional: true - moment-timezone: - optional: true - rrule: - optional: true - dependencies: - luxon: 1.27.0 - uuid-random: 1.3.2 - dev: false - - /iconv-lite/0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - dependencies: - safer-buffer: 2.1.2 - dev: false - - /ieee754/1.2.1: - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - dev: false - - /igniculus/1.5.0: - resolution: {integrity: sha1-9tXneE2+lItOaooipU02XekGI9A=} - engines: {node: '>=4.0.0'} - dev: false - - /ignore/4.0.6: - resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} - engines: {node: '>= 4'} - dev: true - - /indent-string/4.0.0: - resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} - engines: {node: '>=8'} - dev: true - - /inflation/2.0.0: - resolution: {integrity: sha1-i0F+R8KPklpFEz2RTKH9OJEH8w8=} - engines: {node: '>= 0.8.0'} - dev: false - - /inflight/1.0.6: - resolution: {integrity: sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=} - dependencies: - once: 1.4.0 - wrappy: 1.0.2 - - /inherits/2.0.4: - resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - - /ini/1.3.8: - resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} - - /interpret/2.2.0: - resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} - engines: {node: '>= 0.10'} - dev: false - - /ioredis/4.27.6: - resolution: {integrity: sha512-6W3ZHMbpCa8ByMyC1LJGOi7P2WiOKP9B3resoZOVLDhi+6dDBOW+KNsRq3yI36Hmnb2sifCxHX+YSarTeXh48A==} - engines: {node: '>=6'} - dependencies: - cluster-key-slot: 1.1.0 - debug: 4.3.1 - denque: 1.5.0 - lodash.defaults: 4.2.0 - lodash.flatten: 4.4.0 - p-map: 2.1.0 - redis-commands: 1.7.0 - redis-errors: 1.2.0 - redis-parser: 3.0.0 - standard-as-callback: 2.1.0 - transitivePeerDependencies: - - supports-color - dev: false - - /ipaddr.js/1.9.1: - resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} - engines: {node: '>= 0.10'} - dev: false - - /is-accessor-descriptor/0.1.6: - resolution: {integrity: sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /is-accessor-descriptor/1.0.0: - resolution: {integrity: sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 6.0.3 - dev: true - - /is-binary-path/2.1.0: - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} - engines: {node: '>=8'} - dependencies: - binary-extensions: 2.2.0 - - /is-buffer/1.1.6: - resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} - dev: true - - /is-core-module/2.4.0: - resolution: {integrity: sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==} - dependencies: - has: 1.0.3 - dev: false - - /is-data-descriptor/0.1.4: - resolution: {integrity: sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /is-data-descriptor/1.0.0: - resolution: {integrity: sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 6.0.3 - dev: true - - /is-descriptor/0.1.6: - resolution: {integrity: sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==} - engines: {node: '>=0.10.0'} - dependencies: - is-accessor-descriptor: 0.1.6 - is-data-descriptor: 0.1.4 - kind-of: 5.1.0 - dev: true - - /is-descriptor/1.0.2: - resolution: {integrity: sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==} - engines: {node: '>=0.10.0'} - dependencies: - is-accessor-descriptor: 1.0.0 - is-data-descriptor: 1.0.0 - kind-of: 6.0.3 - dev: true - - /is-docker/2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: true - - /is-extendable/0.1.1: - resolution: {integrity: sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=} - engines: {node: '>=0.10.0'} - dev: true - - /is-extendable/1.0.1: - resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==} - engines: {node: '>=0.10.0'} - dependencies: - is-plain-object: 2.0.4 - dev: true - - /is-extglob/2.1.1: - resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=} - engines: {node: '>=0.10.0'} - - /is-fullwidth-code-point/1.0.0: - resolution: {integrity: sha1-754xOG8DGn8NZDr4L95QxFfvAMs=} - engines: {node: '>=0.10.0'} - dependencies: - number-is-nan: 1.0.1 - dev: false - - /is-fullwidth-code-point/3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - - /is-glob/3.1.0: - resolution: {integrity: sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - dev: true - - /is-glob/4.0.1: - resolution: {integrity: sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==} - engines: {node: '>=0.10.0'} - dependencies: - is-extglob: 2.1.1 - - /is-number/3.0.0: - resolution: {integrity: sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /is-number/7.0.0: - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} - engines: {node: '>=0.12.0'} - - /is-plain-object/2.0.4: - resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - - /is-stream/2.0.0: - resolution: {integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==} - engines: {node: '>=8'} - dev: true - - /is-windows/1.0.2: - resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} - engines: {node: '>=0.10.0'} - dev: true - - /is-wsl/2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - dev: true - - /isarray/1.0.0: - resolution: {integrity: sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=} - - /isexe/2.0.0: - resolution: {integrity: sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=} - dev: true - - /isobject/2.1.0: - resolution: {integrity: sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=} - engines: {node: '>=0.10.0'} - dependencies: - isarray: 1.0.0 - dev: true - - /isobject/3.0.1: - resolution: {integrity: sha1-TkMekrEalzFjaqH5yNHMvP2reN8=} - engines: {node: '>=0.10.0'} - dev: true - - /jest-worker/27.0.2: - resolution: {integrity: sha512-EoBdilOTTyOgmHXtw/cPc+ZrCA0KJMrkXzkrPGNwLmnvvlN1nj7MPrxpT7m+otSv2e1TLaVffzDnE/LB14zJMg==} - engines: {node: '>= 10.13.0'} - dependencies: - '@types/node': 15.12.4 - merge-stream: 2.0.0 - supports-color: 8.1.1 - - /jmespath/0.15.0: - resolution: {integrity: sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc=} - engines: {node: '>= 0.6.0'} - dev: true - - /joycon/2.2.5: - resolution: {integrity: sha512-YqvUxoOcVPnCp0VU1/56f+iKSdvIRJYPznH22BdXV3xMk75SFXhWeJkZ8C9XxUWt1b5x2X1SxuFygW1U0FmkEQ==} - engines: {node: '>=6'} - dev: true - - /js-beautify/1.14.0: - resolution: {integrity: sha512-yuck9KirNSCAwyNJbqW+BxJqJ0NLJ4PwBUzQQACl5O3qHMBXVkXb/rD0ilh/Lat/tn88zSZ+CAHOlk0DsY7GuQ==} - engines: {node: '>=10'} - hasBin: true - dependencies: - config-chain: 1.1.13 - editorconfig: 0.15.3 - glob: 7.1.7 - nopt: 5.0.0 - dev: false - - /js-stringify/1.0.2: - resolution: {integrity: sha1-Fzb939lyTyijaCrcYjCufk6Weds=} - dev: false - - /js-tokens/3.0.2: - resolution: {integrity: sha1-mGbfOVECEw449/mWvOtlRDIJwls=} - dev: true - - /json-buffer/3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: false - - /jsonfile/4.0.0: - resolution: {integrity: sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=} - optionalDependencies: - graceful-fs: 4.2.6 - dev: true - - /jsonfile/6.1.0: - resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} - dependencies: - universalify: 2.0.0 - optionalDependencies: - graceful-fs: 4.2.6 - - /juice/7.0.0: - resolution: {integrity: sha512-AjKQX31KKN+uJs+zaf+GW8mBO/f/0NqSh2moTMyvwBY+4/lXIYTU8D8I2h6BAV3Xnz6GGsbalUyFqbYMe+Vh+Q==} - engines: {node: '>=10.0.0'} - hasBin: true - dependencies: - cheerio: 1.0.0-rc.10 - commander: 5.1.0 - mensch: 0.3.4 - slick: 1.12.2 - web-resource-inliner: 5.0.0 - dev: false - - /junk/3.1.0: - resolution: {integrity: sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==} - engines: {node: '>=8'} - dev: true - - /keyv/4.0.3: - resolution: {integrity: sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==} - dependencies: - json-buffer: 3.0.1 - dev: false - - /kind-of/3.2.2: - resolution: {integrity: sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: true - - /kind-of/4.0.0: - resolution: {integrity: sha1-IIE989cSkosgc3hpGkUGb65y3Vc=} - engines: {node: '>=0.10.0'} - dependencies: - is-buffer: 1.1.6 - dev: true - - /kind-of/5.1.0: - resolution: {integrity: sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==} - engines: {node: '>=0.10.0'} - dev: true - - /kind-of/6.0.3: - resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} - engines: {node: '>=0.10.0'} - - /kleur/3.0.3: - resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} - engines: {node: '>=6'} - dev: true - - /kleur/4.1.4: - resolution: {integrity: sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA==} - engines: {node: '>=6'} - - /knex-dynamic-connection/2.1.1_mysql@2.18.1: - resolution: {integrity: sha512-/Lwg/T13eNRJVoSJ4e9SH3slVUmg37UHxDxVluAAKdJZxYVj8YsP2x50JSk310RmKsYbOZ8oB8SwVVEuRa4nYw==} - dependencies: - debug: 4.3.1 - knex: 0.95.6_mysql@2.18.1 - transitivePeerDependencies: - - mysql - - mysql2 - - pg - - sqlite3 - - supports-color - - tedious - dev: false - - /knex/0.95.6_mysql@2.18.1: - resolution: {integrity: sha512-noRcmkJl1MdicUbezrcr8OtVLcqQ/cfLIwgAx5EaxNxQOIJff88rBeyLywUScGhQNd/b78DIKKXZzLMrm6h/cw==} - engines: {node: '>=10'} - hasBin: true - peerDependencies: - mysql: '*' - mysql2: '*' - pg: '*' - sqlite3: '*' - tedious: '*' - peerDependenciesMeta: - mysql: - optional: true - mysql2: - optional: true - pg: - optional: true - sqlite3: - optional: true - tedious: - optional: true - dependencies: - colorette: 1.2.1 - commander: 7.2.0 - debug: 4.3.1 - escalade: 3.1.1 - esm: 3.2.25 - getopts: 2.2.5 - interpret: 2.2.0 - lodash: 4.17.21 - mysql: 2.18.1 - pg-connection-string: 2.4.0 - rechoir: 0.7.0 - resolve-from: 5.0.0 - tarn: 3.0.1 - tildify: 2.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /leven/2.1.0: - resolution: {integrity: sha1-wuep93IJTe6dNCAq6KzORoeHVYA=} - engines: {node: '>=0.10.0'} - dev: true - - /leven/3.1.0: - resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} - engines: {node: '>=6'} - dev: false - - /listify/1.0.3: - resolution: {integrity: sha512-083swF7iH7bx8666zdzBColpgEuy46HjN3r1isD4zV6Ix7FuHfb/2/WVnl4CH8hjuoWeFF7P5KkKNXUnJCFEJg==} - engines: {node: '>= 0.4'} - dev: true - - /locate-path/5.0.0: - resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} - engines: {node: '>=8'} - dependencies: - p-locate: 4.1.0 - dev: true - - /lodash.defaults/4.2.0: - resolution: {integrity: sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=} - dev: false - - /lodash.flatten/4.4.0: - resolution: {integrity: sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=} - dev: false - - /lodash.toarray/4.4.0: - resolution: {integrity: sha1-JMS/zWsvuji/0FlNsRedjptlZWE=} - dev: true - - /lodash/4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - - /log-update/4.0.0: - resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==} - engines: {node: '>=10'} - dependencies: - ansi-escapes: 4.3.2 - cli-cursor: 3.1.0 - slice-ansi: 4.0.0 - wrap-ansi: 6.2.0 - - /lower-case/1.1.4: - resolution: {integrity: sha1-miyr0bno4K6ZOkv31YdcOcQujqw=} - dev: false - - /lower-case/2.0.2: - resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} - dependencies: - tslib: 2.3.0 - - /lowercase-keys/2.0.0: - resolution: {integrity: sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==} - engines: {node: '>=8'} - dev: false - - /lru-cache/4.1.5: - resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} - dependencies: - pseudomap: 1.0.2 - yallist: 2.1.2 - - /lru-cache/6.0.0: - resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} - engines: {node: '>=10'} - dependencies: - yallist: 4.0.0 - - /luxon/1.27.0: - resolution: {integrity: sha512-VKsFsPggTA0DvnxtJdiExAucKdAnwbCCNlMM5ENvHlxubqWd0xhZcdb4XgZ7QFNhaRhilXCFxHuoObP5BNA4PA==} - dev: false - - /macroable/5.1.3: - resolution: {integrity: sha512-vLcoI4Ajn1FqTrO8wJL8wBd8eTXsuzAGpcGmQaWbK7YLrFUhTV69WwAEnyT03HpnwgJL2wzZm6lg6sOJHGTQXA==} - dev: false - - /make-dir/3.1.0: - resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} - engines: {node: '>=8'} - dependencies: - semver: 6.3.0 - - /map-age-cleaner/0.1.3: - resolution: {integrity: sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==} - engines: {node: '>=6'} - dependencies: - p-defer: 1.0.0 - dev: true - - /map-cache/0.2.2: - resolution: {integrity: sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=} - engines: {node: '>=0.10.0'} - dev: true - - /map-visit/1.0.0: - resolution: {integrity: sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=} - engines: {node: '>=0.10.0'} - dependencies: - object-visit: 1.0.1 - dev: true - - /marked-terminal/4.1.1_marked@2.1.1: - resolution: {integrity: sha512-t7Mdf6T3PvOEyN01c3tYxDzhyKZ8xnkp8Rs6Fohno63L/0pFTJ5Qtwto2AQVuDtbQiWzD+4E5AAu1Z2iLc8miQ==} - peerDependencies: - marked: ^1.0.0 || ^2.0.0 - dependencies: - ansi-escapes: 4.3.2 - cardinal: 2.1.1 - chalk: 4.1.1 - cli-table: 0.3.6 - marked: 2.1.1 - node-emoji: 1.10.0 - supports-hyperlinks: 2.2.0 - dev: true - - /marked/2.1.1: - resolution: {integrity: sha512-5XFS69o9CzDpQDSpUYC+AN2xvq8yl1EGa5SG/GI1hP78/uTeo3PDfiDNmsUyiahpyhToDDJhQk7fNtJsga+KVw==} - engines: {node: '>= 12'} - hasBin: true - dev: true - - /media-typer/0.3.0: - resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} - engines: {node: '>= 0.6'} - dev: false - - /media-typer/1.1.0: - resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} - engines: {node: '>= 0.8'} - dev: false - - /mem/8.1.1: - resolution: {integrity: sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA==} - engines: {node: '>=10'} - dependencies: - map-age-cleaner: 0.1.3 - mimic-fn: 3.1.0 - dev: true - - /mensch/0.3.4: - resolution: {integrity: sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g==} - dev: false - - /merge-stream/2.0.0: - resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} - - /merge2/1.4.1: - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} - engines: {node: '>= 8'} - dev: true - - /micromatch/3.1.10: - resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - braces: 2.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - extglob: 2.0.4 - fragment-cache: 0.2.1 - kind-of: 6.0.3 - nanomatch: 1.2.13 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - dev: true - - /mime-db/1.48.0: - resolution: {integrity: sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==} - engines: {node: '>= 0.6'} - dev: false - - /mime-kind/3.0.0: - resolution: {integrity: sha512-sx9lClVP7GXY2mO3aVDWTQLhfvAdDvNhGi3o3g7+ae3aKaoybeGbEIlnreoRKjrbDpvlPltlkIryxOtatojeXQ==} - engines: {node: '>=8.3.0'} - dependencies: - file-type: 12.4.2 - mime-types: 2.1.31 - dev: false - - /mime-types/2.1.31: - resolution: {integrity: sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==} - engines: {node: '>= 0.6'} - dependencies: - mime-db: 1.48.0 - dev: false - - /mime/1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - dev: false - - /mime/2.5.2: - resolution: {integrity: sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==} - engines: {node: '>=4.0.0'} - hasBin: true - dev: false - - /mimic-fn/2.1.0: - resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} - engines: {node: '>=6'} - - /mimic-fn/3.1.0: - resolution: {integrity: sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ==} - engines: {node: '>=8'} - dev: true - - /mimic-response/1.0.1: - resolution: {integrity: sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==} - engines: {node: '>=4'} - dev: false - - /mimic-response/3.1.0: - resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} - engines: {node: '>=10'} - dev: false - - /minimatch/3.0.4: - resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==} - dependencies: - brace-expansion: 1.1.11 - - /minimist/1.2.5: - resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==} - dev: true - - /minipass/3.1.3: - resolution: {integrity: sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==} - engines: {node: '>=8'} - dependencies: - yallist: 4.0.0 - dev: false - - /minizlib/2.1.2: - resolution: {integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==} - engines: {node: '>= 8'} - dependencies: - minipass: 3.1.3 - yallist: 4.0.0 - dev: false - - /mixin-deep/1.3.2: - resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==} - engines: {node: '>=0.10.0'} - dependencies: - for-in: 1.0.2 - is-extendable: 1.0.1 - dev: true - - /mjml-accordion/4.10.0: - resolution: {integrity: sha512-4EWOmEmu4+KsvAfJ8vcIHF3mFjXzXc/oWv67+bUqGeGkPUhW6kWuZJ6PmCr0Fsh4V5mSOjuETIdopen57Jonxg==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-body/4.10.0: - resolution: {integrity: sha512-f21DPYGcxOAORc3KV3RhnyCgankOdulyps85Zx06xHndi44oN62n5SDR0Q1exIXrwkGnUOZH9pZeRUm1EsbuRw==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-button/4.10.0: - resolution: {integrity: sha512-bNyvuG7cuVHnCimAKBJV3bs0zyCsqZbEdipBMLlddW0TRGje0CMFnPtOIpOMt90LoVnh6DsqYAl/tUpu1GRvTg==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-carousel/4.10.0: - resolution: {integrity: sha512-oELCcXGvkeAwSAU9ZZCJ2jxnXLVc+Rwf6ls0z8Vy+KN/ypM2ZEwQJ+PqSBN6I2PVwjvHL4HMeOM5RZLSlZv/kQ==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-cli/4.10.0: - resolution: {integrity: sha512-Lw1QUvWh9ecagrFr9FxitMisVCggk4h9rNPJqXaNwVlnMtDioG0F46r6vdNcu+SEftBeowcCEADhj0vwzqXIZQ==} - hasBin: true - dependencies: - '@babel/runtime': 7.14.6 - chokidar: 3.5.2 - glob: 7.1.7 - html-minifier: 4.0.0 - js-beautify: 1.14.0 - lodash: 4.17.21 - mjml-core: 4.10.0 - mjml-migrate: 4.10.0 - mjml-parser-xml: 4.10.0 - mjml-validator: 4.10.0 - yargs: 16.2.0 - dev: false - - /mjml-column/4.10.0: - resolution: {integrity: sha512-k8dc9rvyXJq8Evu+zJvNiC/JsU0ijrRUKvq6KFJ/X2vyGNcJVzQ4TzSU0EzFHIA8gi9fn8Tk0dxZb7NN7Am/WQ==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-core/4.10.0: - resolution: {integrity: sha512-esN5HNIy5OAFKuJ+L9mJZQlsQO7+3gIESdF+wIPg4Jm1uaAKYb1dFBGortH707iCPzyEQFzXzbklM7Sb7LtmOg==} - dependencies: - '@babel/runtime': 7.14.6 - cheerio: 1.0.0-rc.10 - detect-node: 2.0.4 - html-minifier: 4.0.0 - js-beautify: 1.14.0 - juice: 7.0.0 - lodash: 4.17.21 - mjml-migrate: 4.10.0 - mjml-parser-xml: 4.10.0 - mjml-validator: 4.10.0 - dev: false - - /mjml-divider/4.10.0: - resolution: {integrity: sha512-fD40gflj3PFlvKYBGDYcJFpwdTRwijE/Nz3lurR0awRDyFdpGPWenwrml9XQn1kNgcw2yESFii6Mx+CIe9eUkg==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-group/4.10.0: - resolution: {integrity: sha512-w6YyzAelF0+4IT1SNVxD+baJ3Gl8uxKmYZtduWtthWX77Xmrup7hSySHQmdNOFYnGZmRE5ZVuqUyUsnwTHNpvA==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-head-attributes/4.10.0: - resolution: {integrity: sha512-IOSky9pn2C2+GrHu2Ol2h5SrX3hDNcxyUPPNdhiERp993ssWnQbmRDEaB1fVKgZs0ftVadVSuwI2hKuEHWiwug==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-head-breakpoint/4.10.0: - resolution: {integrity: sha512-6oA9GwMJPZ/LVdgBR+vc8BV/idgkPH70g9WCkHt9S4cH9b0OIPdBsOKBoAPz/lD4D7npNr/l9LTpGAz+R/j9fA==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-head-font/4.10.0: - resolution: {integrity: sha512-F1MdGBAXAuAHnzjqX2PwSa8qiaaLYo4at1imqjXXLO7ue35NdXM0H2m09t1vVHcyRjlpxcvGUXsHAQGpRLXO9A==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-head-html-attributes/4.10.0: - resolution: {integrity: sha512-HHEG+yZy16haLHo95rE+GKM/uWVaKpoTa2KUUGnH8386BnmjITrg3aOagLchdI550kj4jvxpxr2E8E0ED3a6cA==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-head-preview/4.10.0: - resolution: {integrity: sha512-8OnfeZgTPRqI0VBT9GhmoaWGVkWpjKbvx0ENqw6ILc6zcaIfw9IKpJT9rZQGybosxv07eWEy6ohpmGMwQkp7VQ==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-head-style/4.10.0: - resolution: {integrity: sha512-CVmmncJO6nkqVQEPD6BOxiPKUO88BjOtPZC/ZKpUvQE9XZWkkgosF7Wk2o89fipo7q8ZD0BxmSNq7RNA8/LQrg==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-head-title/4.10.0: - resolution: {integrity: sha512-aFY0CpCYbKqkaMSVqnIEtYo0dVMdTWCeNbzVT9qf9oeg6HnWVRJbN/MXYCQJe4xR3dDAbdosSY4H4+33S/SIbQ==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-head/4.10.0: - resolution: {integrity: sha512-+lw1W2erI80pxDvFaTneaZ2Lwy8u515A33mhCThu6XkyuLHw98ghye4KyjO4Tv8ezVv8T+zv7Q/qm4D0ZnDj+w==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-hero/4.10.0: - resolution: {integrity: sha512-2X7gIJtbrFgjw7A/MzhvHfYsSZfJlCFVPxe/Av/dgApcgXmf3QnSCvuMiydGH6spief4k9rOT9QzueMZ0WvFog==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-image/4.10.0: - resolution: {integrity: sha512-2EeScaDcltRUnI4F4F0wa/MmxjuifcfzuEP1Nvn/Pf0RWlntjjuypng3z+9bao6NaG16sBSjg2FDcE/G/URCCQ==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-migrate/4.10.0: - resolution: {integrity: sha512-Vy4vGWLMkrMl06f2V57021l46ri+7cmRSfDq7KSbluIa9gYLPB9vOxdioBYRh/MiN2jpmvFuO2L22yzLvf/8Yg==} - hasBin: true - dependencies: - '@babel/runtime': 7.14.6 - js-beautify: 1.14.0 - lodash: 4.17.21 - mjml-core: 4.10.0 - mjml-parser-xml: 4.10.0 - yargs: 16.2.0 - dev: false - - /mjml-navbar/4.10.0: - resolution: {integrity: sha512-wlowirXSmE6GTN0UK/wp6JD/3FKQEwR40coGw9sVhOXnV/Aug8H5DzAQiagleaDzoGMJMnEUAtb2a6SBqRMjSw==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-parser-xml/4.10.0: - resolution: {integrity: sha512-1IyC8gOh3C2DLf4hJlQntTrbdwcj5DCe3y0DK+DgQBWVFL5uTNwYwMWN4LvqLvPHRPgAtMNw2yAobsrCZ4A0RQ==} - dependencies: - '@babel/runtime': 7.14.6 - detect-node: 2.0.4 - htmlparser2: 4.1.0 - lodash: 4.17.21 - dev: false - - /mjml-preset-core/4.10.0: - resolution: {integrity: sha512-fCzIdgQndJpvHOYi7yhLY1eFh8cQLe6JGRGv8UlB4VD2gYaogrQvCAuUQrck6Qb7VxvwDs7r2odAPo2B4tYuTw==} - dependencies: - '@babel/runtime': 7.14.6 - mjml-accordion: 4.10.0 - mjml-body: 4.10.0 - mjml-button: 4.10.0 - mjml-carousel: 4.10.0 - mjml-column: 4.10.0 - mjml-divider: 4.10.0 - mjml-group: 4.10.0 - mjml-head: 4.10.0 - mjml-head-attributes: 4.10.0 - mjml-head-breakpoint: 4.10.0 - mjml-head-font: 4.10.0 - mjml-head-html-attributes: 4.10.0 - mjml-head-preview: 4.10.0 - mjml-head-style: 4.10.0 - mjml-head-title: 4.10.0 - mjml-hero: 4.10.0 - mjml-image: 4.10.0 - mjml-navbar: 4.10.0 - mjml-raw: 4.10.0 - mjml-section: 4.10.0 - mjml-social: 4.10.0 - mjml-spacer: 4.10.0 - mjml-table: 4.10.0 - mjml-text: 4.10.0 - mjml-wrapper: 4.10.0 - dev: false - - /mjml-raw/4.10.0: - resolution: {integrity: sha512-rPIE1v/J5hXp4OtOAdpeWg6j/IhIEIR/5AX3no7fXzayh0SDBeCiwvLu6yuj4JeNllqsHrypNnqvvzrRgfqPWQ==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-section/4.10.0: - resolution: {integrity: sha512-ZdqB7oWTSvF2JqJDfYJnhwhJmee0vcxfN4WRoQozLweJsqtPindndVhpjEEQVjBKb5NHotG03HU1iPhipWz0Dw==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-social/4.10.0: - resolution: {integrity: sha512-R0R9SIPzZGNcUl1JfGq1LSZUneZPjpKIj2Z+vejsX4hS4vOYWgylvViSSwCjF38z4YoA6efCCC5KkSz3Lmke7w==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-spacer/4.10.0: - resolution: {integrity: sha512-j8E02vg/bft7ESYXTaeQSmnG2pbqzp6CFj/XJGidTIpv0FFDt7buLQE5ISUv6dd/nlva+GL7mItELPnAZRogzg==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-table/4.10.0: - resolution: {integrity: sha512-foFoJWlQiygnxkHYCgw+nAnyU8j+gNowJDcHBUdgfB3cuY6GaSzSpH3GGABzPGodPnmMt21hJUH0u1h+HQsyjQ==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-text/4.10.0: - resolution: {integrity: sha512-Hanx5bzNA/aDLWOrVNaKUDxJKlt4dXuSLOcFQVGYA98zIN+KTJJ7VrRmdf0Izat21l5XjemsROfC5H0Br5HFUQ==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - dev: false - - /mjml-validator/4.10.0: - resolution: {integrity: sha512-HPrNDvYPHvT54f6L0yV7x88ToOFIHbQQR2A64pYEGXlRVNvUesRDNI28T76RKvEuNefXRxaq4x9kkzb3uQ6O5w==} - dependencies: - '@babel/runtime': 7.14.6 - dev: false - - /mjml-wrapper/4.10.0: - resolution: {integrity: sha512-Rb4bWXo4WZAeucm6Of72G2Nb0xj7mlMIx0iKx3FxgvxBwngkTAkcV324EMcSzlHL88AOnHTppd96AqTj6SxG/A==} - dependencies: - '@babel/runtime': 7.14.6 - lodash: 4.17.21 - mjml-core: 4.10.0 - mjml-section: 4.10.0 - dev: false - - /mjml/4.10.0: - resolution: {integrity: sha512-xkdsOcDpcX2gKWFNUVnyHZQQt9wOxemJHUYguPH1mu0usW1SQ3j7Zf8AHLYF9M6zz7ygsDDb471lVyfqC7CLSQ==} - hasBin: true - dependencies: - '@babel/runtime': 7.14.6 - mjml-cli: 4.10.0 - mjml-core: 4.10.0 - mjml-migrate: 4.10.0 - mjml-preset-core: 4.10.0 - mjml-validator: 4.10.0 - dev: false - - /mkdirp/1.0.4: - resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} - engines: {node: '>=10'} - hasBin: true - dev: false - - /mri/1.1.4: - resolution: {integrity: sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==} - engines: {node: '>=4'} - dev: true - - /mrm-core/6.0.0: - resolution: {integrity: sha512-YDPzvzwigy2ke2aiw7kdaSeNy7x9MNVdXR6lyrKAYX9vufs4dOUjdtgkHuwAgAMqPElIMqchgLakpnuvXVh4bw==} - engines: {node: '>=10.13'} - dependencies: - babel-code-frame: 6.26.0 - comment-json: 2.4.2 - detect-indent: 6.1.0 - editorconfig: 0.15.3 - find-up: 4.1.0 - fs-extra: 8.1.0 - kleur: 3.0.3 - listify: 1.0.3 - lodash: 4.17.21 - minimist: 1.2.5 - prop-ini: 0.0.2 - rc: 1.2.8 - readme-badger: 0.3.0 - semver: 6.3.0 - smpltmpl: 1.0.2 - split-lines: 2.1.0 - strip-bom: 4.0.0 - validate-npm-package-name: 3.0.0 - webpack-merge: 4.2.2 - yaml: 2.0.0-6 - dev: true - - /ms/2.0.0: - resolution: {integrity: sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=} - - /ms/2.1.1: - resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==} - dev: false - - /ms/2.1.2: - resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - /ms/2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - /multi-part-lite/1.0.0: - resolution: {integrity: sha512-KxIRbBZZ45hoKX1ROD/19wJr0ql1bef1rE8Y1PCwD3PuNXV42pp7Wo8lEHYuAajoT4vfAFcd3rPjlkyEEyt1nw==} - engines: {node: '>=8.3.0'} - dev: false - - /multi-part/3.0.0: - resolution: {integrity: sha512-pDbdYQ6DLDxAsD83w9R7r7rlW56cETL7hIB5bCWX7FJYw0K+kL5JwHr0I8tRk9lGeFcAzf+2OEzXWlG/4wCnFw==} - engines: {node: '>=8.3.0'} - dependencies: - mime-kind: 3.0.0 - multi-part-lite: 1.0.0 - dev: false - - /mustache/4.2.0: - resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} - hasBin: true - - /mysql/2.18.1: - resolution: {integrity: sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==} - engines: {node: '>= 0.6'} - dependencies: - bignumber.js: 9.0.0 - readable-stream: 2.3.7 - safe-buffer: 5.1.2 - sqlstring: 2.3.1 - dev: false - - /nanomatch/1.2.13: - resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==} - engines: {node: '>=0.10.0'} - dependencies: - arr-diff: 4.0.0 - array-unique: 0.3.2 - define-property: 2.0.2 - extend-shallow: 3.0.2 - fragment-cache: 0.2.1 - is-windows: 1.0.2 - kind-of: 6.0.3 - object.pick: 1.3.0 - regex-not: 1.0.2 - snapdragon: 0.8.2 - to-regex: 3.0.2 - dev: true - - /negotiator/0.6.2: - resolution: {integrity: sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==} - engines: {node: '>= 0.6'} - dev: false - - /nested-error-stacks/2.1.0: - resolution: {integrity: sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==} - dev: true - - /no-case/2.3.2: - resolution: {integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==} - dependencies: - lower-case: 1.1.4 - dev: false - - /no-case/3.0.4: - resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} - dependencies: - lower-case: 2.0.2 - tslib: 2.3.0 - - /node-addon-api/3.2.1: - resolution: {integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==} - dev: false - - /node-emoji/1.10.0: - resolution: {integrity: sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==} - dependencies: - lodash.toarray: 4.4.0 - dev: true - - /node-fetch/2.6.1: - resolution: {integrity: sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==} - engines: {node: 4.x || >=6.0.0} - dev: false - - /node-modules-regexp/1.0.0: - resolution: {integrity: sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=} - engines: {node: '>=0.10.0'} - dev: true - - /node-repl-await/0.1.2: - resolution: {integrity: sha512-e03zlI31RjF6Ks9+/ju0gY55dZSm21XXMSzy85FGZtDxuAZCa/iQwzWoQjmZvaolQCrIjzs0e4shxZs1bxbpUg==} - dependencies: - acorn: 8.4.0 - acorn-class-fields: 1.0.0_acorn@8.4.0 - acorn-private-methods: 1.0.0_acorn@8.4.0 - acorn-static-class-features: 1.0.0_acorn@8.4.0 - acorn-walk: 8.1.0 - dev: false - - /nodemailer/6.6.2: - resolution: {integrity: sha512-YSzu7TLbI+bsjCis/TZlAXBoM4y93HhlIgo0P5oiA2ua9Z4k+E2Fod//ybIzdJxOlXGRcHIh/WaeCBehvxZb/Q==} - engines: {node: '>=6.0.0'} - dev: false - - /nopt/5.0.0: - resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} - engines: {node: '>=6'} - hasBin: true - dependencies: - abbrev: 1.1.1 - dev: false - - /normalize-path/3.0.0: - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} - engines: {node: '>=0.10.0'} - - /normalize-url/6.1.0: - resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==} - engines: {node: '>=10'} - dev: false - - /npm-run-path/4.0.1: - resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} - engines: {node: '>=8'} - dependencies: - path-key: 3.1.1 - dev: true - - /npmlog/4.1.2: - resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==} - dependencies: - are-we-there-yet: 1.1.5 - console-control-strings: 1.1.0 - gauge: 2.7.4 - set-blocking: 2.0.0 - dev: false - - /nth-check/2.0.0: - resolution: {integrity: sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==} - dependencies: - boolbase: 1.0.0 - dev: false - - /number-is-nan/1.0.1: - resolution: {integrity: sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=} - engines: {node: '>=0.10.0'} - dev: false - - /object-assign/4.1.1: - resolution: {integrity: sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=} - engines: {node: '>=0.10.0'} - - /object-copy/0.1.0: - resolution: {integrity: sha1-fn2Fi3gb18mRpBupde04EnVOmYw=} - engines: {node: '>=0.10.0'} - dependencies: - copy-descriptor: 0.1.1 - define-property: 0.2.5 - kind-of: 3.2.2 - dev: true - - /object-inspect/1.10.3: - resolution: {integrity: sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==} - dev: false - - /object-visit/1.0.1: - resolution: {integrity: sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - - /object.pick/1.3.0: - resolution: {integrity: sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=} - engines: {node: '>=0.10.0'} - dependencies: - isobject: 3.0.1 - dev: true - - /on-finished/2.3.0: - resolution: {integrity: sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=} - engines: {node: '>= 0.8'} - dependencies: - ee-first: 1.1.1 - dev: false - - /once/1.4.0: - resolution: {integrity: sha1-WDsap3WWHUsROsF9nFC6753Xa9E=} - dependencies: - wrappy: 1.0.2 - - /onetime/5.1.2: - resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} - engines: {node: '>=6'} - dependencies: - mimic-fn: 2.1.0 - - /open/8.2.1: - resolution: {integrity: sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ==} - engines: {node: '>=12'} - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - dev: true - - /opencollective-postinstall/2.0.3: - resolution: {integrity: sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==} - hasBin: true - dev: false - - /p-all/2.1.0: - resolution: {integrity: sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA==} - engines: {node: '>=6'} - dependencies: - p-map: 2.1.0 - dev: true - - /p-cancelable/2.1.1: - resolution: {integrity: sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==} - engines: {node: '>=8'} - dev: false - - /p-defer/1.0.0: - resolution: {integrity: sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=} - engines: {node: '>=4'} - dev: true - - /p-event/4.2.0: - resolution: {integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==} - engines: {node: '>=8'} - dependencies: - p-timeout: 3.2.0 - dev: true - - /p-filter/2.1.0: - resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} - engines: {node: '>=8'} - dependencies: - p-map: 2.1.0 - dev: true - - /p-finally/1.0.0: - resolution: {integrity: sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=} - engines: {node: '>=4'} - dev: true - - /p-limit/2.3.0: - resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} - engines: {node: '>=6'} - dependencies: - p-try: 2.2.0 - dev: true - - /p-locate/4.1.0: - resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} - engines: {node: '>=8'} - dependencies: - p-limit: 2.3.0 - dev: true - - /p-map/2.1.0: - resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} - engines: {node: '>=6'} - - /p-map/3.0.0: - resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} - engines: {node: '>=8'} - dependencies: - aggregate-error: 3.1.0 - dev: true - - /p-timeout/3.2.0: - resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} - engines: {node: '>=8'} - dependencies: - p-finally: 1.0.0 - dev: true - - /p-try/2.2.0: - resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} - engines: {node: '>=6'} - dev: true - - /param-case/2.1.1: - resolution: {integrity: sha1-35T9jPZTHs915r75oIWPvHK+Ikc=} - dependencies: - no-case: 2.3.2 - dev: false - - /param-case/3.0.4: - resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} - dependencies: - dot-case: 3.0.4 - tslib: 2.3.0 - - /parse-imports/0.0.5: - resolution: {integrity: sha512-yA6mDNotJmyAXcEdi2AjiHfI8Llk+/uv/jgBgvzFVP8iGaHC5L3rR6VQk/1qEE3SvLUsDQ2GdQMfPTi0qrmt8Q==} - engines: {node: '>= 10'} - dependencies: - es-module-lexer: 0.3.26 - slashes: 2.0.2 - dev: false - - /parse5-htmlparser2-tree-adapter/6.0.1: - resolution: {integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==} - dependencies: - parse5: 6.0.1 - dev: false - - /parse5/6.0.1: - resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==} - dev: false - - /parseurl/1.3.3: - resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} - engines: {node: '>= 0.8'} - dev: false - - /pascal-case/3.1.2: - resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} - dependencies: - no-case: 3.0.4 - tslib: 2.3.0 - - /pascalcase/0.1.1: - resolution: {integrity: sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=} - engines: {node: '>=0.10.0'} - dev: true - - /path-case/3.0.4: - resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} - dependencies: - dot-case: 3.0.4 - tslib: 2.3.0 - - /path-dirname/1.0.2: - resolution: {integrity: sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=} - dev: true - - /path-exists/4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - dev: true - - /path-is-absolute/1.0.1: - resolution: {integrity: sha1-F0uSaHNVNP+8es5r9TpanhtcX18=} - engines: {node: '>=0.10.0'} - - /path-key/3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - dev: true - - /path-parse/1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - dev: false - - /path-type/3.0.0: - resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} - engines: {node: '>=4'} - dependencies: - pify: 3.0.0 - dev: true - - /peek-readable/3.1.3: - resolution: {integrity: sha512-mpAcysyRJxmICBcBa5IXH7SZPvWkcghm6Fk8RekoS3v+BpbSzlZzuWbMx+GXrlUwESi9qHar4nVEZNMKylIHvg==} - engines: {node: '>=8'} - dev: false - - /pg-connection-string/2.4.0: - resolution: {integrity: sha512-3iBXuv7XKvxeMrIgym7njT+HlZkwZqqGX4Bu9cci8xHZNT+Um1gWKqCsAzcC0d95rcKMU5WBg6YRUcHyV0HZKQ==} - dev: false - - /phc-argon2/1.1.1: - resolution: {integrity: sha512-UBFG+AsK5IzD0xZOEOplUyZibtRsaC97OxH/4+2Ai55IUONDi6NnELwis4jt8+CEjNBoemcY5273n4l+jNa1Rg==} - engines: {node: '>=12'} - dependencies: - '@kdf/salt': 2.0.1 - '@phc/format': 1.0.0 - argon2: 0.27.2 - tsse: 2.0.0 - transitivePeerDependencies: - - supports-color - dev: false - - /picomatch/2.3.0: - resolution: {integrity: sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==} - engines: {node: '>=8.6'} - - /pify/3.0.0: - resolution: {integrity: sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=} - engines: {node: '>=4'} - dev: true - - /pify/4.0.1: - resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} - engines: {node: '>=6'} - dev: true - - /pino-pretty/5.0.2: - resolution: {integrity: sha512-nOoRoQXYZgURqtSwsM+FLFHBTrZRjuMKfQhELMeewjHnM8xdNhlkqLEGxBpcSCkFlfjHX3jdav9TQzQljjSL9w==} - hasBin: true - dependencies: - '@hapi/bourne': 2.0.0 - '@types/node': 15.12.4 - args: 5.0.1 - chalk: 4.1.1 - dateformat: 4.5.1 - fast-safe-stringify: 2.0.7 - jmespath: 0.15.0 - joycon: 2.2.5 - pump: 3.0.0 - readable-stream: 3.6.0 - rfdc: 1.3.0 - split2: 3.2.2 - strip-json-comments: 3.1.1 - dev: true - - /pino-std-serializers/3.2.0: - resolution: {integrity: sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg==} - - /pino/6.11.3: - resolution: {integrity: sha512-drPtqkkSf0ufx2gaea3TryFiBHdNIdXKf5LN0hTM82SXI4xVIve2wLwNg92e1MT6m3jASLu6VO7eGY6+mmGeyw==} - hasBin: true - dependencies: - fast-redact: 3.0.1 - fast-safe-stringify: 2.0.7 - flatstr: 1.0.12 - pino-std-serializers: 3.2.0 - quick-format-unescaped: 4.0.3 - sonic-boom: 1.4.1 - - /pirates/4.0.1: - resolution: {integrity: sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==} - engines: {node: '>= 6'} - dependencies: - node-modules-regexp: 1.0.0 - dev: true - - /pkg-dir/4.2.0: - resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} - engines: {node: '>=8'} - dependencies: - find-up: 4.1.0 - dev: true - - /pluralize/8.0.0: - resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} - engines: {node: '>=4'} - - /posix-character-classes/0.1.1: - resolution: {integrity: sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=} - engines: {node: '>=0.10.0'} - dev: true - - /pretty-hrtime/1.0.3: - resolution: {integrity: sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=} - engines: {node: '>= 0.8'} - - /process-nextick-args/2.0.1: - resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} - dev: false - - /prop-ini/0.0.2: - resolution: {integrity: sha1-ZzOny1JCrKsr5C5gdYPYEksXKls=} - dependencies: - extend: 3.0.2 - dev: true - - /proto-list/1.2.4: - resolution: {integrity: sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=} - dev: false - - /proxy-addr/2.0.7: - resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} - engines: {node: '>= 0.10'} - dependencies: - forwarded: 0.2.0 - ipaddr.js: 1.9.1 - dev: false - - /pseudomap/1.0.2: - resolution: {integrity: sha1-8FKijacOYYkX7wqKw0wa5aaChrM=} - - /pump/3.0.0: - resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} - dependencies: - end-of-stream: 1.4.4 - once: 1.4.0 - - /qs/6.10.1: - resolution: {integrity: sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==} - engines: {node: '>=0.6'} - dependencies: - side-channel: 1.0.4 - dev: false - - /quick-format-unescaped/4.0.3: - resolution: {integrity: sha512-MaL/oqh02mhEo5m5J2rwsVL23Iw2PEaGVHgT2vFt8AAsr0lfvQA5dpXo9TPu0rz7tSBdUPgkbam0j/fj5ZM8yg==} - - /quick-lru/5.1.1: - resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} - engines: {node: '>=10'} - dev: false - - /random-bytes/1.0.0: - resolution: {integrity: sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=} - engines: {node: '>= 0.8'} - dev: false - - /range-parser/1.2.1: - resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} - engines: {node: '>= 0.6'} - dev: false - - /raw-body/2.4.1: - resolution: {integrity: sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==} - engines: {node: '>= 0.8'} - dependencies: - bytes: 3.1.0 - http-errors: 1.7.3 - iconv-lite: 0.4.24 - unpipe: 1.0.0 - dev: false - - /rc/1.2.8: - resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} - hasBin: true - dependencies: - deep-extend: 0.6.0 - ini: 1.3.8 - minimist: 1.2.5 - strip-json-comments: 2.0.1 - dev: true - - /readable-stream/2.3.7: - resolution: {integrity: sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==} - dependencies: - core-util-is: 1.0.2 - inherits: 2.0.4 - isarray: 1.0.0 - process-nextick-args: 2.0.1 - safe-buffer: 5.1.2 - string_decoder: 1.1.1 - util-deprecate: 1.0.2 - dev: false - - /readable-stream/3.6.0: - resolution: {integrity: sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==} - engines: {node: '>= 6'} - dependencies: - inherits: 2.0.4 - string_decoder: 1.3.0 - util-deprecate: 1.0.2 - - /readable-web-to-node-stream/3.0.1: - resolution: {integrity: sha512-4zDC6CvjUyusN7V0QLsXVB7pJCD9+vtrM9bYDRv6uBQ+SKfx36rp5AFNPRgh9auKRul/a1iFZJYXcCbwRL+SaA==} - engines: {node: '>=8'} - dependencies: - '@types/readable-stream': 2.3.10 - readable-stream: 3.6.0 - dev: false - - /readdirp/3.6.0: - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} - engines: {node: '>=8.10.0'} - dependencies: - picomatch: 2.3.0 - - /readme-badger/0.3.0: - resolution: {integrity: sha512-+sMOLSs1imZUISZ2Rhz7qqVd77QtpcAPbGeIraFdgJmijb04YtdlPjGNBvDChTNtLbeQ6JNGQy3pOgslWfaP3g==} - dependencies: - balanced-match: 1.0.2 - dev: true - - /rechoir/0.7.0: - resolution: {integrity: sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==} - engines: {node: '>= 0.10'} - dependencies: - resolve: 1.20.0 - dev: false - - /redeyed/2.1.1: - resolution: {integrity: sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=} - dependencies: - esprima: 4.0.1 - dev: true - - /redis-commands/1.7.0: - resolution: {integrity: sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ==} - dev: false - - /redis-errors/1.2.0: - resolution: {integrity: sha1-62LSrbFeTq9GEMBK/hUpOEJQq60=} - engines: {node: '>=4'} - dev: false - - /redis-parser/3.0.0: - resolution: {integrity: sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ=} - engines: {node: '>=4'} - dependencies: - redis-errors: 1.2.0 - dev: false - - /reflect-metadata/0.1.13: - resolution: {integrity: sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==} - dev: false - - /regenerator-runtime/0.13.7: - resolution: {integrity: sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==} - dev: false - - /regex-not/1.0.2: - resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 3.0.2 - safe-regex: 1.1.0 - dev: true - - /relateurl/0.2.7: - resolution: {integrity: sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=} - engines: {node: '>= 0.10'} - dev: false - - /repeat-element/1.1.4: - resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==} - engines: {node: '>=0.10.0'} - dev: true - - /repeat-string/1.6.1: - resolution: {integrity: sha1-jcrkcOHIirwtYA//Sndihtp15jc=} - engines: {node: '>=0.10'} - dev: true - - /require-all/3.0.0: - resolution: {integrity: sha1-Rz1JcEvjEBFc4ST3c4Ox69hnExI=} - engines: {node: '>= 0.8'} - - /require-directory/2.1.1: - resolution: {integrity: sha1-jGStX9MNqxyXbiNE/+f3kqam30I=} - engines: {node: '>=0.10.0'} - dev: false - - /resolve-alpn/1.1.2: - resolution: {integrity: sha512-8OyfzhAtA32LVUsJSke3auIyINcwdh5l3cvYKdKO0nvsYSKuiLfTM5i78PJswFPT8y6cPW+L1v6/hE95chcpDA==} - dev: false - - /resolve-from/5.0.0: - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} - engines: {node: '>=8'} - - /resolve-url/0.2.1: - resolution: {integrity: sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=} - deprecated: https://github.com/lydell/resolve-url#deprecated - dev: true - - /resolve/1.20.0: - resolution: {integrity: sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==} - dependencies: - is-core-module: 2.4.0 - path-parse: 1.0.7 - dev: false - - /responselike/2.0.0: - resolution: {integrity: sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==} - dependencies: - lowercase-keys: 2.0.0 - dev: false - - /restore-cursor/3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.3 - - /ret/0.1.15: - resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==} - engines: {node: '>=0.12'} - dev: true - - /reusify/1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: false - - /rev-hash/3.0.0: - resolution: {integrity: sha512-s+87HfEKAu95TaTxnbCobn0/BkbzR23LHSwVdYvr8mn5+PPjzy+hTWyh92b5oaLgig9TKPe5d6ZcubsVBtUrZg==} - engines: {node: '>=8'} - dev: true - - /rfdc/1.3.0: - resolution: {integrity: sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==} - dev: true - - /rimraf/3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - dependencies: - glob: 7.1.7 - dev: false - - /safe-buffer/5.1.2: - resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} - dev: false - - /safe-buffer/5.2.1: - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - - /safe-regex/1.1.0: - resolution: {integrity: sha1-QKNmnzsHfR6UPURinhV91IAjvy4=} - dependencies: - ret: 0.1.15 - dev: true - - /safer-buffer/2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - dev: false - - /semver/5.7.1: - resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==} - hasBin: true - - /semver/6.3.0: - resolution: {integrity: sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==} - hasBin: true - - /semver/7.3.5: - resolution: {integrity: sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - - /send/0.17.1: - resolution: {integrity: sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==} - engines: {node: '>= 0.8.0'} - dependencies: - debug: 2.6.9 - depd: 1.1.2 - destroy: 1.0.4 - encodeurl: 1.0.2 - escape-html: 1.0.3 - etag: 1.8.1 - fresh: 0.5.2 - http-errors: 1.7.3 - mime: 1.6.0 - ms: 2.1.1 - on-finished: 2.3.0 - range-parser: 1.2.1 - statuses: 1.5.0 - dev: false - - /sentence-case/3.0.4: - resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} - dependencies: - no-case: 3.0.4 - tslib: 2.3.0 - upper-case-first: 2.0.2 - - /serve-static/1.14.1: - resolution: {integrity: sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==} - engines: {node: '>= 0.8.0'} - dependencies: - encodeurl: 1.0.2 - escape-html: 1.0.3 - parseurl: 1.3.3 - send: 0.17.1 - dev: false - - /set-blocking/2.0.0: - resolution: {integrity: sha1-BF+XgtARrppoA93TgrJDkrPYkPc=} - dev: false - - /set-value/2.0.1: - resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 2.0.1 - is-extendable: 0.1.1 - is-plain-object: 2.0.4 - split-string: 3.1.0 - dev: true - - /setprototypeof/1.1.1: - resolution: {integrity: sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==} - dev: false - - /setprototypeof/1.2.0: - resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} - dev: false - - /shebang-command/2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - dependencies: - shebang-regex: 3.0.0 - dev: true - - /shebang-regex/3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - dev: true - - /side-channel/1.0.4: - resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} - dependencies: - call-bind: 1.0.2 - get-intrinsic: 1.1.1 - object-inspect: 1.10.3 - dev: false - - /sigmund/1.0.1: - resolution: {integrity: sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=} - - /signal-exit/3.0.3: - resolution: {integrity: sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==} - - /slash/2.0.0: - resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==} - engines: {node: '>=6'} - dev: true - - /slash/3.0.0: - resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} - engines: {node: '>=8'} - - /slashes/2.0.2: - resolution: {integrity: sha512-68p+QkFAQQRetIUzNXAdktNJr8AYLxJukjBegYQz8F7VATsBJG621UYtY/vS2j9jerxdJ1k6Tc25K4DXEw1d5w==} - dev: false - - /slice-ansi/4.0.0: - resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - astral-regex: 2.0.0 - is-fullwidth-code-point: 3.0.0 - - /slick/1.12.2: - resolution: {integrity: sha1-vQSN23TefRymkV+qSldXCzVQwtc=} - dev: false - - /slugify/1.5.3: - resolution: {integrity: sha512-/HkjRdwPY3yHJReXu38NiusZw2+LLE2SrhkWJtmlPDB1fqFSvioYj62NkPcrKiNCgRLeGcGK7QBvr1iQwybeXw==} - engines: {node: '>=8.0.0'} - - /smpltmpl/1.0.2: - resolution: {integrity: sha512-Hq23NNgeZigOzIiX1dkb6W3gFn2/XQj43KhPxu65IMieG/gIwf/lQb1IudjYv0c/5LwJeS/mPayYzyo+8WJMxQ==} - engines: {node: '>=4'} - dependencies: - babel-code-frame: 6.26.0 - dev: true - - /snake-case/3.0.4: - resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} - dependencies: - dot-case: 3.0.4 - tslib: 2.3.0 - - /snapdragon-node/2.1.1: - resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 1.0.0 - isobject: 3.0.1 - snapdragon-util: 3.0.1 - dev: true - - /snapdragon-util/3.0.1: - resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /snapdragon/0.8.2: - resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==} - engines: {node: '>=0.10.0'} - dependencies: - base: 0.11.2 - debug: 2.6.9 - define-property: 0.2.5 - extend-shallow: 2.0.1 - map-cache: 0.2.2 - source-map: 0.5.7 - source-map-resolve: 0.5.3 - use: 3.1.1 - dev: true - - /sonic-boom/1.4.1: - resolution: {integrity: sha512-LRHh/A8tpW7ru89lrlkU4AszXt1dbwSjVWguGrmlxE7tawVmDBlI1PILMkXAxJTwqhgsEeTHzj36D5CmHgQmNg==} - dependencies: - atomic-sleep: 1.0.0 - flatstr: 1.0.12 - - /source-map-resolve/0.5.3: - resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==} - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.0 - resolve-url: 0.2.1 - source-map-url: 0.4.1 - urix: 0.1.0 - dev: true - - /source-map-support/0.5.19: - resolution: {integrity: sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==} - dependencies: - buffer-from: 1.1.1 - source-map: 0.6.1 - dev: true - - /source-map-url/0.4.1: - resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==} - dev: true - - /source-map/0.5.7: - resolution: {integrity: sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=} - engines: {node: '>=0.10.0'} - dev: true - - /source-map/0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - /split-lines/2.1.0: - resolution: {integrity: sha512-8dv+1zKgTpfTkOy8XZLFyWrfxO0NV/bj/3EaQ+hBrBxGv2DwiroljPjU8NlCr+59nLnsVm9WYT7lXKwe4TC6bw==} - engines: {node: '>=6'} - dev: true - - /split-string/3.1.0: - resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==} - engines: {node: '>=0.10.0'} - dependencies: - extend-shallow: 3.0.2 - dev: true - - /split2/3.2.2: - resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} - dependencies: - readable-stream: 3.6.0 - dev: true - - /sqlstring/2.3.1: - resolution: {integrity: sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A=} - engines: {node: '>= 0.6'} - dev: false - - /stack-trace/0.0.10: - resolution: {integrity: sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=} - dev: true - - /standard-as-callback/2.1.0: - resolution: {integrity: sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==} - dev: false - - /static-extend/0.1.2: - resolution: {integrity: sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 0.2.5 - object-copy: 0.1.0 - dev: true - - /statuses/1.5.0: - resolution: {integrity: sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=} - engines: {node: '>= 0.6'} - dev: false - - /string-width/1.0.2: - resolution: {integrity: sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=} - engines: {node: '>=0.10.0'} - dependencies: - code-point-at: 1.1.0 - is-fullwidth-code-point: 1.0.0 - strip-ansi: 3.0.1 - dev: false - - /string-width/4.2.2: - resolution: {integrity: sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==} - engines: {node: '>=8'} - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.0 - - /string_decoder/1.1.1: - resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} - dependencies: - safe-buffer: 5.1.2 - dev: false - - /string_decoder/1.3.0: - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} - dependencies: - safe-buffer: 5.2.1 - - /stringify-attributes/2.0.0: - resolution: {integrity: sha512-wrVfRV6sCCB6wr3gx8OgKsp/9dSWWbKr8ifLfOxEcd/BBoa8d5pAf4BZb/jQW1JZnoZImjvUdxdo3ikYHZmYiw==} - engines: {node: '>=8'} - dependencies: - escape-goat: 2.1.1 - dev: false - - /strip-ansi/3.0.1: - resolution: {integrity: sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=} - engines: {node: '>=0.10.0'} - dependencies: - ansi-regex: 2.1.1 - - /strip-ansi/6.0.0: - resolution: {integrity: sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==} - engines: {node: '>=8'} - dependencies: - ansi-regex: 5.0.0 - - /strip-bom/4.0.0: - resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} - engines: {node: '>=8'} - dev: true - - /strip-final-newline/2.0.0: - resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} - engines: {node: '>=6'} - dev: true - - /strip-json-comments/2.0.1: - resolution: {integrity: sha1-PFMZQukIwml8DsNEhYwobHygpgo=} - engines: {node: '>=0.10.0'} - dev: true - - /strip-json-comments/3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - dev: true - - /strtok3/6.0.8: - resolution: {integrity: sha512-QLgv+oiXwXgCgp2PdPPa+Jpp4D9imK9e/0BsyfeFMr6QL6wMVqoVn9+OXQ9I7MZbmUzN6lmitTJ09uwS2OmGcw==} - engines: {node: '>=8'} - dependencies: - '@tokenizer/token': 0.1.1 - '@types/debug': 4.1.5 - peek-readable: 3.1.3 - dev: false - - /supports-color/2.0.0: - resolution: {integrity: sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=} - engines: {node: '>=0.8.0'} - dev: true - - /supports-color/5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - dev: true - - /supports-color/7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - dev: true - - /supports-color/8.1.1: - resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} - engines: {node: '>=10'} - dependencies: - has-flag: 4.0.0 - - /supports-hyperlinks/2.2.0: - resolution: {integrity: sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==} - engines: {node: '>=8'} - dependencies: - has-flag: 4.0.0 - supports-color: 7.2.0 - dev: true - - /tar/6.1.0: - resolution: {integrity: sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==} - engines: {node: '>= 10'} - dependencies: - chownr: 2.0.0 - fs-minipass: 2.1.0 - minipass: 3.1.3 - minizlib: 2.1.2 - mkdirp: 1.0.4 - yallist: 4.0.0 - dev: false - - /tarn/3.0.1: - resolution: {integrity: sha512-6usSlV9KyHsspvwu2duKH+FMUhqJnAh6J5J/4MITl8s94iSUQTLkJggdiewKv4RyARQccnigV48Z+khiuVZDJw==} - engines: {node: '>=8.0.0'} - dev: false - - /term-size/2.2.1: - resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} - engines: {node: '>=8'} - dev: false - - /tildify/2.0.0: - resolution: {integrity: sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==} - engines: {node: '>=8'} - dev: false - - /tmp-cache/1.1.0: - resolution: {integrity: sha512-j040fkL/x+XAZQ9K3bKGEPwgYhOZNBQLa3NXEADUiuno9C+3N2JJA4bVPDREixp604G3/vTXWA3DIPpA9lu1RQ==} - engines: {node: '>=6'} - dev: false - - /to-object-path/0.3.0: - resolution: {integrity: sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=} - engines: {node: '>=0.10.0'} - dependencies: - kind-of: 3.2.2 - dev: true - - /to-regex-range/2.1.1: - resolution: {integrity: sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=} - engines: {node: '>=0.10.0'} - dependencies: - is-number: 3.0.0 - repeat-string: 1.6.1 - dev: true - - /to-regex-range/5.0.1: - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} - engines: {node: '>=8.0'} - dependencies: - is-number: 7.0.0 - - /to-regex/3.0.2: - resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==} - engines: {node: '>=0.10.0'} - dependencies: - define-property: 2.0.2 - extend-shallow: 3.0.2 - regex-not: 1.0.2 - safe-regex: 1.1.0 - dev: true - - /toidentifier/1.0.0: - resolution: {integrity: sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==} - engines: {node: '>=0.6'} - dev: false - - /token-types/2.1.1: - resolution: {integrity: sha512-wnQcqlreS6VjthyHO3Y/kpK/emflxDBNhlNUPfh7wE39KnuDdOituXomIbyI79vBtF0Ninpkh72mcuRHo+RG3Q==} - engines: {node: '>=0.1.98'} - dependencies: - '@tokenizer/token': 0.1.1 - ieee754: 1.2.1 - dev: false - - /truncatise/0.0.8: - resolution: {integrity: sha512-cXzueh9pzBCsLzhToB4X4gZCb3KYkrsAcBAX97JnazE74HOl3cpBJYEV7nabHeG/6/WXCU5Yujlde/WPBUwnsg==} - - /tslib/2.3.0: - resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} - - /tsse/2.0.0: - resolution: {integrity: sha512-KiYDxhCTbCUQWXtCSF2OWafC71C/ZUZP6TyCh/w7nPjzY1ZLY70KtDSfmePs3H4vSdxQotqdJvAkGAofxsQ05w==} - engines: {node: '>=10'} - dependencies: - safe-buffer: 5.2.1 - dev: false - - /type-fest/0.21.3: - resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} - engines: {node: '>=10'} - - /type-is/1.6.18: - resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} - engines: {node: '>= 0.6'} - dependencies: - media-typer: 0.3.0 - mime-types: 2.1.31 - dev: false - - /typescript/4.3.4: - resolution: {integrity: sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - - /uglify-js/3.13.9: - resolution: {integrity: sha512-wZbyTQ1w6Y7fHdt8sJnHfSIuWeDgk6B5rCb4E/AM6QNNPbOMIZph21PW5dRB3h7Df0GszN+t7RuUH6sWK5bF0g==} - engines: {node: '>=0.8.0'} - hasBin: true - dev: false - - /uid-safe/2.1.5: - resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==} - engines: {node: '>= 0.8'} - dependencies: - random-bytes: 1.0.0 - dev: false - - /union-value/1.0.1: - resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==} - engines: {node: '>=0.10.0'} - dependencies: - arr-union: 3.1.0 - get-value: 2.0.6 - is-extendable: 0.1.1 - set-value: 2.0.1 - dev: true - - /universalify/0.1.2: - resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} - engines: {node: '>= 4.0.0'} - dev: true - - /universalify/2.0.0: - resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} - engines: {node: '>= 10.0.0'} - - /unpipe/1.0.0: - resolution: {integrity: sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=} - engines: {node: '>= 0.8'} - dev: false - - /unset-value/1.0.0: - resolution: {integrity: sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=} - engines: {node: '>=0.10.0'} - dependencies: - has-value: 0.3.1 - isobject: 3.0.1 - dev: true - - /upper-case-first/2.0.2: - resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} - dependencies: - tslib: 2.3.0 - - /upper-case/1.1.3: - resolution: {integrity: sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=} - dev: false - - /upper-case/2.0.2: - resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} - dependencies: - tslib: 2.3.0 - - /urix/0.1.0: - resolution: {integrity: sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=} - deprecated: Please see https://github.com/lydell/urix#deprecated - dev: true - - /use/3.1.1: - resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==} - engines: {node: '>=0.10.0'} - dev: true - - /util-deprecate/1.0.2: - resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=} - - /uuid-random/1.3.2: - resolution: {integrity: sha512-UOzej0Le/UgkbWEO8flm+0y+G+ljUon1QWTEZOq1rnMAsxo2+SckbiZdKzAHHlVh6gJqI1TjC/xwgR50MuCrBQ==} - dev: false - - /valid-data-url/3.0.1: - resolution: {integrity: sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA==} - engines: {node: '>=10'} - dev: false - - /validate-npm-package-name/3.0.0: - resolution: {integrity: sha1-X6kS2B630MdK/BQN5zF/DKffQ34=} - dependencies: - builtins: 1.0.3 - dev: true - - /validator/13.6.0: - resolution: {integrity: sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg==} - engines: {node: '>= 0.10'} - - /vary/1.1.2: - resolution: {integrity: sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=} - engines: {node: '>= 0.8'} - dev: false - - /web-resource-inliner/5.0.0: - resolution: {integrity: sha512-AIihwH+ZmdHfkJm7BjSXiEClVt4zUFqX4YlFAzjL13wLtDuUneSaFvDBTbdYRecs35SiU7iNKbMnN+++wVfb6A==} - engines: {node: '>=10.0.0'} - dependencies: - ansi-colors: 4.1.1 - escape-goat: 3.0.0 - htmlparser2: 4.1.0 - mime: 2.5.2 - node-fetch: 2.6.1 - valid-data-url: 3.0.1 - dev: false - - /webpack-merge/4.2.2: - resolution: {integrity: sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==} - dependencies: - lodash: 4.17.21 - dev: true - - /which/2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - dependencies: - isexe: 2.0.0 - dev: true - - /wide-align/1.1.3: - resolution: {integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==} - dependencies: - string-width: 1.0.2 - dev: false - - /wrap-ansi/6.2.0: - resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} - engines: {node: '>=8'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.2 - strip-ansi: 6.0.0 - - /wrap-ansi/7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.2 - strip-ansi: 6.0.0 - dev: false - - /wrappy/1.0.2: - resolution: {integrity: sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=} - - /y18n/5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - dev: false - - /yallist/2.1.2: - resolution: {integrity: sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=} - - /yallist/4.0.0: - resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} - - /yaml/2.0.0-6: - resolution: {integrity: sha512-YPUm0Z0sei53zauT7HWkkxyIBJhb9Gnf5jv4w4ahw5/v3PjFGhZOt4paXH6g9hzcMJqmNxZwoGfF1JzE2jvSgg==} - engines: {node: '>= 12'} - dev: true - - /yargs-parser/20.2.9: - resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} - engines: {node: '>=10'} - dev: false - - /yargs/16.2.0: - resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} - engines: {node: '>=10'} - dependencies: - cliui: 7.0.4 - escalade: 3.1.1 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.2 - y18n: 5.0.8 - yargs-parser: 20.2.9 - dev: false - - /youch-terminal/1.1.1: - resolution: {integrity: sha512-LRJCIDkMH4AA6KtiX1JH3nBO8xCJx8le/CHI2hheBGHd7hcpP62owgUW5R9ObrxW0RLQT/VqPRO4mR92STkvAw==} - dependencies: - kleur: 4.1.4 - dev: true - - /youch/2.2.2: - resolution: {integrity: sha512-/FaCeG3GkuJwaMR34GHVg0l8jCbafZLHiFowSjqLlqhC6OMyf2tPJBu8UirF7/NI9X/R5ai4QfEKUCOxMAGxZQ==} - dependencies: - '@types/stack-trace': 0.0.29 - cookie: 0.4.1 - mustache: 4.2.0 - stack-trace: 0.0.10 - dev: true diff --git a/start/routes.ts b/start/routes.ts index 6fc02cb..5cf8f54 100644 --- a/start/routes.ts +++ b/start/routes.ts @@ -75,11 +75,8 @@ Route.group(() => { Route.get('/me', 'AuthController.user').middleware('auth') Route.post('/token', 'AuthController.createInfiniteToken') - Route.post('/web/login', 'AuthController.loginWeb') - Route.post('/web/logout', 'AuthController.logoutWeb') - - Route.post('/api/login', 'AuthController.loginApi') - Route.post('/api/logout', 'AuthController.logoutApi') + Route.post('/login', 'AuthController.login') + Route.post('/logout', 'AuthController.logout') Route.get('/twitter/callback', 'AuthController.twitter') Route.get('/github/callback', 'AuthController.github') diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..7180aa2 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4859 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@adonisjs/ace@^11.0.1": + version "11.0.2" + resolved "https://registry.yarnpkg.com/@adonisjs/ace/-/ace-11.0.2.tgz#89a096c3d1b1114abed1265626a3fb8e7e69560d" + integrity sha512-d7DQ9p1DYjs3JkGFlj9M/w8Li1J6Z8buoUjfLas5vmPOObWPe9gaDPYsFk773Z8UymR4UIVV7/HL6o5lKQt0Wg== + dependencies: + "@poppinss/cliui" "^2.2.4" + "@poppinss/prompts" "^1.2.2" + "@poppinss/utils" "^3.1.3" + fs-extra "^10.0.0" + getopts "^2.3.0" + leven "^3.1.0" + mustache "^4.2.0" + slash "^3.0.0" + term-size "^2.2.1" + +"@adonisjs/ally@^4.0.2": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@adonisjs/ally/-/ally-4.0.2.tgz#9a9c16de810fa96b726d2cfc772343740d486405" + integrity sha512-p8dUK//l+isTGLiiO9IPaxfAftuCYSt9t2oY4Wz2Dj2mfEtcvZY5OcdCKFYcHeN1Ax47HbLXIooq+en7rqq5PQ== + dependencies: + "@poppinss/oauth-client" "^2.0.4" + "@poppinss/utils" "^3.1.3" + +"@adonisjs/application@^5.1.3": + version "5.1.3" + resolved "https://registry.yarnpkg.com/@adonisjs/application/-/application-5.1.3.tgz#f0afb9a1d6f29afc31a6894c669fc2c67870a601" + integrity sha512-rsVY2kZybR3RP+4nsprni1eJPT9xtqLkZ9EVFvMZl4LGc9l/6YQ5962tSoNABA/oScmOKJRqzUq7X9b2iuVxjw== + dependencies: + "@adonisjs/config" "^3.0.3" + "@adonisjs/env" "^3.0.3" + "@adonisjs/fold" "^8.1.3" + "@adonisjs/logger" "^4.0.3" + "@adonisjs/profiler" "^6.0.4" + "@poppinss/utils" "^3.1.3" + semver "^7.3.5" + +"@adonisjs/assembler@^5.3.2": + version "5.3.2" + resolved "https://registry.yarnpkg.com/@adonisjs/assembler/-/assembler-5.3.2.tgz#e2d117552750394d845cb55fdbabdefd87a62a5b" + integrity sha512-rznJDptvAvS+6kO7KU6IpS9NiCb5HwMpg3bzdqeQMZXeKTCk8bJmsFRNCq3ADlNTR2bTcgZfFEccjG+wIfxtDw== + dependencies: + "@adonisjs/application" "^5.1.3" + "@adonisjs/env" "^3.0.3" + "@adonisjs/ioc-transformer" "^2.3.0" + "@adonisjs/require-ts" "^2.0.6" + "@adonisjs/sink" "^5.1.5" + "@poppinss/chokidar-ts" "^3.3.0" + "@poppinss/cliui" "^2.2.4" + "@poppinss/utils" "^3.1.3" + cpy "^8.1.2" + emittery "^0.9.2" + execa "^5.1.1" + fs-extra "^10.0.0" + get-port "^5.1.1" + has-yarn "^2.1.0" + picomatch "^2.3.0" + slash "^3.0.0" + +"@adonisjs/auth@^8.0.6": + version "8.0.6" + resolved "https://registry.yarnpkg.com/@adonisjs/auth/-/auth-8.0.6.tgz#a60f44432a3e1a5c0ff0aea54cafca3d2002ee9f" + integrity sha512-aAnfQlUGmlcG5o9Q+mm0Krr9Yh87IYDq3E1jD/TPR9TCgjM00KoBdT7rl+c419FmKItNQaQU1XJuu1VOjaoLIw== + dependencies: + "@poppinss/hooks" "^3.0.4" + "@poppinss/utils" "^3.1.3" + luxon "^1.27.0" + +"@adonisjs/bodyparser@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@adonisjs/bodyparser/-/bodyparser-7.1.2.tgz#a3123d677da170535a692246df2d8460d9d743ed" + integrity sha512-94uW/mASYiCb8stk0UIJNm2x/OWEyWCp+Yz3aas4mK7KYA00OcgASkJ/6BxX88JxszXM0xMOXbEaU5Z1G/XqRw== + dependencies: + "@poppinss/co-body" "^1.1.3" + "@poppinss/multiparty" "^1.0.2" + "@poppinss/utils" "^3.1.3" + bytes "^3.1.0" + end-of-stream "^1.4.4" + file-type "^16.5.0" + fs-extra "^10.0.0" + media-typer "^1.1.0" + +"@adonisjs/config@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@adonisjs/config/-/config-3.0.3.tgz#881ef1cd4d7e85050b474288a0eb1ebde9eb4625" + integrity sha512-qh3A5ax5cuJpL7jwOe82wUtqiAfKTFezjPToyJ8pQHCjt8ghwvXtTiwJ7XZas1e4BY8QuEfL+sqC7NYFiaCX3A== + dependencies: + "@poppinss/utils" "^3.1.3" + +"@adonisjs/core@~5.1.8": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@adonisjs/core/-/core-5.1.8.tgz#ca544b352737217a924b68794aa6de1a62d3a4c4" + integrity sha512-rZPgpTPHKSsI1MdK1xYeNrDdU6eh8I6sPI4lnZK7gW8l82mX6IJ70Soz1jEk0AZf/qe0YpAWeulBOgwOwbzFkA== + dependencies: + "@adonisjs/ace" "^11.0.1" + "@adonisjs/application" "^5.1.3" + "@adonisjs/bodyparser" "^7.1.2" + "@adonisjs/encryption" "^4.0.3" + "@adonisjs/events" "^7.0.2" + "@adonisjs/hash" "^7.0.6" + "@adonisjs/http-server" "^5.4.1" + "@adonisjs/validator" "^11.0.2" + "@poppinss/cliui" "^2.2.4" + "@poppinss/utils" "^3.1.3" + fs-extra "^10.0.0" + serve-static "^1.14.1" + stringify-attributes "^2.0.0" + +"@adonisjs/encryption@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@adonisjs/encryption/-/encryption-4.0.3.tgz#8949664d922fb8fb8bc2836f5f23b66f6298f808" + integrity sha512-vCGu6hf2/GAP4xSwU8Wr2BPLv1P8GBK6/xo7B8ScOWAubMpwEl0fHc1QFTqXTN5N/iXMl8TdrSvK3bQHAmK7zw== + dependencies: + "@poppinss/utils" "^3.1.3" + +"@adonisjs/env@^3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@adonisjs/env/-/env-3.0.3.tgz#ddf5e510bcfe304e1edb4860dbc6b2bccf6a2701" + integrity sha512-zdJcpKktH+JISbberQYB+caVeSAidIZ8vJh1vqH/sWyRRqaFNRmqXQCyUBUHk9Hi47ksGKk/biIvsXhiLjcNtw== + dependencies: + "@poppinss/utils" "^3.1.2" + dotenv "^10.0.0" + validator "^13.6.0" + +"@adonisjs/events@^7.0.2": + version "7.1.0" + resolved "https://registry.yarnpkg.com/@adonisjs/events/-/events-7.1.0.tgz#86264ffcc31d28250502533a5d58a773d44c031a" + integrity sha512-OTi+x5c0/zqnNuROasqIYfYEjCSWM7H+eCVZtMehRX4pF+phK4Fo0IDgRjD78R9QFLob9/VuQRbqR12iWR7yoQ== + dependencies: + emittery "^0.9.2" + +"@adonisjs/fold@^8.1.3": + version "8.1.3" + resolved "https://registry.yarnpkg.com/@adonisjs/fold/-/fold-8.1.3.tgz#f702342f026c1aea1b06d5fef5bb230a6ede8070" + integrity sha512-lQ0JYsVEcXi3EnPZKZIiXbbRjAUg2qenLkeY3tB3+/J1i30olPFmGiZWEuUZ6PgrMd7WQEsEob7UnnCweOsSIw== + dependencies: + "@poppinss/utils" "^3.1.3" + +"@adonisjs/hash@^7.0.6": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@adonisjs/hash/-/hash-7.0.6.tgz#8062a69fe3e29f5b55966847e9fcb4d2b1754e5e" + integrity sha512-uxKtoPwM5N9A2CZK1cTDbee8Ox4Ma+iFOMs+b8NRwwvCcWioQm5r1YTf64Apxc4do6Pd6AgQNwkL412y0dARCw== + dependencies: + "@phc/format" "^1.0.0" + "@poppinss/manager" "^4.0.3" + "@poppinss/utils" "^3.1.3" + +"@adonisjs/http-server@^5.4.1": + version "5.4.1" + resolved "https://registry.yarnpkg.com/@adonisjs/http-server/-/http-server-5.4.1.tgz#f30cb913675044404f0d46ba79ee229962aa1b7e" + integrity sha512-FmIlyyYkYMsZqUr+VcH0kOSzEDJ0shjiszsqNo24Y+/S2KEIFzrZEJr9TjmZg2gghfePZyMf88I0CzpBT9dU+Q== + dependencies: + "@poppinss/matchit" "^3.1.2" + "@poppinss/utils" "^3.1.3" + accepts "^1.3.7" + co-compose "^6.1.3" + content-disposition "^0.5.3" + cookie "^0.4.1" + destroy "^1.0.4" + encodeurl "^1.0.2" + etag "^1.8.1" + fresh "^0.5.2" + haye "^3.0.0" + macroable "^5.1.3" + mime-types "^2.1.31" + ms "^2.1.3" + on-finished "^2.3.0" + pluralize "^8.0.0" + proxy-addr "^2.0.7" + qs "^6.10.1" + tmp-cache "^1.1.0" + type-is "^1.6.18" + vary "^1.1.2" + +"@adonisjs/ioc-transformer@^2.3.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@adonisjs/ioc-transformer/-/ioc-transformer-2.3.0.tgz#27b35eeb972598ef75992378b15ff1ccfaa93c19" + integrity sha512-I1Lv76ksY5YvdTkU2JUVJvV1ZKUgIVTYG5e7emUrBS4Y4rEZILuU1YwEviv0xd1P1TzkQ9CNPiJlv8/m3cOQ+g== + +"@adonisjs/logger@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@adonisjs/logger/-/logger-4.0.3.tgz#29cdd4a0e9b60170d2a58f36214ab4dc94d745cd" + integrity sha512-sSTgRd7Bld9XCACi/D/FdP7ZNcATnOfyZ+/kQYMpnKU3YdDmv9oLoQojtzVXv/AUI2B19HR00ruV9xpu4McByQ== + dependencies: + "@poppinss/utils" "^3.1.3" + "@types/pino" "^6.3.8" + abstract-logging "^2.0.1" + pino "^6.11.3" + +"@adonisjs/lucid@^15.0.1": + version "15.0.1" + resolved "https://registry.yarnpkg.com/@adonisjs/lucid/-/lucid-15.0.1.tgz#a8cdf12f3ae6bc5fa88d452e80423cf3afb8e598" + integrity sha512-ab3tJ9JgafaXvtOzyqd83Xs6Z1raNnSZfkVJlRHvwf3rviBEAPOLVYUDtjx7QskDkDAIam+21WkUNRHcByXQcw== + dependencies: + "@poppinss/hooks" "^3.0.4" + "@poppinss/utils" "^3.1.3" + "@types/faker" "^5.5.6" + faker "^5.5.3" + fast-deep-equal "^3.1.3" + igniculus "^1.5.0" + knex "^0.95.6" + knex-dynamic-connection "^2.1.0" + luxon "^1.27.0" + macroable "^5.1.3" + pretty-hrtime "^1.0.3" + qs "^6.10.1" + +"@adonisjs/mail@^7.2.1": + version "7.2.1" + resolved "https://registry.yarnpkg.com/@adonisjs/mail/-/mail-7.2.1.tgz#836ea30e75530b42ac6aa468ad1a20d2b8980eab" + integrity sha512-CrusOu+RjL2ukTx7M2yNzEiBFBPxK1Uct45e9BZ+hO0vQgZs3y2/61E+w0A8ZqlJh4gtM7ZtX+afDi4vEgCAxg== + dependencies: + "@poppinss/colors" "^2.1.4" + "@poppinss/manager" "^4.0.3" + "@poppinss/utils" "^3.1.3" + fastq "^1.11.0" + get-stream "^6.0.1" + got "^11.8.2" + ical-generator "^2.2.0" + multi-part "^3.0.0" + nodemailer "^6.6.1" + +"@adonisjs/profiler@^6.0.4": + version "6.0.4" + resolved "https://registry.yarnpkg.com/@adonisjs/profiler/-/profiler-6.0.4.tgz#c0a528050b1ea86dc4c1983eaa894ad961a8223f" + integrity sha512-L4F4qScik4OlO2JWfgyKjA6PtF3zyv73Yj9ThH3aV9kd+Hr+zXiqycX8BeU9gXM4eVbpM2HRCVg57pjtGG1zow== + dependencies: + "@poppinss/utils" "^3.1.3" + jest-worker "^27.0.2" + +"@adonisjs/redis@^7.0.6": + version "7.0.6" + resolved "https://registry.yarnpkg.com/@adonisjs/redis/-/redis-7.0.6.tgz#9a5d7d05f81d9991dbc1e0de4f917f74d54a891f" + integrity sha512-SqVm8I6yMey+BjwismpsYYXrzJSkP+ylBzj1UXmPFNCnamlVe4SgtGCsD8gxNanpy/y5otNliKsnLieaXbdZww== + dependencies: + "@poppinss/utils" "^3.1.3" + "@types/ioredis" "^4.26.4" + ioredis "^4.27.6" + +"@adonisjs/repl@^3.1.4": + version "3.1.4" + resolved "https://registry.yarnpkg.com/@adonisjs/repl/-/repl-3.1.4.tgz#54b4acab6482f93342745ded458a44b6ec47f643" + integrity sha512-xyL7raCKFcfmJvM+PVNdU6dBEzGx+7QLJTddRIuvPBlvWlijnzoIwwAmYmKIYfxL5ESiBipa7GqEGsO/8Ue0Qw== + dependencies: + "@poppinss/colors" "^2.1.4" + node-repl-await "^0.1.2" + parse-imports "0.0.5" + string-width "^4.2.2" + +"@adonisjs/require-ts@^2.0.6": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@adonisjs/require-ts/-/require-ts-2.0.6.tgz#5d308bd79e5bd5b52630c008a8239a2b72e12e36" + integrity sha512-q4tMUUdoIr8wVGRz41TsGhlArfy+yoKIbB+T7PC/GS0aBQ0BRl2kJTuNDD29oFdDTmbzWNJtmRQKkJRYWJBhpg== + dependencies: + "@poppinss/utils" "^3.1.3" + debug "^4.3.2" + find-cache-dir "^3.3.1" + fs-extra "^10.0.0" + normalize-path "^3.0.0" + pirates "^4.0.1" + rev-hash "^3.0.0" + source-map-support "^0.5.19" + +"@adonisjs/session@^6.0.6": + version "6.0.6" + resolved "https://registry.yarnpkg.com/@adonisjs/session/-/session-6.0.6.tgz#977243895c6c442e379a55093051a2ba73573e4d" + integrity sha512-0FaNszd+T3Dlm32DkOLdJNrWuA7hNcByJQzu86yVtwaZl/0ek5njZ6bAfgcwG9htsT+VzTDYM4zjuDPFMCoNkQ== + dependencies: + "@poppinss/utils" "^3.1.3" + fs-extra "^10.0.0" + +"@adonisjs/sink@^5.1.5": + version "5.1.5" + resolved "https://registry.yarnpkg.com/@adonisjs/sink/-/sink-5.1.5.tgz#8a238052d66f06dd9894516eb7270797c6489b2b" + integrity sha512-f/p9+OFluCaYXUrUAhCz20KPmOHub9CxNybSyzFSl34pPb0kIJbTcm5wjAz3nomAi5XZ5ZKMPpTYywc1KggGVA== + dependencies: + "@poppinss/cliui" "^2.2.4" + "@poppinss/prompts" "^1.2.2" + "@poppinss/utils" "^3.1.3" + cp-file "^9.0.0" + fs-extra "^10.0.0" + marked "^2.0.7" + marked-terminal "^4.1.1" + mrm-core "^6.0.0" + mustache "^4.2.0" + open "^8.2.0" + +"@adonisjs/validator@^11.0.2": + version "11.0.2" + resolved "https://registry.yarnpkg.com/@adonisjs/validator/-/validator-11.0.2.tgz#3c3fdd39a9cefbd330d193e9a746616c1df383ae" + integrity sha512-nie4N40Sg48r+zR+WZCausHhh2WQo+YQ0CoWRgk3yJbdesMGne0cWnTp59O9FmSboL2KVDDnNWmxqb72AAuyIQ== + dependencies: + "@poppinss/utils" "^3.1.3" + "@types/luxon" "^1.26.5" + "@types/validator" "^13.1.3" + luxon "^1.27.0" + normalize-url "^6.0.1" + tmp-cache "^1.1.0" + validator "^13.6.0" + +"@adonisjs/view@^6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@adonisjs/view/-/view-6.0.3.tgz#b86f5e997708ef6d5a505a65f514fbdfea87edb8" + integrity sha512-5/glig7MpgW0F+7bLDatDTrMuaHmj+0Qp1G+qR3BXjU6ErqXuEiGlrk/7If4196oAjiTdwkqrW77BEvClp+6hA== + dependencies: + edge-error "^2.0.4" + edge-supercharged "^3.1.1" + edge.js "^5.2.1" + +"@arr/every@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@arr/every/-/every-1.0.1.tgz#22fe1f8e6355beca6c7c7bde965eb15cf994387b" + integrity sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg== + +"@babel/runtime@^7.14.6", "@babel/runtime@^7.8.7": + version "7.14.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.6.tgz#535203bc0892efc7dec60bdc27b2ecf6e409062d" + integrity sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg== + dependencies: + regenerator-runtime "^0.13.4" + +"@hapi/bourne@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-2.0.0.tgz#5bb2193eb685c0007540ca61d166d4e1edaf918d" + integrity sha512-WEezM1FWztfbzqIUbsDzFRVMxSoLy3HugVcux6KDDtTqzPsLE8NDRHfXvev66aH1i2oOKKar3/XDjbvh/OUBdg== + +"@kdf/salt@^2.0.1": + version "2.0.1" + 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.5" + resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz#2a0b32fcb416fb3f2250fd24cb2a81421a4f5950" + integrity sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA== + 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" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@phc/format@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@phc/format/-/format-1.0.0.tgz#b5627003b3216dc4362125b13f48a4daa76680e4" + integrity sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ== + +"@poppinss/chokidar-ts@^3.3.0": + version "3.3.0" + resolved "https://registry.yarnpkg.com/@poppinss/chokidar-ts/-/chokidar-ts-3.3.0.tgz#767512095fc3199286f861548ff3f7c8eb26e36b" + integrity sha512-cQ1zQsfAR1Kgp3c4z90n8IFgSCqSoFXpf3lNn5epMV/04gh+ojE0Vb0rpEHXpFSTW7xzmm7Mx3D0pbjfv8LpfA== + dependencies: + builtin-modules "^3.2.0" + chokidar "^3.5.1" + debug "^4.3.1" + emittery "^0.9.0" + fs-extra "^10.0.0" + mem "^8.1.1" + picomatch "^2.3.0" + +"@poppinss/cliui@^2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@poppinss/cliui/-/cliui-2.2.4.tgz#3859a0e1fa5a830e09b9e41282c42df705dd475d" + integrity sha512-ipmnZE65sLubc7mQJapb3T5NZ+HHKjqVxxzDr0nQuXNXQf+GtBjpt9RQ9K1RfGOcvMkxWEEsoHNLMNNA8KzWKg== + dependencies: + "@poppinss/colors" "^2.1.4" + cli-boxes "^3.0.0" + cli-table3 "^0.6.0" + color-support "^1.1.3" + log-update "^4.0.0" + pretty-hrtime "^1.0.3" + string-width "^4.2.2" + +"@poppinss/co-body@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@poppinss/co-body/-/co-body-1.1.3.tgz#454e8cdc29196e8eead303c63b0b7207815fff18" + integrity sha512-Qhm2sGNTSRpKAlqt+ofZwWMzMI8QJXd36DN6F1Ska2B0Lt1Ev3qi+kNHym1GcIJ2NG/P/LS7i2fIbKZtGXnZ9w== + dependencies: + "@poppinss/utils" "^3.1.3" + inflation "^2.0.0" + qs "^6.10.1" + raw-body "^2.4.1" + type-is "^1.6.18" + +"@poppinss/colors@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@poppinss/colors/-/colors-2.1.4.tgz#4bb3774edd0cfc40f31a5ff2507b95adc5e2caec" + integrity sha512-exilWCx08WvIL0bg6txQJX0WqM5ELnY4Gxc8K0G29UE0mwPoZ14hAWsBSdFea/BXMQGOgV72NoQ7scbRpEt7Ug== + dependencies: + color-support "^1.1.3" + kleur "^4.1.4" + +"@poppinss/hooks@^3.0.4": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@poppinss/hooks/-/hooks-3.0.4.tgz#5caacb51f41077326219b6ea2e941c4c2e3bafff" + integrity sha512-vVtd8v3grQ0JcbZgvUrUIUeMqTcHkE31nJGE/jRxDEbCiusBwBJD6D16a5Wzbl+o6xRldlhIcdDn+AE8PUpuVA== + +"@poppinss/inspect@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@poppinss/inspect/-/inspect-1.0.1.tgz#b03df9c1204ee72e3b9dbd5c34029c39475fb21d" + integrity sha512-kLeEaBSGhlleyYvKc7c9s3uE6xv7cwyulE0EgHf4jU/CL96h0yC4mkdw1wvC1l1PYYQozCGy46FwMBAAMOobCA== + +"@poppinss/manager@^4.0.3": + version "4.0.3" + resolved "https://registry.yarnpkg.com/@poppinss/manager/-/manager-4.0.3.tgz#774525b737e7024d92d59e64e03795e406b91083" + integrity sha512-yPGfsgJzAqyKLtES00MvsSmdrkuJDDymG1ZlRw5oEBu34wOZUo2jAR0UZHmLi4xqCjm/7D9RwMLMxj9IH72AZw== + +"@poppinss/matchit@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@poppinss/matchit/-/matchit-3.1.2.tgz#674a477f6cc58f760b16b52d20673f886615cc43" + integrity sha512-Bx+jY+vmdQFmwYiHliiPjr+oVBaGnh79B1h1FSAm3jME1QylLFt8PPYC0ymO8Q5PzJj/KuE3jeTnZhRHOWqq8g== + dependencies: + "@arr/every" "^1.0.0" + +"@poppinss/multiparty@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@poppinss/multiparty/-/multiparty-1.0.2.tgz#40d7b71d23a6ae6f1ee8b9c0f272dc31a29c6920" + integrity sha512-SQuw3FmvAr/3TnAx8L/S7CKO4pKKVozscu9DZ/GXFCNd7KCKvajaDl0RCna0CgABJQBBcdKHxx3w1yH0NedzDA== + dependencies: + http-errors "~1.8.0" + safe-buffer "5.2.1" + uid-safe "2.1.5" + +"@poppinss/oauth-client@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@poppinss/oauth-client/-/oauth-client-2.0.4.tgz#26795088b472d580127074b8ec28d868d7feb352" + integrity sha512-bl8ITdz0FG1ydCAmXVJxrlEtUm42JZK4yj6jA7CVsVhKhzf8OwG3XY8kVETmh/APp8kH8vSM6u5l+lgPKpdlIA== + dependencies: + "@types/luxon" "^1.26.5" + got "^11.8.2" + luxon "^1.27.0" + +"@poppinss/prompts@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@poppinss/prompts/-/prompts-1.2.2.tgz#e4c0a582f4782d3a804050a00d80ce461de208e3" + integrity sha512-0gnd1Xt1oAFNj10kcbnPDiSJzpjH+s8Dm0Yt7ZeTn2hQXsc9NJkb8Gz7CMFaHDuNYpdorz3fmvefsM9lTx5/jw== + dependencies: + "@poppinss/colors" "^2.1.4" + enquirer "^2.3.6" + +"@poppinss/utils@^3.1.2", "@poppinss/utils@^3.1.3": + version "3.1.3" + resolved "https://registry.yarnpkg.com/@poppinss/utils/-/utils-3.1.3.tgz#4bad9bef96b1e70ea85542d11683a9892541d9db" + integrity sha512-A/FGhb+05UGf26rpicvyVCGabtC1Zw3LuugH9eHDYnWS4PLb8tDOdJF+yiOQ6QgGdMbYamzKUsPSgnOgSF4MGA== + dependencies: + "@types/bytes" "^3.1.0" + "@types/he" "^1.1.1" + buffer-alloc "^1.2.0" + bytes "^3.1.0" + change-case "^4.1.2" + cuid "^2.1.8" + fast-safe-stringify "^2.0.7" + fs-readdir-recursive "^1.1.0" + he "^1.2.0" + kind-of "^6.0.3" + lodash "^4.17.21" + ms "^2.1.3" + pluralize "^8.0.0" + require-all "^3.0.0" + resolve-from "^5.0.0" + slugify "^1.5.3" + truncatise "0.0.8" + +"@sindresorhus/is@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.0.1.tgz#d26729db850fa327b7cacc5522252194404226f5" + integrity sha512-Qm9hBEBu18wt1PO2flE7LPb30BHMQt1eQgbV76YntdNk73XZGpn3izvGTYxbGgzXKgbCjiia0uxTd3aTNQrY/g== + +"@szmarczak/http-timer@^4.0.5": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" + integrity sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ== + dependencies: + defer-to-connect "^2.0.0" + +"@tokenizer/token@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.1.1.tgz#f0d92c12f87079ddfd1b29f614758b9696bc29e3" + integrity sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w== + +"@types/bytes@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@types/bytes/-/bytes-3.1.0.tgz#835a3e4aea3b4d7604aca216a78de372bff3ecc3" + integrity sha512-5YG1AiIC8HPPXRvYAIa7ehK3YMAwd0DWiPCtpuL9sgKceWLyWsVtLRA+lT4NkoanDNF9slwQ66lPizWDpgRlWA== + +"@types/cacheable-request@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.1.tgz#5d22f3dded1fd3a84c0bbeb5039a7419c2c91976" + integrity sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "*" + "@types/node" "*" + "@types/responselike" "*" + +"@types/debug@^4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd" + integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ== + +"@types/faker@^5.5.6": + version "5.5.6" + resolved "https://registry.yarnpkg.com/@types/faker/-/faker-5.5.6.tgz#039b700a9d8ad9150ecc842bf5e717e2027b6f75" + integrity sha512-UCRj0kLg4sXs2XFVm48OU/wIjyJZkpRkwxhRGVQb5l5GmemkeW22WTz9iiDhYPBUqTzDsIWzhFRuF/4DD5+q2Q== + +"@types/glob@^7.1.1": + version "7.1.3" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" + integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/he@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/he/-/he-1.1.1.tgz#19e14033c4ee8f1a702c74dcc6182664839ac2b7" + integrity sha512-jpzrsR1ns0n3kyWt92QfOUQhIuJGQ9+QGa7M62rO6toe98woQjnsnzjdMtsQXCdvjjmqjS2ZBCC7xKw0cdzU+Q== + +"@types/http-cache-semantics@*": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a" + integrity sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A== + +"@types/ioredis@^4.26.4": + version "4.26.4" + resolved "https://registry.yarnpkg.com/@types/ioredis/-/ioredis-4.26.4.tgz#a2b1ed51ddd2c707d7eaac5017cc34a0fe51558a" + integrity sha512-QFbjNq7EnOGw6d1gZZt2h26OFXjx7z+eqEnbCHSrDI1OOLEgOHMKdtIajJbuCr9uO+X9kQQRe7Lz6uxqxl5XKg== + dependencies: + "@types/node" "*" + +"@types/keyv@*": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.1.tgz#e45a45324fca9dab716ab1230ee249c9fb52cfa7" + integrity sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw== + dependencies: + "@types/node" "*" + +"@types/luxon@^1.26.5": + version "1.27.0" + resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-1.27.0.tgz#1e3b5a7f8ca6944349c43498b4442b742c71ab0b" + integrity sha512-rr2lNXsErnA/ARtgFn46NtQjUa66cuwZYeo/2K7oqqxhJErhXgHBPyNKCo+pfOC3L7HFwtao8ebViiU9h4iAxA== + +"@types/minimatch@*": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21" + integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== + +"@types/node@*", "@types/node@^15.3.0": + version "15.12.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.5.tgz#9a78318a45d75c9523d2396131bd3cca54b2d185" + integrity sha512-se3yX7UHv5Bscf8f1ERKvQOD6sTyycH3hdaoozvaLxgUiY5lIGEeH37AD0G0Qi9kPqihPn0HOfd2yaIEN9VwEg== + +"@types/pino-pretty@*": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@types/pino-pretty/-/pino-pretty-4.7.0.tgz#e4a18541f8464d1cc48216f5593cc6a0e62dc2c3" + integrity sha512-fIZ+VXf9gJoJR4tiiM7G+j/bZkPoZEfFGzA4d8tAWCTpTVyvVaBwnmdLs3wEXYpMjw8eXulrOzNCjmGHT3FgHw== + dependencies: + "@types/pino" "*" + +"@types/pino-std-serializers@*": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@types/pino-std-serializers/-/pino-std-serializers-2.4.1.tgz#f8bd52a209c8b3c97d1533b1ba27f57c816382bf" + integrity sha512-17XcksO47M24IVTVKPeAByWUd3Oez7EbIjXpSbzMPhXVzgjGtrOa49gKBwxH9hb8dKv58OelsWQ+A1G1l9S3wQ== + dependencies: + "@types/node" "*" + +"@types/pino@*", "@types/pino@^6.3.8": + version "6.3.8" + resolved "https://registry.yarnpkg.com/@types/pino/-/pino-6.3.8.tgz#ec589318c2798216a0f39882845c5e40b7151b56" + integrity sha512-E47CmRy1FNMaCN8r0d8ECQOjXen9O0p6GGsUjLfmawlxRKosZ82WP1oWVKj+ikTkMDHxWzN5BuKmplo44ynrIg== + dependencies: + "@types/node" "*" + "@types/pino-pretty" "*" + "@types/pino-std-serializers" "*" + "@types/sonic-boom" "*" + +"@types/readable-stream@^2.3.9": + version "2.3.10" + resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-2.3.10.tgz#0f1a512ca30bec5e53d3282133b9237a703e7562" + integrity sha512-xwSXvAv9x4B9Vj88AMZnFyEVLilz1EBxKvRUhGqIF4nJpRQBSTm7jS236X4Y9Y2qPsVvaMxwrGJlNhLHEahlFQ== + dependencies: + "@types/node" "*" + safe-buffer "*" + +"@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== + dependencies: + "@types/node" "*" + +"@types/sonic-boom@*": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@types/sonic-boom/-/sonic-boom-0.7.0.tgz#38337036293992a1df65dd3161abddf8fb9b7176" + integrity sha512-AfqR0fZMoUXUNwusgXKxcE9DPlHNDHQp6nKYUd4PSRpLobF5CCevSpyTEBcVZreqaWKCnGBr9KI1fHMTttoB7A== + dependencies: + "@types/node" "*" + +"@types/stack-trace@0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/stack-trace/-/stack-trace-0.0.29.tgz#eb7a7c60098edb35630ed900742a5ecb20cfcb4d" + integrity sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g== + +"@types/validator@^13.1.3": + version "13.1.4" + resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.1.4.tgz#d2e3c27523ce1b5d9dc13d16cbce65dc4db2adbe" + integrity sha512-19C02B8mr53HufY7S+HO/EHBD7a/R22IwEwyqiHaR19iwL37dN3o0M8RianVInfSSqP7InVSg/o0mUATM4JWsQ== + +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== + +abstract-logging@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/abstract-logging/-/abstract-logging-2.0.1.tgz#6b0c371df212db7129b57d2e7fcf282b8bf1c839" + integrity sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA== + +accepts@^1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-class-fields@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/acorn-class-fields/-/acorn-class-fields-1.0.0.tgz#b413793e6b3ddfcd17a02f9c7a850f4bbfdc1c7a" + integrity sha512-l+1FokF34AeCXGBHkrXFmml9nOIRI+2yBnBpO5MaVAaTIJ96irWLtcCxX+7hAp6USHFCe+iyyBB4ZhxV807wmA== + dependencies: + acorn-private-class-elements "^1.0.0" + +acorn-private-class-elements@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/acorn-private-class-elements/-/acorn-private-class-elements-1.0.0.tgz#c5805bf8a46cd065dc9b3513bfebb504c88cd706" + integrity sha512-zYNcZtxKgVCg1brS39BEou86mIao1EV7eeREG+6WMwKbuYTeivRRs6S2XdWnboRde6G9wKh2w+WBydEyJsJ6mg== + +acorn-private-methods@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/acorn-private-methods/-/acorn-private-methods-1.0.0.tgz#b48f4c03a151cc8262f6f5ca8f57f7c5ac245184" + integrity sha512-Jou2L3nfwfPpFdmmHObI3yUpVPM1bPohTUAZCyVDw5Efyn9LSS6E36neRLCRfIr8QjskAfdxRdABOrvP4c/gwQ== + dependencies: + acorn-private-class-elements "^1.0.0" + +acorn-static-class-features@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/acorn-static-class-features/-/acorn-static-class-features-1.0.0.tgz#ab9d862d5b184007ed509f5a8d031b837694ace2" + integrity sha512-XZJECjbmMOKvMHiNzbiPXuXpLAJfN3dAKtfIYbk1eHiWdsutlek+gS7ND4B8yJ3oqvHo1NxfafnezVmq7NXK0A== + dependencies: + acorn-private-class-elements "^1.0.0" + +acorn-walk@^8.0.2: + version "8.1.1" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.1.1.tgz#3ddab7f84e4a7e2313f6c414c5b7dac85f4e3ebc" + integrity sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w== + +acorn@^8.0.5, acorn@^8.3.0: + version "8.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" + integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== + +adonis-preset-ts@^2.1.0: + version "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" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^4.3.0, ansi-escapes@^4.3.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== + dependencies: + 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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.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== + dependencies: + color-convert "^2.0.1" + +ansicolors@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" + integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= + +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== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argon2@^0.27.2: + 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" + opencollective-postinstall "^2.0.3" + +args@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/args/-/args-5.0.1.tgz#4bf298df90a4799a09521362c579278cc2fdd761" + integrity sha512-1kqmFCFsPffavQFGt8OxJdIcETti99kySRUPMpOhaGjL6mRJn8HFU1OxKY5bMqfZKUwTQc1mZkAjmGYaVOHFtQ== + dependencies: + camelcase "5.0.0" + chalk "2.4.2" + leven "2.1.0" + mri "1.1.4" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-union@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +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== + +astring@^1.7.4: + version "1.7.5" + resolved "https://registry.yarnpkg.com/astring/-/astring-1.7.5.tgz#a7d47fceaf32b052d33a3d07c511efeec67447ca" + integrity sha512-lobf6RWXb8c4uZ7Mdq0U12efYmpD1UFnyOWVJPTa3ukqZrMopav+2hdNu0hgBF0JIBFK9QgrBDfwYvh3DFJDAA== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +atomic-sleep@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" + integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== + +axios@^0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== + dependencies: + follow-redirects "^1.10.0" + +babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +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== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +bignumber.js@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" + integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== + +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== + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^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== + dependencies: + fill-range "^7.0.1" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +builtin-modules@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= + +bytes@3.1.0, bytes@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +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-request@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" + 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" + +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== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +camel-case@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + +capital-case@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" + integrity sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case-first "^2.0.2" + +cardinal@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505" + integrity sha1-fMEFXYItISlU0HsIXeolHMe8VQU= + dependencies: + ansicolors "~0.3.2" + redeyed "~2.1.0" + +chalk@2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" + integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +change-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" + integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== + dependencies: + camel-case "^4.1.2" + capital-case "^1.0.4" + constant-case "^3.0.4" + dot-case "^3.0.4" + header-case "^2.0.4" + no-case "^3.0.4" + param-case "^3.0.4" + pascal-case "^3.1.2" + path-case "^3.0.4" + sentence-case "^3.0.4" + snake-case "^3.0.4" + tslib "^2.0.3" + +cheerio-select@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.5.0.tgz#faf3daeb31b17c5e1a9dabcee288aaf8aafa5823" + integrity sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg== + dependencies: + css-select "^4.1.3" + css-what "^5.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + domutils "^2.7.0" + +cheerio@1.0.0-rc.10, cheerio@^1.0.0-rc.3: + version "1.0.0-rc.10" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e" + integrity sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw== + dependencies: + cheerio-select "^1.5.0" + dom-serializer "^1.3.2" + domhandler "^4.2.0" + htmlparser2 "^6.1.0" + parse5 "^6.0.1" + parse5-htmlparser2-tree-adapter "^6.0.1" + tslib "^2.2.0" + +chokidar@^3.0.0, chokidar@^3.5.1: + version "3.5.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" + 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" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-css@^4.2.1: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" + integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== + +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== + dependencies: + restore-cursor "^3.1.0" + +cli-table3@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" + integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== + dependencies: + object-assign "^4.1.0" + string-width "^4.2.0" + optionalDependencies: + colors "^1.1.2" + +cli-table@^0.3.1: + version "0.3.6" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.6.tgz#e9d6aa859c7fe636981fd3787378c2a20bce92fc" + integrity sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ== + dependencies: + colors "1.0.3" + +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== + dependencies: + 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= + dependencies: + mimic-response "^1.0.0" + +cluster-key-slot@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d" + integrity sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw== + +co-compose@^6.1.3: + version "6.1.3" + resolved "https://registry.yarnpkg.com/co-compose/-/co-compose-6.1.3.tgz#313ff119d182f7a220c4e93563c6e347deca5c3c" + integrity sha512-P1Nd4PFgHFM5dKtjOgmdwWx653CeTeCXntKQZ7iX48f0wIEoakNIMg2+W6RRpcWa9wdUBS4MiOtJNRspqjg7Bw== + +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= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.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== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-support@^1.1.3: + 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== + +colorette@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== + +colors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= + +colors@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +commander@^2.19.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + +commander@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +comment-json@^2.2.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-2.4.2.tgz#2111c065864338ad8d98ae01eecde9e02cd2f549" + integrity sha512-T+iXox779qsqneMYx/x5BZyz4xjCeQRmuNVzz8tko7qZUs3MlzpA3RAs+O1XsgcKToNBMIvfVzafGOeiU7RggA== + dependencies: + core-util-is "^1.0.2" + esprima "^4.0.1" + has-own-prop "^2.0.0" + repeat-string "^1.6.1" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + 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== + +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= + +config-chain@^1.1.12: + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +constant-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" + integrity sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case "^2.0.2" + +content-disposition@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +cookie@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" + integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-util-is@^1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cp-file@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-7.0.0.tgz#b9454cfd07fe3b974ab9ea0e5f29655791a9b8cd" + integrity sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw== + dependencies: + graceful-fs "^4.1.2" + make-dir "^3.0.0" + nested-error-stacks "^2.0.0" + p-event "^4.1.0" + +cp-file@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-9.1.0.tgz#e98e30db72d57d47b5b1d444deb70d05e5684921" + integrity sha512-3scnzFj/94eb7y4wyXRWwvzLFaQp87yyfTnChIjlfYrVqp5lVO3E2hIJMeQIltUT0K2ZAB3An1qXcBmwGyvuwA== + dependencies: + graceful-fs "^4.1.2" + make-dir "^3.0.0" + nested-error-stacks "^2.0.0" + p-event "^4.1.0" + +cpy@^8.1.2: + version "8.1.2" + resolved "https://registry.yarnpkg.com/cpy/-/cpy-8.1.2.tgz#e339ea54797ad23f8e3919a5cffd37bfc3f25935" + integrity sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg== + dependencies: + arrify "^2.0.1" + cp-file "^7.0.0" + globby "^9.2.0" + has-glob "^1.0.0" + junk "^3.1.0" + nested-error-stacks "^2.1.0" + p-all "^2.1.0" + p-filter "^2.1.0" + p-map "^3.0.0" + +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== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-select@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" + integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== + dependencies: + boolbase "^1.0.0" + css-what "^5.0.0" + domhandler "^4.2.0" + domutils "^2.6.0" + nth-check "^2.0.0" + +css-what@^5.0.0, css-what@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" + integrity sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg== + +cuid@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/cuid/-/cuid-2.1.8.tgz#cbb88f954171e0d5747606c0139fb65c5101eac0" + integrity sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg== + +dateformat@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.5.1.tgz#c20e7a9ca77d147906b6dc2261a8be0a5bd2173c" + integrity sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q== + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@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@^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== + dependencies: + ms "2.1.2" + +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@^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== + dependencies: + mimic-response "^3.1.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== + +defer-to-connect@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +denque@^1.1.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.0.tgz#773de0686ff2d8ec2ff92914316a47b73b1c73de" + integrity sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +destroy@^1.0.4, destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-indent@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + +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= + +detect-node@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +dir-glob@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== + dependencies: + path-type "^3.0.0" + +dom-serializer@^1.0.1, dom-serializer@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" + integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + +domhandler@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" + integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== + dependencies: + domelementtype "^2.0.1" + +domhandler@^4.0.0, domhandler@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.0.tgz#f9768a5f034be60a89a27c2e4d0f74eba0d8b059" + integrity sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.0.0, domutils@^2.5.2, domutils@^2.6.0, domutils@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.7.0.tgz#8ebaf0c41ebafcf55b0b72ec31c56323712c5442" + integrity sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + +edge-error@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/edge-error/-/edge-error-2.0.4.tgz#833cf3eefc6680144a02eaeb934f4545c68d3fb7" + integrity sha512-8oA1IfaPmOfl+hz/O4assGCxnGhSAXz05vYMFQD8uk5Tct47+sr2uGVYOU4JoetYtH2XOZR2PurJJVPyuTKmyg== + +edge-lexer@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/edge-lexer/-/edge-lexer-4.0.6.tgz#7c33f5f0fe3a0cc00f0e51f0a559b068bd33aa49" + integrity sha512-esF2KhZYvekx8rJp+0xtzgEwzBByKK5d3jA/ucp/JG+0sO6ZojzgJBXJ9vN8bm6Rc3ZgUEKwgmdYJPNZKcSvzQ== + dependencies: + edge-error "^2.0.4" + +edge-parser@^8.0.7: + version "8.0.7" + resolved "https://registry.yarnpkg.com/edge-parser/-/edge-parser-8.0.7.tgz#2c06e519a77c393a73bc660902f18abbe2338e11" + integrity sha512-5o2S/S8KVMEMbKtTRdlIb0vS/LJ66SsUn4NTs0Qr/3Qee+HoEAKbeDckjY4SIDpX7q+zI/mse85FxhgDWak/5g== + dependencies: + acorn "^8.3.0" + astring "^1.7.4" + edge-error "^2.0.4" + edge-lexer "^4.0.6" + js-stringify "^1.0.2" + +edge-supercharged@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/edge-supercharged/-/edge-supercharged-3.1.1.tgz#dcf68c38cf26d11db4bceab44e06729daec1d39d" + integrity sha512-Pxgst3UeR+0PWuTIG2QHuFgFe73TMoVMphRsa/bOmIvOkQ87cD7+VxiS9ph2KbA4djJ2ChbdgtbNiIvju5yXEw== + dependencies: + "@poppinss/utils" "^3.1.3" + slash "^3.0.0" + +edge.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/edge.js/-/edge.js-5.2.1.tgz#ae2e8a77c5d9867647fa7a768d0ee11ff8f69f65" + integrity sha512-+vduj8qCzRpmUia9e3YKhkwtQBLoW6mBeyUoZU4cUmuEqf/ZFH1FBsb3oBQKLQ3thfJoluKG9ekwoSlFPvLbPA== + dependencies: + "@poppinss/inspect" "^1.0.1" + "@poppinss/utils" "^3.1.3" + edge-error "^2.0.4" + edge-lexer "^4.0.6" + edge-parser "^8.0.7" + js-stringify "^1.0.2" + macroable "^5.1.3" + stringify-attributes "^2.0.0" + +editorconfig@^0.15.3: + version "0.15.3" + resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" + integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g== + dependencies: + commander "^2.19.0" + lru-cache "^4.1.5" + semver "^5.6.0" + sigmund "^1.0.1" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +emittery@^0.9.0, emittery@^0.9.2: + version "0.9.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.9.2.tgz#0a57c40773c6da380115c85bd67d381dd9e22f6f" + integrity sha512-sweWHu3j4dQm+NjLPu17pv+m5lCeK7g4Ov0NgfbRUEyzLc59DYDeRYXqlxEvuolaToI0VR3ThjFAghzl7Acjfw== + +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== + +encodeurl@^1.0.2, encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.1.0, end-of-stream@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enquirer@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +es-module-lexer@0.3.26: + version "0.3.26" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.3.26.tgz#7b507044e97d5b03b01d4392c74ffeb9c177a83b" + integrity sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA== + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-3.0.0.tgz#e8b5fb658553fe8a3c4959c316c6ebb8c842b19c" + integrity sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.2, 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= + +esm@^3.2.25: + version "3.2.25" + resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" + integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== + +esprima@^4.0.1, 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== + +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== + +etag@^1.8.1, etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +execa@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + 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" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +faker@^5.5.3: + version "5.5.3" + resolved "https://registry.yarnpkg.com/faker/-/faker-5.5.3.tgz#c57974ee484431b25205c2c8dc09fda861e51e0e" + integrity sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g== + +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@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-redact@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.0.1.tgz#d6015b971e933d03529b01333ba7f22c29961e92" + integrity sha512-kYpn4Y/valC9MdrISg47tZOpYBNoTXKgT9GYXFpHN/jYFs+lFkPoisY+LcBODdKVMY96ATzvzsWv+ES/4Kmufw== + +fast-safe-stringify@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" + integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== + +fastq@^1.11.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" + integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== + dependencies: + reusify "^1.0.4" + +file-type@^12.1.0: + version "12.4.2" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-12.4.2.tgz#a344ea5664a1d01447ee7fb1b635f72feb6169d9" + integrity sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg== + +file-type@^16.5.0: + version "16.5.0" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.0.tgz#16a2626f3b33bac612f6e81e52216f3a7c8e12a2" + integrity sha512-OxgWA9tbL8N/WP00GD1z8O0MiwQKFyWRs1q+3FhjdvcGgKqwxcejyGWso3n4/IMU6DdwV+ARZ4A7TTnPkDcSiw== + dependencies: + readable-web-to-node-stream "^3.0.0" + strtok3 "^6.0.3" + token-types "^2.0.0" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-cache-dir@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flatstr@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/flatstr/-/flatstr-1.0.12.tgz#c2ba6a08173edbb6c9640e3055b95e287ceb5931" + integrity sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw== + +follow-redirects@^1.10.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" + integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2, fresh@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +fs-extra@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" + integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.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== + dependencies: + minipass "^3.0.0" + +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +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== + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +get-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-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== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-port@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" + integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +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-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getopts@2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.2.5.tgz#67a0fe471cacb9c687d817cab6450b96dde8313b" + integrity sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA== + +getopts@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.3.0.tgz#71e5593284807e03e2427449d4f6712a268666f4" + integrity sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA== + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +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== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.1.1, glob@^7.1.3: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + 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" + +globby@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" + integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^1.0.2" + dir-glob "^2.2.2" + fast-glob "^2.2.6" + glob "^7.1.3" + ignore "^4.0.3" + pify "^4.0.1" + slash "^2.0.0" + +got@^11.8.2: + version "11.8.2" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.2.tgz#7abb3959ea28c31f3576f1576c1effce23f33599" + integrity sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ== + 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.1" + 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, graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^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= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-glob/-/has-glob-1.0.0.tgz#9aaa9eedbffb1ba3990a7b0010fb678ee0081207" + integrity sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc= + dependencies: + is-glob "^3.0.0" + +has-own-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-own-prop/-/has-own-prop-2.0.0.tgz#f0f95d58f65804f5d218db32563bb85b8e0417af" + integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ== + +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== + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +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== + dependencies: + function-bind "^1.1.1" + +haye@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/haye/-/haye-3.0.0.tgz#30b801dc235cfa4d83ddb43162b12911617a67e4" + integrity sha512-yWxbPdeex78IR3x3X/DdqkZbVG4rP4UaRdUGmpClfnUh1C61mASt7Iav8vk2tXcTMSygBHDDfgoVqk68NJqzhQ== + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +header-case@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" + integrity sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q== + dependencies: + capital-case "^1.0.4" + tslib "^2.0.3" + +html-minifier@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-4.0.0.tgz#cca9aad8bce1175e02e17a8c33e46d8988889f56" + integrity sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig== + dependencies: + camel-case "^3.0.0" + clean-css "^4.2.1" + commander "^2.19.0" + he "^1.2.0" + param-case "^2.1.1" + relateurl "^0.2.7" + uglify-js "^3.5.1" + +htmlparser2@^4.0.0, htmlparser2@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" + integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== + dependencies: + domelementtype "^2.0.1" + domhandler "^3.0.0" + domutils "^2.0.0" + entities "^2.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +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-errors@1.7.3, http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507" + integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.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== + dependencies: + 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== + +ical-generator@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ical-generator/-/ical-generator-2.2.0.tgz#5a1e00eb495f693fccd4724f5ca24ce1b8de8ec8" + integrity sha512-rn31KfGw1x5bQUasxmqT0s1qKoPYl0dq/EH5DGWrVFMpKrNtDO+VODUaiWvtgQb1JgmDkX5fBjKfB0+zHuaNjQ== + dependencies: + uuid-random "^1.3.2" + +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== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +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== + +igniculus@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/igniculus/-/igniculus-1.5.0.tgz#f6d5e7784dbe948b4e6a8a22a54d365de90623d0" + integrity sha1-9tXneE2+lItOaooipU02XekGI9A= + +ignore@^4.0.3: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflation@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/inflation/-/inflation-2.0.0.tgz#8b417e47c28f925a45133d914ca1fd389107f30f" + integrity sha1-i0F+R8KPklpFEz2RTKH9OJEH8w8= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.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== + +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== + +ioredis@^4.27.6: + version "4.27.6" + resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.27.6.tgz#a53d427d3fe75fbd10ed7ad150ce00559df8dcf8" + integrity sha512-6W3ZHMbpCa8ByMyC1LJGOi7P2WiOKP9B3resoZOVLDhi+6dDBOW+KNsRq3yI36Hmnb2sifCxHX+YSarTeXh48A== + dependencies: + cluster-key-slot "^1.1.0" + debug "^4.3.1" + denque "^1.1.0" + lodash.defaults "^4.2.0" + lodash.flatten "^4.4.0" + p-map "^2.1.0" + redis-commands "1.7.0" + redis-errors "^1.2.0" + redis-parser "^3.0.0" + standard-as-callback "^2.1.0" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.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== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-core-module@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" + integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^3.0.0, is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +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-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +jest-worker@^27.0.2: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.6.tgz#a5fdb1e14ad34eb228cfe162d9f729cdbfa28aed" + integrity sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jmespath@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" + integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= + +joycon@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.0.1.tgz#9074c9b08ccf37a6726ff74a18485f85efcaddaf" + integrity sha512-SJcJNBg32dGgxhPtM0wQqxqV0ax9k/9TaUskGDSJkSFSQOEWWvQ3zzWdGQRIUry2j1zA5+ReH13t0Mf3StuVZA== + +js-beautify@^1.6.14: + version "1.14.0" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.0.tgz#2ce790c555d53ce1e3d7363227acf5dc69024c2d" + integrity sha512-yuck9KirNSCAwyNJbqW+BxJqJ0NLJ4PwBUzQQACl5O3qHMBXVkXb/rD0ilh/Lat/tn88zSZ+CAHOlk0DsY7GuQ== + dependencies: + config-chain "^1.1.12" + editorconfig "^0.15.3" + glob "^7.1.3" + nopt "^5.0.0" + +js-stringify@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" + integrity sha1-Fzb939lyTyijaCrcYjCufk6Weds= + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +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== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +juice@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/juice/-/juice-7.0.0.tgz#509bed6adbb6e4bbaa7fbfadac4e2e83e8c89ba3" + integrity sha512-AjKQX31KKN+uJs+zaf+GW8mBO/f/0NqSh2moTMyvwBY+4/lXIYTU8D8I2h6BAV3Xnz6GGsbalUyFqbYMe+Vh+Q== + dependencies: + cheerio "^1.0.0-rc.3" + commander "^5.1.0" + mensch "^0.3.4" + slick "^1.12.2" + web-resource-inliner "^5.0.0" + +junk@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" + integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ== + +keyv@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.3.tgz#4f3aa98de254803cafcd2896734108daa35e4254" + integrity sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA== + dependencies: + json-buffer "3.0.1" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +kleur@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d" + integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== + +knex-dynamic-connection@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/knex-dynamic-connection/-/knex-dynamic-connection-2.1.1.tgz#a3c9934a51bf93e2ea6c3da2f9f3dca742f7a123" + integrity sha512-/Lwg/T13eNRJVoSJ4e9SH3slVUmg37UHxDxVluAAKdJZxYVj8YsP2x50JSk310RmKsYbOZ8oB8SwVVEuRa4nYw== + dependencies: + debug "^4.3.1" + knex "^0.95.6" + +knex@^0.95.6: + version "0.95.6" + resolved "https://registry.yarnpkg.com/knex/-/knex-0.95.6.tgz#5fc60ffc2935567bf122925526b1b06b8dbca785" + integrity sha512-noRcmkJl1MdicUbezrcr8OtVLcqQ/cfLIwgAx5EaxNxQOIJff88rBeyLywUScGhQNd/b78DIKKXZzLMrm6h/cw== + dependencies: + colorette "1.2.1" + commander "^7.1.0" + debug "4.3.1" + escalade "^3.1.1" + esm "^3.2.25" + getopts "2.2.5" + interpret "^2.2.0" + lodash "^4.17.21" + pg-connection-string "2.4.0" + rechoir "^0.7.0" + resolve-from "^5.0.0" + tarn "^3.0.1" + tildify "2.0.0" + +leven@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +listify@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/listify/-/listify-1.0.3.tgz#a9335ac351c3d1aea515494ed746976eeb92248b" + integrity sha512-083swF7iH7bx8666zdzBColpgEuy46HjN3r1isD4zV6Ix7FuHfb/2/WVnl4CH8hjuoWeFF7P5KkKNXUnJCFEJg== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + +lodash.toarray@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" + integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= + +lodash@^4.17.15, 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-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +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== + +lru-cache@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +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== + dependencies: + yallist "^4.0.0" + +luxon@^1.27.0: + version "1.27.0" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.27.0.tgz#ae10c69113d85dab8f15f5e8390d0cbeddf4f00f" + integrity sha512-VKsFsPggTA0DvnxtJdiExAucKdAnwbCCNlMM5ENvHlxubqWd0xhZcdb4XgZ7QFNhaRhilXCFxHuoObP5BNA4PA== + +macroable@^5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/macroable/-/macroable-5.1.3.tgz#33db89dc4e3457368bded72f8863f892da568f11" + integrity sha512-vLcoI4Ajn1FqTrO8wJL8wBd8eTXsuzAGpcGmQaWbK7YLrFUhTV69WwAEnyT03HpnwgJL2wzZm6lg6sOJHGTQXA== + +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== + dependencies: + semver "^6.0.0" + +map-age-cleaner@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +marked-terminal@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-4.1.1.tgz#34a6f063cd6cfe26bffaf5bac3724e24242168a9" + integrity sha512-t7Mdf6T3PvOEyN01c3tYxDzhyKZ8xnkp8Rs6Fohno63L/0pFTJ5Qtwto2AQVuDtbQiWzD+4E5AAu1Z2iLc8miQ== + dependencies: + ansi-escapes "^4.3.1" + cardinal "^2.1.1" + chalk "^4.1.0" + cli-table "^0.3.1" + node-emoji "^1.10.0" + supports-hyperlinks "^2.1.0" + +marked@^2.0.7: + version "2.1.3" + resolved "https://registry.yarnpkg.com/marked/-/marked-2.1.3.tgz#bd017cef6431724fd4b27e0657f5ceb14bff3753" + integrity sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +media-typer@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-1.1.0.tgz#6ab74b8f2d3320f2064b2a87a38e7931ff3a5561" + integrity sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw== + +mem@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.1.tgz#cf118b357c65ab7b7e0817bdf00c8062297c0122" + integrity sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA== + dependencies: + map-age-cleaner "^0.1.3" + mimic-fn "^3.1.0" + +mensch@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/mensch/-/mensch-0.3.4.tgz#770f91b46cb16ea5b204ee735768c3f0c491fecd" + integrity sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g== + +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.2.3: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +mime-db@1.48.0: + version "1.48.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" + integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== + +mime-kind@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mime-kind/-/mime-kind-3.0.0.tgz#23bb3aba03ed6a1ea8c4f6093a9c7ab7121a9cb2" + integrity sha512-sx9lClVP7GXY2mO3aVDWTQLhfvAdDvNhGi3o3g7+ae3aKaoybeGbEIlnreoRKjrbDpvlPltlkIryxOtatojeXQ== + dependencies: + file-type "^12.1.0" + mime-types "^2.1.24" + +mime-types@^2.1.24, mime-types@^2.1.31, mime-types@~2.1.24: + version "2.1.31" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" + integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== + dependencies: + mime-db "1.48.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.6: + version "2.5.2" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" + integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== + +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-fn@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" + integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== + +mimic-response@^1.0.0: + 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== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mjml-accordion@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-accordion/-/mjml-accordion-4.10.1.tgz#1149668944ff9d8f80d946f44d1b029e77ad1a62" + integrity sha512-wQ2PHsiuq3wxsumb78T7gWimB9aQXWP1yDQrQiLn+hmARiLOv9KOn96ZffM4nWyNlDM0AsWWm9fpLgv1RwI8wQ== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-body@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-body/-/mjml-body-4.10.1.tgz#c10040361e1af7fb4dc80861f2773caa384b8530" + integrity sha512-6+v/m+PhTkm8NZYim1g2H0GsQ9sydZQZiaGCnzSpKJL6HXMYHqckdUc/yvgph86/XPRDTv2dIv/tvgJ5dBvFlA== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-button@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-button/-/mjml-button-4.10.1.tgz#0410e5382abf8a95b48a4372a67da5d65b1709d8" + integrity sha512-3lmez3NZt1TJjE+HLZO10q9dfminH5JtTEV2m9Yf/gXRoT+vpD7XFs5vrAXVhMh879Unc3pxY8ghFr0/8JLBgQ== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-carousel@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-carousel/-/mjml-carousel-4.10.1.tgz#132eade9ea3e6541eaacd3c0f3df63e9ea15166b" + integrity sha512-5n9LKP0KANRCoZDgT7jJCMiKlWr26idy1Sc2PunJ71164/lE6HKhSvMISNEdxDm+ZTj4Y2vDeobcc3zviQRkcw== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-cli@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-cli/-/mjml-cli-4.10.1.tgz#386d61cd22730042c51143338624ae89cdf8e9d7" + integrity sha512-M/N704fblgiJOqyqD6PoEi0F4ILnb5PLFsRF0BE8NNoCpQz0WnnnUjuCnPBfgCsz/rVxBrSXYpGNrpViCkgftQ== + dependencies: + "@babel/runtime" "^7.8.7" + chokidar "^3.0.0" + glob "^7.1.1" + html-minifier "^4.0.0" + js-beautify "^1.6.14" + lodash "^4.17.15" + mjml-core "4.10.1" + mjml-migrate "4.10.1" + mjml-parser-xml "4.10.1" + mjml-validator "4.10.1" + yargs "^16.1.0" + +mjml-column@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-column/-/mjml-column-4.10.1.tgz#e074d104c166d2e8c913774f3b3823a3d20332d9" + integrity sha512-ajn2YHc3rWXhXYsJiOvYnHBWbSB+ep1dTs+qe2uhxq9h8BdvG9bxh5UZeN3do7IEwqZIeA7lFKeWZyu07LapCQ== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-core@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-core/-/mjml-core-4.10.1.tgz#dabb59c2fa4a98492e8d54e9b06629ea743c8420" + integrity sha512-2RsFeWteelaaijD6dDFsvpgc/Zt5caKmUCr1sI3u7gIpH17LEjS5+CcSTEUwAOyAztUxpNfdotuWs3W0i2YyCA== + dependencies: + "@babel/runtime" "^7.8.7" + cheerio "1.0.0-rc.10" + detect-node "2.0.4" + html-minifier "^4.0.0" + js-beautify "^1.6.14" + juice "^7.0.0" + lodash "^4.17.15" + mjml-migrate "4.10.1" + mjml-parser-xml "4.10.1" + mjml-validator "4.10.1" + +mjml-divider@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-divider/-/mjml-divider-4.10.1.tgz#dbeb05b3dce472516589daaed4ca9f4f200fb6be" + integrity sha512-k3Rs+Owa9zdS49LbSGA+KkI9XFnAjJpINCYSfwp0p05HP+80jZAVIyb8/oMVjwzcM3CCPQhqSxg6WSuLMDfezg== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-group@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-group/-/mjml-group-4.10.1.tgz#263dd588020d9c171112cb61afe3b1fff919cd6f" + integrity sha512-uW5lIA3vRYqyUU7rzv2rMcUZkPkol4l4GJPnDvx5Pm45H9ogD8GgdhlPUq95cKRGEOqxj9ytFXqKrb1SlfDi3g== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-head-attributes@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-head-attributes/-/mjml-head-attributes-4.10.1.tgz#2021029c898f682a838d9148de9819914d7d5fc7" + integrity sha512-o6Peu/NcoQ45YTIfuVrE5QDutl8Zi+Zp7owkF6yDFPqQfVR8QCTQ/JS+3Z0bI/HRXoljV6O7eCBA6HbDdvMiaQ== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-head-breakpoint@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-head-breakpoint/-/mjml-head-breakpoint-4.10.1.tgz#c23a4c53d2c59aeef33771a49ee347c52b343831" + integrity sha512-2QJxmrQqB0N+Crfn+Cguq5eeL8YQ3y4g2K3UQ1d7dB0rEiwWN5x9gb4iOrrPTagepdYiaELJo9RqwR26WGw+9A== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-head-font@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-head-font/-/mjml-head-font-4.10.1.tgz#47ba9079338d12b6f134c67aa03a10e117831dac" + integrity sha512-WjEyBneeyRaeEnW/iqfOMLGvkpSSijqHQxk/z6yVVQ+fEcZ6kOZFPIVDrXSgLUpPso0GV46ngde57zWuBYuTUQ== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-head-html-attributes@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-head-html-attributes/-/mjml-head-html-attributes-4.10.1.tgz#7a5a4e383055e89ee6edafbf71d735dbb5cf2624" + integrity sha512-ZT5DPfCauY0N6JR4ouJaJ3dYiUDbsXWE27A5bGTUNF19fl59571z/lfTgCUnW4veXmG4n4JvOQYdw8QLotn7/w== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-head-preview@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-head-preview/-/mjml-head-preview-4.10.1.tgz#07e6ebdcd49ce657e95a6481e917d0403d3559e7" + integrity sha512-aeWHNiIAiREraDWwdniqWt3Vy97Ao/hxu46FJFwLn7q4Za3ZevxeHzzIoPgkGB8qaOSKHeyYDLHwhzLqnQAdKw== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-head-style@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-head-style/-/mjml-head-style-4.10.1.tgz#22c0439aa07a7a1595e9cca82497a550fa8b1f1d" + integrity sha512-iCY5JsxJU9wiqh4A20CxeAv2MLqUBKotDS6V4lD16QVR2U1GDc7ZfP7rU8bL8ULE/589RxmkMq/+w3W5Fyx56g== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-head-title@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-head-title/-/mjml-head-title-4.10.1.tgz#55cf92dd03cb188d2774ceab749b91423ecc5b4e" + integrity sha512-rw18SV3X0mGi+59cZUFxrsXKFhK0sO1NniwKyxAtb/9cjlHiMbiXYeSOaw8Yg4Ee++C37xOd5hWCCxXUj09kFw== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-head@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-head/-/mjml-head-4.10.1.tgz#46b32b8ee786c63dba5fefb3cfe89e8dbfe6df21" + integrity sha512-NYnITF3yZvN4pemiJISW7rINjaQtVmtFwNROleHRBNj/7GleklSo6cMOYljhJ95qzUyFlEVPbO54+znt1IlQHw== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-hero@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-hero/-/mjml-hero-4.10.1.tgz#432e1665c162b4b635a575fd3082ddf0145a4f54" + integrity sha512-3MozfbGnF7XbVzBJ1iz6F7nTDnJUZTRgaIbPhFQXDCbJ33LN6IPPS1+22iQnlZQeTG9N4SpJLjlG2W8UQp7rew== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-image@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-image/-/mjml-image-4.10.1.tgz#feff0b74f909ccb915e64f7b82e839fb57ec241f" + integrity sha512-LZr49qbXDa/i9wM3iBOdwF9zndYn/xTHaofUn3rUxVmybfGLmr/N5fc84ZGMs4kBWYz8kuHodjOnaY/9g58pyg== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-migrate@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-migrate/-/mjml-migrate-4.10.1.tgz#4ab66ede50c09c06070c71968b01a176f0760eda" + integrity sha512-RfUUqW9oqxp/42EVVygpu7v1/TX0TksJS3+7cAAuMSh8WsXQGYaNDDpFjItQapMDYfOVT/0Uby1L8PiuhQtx+g== + dependencies: + "@babel/runtime" "^7.8.7" + js-beautify "^1.6.14" + lodash "^4.17.15" + mjml-core "4.10.1" + mjml-parser-xml "4.10.1" + yargs "^16.1.0" + +mjml-navbar@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-navbar/-/mjml-navbar-4.10.1.tgz#6bfa49b25e08690b572cb763f56640d285e20fd0" + integrity sha512-Fu6/1WxXFgY478OINmiCrB3tE2c2uaEpXNS0ac2EbIytaM7/azQ58+Y07jfie1UXM6cjHAb5ZWOTjvJoPPOdag== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-parser-xml@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-parser-xml/-/mjml-parser-xml-4.10.1.tgz#4efe8658b7fa372de1043146b42802d57381d42e" + integrity sha512-dQW7efbPTXY9cgEshxefiEQ6lcWXp1yADjfv6hWYhcWlpeBfyZ6NBDL8aoRoem+5+avMSzn1tP1oRvedlSY/9Q== + dependencies: + "@babel/runtime" "^7.8.7" + detect-node "2.0.4" + htmlparser2 "^4.1.0" + lodash "^4.17.15" + +mjml-preset-core@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-preset-core/-/mjml-preset-core-4.10.1.tgz#4abfb36312fd655405621907fdfdcbb9f23cc258" + integrity sha512-zAD72N3xb5vxOedd446g1lAvMeh57JZ5HDUUFNB473QVvu7HgX2OShykwsgyzgYgKXE3MBhms8nr1jv55SnPuA== + dependencies: + "@babel/runtime" "^7.8.7" + mjml-accordion "4.10.1" + mjml-body "4.10.1" + mjml-button "4.10.1" + mjml-carousel "4.10.1" + mjml-column "4.10.1" + mjml-divider "4.10.1" + mjml-group "4.10.1" + mjml-head "4.10.1" + mjml-head-attributes "4.10.1" + mjml-head-breakpoint "4.10.1" + mjml-head-font "4.10.1" + mjml-head-html-attributes "4.10.1" + mjml-head-preview "4.10.1" + mjml-head-style "4.10.1" + mjml-head-title "4.10.1" + mjml-hero "4.10.1" + mjml-image "4.10.1" + mjml-navbar "4.10.1" + mjml-raw "4.10.1" + mjml-section "4.10.1" + mjml-social "4.10.1" + mjml-spacer "4.10.1" + mjml-table "4.10.1" + mjml-text "4.10.1" + mjml-wrapper "4.10.1" + +mjml-raw@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-raw/-/mjml-raw-4.10.1.tgz#958f48aa9a03e5d43e85a38bf644537bd9bd84f9" + integrity sha512-CgVn5E9c4uEvn10JMoOLrbcKLpaN1JAyl0d1M01v2kp1iG6VnfMv0BydliC7nZ4kHk7+bJ51XjkMBl9k+KDZYA== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-section@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-section/-/mjml-section-4.10.1.tgz#76ded28375eee07aa1c501ffc14c27852c17b29a" + integrity sha512-9QC5tyJ4hgbA/lRLZRNgIh866/VTfLc7+ucKkaWnteeF/CCxjqTwcYrLPbR5HKEMSjVd5/T17SOVOB6jv/VIdg== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-social@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-social/-/mjml-social-4.10.1.tgz#d6611a4bb3fb66e4b9f8ceb4c608603bcb0e0365" + integrity sha512-YuPjJF60oXQ47cd0gtJfy8SZBBBM8HV7pFwIuD1NIKdTU6qPZj38X81ZKPPuvmD1td+FVG/W/mySzuuH1hZkWQ== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-spacer@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-spacer/-/mjml-spacer-4.10.1.tgz#28a1c4ea215e15b6a604ceb1a9eb007458991a1c" + integrity sha512-/wgxbrAIGrjpB5Z3KZUKDliQ/bdUsEouXgbMjRqoPfgskVV6ocrSLMDjWT8XEpYPSKb5T4p3dlWn8XKKl1nrOw== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-table@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-table/-/mjml-table-4.10.1.tgz#d28ed47b4cf78b4ef51fa38399fc096bf3d53009" + integrity sha512-bfztBF/leXqbVHcOUiQu4zaSlW7i7lE2q0mb8gPHPRbh9cPzwetk5pYh9Gc7PiMpodvzpAYR2OeaQS0Z4FfjKg== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-text@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-text/-/mjml-text-4.10.1.tgz#6a1befbb9220674016585b7748c7c8c5ded6f62c" + integrity sha512-SjB6U3O6TjkaeonQ85+BKfIQUGMf4gybS1QuI2ULlAMPlNYpmkNBhPzlXNECWUG1OETg1HgD6WqEYBG8Dd970A== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + +mjml-validator@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-validator/-/mjml-validator-4.10.1.tgz#0cb93da94bb0cc08cee775ff7fa396233e231bd1" + integrity sha512-tYnRLtupjAj82Do9gb2Y8hWGSGz6nTLV6csia11JubhLoykJNS3JnGW2CPZ/Y+zWNUxJMNHkgHnxAPwSlmX6dQ== + dependencies: + "@babel/runtime" "^7.8.7" + +mjml-wrapper@4.10.1: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml-wrapper/-/mjml-wrapper-4.10.1.tgz#1601c259efd002b1d905d99933307a8c1ecc2b8e" + integrity sha512-z0ewwxWPZAnIMKqsRCHh/jjsgPNcMO4Yej32LLait6IOAiUmo2hWLhrDmSFY69NrzuxxQPBI7tZ8G5LUbaH/EQ== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.15" + mjml-core "4.10.1" + mjml-section "4.10.1" + +mjml@^4.10.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/mjml/-/mjml-4.10.1.tgz#8f5d06815bee01ef033553c73589451704a63e8a" + integrity sha512-cD6F20yIMOUT9xaAVWLfk0DnhQSq6VkpD+LCf/RUWrxsxxkwPJtJfKfrP5TMeuWcmDFS9hfOBS3Jz+NmGh03jQ== + dependencies: + "@babel/runtime" "^7.14.6" + mjml-cli "4.10.1" + mjml-core "4.10.1" + mjml-migrate "4.10.1" + mjml-preset-core "4.10.1" + mjml-validator "4.10.1" + +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" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" + integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== + +mrm-core@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/mrm-core/-/mrm-core-6.0.0.tgz#50210c3b911d4640f77eb9cff9490927552a0205" + integrity sha512-YDPzvzwigy2ke2aiw7kdaSeNy7x9MNVdXR6lyrKAYX9vufs4dOUjdtgkHuwAgAMqPElIMqchgLakpnuvXVh4bw== + dependencies: + babel-code-frame "^6.26.0" + comment-json "^2.2.0" + detect-indent "^6.0.0" + editorconfig "^0.15.3" + find-up "^4.1.0" + fs-extra "^8.1.0" + kleur "^3.0.3" + listify "^1.0.0" + lodash "^4.17.15" + minimist "^1.2.0" + prop-ini "^0.0.2" + rc "^1.2.8" + readme-badger "^0.3.0" + semver "^6.3.0" + smpltmpl "^1.0.2" + split-lines "^2.0.0" + strip-bom "^4.0.0" + validate-npm-package-name "^3.0.0" + webpack-merge "^4.2.2" + yaml "^2.0.0-1" + +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.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +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.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multi-part-lite@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/multi-part-lite/-/multi-part-lite-1.0.0.tgz#7b86baf8ff83ef20ca13f1269a0f35aec42b9000" + integrity sha512-KxIRbBZZ45hoKX1ROD/19wJr0ql1bef1rE8Y1PCwD3PuNXV42pp7Wo8lEHYuAajoT4vfAFcd3rPjlkyEEyt1nw== + +multi-part@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/multi-part/-/multi-part-3.0.0.tgz#2bde386e8c1dcc9f15a2277267a7f5ed13aa0cc0" + integrity sha512-pDbdYQ6DLDxAsD83w9R7r7rlW56cETL7hIB5bCWX7FJYw0K+kL5JwHr0I8tRk9lGeFcAzf+2OEzXWlG/4wCnFw== + dependencies: + mime-kind "^3.0.0" + multi-part-lite "^1.0.0" + +mustache@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" + integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== + +mysql@^2.18.1: + version "2.18.1" + resolved "https://registry.yarnpkg.com/mysql/-/mysql-2.18.1.tgz#2254143855c5a8c73825e4522baf2ea021766717" + integrity sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig== + dependencies: + bignumber.js "9.0.0" + readable-stream "2.3.7" + safe-buffer "5.1.2" + sqlstring "2.3.1" + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61" + integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug== + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-addon-api@^3.0.2: + 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-emoji@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" + integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== + dependencies: + lodash.toarray "^4.4.0" + +node-fetch@^2.6.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-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" + integrity sha512-e03zlI31RjF6Ks9+/ju0gY55dZSm21XXMSzy85FGZtDxuAZCa/iQwzWoQjmZvaolQCrIjzs0e4shxZs1bxbpUg== + dependencies: + acorn "^8.0.5" + acorn-class-fields "^1.0.0" + acorn-private-methods "^1.0.0" + acorn-static-class-features "^1.0.0" + acorn-walk "^8.0.2" + +nodemailer@^6.6.1: + version "6.6.2" + resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.6.2.tgz#e184c9ed5bee245a3e0bcabc7255866385757114" + integrity sha512-YSzu7TLbI+bsjCis/TZlAXBoM4y93HhlIgo0P5oiA2ua9Z4k+E2Fod//ybIzdJxOlXGRcHIh/WaeCBehvxZb/Q== + +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" + +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@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" + integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== + +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== + dependencies: + path-key "^3.0.0" + +npmlog@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125" + integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== + dependencies: + boolbase "^1.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.9.0: + version "1.10.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" + integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +on-finished@^2.3.0, on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +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== + dependencies: + mimic-fn "^2.1.0" + +open@^8.2.0: + version "8.2.1" + resolved "https://registry.yarnpkg.com/open/-/open-8.2.1.tgz#82de42da0ccbf429bc12d099dad2e0975e14e8af" + integrity sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +opencollective-postinstall@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" + integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== + +p-all@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-all/-/p-all-2.1.0.tgz#91419be56b7dee8fe4c5db875d55e0da084244a0" + integrity sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA== + dependencies: + p-map "^2.0.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-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-event@^4.1.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== + dependencies: + p-timeout "^3.1.0" + +p-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" + integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== + dependencies: + p-map "^2.0.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-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0, p-map@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.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== + dependencies: + p-finally "^1.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +param-case@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= + dependencies: + no-case "^2.2.0" + +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parse-imports@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parse-imports/-/parse-imports-0.0.5.tgz#80e505b9558d6fa8d760b9f0be64f42f65bf4d17" + integrity sha512-yA6mDNotJmyAXcEdi2AjiHfI8Llk+/uv/jgBgvzFVP8iGaHC5L3rR6VQk/1qEE3SvLUsDQ2GdQMfPTi0qrmt8Q== + dependencies: + es-module-lexer "0.3.26" + slashes "2.0.2" + +parse5-htmlparser2-tree-adapter@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" + +parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" + integrity sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +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-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.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-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-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +peek-readable@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-3.1.3.tgz#932480d46cf6aa553c46c68566c4fb69a82cd2b1" + integrity sha512-mpAcysyRJxmICBcBa5IXH7SZPvWkcghm6Fk8RekoS3v+BpbSzlZzuWbMx+GXrlUwESi9qHar4nVEZNMKylIHvg== + +pg-connection-string@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.4.0.tgz#c979922eb47832999a204da5dbe1ebf2341b6a10" + integrity sha512-3iBXuv7XKvxeMrIgym7njT+HlZkwZqqGX4Bu9cci8xHZNT+Um1gWKqCsAzcC0d95rcKMU5WBg6YRUcHyV0HZKQ== + +phc-argon2@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/phc-argon2/-/phc-argon2-1.1.1.tgz#565b9de5289905a4f030f0f3944ef832a92ff485" + integrity sha512-UBFG+AsK5IzD0xZOEOplUyZibtRsaC97OxH/4+2Ai55IUONDi6NnELwis4jt8+CEjNBoemcY5273n4l+jNa1Rg== + dependencies: + "@kdf/salt" "^2.0.1" + "@phc/format" "^1.0.0" + argon2 "^0.27.2" + tsse "^2.0.0" + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pino-pretty@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-5.1.0.tgz#a7e6dcace4da4fd0d9763ff95957ebbf4b810fbb" + integrity sha512-fpDU80MKP59XOWxqV8crTDjRegC2fbDsA56zTr5s1guiv6QuYHILc9x1a4+o9SNPtfmF2kQdpAZS+bIExtbELQ== + dependencies: + "@hapi/bourne" "^2.0.0" + "@types/node" "^15.3.0" + args "^5.0.1" + chalk "^4.0.0" + dateformat "^4.5.1" + fast-safe-stringify "^2.0.7" + jmespath "^0.15.0" + joycon "^3.0.0" + pump "^3.0.0" + readable-stream "^3.6.0" + rfdc "^1.3.0" + split2 "^3.1.1" + strip-json-comments "^3.1.1" + +pino-std-serializers@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz#b56487c402d882eb96cd67c257868016b61ad671" + integrity sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg== + +pino@^6.11.3: + version "6.11.3" + resolved "https://registry.yarnpkg.com/pino/-/pino-6.11.3.tgz#0c02eec6029d25e6794fdb6bbea367247d74bc29" + integrity sha512-drPtqkkSf0ufx2gaea3TryFiBHdNIdXKf5LN0hTM82SXI4xVIve2wLwNg92e1MT6m3jASLu6VO7eGY6+mmGeyw== + dependencies: + fast-redact "^3.0.0" + fast-safe-stringify "^2.0.7" + flatstr "^1.0.12" + pino-std-serializers "^3.1.0" + quick-format-unescaped "^4.0.3" + sonic-boom "^1.0.2" + +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +pretty-hrtime@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= + +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== + +prop-ini@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/prop-ini/-/prop-ini-0.0.2.tgz#6733a7cb5242acab2be42e607583d8124b172a5b" + integrity sha1-ZzOny1JCrKsr5C5gdYPYEksXKls= + dependencies: + extend "^3.0.0" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= + +proxy-addr@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +qs@^6.10.1: + version "6.10.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" + integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== + dependencies: + side-channel "^1.0.4" + +quick-format-unescaped@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.3.tgz#6d6b66b8207aa2b35eef12be1421bb24c428f652" + integrity sha512-MaL/oqh02mhEo5m5J2rwsVL23Iw2PEaGVHgT2vFt8AAsr0lfvQA5dpXo9TPu0rz7tSBdUPgkbam0j/fj5ZM8yg== + +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== + +random-bytes@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" + integrity sha1-T2ih3Arli9P7lYSMMDJNt11kNgs= + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" + integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== + dependencies: + bytes "3.1.0" + http-errors "1.7.3" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +readable-stream@2.3.7, 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== + 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" + +readable-stream@^3.0.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== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-web-to-node-stream@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.1.tgz#3f619b1bc5dd73a4cfe5c5f9b4f6faba55dff845" + integrity sha512-4zDC6CvjUyusN7V0QLsXVB7pJCD9+vtrM9bYDRv6uBQ+SKfx36rp5AFNPRgh9auKRul/a1iFZJYXcCbwRL+SaA== + dependencies: + "@types/readable-stream" "^2.3.9" + readable-stream "^3.6.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +readme-badger@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/readme-badger/-/readme-badger-0.3.0.tgz#87007f3c3e0c445e545134a305d8e3068fe9cd6e" + integrity sha512-+sMOLSs1imZUISZ2Rhz7qqVd77QtpcAPbGeIraFdgJmijb04YtdlPjGNBvDChTNtLbeQ6JNGQy3pOgslWfaP3g== + dependencies: + balanced-match "^1.0.0" + +rechoir@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" + integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== + dependencies: + resolve "^1.9.0" + +redeyed@~2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b" + integrity sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs= + dependencies: + esprima "~4.0.0" + +redis-commands@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.7.0.tgz#15a6fea2d58281e27b1cd1acfb4b293e278c3a89" + integrity sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ== + +redis-errors@^1.0.0, redis-errors@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" + integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60= + +redis-parser@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" + integrity sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ= + dependencies: + redis-errors "^1.0.0" + +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== + +regenerator-runtime@^0.13.4: + version "0.13.7" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" + integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +require-all@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/require-all/-/require-all-3.0.0.tgz#473d49704be310115ce124f77383b1ebd8671312" + integrity sha1-Rz1JcEvjEBFc4ST3c4Ox69hnExI= + +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= + +resolve-alpn@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.1.2.tgz#30b60cfbb0c0b8dc897940fe13fe255afcdd4d28" + integrity sha512-8OyfzhAtA32LVUsJSke3auIyINcwdh5l3cvYKdKO0nvsYSKuiLfTM5i78PJswFPT8y6cPW+L1v6/hE95chcpDA== + +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-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.9.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +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== + dependencies: + 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== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +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== + +rev-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/rev-hash/-/rev-hash-3.0.0.tgz#951d73d02b9606ea4bbb7ee3d93c252cd8556ce5" + integrity sha512-s+87HfEKAu95TaTxnbCobn0/BkbzR23LHSwVdYvr8mn5+PPjzy+hTWyh92b5oaLgig9TKPe5d6ZcubsVBtUrZg== + +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + +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.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.2, 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== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.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== + dependencies: + lru-cache "^6.0.0" + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +sentence-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" + integrity sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case-first "^2.0.2" + +serve-static@^1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +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= + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +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== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +sigmund@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= + +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slashes@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/slashes/-/slashes-2.0.2.tgz#c149dd3555bd236fdc3b43ec56e748e924425613" + integrity sha512-68p+QkFAQQRetIUzNXAdktNJr8AYLxJukjBegYQz8F7VATsBJG621UYtY/vS2j9jerxdJ1k6Tc25K4DXEw1d5w== + +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== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slick@^1.12.2: + version "1.12.2" + resolved "https://registry.yarnpkg.com/slick/-/slick-1.12.2.tgz#bd048ddb74de7d1ca6915faa4a57570b3550c2d7" + integrity sha1-vQSN23TefRymkV+qSldXCzVQwtc= + +slugify@^1.5.3: + version "1.5.3" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.5.3.tgz#36e009864f5476bfd5db681222643d92339c890d" + integrity sha512-/HkjRdwPY3yHJReXu38NiusZw2+LLE2SrhkWJtmlPDB1fqFSvioYj62NkPcrKiNCgRLeGcGK7QBvr1iQwybeXw== + +smpltmpl@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/smpltmpl/-/smpltmpl-1.0.2.tgz#b6e9d0eedab7827455c46c98fb8b9505ae6d4a82" + integrity sha512-Hq23NNgeZigOzIiX1dkb6W3gFn2/XQj43KhPxu65IMieG/gIwf/lQb1IudjYv0c/5LwJeS/mPayYzyo+8WJMxQ== + dependencies: + babel-code-frame "^6.26.0" + +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sonic-boom@^1.0.2: + 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" + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.19: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +split-lines@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/split-lines/-/split-lines-2.1.0.tgz#3bc9dbf75637c8bae6ed5dcbc7dbd83956b72311" + integrity sha512-8dv+1zKgTpfTkOy8XZLFyWrfxO0NV/bj/3EaQ+hBrBxGv2DwiroljPjU8NlCr+59nLnsVm9WYT7lXKwe4TC6bw== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +split2@^3.1.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + dependencies: + readable-stream "^3.0.0" + +sqlstring@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40" + integrity sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A= + +stack-trace@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= + +standard-as-callback@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45" + integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2": + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" + integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-attributes@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/stringify-attributes/-/stringify-attributes-2.0.0.tgz#0355827de224ec8a94ca81a267f92a3f5f778820" + integrity sha512-wrVfRV6sCCB6wr3gx8OgKsp/9dSWWbKr8ifLfOxEcd/BBoa8d5pAf4BZb/jQW1JZnoZImjvUdxdo3ikYHZmYiw== + dependencies: + escape-goat "^2.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +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-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +strtok3@^6.0.3: + version "6.0.8" + resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.0.8.tgz#c839157f615c10ba0f4ae35067dad9959eeca346" + integrity sha512-QLgv+oiXwXgCgp2PdPPa+Jpp4D9imK9e/0BsyfeFMr6QL6wMVqoVn9+OXQ9I7MZbmUzN6lmitTJ09uwS2OmGcw== + dependencies: + "@tokenizer/token" "^0.1.1" + "@types/debug" "^4.1.5" + peek-readable "^3.1.3" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +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 "^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" + resolved "https://registry.yarnpkg.com/tarn/-/tarn-3.0.1.tgz#ebac2c6dbc6977d34d4526e0a7814200386a8aec" + integrity sha512-6usSlV9KyHsspvwu2duKH+FMUhqJnAh6J5J/4MITl8s94iSUQTLkJggdiewKv4RyARQccnigV48Z+khiuVZDJw== + +term-size@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== + +tildify@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tildify/-/tildify-2.0.0.tgz#f205f3674d677ce698b7067a99e949ce03b4754a" + integrity sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw== + +tmp-cache@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tmp-cache/-/tmp-cache-1.1.0.tgz#28b551cacdafee194540a47b47518b3fadaa049e" + integrity sha512-j040fkL/x+XAZQ9K3bKGEPwgYhOZNBQLa3NXEADUiuno9C+3N2JJA4bVPDREixp604G3/vTXWA3DIPpA9lu1RQ== + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +token-types@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/token-types/-/token-types-2.1.1.tgz#bd585d64902aaf720b8979d257b4b850b4d45c45" + integrity sha512-wnQcqlreS6VjthyHO3Y/kpK/emflxDBNhlNUPfh7wE39KnuDdOituXomIbyI79vBtF0Ninpkh72mcuRHo+RG3Q== + dependencies: + "@tokenizer/token" "^0.1.1" + ieee754 "^1.2.1" + +truncatise@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/truncatise/-/truncatise-0.0.8.tgz#06514a0e98c57924f0c2d4ebaf7ff7a5f16ef39a" + integrity sha512-cXzueh9pzBCsLzhToB4X4gZCb3KYkrsAcBAX97JnazE74HOl3cpBJYEV7nabHeG/6/WXCU5Yujlde/WPBUwnsg== + +tslib@^2.0.3, tslib@^2.2.0, tslib@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" + integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== + +tsse@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tsse/-/tsse-2.0.0.tgz#757a1357473fecaffb5c70024acd179514779f64" + integrity sha512-KiYDxhCTbCUQWXtCSF2OWafC71C/ZUZP6TyCh/w7nPjzY1ZLY70KtDSfmePs3H4vSdxQotqdJvAkGAofxsQ05w== + dependencies: + safe-buffer "^5.1.1" + +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-is@^1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typescript@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.4.tgz#3f85b986945bcf31071decdd96cf8bfa65f9dcbc" + integrity sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew== + +uglify-js@^3.5.1: + version "3.13.10" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.10.tgz#a6bd0d28d38f592c3adb6b180ea6e07e1e540a8d" + integrity sha512-57H3ACYFXeo1IaZ1w02sfA71wI60MGco/IQFjOqK+WtKoprh7Go2/yvd2HPtoJILO2Or84ncLccI4xoHMTSbGg== + +uid-safe@2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.5.tgz#2b3d5c7240e8fc2e58f8aa269e5ee49c0857bd3a" + integrity sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA== + dependencies: + random-bytes "~1.0.0" + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upper-case-first@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" + integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== + dependencies: + tslib "^2.0.3" + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + +upper-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" + integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== + dependencies: + tslib "^2.0.3" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +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= + +uuid-random@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/uuid-random/-/uuid-random-1.3.2.tgz#96715edbaef4e84b1dcf5024b00d16f30220e2d0" + integrity sha512-UOzej0Le/UgkbWEO8flm+0y+G+ljUon1QWTEZOq1rnMAsxo2+SckbiZdKzAHHlVh6gJqI1TjC/xwgR50MuCrBQ== + +valid-data-url@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/valid-data-url/-/valid-data-url-3.0.1.tgz#826c1744e71b5632e847dd15dbd45b9fb38aa34f" + integrity sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA== + +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= + dependencies: + builtins "^1.0.3" + +validator@^13.6.0: + version "13.6.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-13.6.0.tgz#1e71899c14cdc7b2068463cb24c1cc16f6ec7059" + integrity sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg== + +vary@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +web-resource-inliner@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/web-resource-inliner/-/web-resource-inliner-5.0.0.tgz#ac30db8096931f20a7c1b3ade54ff444e2e20f7b" + integrity sha512-AIihwH+ZmdHfkJm7BjSXiEClVt4zUFqX4YlFAzjL13wLtDuUneSaFvDBTbdYRecs35SiU7iNKbMnN+++wVfb6A== + dependencies: + ansi-colors "^4.1.1" + escape-goat "^3.0.0" + htmlparser2 "^4.0.0" + mime "^2.4.6" + node-fetch "^2.6.0" + valid-data-url "^3.0.0" + +webpack-merge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" + integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== + dependencies: + lodash "^4.17.15" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +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== + dependencies: + 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= + +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== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +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== + +yaml@^2.0.0-1: + version "2.0.0-6" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.0.0-6.tgz#3d858d656b9ef13a95c77d083b816e6a8d16caa0" + integrity sha512-YPUm0Z0sei53zauT7HWkkxyIBJhb9Gnf5jv4w4ahw5/v3PjFGhZOt4paXH6g9hzcMJqmNxZwoGfF1JzE2jvSgg== + +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@^16.1.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + 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" + +youch-terminal@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/youch-terminal/-/youch-terminal-1.1.1.tgz#1b16780be43816e8817adced966a9a36113827f8" + integrity sha512-LRJCIDkMH4AA6KtiX1JH3nBO8xCJx8le/CHI2hheBGHd7hcpP62owgUW5R9ObrxW0RLQT/VqPRO4mR92STkvAw== + dependencies: + kleur "^4.1.4" + +youch@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/youch/-/youch-2.2.2.tgz#cb87a359a5c524ebd35eb07ca3a1521dbc7e1a3e" + integrity sha512-/FaCeG3GkuJwaMR34GHVg0l8jCbafZLHiFowSjqLlqhC6OMyf2tPJBu8UirF7/NI9X/R5ai4QfEKUCOxMAGxZQ== + dependencies: + "@types/stack-trace" "0.0.29" + cookie "^0.4.1" + mustache "^4.2.0" + stack-trace "0.0.10" From 3d3c48a31213122b7477ec4ea03f14bc677ea168 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 30 Jun 2021 19:39:00 +0200 Subject: [PATCH 009/244] Edit --- start/routes.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start/routes.ts b/start/routes.ts index 5cf8f54..a43a41c 100644 --- a/start/routes.ts +++ b/start/routes.ts @@ -1,5 +1,5 @@ -import Route from '@ioc:Adonis/Core/Route' import Application from "@ioc:Adonis/Core/Application"; +import Route from "@ioc:Adonis/Core/Route"; import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import HealthCheck from "@ioc:Adonis/Core/HealthCheck"; import Env from '@ioc:Adonis/Core/Env' From af0bcdb0952510e17113ed9c8c026d0c51f74752 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 30 Jun 2021 20:54:21 +0200 Subject: [PATCH 010/244] Working --- .../migrations/1603020084373_subscribers.ts | 2 +- database/migrations/1605956543449_files.ts | 2 +- database/migrations/1605956711010_posts.ts | 2 +- database/migrations/1608409476823_locations.ts | 2 +- database/migrations/1608415261417_projects.ts | 2 +- database/migrations/1618661863952_forms.ts | 2 +- .../migrations/1621542488791_golden_messages.ts | 2 +- ...42495694_users.ts => 1625078903131_users.ts} | 17 +++++++++++++++-- ...pi_tokens.ts => 1625078908619_api_tokens.ts} | 2 +- 9 files changed, 23 insertions(+), 10 deletions(-) rename database/migrations/{1621542495694_users.ts => 1625078903131_users.ts} (54%) rename database/migrations/{1625068552541_api_tokens.ts => 1625078908619_api_tokens.ts} (90%) diff --git a/database/migrations/1603020084373_subscribers.ts b/database/migrations/1603020084373_subscribers.ts index 6a3d955..4f8d405 100644 --- a/database/migrations/1603020084373_subscribers.ts +++ b/database/migrations/1603020084373_subscribers.ts @@ -7,7 +7,7 @@ export default class Subscribers extends BaseSchema { this.schema.createTable(this.tableName, (table) => { table.increments('id').primary() table.string('email').notNullable() - table.timestamps(true) + table.timestamps() }) } diff --git a/database/migrations/1605956543449_files.ts b/database/migrations/1605956543449_files.ts index 80c4793..0d504f9 100644 --- a/database/migrations/1605956543449_files.ts +++ b/database/migrations/1605956543449_files.ts @@ -8,7 +8,7 @@ export default class Pictures extends BaseSchema { table.increments('id').primary() table.string('label').notNullable() table.string('file_name').notNullable() - table.timestamps(true) + table.timestamps() }) } diff --git a/database/migrations/1605956711010_posts.ts b/database/migrations/1605956711010_posts.ts index 078bb96..e84df85 100644 --- a/database/migrations/1605956711010_posts.ts +++ b/database/migrations/1605956711010_posts.ts @@ -8,7 +8,7 @@ export default class Posts extends BaseSchema { table.increments('id').primary() table.string('slug').notNullable() table.integer('likes').notNullable() - table.timestamps(true) + table.timestamps() }) } diff --git a/database/migrations/1608409476823_locations.ts b/database/migrations/1608409476823_locations.ts index b754533..90eeaef 100644 --- a/database/migrations/1608409476823_locations.ts +++ b/database/migrations/1608409476823_locations.ts @@ -9,7 +9,7 @@ export default class Locations extends BaseSchema { table.string('place') table.string('left') table.date('since') - table.timestamps(true) + table.timestamps() }) } diff --git a/database/migrations/1608415261417_projects.ts b/database/migrations/1608415261417_projects.ts index 08b29cf..37ab903 100644 --- a/database/migrations/1608415261417_projects.ts +++ b/database/migrations/1608415261417_projects.ts @@ -10,7 +10,7 @@ export default class Projects extends BaseSchema { table.string('description') table.string('url') table.integer('progress') - table.timestamps(true) + table.timestamps() }) } diff --git a/database/migrations/1618661863952_forms.ts b/database/migrations/1618661863952_forms.ts index c0c7ab2..b452ac6 100644 --- a/database/migrations/1618661863952_forms.ts +++ b/database/migrations/1618661863952_forms.ts @@ -10,7 +10,7 @@ export default class Forms extends BaseSchema { table.string('email') table.string('subject') table.string('content') - table.timestamps(true) + table.timestamps() }) } diff --git a/database/migrations/1621542488791_golden_messages.ts b/database/migrations/1621542488791_golden_messages.ts index e0c4fb9..a954528 100644 --- a/database/migrations/1621542488791_golden_messages.ts +++ b/database/migrations/1621542488791_golden_messages.ts @@ -8,7 +8,7 @@ export default class GoldenMessages extends BaseSchema { table.increments('id') table.integer('user_id').notNullable() table.string('message') - table.timestamps(true) + table.timestamps() }) } diff --git a/database/migrations/1621542495694_users.ts b/database/migrations/1625078903131_users.ts similarity index 54% rename from database/migrations/1621542495694_users.ts rename to database/migrations/1625078903131_users.ts index 1935443..5cf3df1 100644 --- a/database/migrations/1621542495694_users.ts +++ b/database/migrations/1625078903131_users.ts @@ -1,4 +1,5 @@ import BaseSchema from '@ioc:Adonis/Lucid/Schema' +import Hash from "@ioc:Adonis/Core/Hash"; export default class Users extends BaseSchema { protected tableName = 'users' @@ -8,14 +9,26 @@ export default class Users extends BaseSchema { table.increments('id').primary() table.string('username', 255).notNullable() table.string('email', 255).notNullable() - table.string('password', 180).notNullable() + table.string('password', 180).defaultTo(this.randomPassword()).notNullable() table.boolean('is_confirmed').defaultTo(false).notNullable() table.string('remember_me_token').defaultTo(null).nullable() table.string('confirmation_token').defaultTo(null).nullable() - table.timestamps(true) + table.timestamps() }) } + private randomPassword (): string { + let password = '' + const char = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!.:=+-_$*^&@#%ù/àçè()é"' + const size = 64 + for (let i = 0; i < size; i++) { + password += char.charAt(Math.random() * char.length) + } + console.log(password) + console.log(Hash.make(password)) + return password + } + public async down () { this.schema.dropTable(this.tableName) } diff --git a/database/migrations/1625068552541_api_tokens.ts b/database/migrations/1625078908619_api_tokens.ts similarity index 90% rename from database/migrations/1625068552541_api_tokens.ts rename to database/migrations/1625078908619_api_tokens.ts index ed8d363..3c8a659 100644 --- a/database/migrations/1625068552541_api_tokens.ts +++ b/database/migrations/1625078908619_api_tokens.ts @@ -11,7 +11,7 @@ export default class ApiTokens extends BaseSchema { table.string('type').notNullable() table.string('token', 64).notNullable() table.timestamp('expires_at', { useTz: true }).nullable() - table.timestamp('created_at', { useTz: true }).notNullable() + table.timestamps() }) } From a89340e61dbbfdffef6f89baef351149347c895a Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 30 Jun 2021 21:16:17 +0200 Subject: [PATCH 011/244] Working --- database/migrations/1625078903131_users.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/database/migrations/1625078903131_users.ts b/database/migrations/1625078903131_users.ts index 5cf3df1..d7a463d 100644 --- a/database/migrations/1625078903131_users.ts +++ b/database/migrations/1625078903131_users.ts @@ -5,11 +5,11 @@ export default class Users extends BaseSchema { protected tableName = 'users' public async up () { - this.schema.createTable(this.tableName, (table) => { + this.schema.createTable(this.tableName, async (table) => { table.increments('id').primary() table.string('username', 255).notNullable() table.string('email', 255).notNullable() - table.string('password', 180).defaultTo(this.randomPassword()).notNullable() + table.string('password', 180).defaultTo(await this.randomPassword()).notNullable() table.boolean('is_confirmed').defaultTo(false).notNullable() table.string('remember_me_token').defaultTo(null).nullable() table.string('confirmation_token').defaultTo(null).nullable() @@ -17,15 +17,14 @@ export default class Users extends BaseSchema { }) } - private randomPassword (): string { + private async randomPassword(): Promise { let password = '' const char = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!.:=+-_$*^&@#%ù/àçè()é"' const size = 64 for (let i = 0; i < size; i++) { password += char.charAt(Math.random() * char.length) } - console.log(password) - console.log(Hash.make(password)) + password = await Hash.make(password) return password } From 96827e29cde269591577dcd7e29f266ba20623fb Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 30 Jun 2021 21:21:22 +0200 Subject: [PATCH 012/244] Working --- database/migrations/1603020084373_subscribers.ts | 2 +- database/migrations/1605956543449_files.ts | 2 +- database/migrations/1605956711010_posts.ts | 2 +- database/migrations/1608409476823_locations.ts | 2 +- database/migrations/1608415261417_projects.ts | 2 +- database/migrations/1618661863952_forms.ts | 2 +- database/migrations/1625078903131_users.ts | 2 +- database/migrations/1625078908619_api_tokens.ts | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/database/migrations/1603020084373_subscribers.ts b/database/migrations/1603020084373_subscribers.ts index 4f8d405..f0c605a 100644 --- a/database/migrations/1603020084373_subscribers.ts +++ b/database/migrations/1603020084373_subscribers.ts @@ -7,7 +7,7 @@ export default class Subscribers extends BaseSchema { this.schema.createTable(this.tableName, (table) => { table.increments('id').primary() table.string('email').notNullable() - table.timestamps() + table.timestamps(true, true) }) } diff --git a/database/migrations/1605956543449_files.ts b/database/migrations/1605956543449_files.ts index 0d504f9..54560fb 100644 --- a/database/migrations/1605956543449_files.ts +++ b/database/migrations/1605956543449_files.ts @@ -8,7 +8,7 @@ export default class Pictures extends BaseSchema { table.increments('id').primary() table.string('label').notNullable() table.string('file_name').notNullable() - table.timestamps() + table.timestamps(true, true) }) } diff --git a/database/migrations/1605956711010_posts.ts b/database/migrations/1605956711010_posts.ts index e84df85..4a30245 100644 --- a/database/migrations/1605956711010_posts.ts +++ b/database/migrations/1605956711010_posts.ts @@ -8,7 +8,7 @@ export default class Posts extends BaseSchema { table.increments('id').primary() table.string('slug').notNullable() table.integer('likes').notNullable() - table.timestamps() + table.timestamps(true, true) }) } diff --git a/database/migrations/1608409476823_locations.ts b/database/migrations/1608409476823_locations.ts index 90eeaef..dd562e9 100644 --- a/database/migrations/1608409476823_locations.ts +++ b/database/migrations/1608409476823_locations.ts @@ -9,7 +9,7 @@ export default class Locations extends BaseSchema { table.string('place') table.string('left') table.date('since') - table.timestamps() + table.timestamps(true, true) }) } diff --git a/database/migrations/1608415261417_projects.ts b/database/migrations/1608415261417_projects.ts index 37ab903..85919de 100644 --- a/database/migrations/1608415261417_projects.ts +++ b/database/migrations/1608415261417_projects.ts @@ -10,7 +10,7 @@ export default class Projects extends BaseSchema { table.string('description') table.string('url') table.integer('progress') - table.timestamps() + table.timestamps(true, true) }) } diff --git a/database/migrations/1618661863952_forms.ts b/database/migrations/1618661863952_forms.ts index b452ac6..b6a87ca 100644 --- a/database/migrations/1618661863952_forms.ts +++ b/database/migrations/1618661863952_forms.ts @@ -10,7 +10,7 @@ export default class Forms extends BaseSchema { table.string('email') table.string('subject') table.string('content') - table.timestamps() + table.timestamps(true, true) }) } diff --git a/database/migrations/1625078903131_users.ts b/database/migrations/1625078903131_users.ts index d7a463d..c4beb14 100644 --- a/database/migrations/1625078903131_users.ts +++ b/database/migrations/1625078903131_users.ts @@ -13,7 +13,7 @@ export default class Users extends BaseSchema { table.boolean('is_confirmed').defaultTo(false).notNullable() table.string('remember_me_token').defaultTo(null).nullable() table.string('confirmation_token').defaultTo(null).nullable() - table.timestamps() + table.timestamps(true, true) }) } diff --git a/database/migrations/1625078908619_api_tokens.ts b/database/migrations/1625078908619_api_tokens.ts index 3c8a659..96fd16c 100644 --- a/database/migrations/1625078908619_api_tokens.ts +++ b/database/migrations/1625078908619_api_tokens.ts @@ -11,7 +11,7 @@ export default class ApiTokens extends BaseSchema { table.string('type').notNullable() table.string('token', 64).notNullable() table.timestamp('expires_at', { useTz: true }).nullable() - table.timestamps() + table.timestamps(true, true) }) } From b2bed61e82ee30c8b5e981b3d88a971f7da02a19 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 30 Jun 2021 21:24:20 +0200 Subject: [PATCH 013/244] Working --- database/migrations/1625078903131_users.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/database/migrations/1625078903131_users.ts b/database/migrations/1625078903131_users.ts index c4beb14..02db217 100644 --- a/database/migrations/1625078903131_users.ts +++ b/database/migrations/1625078903131_users.ts @@ -5,11 +5,11 @@ export default class Users extends BaseSchema { protected tableName = 'users' public async up () { - this.schema.createTable(this.tableName, async (table) => { + this.schema.createTable(this.tableName, (table) => { table.increments('id').primary() table.string('username', 255).notNullable() table.string('email', 255).notNullable() - table.string('password', 180).defaultTo(await this.randomPassword()).notNullable() + table.string('password', 180).defaultTo(this.randomPassword()).notNullable() table.boolean('is_confirmed').defaultTo(false).notNullable() table.string('remember_me_token').defaultTo(null).nullable() table.string('confirmation_token').defaultTo(null).nullable() @@ -17,14 +17,16 @@ export default class Users extends BaseSchema { }) } - private async randomPassword(): Promise { + private randomPassword(): string { let password = '' const char = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!.:=+-_$*^&@#%ù/àçè()é"' const size = 64 for (let i = 0; i < size; i++) { password += char.charAt(Math.random() * char.length) } - password = await Hash.make(password) + Hash.make(password).then((value => { + password = value + })) return password } From fdc36ff64f63ddeb9c458883f3dc816e574929d3 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 30 Jun 2021 22:27:07 +0200 Subject: [PATCH 014/244] Working --- .adonisrc.json | 0 .dockerignore | 0 .editorconfig | 0 .env.example | 0 .gitignore | 0 Dockerfile | 0 LICENSE | 0 README.md | 0 ace | 0 ace-manifest.json | 0 app/Controllers/Http/AuthController.ts | 0 app/Controllers/Http/FileController.ts | 0 app/Controllers/Http/FormsController.ts | 6 +++--- app/Controllers/Http/GuestBookController.ts | 0 app/Controllers/Http/LocationsController.ts | 0 app/Controllers/Http/PostsController.ts | 0 app/Controllers/Http/ProfileController.ts | 0 app/Controllers/Http/ProjectsController.ts | 0 app/Controllers/Http/StatesController.ts | 0 app/Controllers/Http/SubscribersController.ts | 0 app/Controllers/Http/UsersController.ts | 0 app/Exceptions/Handler.ts | 0 app/Mailers/FormConfirmation.ts | 13 +++++++------ app/Middleware/Auth.ts | 0 app/Middleware/SilentAuth.ts | 0 app/Models/File.ts | 0 app/Models/Form.ts | 0 app/Models/GuestBookMessage.ts | 0 app/Models/Location.ts | 0 app/Models/Post.ts | 0 app/Models/Project.ts | 0 app/Models/Song.ts | 0 app/Models/Subscriber.ts | 0 app/Models/User.ts | 0 app/Tasks/GetDiscordActivity.ts | 0 app/Tasks/UpdateGithubReadme.ts | 0 app/Validators/AuthValidator.ts | 0 app/Validators/FormValidator.ts | 0 app/Validators/guestbook/GuestValidator.ts | 0 app/Validators/location/LocationValidator.ts | 0 app/Validators/project/ProjectValidator.ts | 0 app/Validators/subscriber/SubscriberValidator.ts | 0 app/Validators/users/UserStoreValidator.ts | 0 app/Validators/users/UserUpdateValidator.ts | 0 commands/index.ts | 0 config/ally.ts | 0 config/app.ts | 0 config/auth.ts | 0 config/bodyparser.ts | 0 config/cors.ts | 0 config/database.ts | 0 config/hash.ts | 0 config/mail.ts | 0 config/redis.ts | 0 config/session.ts | 0 contracts/ally.ts | 0 contracts/auth.ts | 0 contracts/env.ts | 0 contracts/events.ts | 0 contracts/hash.ts | 0 contracts/mail.ts | 0 contracts/redis.ts | 0 database/factories/index.ts | 0 database/migrations/1603020084373_subscribers.ts | 0 database/migrations/1605956543449_files.ts | 0 database/migrations/1605956711010_posts.ts | 0 database/migrations/1608409476823_locations.ts | 0 database/migrations/1608415261417_projects.ts | 0 database/migrations/1618661863952_forms.ts | 0 .../migrations/1621542488791_golden_messages.ts | 0 database/migrations/1625078903131_users.ts | 0 database/migrations/1625078908619_api_tokens.ts | 0 env.ts | 0 package.json | 2 +- providers/AppProvider.ts | 0 resources/views/emails/confirmation_form.edge | 14 ++++---------- server.ts | 0 start/kernel.ts | 0 start/routes.ts | 0 tsconfig.json | 0 yarn.lock | 2 +- 81 files changed, 16 insertions(+), 21 deletions(-) mode change 100644 => 100755 .adonisrc.json mode change 100644 => 100755 .dockerignore mode change 100644 => 100755 .editorconfig mode change 100644 => 100755 .env.example mode change 100644 => 100755 .gitignore mode change 100644 => 100755 Dockerfile mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README.md mode change 100644 => 100755 ace mode change 100644 => 100755 ace-manifest.json mode change 100644 => 100755 app/Controllers/Http/AuthController.ts mode change 100644 => 100755 app/Controllers/Http/FileController.ts mode change 100644 => 100755 app/Controllers/Http/FormsController.ts mode change 100644 => 100755 app/Controllers/Http/GuestBookController.ts mode change 100644 => 100755 app/Controllers/Http/LocationsController.ts mode change 100644 => 100755 app/Controllers/Http/PostsController.ts mode change 100644 => 100755 app/Controllers/Http/ProfileController.ts mode change 100644 => 100755 app/Controllers/Http/ProjectsController.ts mode change 100644 => 100755 app/Controllers/Http/StatesController.ts mode change 100644 => 100755 app/Controllers/Http/SubscribersController.ts mode change 100644 => 100755 app/Controllers/Http/UsersController.ts mode change 100644 => 100755 app/Exceptions/Handler.ts mode change 100644 => 100755 app/Mailers/FormConfirmation.ts mode change 100644 => 100755 app/Middleware/Auth.ts mode change 100644 => 100755 app/Middleware/SilentAuth.ts mode change 100644 => 100755 app/Models/File.ts mode change 100644 => 100755 app/Models/Form.ts mode change 100644 => 100755 app/Models/GuestBookMessage.ts mode change 100644 => 100755 app/Models/Location.ts mode change 100644 => 100755 app/Models/Post.ts mode change 100644 => 100755 app/Models/Project.ts mode change 100644 => 100755 app/Models/Song.ts mode change 100644 => 100755 app/Models/Subscriber.ts mode change 100644 => 100755 app/Models/User.ts mode change 100644 => 100755 app/Tasks/GetDiscordActivity.ts mode change 100644 => 100755 app/Tasks/UpdateGithubReadme.ts mode change 100644 => 100755 app/Validators/AuthValidator.ts mode change 100644 => 100755 app/Validators/FormValidator.ts mode change 100644 => 100755 app/Validators/guestbook/GuestValidator.ts mode change 100644 => 100755 app/Validators/location/LocationValidator.ts mode change 100644 => 100755 app/Validators/project/ProjectValidator.ts mode change 100644 => 100755 app/Validators/subscriber/SubscriberValidator.ts mode change 100644 => 100755 app/Validators/users/UserStoreValidator.ts mode change 100644 => 100755 app/Validators/users/UserUpdateValidator.ts mode change 100644 => 100755 commands/index.ts mode change 100644 => 100755 config/ally.ts mode change 100644 => 100755 config/app.ts mode change 100644 => 100755 config/auth.ts mode change 100644 => 100755 config/bodyparser.ts mode change 100644 => 100755 config/cors.ts mode change 100644 => 100755 config/database.ts mode change 100644 => 100755 config/hash.ts mode change 100644 => 100755 config/mail.ts mode change 100644 => 100755 config/redis.ts mode change 100644 => 100755 config/session.ts mode change 100644 => 100755 contracts/ally.ts mode change 100644 => 100755 contracts/auth.ts mode change 100644 => 100755 contracts/env.ts mode change 100644 => 100755 contracts/events.ts mode change 100644 => 100755 contracts/hash.ts mode change 100644 => 100755 contracts/mail.ts mode change 100644 => 100755 contracts/redis.ts mode change 100644 => 100755 database/factories/index.ts mode change 100644 => 100755 database/migrations/1603020084373_subscribers.ts mode change 100644 => 100755 database/migrations/1605956543449_files.ts mode change 100644 => 100755 database/migrations/1605956711010_posts.ts mode change 100644 => 100755 database/migrations/1608409476823_locations.ts mode change 100644 => 100755 database/migrations/1608415261417_projects.ts mode change 100644 => 100755 database/migrations/1618661863952_forms.ts mode change 100644 => 100755 database/migrations/1621542488791_golden_messages.ts mode change 100644 => 100755 database/migrations/1625078903131_users.ts mode change 100644 => 100755 database/migrations/1625078908619_api_tokens.ts mode change 100644 => 100755 env.ts mode change 100644 => 100755 package.json mode change 100644 => 100755 providers/AppProvider.ts mode change 100644 => 100755 resources/views/emails/confirmation_form.edge mode change 100644 => 100755 server.ts mode change 100644 => 100755 start/kernel.ts mode change 100644 => 100755 start/routes.ts mode change 100644 => 100755 tsconfig.json mode change 100644 => 100755 yarn.lock diff --git a/.adonisrc.json b/.adonisrc.json old mode 100644 new mode 100755 diff --git a/.dockerignore b/.dockerignore old mode 100644 new mode 100755 diff --git a/.editorconfig b/.editorconfig old mode 100644 new mode 100755 diff --git a/.env.example b/.env.example old mode 100644 new mode 100755 diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/Dockerfile b/Dockerfile old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/ace b/ace old mode 100644 new mode 100755 diff --git a/ace-manifest.json b/ace-manifest.json old mode 100644 new mode 100755 diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts old mode 100644 new mode 100755 diff --git a/app/Controllers/Http/FileController.ts b/app/Controllers/Http/FileController.ts old mode 100644 new mode 100755 diff --git a/app/Controllers/Http/FormsController.ts b/app/Controllers/Http/FormsController.ts old mode 100644 new mode 100755 index c6424bd..711b19e --- a/app/Controllers/Http/FormsController.ts +++ b/app/Controllers/Http/FormsController.ts @@ -1,7 +1,7 @@ import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' import FormValidator from "App/Validators/FormValidator"; import Form from "App/Models/Form"; -//import FormConfirmation from "App/Mailers/FormConfirmation"; +import FormConfirmation from "App/Mailers/FormConfirmation"; export default class FormsController { @@ -10,10 +10,10 @@ export default class FormsController { await Form.create(data) - //await new FormConfirmation(data.name, data.email).sendLater() + await new FormConfirmation(data.name, data.email).preview() //todo send confirmation email + email to me return response.status(200).send({ - status: 200 + message: 'Form successfully received !' }) } diff --git a/app/Controllers/Http/GuestBookController.ts b/app/Controllers/Http/GuestBookController.ts old mode 100644 new mode 100755 diff --git a/app/Controllers/Http/LocationsController.ts b/app/Controllers/Http/LocationsController.ts old mode 100644 new mode 100755 diff --git a/app/Controllers/Http/PostsController.ts b/app/Controllers/Http/PostsController.ts old mode 100644 new mode 100755 diff --git a/app/Controllers/Http/ProfileController.ts b/app/Controllers/Http/ProfileController.ts old mode 100644 new mode 100755 diff --git a/app/Controllers/Http/ProjectsController.ts b/app/Controllers/Http/ProjectsController.ts old mode 100644 new mode 100755 diff --git a/app/Controllers/Http/StatesController.ts b/app/Controllers/Http/StatesController.ts old mode 100644 new mode 100755 diff --git a/app/Controllers/Http/SubscribersController.ts b/app/Controllers/Http/SubscribersController.ts old mode 100644 new mode 100755 diff --git a/app/Controllers/Http/UsersController.ts b/app/Controllers/Http/UsersController.ts old mode 100644 new mode 100755 diff --git a/app/Exceptions/Handler.ts b/app/Exceptions/Handler.ts old mode 100644 new mode 100755 diff --git a/app/Mailers/FormConfirmation.ts b/app/Mailers/FormConfirmation.ts old mode 100644 new mode 100755 index 235c3af..537fc17 --- a/app/Mailers/FormConfirmation.ts +++ b/app/Mailers/FormConfirmation.ts @@ -1,6 +1,4 @@ -import mjml from 'mjml' import { BaseMailer, MessageContract } from '@ioc:Adonis/Addons/Mail' -import View from "@ioc:Adonis/Core/View"; export default class FormConfirmation extends BaseMailer { @@ -8,16 +6,19 @@ export default class FormConfirmation extends BaseMailer { super() } - public html = mjml(View.render('emails/confirmation_form', { + /*public html = mjml(View.render('emails/confirmation_form', { name: this.name - })).html + })).html*/ public prepare(message: MessageContract) { message .from('no-reply@arthurdanjou.fr') .replyTo('contact@arthurdanjou.fr') .to(this.email) - .subject('Confirmation Form') - .html(this.html) + .subject('Thank you for contacting !') + .htmlView('emails/confirmation_form', { + name: this.name, + url: 'https://arthurdanjou.fr' + }) } } diff --git a/app/Middleware/Auth.ts b/app/Middleware/Auth.ts old mode 100644 new mode 100755 diff --git a/app/Middleware/SilentAuth.ts b/app/Middleware/SilentAuth.ts old mode 100644 new mode 100755 diff --git a/app/Models/File.ts b/app/Models/File.ts old mode 100644 new mode 100755 diff --git a/app/Models/Form.ts b/app/Models/Form.ts old mode 100644 new mode 100755 diff --git a/app/Models/GuestBookMessage.ts b/app/Models/GuestBookMessage.ts old mode 100644 new mode 100755 diff --git a/app/Models/Location.ts b/app/Models/Location.ts old mode 100644 new mode 100755 diff --git a/app/Models/Post.ts b/app/Models/Post.ts old mode 100644 new mode 100755 diff --git a/app/Models/Project.ts b/app/Models/Project.ts old mode 100644 new mode 100755 diff --git a/app/Models/Song.ts b/app/Models/Song.ts old mode 100644 new mode 100755 diff --git a/app/Models/Subscriber.ts b/app/Models/Subscriber.ts old mode 100644 new mode 100755 diff --git a/app/Models/User.ts b/app/Models/User.ts old mode 100644 new mode 100755 diff --git a/app/Tasks/GetDiscordActivity.ts b/app/Tasks/GetDiscordActivity.ts old mode 100644 new mode 100755 diff --git a/app/Tasks/UpdateGithubReadme.ts b/app/Tasks/UpdateGithubReadme.ts old mode 100644 new mode 100755 diff --git a/app/Validators/AuthValidator.ts b/app/Validators/AuthValidator.ts old mode 100644 new mode 100755 diff --git a/app/Validators/FormValidator.ts b/app/Validators/FormValidator.ts old mode 100644 new mode 100755 diff --git a/app/Validators/guestbook/GuestValidator.ts b/app/Validators/guestbook/GuestValidator.ts old mode 100644 new mode 100755 diff --git a/app/Validators/location/LocationValidator.ts b/app/Validators/location/LocationValidator.ts old mode 100644 new mode 100755 diff --git a/app/Validators/project/ProjectValidator.ts b/app/Validators/project/ProjectValidator.ts old mode 100644 new mode 100755 diff --git a/app/Validators/subscriber/SubscriberValidator.ts b/app/Validators/subscriber/SubscriberValidator.ts old mode 100644 new mode 100755 diff --git a/app/Validators/users/UserStoreValidator.ts b/app/Validators/users/UserStoreValidator.ts old mode 100644 new mode 100755 diff --git a/app/Validators/users/UserUpdateValidator.ts b/app/Validators/users/UserUpdateValidator.ts old mode 100644 new mode 100755 diff --git a/commands/index.ts b/commands/index.ts old mode 100644 new mode 100755 diff --git a/config/ally.ts b/config/ally.ts old mode 100644 new mode 100755 diff --git a/config/app.ts b/config/app.ts old mode 100644 new mode 100755 diff --git a/config/auth.ts b/config/auth.ts old mode 100644 new mode 100755 diff --git a/config/bodyparser.ts b/config/bodyparser.ts old mode 100644 new mode 100755 diff --git a/config/cors.ts b/config/cors.ts old mode 100644 new mode 100755 diff --git a/config/database.ts b/config/database.ts old mode 100644 new mode 100755 diff --git a/config/hash.ts b/config/hash.ts old mode 100644 new mode 100755 diff --git a/config/mail.ts b/config/mail.ts old mode 100644 new mode 100755 diff --git a/config/redis.ts b/config/redis.ts old mode 100644 new mode 100755 diff --git a/config/session.ts b/config/session.ts old mode 100644 new mode 100755 diff --git a/contracts/ally.ts b/contracts/ally.ts old mode 100644 new mode 100755 diff --git a/contracts/auth.ts b/contracts/auth.ts old mode 100644 new mode 100755 diff --git a/contracts/env.ts b/contracts/env.ts old mode 100644 new mode 100755 diff --git a/contracts/events.ts b/contracts/events.ts old mode 100644 new mode 100755 diff --git a/contracts/hash.ts b/contracts/hash.ts old mode 100644 new mode 100755 diff --git a/contracts/mail.ts b/contracts/mail.ts old mode 100644 new mode 100755 diff --git a/contracts/redis.ts b/contracts/redis.ts old mode 100644 new mode 100755 diff --git a/database/factories/index.ts b/database/factories/index.ts old mode 100644 new mode 100755 diff --git a/database/migrations/1603020084373_subscribers.ts b/database/migrations/1603020084373_subscribers.ts old mode 100644 new mode 100755 diff --git a/database/migrations/1605956543449_files.ts b/database/migrations/1605956543449_files.ts old mode 100644 new mode 100755 diff --git a/database/migrations/1605956711010_posts.ts b/database/migrations/1605956711010_posts.ts old mode 100644 new mode 100755 diff --git a/database/migrations/1608409476823_locations.ts b/database/migrations/1608409476823_locations.ts old mode 100644 new mode 100755 diff --git a/database/migrations/1608415261417_projects.ts b/database/migrations/1608415261417_projects.ts old mode 100644 new mode 100755 diff --git a/database/migrations/1618661863952_forms.ts b/database/migrations/1618661863952_forms.ts old mode 100644 new mode 100755 diff --git a/database/migrations/1621542488791_golden_messages.ts b/database/migrations/1621542488791_golden_messages.ts old mode 100644 new mode 100755 diff --git a/database/migrations/1625078903131_users.ts b/database/migrations/1625078903131_users.ts old mode 100644 new mode 100755 diff --git a/database/migrations/1625078908619_api_tokens.ts b/database/migrations/1625078908619_api_tokens.ts old mode 100644 new mode 100755 diff --git a/env.ts b/env.ts old mode 100644 new mode 100755 diff --git a/package.json b/package.json old mode 100644 new mode 100755 index fe3c3f6..b715ca9 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@adonisjs/view": "^6.0.3", "axios": "^0.21.1", "luxon": "^1.27.0", - "mjml": "^4.10.0", + "mjml": "^4.10.1", "mysql": "^2.18.1", "phc-argon2": "^1.1.1", "proxy-addr": "^2.0.7", diff --git a/providers/AppProvider.ts b/providers/AppProvider.ts old mode 100644 new mode 100755 diff --git a/resources/views/emails/confirmation_form.edge b/resources/views/emails/confirmation_form.edge old mode 100644 new mode 100755 index bd8f091..d001d1d --- a/resources/views/emails/confirmation_form.edge +++ b/resources/views/emails/confirmation_form.edge @@ -1,10 +1,4 @@ - - - - - - Hello World - - - - +

Welcome {{ name }}

+

+ Click here to verify your email address. +

diff --git a/server.ts b/server.ts old mode 100644 new mode 100755 diff --git a/start/kernel.ts b/start/kernel.ts old mode 100644 new mode 100755 diff --git a/start/routes.ts b/start/routes.ts old mode 100644 new mode 100755 diff --git a/tsconfig.json b/tsconfig.json old mode 100644 new mode 100755 diff --git a/yarn.lock b/yarn.lock old mode 100644 new mode 100755 index 7180aa2..da42bef --- a/yarn.lock +++ b/yarn.lock @@ -3272,7 +3272,7 @@ mjml-wrapper@4.10.1: mjml-core "4.10.1" mjml-section "4.10.1" -mjml@^4.10.0: +mjml@^4.10.1: version "4.10.1" resolved "https://registry.yarnpkg.com/mjml/-/mjml-4.10.1.tgz#8f5d06815bee01ef033553c73589451704a63e8a" integrity sha512-cD6F20yIMOUT9xaAVWLfk0DnhQSq6VkpD+LCf/RUWrxsxxkwPJtJfKfrP5TMeuWcmDFS9hfOBS3Jz+NmGh03jQ== From cc65f516e7917e6af2773bf2e1e24001dd29f7ed Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 1 Jul 2021 12:21:03 +0200 Subject: [PATCH 015/244] Working Signed-off-by: Arthur DANJOU --- .gitignore | 114 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 107 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index a0b3fd6..f03c996 100755 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,110 @@ -node_modules -build +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul coverage -.vscode -.DS_STORE +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file .env -tmp -database/seeders +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# Next.js build output +.next + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and *not* Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Jetbrains .idea/ -/database/seeders/ + +# AdonisJS +database/seeders From 886cc3e4987dbe58c556a47f5b063dad29d1832e Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 1 Jul 2021 12:21:38 +0200 Subject: [PATCH 016/244] Working Signed-off-by: Arthur DANJOU --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index f03c996..f3668bf 100755 --- a/.gitignore +++ b/.gitignore @@ -104,7 +104,7 @@ dist .tern-port # Jetbrains -.idea/ +.idea # AdonisJS database/seeders From 084f2c2419edef8b18410824c0ac0bf0a2c12025 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 1 Jul 2021 12:23:16 +0200 Subject: [PATCH 017/244] Remove .idea Signed-off-by: Arthur DANJOU --- .idea/.gitignore | 5 ----- .idea/artapi.iml | 12 ------------ .idea/codeStyles/codeStyleConfig.xml | 5 ----- .idea/modules.xml | 8 -------- .idea/vcs.xml | 6 ------ 5 files changed, 36 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/artapi.iml delete mode 100644 .idea/codeStyles/codeStyleConfig.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index b58b603..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ diff --git a/.idea/artapi.iml b/.idea/artapi.iml deleted file mode 100644 index 24643cc..0000000 --- a/.idea/artapi.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml deleted file mode 100644 index a55e7a1..0000000 --- a/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index e6356c6..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From 404d193b46f9e6fd1a2af384fa0670583ddf230f Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 1 Jul 2021 16:13:22 +0200 Subject: [PATCH 018/244] Working Signed-off-by: Arthur DANJOU --- ace-manifest.json | 2 +- app/Controllers/Http/AuthController.ts | 25 ++++++++----- app/Controllers/Http/FileController.ts | 26 ++++++++----- app/Controllers/Http/FormsController.ts | 3 +- app/Controllers/Http/GuestBookController.ts | 23 ++++++++---- app/Controllers/Http/PostsController.ts | 8 ++-- app/Controllers/Http/ProfileController.ts | 11 +++--- app/Controllers/Http/ProjectsController.ts | 5 +-- app/Controllers/Http/StatesController.ts | 4 +- app/Controllers/Http/SubscribersController.ts | 17 +++++++-- app/Controllers/Http/UsersController.ts | 37 ++++++++++--------- app/Models/GuestBookMessage.ts | 4 +- app/Models/User.ts | 20 +++++----- app/Validators/guestbook/GuestValidator.ts | 6 +-- app/Validators/users/UserUpdateValidator.ts | 12 +++--- .../migrations/1608409476823_locations.ts | 2 +- database/migrations/1618661863952_forms.ts | 2 +- .../1621542488791_golden_messages.ts | 18 --------- .../1625146912533_guestbook_messages.ts | 22 +++++++++++ yarn.lock | 23 ++++++------ 20 files changed, 154 insertions(+), 116 deletions(-) delete mode 100755 database/migrations/1621542488791_golden_messages.ts create mode 100644 database/migrations/1625146912533_guestbook_messages.ts mode change 100755 => 100644 yarn.lock diff --git a/ace-manifest.json b/ace-manifest.json index 77bd59c..b53470f 100755 --- a/ace-manifest.json +++ b/ace-manifest.json @@ -136,7 +136,7 @@ "name": "connection", "propertyName": "connection", "type": "string", - "description": "Define a custom database connection for the migration" + "description": "The connection flag is used to lookup the directory for the migration file" }, { "name": "folder", diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 2bac585..57cc783 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -7,24 +7,29 @@ export default class AuthController { public async login ({ request, auth, response }: HttpContextContract) { const email = request.input('email') const password = request.input('password') + const infinity = request.input('infinity', false) const token = await auth.attempt(email, password, { - expiresIn: '2 days' + expiresIn: infinity ? '' : '2 days' + }) + return response.status(200).send({ + token: token.toJSON() }) - return response.status(200).send(token.toJSON()) } public async createInfiniteToken ({ request, auth, response }: HttpContextContract) { const email = request.input('email') const password = request.input('password') const token = await auth.attempt(email, password) - return response.status(200).send(token.toJSON()) + return response.status(200).send({ + token: token.toJSON() + }) } public async logout ({ auth, response }: HttpContextContract) { await auth.logout() return response.status(200).send({ - message: 'You have been disconnected' + message: 'You have been disconnected!' }) } @@ -43,13 +48,13 @@ export default class AuthController { if (twitter.accessDenied()) { return response.status(403).send({ - message: 'Access Denied' + message: 'Access Denied!' }) } if (twitter.stateMisMatch()) { return response.status(405).send({ - message: 'Request expired. Retry again' + message: 'Request expired. Retry again!' }) } @@ -72,13 +77,13 @@ export default class AuthController { if (github.accessDenied()) { return response.status(403).send({ - message: 'Access Denied' + message: 'Access Denied!' }) } if (github.stateMisMatch()) { return response.status(405).send({ - message: 'Request expired. Retry again' + message: 'Request expired. Retry again!' }) } @@ -101,13 +106,13 @@ export default class AuthController { if (google.accessDenied()) { return response.status(403).send({ - message: 'Access Denied' + message: 'Access Denied!' }) } if (google.stateMisMatch()) { return response.status(405).send({ - message: 'Request expired. Retry again' + message: 'Request expired. Retry again!' }) } diff --git a/app/Controllers/Http/FileController.ts b/app/Controllers/Http/FileController.ts index 8acea6a..5cef60e 100755 --- a/app/Controllers/Http/FileController.ts +++ b/app/Controllers/Http/FileController.ts @@ -1,21 +1,23 @@ -import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import Application from "@ioc:Adonis/Core/Application"; import File from "App/Models/File"; export default class FileController { - public async index () { - return File.query() + public async index({response}: HttpContextContract) { + return response.status(200).send({ + files: File.query() + }) } - public async store ({request}: HttpContextContract) { + public async store({request, response}: HttpContextContract) { const file = await request.file('file', { extnames: ['jpg', 'png', 'jpeg'] }) const label = request.input('label') if (!file) { - return 'Please upload file' + return 'Please upload file!' } if (file.hasErrors) { return file.errors @@ -25,16 +27,20 @@ export default class FileController { name: `${label}.${file.extname}` }) - return await File.create({ - fileName: `${label}.${file.extname}`, - label: label + return response.status(200).send({ + file: await File.create({ + fileName: `${label}.${file.extname}`, + label: label + }) }) } - public async destroy({ params }: HttpContextContract) { + public async destroy({params, response}: HttpContextContract) { const file = await File.findOrFail(params.id) await file.delete() - return { message: "Le fichier a bien été supprimée" } + return response.status(200).send({ + message: 'File successfully deleted!' + }) } } diff --git a/app/Controllers/Http/FormsController.ts b/app/Controllers/Http/FormsController.ts index 711b19e..f97b3b0 100755 --- a/app/Controllers/Http/FormsController.ts +++ b/app/Controllers/Http/FormsController.ts @@ -1,4 +1,4 @@ -import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import FormValidator from "App/Validators/FormValidator"; import Form from "App/Models/Form"; import FormConfirmation from "App/Mailers/FormConfirmation"; @@ -7,7 +7,6 @@ export default class FormsController { public async send({ request, response }: HttpContextContract) { const data = await request.validate(FormValidator) - await Form.create(data) await new FormConfirmation(data.name, data.email).preview() diff --git a/app/Controllers/Http/GuestBookController.ts b/app/Controllers/Http/GuestBookController.ts index cd57426..e3cdf9a 100755 --- a/app/Controllers/Http/GuestBookController.ts +++ b/app/Controllers/Http/GuestBookController.ts @@ -4,15 +4,24 @@ import GuestValidator from "App/Validators/guestbook/GuestValidator"; export default class GuestBookController { - public async get () { - return GuestBookMessage.query().orderBy('created_at', 'desc') + public async get({response}: HttpContextContract) { + return response.status(200).send({ + guestbook_messages: GuestBookMessage.query().orderBy('created_at', 'desc') + }) } - public async store ({request, auth}: HttpContextContract) { - if (auth.isLoggedIn) { - const data = await request.validate(GuestValidator) - return await GuestBookMessage.create(data) - } + public async store({request, auth, response}: HttpContextContract) { + const data = await request.validate(GuestValidator) + const user = await auth.user! + const guestbook_message = user.related('guestbook_message').firstOrCreate({ + userId: user.id + }, { + ...data, + userId: user.id + }) + return response.status(200).send({ + guestbook_message + }) } } diff --git a/app/Controllers/Http/PostsController.ts b/app/Controllers/Http/PostsController.ts index 66ce3fa..5a54d0f 100755 --- a/app/Controllers/Http/PostsController.ts +++ b/app/Controllers/Http/PostsController.ts @@ -3,7 +3,7 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; export default class PostsController { - public async getLikes ({params}: HttpContextContract) { + public async getLikes({params, response}: HttpContextContract) { let post = await Post.findBy('slug', params.slug) if (!post) { @@ -13,7 +13,9 @@ export default class PostsController { }) } - return post.likes + return response.status(200).send({ + likes: post.likes + }) } public async like ({params, response}: HttpContextContract) { @@ -32,7 +34,6 @@ export default class PostsController { likes: getLikes }).save() return response.status(200).send({ - status: 200, post }) } @@ -46,7 +47,6 @@ export default class PostsController { likes: getLikes }).save() return response.status(200).send({ - status: 200, post }) } diff --git a/app/Controllers/Http/ProfileController.ts b/app/Controllers/Http/ProfileController.ts index 78eedaf..b1324f2 100755 --- a/app/Controllers/Http/ProfileController.ts +++ b/app/Controllers/Http/ProfileController.ts @@ -10,7 +10,8 @@ export default class ProfileController { "Dev", "DevOps", "New technologies", - "Gaming" + "Gaming", + "Cloud" ], code: [ "Javascript", @@ -29,18 +30,18 @@ export default class ProfileController { "Software dev" ], technologies: { - web_app: ["VueJs", "NuxtJs", "Sass", "Tailwind"], + web_app: ["VueJs", "NuxtJs", "Sass", "Tailwind", "WindiCss"], desktop_app: ["ElectronJs"], - mobile_app: ["React Native"], + mobile_app: ["React Native", "Vue Native"], back_end: { typescript: ["AdonisJs"], java: ["Spring"] }, databases: ["MongoDB", "MariaDB", "Redis"], - messaging: ["RabbitMq"], + messaging: ["RabbitMQ"], other: ["Docker", "Git"], architecture: ["microservices", "event-driven", "design system pattern"], - operating_systems: ['Windows', 'Linux'] + operating_systems: ['MacOS', "Linux"] }, }) } diff --git a/app/Controllers/Http/ProjectsController.ts b/app/Controllers/Http/ProjectsController.ts index 212ce49..813f018 100755 --- a/app/Controllers/Http/ProjectsController.ts +++ b/app/Controllers/Http/ProjectsController.ts @@ -1,13 +1,12 @@ -import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import Project from "App/Models/Project"; import ProjectValidator from "App/Validators/project/ProjectValidator"; export default class ProjectsController { public async get ({ response }: HttpContextContract) { - const projects = await Project.query().orderBy('id', 'asc') return response.status(200).send({ - projects + projects: await Project.query().orderBy('id', 'asc') }) } diff --git a/app/Controllers/Http/StatesController.ts b/app/Controllers/Http/StatesController.ts index 7c4f067..765306f 100755 --- a/app/Controllers/Http/StatesController.ts +++ b/app/Controllers/Http/StatesController.ts @@ -4,7 +4,7 @@ import {UpdateGitHubReadme} from "App/Tasks/UpdateGithubReadme"; export default class StatesController { - public async get ({response}: HttpContextContract) { + public async get({response}: HttpContextContract) { const is_sleeping = await Redis.get('states:sleeping') const is_listening_music = await Redis.get('states:listening') const is_developing = await Redis.get('states:developing') @@ -18,7 +18,7 @@ export default class StatesController { }) } - public async set ({request, response, params}: HttpContextContract) { + public async set({request, response, params}: HttpContextContract) { const state = params.state const value = await request.input('value') diff --git a/app/Controllers/Http/SubscribersController.ts b/app/Controllers/Http/SubscribersController.ts index b4ef8e1..e26c4b7 100755 --- a/app/Controllers/Http/SubscribersController.ts +++ b/app/Controllers/Http/SubscribersController.ts @@ -1,4 +1,4 @@ -import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import Subscriber from "App/Models/Subscriber"; import SubscriberValidator from "App/Validators/subscriber/SubscriberValidator"; @@ -10,12 +10,23 @@ export default class SubscribersController { }) } - public async store ({ request, response }: HttpContextContract) { + public async store({request, response}: HttpContextContract) { const data = await request.validate(SubscriberValidator) await Subscriber.create(data) return response.status(200).send({ - message: 'Subscriber successfully registered !' + message: 'Subscriber successfully registered!' }) } + public async delete({request, response}: HttpContextContract) { + const data = await request.validate(SubscriberValidator) + const subscriber = await Subscriber.findBy('email', data.email) + if (subscriber) { + await subscriber.delete() + return response.status(200).send({ + message: 'Subscriber successfully deleted!' + }) + } + } + } diff --git a/app/Controllers/Http/UsersController.ts b/app/Controllers/Http/UsersController.ts index 992ffeb..ecb65dc 100755 --- a/app/Controllers/Http/UsersController.ts +++ b/app/Controllers/Http/UsersController.ts @@ -5,34 +5,33 @@ import UserUpdateValidator from "App/Validators/users/UserUpdateValidator"; export default class UsersController { - public async index () { - return User.query() + public async index({response}: HttpContextContract) { + return response.status(200).send({ + users: User.query() + }) } - public async store ({request}: HttpContextContract) { + public async store({request, response}: HttpContextContract) { const data = await request.validate(UserStoreValidator) - return await User.create(data) + return response.status(200).send({ + user: await User.create(data) + }) } - public async show ({params}: HttpContextContract) { - return await User.findOrFail(params.id) + public async show({params, response}: HttpContextContract) { + return response.status(200).send({ + user: await User.findOrFail(params.id) + }) } - public async update({ request, params, response }: HttpContextContract) { + public async update({request, params, response}: HttpContextContract) { const user = await User.findOrFail(params.id) const data = await request.validate(UserUpdateValidator) - const { email } = data - const user2 = await User.findBy('email', email) - - if (user2 !== null && user.email !== email) { - return response.abort({ - message: 'L\' adresse mail n\'est pas unique !' - }) - } - await user.merge(data).save() - return { message: 'Le compte a été mis à jour' } + return response.status(200).send({ + message: 'User successfully updated!' + }) } public async destroy({ response, params, auth }: HttpContextContract) { @@ -44,7 +43,9 @@ export default class UsersController { } await user.delete() - return { message: "L'utilisateur a bien été supprimé" } + return response.status(200).send({ + message: 'User successfully deleted!' + }) } } diff --git a/app/Models/GuestBookMessage.ts b/app/Models/GuestBookMessage.ts index 1a4e261..da4948f 100755 --- a/app/Models/GuestBookMessage.ts +++ b/app/Models/GuestBookMessage.ts @@ -1,6 +1,6 @@ -import { DateTime } from 'luxon' +import {DateTime} from 'luxon' import {BaseModel, BelongsTo, belongsTo, column} from '@ioc:Adonis/Lucid/Orm' -import User from "./User"; +import User from "App/Models/User"; export default class GuestBookMessage extends BaseModel { @column({ isPrimary: true }) diff --git a/app/Models/User.ts b/app/Models/User.ts index d92ef39..e51efd6 100755 --- a/app/Models/User.ts +++ b/app/Models/User.ts @@ -1,13 +1,10 @@ -import { DateTime } from 'luxon' +import {DateTime} from 'luxon' import Hash from '@ioc:Adonis/Core/Hash' -import { - column, - beforeSave, - BaseModel, -} from '@ioc:Adonis/Lucid/Orm' +import {BaseModel, beforeSave, column, hasOne, HasOne,} from '@ioc:Adonis/Lucid/Orm' +import GuestBookMessage from "App/Models/GuestBookMessage"; export default class User extends BaseModel { - @column({ isPrimary: true }) + @column({isPrimary: true}) public id: number @column() @@ -28,14 +25,17 @@ export default class User extends BaseModel { @column() public rememberMeToken?: string - @column.dateTime({ autoCreate: true }) + @hasOne(() => GuestBookMessage) + public guestbook_message: HasOne + + @column.dateTime({autoCreate: true}) public createdAt: DateTime - @column.dateTime({ autoCreate: true, autoUpdate: true }) + @column.dateTime({autoCreate: true, autoUpdate: true}) public updatedAt: DateTime @beforeSave() - public static async hashPassword (user: User) { + public static async hashPassword(user: User) { if (user.$dirty.password) { user.password = await Hash.make(user.password) } diff --git a/app/Validators/guestbook/GuestValidator.ts b/app/Validators/guestbook/GuestValidator.ts index dca0283..5736ff1 100755 --- a/app/Validators/guestbook/GuestValidator.ts +++ b/app/Validators/guestbook/GuestValidator.ts @@ -1,4 +1,4 @@ -import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import {rules, schema} from '@ioc:Adonis/Core/Validator' export default class GuestValidator { @@ -6,10 +6,10 @@ export default class GuestValidator { } public schema = schema.create({ - user_id: schema.number( [ + user_id: schema.number([ rules.required(), rules.unique({table: 'golden_messages', column: 'user_id'}), - rules.exists({ table: 'users', column: 'id'}) + rules.exists({table: 'users', column: 'id'}) ]), message: schema.string({}, [ rules.required() diff --git a/app/Validators/users/UserUpdateValidator.ts b/app/Validators/users/UserUpdateValidator.ts index 9badcf3..0ec1aaf 100755 --- a/app/Validators/users/UserUpdateValidator.ts +++ b/app/Validators/users/UserUpdateValidator.ts @@ -1,4 +1,4 @@ -import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import {rules, schema} from '@ioc:Adonis/Core/Validator' export default class UserUpdateValidator { @@ -6,11 +6,13 @@ export default class UserUpdateValidator { } public schema = schema.create({ - email: schema.string.optional({ trim: true, escape: true }, [rules.email()]), - password: schema.string.optional({ trim: true, escape: true }, [rules.confirmed()]), + email: schema.string.optional({trim: true, escape: true}, [rules.email(), rules.unique({ + table: 'users', column: 'email' + })]), + password: schema.string.optional({trim: true, escape: true}, [rules.confirmed()]), is_confirmed: schema.boolean.optional(), - confirmation_token: schema.string.optional({ trim: true, escape: true }), - remember_me: schema.string.optional({ trim: true, escape: true }), + confirmation_token: schema.string.optional({trim: true, escape: true}), + remember_me: schema.string.optional({trim: true, escape: true}), }) public cacheKey = this.ctx.routeKey diff --git a/database/migrations/1608409476823_locations.ts b/database/migrations/1608409476823_locations.ts index dd562e9..de1d485 100755 --- a/database/migrations/1608409476823_locations.ts +++ b/database/migrations/1608409476823_locations.ts @@ -5,7 +5,7 @@ export default class Locations extends BaseSchema { public async up () { this.schema.createTable(this.tableName, (table) => { - table.increments('id') + table.increments('id').primary() table.string('place') table.string('left') table.date('since') diff --git a/database/migrations/1618661863952_forms.ts b/database/migrations/1618661863952_forms.ts index b6a87ca..d59a0ed 100755 --- a/database/migrations/1618661863952_forms.ts +++ b/database/migrations/1618661863952_forms.ts @@ -5,7 +5,7 @@ export default class Forms extends BaseSchema { public async up () { this.schema.createTable(this.tableName, (table) => { - table.increments('id') + table.increments('id').primary() table.string('name') table.string('email') table.string('subject') diff --git a/database/migrations/1621542488791_golden_messages.ts b/database/migrations/1621542488791_golden_messages.ts deleted file mode 100755 index a954528..0000000 --- a/database/migrations/1621542488791_golden_messages.ts +++ /dev/null @@ -1,18 +0,0 @@ -import BaseSchema from '@ioc:Adonis/Lucid/Schema' - -export default class GoldenMessages extends BaseSchema { - protected tableName = 'golden_messages' - - public async up () { - this.schema.createTable(this.tableName, (table) => { - table.increments('id') - table.integer('user_id').notNullable() - table.string('message') - table.timestamps() - }) - } - - public async down () { - this.schema.dropTable(this.tableName) - } -} diff --git a/database/migrations/1625146912533_guestbook_messages.ts b/database/migrations/1625146912533_guestbook_messages.ts new file mode 100644 index 0000000..19f22c2 --- /dev/null +++ b/database/migrations/1625146912533_guestbook_messages.ts @@ -0,0 +1,22 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class GuestbookMessages extends BaseSchema { + protected tableName = 'guestbook_messages' + + public async up() { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table + .integer('user_id') + .unsigned() + .references('users.id') + .onDelete('CASCADE') + table.string('message') + table.timestamps(true, true) + }) + } + + public async down() { + this.schema.dropTable(this.tableName) + } +} diff --git a/yarn.lock b/yarn.lock old mode 100755 new mode 100644 index da42bef..fea65ad --- a/yarn.lock +++ b/yarn.lock @@ -191,9 +191,9 @@ pino "^6.11.3" "@adonisjs/lucid@^15.0.1": - version "15.0.1" - resolved "https://registry.yarnpkg.com/@adonisjs/lucid/-/lucid-15.0.1.tgz#a8cdf12f3ae6bc5fa88d452e80423cf3afb8e598" - integrity sha512-ab3tJ9JgafaXvtOzyqd83Xs6Z1raNnSZfkVJlRHvwf3rviBEAPOLVYUDtjx7QskDkDAIam+21WkUNRHcByXQcw== + version "15.0.2" + resolved "https://registry.yarnpkg.com/@adonisjs/lucid/-/lucid-15.0.2.tgz#99051cce48fc1d8061860b9efb09c18d53818a81" + integrity sha512-SLC2YYG33efHeq++qAXe6DA2fkQkgdaQwdBz+tjku7DneRBMre+mltXlf6Mow5WHUfq9b0fxh5GQA9tKGDdWkg== dependencies: "@poppinss/hooks" "^3.0.4" "@poppinss/utils" "^3.1.3" @@ -202,9 +202,10 @@ fast-deep-equal "^3.1.3" igniculus "^1.5.0" knex "^0.95.6" - knex-dynamic-connection "^2.1.0" + knex-dynamic-connection "^2.1.1" luxon "^1.27.0" macroable "^5.1.3" + normalize-path "^3.0.0" pretty-hrtime "^1.0.3" qs "^6.10.1" @@ -514,9 +515,9 @@ "@types/responselike" "*" "@types/debug@^4.1.5": - version "4.1.5" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd" - integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ== + version "4.1.6" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.6.tgz#0b7018723084918a865eff99249c490505df2163" + integrity sha512-7fDOJFA/x8B+sO1901BmHlf5dE1cxBU8mRXj8QOEDnn16hhGJv/IHxJtZhvsabZsIMn0eLIyeOKAeqSNJJYTpA== "@types/faker@^5.5.6": version "5.5.6" @@ -2651,7 +2652,7 @@ kleur@^4.1.4: resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d" integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== -knex-dynamic-connection@^2.1.0: +knex-dynamic-connection@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/knex-dynamic-connection/-/knex-dynamic-connection-2.1.1.tgz#a3c9934a51bf93e2ea6c3da2f9f3dca742f7a123" integrity sha512-/Lwg/T13eNRJVoSJ4e9SH3slVUmg37UHxDxVluAAKdJZxYVj8YsP2x50JSk310RmKsYbOZ8oB8SwVVEuRa4nYw== @@ -4637,9 +4638,9 @@ type-is@^1.6.18: mime-types "~2.1.24" typescript@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.4.tgz#3f85b986945bcf31071decdd96cf8bfa65f9dcbc" - integrity sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew== + version "4.3.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" + integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== uglify-js@^3.5.1: version "3.13.10" From 803970889755c0c734a51063f01a0c25ccddf941 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 1 Jul 2021 23:01:48 +0200 Subject: [PATCH 019/244] Working Signed-off-by: Arthur DANJOU --- app/Controllers/Http/AuthController.ts | 6 +-- app/Controllers/Http/StatesController.ts | 23 +++++---- config/auth.ts | 63 +++++++++++++++++++++++- contracts/auth.ts | 13 +++++ 4 files changed, 92 insertions(+), 13 deletions(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 57cc783..524b2ee 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -66,7 +66,7 @@ export default class AuthController { const twitterUser = await twitter.user() const user = await this.createUser(twitterUser) - await auth.login(user) + await auth.use('web').login(user) return response.status(200).send({ user: user }) @@ -95,7 +95,7 @@ export default class AuthController { const githubUser = await github.user() const user = await this.createUser(githubUser) - await auth.login(user) + await auth.use('web').login(user) return response.status(200).send({ user: user }) @@ -124,7 +124,7 @@ export default class AuthController { const googleUser = await google.user() const user = await this.createUser(googleUser) - await auth.login(user) + await auth.use('web').login(user) return response.status(200).send({ user: user }) diff --git a/app/Controllers/Http/StatesController.ts b/app/Controllers/Http/StatesController.ts index 765306f..9a1ebf3 100755 --- a/app/Controllers/Http/StatesController.ts +++ b/app/Controllers/Http/StatesController.ts @@ -2,19 +2,24 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import Redis from "@ioc:Adonis/Addons/Redis"; import {UpdateGitHubReadme} from "App/Tasks/UpdateGithubReadme"; +const STATES = [ + {sleeping: 'is_sleeping'}, + {listening: 'is_listening_music'}, + {developing: 'is_developing'}, + {learning: 'is_learning'} +] + export default class StatesController { public async get({response}: HttpContextContract) { - const is_sleeping = await Redis.get('states:sleeping') - const is_listening_music = await Redis.get('states:listening') - const is_developing = await Redis.get('states:developing') - const is_learning = await Redis.get('states:learning') + const states = STATES.map(async state => { + return this.getStatus(await Redis.get(`states:${state}`)) + }) return response.status(200).send({ - 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) + states: { + ...states + } }) } @@ -48,7 +53,7 @@ export default class StatesController { await UpdateGitHubReadme() return response.status(200).send({ - message: 'State successfully updated !' + message: 'State successfully updated!' }) } } diff --git a/config/auth.ts b/config/auth.ts index 1209c01..c1b828d 100755 --- a/config/auth.ts +++ b/config/auth.ts @@ -5,7 +5,7 @@ * file. */ -import { AuthConfig } from '@ioc:Adonis/Addons/Auth' +import {AuthConfig} from '@ioc:Adonis/Addons/Auth' /* |-------------------------------------------------------------------------- @@ -19,6 +19,67 @@ import { AuthConfig } from '@ioc:Adonis/Addons/Auth' const authConfig: AuthConfig = { guard: 'api', guards: { + /* + |-------------------------------------------------------------------------- + | Web Guard + |-------------------------------------------------------------------------- + | + | Web guard uses classic old school sessions for authenticating users. + | If you are building a standard web application, it is recommended to + | use web guard with session driver + | + */ + web: { + driver: 'session', + + provider: { + /* + |-------------------------------------------------------------------------- + | Driver + |-------------------------------------------------------------------------- + | + | Name of the driver + | + */ + driver: 'lucid', + + /* + |-------------------------------------------------------------------------- + | Identifier key + |-------------------------------------------------------------------------- + | + | The identifier key is the unique key on the model. In most cases specifying + | the primary key is the right choice. + | + */ + identifierKey: 'id', + + /* + |-------------------------------------------------------------------------- + | Uids + |-------------------------------------------------------------------------- + | + | Uids are used to search a user against one of the mentioned columns. During + | login, the auth module will search the user mentioned value against one + | of the mentioned columns to find their user record. + | + */ + uids: ['email'], + + /* + |-------------------------------------------------------------------------- + | Model + |-------------------------------------------------------------------------- + | + | The model to use for fetching or finding users. The model is imported + | lazily since the config files are read way earlier in the lifecycle + | of booting the app and the models may not be in a usable state at + | that time. + | + */ + model: () => import('App/Models/User'), + }, + }, /* |-------------------------------------------------------------------------- | OAT Guard diff --git a/contracts/auth.ts b/contracts/auth.ts index 90916e2..a498628 100755 --- a/contracts/auth.ts +++ b/contracts/auth.ts @@ -55,6 +55,19 @@ declare module '@ioc:Adonis/Addons/Auth' { | */ interface GuardsList { + /* + |-------------------------------------------------------------------------- + | Web Guard + |-------------------------------------------------------------------------- + | + | The web guard uses sessions for maintaining user login state. It uses + | the `user` provider for fetching user details. + | + */ + web: { + implementation: SessionGuardContract<'user', 'web'>, + config: SessionGuardConfig<'user'>, + }, /* |-------------------------------------------------------------------------- | OAT Guard From 9d55443ad249c3aa3b4c4a8fc5fdcd97716436c6 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 1 Jul 2021 23:25:31 +0200 Subject: [PATCH 020/244] Working Signed-off-by: Arthur DANJOU --- app/Controllers/Http/StatesController.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/app/Controllers/Http/StatesController.ts b/app/Controllers/Http/StatesController.ts index 9a1ebf3..ffcfe17 100755 --- a/app/Controllers/Http/StatesController.ts +++ b/app/Controllers/Http/StatesController.ts @@ -2,18 +2,22 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import Redis from "@ioc:Adonis/Addons/Redis"; import {UpdateGitHubReadme} from "App/Tasks/UpdateGithubReadme"; -const STATES = [ - {sleeping: 'is_sleeping'}, - {listening: 'is_listening_music'}, - {developing: 'is_developing'}, - {learning: 'is_learning'} +interface STATE { + state: string +} + +const STATES: Array = [ + {state: 'developing'}, + {state: 'learning'}, + {state: 'listening_music'}, + {state: 'learning'} ] export default class StatesController { public async get({response}: HttpContextContract) { const states = STATES.map(async state => { - return this.getStatus(await Redis.get(`states:${state}`)) + return this.getStatus(await Redis.get(`is_${state}`)) }) return response.status(200).send({ From 61e9d595a62bb41cf14339a9c756e653deef3ebf Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 1 Jul 2021 23:27:46 +0200 Subject: [PATCH 021/244] Working Signed-off-by: Arthur DANJOU --- app/Controllers/Http/StatesController.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Controllers/Http/StatesController.ts b/app/Controllers/Http/StatesController.ts index ffcfe17..05861d7 100755 --- a/app/Controllers/Http/StatesController.ts +++ b/app/Controllers/Http/StatesController.ts @@ -17,7 +17,7 @@ export default class StatesController { public async get({response}: HttpContextContract) { const states = STATES.map(async state => { - return this.getStatus(await Redis.get(`is_${state}`)) + return this.getStatus(await Redis.get(`states:is_${state}`)) }) return response.status(200).send({ From 3798b4efb3537fcbd6bb2424cfc83da717b03ce1 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 1 Jul 2021 23:28:10 +0200 Subject: [PATCH 022/244] Working Signed-off-by: Arthur DANJOU --- app/Controllers/Http/StatesController.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Controllers/Http/StatesController.ts b/app/Controllers/Http/StatesController.ts index 05861d7..1f4a52f 100755 --- a/app/Controllers/Http/StatesController.ts +++ b/app/Controllers/Http/StatesController.ts @@ -17,7 +17,7 @@ export default class StatesController { public async get({response}: HttpContextContract) { const states = STATES.map(async state => { - return this.getStatus(await Redis.get(`states:is_${state}`)) + return this.getStatus(await Redis.get(`states:is_${state.state}`)) }) return response.status(200).send({ From d32ca8586e844d73ebff4b967064cb4062172b66 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 2 Jul 2021 12:52:41 +0200 Subject: [PATCH 023/244] Working Signed-off-by: Arthur DANJOU --- app/Controllers/Http/AuthController.ts | 2 +- app/Controllers/Http/StatesController.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 524b2ee..6bdfb99 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -66,7 +66,7 @@ export default class AuthController { const twitterUser = await twitter.user() const user = await this.createUser(twitterUser) - await auth.use('web').login(user) + await auth.use('web').login(user, true) return response.status(200).send({ user: user }) diff --git a/app/Controllers/Http/StatesController.ts b/app/Controllers/Http/StatesController.ts index 1f4a52f..b8b8bb4 100755 --- a/app/Controllers/Http/StatesController.ts +++ b/app/Controllers/Http/StatesController.ts @@ -22,7 +22,7 @@ export default class StatesController { return response.status(200).send({ states: { - ...states + states } }) } From 69065a03c035eefae622920fb2194218d20c520a Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 2 Jul 2021 12:58:39 +0200 Subject: [PATCH 024/244] Working Signed-off-by: Arthur DANJOU --- app/Middleware/Auth.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/Middleware/Auth.ts b/app/Middleware/Auth.ts index 262c309..33bbf26 100755 --- a/app/Middleware/Auth.ts +++ b/app/Middleware/Auth.ts @@ -1,5 +1,6 @@ -import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' -import { AuthenticationException } from '@adonisjs/auth/build/standalone' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' +import {AuthenticationException} from '@adonisjs/auth/build/standalone' +import Logger from "@ioc:Adonis/Core/Logger"; /** * Auth middleware is meant to restrict un-authenticated access to a given route @@ -32,9 +33,10 @@ export default class AuthMiddleware { let guardLastAttempted: string | undefined for (let guard of guards) { - guardLastAttempted = guard - + guardLastAttempted = guard + Logger.info('Trying to connect with ' + guard) if (await auth.use(guard).check()) { + Logger.info(auth.use(guard).isLoggedIn) /** * Instruct auth to use the given guard as the default guard for * the rest of the request, since the user authenticated From 7dd2cdfdd555adcfd114d463148b30e6decfd07b Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 2 Jul 2021 17:23:50 +0200 Subject: [PATCH 025/244] Working Signed-off-by: Arthur DANJOU --- .env.example | 13 +++++----- app/Controllers/Http/AuthController.ts | 4 ++-- app/Controllers/Http/ProfileController.ts | 11 ++++++++- app/Middleware/Auth.ts | 3 --- app/Tasks/GetDiscordActivity.ts | 5 +++- config/database.ts | 4 ++-- config/session.ts | 4 ++-- contracts/hash.ts | 5 ---- env.ts | 23 +++++++++--------- start/routes.ts | 29 ++++++++++++----------- 10 files changed, 52 insertions(+), 49 deletions(-) diff --git a/.env.example b/.env.example index 8e05d9e..b7379ff 100755 --- a/.env.example +++ b/.env.example @@ -3,6 +3,12 @@ HOST= NODE_ENV= APP_KEY= APP_NAME= +BASE_URL= +API_VERSION= + +GITHUB_TOKEN= +GITHUB_SOURCE= +DISCORD_ID= DB_CONNECTION= @@ -20,11 +26,6 @@ REDIS_DB= REDIS_HOST= REDIS_PASSWORD= -GITHUB_TOKEN= -GITHUB_SOURCE= -BASE_URL= -API_VERSION= - CACHE_VIEWS= SMTP_HOST= @@ -34,9 +35,7 @@ SMTP_PASSWORD= GITHUB_CLIENT_ID= GITHUB_CLIENT_SECRET= - GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= - TWITTER_CLIENT_ID= TWITTER_CLIENT_SECRET= diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 6bdfb99..9a45dae 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -95,7 +95,7 @@ export default class AuthController { const githubUser = await github.user() const user = await this.createUser(githubUser) - await auth.use('web').login(user) + await auth.use('web').login(user, true) return response.status(200).send({ user: user }) @@ -124,7 +124,7 @@ export default class AuthController { const googleUser = await google.user() const user = await this.createUser(googleUser) - await auth.use('web').login(user) + await auth.use('web').login(user, true) return response.status(200).send({ user: user }) diff --git a/app/Controllers/Http/ProfileController.ts b/app/Controllers/Http/ProfileController.ts index b1324f2..b4db79a 100755 --- a/app/Controllers/Http/ProfileController.ts +++ b/app/Controllers/Http/ProfileController.ts @@ -1,4 +1,5 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; +import {getDiscordActivity} from "App/Tasks/GetDiscordActivity"; export default class ProfileController { @@ -30,7 +31,7 @@ export default class ProfileController { "Software dev" ], technologies: { - web_app: ["VueJs", "NuxtJs", "Sass", "Tailwind", "WindiCss"], + web_app: ["VueJs", "NuxtJs", "Sass", "TailwindCss", "WindiCss"], desktop_app: ["ElectronJs"], mobile_app: ["React Native", "Vue Native"], back_end: { @@ -45,4 +46,12 @@ export default class ProfileController { }, }) } + + //todo get discord Activity + public async discord({response}: HttpContextContract) { + const activity = await getDiscordActivity() + return response.status(200).send({ + status: activity + }) + } } diff --git a/app/Middleware/Auth.ts b/app/Middleware/Auth.ts index 33bbf26..da7e55d 100755 --- a/app/Middleware/Auth.ts +++ b/app/Middleware/Auth.ts @@ -1,6 +1,5 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import {AuthenticationException} from '@adonisjs/auth/build/standalone' -import Logger from "@ioc:Adonis/Core/Logger"; /** * Auth middleware is meant to restrict un-authenticated access to a given route @@ -34,9 +33,7 @@ export default class AuthMiddleware { for (let guard of guards) { guardLastAttempted = guard - Logger.info('Trying to connect with ' + guard) if (await auth.use(guard).check()) { - Logger.info(auth.use(guard).isLoggedIn) /** * Instruct auth to use the given guard as the default guard for * the rest of the request, since the user authenticated diff --git a/app/Tasks/GetDiscordActivity.ts b/app/Tasks/GetDiscordActivity.ts index 57f4b45..7b543ac 100755 --- a/app/Tasks/GetDiscordActivity.ts +++ b/app/Tasks/GetDiscordActivity.ts @@ -1,3 +1,6 @@ -export async function UpdateGitHubReadMe(): Promise { +import axios, {AxiosResponse} from "axios"; +import Env from "@ioc:Adonis/Core/Env"; +export async function getDiscordActivity(): Promise { + return await axios.get(`https://api.lanyard.rest/v1/users/${Env.get('DISCORD_ID')}`) } diff --git a/config/database.ts b/config/database.ts index 4e5ab15..77535ae 100755 --- a/config/database.ts +++ b/config/database.ts @@ -6,7 +6,7 @@ */ import Env from '@ioc:Adonis/Core/Env' -import { DatabaseConfig } from '@ioc:Adonis/Lucid/Database' +import {DatabaseConfig} from '@ioc:Adonis/Lucid/Database' const databaseConfig: DatabaseConfig = { /* @@ -43,7 +43,7 @@ const databaseConfig: DatabaseConfig = { database: Env.get('MYSQL_DB_NAME'), }, healthCheck: true, - debug: false, + debug: true, }, }, diff --git a/config/session.ts b/config/session.ts index 39fd63c..fe191f3 100755 --- a/config/session.ts +++ b/config/session.ts @@ -6,7 +6,7 @@ */ import Env from '@ioc:Adonis/Core/Env' -import { SessionConfig } from '@ioc:Adonis/Addons/Session' +import {SessionConfig} from '@ioc:Adonis/Addons/Session' const sessionConfig: SessionConfig = { @@ -36,7 +36,7 @@ const sessionConfig: SessionConfig = { | The name of the cookie that will hold the session id. | */ - cookieName: 'adonis-session', + cookieName: 'artapi-session', /* |-------------------------------------------------------------------------- diff --git a/contracts/hash.ts b/contracts/hash.ts index ae1c87e..c9b68b1 100755 --- a/contracts/hash.ts +++ b/contracts/hash.ts @@ -6,13 +6,8 @@ */ declare module '@ioc:Adonis/Core/Hash' { - import { HashDrivers } from '@ioc:Adonis/Core/Hash' interface HashersList { - bcrypt: { - config: BcryptConfig, - implementation: BcryptContract, - }, argon: { config: ArgonConfig, implementation: ArgonContract, diff --git a/env.ts b/env.ts index 8f2d2db..a16ebe6 100755 --- a/env.ts +++ b/env.ts @@ -18,10 +18,17 @@ export default Env.rules({ //App HOST: Env.schema.string(), - PORT: Env.schema.number(), - APP_KEY: Env.schema.string(), - APP_NAME: Env.schema.string(), - NODE_ENV: Env.schema.enum(['development', 'production', 'testing'] as const), + PORT: Env.schema.number(), + APP_KEY: Env.schema.string(), + APP_NAME: Env.schema.string(), + NODE_ENV: Env.schema.enum(['development', 'production', 'testing'] as const), + BASE_URL: Env.schema.string(), + API_VERSION: Env.schema.string(), + + //Utils + DISCORD_ID: Env.schema.string(), + GITHUB_TOKEN: Env.schema.string(), + GITHUB_SOURCE: Env.schema.string({format: 'url'}), //Redis REDIS_CONNECTION: Env.schema.enum(['local'] as const), @@ -44,12 +51,6 @@ export default Env.rules({ //Views CACHE_VIEWS: Env.schema.boolean(), - //Utils - GITHUB_TOKEN: Env.schema.string(), - GITHUB_SOURCE: Env.schema.string({ format: 'url' }), - BASE_URL: Env.schema.string(), - API_VERSION: Env.schema.string(), - //Mails SMTP_HOST: Env.schema.string({ format: 'host' }), SMTP_PORT: Env.schema.number(), @@ -59,10 +60,8 @@ export default Env.rules({ //Socials Authentication GOOGLE_CLIENT_ID: Env.schema.string(), GOOGLE_CLIENT_SECRET: Env.schema.string(), - TWITTER_CLIENT_ID: Env.schema.string(), TWITTER_CLIENT_SECRET: Env.schema.string(), - GITHUB_CLIENT_ID: Env.schema.string(), GITHUB_CLIENT_SECRET: Env.schema.string(), }) diff --git a/start/routes.ts b/start/routes.ts index a43a41c..8c6f083 100755 --- a/start/routes.ts +++ b/start/routes.ts @@ -41,11 +41,12 @@ Route.get('/states', 'StatesController.get') Route.get('/projects', 'ProjectsController.get') Route.group(() => { - Route.post('form', 'FormsController.send') - Route.post('states/:state', 'StatesController.set') + Route.get('/discord', 'ProfileController.discord') + Route.post('/form', 'FormsController.send') + Route.post('/states/:state', 'StatesController.set') - Route.resource('users', 'UsersController') - Route.resource('files', 'FileController').only(['store', 'destroy']) + Route.resource('/users', 'UsersController') + Route.resource('/files', 'FileController').only(['store', 'destroy']) Route.post('/locations', 'LocationsController.store') Route.post('/projects', 'ProjectsController.store') @@ -54,17 +55,17 @@ Route.group(() => { Route.get('/:slug', 'PostsController.getLikes') Route.post('/:slug/like', 'PostsController.like') Route.post('/:slug/unlike', 'PostsController.unlike') - }).prefix('posts') + }).prefix('/posts') - Route.get('subscribers', 'SubscribersController.get') - Route.post('subscribers', 'SubscribersController.store') + Route.get('/subscribers', 'SubscribersController.get') + Route.post('/subscribers', 'SubscribersController.store') - Route.get('guestbook', 'GuestBookController.get') - Route.post('guestbook', 'GuestBookController.store') + Route.get('/guestbook', 'GuestBookController.get') + Route.post('/guestbook', 'GuestBookController.store') Route.group(() => { Route.get('/', 'FileController.index') - Route.get('/:filename', async ({ response, params }) => { + Route.get('/:filename', async ({response, params}) => { response.download(Application.makePath('storage', params.filename)) }) }).prefix('/files') @@ -82,13 +83,13 @@ Route.group(() => { Route.get('/github/callback', 'AuthController.github') Route.get('/google/callback', 'AuthController.google') - Route.get('/twitter', async ({ ally }) => { + Route.get('/twitter', async ({ally}) => { return ally.use('twitter').redirect() }) - Route.get('/github', async ({ ally }) => { + Route.get('/github', async ({ally}) => { return ally.use('github').redirect() }) - Route.get('/google', async ({ ally }) => { + Route.get('/google', async ({ally}) => { return ally.use('google').redirect() }) -}).prefix('auth') +}).prefix('/auth') From eb403747c323b557cb4b6e0a5f818251a2f226b7 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 2 Jul 2021 17:34:35 +0200 Subject: [PATCH 026/244] Working Signed-off-by: Arthur DANJOU --- .adonisrc.json | 3 +- config/shield.ts | 237 +++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + start/kernel.ts | 1 + tsconfig.json | 3 +- yarn.lock | 33 +++++++ 6 files changed, 276 insertions(+), 2 deletions(-) create mode 100644 config/shield.ts diff --git a/.adonisrc.json b/.adonisrc.json index 46f29c9..30a93bf 100755 --- a/.adonisrc.json +++ b/.adonisrc.json @@ -27,7 +27,8 @@ "@adonisjs/lucid", "@adonisjs/mail", "@adonisjs/view", - "@adonisjs/ally" + "@adonisjs/ally", + "@adonisjs/shield" ], "aceProviders": [ "@adonisjs/repl" diff --git a/config/shield.ts b/config/shield.ts new file mode 100644 index 0000000..ea316ec --- /dev/null +++ b/config/shield.ts @@ -0,0 +1,237 @@ +/** + * Config source: https://git.io/Jvwvt + * + * Feel free to let us know via PR, if you find something broken in this config + * file. + */ + +import Env from '@ioc:Adonis/Core/Env' +import {ShieldConfig} from '@ioc:Adonis/Addons/Shield' + +/* +|-------------------------------------------------------------------------- +| Content Security Policy +|-------------------------------------------------------------------------- +| +| Content security policy filters out the origins not allowed to execute +| and load resources like scripts, styles and fonts. There are wide +| variety of options to choose from. +*/ +export const csp: ShieldConfig['csp'] = { + /* + |-------------------------------------------------------------------------- + | Enable/disable CSP + |-------------------------------------------------------------------------- + | + | The CSP rules are disabled by default for seamless onboarding. + | + */ + enabled: false, + + /* + |-------------------------------------------------------------------------- + | Directives + |-------------------------------------------------------------------------- + | + | All directives are defined in camelCase and here is the list of + | available directives and their possible values. + | + | https://content-security-policy.com + | + | @example + | directives: { + | defaultSrc: ['self', '@nonce', 'cdnjs.cloudflare.com'] + | } + | + */ + directives: {}, + + /* + |-------------------------------------------------------------------------- + | Report only + |-------------------------------------------------------------------------- + | + | Setting `reportOnly=true` will not block the scripts from running and + | instead report them to a URL. + | + */ + reportOnly: false, +} + +/* +|-------------------------------------------------------------------------- +| CSRF Protection +|-------------------------------------------------------------------------- +| +| CSRF Protection adds another layer of security by making sure, actionable +| routes does have a valid token to execute an action. +| +*/ +export const csrf: ShieldConfig['csrf'] = { + /* + |-------------------------------------------------------------------------- + | Enable/Disable CSRF + |-------------------------------------------------------------------------- + */ + enabled: Env.get('NODE_ENV') !== 'testing', + + /* + |-------------------------------------------------------------------------- + | Routes to Ignore + |-------------------------------------------------------------------------- + | + | Define an array of route patterns that you want to ignore from CSRF + | validation. Make sure the route patterns are started with a leading + | slash. Example: + | + | `/foo/bar` + | + | Also you can define a function that is evaluated on every HTTP Request. + | ``` + | exceptRoutes: ({ request }) => request.url.includes('/api') + | ``` + | + */ + exceptRoutes: [], + + /* + |-------------------------------------------------------------------------- + | Enable Sharing Token Via Cookie + |-------------------------------------------------------------------------- + | + | When the following flag is enabled, AdonisJS will drop `XSRF-TOKEN` + | cookie that frontend frameworks can read and return back as a + | `X-XSRF-TOKEN` header. + | + | The cookie has `httpOnly` flag set to false, so it is little insecure and + | can be turned off when you are not using a frontend framework making + | AJAX requests. + | + */ + enableXsrfCookie: true, + + /* + |-------------------------------------------------------------------------- + | Methods to Validate + |-------------------------------------------------------------------------- + | + | Define an array of HTTP methods to be validated for a valid CSRF token. + | + */ + methods: ['POST', 'PUT', 'PATCH', 'DELETE'], +} + +/* +|-------------------------------------------------------------------------- +| DNS Prefetching +|-------------------------------------------------------------------------- +| +| DNS prefetching allows browsers to proactively perform domain name +| resolution in background. +| +| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-DNS-Prefetch-Control +| +*/ +export const dnsPrefetch: ShieldConfig['dnsPrefetch'] = { + /* + |-------------------------------------------------------------------------- + | Enable/disable this feature + |-------------------------------------------------------------------------- + */ + enabled: true, + + /* + |-------------------------------------------------------------------------- + | Allow or Dis-Allow Explicitly + |-------------------------------------------------------------------------- + | + | The `enabled` boolean does not set `X-DNS-Prefetch-Control` header. However + | the `allow` boolean controls the value of `X-DNS-Prefetch-Control` header. + | + | - When `allow = true`, then `X-DNS-Prefetch-Control = 'on'` + | - When `allow = false`, then `X-DNS-Prefetch-Control = 'off'` + | + */ + allow: true, +} + +/* +|-------------------------------------------------------------------------- +| Iframe Options +|-------------------------------------------------------------------------- +| +| xFrame defines whether or not your website can be embedded inside an +| iframe. Choose from one of the following options. +| +| - DENY +| - SAMEORIGIN +| - ALLOW-FROM http://example.com +| +| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options +*/ +export const xFrame: ShieldConfig['xFrame'] = { + enabled: true, + action: 'DENY', +} + +/* +|-------------------------------------------------------------------------- +| Http Strict Transport Security +|-------------------------------------------------------------------------- +| +| A security to ensure that a browser always makes a connection over +| HTTPS. +| +| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security +| +*/ +export const hsts: ShieldConfig['hsts'] = { + enabled: true, + /* + |-------------------------------------------------------------------------- + | Max Age + |-------------------------------------------------------------------------- + | + | Control, how long the browser should remember that a site is only to be + | accessed using HTTPS. + | + */ + maxAge: '180 days', + + /* + |-------------------------------------------------------------------------- + | Include Subdomains + |-------------------------------------------------------------------------- + | + | Apply rules on the subdomains as well. + | + */ + includeSubDomains: true, + + /* + |-------------------------------------------------------------------------- + | Preloading + |-------------------------------------------------------------------------- + | + | Google maintains a service to register your domain and it will preload + | the HSTS policy. Learn more https://hstspreload.org/ + | + */ + preload: false, +} + +/* +|-------------------------------------------------------------------------- +| No Sniff +|-------------------------------------------------------------------------- +| +| Browsers have a habit of sniffing content-type of a response. Which means +| files with .txt extension containing Javascript code will be executed as +| Javascript. You can disable this behavior by setting nosniff to false. +| +| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options +| +*/ +export const contentTypeSniffing: ShieldConfig['contentTypeSniffing'] = { + enabled: true, +} diff --git a/package.json b/package.json index b715ca9..f7a01b1 100755 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "@adonisjs/redis": "^7.0.6", "@adonisjs/repl": "^3.1.4", "@adonisjs/session": "^6.0.6", + "@adonisjs/shield": "^7.0.4", "@adonisjs/view": "^6.0.3", "axios": "^0.21.1", "luxon": "^1.27.0", diff --git a/start/kernel.ts b/start/kernel.ts index 2523202..67432f3 100755 --- a/start/kernel.ts +++ b/start/kernel.ts @@ -22,6 +22,7 @@ import Server from "@ioc:Adonis/Core/Server"; Server.middleware.register([ () => import('@ioc:Adonis/Core/BodyParser'), + () => import('@ioc:Adonis/Addons/Shield'), () => import('App/Middleware/SilentAuth'), ]) diff --git a/tsconfig.json b/tsconfig.json index 9d859be..745e40f 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -34,7 +34,8 @@ "@adonisjs/lucid", "@adonisjs/mail", "@adonisjs/view", - "@adonisjs/ally" + "@adonisjs/ally", + "@adonisjs/shield" ] } } diff --git a/yarn.lock b/yarn.lock index fea65ad..7bfe3d2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -273,6 +273,15 @@ "@poppinss/utils" "^3.1.3" fs-extra "^10.0.0" +"@adonisjs/shield@^7.0.4": + version "7.0.4" + resolved "https://registry.yarnpkg.com/@adonisjs/shield/-/shield-7.0.4.tgz#9ce7d068c407e1c0f09dea1d742b856c15cde3ad" + integrity sha512-j2FpehuA3kpWI6+kj7sYCo8YrwM2Fy8ov8C8iGiQVWEDjsCIISOH+GNUnUwtLfJvGTrLFlzZcvB62wIxw8Ep/Q== + dependencies: + "@poppinss/utils" "^3.1.3" + csrf "^3.1.0" + helmet-csp "^3.4.0" + "@adonisjs/sink@^5.1.5": version "5.1.5" resolved "https://registry.yarnpkg.com/@adonisjs/sink/-/sink-5.1.5.tgz#8a238052d66f06dd9894516eb7270797c6489b2b" @@ -1409,6 +1418,15 @@ cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +csrf@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/csrf/-/csrf-3.1.0.tgz#ec75e9656d004d674b8ef5ba47b41fbfd6cb9c30" + integrity sha512-uTqEnCvWRk042asU6JtapDTcJeeailFy4ydOQS28bj1hcLnYRiqi8SsD2jS412AY1I/4qdOwWZun774iqywf9w== + dependencies: + rndm "1.2.0" + tsscmp "1.0.6" + uid-safe "2.1.5" + css-select@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" @@ -2195,6 +2213,11 @@ header-case@^2.0.4: capital-case "^1.0.4" tslib "^2.0.3" +helmet-csp@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/helmet-csp/-/helmet-csp-3.4.0.tgz#7fdd0b0274cd90a64664e2ed8e48f9a430037233" + integrity sha512-a+YgzWw6dajqhQfb6ktxil0FsQuWTKzrLSUfy55dxS8fuvl1jidTIMPZ2udN15mjjcpBPgTHNHGF5tyWKYyR8w== + html-minifier@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-4.0.0.tgz#cca9aad8bce1175e02e17a8c33e46d8988889f56" @@ -4098,6 +4121,11 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" +rndm@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/rndm/-/rndm-1.2.0.tgz#f33fe9cfb52bbfd520aa18323bc65db110a1b76c" + integrity sha1-8z/pz7Urv9UgqhgyO8ZdsRCht2w= + 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" @@ -4617,6 +4645,11 @@ tslib@^2.0.3, tslib@^2.2.0, tslib@^2.3.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== +tsscmp@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" + integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== + tsse@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/tsse/-/tsse-2.0.0.tgz#757a1357473fecaffb5c70024acd179514779f64" From b1423cb0c5e9089933780a02dec769196090c16c Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 2 Jul 2021 17:35:20 +0200 Subject: [PATCH 027/244] Working Signed-off-by: Arthur DANJOU --- config/hash.ts | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/config/hash.ts b/config/hash.ts index cd731e6..4129dbd 100755 --- a/config/hash.ts +++ b/config/hash.ts @@ -6,7 +6,7 @@ */ import Env from '@ioc:Adonis/Core/Env' -import { HashConfig } from '@ioc:Adonis/Core/Hash' +import {HashConfig} from '@ioc:Adonis/Core/Hash' /* |-------------------------------------------------------------------------- @@ -50,25 +50,7 @@ const hashConfig: HashConfig = { memory: 4096, parallelism: 1, saltSize: 16, - }, - - /* - |-------------------------------------------------------------------------- - | Bcrypt - |-------------------------------------------------------------------------- - | - | Bcrypt mapping uses the `bcrypt` driver to hash values. - | - | Make sure you install the underlying dependency for this driver to work. - | https://www.npmjs.com/package/phc-bcrypt. - | - | npm install phc-bcrypt - | - */ - bcrypt: { - driver: 'bcrypt', - rounds: 10, - }, + } }, } From 8e4bfa178cd3866c9a0bd4cb12e69bdcbb077118 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 2 Jul 2021 17:49:06 +0200 Subject: [PATCH 028/244] Working Signed-off-by: Arthur DANJOU --- app/Controllers/Http/LocationsController.ts | 22 +- config/shield.ts | 237 -------------------- package.json | 1 - start/kernel.ts | 1 - yarn.lock | 33 --- 5 files changed, 15 insertions(+), 279 deletions(-) delete mode 100644 config/shield.ts diff --git a/app/Controllers/Http/LocationsController.ts b/app/Controllers/Http/LocationsController.ts index 73fb1f9..6adcaaf 100755 --- a/app/Controllers/Http/LocationsController.ts +++ b/app/Controllers/Http/LocationsController.ts @@ -1,16 +1,24 @@ -import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import Location from "App/Models/Location"; import LocationValidator from "App/Validators/location/LocationValidator"; export default class LocationsController { public async get ({ response }: HttpContextContract) { - const location = await Location.query().orderBy('since', 'desc').firstOrFail() - return response.status(200).send({ - place: location.place, - left: location.left, - since: location.since - }) + const location = await Location.query().orderBy('since', 'desc').first() + if (location) { + return response.status(200).send({ + location: { + place: location.place, + left: location.left, + since: location.since + } + }) + } else { + return response.status(200).send({ + location: 'Location is unknown...' + }) + } } public async store ({ request, response }: HttpContextContract) { diff --git a/config/shield.ts b/config/shield.ts deleted file mode 100644 index ea316ec..0000000 --- a/config/shield.ts +++ /dev/null @@ -1,237 +0,0 @@ -/** - * Config source: https://git.io/Jvwvt - * - * Feel free to let us know via PR, if you find something broken in this config - * file. - */ - -import Env from '@ioc:Adonis/Core/Env' -import {ShieldConfig} from '@ioc:Adonis/Addons/Shield' - -/* -|-------------------------------------------------------------------------- -| Content Security Policy -|-------------------------------------------------------------------------- -| -| Content security policy filters out the origins not allowed to execute -| and load resources like scripts, styles and fonts. There are wide -| variety of options to choose from. -*/ -export const csp: ShieldConfig['csp'] = { - /* - |-------------------------------------------------------------------------- - | Enable/disable CSP - |-------------------------------------------------------------------------- - | - | The CSP rules are disabled by default for seamless onboarding. - | - */ - enabled: false, - - /* - |-------------------------------------------------------------------------- - | Directives - |-------------------------------------------------------------------------- - | - | All directives are defined in camelCase and here is the list of - | available directives and their possible values. - | - | https://content-security-policy.com - | - | @example - | directives: { - | defaultSrc: ['self', '@nonce', 'cdnjs.cloudflare.com'] - | } - | - */ - directives: {}, - - /* - |-------------------------------------------------------------------------- - | Report only - |-------------------------------------------------------------------------- - | - | Setting `reportOnly=true` will not block the scripts from running and - | instead report them to a URL. - | - */ - reportOnly: false, -} - -/* -|-------------------------------------------------------------------------- -| CSRF Protection -|-------------------------------------------------------------------------- -| -| CSRF Protection adds another layer of security by making sure, actionable -| routes does have a valid token to execute an action. -| -*/ -export const csrf: ShieldConfig['csrf'] = { - /* - |-------------------------------------------------------------------------- - | Enable/Disable CSRF - |-------------------------------------------------------------------------- - */ - enabled: Env.get('NODE_ENV') !== 'testing', - - /* - |-------------------------------------------------------------------------- - | Routes to Ignore - |-------------------------------------------------------------------------- - | - | Define an array of route patterns that you want to ignore from CSRF - | validation. Make sure the route patterns are started with a leading - | slash. Example: - | - | `/foo/bar` - | - | Also you can define a function that is evaluated on every HTTP Request. - | ``` - | exceptRoutes: ({ request }) => request.url.includes('/api') - | ``` - | - */ - exceptRoutes: [], - - /* - |-------------------------------------------------------------------------- - | Enable Sharing Token Via Cookie - |-------------------------------------------------------------------------- - | - | When the following flag is enabled, AdonisJS will drop `XSRF-TOKEN` - | cookie that frontend frameworks can read and return back as a - | `X-XSRF-TOKEN` header. - | - | The cookie has `httpOnly` flag set to false, so it is little insecure and - | can be turned off when you are not using a frontend framework making - | AJAX requests. - | - */ - enableXsrfCookie: true, - - /* - |-------------------------------------------------------------------------- - | Methods to Validate - |-------------------------------------------------------------------------- - | - | Define an array of HTTP methods to be validated for a valid CSRF token. - | - */ - methods: ['POST', 'PUT', 'PATCH', 'DELETE'], -} - -/* -|-------------------------------------------------------------------------- -| DNS Prefetching -|-------------------------------------------------------------------------- -| -| DNS prefetching allows browsers to proactively perform domain name -| resolution in background. -| -| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-DNS-Prefetch-Control -| -*/ -export const dnsPrefetch: ShieldConfig['dnsPrefetch'] = { - /* - |-------------------------------------------------------------------------- - | Enable/disable this feature - |-------------------------------------------------------------------------- - */ - enabled: true, - - /* - |-------------------------------------------------------------------------- - | Allow or Dis-Allow Explicitly - |-------------------------------------------------------------------------- - | - | The `enabled` boolean does not set `X-DNS-Prefetch-Control` header. However - | the `allow` boolean controls the value of `X-DNS-Prefetch-Control` header. - | - | - When `allow = true`, then `X-DNS-Prefetch-Control = 'on'` - | - When `allow = false`, then `X-DNS-Prefetch-Control = 'off'` - | - */ - allow: true, -} - -/* -|-------------------------------------------------------------------------- -| Iframe Options -|-------------------------------------------------------------------------- -| -| xFrame defines whether or not your website can be embedded inside an -| iframe. Choose from one of the following options. -| -| - DENY -| - SAMEORIGIN -| - ALLOW-FROM http://example.com -| -| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options -*/ -export const xFrame: ShieldConfig['xFrame'] = { - enabled: true, - action: 'DENY', -} - -/* -|-------------------------------------------------------------------------- -| Http Strict Transport Security -|-------------------------------------------------------------------------- -| -| A security to ensure that a browser always makes a connection over -| HTTPS. -| -| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security -| -*/ -export const hsts: ShieldConfig['hsts'] = { - enabled: true, - /* - |-------------------------------------------------------------------------- - | Max Age - |-------------------------------------------------------------------------- - | - | Control, how long the browser should remember that a site is only to be - | accessed using HTTPS. - | - */ - maxAge: '180 days', - - /* - |-------------------------------------------------------------------------- - | Include Subdomains - |-------------------------------------------------------------------------- - | - | Apply rules on the subdomains as well. - | - */ - includeSubDomains: true, - - /* - |-------------------------------------------------------------------------- - | Preloading - |-------------------------------------------------------------------------- - | - | Google maintains a service to register your domain and it will preload - | the HSTS policy. Learn more https://hstspreload.org/ - | - */ - preload: false, -} - -/* -|-------------------------------------------------------------------------- -| No Sniff -|-------------------------------------------------------------------------- -| -| Browsers have a habit of sniffing content-type of a response. Which means -| files with .txt extension containing Javascript code will be executed as -| Javascript. You can disable this behavior by setting nosniff to false. -| -| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options -| -*/ -export const contentTypeSniffing: ShieldConfig['contentTypeSniffing'] = { - enabled: true, -} diff --git a/package.json b/package.json index f7a01b1..b715ca9 100755 --- a/package.json +++ b/package.json @@ -27,7 +27,6 @@ "@adonisjs/redis": "^7.0.6", "@adonisjs/repl": "^3.1.4", "@adonisjs/session": "^6.0.6", - "@adonisjs/shield": "^7.0.4", "@adonisjs/view": "^6.0.3", "axios": "^0.21.1", "luxon": "^1.27.0", diff --git a/start/kernel.ts b/start/kernel.ts index 67432f3..2523202 100755 --- a/start/kernel.ts +++ b/start/kernel.ts @@ -22,7 +22,6 @@ import Server from "@ioc:Adonis/Core/Server"; Server.middleware.register([ () => import('@ioc:Adonis/Core/BodyParser'), - () => import('@ioc:Adonis/Addons/Shield'), () => import('App/Middleware/SilentAuth'), ]) diff --git a/yarn.lock b/yarn.lock index 7bfe3d2..fea65ad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -273,15 +273,6 @@ "@poppinss/utils" "^3.1.3" fs-extra "^10.0.0" -"@adonisjs/shield@^7.0.4": - version "7.0.4" - resolved "https://registry.yarnpkg.com/@adonisjs/shield/-/shield-7.0.4.tgz#9ce7d068c407e1c0f09dea1d742b856c15cde3ad" - integrity sha512-j2FpehuA3kpWI6+kj7sYCo8YrwM2Fy8ov8C8iGiQVWEDjsCIISOH+GNUnUwtLfJvGTrLFlzZcvB62wIxw8Ep/Q== - dependencies: - "@poppinss/utils" "^3.1.3" - csrf "^3.1.0" - helmet-csp "^3.4.0" - "@adonisjs/sink@^5.1.5": version "5.1.5" resolved "https://registry.yarnpkg.com/@adonisjs/sink/-/sink-5.1.5.tgz#8a238052d66f06dd9894516eb7270797c6489b2b" @@ -1418,15 +1409,6 @@ cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -csrf@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/csrf/-/csrf-3.1.0.tgz#ec75e9656d004d674b8ef5ba47b41fbfd6cb9c30" - integrity sha512-uTqEnCvWRk042asU6JtapDTcJeeailFy4ydOQS28bj1hcLnYRiqi8SsD2jS412AY1I/4qdOwWZun774iqywf9w== - dependencies: - rndm "1.2.0" - tsscmp "1.0.6" - uid-safe "2.1.5" - css-select@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" @@ -2213,11 +2195,6 @@ header-case@^2.0.4: capital-case "^1.0.4" tslib "^2.0.3" -helmet-csp@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/helmet-csp/-/helmet-csp-3.4.0.tgz#7fdd0b0274cd90a64664e2ed8e48f9a430037233" - integrity sha512-a+YgzWw6dajqhQfb6ktxil0FsQuWTKzrLSUfy55dxS8fuvl1jidTIMPZ2udN15mjjcpBPgTHNHGF5tyWKYyR8w== - html-minifier@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-4.0.0.tgz#cca9aad8bce1175e02e17a8c33e46d8988889f56" @@ -4121,11 +4098,6 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -rndm@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/rndm/-/rndm-1.2.0.tgz#f33fe9cfb52bbfd520aa18323bc65db110a1b76c" - integrity sha1-8z/pz7Urv9UgqhgyO8ZdsRCht2w= - 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" @@ -4645,11 +4617,6 @@ tslib@^2.0.3, tslib@^2.2.0, tslib@^2.3.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== -tsscmp@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" - integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== - tsse@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/tsse/-/tsse-2.0.0.tgz#757a1357473fecaffb5c70024acd179514779f64" From da9963a2a0b878cb333c010df6482894ff86fa8f Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 2 Jul 2021 17:52:24 +0200 Subject: [PATCH 029/244] Working Signed-off-by: Arthur DANJOU --- tsconfig.json | 1 - 1 file changed, 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index 745e40f..c350d7c 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -35,7 +35,6 @@ "@adonisjs/mail", "@adonisjs/view", "@adonisjs/ally", - "@adonisjs/shield" ] } } From 1a3e839ba7abfe029e2e88a3732adbe488ec72cb Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 2 Jul 2021 17:55:32 +0200 Subject: [PATCH 030/244] Working Signed-off-by: Arthur DANJOU --- .adonisrc.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.adonisrc.json b/.adonisrc.json index 30a93bf..46f29c9 100755 --- a/.adonisrc.json +++ b/.adonisrc.json @@ -27,8 +27,7 @@ "@adonisjs/lucid", "@adonisjs/mail", "@adonisjs/view", - "@adonisjs/ally", - "@adonisjs/shield" + "@adonisjs/ally" ], "aceProviders": [ "@adonisjs/repl" From a4e19a0c6f773e5b12d7f8731520f6b8985ca3c7 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 3 Jul 2021 11:34:07 +0200 Subject: [PATCH 031/244] Fix states Signed-off-by: Arthur DANJOU --- app/Controllers/Http/StatesController.ts | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/app/Controllers/Http/StatesController.ts b/app/Controllers/Http/StatesController.ts index b8b8bb4..ed29498 100755 --- a/app/Controllers/Http/StatesController.ts +++ b/app/Controllers/Http/StatesController.ts @@ -2,27 +2,16 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import Redis from "@ioc:Adonis/Addons/Redis"; import {UpdateGitHubReadme} from "App/Tasks/UpdateGithubReadme"; -interface STATE { - state: string -} - -const STATES: Array = [ - {state: 'developing'}, - {state: 'learning'}, - {state: 'listening_music'}, - {state: 'learning'} -] - export default class StatesController { public async get({response}: HttpContextContract) { - const states = STATES.map(async state => { - return this.getStatus(await Redis.get(`states:is_${state.state}`)) - }) return response.status(200).send({ states: { - states + "is_sleeping": this.getStatus(await Redis.get(`states:is_sleeping`)), + "is_developing": this.getStatus(await Redis.get(`states:is_developing`)), + "is_learning": this.getStatus(await Redis.get(`states:is_learning`)), + "is_listening_music": this.getStatus(await Redis.get(`states:is_listening_music`)), } }) } From 15be39db9ed49e0aa63082fe7cfd7ef73dca04bf Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 3 Jul 2021 14:15:32 +0200 Subject: [PATCH 032/244] remove debug Signed-off-by: Arthur DANJOU --- config/database.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/database.ts b/config/database.ts index 77535ae..c80e9bd 100755 --- a/config/database.ts +++ b/config/database.ts @@ -43,7 +43,7 @@ const databaseConfig: DatabaseConfig = { database: Env.get('MYSQL_DB_NAME'), }, healthCheck: true, - debug: true, + debug: false, }, }, From a6244ac6f1a0a5ff292155403908a4414947dd21 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 3 Jul 2021 14:39:20 +0200 Subject: [PATCH 033/244] test Signed-off-by: Arthur DANJOU --- app/Controllers/Http/GuestBookController.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/Controllers/Http/GuestBookController.ts b/app/Controllers/Http/GuestBookController.ts index e3cdf9a..e774d79 100755 --- a/app/Controllers/Http/GuestBookController.ts +++ b/app/Controllers/Http/GuestBookController.ts @@ -1,12 +1,11 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; -import GuestBookMessage from "App/Models/GuestBookMessage"; import GuestValidator from "App/Validators/guestbook/GuestValidator"; export default class GuestBookController { - public async get({response}: HttpContextContract) { + public get({response}: HttpContextContract) { return response.status(200).send({ - guestbook_messages: GuestBookMessage.query().orderBy('created_at', 'desc') + guestbook_messages: 'TEST' }) } From 204caf2b6b679979f8fd9d705e22899f907be52c Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 3 Jul 2021 14:42:03 +0200 Subject: [PATCH 034/244] Working Signed-off-by: Arthur DANJOU --- app/Controllers/Http/GuestBookController.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Controllers/Http/GuestBookController.ts b/app/Controllers/Http/GuestBookController.ts index e774d79..c2df020 100755 --- a/app/Controllers/Http/GuestBookController.ts +++ b/app/Controllers/Http/GuestBookController.ts @@ -1,11 +1,12 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import GuestValidator from "App/Validators/guestbook/GuestValidator"; +import GuestBookMessage from "App/Models/GuestBookMessage"; export default class GuestBookController { public get({response}: HttpContextContract) { return response.status(200).send({ - guestbook_messages: 'TEST' + guestbook_messages: GuestBookMessage.query().orderBy('created_at', 'asc') }) } From 570aca10514db6af79b75f81fb26367f2d0579d3 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 3 Jul 2021 14:46:19 +0200 Subject: [PATCH 035/244] Working Signed-off-by: Arthur DANJOU --- app/Controllers/Http/GuestBookController.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/Controllers/Http/GuestBookController.ts b/app/Controllers/Http/GuestBookController.ts index c2df020..8531acd 100755 --- a/app/Controllers/Http/GuestBookController.ts +++ b/app/Controllers/Http/GuestBookController.ts @@ -4,9 +4,10 @@ import GuestBookMessage from "App/Models/GuestBookMessage"; export default class GuestBookController { - public get({response}: HttpContextContract) { + public async get({response}: HttpContextContract) { + const guestbook_messages = await GuestBookMessage.query().orderBy('created_at', 'desc') return response.status(200).send({ - guestbook_messages: GuestBookMessage.query().orderBy('created_at', 'asc') + guestbook_messages }) } From 8393ad08f9a27b48ecf5f502874a421adc888a0f Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 3 Jul 2021 14:52:24 +0200 Subject: [PATCH 036/244] Working Signed-off-by: Arthur DANJOU --- app/Controllers/Http/GuestBookController.ts | 4 ++-- app/Models/{GuestBookMessage.ts => GuestbookMessage.ts} | 4 ++-- app/Models/User.ts | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) rename app/Models/{GuestBookMessage.ts => GuestbookMessage.ts} (83%) diff --git a/app/Controllers/Http/GuestBookController.ts b/app/Controllers/Http/GuestBookController.ts index 8531acd..e659ec3 100755 --- a/app/Controllers/Http/GuestBookController.ts +++ b/app/Controllers/Http/GuestBookController.ts @@ -1,11 +1,11 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import GuestValidator from "App/Validators/guestbook/GuestValidator"; -import GuestBookMessage from "App/Models/GuestBookMessage"; +import GuestbookMessage from "App/Models/GuestbookMessage"; export default class GuestBookController { public async get({response}: HttpContextContract) { - const guestbook_messages = await GuestBookMessage.query().orderBy('created_at', 'desc') + const guestbook_messages = await GuestbookMessage.query().orderBy('created_at', 'desc') return response.status(200).send({ guestbook_messages }) diff --git a/app/Models/GuestBookMessage.ts b/app/Models/GuestbookMessage.ts similarity index 83% rename from app/Models/GuestBookMessage.ts rename to app/Models/GuestbookMessage.ts index da4948f..ef4a596 100755 --- a/app/Models/GuestBookMessage.ts +++ b/app/Models/GuestbookMessage.ts @@ -2,8 +2,8 @@ import {DateTime} from 'luxon' import {BaseModel, BelongsTo, belongsTo, column} from '@ioc:Adonis/Lucid/Orm' import User from "App/Models/User"; -export default class GuestBookMessage extends BaseModel { - @column({ isPrimary: true }) +export default class GuestbookMessage extends BaseModel { + @column({isPrimary: true}) public id: number @belongsTo(() => User) diff --git a/app/Models/User.ts b/app/Models/User.ts index e51efd6..2ba03fc 100755 --- a/app/Models/User.ts +++ b/app/Models/User.ts @@ -1,7 +1,7 @@ import {DateTime} from 'luxon' import Hash from '@ioc:Adonis/Core/Hash' import {BaseModel, beforeSave, column, hasOne, HasOne,} from '@ioc:Adonis/Lucid/Orm' -import GuestBookMessage from "App/Models/GuestBookMessage"; +import GuestbookMessage from "App/Models/GuestbookMessage"; export default class User extends BaseModel { @column({isPrimary: true}) @@ -25,8 +25,8 @@ export default class User extends BaseModel { @column() public rememberMeToken?: string - @hasOne(() => GuestBookMessage) - public guestbook_message: HasOne + @hasOne(() => GuestbookMessage) + public guestbook_message: HasOne @column.dateTime({autoCreate: true}) public createdAt: DateTime From a74e1ee282d0f5cfe5d0da24288762837655711d Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 3 Jul 2021 17:44:13 +0200 Subject: [PATCH 037/244] Preload User on guestbook Signed-off-by: Arthur DANJOU --- app/Controllers/Http/GuestBookController.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/Controllers/Http/GuestBookController.ts b/app/Controllers/Http/GuestBookController.ts index e659ec3..1b04817 100755 --- a/app/Controllers/Http/GuestBookController.ts +++ b/app/Controllers/Http/GuestBookController.ts @@ -5,7 +5,10 @@ import GuestbookMessage from "App/Models/GuestbookMessage"; export default class GuestBookController { public async get({response}: HttpContextContract) { - const guestbook_messages = await GuestbookMessage.query().orderBy('created_at', 'desc') + const guestbook_messages = await GuestbookMessage + .query() + .preload('user') + .orderBy('created_at', 'desc') return response.status(200).send({ guestbook_messages }) From c7902091d733f53845d57c727b5731036e5ec5fe Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 3 Jul 2021 18:32:16 +0200 Subject: [PATCH 038/244] Update column type Signed-off-by: Arthur DANJOU --- database/migrations/1625146912533_guestbook_messages.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/migrations/1625146912533_guestbook_messages.ts b/database/migrations/1625146912533_guestbook_messages.ts index 19f22c2..0e8bd0b 100644 --- a/database/migrations/1625146912533_guestbook_messages.ts +++ b/database/migrations/1625146912533_guestbook_messages.ts @@ -11,7 +11,7 @@ export default class GuestbookMessages extends BaseSchema { .unsigned() .references('users.id') .onDelete('CASCADE') - table.string('message') + table.text('message') table.timestamps(true, true) }) } From c05e72d6643b08dec8eacc8872bc74b0337e5c79 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 3 Jul 2021 18:36:17 +0200 Subject: [PATCH 039/244] Fix migration Signed-off-by: Arthur DANJOU --- .../1625146912533_guestbook_messages.ts | 2 +- .../1625330080117_guestbook_messages.ts | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 database/migrations/1625330080117_guestbook_messages.ts diff --git a/database/migrations/1625146912533_guestbook_messages.ts b/database/migrations/1625146912533_guestbook_messages.ts index 0e8bd0b..19f22c2 100644 --- a/database/migrations/1625146912533_guestbook_messages.ts +++ b/database/migrations/1625146912533_guestbook_messages.ts @@ -11,7 +11,7 @@ export default class GuestbookMessages extends BaseSchema { .unsigned() .references('users.id') .onDelete('CASCADE') - table.text('message') + table.string('message') table.timestamps(true, true) }) } diff --git a/database/migrations/1625330080117_guestbook_messages.ts b/database/migrations/1625330080117_guestbook_messages.ts new file mode 100644 index 0000000..7cc8f79 --- /dev/null +++ b/database/migrations/1625330080117_guestbook_messages.ts @@ -0,0 +1,17 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class GuestbookMessages extends BaseSchema { + protected tableName = 'guestbook_messages' + + public async up() { + await this.schema.table(this.tableName, (table) => { + table.text('message') + }) + } + + public async down() { + await this.schema.table(this.tableName, (table) => { + table.dropColumn('message') + }) + } +} From 2aa7c28a731e08902e3cc077d15596855b32b6db Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 3 Jul 2021 18:40:36 +0200 Subject: [PATCH 040/244] Fix migration Signed-off-by: Arthur DANJOU --- app/Validators/guestbook/GuestValidator.ts | 5 ----- database/migrations/1625330080117_guestbook_messages.ts | 1 + 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/app/Validators/guestbook/GuestValidator.ts b/app/Validators/guestbook/GuestValidator.ts index 5736ff1..6c075fc 100755 --- a/app/Validators/guestbook/GuestValidator.ts +++ b/app/Validators/guestbook/GuestValidator.ts @@ -6,11 +6,6 @@ export default class GuestValidator { } public schema = schema.create({ - user_id: schema.number([ - rules.required(), - rules.unique({table: 'golden_messages', column: 'user_id'}), - rules.exists({table: 'users', column: 'id'}) - ]), message: schema.string({}, [ rules.required() ]) diff --git a/database/migrations/1625330080117_guestbook_messages.ts b/database/migrations/1625330080117_guestbook_messages.ts index 7cc8f79..6c6a648 100644 --- a/database/migrations/1625330080117_guestbook_messages.ts +++ b/database/migrations/1625330080117_guestbook_messages.ts @@ -5,6 +5,7 @@ export default class GuestbookMessages extends BaseSchema { public async up() { await this.schema.table(this.tableName, (table) => { + table.dropColumn('message') table.text('message') }) } From 696736fda8a792cd0c353f39f7c1bfc7516961e4 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 3 Jul 2021 18:41:04 +0200 Subject: [PATCH 041/244] Fix migration Signed-off-by: Arthur DANJOU --- database/migrations/1625330080117_guestbook_messages.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/database/migrations/1625330080117_guestbook_messages.ts b/database/migrations/1625330080117_guestbook_messages.ts index 6c6a648..635da64 100644 --- a/database/migrations/1625330080117_guestbook_messages.ts +++ b/database/migrations/1625330080117_guestbook_messages.ts @@ -4,8 +4,8 @@ export default class GuestbookMessages extends BaseSchema { protected tableName = 'guestbook_messages' public async up() { - await this.schema.table(this.tableName, (table) => { - table.dropColumn('message') + await this.schema.table(this.tableName, async (table) => { + await table.dropColumn('message') table.text('message') }) } From 1b1ad8c3aa5c525cd3cd57723bcb4b33d2af6e4a Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 3 Jul 2021 18:41:43 +0200 Subject: [PATCH 042/244] Fix migration Signed-off-by: Arthur DANJOU --- database/migrations/1625330080117_guestbook_messages.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/database/migrations/1625330080117_guestbook_messages.ts b/database/migrations/1625330080117_guestbook_messages.ts index 635da64..7cc8f79 100644 --- a/database/migrations/1625330080117_guestbook_messages.ts +++ b/database/migrations/1625330080117_guestbook_messages.ts @@ -4,8 +4,7 @@ export default class GuestbookMessages extends BaseSchema { protected tableName = 'guestbook_messages' public async up() { - await this.schema.table(this.tableName, async (table) => { - await table.dropColumn('message') + await this.schema.table(this.tableName, (table) => { table.text('message') }) } From debaac81a637d7cac989a8bc221d24b0257d5f01 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 3 Jul 2021 18:42:55 +0200 Subject: [PATCH 043/244] Fix migration Signed-off-by: Arthur DANJOU --- .../1625146912533_guestbook_messages.ts | 2 +- .../1625330080117_guestbook_messages.ts | 17 ----------------- 2 files changed, 1 insertion(+), 18 deletions(-) delete mode 100644 database/migrations/1625330080117_guestbook_messages.ts diff --git a/database/migrations/1625146912533_guestbook_messages.ts b/database/migrations/1625146912533_guestbook_messages.ts index 19f22c2..0e8bd0b 100644 --- a/database/migrations/1625146912533_guestbook_messages.ts +++ b/database/migrations/1625146912533_guestbook_messages.ts @@ -11,7 +11,7 @@ export default class GuestbookMessages extends BaseSchema { .unsigned() .references('users.id') .onDelete('CASCADE') - table.string('message') + table.text('message') table.timestamps(true, true) }) } diff --git a/database/migrations/1625330080117_guestbook_messages.ts b/database/migrations/1625330080117_guestbook_messages.ts deleted file mode 100644 index 7cc8f79..0000000 --- a/database/migrations/1625330080117_guestbook_messages.ts +++ /dev/null @@ -1,17 +0,0 @@ -import BaseSchema from '@ioc:Adonis/Lucid/Schema' - -export default class GuestbookMessages extends BaseSchema { - protected tableName = 'guestbook_messages' - - public async up() { - await this.schema.table(this.tableName, (table) => { - table.text('message') - }) - } - - public async down() { - await this.schema.table(this.tableName, (table) => { - table.dropColumn('message') - }) - } -} From cc049e675a495245e9d1857262c8cb8f484adc19 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 3 Jul 2021 18:46:51 +0200 Subject: [PATCH 044/244] Fix migration Signed-off-by: Arthur DANJOU --- .../migrations/1603020084373_subscribers.ts | 17 --------- database/migrations/1605956543449_files.ts | 18 ---------- database/migrations/1605956711010_posts.ts | 18 ---------- .../migrations/1608409476823_locations.ts | 19 ---------- database/migrations/1608415261417_projects.ts | 20 ----------- database/migrations/1618661863952_forms.ts | 20 ----------- database/migrations/1625078903131_users.ts | 36 ------------------- .../migrations/1625078908619_api_tokens.ts | 21 ----------- 8 files changed, 169 deletions(-) delete mode 100755 database/migrations/1603020084373_subscribers.ts delete mode 100755 database/migrations/1605956543449_files.ts delete mode 100755 database/migrations/1605956711010_posts.ts delete mode 100755 database/migrations/1608409476823_locations.ts delete mode 100755 database/migrations/1608415261417_projects.ts delete mode 100755 database/migrations/1618661863952_forms.ts delete mode 100755 database/migrations/1625078903131_users.ts delete mode 100755 database/migrations/1625078908619_api_tokens.ts diff --git a/database/migrations/1603020084373_subscribers.ts b/database/migrations/1603020084373_subscribers.ts deleted file mode 100755 index f0c605a..0000000 --- a/database/migrations/1603020084373_subscribers.ts +++ /dev/null @@ -1,17 +0,0 @@ -import BaseSchema from '@ioc:Adonis/Lucid/Schema' - -export default class Subscribers extends BaseSchema { - protected tableName = 'subscribers' - - public async up () { - this.schema.createTable(this.tableName, (table) => { - table.increments('id').primary() - table.string('email').notNullable() - table.timestamps(true, true) - }) - } - - public async down () { - this.schema.dropTable(this.tableName) - } -} diff --git a/database/migrations/1605956543449_files.ts b/database/migrations/1605956543449_files.ts deleted file mode 100755 index 54560fb..0000000 --- a/database/migrations/1605956543449_files.ts +++ /dev/null @@ -1,18 +0,0 @@ -import BaseSchema from '@ioc:Adonis/Lucid/Schema' - -export default class Pictures extends BaseSchema { - protected tableName = 'files' - - public async up () { - this.schema.createTable(this.tableName, (table) => { - table.increments('id').primary() - table.string('label').notNullable() - table.string('file_name').notNullable() - table.timestamps(true, true) - }) - } - - public async down () { - this.schema.dropTable(this.tableName) - } -} diff --git a/database/migrations/1605956711010_posts.ts b/database/migrations/1605956711010_posts.ts deleted file mode 100755 index 4a30245..0000000 --- a/database/migrations/1605956711010_posts.ts +++ /dev/null @@ -1,18 +0,0 @@ -import BaseSchema from '@ioc:Adonis/Lucid/Schema' - -export default class Posts extends BaseSchema { - protected tableName = 'posts' - - public async up () { - this.schema.createTable(this.tableName, (table) => { - table.increments('id').primary() - table.string('slug').notNullable() - table.integer('likes').notNullable() - table.timestamps(true, true) - }) - } - - public async down () { - this.schema.dropTable(this.tableName) - } -} diff --git a/database/migrations/1608409476823_locations.ts b/database/migrations/1608409476823_locations.ts deleted file mode 100755 index de1d485..0000000 --- a/database/migrations/1608409476823_locations.ts +++ /dev/null @@ -1,19 +0,0 @@ -import BaseSchema from '@ioc:Adonis/Lucid/Schema' - -export default class Locations extends BaseSchema { - protected tableName = 'locations' - - public async up () { - this.schema.createTable(this.tableName, (table) => { - table.increments('id').primary() - table.string('place') - table.string('left') - table.date('since') - table.timestamps(true, true) - }) - } - - public async down () { - this.schema.dropTable(this.tableName) - } -} diff --git a/database/migrations/1608415261417_projects.ts b/database/migrations/1608415261417_projects.ts deleted file mode 100755 index 85919de..0000000 --- a/database/migrations/1608415261417_projects.ts +++ /dev/null @@ -1,20 +0,0 @@ -import BaseSchema from '@ioc:Adonis/Lucid/Schema' - -export default class Projects extends BaseSchema { - protected tableName = 'projects' - - public async up () { - this.schema.createTable(this.tableName, (table) => { - table.increments('id').primary() - table.string('name') - table.string('description') - table.string('url') - table.integer('progress') - table.timestamps(true, true) - }) - } - - public async down () { - this.schema.dropTable(this.tableName) - } -} diff --git a/database/migrations/1618661863952_forms.ts b/database/migrations/1618661863952_forms.ts deleted file mode 100755 index d59a0ed..0000000 --- a/database/migrations/1618661863952_forms.ts +++ /dev/null @@ -1,20 +0,0 @@ -import BaseSchema from '@ioc:Adonis/Lucid/Schema' - -export default class Forms extends BaseSchema { - protected tableName = 'forms' - - public async up () { - this.schema.createTable(this.tableName, (table) => { - table.increments('id').primary() - table.string('name') - table.string('email') - table.string('subject') - table.string('content') - table.timestamps(true, true) - }) - } - - public async down () { - this.schema.dropTable(this.tableName) - } -} diff --git a/database/migrations/1625078903131_users.ts b/database/migrations/1625078903131_users.ts deleted file mode 100755 index 02db217..0000000 --- a/database/migrations/1625078903131_users.ts +++ /dev/null @@ -1,36 +0,0 @@ -import BaseSchema from '@ioc:Adonis/Lucid/Schema' -import Hash from "@ioc:Adonis/Core/Hash"; - -export default class Users extends BaseSchema { - protected tableName = 'users' - - public async up () { - this.schema.createTable(this.tableName, (table) => { - table.increments('id').primary() - table.string('username', 255).notNullable() - table.string('email', 255).notNullable() - table.string('password', 180).defaultTo(this.randomPassword()).notNullable() - table.boolean('is_confirmed').defaultTo(false).notNullable() - table.string('remember_me_token').defaultTo(null).nullable() - table.string('confirmation_token').defaultTo(null).nullable() - table.timestamps(true, true) - }) - } - - private randomPassword(): string { - let password = '' - const char = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!.:=+-_$*^&@#%ù/àçè()é"' - const size = 64 - for (let i = 0; i < size; i++) { - password += char.charAt(Math.random() * char.length) - } - Hash.make(password).then((value => { - password = value - })) - return password - } - - public async down () { - this.schema.dropTable(this.tableName) - } -} diff --git a/database/migrations/1625078908619_api_tokens.ts b/database/migrations/1625078908619_api_tokens.ts deleted file mode 100755 index 96fd16c..0000000 --- a/database/migrations/1625078908619_api_tokens.ts +++ /dev/null @@ -1,21 +0,0 @@ -import BaseSchema from '@ioc:Adonis/Lucid/Schema' - -export default class ApiTokens extends BaseSchema { - protected tableName = 'api_tokens' - - public async up () { - this.schema.createTable(this.tableName, (table) => { - table.increments('id').primary() - table.integer('user_id').unsigned().references('id').inTable('users').onDelete('CASCADE') - table.string('name').notNullable() - table.string('type').notNullable() - table.string('token', 64).notNullable() - table.timestamp('expires_at', { useTz: true }).nullable() - table.timestamps(true, true) - }) - } - - public async down () { - this.schema.dropTable(this.tableName) - } -} From 7707b426aa92df25fdcf1f1743f00b48bf79ec41 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 5 Jul 2021 00:08:24 +0200 Subject: [PATCH 045/244] fix cors Signed-off-by: Arthur DANJOU --- config/cors.ts | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/config/cors.ts b/config/cors.ts index 1f8e48f..1fec715 100755 --- a/config/cors.ts +++ b/config/cors.ts @@ -5,7 +5,7 @@ * file. */ -import { CorsConfig } from '@ioc:Adonis/Core/Cors' +import {CorsConfig} from '@ioc:Adonis/Core/Cors' const corsConfig: CorsConfig = { /* @@ -44,15 +44,7 @@ const corsConfig: CorsConfig = { | one of the above values. | */ - origin: (origin) => { - // Allow all connection on dev mode - if (process.env.NODE_ENV === 'development') { - return true; - } - - // Production : allow only from your domain - return origin.includes('arthurdanjou.fr'); - }, + origin: '*', /* |-------------------------------------------------------------------------- From d4d659990c8f79a4b1e0c37751bf51330721b3c5 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 5 Jul 2021 12:58:31 +0200 Subject: [PATCH 046/244] fix cors Signed-off-by: Arthur DANJOU --- config/cors.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/config/cors.ts b/config/cors.ts index 1fec715..81d4e46 100755 --- a/config/cors.ts +++ b/config/cors.ts @@ -44,7 +44,13 @@ const corsConfig: CorsConfig = { | one of the above values. | */ - origin: '*', + origin: (origin) => { + if (process.env.NODE_ENV === 'development') { + return true; + } + + return origin.includes('arthurdanjou.fr') + }, /* |-------------------------------------------------------------------------- From f3c642dff4d761d7df2cf3054e926188bb025f6e Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 5 Jul 2021 13:02:07 +0200 Subject: [PATCH 047/244] test cors Signed-off-by: Arthur DANJOU --- app/Controllers/Http/AuthController.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 9a45dae..a7339bd 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -96,7 +96,7 @@ export default class AuthController { const githubUser = await github.user() const user = await this.createUser(githubUser) await auth.use('web').login(user, true) - return response.status(200).send({ + return response.header('Access-Control-Allow-Origin', '*').status(200).send({ user: user }) } From b1e1863468eea1bf9358c4a37463e13a978286fd Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 5 Jul 2021 14:19:47 +0200 Subject: [PATCH 048/244] test cors Signed-off-by: Arthur DANJOU --- app/Controllers/Http/AuthController.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index a7339bd..9a45dae 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -96,7 +96,7 @@ export default class AuthController { const githubUser = await github.user() const user = await this.createUser(githubUser) await auth.use('web').login(user, true) - return response.header('Access-Control-Allow-Origin', '*').status(200).send({ + return response.status(200).send({ user: user }) } From f158ea2cb24d1f7e94cd9013db6656f94e87f930 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 5 Jul 2021 16:00:59 +0200 Subject: [PATCH 049/244] test cors Signed-off-by: Arthur DANJOU --- config/cors.ts | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/config/cors.ts b/config/cors.ts index 81d4e46..994f90f 100755 --- a/config/cors.ts +++ b/config/cors.ts @@ -44,13 +44,7 @@ const corsConfig: CorsConfig = { | one of the above values. | */ - origin: (origin) => { - if (process.env.NODE_ENV === 'development') { - return true; - } - - return origin.includes('arthurdanjou.fr') - }, + origin: true, /* |-------------------------------------------------------------------------- From f12e544a49624bec8e369461bd9e7a36cf03bc0c Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 7 Jul 2021 13:26:15 +0200 Subject: [PATCH 050/244] Working Signed-off-by: Arthur DANJOU --- .adonisrc.json | 9 +- ace-manifest.json | 36 +++++++ app/Controllers/Http/SubscribersController.ts | 2 +- contracts/bouncer.ts | 19 ++++ package.json | 1 + start/bouncer.ts | 57 +++++++++++ start/routes.ts | 95 ------------------- start/routes/artapi.ts | 17 ++++ start/routes/artsite.ts | 15 +++ start/routes/auth.ts | 23 +++++ start/routes/home.ts | 43 +++++++++ start/routes/index.ts | 4 + tsconfig.json | 1 + yarn.lock | 7 ++ 14 files changed, 230 insertions(+), 99 deletions(-) create mode 100644 contracts/bouncer.ts create mode 100644 start/bouncer.ts delete mode 100755 start/routes.ts create mode 100644 start/routes/artapi.ts create mode 100644 start/routes/artsite.ts create mode 100644 start/routes/auth.ts create mode 100644 start/routes/home.ts create mode 100644 start/routes/index.ts diff --git a/.adonisrc.json b/.adonisrc.json index 46f29c9..567be11 100755 --- a/.adonisrc.json +++ b/.adonisrc.json @@ -5,7 +5,8 @@ "@adonisjs/core/build/commands", "@adonisjs/repl/build/commands", "@adonisjs/lucid/build/commands", - "@adonisjs/mail/build/commands" + "@adonisjs/mail/build/commands", + "@adonisjs/bouncer/build/commands" ], "exceptionHandlerNamespace": "App/Exceptions/Handler", "aliases": { @@ -16,7 +17,8 @@ }, "preloads": [ "./start/routes", - "./start/kernel" + "./start/kernel", + "./start/bouncer" ], "providers": [ "./providers/AppProvider", @@ -27,7 +29,8 @@ "@adonisjs/lucid", "@adonisjs/mail", "@adonisjs/view", - "@adonisjs/ally" + "@adonisjs/ally", + "@adonisjs/bouncer" ], "aceProviders": [ "@adonisjs/repl" diff --git a/ace-manifest.json b/ace-manifest.json index b53470f..0b1c0f2 100755 --- a/ace-manifest.json +++ b/ace-manifest.json @@ -278,6 +278,42 @@ ], "aliases": [], "flags": [] + }, + "make:policy": { + "settings": {}, + "commandPath": "@adonisjs/bouncer/build/commands/MakePolicy", + "commandName": "make:policy", + "description": "Make a new bouncer policy", + "args": [ + { + "type": "string", + "propertyName": "name", + "name": "name", + "required": true, + "description": "Name of the policy to create" + } + ], + "aliases": [], + "flags": [ + { + "name": "resource-model", + "propertyName": "resourceModel", + "type": "string", + "description": "Name of the resource model to authorize" + }, + { + "name": "user-model", + "propertyName": "userModel", + "type": "string", + "description": "Name of the user model to be authorized" + }, + { + "name": "actions", + "propertyName": "actions", + "type": "array", + "description": "Actions to implement" + } + ] } }, "aliases": {} diff --git a/app/Controllers/Http/SubscribersController.ts b/app/Controllers/Http/SubscribersController.ts index e26c4b7..0d4c8d8 100755 --- a/app/Controllers/Http/SubscribersController.ts +++ b/app/Controllers/Http/SubscribersController.ts @@ -6,7 +6,7 @@ export default class SubscribersController { public async get ({ response }: HttpContextContract) { return response.status(200).send({ - count: Subscriber.query().count + count: Subscriber.query().count('* as total') }) } diff --git a/contracts/bouncer.ts b/contracts/bouncer.ts new file mode 100644 index 0000000..ae896e7 --- /dev/null +++ b/contracts/bouncer.ts @@ -0,0 +1,19 @@ +/** + * Contract source: https://git.io/Jte3v + * + * Feel free to let us know via PR, if you find something broken in this config + * file. + */ + +import {actions, policies} from '../start/bouncer' + +declare module '@ioc:Adonis/Addons/Bouncer' { + type ApplicationActions = ExtractActionsTypes + type ApplicationPolicies = ExtractPoliciesTypes + + interface ActionsList extends ApplicationActions { + } + + interface PoliciesList extends ApplicationPolicies { + } +} diff --git a/package.json b/package.json index b715ca9..75b811d 100755 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "dependencies": { "@adonisjs/ally": "^4.0.2", "@adonisjs/auth": "^8.0.6", + "@adonisjs/bouncer": "^2.2.4", "@adonisjs/core": "~5.1.8", "@adonisjs/lucid": "^15.0.1", "@adonisjs/mail": "^7.2.1", diff --git a/start/bouncer.ts b/start/bouncer.ts new file mode 100644 index 0000000..b5f9cbb --- /dev/null +++ b/start/bouncer.ts @@ -0,0 +1,57 @@ +/** + * Contract source: https://git.io/Jte3T + * + * Feel free to let us know via PR, if you find something broken in this config + * file. + */ + +import Bouncer from '@ioc:Adonis/Addons/Bouncer' + +/* +|-------------------------------------------------------------------------- +| Bouncer Actions +|-------------------------------------------------------------------------- +| +| Actions allows you to separate your application business logic from the +| authorization logic. Feel free to make use of policies when you find +| yourself creating too many actions +| +| You can define an action using the `.define` method on the Bouncer object +| as shown in the following example +| +| ``` +| Bouncer.define('deletePost', (user: User, post: Post) => { +| return post.user_id === user.id +| }) +| ``` +| +|**************************************************************** +| NOTE: Always export the "actions" const from this file +|**************************************************************** +*/ +export const {actions} = Bouncer + +/* +|-------------------------------------------------------------------------- +| Bouncer Policies +|-------------------------------------------------------------------------- +| +| Policies are self contained actions for a given resource. For example: You +| can create a policy for a "User" resource, one policy for a "Post" resource +| and so on. +| +| The "registerPolicies" accepts a unique policy name and a function to lazy +| import the policy +| +| ``` +| Bouncer.registerPolicies({ +| UserPolicy: () => import('App/Policies/User'), +| PostPolicy: () => import('App/Policies/Post') +| }) +| ``` +| +|**************************************************************** +| NOTE: Always export the "policies" const from this file +|**************************************************************** +*/ +export const {policies} = Bouncer.registerPolicies({}) diff --git a/start/routes.ts b/start/routes.ts deleted file mode 100755 index 8c6f083..0000000 --- a/start/routes.ts +++ /dev/null @@ -1,95 +0,0 @@ -import Application from "@ioc:Adonis/Core/Application"; -import Route from "@ioc:Adonis/Core/Route"; -import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; -import HealthCheck from "@ioc:Adonis/Core/HealthCheck"; -import Env from '@ioc:Adonis/Core/Env' - -const BASE_URL = Env.get('BASE_URL') - -Route.get('/', async ({response}: HttpContextContract) => { - return response.status(200).send({ - domain: BASE_URL, - version: Env.get('API_VERSION'), - source: `${BASE_URL}/source`, - healthCheck: `${BASE_URL}/health`, - routes: { - profile: `${BASE_URL}/profile`, - //stats: `${BASE_URL}/stats`, - states: `${BASE_URL}/states`, - locations: `${BASE_URL}/locations`, - projects: `${BASE_URL}/projects` - } - }) -}) - -Route.get('/source', async ({response}: HttpContextContract) => { - return response.redirect(Env.get('GITHUB_SOURCE')) -}) - -Route.get('/health', async ({response}: HttpContextContract) => { - const report = await HealthCheck.getReport() - const isLive = await HealthCheck.isLive() - const isReady = await HealthCheck.isReady() - return report.healthy ? response.ok({ isLive, isReady, report: report.report }) : response.badRequest({ isLive, isReady, report: report.report }) -}) - -// ArtAPI -Route.get('/profile', 'ProfileController.me') -Route.get('/locations', 'LocationsController.get') -Route.get('/stats', 'StatsController.get') -Route.get('/states', 'StatesController.get') -Route.get('/projects', 'ProjectsController.get') - -Route.group(() => { - Route.get('/discord', 'ProfileController.discord') - Route.post('/form', 'FormsController.send') - Route.post('/states/:state', 'StatesController.set') - - Route.resource('/users', 'UsersController') - Route.resource('/files', 'FileController').only(['store', 'destroy']) - - Route.post('/locations', 'LocationsController.store') - Route.post('/projects', 'ProjectsController.store') - - Route.group(() => { - Route.get('/:slug', 'PostsController.getLikes') - Route.post('/:slug/like', 'PostsController.like') - Route.post('/:slug/unlike', 'PostsController.unlike') - }).prefix('/posts') - - Route.get('/subscribers', 'SubscribersController.get') - Route.post('/subscribers', 'SubscribersController.store') - - Route.get('/guestbook', 'GuestBookController.get') - Route.post('/guestbook', 'GuestBookController.store') - - Route.group(() => { - Route.get('/', 'FileController.index') - Route.get('/:filename', async ({response, params}) => { - response.download(Application.makePath('storage', params.filename)) - }) - }).prefix('/files') - -}).middleware('auth') - -Route.group(() => { - Route.get('/me', 'AuthController.user').middleware('auth') - Route.post('/token', 'AuthController.createInfiniteToken') - - Route.post('/login', 'AuthController.login') - Route.post('/logout', 'AuthController.logout') - - Route.get('/twitter/callback', 'AuthController.twitter') - Route.get('/github/callback', 'AuthController.github') - Route.get('/google/callback', 'AuthController.google') - - Route.get('/twitter', async ({ally}) => { - return ally.use('twitter').redirect() - }) - Route.get('/github', async ({ally}) => { - return ally.use('github').redirect() - }) - Route.get('/google', async ({ally}) => { - return ally.use('google').redirect() - }) -}).prefix('/auth') diff --git a/start/routes/artapi.ts b/start/routes/artapi.ts new file mode 100644 index 0000000..1ca8923 --- /dev/null +++ b/start/routes/artapi.ts @@ -0,0 +1,17 @@ +import Route from "@ioc:Adonis/Core/Route"; +import Application from "@ioc:Adonis/Core/Application"; + +Route.group(() => { + Route.get('/discord', 'ProfileController.discord') + Route.post('/states/:state', 'StatesController.set') + Route.resource('/users', 'UsersController') + Route.post('/locations', 'LocationsController.store') + Route.post('/projects', 'ProjectsController.store') + Route.resource('/files', 'FileController').only(['store', 'destroy']) + Route.group(() => { + Route.get('/', 'FileController.index') + Route.get('/:filename', async ({response, params}) => { + response.download(Application.makePath('storage', params.filename)) + }) + }).prefix('/files') +}).middleware('auth') diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts new file mode 100644 index 0000000..620277f --- /dev/null +++ b/start/routes/artsite.ts @@ -0,0 +1,15 @@ +import Route from "@ioc:Adonis/Core/Route"; + +Route.group(() => { + Route.post('/form', 'FormsController.send') + Route.group(() => { + Route.get('/:slug', 'PostsController.getLikes') + Route.post('/:slug/like', 'PostsController.like') + Route.post('/:slug/unlike', 'PostsController.unlike') + }).prefix('/posts') + Route.get('/subscribers', 'SubscribersController.get') + Route.post('/subscribers', 'SubscribersController.store') + Route.delete('/subscribers', 'SubscribersController.delete') + Route.get('/guestbook', 'GuestBookController.get') + Route.post('/guestbook', 'GuestBookController.store') +}).middleware('auth') diff --git a/start/routes/auth.ts b/start/routes/auth.ts new file mode 100644 index 0000000..add1705 --- /dev/null +++ b/start/routes/auth.ts @@ -0,0 +1,23 @@ +import Route from "@ioc:Adonis/Core/Route"; + +Route.group(() => { + Route.get('/me', 'AuthController.user').middleware('auth') + Route.post('/token', 'AuthController.createInfiniteToken') + + Route.post('/login', 'AuthController.login') + Route.post('/logout', 'AuthController.logout') + + Route.get('/twitter/callback', 'AuthController.twitter') + Route.get('/github/callback', 'AuthController.github') + Route.get('/google/callback', 'AuthController.google') + + Route.get('/twitter', async ({ally}) => { + return ally.use('twitter').redirect() + }) + Route.get('/github', async ({ally}) => { + return ally.use('github').redirect() + }) + Route.get('/google', async ({ally}) => { + return ally.use('google').redirect() + }) +}).prefix('/auth') diff --git a/start/routes/home.ts b/start/routes/home.ts new file mode 100644 index 0000000..45fd8c1 --- /dev/null +++ b/start/routes/home.ts @@ -0,0 +1,43 @@ +import Env from "@ioc:Adonis/Core/Env"; +import Route from "@ioc:Adonis/Core/Route"; +import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; +import HealthCheck from "@ioc:Adonis/Core/HealthCheck"; + +const BASE_URL = Env.get('BASE_URL') + +Route.get('/', async ({response}: HttpContextContract) => { + return response.status(200).send({ + domain: BASE_URL, + version: Env.get('API_VERSION'), + source: `${BASE_URL}/source`, + healthCheck: `${BASE_URL}/health`, + routes: { + profile: `${BASE_URL}/profile`, + //stats: `${BASE_URL}/stats`, + states: `${BASE_URL}/states`, + locations: `${BASE_URL}/locations`, + projects: `${BASE_URL}/projects` + } + }) +}) + +Route.get('/source', async ({response}: HttpContextContract) => { + return response.redirect(Env.get('GITHUB_SOURCE')) +}) + +Route.get('/health', async ({response}: HttpContextContract) => { + const report = await HealthCheck.getReport() + const isLive = await HealthCheck.isLive() + const isReady = await HealthCheck.isReady() + return report.healthy ? response.ok({isLive, isReady, report: report.report}) : response.badRequest({ + isLive, + isReady, + report: report.report + }) +}) + +Route.get('/profile', 'ProfileController.me') +Route.get('/locations', 'LocationsController.get') +Route.get('/stats', 'StatsController.get') +Route.get('/states', 'StatesController.get') +Route.get('/projects', 'ProjectsController.get') diff --git a/start/routes/index.ts b/start/routes/index.ts new file mode 100644 index 0000000..f1efa6f --- /dev/null +++ b/start/routes/index.ts @@ -0,0 +1,4 @@ +import './artsite' +import './artapi' +import './auth' +import './home' diff --git a/tsconfig.json b/tsconfig.json index c350d7c..1194e95 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -35,6 +35,7 @@ "@adonisjs/mail", "@adonisjs/view", "@adonisjs/ally", + "@adonisjs/bouncer" ] } } diff --git a/yarn.lock b/yarn.lock index fea65ad..ba4b044 100644 --- a/yarn.lock +++ b/yarn.lock @@ -83,6 +83,13 @@ fs-extra "^10.0.0" media-typer "^1.1.0" +"@adonisjs/bouncer@^2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@adonisjs/bouncer/-/bouncer-2.2.4.tgz#651428140f71b087ad71850d5f5d4bbc405e953d" + integrity sha512-b8DRojf12qeJ2cdY84fUC/Ab2nhMkL/5+V9JBWP8/pnkbhQA1YjkvjTKLFWeGKSb+o4mKeK6OBW0W5e8v/R1Zw== + dependencies: + "@poppinss/utils" "^3.1.3" + "@adonisjs/config@^3.0.3": version "3.0.3" resolved "https://registry.yarnpkg.com/@adonisjs/config/-/config-3.0.3.tgz#881ef1cd4d7e85050b474288a0eb1ebde9eb4625" From d5922536af96a18a235e513232cf8a77f6d4a1c1 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 7 Jul 2021 13:31:43 +0200 Subject: [PATCH 051/244] Working Signed-off-by: Arthur DANJOU --- app/Controllers/Http/SubscribersController.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Controllers/Http/SubscribersController.ts b/app/Controllers/Http/SubscribersController.ts index 0d4c8d8..8e50e94 100755 --- a/app/Controllers/Http/SubscribersController.ts +++ b/app/Controllers/Http/SubscribersController.ts @@ -5,8 +5,9 @@ import SubscriberValidator from "App/Validators/subscriber/SubscriberValidator"; export default class SubscribersController { public async get ({ response }: HttpContextContract) { + const subscribers = await Subscriber.query() return response.status(200).send({ - count: Subscriber.query().count('* as total') + count: subscribers.length }) } From 2f95bcf56002ddc8997e00207f6dc0df8544753a Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 7 Jul 2021 14:11:58 +0200 Subject: [PATCH 052/244] Working Signed-off-by: Arthur DANJOU --- app/Controllers/Http/SubscribersController.ts | 6 ++++++ app/Validators/subscriber/SubscriberValidator.ts | 5 ++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/Controllers/Http/SubscribersController.ts b/app/Controllers/Http/SubscribersController.ts index 8e50e94..892b33d 100755 --- a/app/Controllers/Http/SubscribersController.ts +++ b/app/Controllers/Http/SubscribersController.ts @@ -13,6 +13,12 @@ export default class SubscribersController { public async store({request, response}: HttpContextContract) { const data = await request.validate(SubscriberValidator) + const email = await Subscriber.findBy('email', data.email) + if (email) { + return response.status(201).send({ + message: 'Subscriber already exists' + }) + } await Subscriber.create(data) return response.status(200).send({ message: 'Subscriber successfully registered!' diff --git a/app/Validators/subscriber/SubscriberValidator.ts b/app/Validators/subscriber/SubscriberValidator.ts index 6c44bed..f06f1a5 100755 --- a/app/Validators/subscriber/SubscriberValidator.ts +++ b/app/Validators/subscriber/SubscriberValidator.ts @@ -1,4 +1,4 @@ -import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import {rules, schema} from '@ioc:Adonis/Core/Validator' export default class SubscriberValidator { @@ -7,8 +7,7 @@ export default class SubscriberValidator { public schema = schema.create({ email: schema.string({ trim: true }, [ - rules.email(), - rules.unique({table: 'subscribers', column: 'email'}) + rules.email() ]) }) From 26bdce87575129b3a026049e7d81a3180bab1049 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 8 Jul 2021 19:30:26 +0200 Subject: [PATCH 053/244] Working Signed-off-by: Arthur DANJOU --- config/cors.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/cors.ts b/config/cors.ts index 994f90f..98b2c86 100755 --- a/config/cors.ts +++ b/config/cors.ts @@ -44,7 +44,7 @@ const corsConfig: CorsConfig = { | one of the above values. | */ - origin: true, + origin: 'https://arthurdanjou.fr', /* |-------------------------------------------------------------------------- From d103d1a78d3c89bccea8125cc78ce169bcb13923 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 8 Jul 2021 19:36:06 +0200 Subject: [PATCH 054/244] Working Signed-off-by: Arthur DANJOU --- config/app.ts | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/config/app.ts b/config/app.ts index 6968b02..8ffbf88 100755 --- a/config/app.ts +++ b/config/app.ts @@ -7,10 +7,10 @@ import proxyAddr from 'proxy-addr' import Env from '@ioc:Adonis/Core/Env' -import { ServerConfig } from '@ioc:Adonis/Core/Server' -import { LoggerConfig } from '@ioc:Adonis/Core/Logger' -import { ProfilerConfig } from '@ioc:Adonis/Core/Profiler' -import { ValidatorConfig } from '@ioc:Adonis/Core/Validator' +import {ServerConfig} from '@ioc:Adonis/Core/Server' +import {LoggerConfig} from '@ioc:Adonis/Core/Logger' +import {ProfilerConfig} from '@ioc:Adonis/Core/Profiler' +import {ValidatorConfig} from '@ioc:Adonis/Core/Validator' /* |-------------------------------------------------------------------------- @@ -106,8 +106,8 @@ export const http: ServerConfig = { path: '/', maxAge: '2h', httpOnly: true, - secure: false, - sameSite: false, + secure: true, + sameSite: true, }, /* From ee6e73111d62b46efdcdf75893dfb2cb1a8bac5b Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 8 Jul 2021 19:39:15 +0200 Subject: [PATCH 055/244] Working Signed-off-by: Arthur DANJOU --- config/cors.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/config/cors.ts b/config/cors.ts index 98b2c86..e1dadd5 100755 --- a/config/cors.ts +++ b/config/cors.ts @@ -44,7 +44,9 @@ const corsConfig: CorsConfig = { | one of the above values. | */ - origin: 'https://arthurdanjou.fr', + origin: (theme) => { + return theme.includes('arthurdanjou.fr') + }, /* |-------------------------------------------------------------------------- From cea3f81feb0afb6410700cfa2f93cc32c81b9ec4 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 8 Jul 2021 19:43:22 +0200 Subject: [PATCH 056/244] Working Signed-off-by: Arthur DANJOU --- config/cors.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/config/cors.ts b/config/cors.ts index e1dadd5..1fec715 100755 --- a/config/cors.ts +++ b/config/cors.ts @@ -44,9 +44,7 @@ const corsConfig: CorsConfig = { | one of the above values. | */ - origin: (theme) => { - return theme.includes('arthurdanjou.fr') - }, + origin: '*', /* |-------------------------------------------------------------------------- From 77d229753140787b8e63a4c1200f6494bb78e3b1 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 8 Jul 2021 19:51:05 +0200 Subject: [PATCH 057/244] Working Signed-off-by: Arthur DANJOU --- config/cors.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/config/cors.ts b/config/cors.ts index 1fec715..7e8ce32 100755 --- a/config/cors.ts +++ b/config/cors.ts @@ -44,7 +44,9 @@ const corsConfig: CorsConfig = { | one of the above values. | */ - origin: '*', + origin: (origin => { + return origin.includes('arthurdanjou.fr') + }), /* |-------------------------------------------------------------------------- From 68a8876032135c87b34fc6bf805aedc04e6bd732 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 9 Jul 2021 11:56:49 +0200 Subject: [PATCH 058/244] Working Signed-off-by: Arthur DANJOU --- config/cors.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/config/cors.ts b/config/cors.ts index 7e8ce32..1fec715 100755 --- a/config/cors.ts +++ b/config/cors.ts @@ -44,9 +44,7 @@ const corsConfig: CorsConfig = { | one of the above values. | */ - origin: (origin => { - return origin.includes('arthurdanjou.fr') - }), + origin: '*', /* |-------------------------------------------------------------------------- From ac1740d8e57b60b790c78492dd4f733426e62bf0 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 9 Jul 2021 12:00:45 +0200 Subject: [PATCH 059/244] Working Signed-off-by: Arthur DANJOU --- config/cors.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/config/cors.ts b/config/cors.ts index 1fec715..a86bc8b 100755 --- a/config/cors.ts +++ b/config/cors.ts @@ -44,7 +44,12 @@ const corsConfig: CorsConfig = { | one of the above values. | */ - origin: '*', + origin: (origin => { + if (process.env.NODE_ENV === 'development') { + return true + } + return origin.includes('arthurdanjou.fr') + }), /* |-------------------------------------------------------------------------- From a157b0d7d5f629b4f25bde6e42ad1f549deb1a56 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 9 Jul 2021 12:34:19 +0200 Subject: [PATCH 060/244] Working Signed-off-by: Arthur DANJOU --- app/Controllers/Http/AuthController.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 9a45dae..c3d2c2d 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -96,9 +96,12 @@ export default class AuthController { const githubUser = await github.user() const user = await this.createUser(githubUser) await auth.use('web').login(user, true) - return response.status(200).send({ - user: user - }) + return response + .status(200) + .header('Access-Control-Allow-Origin', '*') + .send({ + user: user + }) } public async google ({ ally, auth, response, }: HttpContextContract) { From 7a5b4a7b38a90d3f6b8a8aed36cc0473a6871ad3 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 9 Jul 2021 19:23:42 +0200 Subject: [PATCH 061/244] Working Signed-off-by: Arthur DANJOU --- config/session.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/session.ts b/config/session.ts index fe191f3..e3dab72 100755 --- a/config/session.ts +++ b/config/session.ts @@ -78,6 +78,8 @@ const sessionConfig: SessionConfig = { path: '/', httpOnly: true, sameSite: true, + domain: '.arthurdanjou.fr', + secure: true }, /* From 48cb456c60daf8d005da35ea90f0d6261fc4bf56 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 9 Jul 2021 21:06:37 +0200 Subject: [PATCH 062/244] Working Signed-off-by: Arthur DANJOU --- .env.example | 7 -- app/Controllers/Http/AuthController.ts | 101 -------------------- app/Controllers/Http/GuestBookController.ts | 24 ++++- app/Validators/guestbook/GuestValidator.ts | 3 + config/ally.ts | 56 ----------- contracts/ally.ts | 23 ----- env.ts | 8 -- start/routes/artsite.ts | 3 +- start/routes/auth.ts | 15 --- 9 files changed, 24 insertions(+), 216 deletions(-) delete mode 100755 config/ally.ts delete mode 100755 contracts/ally.ts diff --git a/.env.example b/.env.example index b7379ff..14e695b 100755 --- a/.env.example +++ b/.env.example @@ -32,10 +32,3 @@ SMTP_HOST= SMTP_PORT= SMTP_USERNAME= SMTP_PASSWORD= - -GITHUB_CLIENT_ID= -GITHUB_CLIENT_SECRET= -GOOGLE_CLIENT_ID= -GOOGLE_CLIENT_SECRET= -TWITTER_CLIENT_ID= -TWITTER_CLIENT_SECRET= diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index c3d2c2d..0211a9c 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -1,6 +1,5 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import User from "App/Models/User"; -import {AllyUserContract} from "@ioc:Adonis/Addons/Ally"; export default class AuthController { @@ -43,104 +42,4 @@ export default class AuthController { }) } - public async twitter ({ ally, auth, response }: HttpContextContract) { - const twitter = ally.use('twitter') - - if (twitter.accessDenied()) { - return response.status(403).send({ - message: 'Access Denied!' - }) - } - - if (twitter.stateMisMatch()) { - return response.status(405).send({ - message: 'Request expired. Retry again!' - }) - } - - if (twitter.hasError()) { - return response.status(500).send({ - message: twitter.getError() - }) - } - - const twitterUser = await twitter.user() - const user = await this.createUser(twitterUser) - await auth.use('web').login(user, true) - return response.status(200).send({ - user: user - }) - } - - public async github ({ ally, auth, response }: HttpContextContract) { - const github = ally.use('github') - - if (github.accessDenied()) { - return response.status(403).send({ - message: 'Access Denied!' - }) - } - - if (github.stateMisMatch()) { - return response.status(405).send({ - message: 'Request expired. Retry again!' - }) - } - - if (github.hasError()) { - return response.status(500).send({ - message: github.getError() - }) - } - - const githubUser = await github.user() - const user = await this.createUser(githubUser) - await auth.use('web').login(user, true) - return response - .status(200) - .header('Access-Control-Allow-Origin', '*') - .send({ - user: user - }) - } - - public async google ({ ally, auth, response, }: HttpContextContract) { - const google = ally.use('google') - - if (google.accessDenied()) { - return response.status(403).send({ - message: 'Access Denied!' - }) - } - - if (google.stateMisMatch()) { - return response.status(405).send({ - message: 'Request expired. Retry again!' - }) - } - - if (google.hasError()) { - return response.status(500).send({ - message: google.getError() - }) - } - - const googleUser = await google.user() - const user = await this.createUser(googleUser) - await auth.use('web').login(user, true) - return response.status(200).send({ - user: user - }) - } - - public async createUser (allyUser: AllyUserContract): Promise { - return await User.firstOrCreate({ - email: allyUser.email!, - }, { - email: allyUser.email!, - username: allyUser.name, - isConfirmed: allyUser.emailVerificationState === 'verified' - }) - } - } diff --git a/app/Controllers/Http/GuestBookController.ts b/app/Controllers/Http/GuestBookController.ts index 1b04817..d4ab39b 100755 --- a/app/Controllers/Http/GuestBookController.ts +++ b/app/Controllers/Http/GuestBookController.ts @@ -1,10 +1,11 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import GuestValidator from "App/Validators/guestbook/GuestValidator"; import GuestbookMessage from "App/Models/GuestbookMessage"; +import User from "App/Models/User"; export default class GuestBookController { - public async get({response}: HttpContextContract) { + public async index ({response}: HttpContextContract) { const guestbook_messages = await GuestbookMessage .query() .preload('user') @@ -14,18 +15,31 @@ export default class GuestBookController { }) } - public async store({request, auth, response}: HttpContextContract) { + public async store ({request, response}: HttpContextContract) { const data = await request.validate(GuestValidator) - const user = await auth.user! + let user = await User.findBy('email', data.email) + if (!user) { + user = await User.create({ + email: data.email, + }) + } const guestbook_message = user.related('guestbook_message').firstOrCreate({ userId: user.id }, { - ...data, - userId: user.id + userId: user.id, + message: data.message }) return response.status(200).send({ guestbook_message }) } + public async get ({params, response}: HttpContextContract) { + const email = await params.email + const guestbook_message = await GuestbookMessage.findBy('email', email) + return response.status(200).send({ + signed: guestbook_message !== null + }) + } + } diff --git a/app/Validators/guestbook/GuestValidator.ts b/app/Validators/guestbook/GuestValidator.ts index 6c075fc..48579c3 100755 --- a/app/Validators/guestbook/GuestValidator.ts +++ b/app/Validators/guestbook/GuestValidator.ts @@ -8,6 +8,9 @@ export default class GuestValidator { public schema = schema.create({ message: schema.string({}, [ rules.required() + ]), + email: schema.string({}, [ + rules.email() ]) }) diff --git a/config/ally.ts b/config/ally.ts deleted file mode 100755 index 91c14d3..0000000 --- a/config/ally.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Config source: https://git.io/JOdi5 - * - * Feel free to let us know via PR, if you find something broken in this config - * file. - */ - -import Env from '@ioc:Adonis/Core/Env' -import { AllyConfig } from '@ioc:Adonis/Addons/Ally' - -/* -|-------------------------------------------------------------------------- -| Ally Config -|-------------------------------------------------------------------------- -| -| The `AllyConfig` relies on the `SocialProviders` interface which is -| defined inside `contracts/ally.ts` file. -| -*/ -const allyConfig: AllyConfig = { - /* - |-------------------------------------------------------------------------- - | Github driver - |-------------------------------------------------------------------------- - */ - github: { - driver: 'github', - clientId: Env.get('GITHUB_CLIENT_ID'), - clientSecret: Env.get('GITHUB_CLIENT_SECRET'), - callbackUrl: `${Env.get('BASE_URL')}/auth/github/callback` - }, - /* - |-------------------------------------------------------------------------- - | Google driver - |-------------------------------------------------------------------------- - */ - google: { - driver: 'google', - clientId: Env.get('GOOGLE_CLIENT_ID'), - clientSecret: Env.get('GOOGLE_CLIENT_SECRET'), - callbackUrl: `${Env.get('BASE_URL')}/auth/google/callback` - }, - /* - |-------------------------------------------------------------------------- - | Twitter driver - |-------------------------------------------------------------------------- - */ - twitter: { - driver: 'twitter', - clientId: Env.get('TWITTER_CLIENT_ID'), - clientSecret: Env.get('TWITTER_CLIENT_SECRET'), - callbackUrl: `${Env.get('BASE_URL')}/auth/twitter/callback` - }, -} - -export default allyConfig diff --git a/contracts/ally.ts b/contracts/ally.ts deleted file mode 100755 index ee66084..0000000 --- a/contracts/ally.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Contract source: https://git.io/JOdiQ - * - * Feel free to let us know via PR, if you find something broken in this contract - * file. - */ - -declare module '@ioc:Adonis/Addons/Ally' { - interface SocialProviders { - github: { - config: GithubDriverConfig - implementation: GithubDriverContract - } - google: { - config: GoogleDriverConfig - implementation: GoogleDriverContract - } - twitter: { - config: TwitterDriverConfig - implementation: TwitterDriverContract - } - } -} diff --git a/env.ts b/env.ts index a16ebe6..f95779c 100755 --- a/env.ts +++ b/env.ts @@ -56,12 +56,4 @@ export default Env.rules({ SMTP_PORT: Env.schema.number(), SMTP_USERNAME: Env.schema.string(), SMTP_PASSWORD: Env.schema.string(), - - //Socials Authentication - GOOGLE_CLIENT_ID: Env.schema.string(), - GOOGLE_CLIENT_SECRET: Env.schema.string(), - TWITTER_CLIENT_ID: Env.schema.string(), - TWITTER_CLIENT_SECRET: Env.schema.string(), - GITHUB_CLIENT_ID: Env.schema.string(), - GITHUB_CLIENT_SECRET: Env.schema.string(), }) diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts index 620277f..6619fd6 100644 --- a/start/routes/artsite.ts +++ b/start/routes/artsite.ts @@ -10,6 +10,7 @@ Route.group(() => { Route.get('/subscribers', 'SubscribersController.get') Route.post('/subscribers', 'SubscribersController.store') Route.delete('/subscribers', 'SubscribersController.delete') - Route.get('/guestbook', 'GuestBookController.get') + Route.get('/guestbook', 'GuestBookController.index') Route.post('/guestbook', 'GuestBookController.store') + Route.post('/guestbook/:email', 'GuestBookController.store') }).middleware('auth') diff --git a/start/routes/auth.ts b/start/routes/auth.ts index add1705..078fddd 100644 --- a/start/routes/auth.ts +++ b/start/routes/auth.ts @@ -3,21 +3,6 @@ import Route from "@ioc:Adonis/Core/Route"; Route.group(() => { Route.get('/me', 'AuthController.user').middleware('auth') Route.post('/token', 'AuthController.createInfiniteToken') - Route.post('/login', 'AuthController.login') Route.post('/logout', 'AuthController.logout') - - Route.get('/twitter/callback', 'AuthController.twitter') - Route.get('/github/callback', 'AuthController.github') - Route.get('/google/callback', 'AuthController.google') - - Route.get('/twitter', async ({ally}) => { - return ally.use('twitter').redirect() - }) - Route.get('/github', async ({ally}) => { - return ally.use('github').redirect() - }) - Route.get('/google', async ({ally}) => { - return ally.use('google').redirect() - }) }).prefix('/auth') From 97f25b028381ca35411b5267abe2c6c8ef53e3d3 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 9 Jul 2021 21:07:44 +0200 Subject: [PATCH 063/244] Working Signed-off-by: Arthur DANJOU --- .adonisrc.json | 1 - package.json | 1 - 2 files changed, 2 deletions(-) diff --git a/.adonisrc.json b/.adonisrc.json index 567be11..6085ebb 100755 --- a/.adonisrc.json +++ b/.adonisrc.json @@ -29,7 +29,6 @@ "@adonisjs/lucid", "@adonisjs/mail", "@adonisjs/view", - "@adonisjs/ally", "@adonisjs/bouncer" ], "aceProviders": [ diff --git a/package.json b/package.json index 75b811d..65844b0 100755 --- a/package.json +++ b/package.json @@ -19,7 +19,6 @@ "youch-terminal": "^1.1.1" }, "dependencies": { - "@adonisjs/ally": "^4.0.2", "@adonisjs/auth": "^8.0.6", "@adonisjs/bouncer": "^2.2.4", "@adonisjs/core": "~5.1.8", From 9f5958976717c1930cd82e81e12923b60fd9e0c4 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 9 Jul 2021 21:42:18 +0200 Subject: [PATCH 064/244] Working Signed-off-by: Arthur DANJOU --- .adonisrc.json | 3 +- .env.example | 9 ++ app/Controllers/Http/AuthController.ts | 127 +++++++++++++++++++++++++ env.ts | 11 ++- package.json | 1 + start/routes/auth.ts | 20 ++++ yarn.lock | 8 +- 7 files changed, 173 insertions(+), 6 deletions(-) diff --git a/.adonisrc.json b/.adonisrc.json index 6085ebb..18d531a 100755 --- a/.adonisrc.json +++ b/.adonisrc.json @@ -29,7 +29,8 @@ "@adonisjs/lucid", "@adonisjs/mail", "@adonisjs/view", - "@adonisjs/bouncer" + "@adonisjs/bouncer", + "@adonisjs/ally" ], "aceProviders": [ "@adonisjs/repl" diff --git a/.env.example b/.env.example index 14e695b..bbaf584 100755 --- a/.env.example +++ b/.env.example @@ -32,3 +32,12 @@ SMTP_HOST= SMTP_PORT= SMTP_USERNAME= SMTP_PASSWORD= + +GITHUB_CLIENT_ID=5d7e09bd7929fca2238b +GITHUB_CLIENT_SECRET=4f0276c920f40d68fda18c2da5e46fb2484d054b +GOOGLE_CLIENT_ID=566561222621-rel6katd1hec90a8fb16m0e3c6jag9pk.apps.googleusercontent.com +GOOGLE_CLIENT_SECRET=hQvN6QSK2fzICyVkdoHpa45L +TWITTER_CLIENT_ID=CZbgo8uXXcp35aBRy0fCwemjl +TWITTER_CLIENT_SECRET=yvWqlsmgr3ImxH32xUewAm1nhzl7O5JVf5vcWoixmFmGncqlsg +DISCORD_CLIENT_ID=610128476283863060 +DISCORD_CLIENT_SECRET=9pE76kBr76kIDDK80ScxFe0cC0J-giGI diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 0211a9c..6c8736e 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -1,5 +1,6 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import User from "App/Models/User"; +import {AllyUserContract} from "@ioc:Adonis/Addons/Ally"; export default class AuthController { @@ -42,4 +43,130 @@ export default class AuthController { }) } + public async twitter ({ ally, auth, response }: HttpContextContract) { + const twitter = ally.use('twitter') + + if (twitter.accessDenied()) { + return response.status(403).send({ + message: 'Access Denied!' + }) + } + + if (twitter.stateMisMatch()) { + return response.status(405).send({ + message: 'Request expired. Retry again!' + }) + } + + if (twitter.hasError()) { + return response.status(500).send({ + message: twitter.getError() + }) + } + + const twitterUser = await twitter.user() + const user = await this.createUser(twitterUser) + await auth.use('web').login(user, true) + return response.status(200).send({ + user: user + }) + } + + public async discord ({ ally, auth, response }: HttpContextContract) { + const discord = ally.use('discord') + + if (discord.accessDenied()) { + return response.status(403).send({ + message: 'Access Denied!' + }) + } + + if (discord.stateMisMatch()) { + return response.status(405).send({ + message: 'Request expired. Retry again!' + }) + } + + if (discord.hasError()) { + return response.status(500).send({ + message: discord.getError() + }) + } + + const discordUser = await discord.user() + const user = await this.createUser(discordUser) + await auth.use('web').login(user, true) + return response.status(200).send({ + user: user + }) + } + + public async github ({ ally, auth, response }: HttpContextContract) { + const github = ally.use('github') + + if (github.accessDenied()) { + return response.status(403).send({ + message: 'Access Denied!' + }) + } + + if (github.stateMisMatch()) { + return response.status(405).send({ + message: 'Request expired. Retry again!' + }) + } + + if (github.hasError()) { + return response.status(500).send({ + message: github.getError() + }) + } + + const githubUser = await github.user() + const user = await this.createUser(githubUser) + await auth.use('web').login(user, true) + return response.status(200).send({ + user: user + }) + } + + public async google ({ ally, auth, response, }: HttpContextContract) { + const google = ally.use('google') + + if (google.accessDenied()) { + return response.status(403).send({ + message: 'Access Denied!' + }) + } + + if (google.stateMisMatch()) { + return response.status(405).send({ + message: 'Request expired. Retry again!' + }) + } + + if (google.hasError()) { + return response.status(500).send({ + message: google.getError() + }) + } + + const googleUser = await google.user() + const user = await this.createUser(googleUser) + await auth.use('web').login(user, true) + return response.status(200).send({ + user: user + }) + } + + public async createUser (allyUser: AllyUserContract): Promise { + return await User.firstOrCreate({ + email: allyUser.email!, + }, { + email: allyUser.email!, + username: allyUser.name, + isConfirmed: allyUser.emailVerificationState === 'verified' + }) + } + } diff --git a/env.ts b/env.ts index f95779c..3bd8c5c 100755 --- a/env.ts +++ b/env.ts @@ -15,7 +15,6 @@ import Env from '@ioc:Adonis/Core/Env' export default Env.rules({ - //App HOST: Env.schema.string(), PORT: Env.schema.number(), @@ -56,4 +55,14 @@ export default Env.rules({ SMTP_PORT: Env.schema.number(), SMTP_USERNAME: Env.schema.string(), SMTP_PASSWORD: Env.schema.string(), + + //Socials Authentication + GOOGLE_CLIENT_ID: Env.schema.string(), + GOOGLE_CLIENT_SECRET: Env.schema.string(), + TWITTER_CLIENT_ID: Env.schema.string(), + TWITTER_CLIENT_SECRET: Env.schema.string(), + GITHUB_CLIENT_ID: Env.schema.string(), + GITHUB_CLIENT_SECRET: Env.schema.string(), + DISCORD_CLIENT_ID: Env.schema.string(), + DISCORD_CLIENT_SECRET: Env.schema.string(), }) diff --git a/package.json b/package.json index 65844b0..44cf9fb 100755 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "youch-terminal": "^1.1.1" }, "dependencies": { + "@adonisjs/ally": "^4.1.0", "@adonisjs/auth": "^8.0.6", "@adonisjs/bouncer": "^2.2.4", "@adonisjs/core": "~5.1.8", diff --git a/start/routes/auth.ts b/start/routes/auth.ts index 078fddd..deb99a1 100644 --- a/start/routes/auth.ts +++ b/start/routes/auth.ts @@ -3,6 +3,26 @@ import Route from "@ioc:Adonis/Core/Route"; Route.group(() => { Route.get('/me', 'AuthController.user').middleware('auth') Route.post('/token', 'AuthController.createInfiniteToken') + Route.post('/login', 'AuthController.login') Route.post('/logout', 'AuthController.logout') + + Route.get('/twitter/callback', 'AuthController.twitter') + Route.get('/github/callback', 'AuthController.github') + Route.get('/google/callback', 'AuthController.google') + Route.get('/discord/callback', 'AuthController.discord') + + Route.get('/twitter', async ({ally}) => { + return ally.use('twitter').redirect() + }) + Route.get('/github', async ({ally}) => { + return ally.use('github').redirect() + }) + Route.get('/google', async ({ally}) => { + return ally.use('google').redirect() + }) + Route.get('/discord', async ({ally}) => { + return ally.use('discord').redirect() + }) }).prefix('/auth') + diff --git a/yarn.lock b/yarn.lock index ba4b044..0b300cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,10 +17,10 @@ slash "^3.0.0" term-size "^2.2.1" -"@adonisjs/ally@^4.0.2": - version "4.0.2" - resolved "https://registry.yarnpkg.com/@adonisjs/ally/-/ally-4.0.2.tgz#9a9c16de810fa96b726d2cfc772343740d486405" - integrity sha512-p8dUK//l+isTGLiiO9IPaxfAftuCYSt9t2oY4Wz2Dj2mfEtcvZY5OcdCKFYcHeN1Ax47HbLXIooq+en7rqq5PQ== +"@adonisjs/ally@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@adonisjs/ally/-/ally-4.1.0.tgz#6811c77c7862f78279d11f6be52792b0837c1829" + integrity sha512-IgyUoV9U/a8iTuRBnR0US8/qV5w+d087dqDdDVbgevGVAPyzwci2KeBGBteNzbZDuF1lhfMAz76rL9rSSbWR9A== dependencies: "@poppinss/oauth-client" "^2.0.4" "@poppinss/utils" "^3.1.3" From faf74b0dfb3999ea26c61452416e7886274c08e3 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 9 Jul 2021 21:44:34 +0200 Subject: [PATCH 065/244] Working Signed-off-by: Arthur DANJOU --- config/ally.ts | 67 +++++++++++++++++++++++++++++++++++++++++++++++ contracts/ally.ts | 27 +++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 config/ally.ts create mode 100644 contracts/ally.ts diff --git a/config/ally.ts b/config/ally.ts new file mode 100644 index 0000000..02ebee3 --- /dev/null +++ b/config/ally.ts @@ -0,0 +1,67 @@ +/** + * Config source: https://git.io/JOdi5 + * + * Feel free to let us know via PR, if you find something broken in this config + * file. + */ + +import Env from '@ioc:Adonis/Core/Env' +import {AllyConfig} from '@ioc:Adonis/Addons/Ally' + +/* +|-------------------------------------------------------------------------- +| Ally Config +|-------------------------------------------------------------------------- +| +| The `AllyConfig` relies on the `SocialProviders` interface which is +| defined inside `contracts/ally.ts` file. +| +*/ +const allyConfig: AllyConfig = { + /* + |-------------------------------------------------------------------------- + | Github driver + |-------------------------------------------------------------------------- + */ + github: { + driver: 'github', + clientId: Env.get('GITHUB_CLIENT_ID'), + clientSecret: Env.get('GITHUB_CLIENT_SECRET'), + callbackUrl: 'http://localhost:3333/github/callback', + }, + /* + |-------------------------------------------------------------------------- + | Google driver + |-------------------------------------------------------------------------- + */ + google: { + driver: 'google', + clientId: Env.get('GOOGLE_CLIENT_ID'), + clientSecret: Env.get('GOOGLE_CLIENT_SECRET'), + callbackUrl: 'http://localhost:3333/google/callback', + }, + /* + |-------------------------------------------------------------------------- + | Twitter driver + |-------------------------------------------------------------------------- + */ + twitter: { + driver: 'twitter', + clientId: Env.get('TWITTER_CLIENT_ID'), + clientSecret: Env.get('TWITTER_CLIENT_SECRET'), + callbackUrl: 'http://localhost:3333/twitter/callback', + }, + /* + |-------------------------------------------------------------------------- + | Discord driver + |-------------------------------------------------------------------------- + */ + discord: { + driver: 'discord', + clientId: Env.get('DISCORD_CLIENT_ID'), + clientSecret: Env.get('DISCORD_CLIENT_SECRET'), + callbackUrl: 'http://localhost:3333/discord/callback', + }, +} + +export default allyConfig diff --git a/contracts/ally.ts b/contracts/ally.ts new file mode 100644 index 0000000..e9de077 --- /dev/null +++ b/contracts/ally.ts @@ -0,0 +1,27 @@ +/** + * Contract source: https://git.io/JOdiQ + * + * Feel free to let us know via PR, if you find something broken in this contract + * file. + */ + +declare module '@ioc:Adonis/Addons/Ally' { + interface SocialProviders { + github: { + config: GithubDriverConfig + implementation: GithubDriverContract + } + google: { + config: GoogleDriverConfig + implementation: GoogleDriverContract + } + twitter: { + config: TwitterDriverConfig + implementation: TwitterDriverContract + } + discord: { + config: DiscordDriverConfig + implementation: DiscordDriverContract + } + } +} From 7c74806e2552c70ae602d6c980952c5eb71c63d5 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 9 Jul 2021 21:45:37 +0200 Subject: [PATCH 066/244] Working Signed-off-by: Arthur DANJOU --- .env.example | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.env.example b/.env.example index bbaf584..48cc2e0 100755 --- a/.env.example +++ b/.env.example @@ -33,11 +33,11 @@ SMTP_PORT= SMTP_USERNAME= SMTP_PASSWORD= -GITHUB_CLIENT_ID=5d7e09bd7929fca2238b -GITHUB_CLIENT_SECRET=4f0276c920f40d68fda18c2da5e46fb2484d054b -GOOGLE_CLIENT_ID=566561222621-rel6katd1hec90a8fb16m0e3c6jag9pk.apps.googleusercontent.com -GOOGLE_CLIENT_SECRET=hQvN6QSK2fzICyVkdoHpa45L -TWITTER_CLIENT_ID=CZbgo8uXXcp35aBRy0fCwemjl -TWITTER_CLIENT_SECRET=yvWqlsmgr3ImxH32xUewAm1nhzl7O5JVf5vcWoixmFmGncqlsg -DISCORD_CLIENT_ID=610128476283863060 -DISCORD_CLIENT_SECRET=9pE76kBr76kIDDK80ScxFe0cC0J-giGI +GITHUB_CLIENT_ID= +GITHUB_CLIENT_SECRET= +GOOGLE_CLIENT_ID= +GOOGLE_CLIENT_SECRET= +TWITTER_CLIENT_ID= +TWITTER_CLIENT_SECRET= +DISCORD_CLIENT_ID= +DISCORD_CLIENT_SECRET= From d176374116ea1331e6e6463a6da1a6a6073d87a9 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 9 Jul 2021 21:48:25 +0200 Subject: [PATCH 067/244] Change callback urls Signed-off-by: Arthur DANJOU --- config/ally.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config/ally.ts b/config/ally.ts index 02ebee3..426eb3e 100644 --- a/config/ally.ts +++ b/config/ally.ts @@ -27,7 +27,7 @@ const allyConfig: AllyConfig = { driver: 'github', clientId: Env.get('GITHUB_CLIENT_ID'), clientSecret: Env.get('GITHUB_CLIENT_SECRET'), - callbackUrl: 'http://localhost:3333/github/callback', + callbackUrl: `${Env.get('BASE_URL')}/auth/github/callback`, }, /* |-------------------------------------------------------------------------- @@ -38,7 +38,7 @@ const allyConfig: AllyConfig = { driver: 'google', clientId: Env.get('GOOGLE_CLIENT_ID'), clientSecret: Env.get('GOOGLE_CLIENT_SECRET'), - callbackUrl: 'http://localhost:3333/google/callback', + callbackUrl: `${Env.get('BASE_URL')}/auth/google/callback`, }, /* |-------------------------------------------------------------------------- @@ -49,7 +49,7 @@ const allyConfig: AllyConfig = { driver: 'twitter', clientId: Env.get('TWITTER_CLIENT_ID'), clientSecret: Env.get('TWITTER_CLIENT_SECRET'), - callbackUrl: 'http://localhost:3333/twitter/callback', + callbackUrl: `${Env.get('BASE_URL')}/auth/twitter/callback`, }, /* |-------------------------------------------------------------------------- @@ -60,7 +60,7 @@ const allyConfig: AllyConfig = { driver: 'discord', clientId: Env.get('DISCORD_CLIENT_ID'), clientSecret: Env.get('DISCORD_CLIENT_SECRET'), - callbackUrl: 'http://localhost:3333/discord/callback', + callbackUrl: `${Env.get('BASE_URL')}/auth/discord/callback`, }, } From deed45385b3d55e635d77161fe484eedb33ee721 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 20 Jul 2021 21:51:19 +0200 Subject: [PATCH 068/244] Remove Adonisjs Ally Signed-off-by: Arthur DANJOU --- .adonisrc.json | 1 - .env.example | 9 -- app/Controllers/Http/AuthController.ts | 127 ------------------------- config/ally.ts | 67 ------------- contracts/ally.ts | 27 ------ package.json | 1 - start/routes/auth.ts | 18 ---- tsconfig.json | 1 - yarn.lock | 17 ---- 9 files changed, 268 deletions(-) delete mode 100644 config/ally.ts delete mode 100644 contracts/ally.ts diff --git a/.adonisrc.json b/.adonisrc.json index 18d531a..fce037e 100755 --- a/.adonisrc.json +++ b/.adonisrc.json @@ -30,7 +30,6 @@ "@adonisjs/mail", "@adonisjs/view", "@adonisjs/bouncer", - "@adonisjs/ally" ], "aceProviders": [ "@adonisjs/repl" diff --git a/.env.example b/.env.example index 48cc2e0..14e695b 100755 --- a/.env.example +++ b/.env.example @@ -32,12 +32,3 @@ SMTP_HOST= SMTP_PORT= SMTP_USERNAME= SMTP_PASSWORD= - -GITHUB_CLIENT_ID= -GITHUB_CLIENT_SECRET= -GOOGLE_CLIENT_ID= -GOOGLE_CLIENT_SECRET= -TWITTER_CLIENT_ID= -TWITTER_CLIENT_SECRET= -DISCORD_CLIENT_ID= -DISCORD_CLIENT_SECRET= diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 6c8736e..0211a9c 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -1,6 +1,5 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import User from "App/Models/User"; -import {AllyUserContract} from "@ioc:Adonis/Addons/Ally"; export default class AuthController { @@ -43,130 +42,4 @@ export default class AuthController { }) } - public async twitter ({ ally, auth, response }: HttpContextContract) { - const twitter = ally.use('twitter') - - if (twitter.accessDenied()) { - return response.status(403).send({ - message: 'Access Denied!' - }) - } - - if (twitter.stateMisMatch()) { - return response.status(405).send({ - message: 'Request expired. Retry again!' - }) - } - - if (twitter.hasError()) { - return response.status(500).send({ - message: twitter.getError() - }) - } - - const twitterUser = await twitter.user() - const user = await this.createUser(twitterUser) - await auth.use('web').login(user, true) - return response.status(200).send({ - user: user - }) - } - - public async discord ({ ally, auth, response }: HttpContextContract) { - const discord = ally.use('discord') - - if (discord.accessDenied()) { - return response.status(403).send({ - message: 'Access Denied!' - }) - } - - if (discord.stateMisMatch()) { - return response.status(405).send({ - message: 'Request expired. Retry again!' - }) - } - - if (discord.hasError()) { - return response.status(500).send({ - message: discord.getError() - }) - } - - const discordUser = await discord.user() - const user = await this.createUser(discordUser) - await auth.use('web').login(user, true) - return response.status(200).send({ - user: user - }) - } - - public async github ({ ally, auth, response }: HttpContextContract) { - const github = ally.use('github') - - if (github.accessDenied()) { - return response.status(403).send({ - message: 'Access Denied!' - }) - } - - if (github.stateMisMatch()) { - return response.status(405).send({ - message: 'Request expired. Retry again!' - }) - } - - if (github.hasError()) { - return response.status(500).send({ - message: github.getError() - }) - } - - const githubUser = await github.user() - const user = await this.createUser(githubUser) - await auth.use('web').login(user, true) - return response.status(200).send({ - user: user - }) - } - - public async google ({ ally, auth, response, }: HttpContextContract) { - const google = ally.use('google') - - if (google.accessDenied()) { - return response.status(403).send({ - message: 'Access Denied!' - }) - } - - if (google.stateMisMatch()) { - return response.status(405).send({ - message: 'Request expired. Retry again!' - }) - } - - if (google.hasError()) { - return response.status(500).send({ - message: google.getError() - }) - } - - const googleUser = await google.user() - const user = await this.createUser(googleUser) - await auth.use('web').login(user, true) - return response.status(200).send({ - user: user - }) - } - - public async createUser (allyUser: AllyUserContract): Promise { - return await User.firstOrCreate({ - email: allyUser.email!, - }, { - email: allyUser.email!, - username: allyUser.name, - isConfirmed: allyUser.emailVerificationState === 'verified' - }) - } - } diff --git a/config/ally.ts b/config/ally.ts deleted file mode 100644 index 426eb3e..0000000 --- a/config/ally.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Config source: https://git.io/JOdi5 - * - * Feel free to let us know via PR, if you find something broken in this config - * file. - */ - -import Env from '@ioc:Adonis/Core/Env' -import {AllyConfig} from '@ioc:Adonis/Addons/Ally' - -/* -|-------------------------------------------------------------------------- -| Ally Config -|-------------------------------------------------------------------------- -| -| The `AllyConfig` relies on the `SocialProviders` interface which is -| defined inside `contracts/ally.ts` file. -| -*/ -const allyConfig: AllyConfig = { - /* - |-------------------------------------------------------------------------- - | Github driver - |-------------------------------------------------------------------------- - */ - github: { - driver: 'github', - clientId: Env.get('GITHUB_CLIENT_ID'), - clientSecret: Env.get('GITHUB_CLIENT_SECRET'), - callbackUrl: `${Env.get('BASE_URL')}/auth/github/callback`, - }, - /* - |-------------------------------------------------------------------------- - | Google driver - |-------------------------------------------------------------------------- - */ - google: { - driver: 'google', - clientId: Env.get('GOOGLE_CLIENT_ID'), - clientSecret: Env.get('GOOGLE_CLIENT_SECRET'), - callbackUrl: `${Env.get('BASE_URL')}/auth/google/callback`, - }, - /* - |-------------------------------------------------------------------------- - | Twitter driver - |-------------------------------------------------------------------------- - */ - twitter: { - driver: 'twitter', - clientId: Env.get('TWITTER_CLIENT_ID'), - clientSecret: Env.get('TWITTER_CLIENT_SECRET'), - callbackUrl: `${Env.get('BASE_URL')}/auth/twitter/callback`, - }, - /* - |-------------------------------------------------------------------------- - | Discord driver - |-------------------------------------------------------------------------- - */ - discord: { - driver: 'discord', - clientId: Env.get('DISCORD_CLIENT_ID'), - clientSecret: Env.get('DISCORD_CLIENT_SECRET'), - callbackUrl: `${Env.get('BASE_URL')}/auth/discord/callback`, - }, -} - -export default allyConfig diff --git a/contracts/ally.ts b/contracts/ally.ts deleted file mode 100644 index e9de077..0000000 --- a/contracts/ally.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Contract source: https://git.io/JOdiQ - * - * Feel free to let us know via PR, if you find something broken in this contract - * file. - */ - -declare module '@ioc:Adonis/Addons/Ally' { - interface SocialProviders { - github: { - config: GithubDriverConfig - implementation: GithubDriverContract - } - google: { - config: GoogleDriverConfig - implementation: GoogleDriverContract - } - twitter: { - config: TwitterDriverConfig - implementation: TwitterDriverContract - } - discord: { - config: DiscordDriverConfig - implementation: DiscordDriverContract - } - } -} diff --git a/package.json b/package.json index 44cf9fb..65844b0 100755 --- a/package.json +++ b/package.json @@ -19,7 +19,6 @@ "youch-terminal": "^1.1.1" }, "dependencies": { - "@adonisjs/ally": "^4.1.0", "@adonisjs/auth": "^8.0.6", "@adonisjs/bouncer": "^2.2.4", "@adonisjs/core": "~5.1.8", diff --git a/start/routes/auth.ts b/start/routes/auth.ts index deb99a1..f2f9c50 100644 --- a/start/routes/auth.ts +++ b/start/routes/auth.ts @@ -6,23 +6,5 @@ Route.group(() => { Route.post('/login', 'AuthController.login') Route.post('/logout', 'AuthController.logout') - - Route.get('/twitter/callback', 'AuthController.twitter') - Route.get('/github/callback', 'AuthController.github') - Route.get('/google/callback', 'AuthController.google') - Route.get('/discord/callback', 'AuthController.discord') - - Route.get('/twitter', async ({ally}) => { - return ally.use('twitter').redirect() - }) - Route.get('/github', async ({ally}) => { - return ally.use('github').redirect() - }) - Route.get('/google', async ({ally}) => { - return ally.use('google').redirect() - }) - Route.get('/discord', async ({ally}) => { - return ally.use('discord').redirect() - }) }).prefix('/auth') diff --git a/tsconfig.json b/tsconfig.json index 1194e95..3cffb77 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -34,7 +34,6 @@ "@adonisjs/lucid", "@adonisjs/mail", "@adonisjs/view", - "@adonisjs/ally", "@adonisjs/bouncer" ] } diff --git a/yarn.lock b/yarn.lock index 0b300cd..ec4b915 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,14 +17,6 @@ slash "^3.0.0" term-size "^2.2.1" -"@adonisjs/ally@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@adonisjs/ally/-/ally-4.1.0.tgz#6811c77c7862f78279d11f6be52792b0837c1829" - integrity sha512-IgyUoV9U/a8iTuRBnR0US8/qV5w+d087dqDdDVbgevGVAPyzwci2KeBGBteNzbZDuF1lhfMAz76rL9rSSbWR9A== - dependencies: - "@poppinss/oauth-client" "^2.0.4" - "@poppinss/utils" "^3.1.3" - "@adonisjs/application@^5.1.3": version "5.1.3" resolved "https://registry.yarnpkg.com/@adonisjs/application/-/application-5.1.3.tgz#f0afb9a1d6f29afc31a6894c669fc2c67870a601" @@ -449,15 +441,6 @@ safe-buffer "5.2.1" uid-safe "2.1.5" -"@poppinss/oauth-client@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@poppinss/oauth-client/-/oauth-client-2.0.4.tgz#26795088b472d580127074b8ec28d868d7feb352" - integrity sha512-bl8ITdz0FG1ydCAmXVJxrlEtUm42JZK4yj6jA7CVsVhKhzf8OwG3XY8kVETmh/APp8kH8vSM6u5l+lgPKpdlIA== - dependencies: - "@types/luxon" "^1.26.5" - got "^11.8.2" - luxon "^1.27.0" - "@poppinss/prompts@^1.2.2": version "1.2.2" resolved "https://registry.yarnpkg.com/@poppinss/prompts/-/prompts-1.2.2.tgz#e4c0a582f4782d3a804050a00d80ce461de208e3" From c74b2267d07fb233f8bf81ecad614799f1a9e205 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 20 Jul 2021 21:54:14 +0200 Subject: [PATCH 069/244] fix coma Signed-off-by: Arthur DANJOU --- .adonisrc.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.adonisrc.json b/.adonisrc.json index fce037e..6085ebb 100755 --- a/.adonisrc.json +++ b/.adonisrc.json @@ -29,7 +29,7 @@ "@adonisjs/lucid", "@adonisjs/mail", "@adonisjs/view", - "@adonisjs/bouncer", + "@adonisjs/bouncer" ], "aceProviders": [ "@adonisjs/repl" From 27d2af8f013b3d1ceea443062620c62fb33350ed Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 20 Jul 2021 23:32:59 +0200 Subject: [PATCH 070/244] re import ally Signed-off-by: Arthur DANJOU --- .adonisrc.json | 3 +- .env.example | 17 +++ app/Controllers/Http/AuthController.ts | 127 ++++++++++++++++++++ app/Controllers/Http/GuestBookController.ts | 1 - package.json | 1 + start/routes/auth.ts | 18 +++ tsconfig.json | 1 + yarn.lock | 17 +++ 8 files changed, 183 insertions(+), 2 deletions(-) diff --git a/.adonisrc.json b/.adonisrc.json index 6085ebb..18d531a 100755 --- a/.adonisrc.json +++ b/.adonisrc.json @@ -29,7 +29,8 @@ "@adonisjs/lucid", "@adonisjs/mail", "@adonisjs/view", - "@adonisjs/bouncer" + "@adonisjs/bouncer", + "@adonisjs/ally" ], "aceProviders": [ "@adonisjs/repl" diff --git a/.env.example b/.env.example index 14e695b..625bd81 100755 --- a/.env.example +++ b/.env.example @@ -32,3 +32,20 @@ SMTP_HOST= SMTP_PORT= SMTP_USERNAME= SMTP_PASSWORD= + +GITHUB_CLIENT_ID= +GITHUB_CLIENT_SECRET= +GOOGLE_CLIENT_ID= +GOOGLE_CLIENT_SECRET= +TWITTER_CLIENT_ID= +TWITTER_CLIENT_SECRET= +DISCORD_CLIENT_ID= +DISCORD_CLIENT_SECRET= +GITHUB_CLIENT_ID=clientId +GITHUB_CLIENT_SECRET=clientSecret +GOOGLE_CLIENT_ID=clientId +GOOGLE_CLIENT_SECRET=clientSecret +TWITTER_CLIENT_ID=clientId +TWITTER_CLIENT_SECRET=clientSecret +DISCORD_CLIENT_ID=clientId +DISCORD_CLIENT_SECRET=clientSecret diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 0211a9c..6c8736e 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -1,5 +1,6 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import User from "App/Models/User"; +import {AllyUserContract} from "@ioc:Adonis/Addons/Ally"; export default class AuthController { @@ -42,4 +43,130 @@ export default class AuthController { }) } + public async twitter ({ ally, auth, response }: HttpContextContract) { + const twitter = ally.use('twitter') + + if (twitter.accessDenied()) { + return response.status(403).send({ + message: 'Access Denied!' + }) + } + + if (twitter.stateMisMatch()) { + return response.status(405).send({ + message: 'Request expired. Retry again!' + }) + } + + if (twitter.hasError()) { + return response.status(500).send({ + message: twitter.getError() + }) + } + + const twitterUser = await twitter.user() + const user = await this.createUser(twitterUser) + await auth.use('web').login(user, true) + return response.status(200).send({ + user: user + }) + } + + public async discord ({ ally, auth, response }: HttpContextContract) { + const discord = ally.use('discord') + + if (discord.accessDenied()) { + return response.status(403).send({ + message: 'Access Denied!' + }) + } + + if (discord.stateMisMatch()) { + return response.status(405).send({ + message: 'Request expired. Retry again!' + }) + } + + if (discord.hasError()) { + return response.status(500).send({ + message: discord.getError() + }) + } + + const discordUser = await discord.user() + const user = await this.createUser(discordUser) + await auth.use('web').login(user, true) + return response.status(200).send({ + user: user + }) + } + + public async github ({ ally, auth, response }: HttpContextContract) { + const github = ally.use('github') + + if (github.accessDenied()) { + return response.status(403).send({ + message: 'Access Denied!' + }) + } + + if (github.stateMisMatch()) { + return response.status(405).send({ + message: 'Request expired. Retry again!' + }) + } + + if (github.hasError()) { + return response.status(500).send({ + message: github.getError() + }) + } + + const githubUser = await github.user() + const user = await this.createUser(githubUser) + await auth.use('web').login(user, true) + return response.status(200).send({ + user: user + }) + } + + public async google ({ ally, auth, response, }: HttpContextContract) { + const google = ally.use('google') + + if (google.accessDenied()) { + return response.status(403).send({ + message: 'Access Denied!' + }) + } + + if (google.stateMisMatch()) { + return response.status(405).send({ + message: 'Request expired. Retry again!' + }) + } + + if (google.hasError()) { + return response.status(500).send({ + message: google.getError() + }) + } + + const googleUser = await google.user() + const user = await this.createUser(googleUser) + await auth.use('web').login(user, true) + return response.status(200).send({ + user: user + }) + } + + public async createUser (allyUser: AllyUserContract): Promise { + return await User.firstOrCreate({ + email: allyUser.email!, + }, { + email: allyUser.email!, + username: allyUser.name, + isConfirmed: allyUser.emailVerificationState === 'verified' + }) + } + } diff --git a/app/Controllers/Http/GuestBookController.ts b/app/Controllers/Http/GuestBookController.ts index d4ab39b..8548f80 100755 --- a/app/Controllers/Http/GuestBookController.ts +++ b/app/Controllers/Http/GuestBookController.ts @@ -41,5 +41,4 @@ export default class GuestBookController { signed: guestbook_message !== null }) } - } diff --git a/package.json b/package.json index 65844b0..44cf9fb 100755 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "youch-terminal": "^1.1.1" }, "dependencies": { + "@adonisjs/ally": "^4.1.0", "@adonisjs/auth": "^8.0.6", "@adonisjs/bouncer": "^2.2.4", "@adonisjs/core": "~5.1.8", diff --git a/start/routes/auth.ts b/start/routes/auth.ts index f2f9c50..deb99a1 100644 --- a/start/routes/auth.ts +++ b/start/routes/auth.ts @@ -6,5 +6,23 @@ Route.group(() => { Route.post('/login', 'AuthController.login') Route.post('/logout', 'AuthController.logout') + + Route.get('/twitter/callback', 'AuthController.twitter') + Route.get('/github/callback', 'AuthController.github') + Route.get('/google/callback', 'AuthController.google') + Route.get('/discord/callback', 'AuthController.discord') + + Route.get('/twitter', async ({ally}) => { + return ally.use('twitter').redirect() + }) + Route.get('/github', async ({ally}) => { + return ally.use('github').redirect() + }) + Route.get('/google', async ({ally}) => { + return ally.use('google').redirect() + }) + Route.get('/discord', async ({ally}) => { + return ally.use('discord').redirect() + }) }).prefix('/auth') diff --git a/tsconfig.json b/tsconfig.json index 3cffb77..1194e95 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -34,6 +34,7 @@ "@adonisjs/lucid", "@adonisjs/mail", "@adonisjs/view", + "@adonisjs/ally", "@adonisjs/bouncer" ] } diff --git a/yarn.lock b/yarn.lock index ec4b915..0b300cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,6 +17,14 @@ slash "^3.0.0" term-size "^2.2.1" +"@adonisjs/ally@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@adonisjs/ally/-/ally-4.1.0.tgz#6811c77c7862f78279d11f6be52792b0837c1829" + integrity sha512-IgyUoV9U/a8iTuRBnR0US8/qV5w+d087dqDdDVbgevGVAPyzwci2KeBGBteNzbZDuF1lhfMAz76rL9rSSbWR9A== + dependencies: + "@poppinss/oauth-client" "^2.0.4" + "@poppinss/utils" "^3.1.3" + "@adonisjs/application@^5.1.3": version "5.1.3" resolved "https://registry.yarnpkg.com/@adonisjs/application/-/application-5.1.3.tgz#f0afb9a1d6f29afc31a6894c669fc2c67870a601" @@ -441,6 +449,15 @@ safe-buffer "5.2.1" uid-safe "2.1.5" +"@poppinss/oauth-client@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@poppinss/oauth-client/-/oauth-client-2.0.4.tgz#26795088b472d580127074b8ec28d868d7feb352" + integrity sha512-bl8ITdz0FG1ydCAmXVJxrlEtUm42JZK4yj6jA7CVsVhKhzf8OwG3XY8kVETmh/APp8kH8vSM6u5l+lgPKpdlIA== + dependencies: + "@types/luxon" "^1.26.5" + got "^11.8.2" + luxon "^1.27.0" + "@poppinss/prompts@^1.2.2": version "1.2.2" resolved "https://registry.yarnpkg.com/@poppinss/prompts/-/prompts-1.2.2.tgz#e4c0a582f4782d3a804050a00d80ce461de208e3" From 1011164959e414259eaddafecac9b3f5ac9e1793 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 20 Jul 2021 23:37:29 +0200 Subject: [PATCH 071/244] re import ally Signed-off-by: Arthur DANJOU --- config/ally.ts | 67 +++++++++++++++++++++++++++++++++++++++++++++++ contracts/ally.ts | 27 +++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 config/ally.ts create mode 100644 contracts/ally.ts diff --git a/config/ally.ts b/config/ally.ts new file mode 100644 index 0000000..ee1ca4f --- /dev/null +++ b/config/ally.ts @@ -0,0 +1,67 @@ +/** + * Config source: https://git.io/JOdi5 + * + * Feel free to let us know via PR, if you find something broken in this config + * file. + */ + +import Env from '@ioc:Adonis/Core/Env' +import {AllyConfig} from '@ioc:Adonis/Addons/Ally' + +/* +|-------------------------------------------------------------------------- +| Ally Config +|-------------------------------------------------------------------------- +| +| The `AllyConfig` relies on the `SocialProviders` interface which is +| defined inside `contracts/ally.ts` file. +| +*/ +const allyConfig: AllyConfig = { + /* + |-------------------------------------------------------------------------- + | Github driver + |-------------------------------------------------------------------------- + */ + github: { + driver: 'github', + clientId: Env.get('GITHUB_CLIENT_ID'), + clientSecret: Env.get('GITHUB_CLIENT_SECRET'), + callbackUrl: `${Env.get('BASE_URL')}/auth/github/callback`, + }, + /* + |-------------------------------------------------------------------------- + | Google driver + |-------------------------------------------------------------------------- + */ + google: { + driver: 'google', + clientId: Env.get('GOOGLE_CLIENT_ID'), + clientSecret: Env.get('GOOGLE_CLIENT_SECRET'), + callbackUrl: `${Env.get('BASE_URL')}/auth/google/callback`, + }, + /* + |-------------------------------------------------------------------------- + | Twitter driver + |-------------------------------------------------------------------------- + */ + twitter: { + driver: 'twitter', + clientId: Env.get('TWITTER_CLIENT_ID'), + clientSecret: Env.get('TWITTER_CLIENT_SECRET'), + callbackUrl: `${Env.get('BASE_URL')}/auth/twitter/callback`, + }, + /* + |-------------------------------------------------------------------------- + | Discord driver + |-------------------------------------------------------------------------- + */ + discord: { + driver: 'discord', + clientId: Env.get('DISCORD_CLIENT_ID'), + clientSecret: Env.get('DISCORD_CLIENT_SECRET'), + callbackUrl: `${Env.get('BASE_URL')}/auth/discord/callback`, + }, +} + +export default allyConfig diff --git a/contracts/ally.ts b/contracts/ally.ts new file mode 100644 index 0000000..e9de077 --- /dev/null +++ b/contracts/ally.ts @@ -0,0 +1,27 @@ +/** + * Contract source: https://git.io/JOdiQ + * + * Feel free to let us know via PR, if you find something broken in this contract + * file. + */ + +declare module '@ioc:Adonis/Addons/Ally' { + interface SocialProviders { + github: { + config: GithubDriverConfig + implementation: GithubDriverContract + } + google: { + config: GoogleDriverConfig + implementation: GoogleDriverContract + } + twitter: { + config: TwitterDriverConfig + implementation: TwitterDriverContract + } + discord: { + config: DiscordDriverConfig + implementation: DiscordDriverContract + } + } +} From ea00776e9fb0da8877367a24cce20e558d1bf9a5 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 21 Jul 2021 13:04:47 +0200 Subject: [PATCH 072/244] add logger Signed-off-by: Arthur DANJOU --- .env.example | 8 - app/Controllers/Http/AuthController.ts | 3 + yarn.lock | 735 ++++++++++++------------- 3 files changed, 364 insertions(+), 382 deletions(-) diff --git a/.env.example b/.env.example index 625bd81..48cc2e0 100755 --- a/.env.example +++ b/.env.example @@ -41,11 +41,3 @@ TWITTER_CLIENT_ID= TWITTER_CLIENT_SECRET= DISCORD_CLIENT_ID= DISCORD_CLIENT_SECRET= -GITHUB_CLIENT_ID=clientId -GITHUB_CLIENT_SECRET=clientSecret -GOOGLE_CLIENT_ID=clientId -GOOGLE_CLIENT_SECRET=clientSecret -TWITTER_CLIENT_ID=clientId -TWITTER_CLIENT_SECRET=clientSecret -DISCORD_CLIENT_ID=clientId -DISCORD_CLIENT_SECRET=clientSecret diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 6c8736e..e615351 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -1,6 +1,7 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import User from "App/Models/User"; import {AllyUserContract} from "@ioc:Adonis/Addons/Ally"; +import Logger from "@ioc:Adonis/Core/Logger"; export default class AuthController { @@ -124,6 +125,8 @@ export default class AuthController { const githubUser = await github.user() const user = await this.createUser(githubUser) + Logger.info(response.getHeaders().toString()) + Logger.info(String(response)) await auth.use('web').login(user, true) return response.status(200).send({ user: user diff --git a/yarn.lock b/yarn.lock index 0b300cd..446c145 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,14 +2,14 @@ # yarn lockfile v1 -"@adonisjs/ace@^11.0.1": - version "11.0.2" - resolved "https://registry.yarnpkg.com/@adonisjs/ace/-/ace-11.0.2.tgz#89a096c3d1b1114abed1265626a3fb8e7e69560d" - integrity sha512-d7DQ9p1DYjs3JkGFlj9M/w8Li1J6Z8buoUjfLas5vmPOObWPe9gaDPYsFk773Z8UymR4UIVV7/HL6o5lKQt0Wg== +"@adonisjs/ace@^11.0.3": + version "11.0.3" + resolved "https://registry.yarnpkg.com/@adonisjs/ace/-/ace-11.0.3.tgz#fb003d5de3c64c34c54b3462fb09f9e8c233507f" + integrity sha512-nqAVFu8+r3HdSL4qePdItgTZSRSoNcLc2ks49Deptf8rl51Wk6H2vHesU2yLg7JHNW8+sY7lehZidTVqrG3wrA== dependencies: - "@poppinss/cliui" "^2.2.4" - "@poppinss/prompts" "^1.2.2" - "@poppinss/utils" "^3.1.3" + "@poppinss/cliui" "^2.2.5" + "@poppinss/prompts" "^1.2.3" + "@poppinss/utils" "^3.1.5" fs-extra "^10.0.0" getopts "^2.3.0" leven "^3.1.0" @@ -25,26 +25,26 @@ "@poppinss/oauth-client" "^2.0.4" "@poppinss/utils" "^3.1.3" -"@adonisjs/application@^5.1.3": - version "5.1.3" - resolved "https://registry.yarnpkg.com/@adonisjs/application/-/application-5.1.3.tgz#f0afb9a1d6f29afc31a6894c669fc2c67870a601" - integrity sha512-rsVY2kZybR3RP+4nsprni1eJPT9xtqLkZ9EVFvMZl4LGc9l/6YQ5962tSoNABA/oScmOKJRqzUq7X9b2iuVxjw== +"@adonisjs/application@^5.1.4", "@adonisjs/application@^5.1.5": + version "5.1.5" + resolved "https://registry.yarnpkg.com/@adonisjs/application/-/application-5.1.5.tgz#93831ab8c4d4d1107e2665d33ba78290bdb24666" + integrity sha512-hzapilbQ+2Zbeac6RvmZBt56fj/H4aVNWhpM3PjlNOZZuUzVQmdSQd1dtkgmx7VJETPqXnRts8AlnWdF9xIbsw== dependencies: - "@adonisjs/config" "^3.0.3" - "@adonisjs/env" "^3.0.3" - "@adonisjs/fold" "^8.1.3" - "@adonisjs/logger" "^4.0.3" - "@adonisjs/profiler" "^6.0.4" - "@poppinss/utils" "^3.1.3" + "@adonisjs/config" "^3.0.5" + "@adonisjs/env" "^3.0.5" + "@adonisjs/fold" "^8.1.5" + "@adonisjs/logger" "^4.0.5" + "@adonisjs/profiler" "^6.0.6" + "@poppinss/utils" "^3.1.4" semver "^7.3.5" "@adonisjs/assembler@^5.3.2": - version "5.3.2" - resolved "https://registry.yarnpkg.com/@adonisjs/assembler/-/assembler-5.3.2.tgz#e2d117552750394d845cb55fdbabdefd87a62a5b" - integrity sha512-rznJDptvAvS+6kO7KU6IpS9NiCb5HwMpg3bzdqeQMZXeKTCk8bJmsFRNCq3ADlNTR2bTcgZfFEccjG+wIfxtDw== + version "5.3.5" + resolved "https://registry.yarnpkg.com/@adonisjs/assembler/-/assembler-5.3.5.tgz#4a159cb2214c38b4c571e30378df1adc20485117" + integrity sha512-vuLHKZk9ZJ9zSWSdpQcHxVtUpRxySSKRlHuRo18nzSDZODtpsDawImdrDu8pYMKb90bkxdFxQZbkCMmuAg6TKg== dependencies: - "@adonisjs/application" "^5.1.3" - "@adonisjs/env" "^3.0.3" + "@adonisjs/application" "^5.1.4" + "@adonisjs/env" "^3.0.4" "@adonisjs/ioc-transformer" "^2.3.0" "@adonisjs/require-ts" "^2.0.6" "@adonisjs/sink" "^5.1.5" @@ -61,25 +61,25 @@ slash "^3.0.0" "@adonisjs/auth@^8.0.6": - version "8.0.6" - resolved "https://registry.yarnpkg.com/@adonisjs/auth/-/auth-8.0.6.tgz#a60f44432a3e1a5c0ff0aea54cafca3d2002ee9f" - integrity sha512-aAnfQlUGmlcG5o9Q+mm0Krr9Yh87IYDq3E1jD/TPR9TCgjM00KoBdT7rl+c419FmKItNQaQU1XJuu1VOjaoLIw== + version "8.0.7" + resolved "https://registry.yarnpkg.com/@adonisjs/auth/-/auth-8.0.7.tgz#8e73cb0d491dc58aa1e72b0ef8166718c5bfbf08" + integrity sha512-iTB9u5xzJBhdZthezxPR8+HPI0xLSseioeOeGlQumlawwS0KbuBDoJ1JkBSIy2/Yf235BzLdlB78vW3dYhNFsA== dependencies: "@poppinss/hooks" "^3.0.4" "@poppinss/utils" "^3.1.3" luxon "^1.27.0" -"@adonisjs/bodyparser@^7.1.2": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@adonisjs/bodyparser/-/bodyparser-7.1.2.tgz#a3123d677da170535a692246df2d8460d9d743ed" - integrity sha512-94uW/mASYiCb8stk0UIJNm2x/OWEyWCp+Yz3aas4mK7KYA00OcgASkJ/6BxX88JxszXM0xMOXbEaU5Z1G/XqRw== +"@adonisjs/bodyparser@^7.1.4": + version "7.1.4" + resolved "https://registry.yarnpkg.com/@adonisjs/bodyparser/-/bodyparser-7.1.4.tgz#d890e4a32559aca449070cabcb8f80f03063f1e3" + integrity sha512-QoypAkEh4fHGNncg+dp1CLF+T3ouXtHsp5nMRIrfRzxLcVsfyfo/nDaQgoQEf0WoifOQfCqKUOktfN63Nhoc+A== dependencies: "@poppinss/co-body" "^1.1.3" "@poppinss/multiparty" "^1.0.2" - "@poppinss/utils" "^3.1.3" + "@poppinss/utils" "^3.1.5" bytes "^3.1.0" end-of-stream "^1.4.4" - file-type "^16.5.0" + file-type "^16.5.1" fs-extra "^10.0.0" media-typer "^1.1.0" @@ -90,80 +90,80 @@ dependencies: "@poppinss/utils" "^3.1.3" -"@adonisjs/config@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@adonisjs/config/-/config-3.0.3.tgz#881ef1cd4d7e85050b474288a0eb1ebde9eb4625" - integrity sha512-qh3A5ax5cuJpL7jwOe82wUtqiAfKTFezjPToyJ8pQHCjt8ghwvXtTiwJ7XZas1e4BY8QuEfL+sqC7NYFiaCX3A== +"@adonisjs/config@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@adonisjs/config/-/config-3.0.5.tgz#00597e949252d09b4d2f9fba3b1321f299833585" + integrity sha512-/Hy8K3s3WAfhBxlmdYqJTKpKfACyg/4V3rXx2t14pMF8Kkhoo7jGQK170HzEPjkMm+qkc5aViUMFkHSr6pgfrA== dependencies: - "@poppinss/utils" "^3.1.3" + "@poppinss/utils" "^3.1.4" "@adonisjs/core@~5.1.8": - version "5.1.8" - resolved "https://registry.yarnpkg.com/@adonisjs/core/-/core-5.1.8.tgz#ca544b352737217a924b68794aa6de1a62d3a4c4" - integrity sha512-rZPgpTPHKSsI1MdK1xYeNrDdU6eh8I6sPI4lnZK7gW8l82mX6IJ70Soz1jEk0AZf/qe0YpAWeulBOgwOwbzFkA== + version "5.1.10" + resolved "https://registry.yarnpkg.com/@adonisjs/core/-/core-5.1.10.tgz#62391323865786c7535fbec645a72aa4bba97c90" + integrity sha512-lK9N96WI8eOiOFsGwsxGSaCbiI+ny4wNNWwWTi81VkxGgSCJFdvoQ/frvOe//J5MMczm9v5b4mC1IvVgyQz1Rw== dependencies: - "@adonisjs/ace" "^11.0.1" - "@adonisjs/application" "^5.1.3" - "@adonisjs/bodyparser" "^7.1.2" - "@adonisjs/encryption" "^4.0.3" - "@adonisjs/events" "^7.0.2" - "@adonisjs/hash" "^7.0.6" - "@adonisjs/http-server" "^5.4.1" - "@adonisjs/validator" "^11.0.2" - "@poppinss/cliui" "^2.2.4" - "@poppinss/utils" "^3.1.3" + "@adonisjs/ace" "^11.0.3" + "@adonisjs/application" "^5.1.5" + "@adonisjs/bodyparser" "^7.1.4" + "@adonisjs/encryption" "^4.0.5" + "@adonisjs/events" "^7.1.2" + "@adonisjs/hash" "^7.0.8" + "@adonisjs/http-server" "^5.5.1" + "@adonisjs/validator" "^11.0.4" + "@poppinss/cliui" "^2.2.5" + "@poppinss/utils" "^3.1.5" fs-extra "^10.0.0" serve-static "^1.14.1" stringify-attributes "^2.0.0" -"@adonisjs/encryption@^4.0.3": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@adonisjs/encryption/-/encryption-4.0.3.tgz#8949664d922fb8fb8bc2836f5f23b66f6298f808" - integrity sha512-vCGu6hf2/GAP4xSwU8Wr2BPLv1P8GBK6/xo7B8ScOWAubMpwEl0fHc1QFTqXTN5N/iXMl8TdrSvK3bQHAmK7zw== +"@adonisjs/encryption@^4.0.5": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@adonisjs/encryption/-/encryption-4.0.5.tgz#cf4e3012d8a09815e6e53dd58b3add95cb9e9115" + integrity sha512-PCyzcwwb2IxotFNHEXV1fkfXK/XT4cpR+wJtpf+QurB7xS5BqIIosRWISEkwD7l98OuvLtt505Qg/caVDN3q8w== dependencies: - "@poppinss/utils" "^3.1.3" + "@poppinss/utils" "^3.1.4" -"@adonisjs/env@^3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@adonisjs/env/-/env-3.0.3.tgz#ddf5e510bcfe304e1edb4860dbc6b2bccf6a2701" - integrity sha512-zdJcpKktH+JISbberQYB+caVeSAidIZ8vJh1vqH/sWyRRqaFNRmqXQCyUBUHk9Hi47ksGKk/biIvsXhiLjcNtw== +"@adonisjs/env@^3.0.4", "@adonisjs/env@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@adonisjs/env/-/env-3.0.5.tgz#537c510269292548945db35a819422ce2046d02b" + integrity sha512-pppLokSrTbt6ykSIMg7BxwRBChbwq2SyuqB7J5uyuXbHelExY/yX7UagtJxsK0IJ0FhNYs2oemXrtJQAIAQ0oQ== dependencies: - "@poppinss/utils" "^3.1.2" + "@poppinss/utils" "^3.1.4" dotenv "^10.0.0" validator "^13.6.0" -"@adonisjs/events@^7.0.2": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@adonisjs/events/-/events-7.1.0.tgz#86264ffcc31d28250502533a5d58a773d44c031a" - integrity sha512-OTi+x5c0/zqnNuROasqIYfYEjCSWM7H+eCVZtMehRX4pF+phK4Fo0IDgRjD78R9QFLob9/VuQRbqR12iWR7yoQ== +"@adonisjs/events@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@adonisjs/events/-/events-7.1.2.tgz#902e439362d2869b7fe8d5d0a7672af71dc519c7" + integrity sha512-S5ZhI/gFb6Ci0m6n8RRv0Gs/MBhAoFDNYJ/vilVaxTi0a6keRkRBR7Y3IgBrwXQedJnlGe4OqMXA4ExQLK8HNQ== dependencies: emittery "^0.9.2" -"@adonisjs/fold@^8.1.3": - version "8.1.3" - resolved "https://registry.yarnpkg.com/@adonisjs/fold/-/fold-8.1.3.tgz#f702342f026c1aea1b06d5fef5bb230a6ede8070" - integrity sha512-lQ0JYsVEcXi3EnPZKZIiXbbRjAUg2qenLkeY3tB3+/J1i30olPFmGiZWEuUZ6PgrMd7WQEsEob7UnnCweOsSIw== +"@adonisjs/fold@^8.1.5": + version "8.1.5" + resolved "https://registry.yarnpkg.com/@adonisjs/fold/-/fold-8.1.5.tgz#425f5f2d6fac2b1143c4bcf148bf8e91a0295099" + integrity sha512-eqbq0zQd0TV7AoN/RP4vUUg442BP4GSc0U1CsNYGKJ3YBhxfgThVLDlgn1K4/nadC1lv4/Gf3ZSnLj1Rx5OzFA== dependencies: - "@poppinss/utils" "^3.1.3" + "@poppinss/utils" "^3.1.4" -"@adonisjs/hash@^7.0.6": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@adonisjs/hash/-/hash-7.0.6.tgz#8062a69fe3e29f5b55966847e9fcb4d2b1754e5e" - integrity sha512-uxKtoPwM5N9A2CZK1cTDbee8Ox4Ma+iFOMs+b8NRwwvCcWioQm5r1YTf64Apxc4do6Pd6AgQNwkL412y0dARCw== +"@adonisjs/hash@^7.0.8": + version "7.0.8" + resolved "https://registry.yarnpkg.com/@adonisjs/hash/-/hash-7.0.8.tgz#6f01a5becca92da9495ec34b36412fb66edfa560" + integrity sha512-nLgUUQw4SZ9petDsdAgywgYDR0VEdlZTh59MwW12wEdaLYvt7cKeabWh588JQQb0M7jmUmzVcUkYktpMBfdmdQ== dependencies: "@phc/format" "^1.0.0" - "@poppinss/manager" "^4.0.3" - "@poppinss/utils" "^3.1.3" + "@poppinss/manager" "^4.0.4" + "@poppinss/utils" "^3.1.4" -"@adonisjs/http-server@^5.4.1": - version "5.4.1" - resolved "https://registry.yarnpkg.com/@adonisjs/http-server/-/http-server-5.4.1.tgz#f30cb913675044404f0d46ba79ee229962aa1b7e" - integrity sha512-FmIlyyYkYMsZqUr+VcH0kOSzEDJ0shjiszsqNo24Y+/S2KEIFzrZEJr9TjmZg2gghfePZyMf88I0CzpBT9dU+Q== +"@adonisjs/http-server@^5.5.1": + version "5.5.1" + resolved "https://registry.yarnpkg.com/@adonisjs/http-server/-/http-server-5.5.1.tgz#3c13c2f08e131efddcaf0df7f6fd0275f64a3af4" + integrity sha512-Ej/pbvO6RDjxj9FD3ef0VI+LDc66VQ9ZFoDqvfic05zi4N0oHJxnBtJQRsIEjns3AtDkgk5I1byylp9+kf0FZA== dependencies: "@poppinss/matchit" "^3.1.2" - "@poppinss/utils" "^3.1.3" + "@poppinss/utils" "^3.1.5" accepts "^1.3.7" - co-compose "^6.1.3" + co-compose "^6.1.4" content-disposition "^0.5.3" cookie "^0.4.1" destroy "^1.0.4" @@ -171,36 +171,37 @@ etag "^1.8.1" fresh "^0.5.2" haye "^3.0.0" - macroable "^5.1.3" + macroable "^5.1.4" mime-types "^2.1.31" ms "^2.1.3" on-finished "^2.3.0" pluralize "^8.0.0" proxy-addr "^2.0.7" qs "^6.10.1" + set-cookie-parser "^2.4.8" tmp-cache "^1.1.0" type-is "^1.6.18" vary "^1.1.2" "@adonisjs/ioc-transformer@^2.3.0": - version "2.3.0" - resolved "https://registry.yarnpkg.com/@adonisjs/ioc-transformer/-/ioc-transformer-2.3.0.tgz#27b35eeb972598ef75992378b15ff1ccfaa93c19" - integrity sha512-I1Lv76ksY5YvdTkU2JUVJvV1ZKUgIVTYG5e7emUrBS4Y4rEZILuU1YwEviv0xd1P1TzkQ9CNPiJlv8/m3cOQ+g== + version "2.3.1" + resolved "https://registry.yarnpkg.com/@adonisjs/ioc-transformer/-/ioc-transformer-2.3.1.tgz#9157cb03d0202a36b9a75712462b195171c4ce8d" + integrity sha512-/pbMSy2gmswWvvSdy4EbLHzr9Oa8gsIlM01n8J8xbO3QW3z1JRuZy2SbmD06OveW4b5dm/Hn0hC8GK2cY+nRgg== -"@adonisjs/logger@^4.0.3": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@adonisjs/logger/-/logger-4.0.3.tgz#29cdd4a0e9b60170d2a58f36214ab4dc94d745cd" - integrity sha512-sSTgRd7Bld9XCACi/D/FdP7ZNcATnOfyZ+/kQYMpnKU3YdDmv9oLoQojtzVXv/AUI2B19HR00ruV9xpu4McByQ== +"@adonisjs/logger@^4.0.5": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@adonisjs/logger/-/logger-4.0.5.tgz#f28e32438874f33e71f7f2d749c91c02096fe399" + integrity sha512-GdB5/TFc+Kd7T7DDnmjdByahrzXRooJzqhD9i+FxYGa2X+AHTH06pNaACemnWLppQCHOJB+aiuW+wrcgK6/7XA== dependencies: - "@poppinss/utils" "^3.1.3" - "@types/pino" "^6.3.8" + "@poppinss/utils" "^3.1.4" + "@types/pino" "^6.3.9" abstract-logging "^2.0.1" - pino "^6.11.3" + pino "^6.12.0" "@adonisjs/lucid@^15.0.1": - version "15.0.2" - resolved "https://registry.yarnpkg.com/@adonisjs/lucid/-/lucid-15.0.2.tgz#99051cce48fc1d8061860b9efb09c18d53818a81" - integrity sha512-SLC2YYG33efHeq++qAXe6DA2fkQkgdaQwdBz+tjku7DneRBMre+mltXlf6Mow5WHUfq9b0fxh5GQA9tKGDdWkg== + version "15.0.3" + resolved "https://registry.yarnpkg.com/@adonisjs/lucid/-/lucid-15.0.3.tgz#b7549070423e2924a8db102156903e7b7c3774ec" + integrity sha512-UbzmyV96X227AOwyXjJNs9/DCRHUl8jCbEJzQwRcQrfFWI0HaIH9crJYKzi1djoQOxXjM+qcTdrd48HDwnb9Vw== dependencies: "@poppinss/hooks" "^3.0.4" "@poppinss/utils" "^3.1.3" @@ -212,14 +213,14 @@ knex-dynamic-connection "^2.1.1" luxon "^1.27.0" macroable "^5.1.3" - normalize-path "^3.0.0" pretty-hrtime "^1.0.3" qs "^6.10.1" + slash "^3.0.0" "@adonisjs/mail@^7.2.1": - version "7.2.1" - resolved "https://registry.yarnpkg.com/@adonisjs/mail/-/mail-7.2.1.tgz#836ea30e75530b42ac6aa468ad1a20d2b8980eab" - integrity sha512-CrusOu+RjL2ukTx7M2yNzEiBFBPxK1Uct45e9BZ+hO0vQgZs3y2/61E+w0A8ZqlJh4gtM7ZtX+afDi4vEgCAxg== + version "7.2.2" + resolved "https://registry.yarnpkg.com/@adonisjs/mail/-/mail-7.2.2.tgz#82f0f64ef6052c9affedb67b095bd8eb91b6c0d0" + integrity sha512-yTN8Nz4S4+brHZZSkRTelKz78m0PlXyq+2K27fOlvLuXzJfs6CZOvZ2SZsFwo0h/dA05xJMOIA9gttzR8rKKRw== dependencies: "@poppinss/colors" "^2.1.4" "@poppinss/manager" "^4.0.3" @@ -229,41 +230,41 @@ got "^11.8.2" ical-generator "^2.2.0" multi-part "^3.0.0" - nodemailer "^6.6.1" + nodemailer "^6.6.2" -"@adonisjs/profiler@^6.0.4": - version "6.0.4" - resolved "https://registry.yarnpkg.com/@adonisjs/profiler/-/profiler-6.0.4.tgz#c0a528050b1ea86dc4c1983eaa894ad961a8223f" - integrity sha512-L4F4qScik4OlO2JWfgyKjA6PtF3zyv73Yj9ThH3aV9kd+Hr+zXiqycX8BeU9gXM4eVbpM2HRCVg57pjtGG1zow== +"@adonisjs/profiler@^6.0.6": + version "6.0.6" + resolved "https://registry.yarnpkg.com/@adonisjs/profiler/-/profiler-6.0.6.tgz#8a7b67404f8850ca98745064565aeb264e3bee24" + integrity sha512-8jW1awNazVTc5cj8cihBqEHX3zbvkBQyPHyCgNqkPJez3jQ+gr4YqvUdLm4rto+eJrORna6P9H8FM/g/u0Hvcw== dependencies: - "@poppinss/utils" "^3.1.3" - jest-worker "^27.0.2" + "@poppinss/utils" "^3.1.4" + jest-worker "^27.0.6" "@adonisjs/redis@^7.0.6": - version "7.0.6" - resolved "https://registry.yarnpkg.com/@adonisjs/redis/-/redis-7.0.6.tgz#9a5d7d05f81d9991dbc1e0de4f917f74d54a891f" - integrity sha512-SqVm8I6yMey+BjwismpsYYXrzJSkP+ylBzj1UXmPFNCnamlVe4SgtGCsD8gxNanpy/y5otNliKsnLieaXbdZww== + version "7.0.8" + resolved "https://registry.yarnpkg.com/@adonisjs/redis/-/redis-7.0.8.tgz#25223b61c253131394ab94aaf29ce12a17b338d9" + integrity sha512-5tADsSTAJt3uCxg942/0jjZQkNYkbFNMYfvPczsQ2NX0ixx/CmjHje+RO6o/Uhm7YBcvClMIvJUoFHqa8nnv8w== dependencies: - "@poppinss/utils" "^3.1.3" - "@types/ioredis" "^4.26.4" + "@poppinss/utils" "^3.1.5" + "@types/ioredis" "^4.26.6" ioredis "^4.27.6" "@adonisjs/repl@^3.1.4": - version "3.1.4" - resolved "https://registry.yarnpkg.com/@adonisjs/repl/-/repl-3.1.4.tgz#54b4acab6482f93342745ded458a44b6ec47f643" - integrity sha512-xyL7raCKFcfmJvM+PVNdU6dBEzGx+7QLJTddRIuvPBlvWlijnzoIwwAmYmKIYfxL5ESiBipa7GqEGsO/8Ue0Qw== + version "3.1.5" + resolved "https://registry.yarnpkg.com/@adonisjs/repl/-/repl-3.1.5.tgz#27eb99f8e5dcc2250435e90b964f12b8d633d8b8" + integrity sha512-rFc2dMzkEtYwQMVfVAEJiZcOHl0sn1s8vZ9LN6+ZpkT5rUyvRjHeY4MxrzWXcde6WSAwYlxlSpO167RwXDNCsw== dependencies: - "@poppinss/colors" "^2.1.4" + "@poppinss/colors" "^2.1.5" node-repl-await "^0.1.2" parse-imports "0.0.5" string-width "^4.2.2" "@adonisjs/require-ts@^2.0.6": - version "2.0.6" - resolved "https://registry.yarnpkg.com/@adonisjs/require-ts/-/require-ts-2.0.6.tgz#5d308bd79e5bd5b52630c008a8239a2b72e12e36" - integrity sha512-q4tMUUdoIr8wVGRz41TsGhlArfy+yoKIbB+T7PC/GS0aBQ0BRl2kJTuNDD29oFdDTmbzWNJtmRQKkJRYWJBhpg== + version "2.0.7" + resolved "https://registry.yarnpkg.com/@adonisjs/require-ts/-/require-ts-2.0.7.tgz#11aaafd4e67fed1554f6f0991539368f208f78fa" + integrity sha512-B0c6kN5syDBLBW1+84BW57mTAkSFke6YbgbgfLMO3I9X38SlOFxujJLty/JNK4Oa/J7FLaL+mioM0XGJsRliSQ== dependencies: - "@poppinss/utils" "^3.1.3" + "@poppinss/utils" "^3.1.4" debug "^4.3.2" find-cache-dir "^3.3.1" fs-extra "^10.0.0" @@ -273,11 +274,11 @@ source-map-support "^0.5.19" "@adonisjs/session@^6.0.6": - version "6.0.6" - resolved "https://registry.yarnpkg.com/@adonisjs/session/-/session-6.0.6.tgz#977243895c6c442e379a55093051a2ba73573e4d" - integrity sha512-0FaNszd+T3Dlm32DkOLdJNrWuA7hNcByJQzu86yVtwaZl/0ek5njZ6bAfgcwG9htsT+VzTDYM4zjuDPFMCoNkQ== + version "6.1.1" + resolved "https://registry.yarnpkg.com/@adonisjs/session/-/session-6.1.1.tgz#f3ffed30ecb82168b0660d316c46ffb053566114" + integrity sha512-TClg2O6wUnsoI4DhCS7F3mCRqmWO8AEh1kSrnKNl6ZqnxesLgU+30lsmMGTPfohSK/j2eU27+LpzuLFCz9Rf7Q== dependencies: - "@poppinss/utils" "^3.1.3" + "@poppinss/utils" "^3.1.5" fs-extra "^10.0.0" "@adonisjs/sink@^5.1.5": @@ -296,27 +297,27 @@ mustache "^4.2.0" open "^8.2.0" -"@adonisjs/validator@^11.0.2": - version "11.0.2" - resolved "https://registry.yarnpkg.com/@adonisjs/validator/-/validator-11.0.2.tgz#3c3fdd39a9cefbd330d193e9a746616c1df383ae" - integrity sha512-nie4N40Sg48r+zR+WZCausHhh2WQo+YQ0CoWRgk3yJbdesMGne0cWnTp59O9FmSboL2KVDDnNWmxqb72AAuyIQ== +"@adonisjs/validator@^11.0.4": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@adonisjs/validator/-/validator-11.0.4.tgz#0b9017163f5c958f852efc550af279e0e7f1913f" + integrity sha512-8OuiZKa5YE1LvEEI592tbvc5CQUlwC1ixbTZpnrZ9QfcwJekDe+gD3Ap+XPPC5yfXhBnf85e9GWi+UFRPLSEzQ== dependencies: - "@poppinss/utils" "^3.1.3" - "@types/luxon" "^1.26.5" - "@types/validator" "^13.1.3" - luxon "^1.27.0" - normalize-url "^6.0.1" + "@poppinss/utils" "^3.1.5" + "@types/luxon" "^1.27.1" + "@types/validator" "^13.6.3" + luxon "^2.0.1" + normalize-url "^6.1.0" tmp-cache "^1.1.0" validator "^13.6.0" "@adonisjs/view@^6.0.3": - version "6.0.3" - resolved "https://registry.yarnpkg.com/@adonisjs/view/-/view-6.0.3.tgz#b86f5e997708ef6d5a505a65f514fbdfea87edb8" - integrity sha512-5/glig7MpgW0F+7bLDatDTrMuaHmj+0Qp1G+qR3BXjU6ErqXuEiGlrk/7If4196oAjiTdwkqrW77BEvClp+6hA== + version "6.0.7" + resolved "https://registry.yarnpkg.com/@adonisjs/view/-/view-6.0.7.tgz#baf186a01d7c3ada8afb61582523931b57032c1c" + integrity sha512-Jesr9bu0UK58vu76sxwbDfKcwkjgLpy1MmWR1fyHmQfgc/UudPIFUN+Dx+61//hCbtgsMn6JppWE2TAmBwzGaA== dependencies: - edge-error "^2.0.4" + edge-error "^2.0.5" edge-supercharged "^3.1.1" - edge.js "^5.2.1" + edge.js "^5.3.1" "@arr/every@^1.0.0": version "1.0.1" @@ -324,9 +325,9 @@ integrity sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg== "@babel/runtime@^7.14.6", "@babel/runtime@^7.8.7": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.6.tgz#535203bc0892efc7dec60bdc27b2ecf6e409062d" - integrity sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg== + version "7.14.8" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.8.tgz#7119a56f421018852694290b9f9148097391b446" + integrity sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg== dependencies: regenerator-runtime "^0.13.4" @@ -374,24 +375,24 @@ integrity sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ== "@poppinss/chokidar-ts@^3.3.0": - version "3.3.0" - resolved "https://registry.yarnpkg.com/@poppinss/chokidar-ts/-/chokidar-ts-3.3.0.tgz#767512095fc3199286f861548ff3f7c8eb26e36b" - integrity sha512-cQ1zQsfAR1Kgp3c4z90n8IFgSCqSoFXpf3lNn5epMV/04gh+ojE0Vb0rpEHXpFSTW7xzmm7Mx3D0pbjfv8LpfA== + version "3.3.1" + resolved "https://registry.yarnpkg.com/@poppinss/chokidar-ts/-/chokidar-ts-3.3.1.tgz#8d68c7043c1bae21b7028cc4c129c0da55292000" + integrity sha512-S52E849XDUMcam+cE94yp9QWEl9ZTiytGJWM5XtWjTCjfyijn0KoG6DYnntgYPmdSeXZCdXt2DaGrMZM9I6llw== dependencies: builtin-modules "^3.2.0" - chokidar "^3.5.1" + chokidar "^3.5.2" debug "^4.3.1" - emittery "^0.9.0" + emittery "^0.9.2" fs-extra "^10.0.0" mem "^8.1.1" picomatch "^2.3.0" -"@poppinss/cliui@^2.2.4": - version "2.2.4" - resolved "https://registry.yarnpkg.com/@poppinss/cliui/-/cliui-2.2.4.tgz#3859a0e1fa5a830e09b9e41282c42df705dd475d" - integrity sha512-ipmnZE65sLubc7mQJapb3T5NZ+HHKjqVxxzDr0nQuXNXQf+GtBjpt9RQ9K1RfGOcvMkxWEEsoHNLMNNA8KzWKg== +"@poppinss/cliui@^2.2.4", "@poppinss/cliui@^2.2.5": + version "2.2.5" + resolved "https://registry.yarnpkg.com/@poppinss/cliui/-/cliui-2.2.5.tgz#2955057fc2449a1af0692f9d7ef1df2d11713a89" + integrity sha512-qF5Bqa9h0q74d1cQTNVx6xFgUulKzOBn8nE8d9HWzkjEOM+h1h0NI0m5Nl0la3kqANKymBOHM8e0IrMV5w/U+w== dependencies: - "@poppinss/colors" "^2.1.4" + "@poppinss/colors" "^2.1.5" cli-boxes "^3.0.0" cli-table3 "^0.6.0" color-support "^1.1.3" @@ -410,28 +411,28 @@ raw-body "^2.4.1" type-is "^1.6.18" -"@poppinss/colors@^2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@poppinss/colors/-/colors-2.1.4.tgz#4bb3774edd0cfc40f31a5ff2507b95adc5e2caec" - integrity sha512-exilWCx08WvIL0bg6txQJX0WqM5ELnY4Gxc8K0G29UE0mwPoZ14hAWsBSdFea/BXMQGOgV72NoQ7scbRpEt7Ug== +"@poppinss/colors@^2.1.4", "@poppinss/colors@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@poppinss/colors/-/colors-2.1.5.tgz#3a8abb9c8e8828959ead55ee39b82a2c35e671ee" + integrity sha512-C6XChd0fssMe4aXqRrAAGrIKlOySEemKV422JYfBZaS7/qCfvQNIw67b0N03kbrgSrGvEgMUlaJVULlukuZM+g== dependencies: color-support "^1.1.3" kleur "^4.1.4" "@poppinss/hooks@^3.0.4": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@poppinss/hooks/-/hooks-3.0.4.tgz#5caacb51f41077326219b6ea2e941c4c2e3bafff" - integrity sha512-vVtd8v3grQ0JcbZgvUrUIUeMqTcHkE31nJGE/jRxDEbCiusBwBJD6D16a5Wzbl+o6xRldlhIcdDn+AE8PUpuVA== + version "3.0.5" + resolved "https://registry.yarnpkg.com/@poppinss/hooks/-/hooks-3.0.5.tgz#ae491fc11500bc9cb7e24f6b637704e7d9868505" + integrity sha512-kazQstmIPq4n7/qjk5ms9SEiXtLEJ+EMZXxyXTupTVq7URFIUeULgXFv/F3vheLPCSzfByu/L2iO7M457RjszQ== "@poppinss/inspect@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@poppinss/inspect/-/inspect-1.0.1.tgz#b03df9c1204ee72e3b9dbd5c34029c39475fb21d" integrity sha512-kLeEaBSGhlleyYvKc7c9s3uE6xv7cwyulE0EgHf4jU/CL96h0yC4mkdw1wvC1l1PYYQozCGy46FwMBAAMOobCA== -"@poppinss/manager@^4.0.3": - version "4.0.3" - resolved "https://registry.yarnpkg.com/@poppinss/manager/-/manager-4.0.3.tgz#774525b737e7024d92d59e64e03795e406b91083" - integrity sha512-yPGfsgJzAqyKLtES00MvsSmdrkuJDDymG1ZlRw5oEBu34wOZUo2jAR0UZHmLi4xqCjm/7D9RwMLMxj9IH72AZw== +"@poppinss/manager@^4.0.3", "@poppinss/manager@^4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@poppinss/manager/-/manager-4.0.4.tgz#7e71aedbc8e3a32cc5eb53adc78cf861240d0082" + integrity sha512-z9SFv+wKH+aZ5XLZXfkBsEk3h4scFf1imBtGFvlhBklzpplmvY70nSlHTPRC16h1VwjyuWaGuarN+vvQpQoFpA== "@poppinss/matchit@^3.1.2": version "3.1.2" @@ -458,26 +459,25 @@ got "^11.8.2" luxon "^1.27.0" -"@poppinss/prompts@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@poppinss/prompts/-/prompts-1.2.2.tgz#e4c0a582f4782d3a804050a00d80ce461de208e3" - integrity sha512-0gnd1Xt1oAFNj10kcbnPDiSJzpjH+s8Dm0Yt7ZeTn2hQXsc9NJkb8Gz7CMFaHDuNYpdorz3fmvefsM9lTx5/jw== +"@poppinss/prompts@^1.2.2", "@poppinss/prompts@^1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@poppinss/prompts/-/prompts-1.2.3.tgz#c9e7461837a99919d3ccb015aa33afe899a92f0c" + integrity sha512-/jS4KYZwnu6gqojMNT3p0UPLnYI1s7PYW+0xVEf+syXYDuCEE4UWuqLvVcqvuoBkLwAwhwD/hyVPr8NtoCoUYQ== dependencies: - "@poppinss/colors" "^2.1.4" + "@poppinss/colors" "^2.1.5" enquirer "^2.3.6" -"@poppinss/utils@^3.1.2", "@poppinss/utils@^3.1.3": - version "3.1.3" - resolved "https://registry.yarnpkg.com/@poppinss/utils/-/utils-3.1.3.tgz#4bad9bef96b1e70ea85542d11683a9892541d9db" - integrity sha512-A/FGhb+05UGf26rpicvyVCGabtC1Zw3LuugH9eHDYnWS4PLb8tDOdJF+yiOQ6QgGdMbYamzKUsPSgnOgSF4MGA== +"@poppinss/utils@^3.1.3", "@poppinss/utils@^3.1.4", "@poppinss/utils@^3.1.5": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@poppinss/utils/-/utils-3.1.5.tgz#6cac2ecca8960bd08bb408890f84580fa250e84d" + integrity sha512-4+wJauWZa7okjLWvT/uWftzT2uzgUw7XGO9zXrVCJbvIMPBtgIRrtRWNjOHD9Mg74XS3JZlgjVSqvNIQ4ymoqg== dependencies: - "@types/bytes" "^3.1.0" - "@types/he" "^1.1.1" + "@types/bytes" "^3.1.1" + "@types/he" "^1.1.2" buffer-alloc "^1.2.0" bytes "^3.1.0" change-case "^4.1.2" cuid "^2.1.8" - fast-safe-stringify "^2.0.7" fs-readdir-recursive "^1.1.0" he "^1.2.0" kind-of "^6.0.3" @@ -486,7 +486,7 @@ pluralize "^8.0.0" require-all "^3.0.0" resolve-from "^5.0.0" - slugify "^1.5.3" + slugify "^1.6.0" truncatise "0.0.8" "@sindresorhus/is@^4.0.0": @@ -495,9 +495,9 @@ integrity sha512-Qm9hBEBu18wt1PO2flE7LPb30BHMQt1eQgbV76YntdNk73XZGpn3izvGTYxbGgzXKgbCjiia0uxTd3aTNQrY/g== "@szmarczak/http-timer@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.5.tgz#bfbd50211e9dfa51ba07da58a14cdfd333205152" - integrity sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ== + version "4.0.6" + resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-4.0.6.tgz#b4a914bb62e7c272d4e5989fe4440f812ab1d807" + integrity sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w== dependencies: defer-to-connect "^2.0.0" @@ -506,82 +506,77 @@ resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.1.1.tgz#f0d92c12f87079ddfd1b29f614758b9696bc29e3" integrity sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w== -"@types/bytes@^3.1.0": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/bytes/-/bytes-3.1.0.tgz#835a3e4aea3b4d7604aca216a78de372bff3ecc3" - integrity sha512-5YG1AiIC8HPPXRvYAIa7ehK3YMAwd0DWiPCtpuL9sgKceWLyWsVtLRA+lT4NkoanDNF9slwQ66lPizWDpgRlWA== +"@types/bytes@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/bytes/-/bytes-3.1.1.tgz#67a876422e660dc4c10a27f3e5bcfbd5455f01d0" + integrity sha512-lOGyCnw+2JVPKU3wIV0srU0NyALwTBJlVSx5DfMQOFuuohA8y9S8orImpuIQikZ0uIQ8gehrRjxgQC1rLRi11w== "@types/cacheable-request@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/cacheable-request/-/cacheable-request-6.0.1.tgz#5d22f3dded1fd3a84c0bbeb5039a7419c2c91976" - integrity sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ== + 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== dependencies: "@types/http-cache-semantics" "*" "@types/keyv" "*" "@types/node" "*" "@types/responselike" "*" -"@types/debug@^4.1.5": - version "4.1.6" - resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.6.tgz#0b7018723084918a865eff99249c490505df2163" - integrity sha512-7fDOJFA/x8B+sO1901BmHlf5dE1cxBU8mRXj8QOEDnn16hhGJv/IHxJtZhvsabZsIMn0eLIyeOKAeqSNJJYTpA== - "@types/faker@^5.5.6": - version "5.5.6" - resolved "https://registry.yarnpkg.com/@types/faker/-/faker-5.5.6.tgz#039b700a9d8ad9150ecc842bf5e717e2027b6f75" - integrity sha512-UCRj0kLg4sXs2XFVm48OU/wIjyJZkpRkwxhRGVQb5l5GmemkeW22WTz9iiDhYPBUqTzDsIWzhFRuF/4DD5+q2Q== + version "5.5.7" + resolved "https://registry.yarnpkg.com/@types/faker/-/faker-5.5.7.tgz#52aa3ad6ead3642b7c54e1e87e9e3ff5b10b3873" + integrity sha512-ejzb61Q5zQTtS0ZIafgQ7ahO5ACzmGhG5PfX2hxWyth3k0/aysb4ZOxKQB8DbzwSPppA5jmFBwqnBxjv5hqI5Q== "@types/glob@^7.1.1": - version "7.1.3" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" - integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== + version "7.1.4" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672" + integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA== dependencies: "@types/minimatch" "*" "@types/node" "*" -"@types/he@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/he/-/he-1.1.1.tgz#19e14033c4ee8f1a702c74dcc6182664839ac2b7" - integrity sha512-jpzrsR1ns0n3kyWt92QfOUQhIuJGQ9+QGa7M62rO6toe98woQjnsnzjdMtsQXCdvjjmqjS2ZBCC7xKw0cdzU+Q== +"@types/he@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/he/-/he-1.1.2.tgz#0c8b275f36d2b8b651104638e4d45693349c3953" + integrity sha512-kSJPcLO1x+oolc0R89pUl2kozldQ/fVQ1C1p5mp8fPoLdF/ZcBvckaTC2M8xXh3GYendXvCpy5m/a2eSbfgNgw== "@types/http-cache-semantics@*": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz#9140779736aa2655635ee756e2467d787cfe8a2a" - integrity sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A== + 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== -"@types/ioredis@^4.26.4": - version "4.26.4" - resolved "https://registry.yarnpkg.com/@types/ioredis/-/ioredis-4.26.4.tgz#a2b1ed51ddd2c707d7eaac5017cc34a0fe51558a" - integrity sha512-QFbjNq7EnOGw6d1gZZt2h26OFXjx7z+eqEnbCHSrDI1OOLEgOHMKdtIajJbuCr9uO+X9kQQRe7Lz6uxqxl5XKg== +"@types/ioredis@^4.26.6": + version "4.26.6" + resolved "https://registry.yarnpkg.com/@types/ioredis/-/ioredis-4.26.6.tgz#7e332d6d24f12d79a1099834ccfa0c169ef667ed" + integrity sha512-Q9ydXL/5Mot751i7WLCm9OGTj5jlW3XBdkdEW21SkXZ8Y03srbkluFGbM3q8c+vzPW30JOLJ+NsZWHoly0+13A== dependencies: "@types/node" "*" "@types/keyv@*": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.1.tgz#e45a45324fca9dab716ab1230ee249c9fb52cfa7" - integrity sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw== + version "3.1.2" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.2.tgz#5d97bb65526c20b6e0845f6b0d2ade4f28604ee5" + integrity sha512-/FvAK2p4jQOaJ6CGDHJTqZcUtbZe820qIeTg7o0Shg7drB4JHeL+V/dhSaly7NXx6u8eSee+r7coT+yuJEvDLg== dependencies: "@types/node" "*" -"@types/luxon@^1.26.5": - version "1.27.0" - resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-1.27.0.tgz#1e3b5a7f8ca6944349c43498b4442b742c71ab0b" - integrity sha512-rr2lNXsErnA/ARtgFn46NtQjUa66cuwZYeo/2K7oqqxhJErhXgHBPyNKCo+pfOC3L7HFwtao8ebViiU9h4iAxA== +"@types/luxon@^1.26.5", "@types/luxon@^1.27.1": + version "1.27.1" + resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-1.27.1.tgz#aceeb2d5be8fccf541237e184e37ecff5faa9096" + integrity sha512-cPiXpOvPFDr2edMnOXlz3UBDApwUfR+cpizvxCy0n3vp9bz/qe8BWzHPIEFcy+ogUOyjKuCISgyq77ELZPmkkg== "@types/minimatch@*": - version "3.0.4" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21" - integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== -"@types/node@*", "@types/node@^15.3.0": - version "15.12.5" - resolved "https://registry.yarnpkg.com/@types/node/-/node-15.12.5.tgz#9a78318a45d75c9523d2396131bd3cca54b2d185" - integrity sha512-se3yX7UHv5Bscf8f1ERKvQOD6sTyycH3hdaoozvaLxgUiY5lIGEeH37AD0G0Qi9kPqihPn0HOfd2yaIEN9VwEg== +"@types/node@*": + version "16.4.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.0.tgz#2c219eaa3b8d1e4d04f4dd6e40bc68c7467d5272" + integrity sha512-HrJuE7Mlqcjj+00JqMWpZ3tY8w7EUd+S0U3L1+PQSWiXZbOgyQDvi+ogoUxaHApPJq5diKxYBQwA3iIlNcPqOg== "@types/pino-pretty@*": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@types/pino-pretty/-/pino-pretty-4.7.0.tgz#e4a18541f8464d1cc48216f5593cc6a0e62dc2c3" - integrity sha512-fIZ+VXf9gJoJR4tiiM7G+j/bZkPoZEfFGzA4d8tAWCTpTVyvVaBwnmdLs3wEXYpMjw8eXulrOzNCjmGHT3FgHw== + version "4.7.1" + resolved "https://registry.yarnpkg.com/@types/pino-pretty/-/pino-pretty-4.7.1.tgz#2ce3f56f3cf4f9632374419d616ae2e6c933b935" + integrity sha512-l1ntNXdpVWsnPYUk5HyO5Lxfr38zLCgxVfEn/9Zhhm+nGF04/BiIou/m8XPwvoVZLV+livUo79VdHXMJPfUYxA== dependencies: "@types/pino" "*" @@ -592,24 +587,16 @@ dependencies: "@types/node" "*" -"@types/pino@*", "@types/pino@^6.3.8": - version "6.3.8" - resolved "https://registry.yarnpkg.com/@types/pino/-/pino-6.3.8.tgz#ec589318c2798216a0f39882845c5e40b7151b56" - integrity sha512-E47CmRy1FNMaCN8r0d8ECQOjXen9O0p6GGsUjLfmawlxRKosZ82WP1oWVKj+ikTkMDHxWzN5BuKmplo44ynrIg== +"@types/pino@*", "@types/pino@^6.3.9": + version "6.3.9" + resolved "https://registry.yarnpkg.com/@types/pino/-/pino-6.3.9.tgz#dbbbd4a9a6b99935f5ed286c3d998ab83d260482" + integrity sha512-2/XV6adNNCLWnT2lJqcSn/OXrCxRFOY6yXYoofrLy5Ts5e8RHTJP1M4XEcCarQQMa6H6JISaa4GkrlGZwIP5aQ== dependencies: "@types/node" "*" "@types/pino-pretty" "*" "@types/pino-std-serializers" "*" "@types/sonic-boom" "*" -"@types/readable-stream@^2.3.9": - version "2.3.10" - resolved "https://registry.yarnpkg.com/@types/readable-stream/-/readable-stream-2.3.10.tgz#0f1a512ca30bec5e53d3282133b9237a703e7562" - integrity sha512-xwSXvAv9x4B9Vj88AMZnFyEVLilz1EBxKvRUhGqIF4nJpRQBSTm7jS236X4Y9Y2qPsVvaMxwrGJlNhLHEahlFQ== - dependencies: - "@types/node" "*" - safe-buffer "*" - "@types/responselike@*", "@types/responselike@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/responselike/-/responselike-1.0.0.tgz#251f4fe7d154d2bad125abe1b429b23afd262e29" @@ -629,10 +616,10 @@ resolved "https://registry.yarnpkg.com/@types/stack-trace/-/stack-trace-0.0.29.tgz#eb7a7c60098edb35630ed900742a5ecb20cfcb4d" integrity sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g== -"@types/validator@^13.1.3": - version "13.1.4" - resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.1.4.tgz#d2e3c27523ce1b5d9dc13d16cbce65dc4db2adbe" - integrity sha512-19C02B8mr53HufY7S+HO/EHBD7a/R22IwEwyqiHaR19iwL37dN3o0M8RianVInfSSqP7InVSg/o0mUATM4JWsQ== +"@types/validator@^13.6.3": + version "13.6.3" + resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.6.3.tgz#31ca2e997bf13a0fffca30a25747d5b9f7dbb7de" + integrity sha512-fWG42pMJOL4jKsDDZZREnXLjc3UE0R8LOJfARWYg6U966rxDT7TYejYzLnUF5cvSObGg34nd0+H2wHHU5Omdfw== abbrev@1: version "1.1.1" @@ -683,7 +670,7 @@ acorn-walk@^8.0.2: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.1.1.tgz#3ddab7f84e4a7e2313f6c414c5b7dac85f4e3ebc" integrity sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w== -acorn@^8.0.5, acorn@^8.3.0: +acorn@^8.0.5, acorn@^8.4.1: version "8.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== @@ -780,10 +767,10 @@ are-we-there-yet@~1.1.2: delegates "^1.0.0" readable-stream "^2.0.6" -argon2@^0.27.2: - version "0.27.2" - resolved "https://registry.yarnpkg.com/argon2/-/argon2-0.27.2.tgz#f334ca15aee748739ac81f76b85d197841e8cdcc" - integrity sha512-evnzS/Q9rj6ahaaCJjLDoJo9ZuXHhVL2BrBz3wFHb5/i9zAJovBuIY+5t2En7tJjhFXs4O3rUZDeGZxBiDOLwQ== +argon2@^0.28.2: + version "0.28.2" + resolved "https://registry.yarnpkg.com/argon2/-/argon2-0.28.2.tgz#b583e4ef5b052a83bfe146752844b9fa526dba29" + integrity sha512-8oRk3kPlL0lLletENzhpbF9zoZJqvIHwTkjBseMrg1uD4gBMqhqnjJz1z3lEtwT0oqQAEkEwsEpsjaQBBRHcWw== dependencies: "@mapbox/node-pre-gyp" "^1.0.1" "@phc/format" "^1.0.0" @@ -847,7 +834,7 @@ astral-regex@^2.0.0: resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== -astring@^1.7.4: +astring@^1.7.5: version "1.7.5" resolved "https://registry.yarnpkg.com/astring/-/astring-1.7.5.tgz#a7d47fceaf32b052d33a3d07c511efeec67447ca" integrity sha512-lobf6RWXb8c4uZ7Mdq0U12efYmpD1UFnyOWVJPTa3ukqZrMopav+2hdNu0hgBF0JIBFK9QgrBDfwYvh3DFJDAA== @@ -1134,7 +1121,7 @@ cheerio@1.0.0-rc.10, cheerio@^1.0.0-rc.3: parse5-htmlparser2-tree-adapter "^6.0.1" tslib "^2.2.0" -chokidar@^3.0.0, chokidar@^3.5.1: +chokidar@^3.0.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== @@ -1226,10 +1213,10 @@ cluster-key-slot@^1.1.0: resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d" integrity sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw== -co-compose@^6.1.3: - version "6.1.3" - resolved "https://registry.yarnpkg.com/co-compose/-/co-compose-6.1.3.tgz#313ff119d182f7a220c4e93563c6e347deca5c3c" - integrity sha512-P1Nd4PFgHFM5dKtjOgmdwWx653CeTeCXntKQZ7iX48f0wIEoakNIMg2+W6RRpcWa9wdUBS4MiOtJNRspqjg7Bw== +co-compose@^6.1.4: + version "6.1.4" + resolved "https://registry.yarnpkg.com/co-compose/-/co-compose-6.1.4.tgz#4e607a29fdda0428c599683b4d65f9c8f9d91723" + integrity sha512-6CoVwiUNKbCREAwWZdySCXAv0qqYw17L/xW+HOuH9NtBgBbGYsviVaekxMh2Lr5KHS36TyHRbNo3jh3GLRdffg== code-point-at@^1.0.0: version "1.1.0" @@ -1449,14 +1436,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3: dependencies: ms "2.0.0" -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@^4.3.2: +debug@4, debug@4.3.2, debug@^4.3.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== @@ -1604,27 +1584,27 @@ dotenv@^10.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== -edge-error@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/edge-error/-/edge-error-2.0.4.tgz#833cf3eefc6680144a02eaeb934f4545c68d3fb7" - integrity sha512-8oA1IfaPmOfl+hz/O4assGCxnGhSAXz05vYMFQD8uk5Tct47+sr2uGVYOU4JoetYtH2XOZR2PurJJVPyuTKmyg== +edge-error@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/edge-error/-/edge-error-2.0.5.tgz#b439103d32a9f55da08891e85beec38036cc9142" + integrity sha512-1eJm10bEIS6u9N3dR5W0Eecnv4YVtUHralpJp0NdrVLo7H7DXx/s2DIjWoG/HsNkD2mymNVL37eZ+BgvBO5adQ== -edge-lexer@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/edge-lexer/-/edge-lexer-4.0.6.tgz#7c33f5f0fe3a0cc00f0e51f0a559b068bd33aa49" - integrity sha512-esF2KhZYvekx8rJp+0xtzgEwzBByKK5d3jA/ucp/JG+0sO6ZojzgJBXJ9vN8bm6Rc3ZgUEKwgmdYJPNZKcSvzQ== +edge-lexer@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/edge-lexer/-/edge-lexer-4.0.7.tgz#ff89deed437b4e9a565206229d86029769c835a4" + integrity sha512-GtmxqiusZ8mySw8FstBMz2jSt5tOW8OYUf2HMmtHQXJG/R/EgZC1DAU/5m1VUyqSNjpisGyPRls+Qn/MScmZ6g== dependencies: - edge-error "^2.0.4" + edge-error "^2.0.5" -edge-parser@^8.0.7: - version "8.0.7" - resolved "https://registry.yarnpkg.com/edge-parser/-/edge-parser-8.0.7.tgz#2c06e519a77c393a73bc660902f18abbe2338e11" - integrity sha512-5o2S/S8KVMEMbKtTRdlIb0vS/LJ66SsUn4NTs0Qr/3Qee+HoEAKbeDckjY4SIDpX7q+zI/mse85FxhgDWak/5g== +edge-parser@^8.0.10: + version "8.0.10" + resolved "https://registry.yarnpkg.com/edge-parser/-/edge-parser-8.0.10.tgz#bc70fb2f90980ebde5e13559af8ba1f16e327b68" + integrity sha512-Othm9HRmf1uunaJO7I6g1g2EcGvEFvPsIHDosphLL2JydzP6H51QAr34KXDde7aJb+ZlXLHTti8+q+dGM7wFDQ== dependencies: - acorn "^8.3.0" - astring "^1.7.4" - edge-error "^2.0.4" - edge-lexer "^4.0.6" + acorn "^8.4.1" + astring "^1.7.5" + edge-error "^2.0.5" + edge-lexer "^4.0.7" js-stringify "^1.0.2" edge-supercharged@^3.1.1: @@ -1635,18 +1615,18 @@ edge-supercharged@^3.1.1: "@poppinss/utils" "^3.1.3" slash "^3.0.0" -edge.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/edge.js/-/edge.js-5.2.1.tgz#ae2e8a77c5d9867647fa7a768d0ee11ff8f69f65" - integrity sha512-+vduj8qCzRpmUia9e3YKhkwtQBLoW6mBeyUoZU4cUmuEqf/ZFH1FBsb3oBQKLQ3thfJoluKG9ekwoSlFPvLbPA== +edge.js@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/edge.js/-/edge.js-5.3.1.tgz#d31ccca55c67b2f1a7af0a57286ae7054627a29e" + integrity sha512-TWiPo7Unaww1fYll/zMANVma08q2WoG8j7g9iK3fed5AevD0XuBl8N2L9+vCE7TKJmTm/zNP5z8bKbfGWOTRbw== dependencies: "@poppinss/inspect" "^1.0.1" - "@poppinss/utils" "^3.1.3" - edge-error "^2.0.4" - edge-lexer "^4.0.6" - edge-parser "^8.0.7" + "@poppinss/utils" "^3.1.4" + edge-error "^2.0.5" + edge-lexer "^4.0.7" + edge-parser "^8.0.10" js-stringify "^1.0.2" - macroable "^5.1.3" + macroable "^5.1.4" stringify-attributes "^2.0.0" editorconfig@^0.15.3: @@ -1664,7 +1644,7 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -emittery@^0.9.0, emittery@^0.9.2: +emittery@^0.9.2: version "0.9.2" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.9.2.tgz#0a57c40773c6da380115c85bd67d381dd9e22f6f" integrity sha512-sweWHu3j4dQm+NjLPu17pv+m5lCeK7g4Ov0NgfbRUEyzLc59DYDeRYXqlxEvuolaToI0VR3ThjFAghzl7Acjfw== @@ -1837,15 +1817,15 @@ fast-redact@^3.0.0: resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.0.1.tgz#d6015b971e933d03529b01333ba7f22c29961e92" integrity sha512-kYpn4Y/valC9MdrISg47tZOpYBNoTXKgT9GYXFpHN/jYFs+lFkPoisY+LcBODdKVMY96ATzvzsWv+ES/4Kmufw== -fast-safe-stringify@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" - integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== +fast-safe-stringify@^2.0.7, fast-safe-stringify@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz#dc2af48c46cf712b683e849b2bbd446b32de936f" + integrity sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag== fastq@^1.11.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.0.tgz#bb9fb955a07130a918eb63c1f5161cc32a5d0858" - integrity sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g== + version "1.11.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.1.tgz#5d8175aae17db61947f8b162cfc7f63264d22807" + integrity sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw== dependencies: reusify "^1.0.4" @@ -1854,14 +1834,14 @@ file-type@^12.1.0: resolved "https://registry.yarnpkg.com/file-type/-/file-type-12.4.2.tgz#a344ea5664a1d01447ee7fb1b635f72feb6169d9" integrity sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg== -file-type@^16.5.0: - version "16.5.0" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.0.tgz#16a2626f3b33bac612f6e81e52216f3a7c8e12a2" - integrity sha512-OxgWA9tbL8N/WP00GD1z8O0MiwQKFyWRs1q+3FhjdvcGgKqwxcejyGWso3n4/IMU6DdwV+ARZ4A7TTnPkDcSiw== +file-type@^16.5.1: + version "16.5.2" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.2.tgz#e6626f7a253af2ecf499f31995f0e849226825a8" + integrity sha512-lnHRZj2USLF3v4C5ZY7/vQQeoTVA1YV9TtD6UUCr9z5Cd0uyutqxPBJxkXzM6lufPNuSfefq/yFmnSPz0C3wNw== dependencies: readable-web-to-node-stream "^3.0.0" - strtok3 "^6.0.3" - token-types "^2.0.0" + strtok3 "6.1.3" + token-types "^3.0.0" fill-range@^4.0.0: version "4.0.0" @@ -2393,9 +2373,9 @@ is-buffer@^1.1.5: integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== is-core-module@^2.2.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" - integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== + version "2.5.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" + integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== dependencies: has "^1.0.3" @@ -2542,7 +2522,7 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -jest-worker@^27.0.2: +jest-worker@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.6.tgz#a5fdb1e14ad34eb228cfe162d9f729cdbfa28aed" integrity sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA== @@ -2668,19 +2648,19 @@ knex-dynamic-connection@^2.1.1: knex "^0.95.6" knex@^0.95.6: - version "0.95.6" - resolved "https://registry.yarnpkg.com/knex/-/knex-0.95.6.tgz#5fc60ffc2935567bf122925526b1b06b8dbca785" - integrity sha512-noRcmkJl1MdicUbezrcr8OtVLcqQ/cfLIwgAx5EaxNxQOIJff88rBeyLywUScGhQNd/b78DIKKXZzLMrm6h/cw== + version "0.95.7" + resolved "https://registry.yarnpkg.com/knex/-/knex-0.95.7.tgz#9c55c60e3c63077013076b54b5b97376d5a70d41" + integrity sha512-J2X79td0NAcreTyWVmmHHretz5Ox705FHywddjkT3esTtmggphjcfDoaXym18xtsLdjzOvEb53WB/58lqcF14w== dependencies: colorette "1.2.1" commander "^7.1.0" - debug "4.3.1" + debug "4.3.2" escalade "^3.1.1" esm "^3.2.25" getopts "2.2.5" interpret "^2.2.0" lodash "^4.17.21" - pg-connection-string "2.4.0" + pg-connection-string "2.5.0" rechoir "^0.7.0" resolve-from "^5.0.0" tarn "^3.0.1" @@ -2771,14 +2751,19 @@ lru-cache@^6.0.0: yallist "^4.0.0" luxon@^1.27.0: - version "1.27.0" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.27.0.tgz#ae10c69113d85dab8f15f5e8390d0cbeddf4f00f" - integrity sha512-VKsFsPggTA0DvnxtJdiExAucKdAnwbCCNlMM5ENvHlxubqWd0xhZcdb4XgZ7QFNhaRhilXCFxHuoObP5BNA4PA== + version "1.28.0" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.28.0.tgz#e7f96daad3938c06a62de0fb027115d251251fbf" + integrity sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ== -macroable@^5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/macroable/-/macroable-5.1.3.tgz#33db89dc4e3457368bded72f8863f892da568f11" - integrity sha512-vLcoI4Ajn1FqTrO8wJL8wBd8eTXsuzAGpcGmQaWbK7YLrFUhTV69WwAEnyT03HpnwgJL2wzZm6lg6sOJHGTQXA== +luxon@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.0.1.tgz#b41ca2f1f5ad8099c18603ae6c36a7794039daf0" + integrity sha512-8Eawf81c9ZlQj62W3eq4mp+C7SAIAnmaS7ZuEAiX503YMcn+0C1JnMQRtfaQj6B5qTZLgHv0F4H5WabBCvi1fw== + +macroable@^5.1.3, macroable@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/macroable/-/macroable-5.1.4.tgz#7d88f8190288833924e48120e1371e3198a6fa6e" + integrity sha512-6yOJQT7QhYlJqhNWn/B2h+1ylsCnL8dMBmBpdnVNK+02PfQm13Ix4Szx4HiS3rp4a28EKckCGW27gtTZoYXYYQ== make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0: version "3.1.0" @@ -3303,9 +3288,9 @@ mri@1.1.4: integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== mrm-core@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/mrm-core/-/mrm-core-6.0.0.tgz#50210c3b911d4640f77eb9cff9490927552a0205" - integrity sha512-YDPzvzwigy2ke2aiw7kdaSeNy7x9MNVdXR6lyrKAYX9vufs4dOUjdtgkHuwAgAMqPElIMqchgLakpnuvXVh4bw== + version "6.1.2" + resolved "https://registry.yarnpkg.com/mrm-core/-/mrm-core-6.1.2.tgz#df594b20d33b0ba675bb888adbfe7e59e0df9676" + integrity sha512-OoN/QMSfBazJaPF+ZdXZYEiFcJde4jk/FPLUg2YAyL3LbXEW4zRUpTlv0IKrHtzTs2BUsKOuM0VuGlwRF8YtWQ== dependencies: babel-code-frame "^6.26.0" comment-json "^2.2.0" @@ -3451,10 +3436,10 @@ node-repl-await@^0.1.2: acorn-static-class-features "^1.0.0" acorn-walk "^8.0.2" -nodemailer@^6.6.1: - version "6.6.2" - resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.6.2.tgz#e184c9ed5bee245a3e0bcabc7255866385757114" - integrity sha512-YSzu7TLbI+bsjCis/TZlAXBoM4y93HhlIgo0P5oiA2ua9Z4k+E2Fod//ybIzdJxOlXGRcHIh/WaeCBehvxZb/Q== +nodemailer@^6.6.2: + version "6.6.3" + resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.6.3.tgz#31fb53dd4d8ae16fc088a65cb9ffa8d928a69b48" + integrity sha512-faZFufgTMrphYoDjvyVpbpJcYzwyFnbAMmQtj1lVBYAUSm3SOy2fIdd9+Mr4UxPosBa0JRw9bJoIwQn+nswiew== nopt@^5.0.0: version "5.0.0" @@ -3468,7 +3453,7 @@ normalize-path@^3.0.0, normalize-path@~3.0.0: resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== -normalize-url@^6.0.1: +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== @@ -3517,9 +3502,9 @@ object-copy@^0.1.0: kind-of "^3.0.3" object-inspect@^1.9.0: - version "1.10.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" - integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== + version "1.11.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" + integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== object-visit@^1.0.0: version "1.0.1" @@ -3737,24 +3722,24 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" -peek-readable@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-3.1.3.tgz#932480d46cf6aa553c46c68566c4fb69a82cd2b1" - integrity sha512-mpAcysyRJxmICBcBa5IXH7SZPvWkcghm6Fk8RekoS3v+BpbSzlZzuWbMx+GXrlUwESi9qHar4nVEZNMKylIHvg== +peek-readable@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-3.1.4.tgz#f5c3b41a4eeb63a1322c4131f0b5bac7105b892e" + integrity sha512-DX7ec7frSMtCWw+zMd27f66hcxIz/w9LQTY2RflB4WNHCVPAye1pJiP2t3gvaaOhu7IOhtPbHw8MemMj+F5lrg== -pg-connection-string@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.4.0.tgz#c979922eb47832999a204da5dbe1ebf2341b6a10" - integrity sha512-3iBXuv7XKvxeMrIgym7njT+HlZkwZqqGX4Bu9cci8xHZNT+Um1gWKqCsAzcC0d95rcKMU5WBg6YRUcHyV0HZKQ== +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== phc-argon2@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/phc-argon2/-/phc-argon2-1.1.1.tgz#565b9de5289905a4f030f0f3944ef832a92ff485" - integrity sha512-UBFG+AsK5IzD0xZOEOplUyZibtRsaC97OxH/4+2Ai55IUONDi6NnELwis4jt8+CEjNBoemcY5273n4l+jNa1Rg== + version "1.1.2" + resolved "https://registry.yarnpkg.com/phc-argon2/-/phc-argon2-1.1.2.tgz#aa3f0fb9301a8322c81577d8a37fbb287adbb3e6" + integrity sha512-R+1G4/lZHPQrLKiYBSio7xhU0vhfP5mxLYJBuWWiGAtynorRM4QtQGZcvnT4BTaRZOUaCaqlR4PC8cBrQmxZ3A== dependencies: "@kdf/salt" "^2.0.1" "@phc/format" "^1.0.0" - argon2 "^0.27.2" + argon2 "^0.28.2" tsse "^2.0.0" picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.0: @@ -3773,12 +3758,11 @@ pify@^4.0.1: integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== pino-pretty@^5.0.2: - version "5.1.0" - resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-5.1.0.tgz#a7e6dcace4da4fd0d9763ff95957ebbf4b810fbb" - integrity sha512-fpDU80MKP59XOWxqV8crTDjRegC2fbDsA56zTr5s1guiv6QuYHILc9x1a4+o9SNPtfmF2kQdpAZS+bIExtbELQ== + version "5.1.2" + resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-5.1.2.tgz#1c0e89cc86f7add87492edbe6c50ae4dd5982fa9" + integrity sha512-20HWKSHFvF/pF/C4spBVW0RQdnBYptCj4Bwgb6pFkWY5FOYiElCGHkkPU1173iK8fsoiBMHMEvS0wB2loQZJ+Q== dependencies: "@hapi/bourne" "^2.0.0" - "@types/node" "^15.3.0" args "^5.0.1" chalk "^4.0.0" dateformat "^4.5.1" @@ -3796,13 +3780,13 @@ pino-std-serializers@^3.1.0: resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz#b56487c402d882eb96cd67c257868016b61ad671" integrity sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg== -pino@^6.11.3: - version "6.11.3" - resolved "https://registry.yarnpkg.com/pino/-/pino-6.11.3.tgz#0c02eec6029d25e6794fdb6bbea367247d74bc29" - integrity sha512-drPtqkkSf0ufx2gaea3TryFiBHdNIdXKf5LN0hTM82SXI4xVIve2wLwNg92e1MT6m3jASLu6VO7eGY6+mmGeyw== +pino@^6.12.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/pino/-/pino-6.13.0.tgz#41810b9be213af6f8f7c23a1b17058d880267e7b" + integrity sha512-mRXSTfa34tbfrWqCIp1sUpZLqBhcoaGapoyxfEwaWwJGMpLijlRdDKIQUyvq4M3DUfFH5vEglwSw8POZYwbThA== dependencies: fast-redact "^3.0.0" - fast-safe-stringify "^2.0.7" + fast-safe-stringify "^2.0.8" flatstr "^1.0.12" pino-std-serializers "^3.1.0" quick-format-unescaped "^4.0.3" @@ -3945,11 +3929,10 @@ readable-stream@^3.0.0, readable-stream@^3.6.0: util-deprecate "^1.0.1" readable-web-to-node-stream@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.1.tgz#3f619b1bc5dd73a4cfe5c5f9b4f6faba55dff845" - integrity sha512-4zDC6CvjUyusN7V0QLsXVB7pJCD9+vtrM9bYDRv6uBQ+SKfx36rp5AFNPRgh9auKRul/a1iFZJYXcCbwRL+SaA== + version "3.0.2" + resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" + integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw== dependencies: - "@types/readable-stream" "^2.3.9" readable-stream "^3.6.0" readdirp@~3.6.0: @@ -3967,9 +3950,9 @@ readme-badger@^0.3.0: balanced-match "^1.0.0" rechoir@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" - integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== + version "0.7.1" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" + integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== dependencies: resolve "^1.9.0" @@ -4105,16 +4088,16 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -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== - safe-buffer@5.1.2, 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== +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== + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -4187,6 +4170,11 @@ set-blocking@~2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= +set-cookie-parser@^2.4.8: + version "2.4.8" + resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.4.8.tgz#d0da0ed388bc8f24e706a391f9c9e252a13c58b2" + integrity sha512-edRH8mBKEWNVIVMKejNnuJxleqYE/ZSdcT8/Nem9/mmosx12pctd80s2Oy00KNZzrogMZS5mauK2/ymL1bvlvg== + set-value@^2.0.0, set-value@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" @@ -4267,10 +4255,10 @@ slick@^1.12.2: resolved "https://registry.yarnpkg.com/slick/-/slick-1.12.2.tgz#bd048ddb74de7d1ca6915faa4a57570b3550c2d7" integrity sha1-vQSN23TefRymkV+qSldXCzVQwtc= -slugify@^1.5.3: - version "1.5.3" - resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.5.3.tgz#36e009864f5476bfd5db681222643d92339c890d" - integrity sha512-/HkjRdwPY3yHJReXu38NiusZw2+LLE2SrhkWJtmlPDB1fqFSvioYj62NkPcrKiNCgRLeGcGK7QBvr1iQwybeXw== +slugify@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.6.0.tgz#6bdf8ed01dabfdc46425b67e3320b698832ff893" + integrity sha512-FkMq+MQc5hzYgM86nLuHI98Acwi3p4wX+a5BO9Hhw4JdK4L7WueIiZ4tXEobImPqBz2sVcV0+Mu3GRB30IGang== smpltmpl@^1.0.2: version "1.0.2" @@ -4494,14 +4482,13 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -strtok3@^6.0.3: - version "6.0.8" - resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.0.8.tgz#c839157f615c10ba0f4ae35067dad9959eeca346" - integrity sha512-QLgv+oiXwXgCgp2PdPPa+Jpp4D9imK9e/0BsyfeFMr6QL6wMVqoVn9+OXQ9I7MZbmUzN6lmitTJ09uwS2OmGcw== +strtok3@6.1.3: + version "6.1.3" + resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.1.3.tgz#488fe8ca91664cf93432c94752ba9e5c785bd9dd" + integrity sha512-ssWSKFOeUTurMSucgyUf+a6Z9mVTYrsYiyEK5RLnh8BM6sFrKSljVlnjZXIDxMguYfdQI+mUPFHo88FYTxq1XA== dependencies: "@tokenizer/token" "^0.1.1" - "@types/debug" "^4.1.5" - peek-readable "^3.1.3" + peek-readable "^3.1.4" supports-color@^2.0.0: version "2.0.0" @@ -4606,10 +4593,10 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -token-types@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/token-types/-/token-types-2.1.1.tgz#bd585d64902aaf720b8979d257b4b850b4d45c45" - integrity sha512-wnQcqlreS6VjthyHO3Y/kpK/emflxDBNhlNUPfh7wE39KnuDdOituXomIbyI79vBtF0Ninpkh72mcuRHo+RG3Q== +token-types@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/token-types/-/token-types-3.1.0.tgz#df3902b514ba7573d8c6a2c0a6f69d1ac6a6f544" + integrity sha512-WhoeIW7UTn7NC7L0t/4x3vU/YYSS1oeUxYgiGXQLd82Kaf1qtlxOex3ETY0+o2QuRgAdyursMlUhQBKDCfMUkQ== dependencies: "@tokenizer/token" "^0.1.1" ieee754 "^1.2.1" @@ -4827,9 +4814,9 @@ yallist@^4.0.0: integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml@^2.0.0-1: - version "2.0.0-6" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.0.0-6.tgz#3d858d656b9ef13a95c77d083b816e6a8d16caa0" - integrity sha512-YPUm0Z0sei53zauT7HWkkxyIBJhb9Gnf5jv4w4ahw5/v3PjFGhZOt4paXH6g9hzcMJqmNxZwoGfF1JzE2jvSgg== + version "2.0.0-7" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.0.0-7.tgz#9799d9d85dfc8f01e4cc425e18e09215364beef1" + integrity sha512-RbI2Tm3hl9AoHY4wWyWvGvJfFIbHOzuzaxum6ez1A0vve+uXgNor03Wys4t+2sgjJSVSe+B2xerd1/dnvqHlOA== yargs-parser@^20.2.2: version "20.2.9" From 9cd972f7caed257881d73f405c1503dd0c192480 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 21 Jul 2021 13:10:42 +0200 Subject: [PATCH 073/244] add logger Signed-off-by: Arthur DANJOU --- app/Controllers/Http/AuthController.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index e615351..cdc30ad 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -1,7 +1,6 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import User from "App/Models/User"; import {AllyUserContract} from "@ioc:Adonis/Addons/Ally"; -import Logger from "@ioc:Adonis/Core/Logger"; export default class AuthController { @@ -125,8 +124,6 @@ export default class AuthController { const githubUser = await github.user() const user = await this.createUser(githubUser) - Logger.info(response.getHeaders().toString()) - Logger.info(String(response)) await auth.use('web').login(user, true) return response.status(200).send({ user: user @@ -158,7 +155,9 @@ export default class AuthController { const user = await this.createUser(googleUser) await auth.use('web').login(user, true) return response.status(200).send({ - user: user + user: user, + response: response, + headers: response.getHeaders() }) } From 405b78846b91b8723b6669d0166c6306a483cbee Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 21 Jul 2021 13:16:31 +0200 Subject: [PATCH 074/244] Working Signed-off-by: Arthur DANJOU --- app/Controllers/Http/AuthController.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index cdc30ad..6c8736e 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -155,9 +155,7 @@ export default class AuthController { const user = await this.createUser(googleUser) await auth.use('web').login(user, true) return response.status(200).send({ - user: user, - response: response, - headers: response.getHeaders() + user: user }) } From ed17d869137f42c0f427d0e41cce34beaa3c4c26 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 5 Aug 2021 13:41:57 +0200 Subject: [PATCH 075/244] Working Signed-off-by: Arthur DANJOU --- app/Models/Announce.ts | 24 + app/Models/Profile.ts | 22 + app/Models/Project.ts | 8 +- app/Models/Song.ts | 34 - app/Models/Translation.ts | 22 + .../migrations/1603020084373_subscribers.ts | 17 + database/migrations/1605956543449_files.ts | 18 + database/migrations/1605956711010_posts.ts | 18 + .../migrations/1608409476823_locations.ts | 19 + database/migrations/1608415261417_projects.ts | 20 + database/migrations/1618661863952_forms.ts | 20 + database/migrations/1625078903131_users.ts | 36 + .../migrations/1625078908619_api_tokens.ts | 21 + .../migrations/1628110081266_translations.ts | 19 + database/migrations/1628110086918_profiles.ts | 19 + database/migrations/1628110400158_projects.ts | 17 + package.json | 2 +- yarn.lock | 710 +++++++++--------- 18 files changed, 657 insertions(+), 389 deletions(-) create mode 100644 app/Models/Announce.ts create mode 100644 app/Models/Profile.ts delete mode 100755 app/Models/Song.ts create mode 100644 app/Models/Translation.ts create mode 100644 database/migrations/1603020084373_subscribers.ts create mode 100644 database/migrations/1605956543449_files.ts create mode 100644 database/migrations/1605956711010_posts.ts create mode 100644 database/migrations/1608409476823_locations.ts create mode 100644 database/migrations/1608415261417_projects.ts create mode 100644 database/migrations/1618661863952_forms.ts create mode 100644 database/migrations/1625078903131_users.ts create mode 100644 database/migrations/1625078908619_api_tokens.ts create mode 100644 database/migrations/1628110081266_translations.ts create mode 100644 database/migrations/1628110086918_profiles.ts create mode 100644 database/migrations/1628110400158_projects.ts diff --git a/app/Models/Announce.ts b/app/Models/Announce.ts new file mode 100644 index 0000000..62abe8f --- /dev/null +++ b/app/Models/Announce.ts @@ -0,0 +1,24 @@ +import {DateTime} from 'luxon' +import {BaseModel, BelongsTo, belongsTo, column, HasOne, hasOne} from '@ioc:Adonis/Lucid/Orm' +import File from "App/Models/File"; +import Translation from "App/Models/Translation"; + +export default class Announce extends BaseModel { + @column({ isPrimary: true }) + public id: number + + @belongsTo(() => Translation) + public message: BelongsTo + + @column() + public messageId: number + + @hasOne(() => File) + public cover: HasOne + + @column.dateTime({ autoCreate: true }) + public createdAt: DateTime + + @column.dateTime({ autoCreate: true, autoUpdate: true }) + public updatedAt: DateTime +} diff --git a/app/Models/Profile.ts b/app/Models/Profile.ts new file mode 100644 index 0000000..eda9e1d --- /dev/null +++ b/app/Models/Profile.ts @@ -0,0 +1,22 @@ +import {DateTime} from 'luxon' +import {BaseModel, column} from '@ioc:Adonis/Lucid/Orm' + +export default class Profile extends BaseModel { + @column({ isPrimary: true }) + public id: number + + @column() + public age: number + + @column() + public hiringStatus: string + + @column() + public hiringColor: string + + @column.dateTime({ autoCreate: true }) + public createdAt: DateTime + + @column.dateTime({ autoCreate: true, autoUpdate: true }) + public updatedAt: DateTime +} diff --git a/app/Models/Project.ts b/app/Models/Project.ts index 041d0f6..59efb0a 100755 --- a/app/Models/Project.ts +++ b/app/Models/Project.ts @@ -1,5 +1,6 @@ -import { DateTime } from 'luxon' -import { BaseModel, column } from '@ioc:Adonis/Lucid/Orm' +import {DateTime} from 'luxon' +import {BaseModel, column, HasOne, hasOne} from '@ioc:Adonis/Lucid/Orm' +import File from "App/Models/File"; export default class Project extends BaseModel { @column({ isPrimary: true }) @@ -17,6 +18,9 @@ export default class Project extends BaseModel { @column() public url: string + @hasOne(() => File) + public cover: HasOne + @column.dateTime({ autoCreate: true }) public createdAt: DateTime diff --git a/app/Models/Song.ts b/app/Models/Song.ts deleted file mode 100755 index bb65730..0000000 --- a/app/Models/Song.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { DateTime } from 'luxon' -import { BaseModel, column } from '@ioc:Adonis/Lucid/Orm' - -export default class Song extends BaseModel { - @column({ isPrimary: true }) - public id: number - - @column() - public author: string - - @column() - public album: string - - @column() - public title: string - - @column() - public type: string - - @column() - public device: string - - @column() - public duration: number - - @column.date() - public releaseDate: DateTime - - @column.dateTime({ autoCreate: true }) - public createdAt: DateTime - - @column.dateTime({ autoCreate: true, autoUpdate: true }) - public updatedAt: DateTime -} diff --git a/app/Models/Translation.ts b/app/Models/Translation.ts new file mode 100644 index 0000000..4a159c4 --- /dev/null +++ b/app/Models/Translation.ts @@ -0,0 +1,22 @@ +import {DateTime} from 'luxon' +import {BaseModel, column} from '@ioc:Adonis/Lucid/Orm' + +export default class Translation extends BaseModel { + @column({ isPrimary: true }) + public id: number + + @column() + public code: string + + @column() + public french: string + + @column() + public english: string + + @column.dateTime({ autoCreate: true }) + public createdAt: DateTime + + @column.dateTime({ autoCreate: true, autoUpdate: true }) + public updatedAt: DateTime +} diff --git a/database/migrations/1603020084373_subscribers.ts b/database/migrations/1603020084373_subscribers.ts new file mode 100644 index 0000000..f0c605a --- /dev/null +++ b/database/migrations/1603020084373_subscribers.ts @@ -0,0 +1,17 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class Subscribers extends BaseSchema { + protected tableName = 'subscribers' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table.string('email').notNullable() + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/database/migrations/1605956543449_files.ts b/database/migrations/1605956543449_files.ts new file mode 100644 index 0000000..54560fb --- /dev/null +++ b/database/migrations/1605956543449_files.ts @@ -0,0 +1,18 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class Pictures extends BaseSchema { + protected tableName = 'files' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table.string('label').notNullable() + table.string('file_name').notNullable() + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/database/migrations/1605956711010_posts.ts b/database/migrations/1605956711010_posts.ts new file mode 100644 index 0000000..4a30245 --- /dev/null +++ b/database/migrations/1605956711010_posts.ts @@ -0,0 +1,18 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class Posts extends BaseSchema { + protected tableName = 'posts' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table.string('slug').notNullable() + table.integer('likes').notNullable() + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/database/migrations/1608409476823_locations.ts b/database/migrations/1608409476823_locations.ts new file mode 100644 index 0000000..de1d485 --- /dev/null +++ b/database/migrations/1608409476823_locations.ts @@ -0,0 +1,19 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class Locations extends BaseSchema { + protected tableName = 'locations' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table.string('place') + table.string('left') + table.date('since') + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/database/migrations/1608415261417_projects.ts b/database/migrations/1608415261417_projects.ts new file mode 100644 index 0000000..85919de --- /dev/null +++ b/database/migrations/1608415261417_projects.ts @@ -0,0 +1,20 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class Projects extends BaseSchema { + protected tableName = 'projects' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table.string('name') + table.string('description') + table.string('url') + table.integer('progress') + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/database/migrations/1618661863952_forms.ts b/database/migrations/1618661863952_forms.ts new file mode 100644 index 0000000..d59a0ed --- /dev/null +++ b/database/migrations/1618661863952_forms.ts @@ -0,0 +1,20 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class Forms extends BaseSchema { + protected tableName = 'forms' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table.string('name') + table.string('email') + table.string('subject') + table.string('content') + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/database/migrations/1625078903131_users.ts b/database/migrations/1625078903131_users.ts new file mode 100644 index 0000000..ba44cb0 --- /dev/null +++ b/database/migrations/1625078903131_users.ts @@ -0,0 +1,36 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' +import Hash from "@ioc:Adonis/Core/Hash"; + +export default class Users extends BaseSchema { + protected tableName = 'users' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table.string('username', 255).notNullable() + table.string('email', 255).notNullable() + table.string('password', 180).defaultTo(this.randomPassword()).notNullable() + table.boolean('is_confirmed').defaultTo(false).notNullable() + table.string('remember_me_token').defaultTo(null).nullable() + table.string('confirmation_token').defaultTo(null).nullable() + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } + + private randomPassword(): string { + let password = '' + const char = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!.:=+-_$*^&@#%ù/àçè()é"' + const size = 64 + for (let i = 0; i < size; i++) { + password += char.charAt(Math.random() * char.length) + } + Hash.make(password).then((value => { + password = value + })) + return password + } +} diff --git a/database/migrations/1625078908619_api_tokens.ts b/database/migrations/1625078908619_api_tokens.ts new file mode 100644 index 0000000..96fd16c --- /dev/null +++ b/database/migrations/1625078908619_api_tokens.ts @@ -0,0 +1,21 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class ApiTokens extends BaseSchema { + protected tableName = 'api_tokens' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table.integer('user_id').unsigned().references('id').inTable('users').onDelete('CASCADE') + table.string('name').notNullable() + table.string('type').notNullable() + table.string('token', 64).notNullable() + table.timestamp('expires_at', { useTz: true }).nullable() + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/database/migrations/1628110081266_translations.ts b/database/migrations/1628110081266_translations.ts new file mode 100644 index 0000000..b74a945 --- /dev/null +++ b/database/migrations/1628110081266_translations.ts @@ -0,0 +1,19 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class Translations extends BaseSchema { + protected tableName = 'translations' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id') + table.string('code').notNullable() + table.string('french').defaultTo('Traduction manquante') + table.string('code').defaultTo('Missing translation') + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/database/migrations/1628110086918_profiles.ts b/database/migrations/1628110086918_profiles.ts new file mode 100644 index 0000000..e4bae15 --- /dev/null +++ b/database/migrations/1628110086918_profiles.ts @@ -0,0 +1,19 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class Profiles extends BaseSchema { + protected tableName = 'profiles' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id') + table.integer('age').notNullable() + table.string('hiring_color').notNullable() + table.string('hiring_status').notNullable() + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/database/migrations/1628110400158_projects.ts b/database/migrations/1628110400158_projects.ts new file mode 100644 index 0000000..2921953 --- /dev/null +++ b/database/migrations/1628110400158_projects.ts @@ -0,0 +1,17 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class Projects extends BaseSchema { + protected tableName = 'projects' + + public async up () { + this.schema.table(this.tableName, (table) => { + table.integer('cover_id').unsigned().references('files.id').onDelete('CASCADE') + }) + } + + public async down () { + this.schema.table(this.tableName, (table) => { + table.dropColumn('cover_id') + }) + } +} diff --git a/package.json b/package.json index 44cf9fb..770e01f 100755 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "@adonisjs/ally": "^4.1.0", "@adonisjs/auth": "^8.0.6", "@adonisjs/bouncer": "^2.2.4", - "@adonisjs/core": "~5.1.8", + "@adonisjs/core": "^5.1.10", "@adonisjs/lucid": "^15.0.1", "@adonisjs/mail": "^7.2.1", "@adonisjs/redis": "^7.0.6", diff --git a/yarn.lock b/yarn.lock index 446c145..fa5db45 100644 --- a/yarn.lock +++ b/yarn.lock @@ -25,17 +25,17 @@ "@poppinss/oauth-client" "^2.0.4" "@poppinss/utils" "^3.1.3" -"@adonisjs/application@^5.1.4", "@adonisjs/application@^5.1.5": - version "5.1.5" - resolved "https://registry.yarnpkg.com/@adonisjs/application/-/application-5.1.5.tgz#93831ab8c4d4d1107e2665d33ba78290bdb24666" - integrity sha512-hzapilbQ+2Zbeac6RvmZBt56fj/H4aVNWhpM3PjlNOZZuUzVQmdSQd1dtkgmx7VJETPqXnRts8AlnWdF9xIbsw== +"@adonisjs/application@^5.1.4", "@adonisjs/application@^5.1.6": + version "5.1.6" + resolved "https://registry.yarnpkg.com/@adonisjs/application/-/application-5.1.6.tgz#da3043163b49ab35aa5dc1bfcc4ed4ba38d63f65" + integrity sha512-xg6fkCCXijMmkoZ40ih8T1QF50Dj0J7EQ1I54TWfFCFEHsIYhXrCZxeWZEpMRHsTAWaPpP0GTnMrOac/+ERWsQ== dependencies: "@adonisjs/config" "^3.0.5" "@adonisjs/env" "^3.0.5" "@adonisjs/fold" "^8.1.5" - "@adonisjs/logger" "^4.0.5" + "@adonisjs/logger" "^4.1.0" "@adonisjs/profiler" "^6.0.6" - "@poppinss/utils" "^3.1.4" + "@poppinss/utils" "^3.1.5" semver "^7.3.5" "@adonisjs/assembler@^5.3.2": @@ -70,16 +70,16 @@ luxon "^1.27.0" "@adonisjs/bodyparser@^7.1.4": - version "7.1.4" - resolved "https://registry.yarnpkg.com/@adonisjs/bodyparser/-/bodyparser-7.1.4.tgz#d890e4a32559aca449070cabcb8f80f03063f1e3" - integrity sha512-QoypAkEh4fHGNncg+dp1CLF+T3ouXtHsp5nMRIrfRzxLcVsfyfo/nDaQgoQEf0WoifOQfCqKUOktfN63Nhoc+A== + version "7.1.5" + resolved "https://registry.yarnpkg.com/@adonisjs/bodyparser/-/bodyparser-7.1.5.tgz#dbe044a9c595bdca8b8dd965dda45e911080776c" + integrity sha512-wiWYHTKJixLZIVq04dHCp9ok8FhiRDVSre1AgPzCtGFGjQf+qXjqfPNCEiPozt+ffKWNaDAUL8PGqJsDSmLuDA== dependencies: "@poppinss/co-body" "^1.1.3" "@poppinss/multiparty" "^1.0.2" "@poppinss/utils" "^3.1.5" bytes "^3.1.0" end-of-stream "^1.4.4" - file-type "^16.5.1" + file-type "^16.5.2" fs-extra "^10.0.0" media-typer "^1.1.0" @@ -97,18 +97,18 @@ dependencies: "@poppinss/utils" "^3.1.4" -"@adonisjs/core@~5.1.8": - version "5.1.10" - resolved "https://registry.yarnpkg.com/@adonisjs/core/-/core-5.1.10.tgz#62391323865786c7535fbec645a72aa4bba97c90" - integrity sha512-lK9N96WI8eOiOFsGwsxGSaCbiI+ny4wNNWwWTi81VkxGgSCJFdvoQ/frvOe//J5MMczm9v5b4mC1IvVgyQz1Rw== +"@adonisjs/core@^5.1.10": + version "5.1.11" + resolved "https://registry.yarnpkg.com/@adonisjs/core/-/core-5.1.11.tgz#fff8ac93dbf38e9d0eda2603d9c1fa0c2066633e" + integrity sha512-iBoV7cGMhq5TiUt1B89dnMRnOWma2kmkL0LE9RfzYUPMyNspyWPNr93E5RQ+ml7xAQr74bAyKVywImLHIy4nOw== dependencies: "@adonisjs/ace" "^11.0.3" - "@adonisjs/application" "^5.1.5" + "@adonisjs/application" "^5.1.6" "@adonisjs/bodyparser" "^7.1.4" "@adonisjs/encryption" "^4.0.5" "@adonisjs/events" "^7.1.2" "@adonisjs/hash" "^7.0.8" - "@adonisjs/http-server" "^5.5.1" + "@adonisjs/http-server" "^5.5.2" "@adonisjs/validator" "^11.0.4" "@poppinss/cliui" "^2.2.5" "@poppinss/utils" "^3.1.5" @@ -155,10 +155,10 @@ "@poppinss/manager" "^4.0.4" "@poppinss/utils" "^3.1.4" -"@adonisjs/http-server@^5.5.1": - version "5.5.1" - resolved "https://registry.yarnpkg.com/@adonisjs/http-server/-/http-server-5.5.1.tgz#3c13c2f08e131efddcaf0df7f6fd0275f64a3af4" - integrity sha512-Ej/pbvO6RDjxj9FD3ef0VI+LDc66VQ9ZFoDqvfic05zi4N0oHJxnBtJQRsIEjns3AtDkgk5I1byylp9+kf0FZA== +"@adonisjs/http-server@^5.5.2": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@adonisjs/http-server/-/http-server-5.5.4.tgz#8d04373b4a31edcea7cad4028c3c15ae619b5537" + integrity sha512-SQbDpQEbG+SZ3pnjNRcCVVBH9T4Zyi+ydoLG6oBIJfAYzzkOX7mZFyj9HOTkgJR361Jxb7l8+kkIDnTJ1v6O+Q== dependencies: "@poppinss/matchit" "^3.1.2" "@poppinss/utils" "^3.1.5" @@ -188,15 +188,15 @@ resolved "https://registry.yarnpkg.com/@adonisjs/ioc-transformer/-/ioc-transformer-2.3.1.tgz#9157cb03d0202a36b9a75712462b195171c4ce8d" integrity sha512-/pbMSy2gmswWvvSdy4EbLHzr9Oa8gsIlM01n8J8xbO3QW3z1JRuZy2SbmD06OveW4b5dm/Hn0hC8GK2cY+nRgg== -"@adonisjs/logger@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@adonisjs/logger/-/logger-4.0.5.tgz#f28e32438874f33e71f7f2d749c91c02096fe399" - integrity sha512-GdB5/TFc+Kd7T7DDnmjdByahrzXRooJzqhD9i+FxYGa2X+AHTH06pNaACemnWLppQCHOJB+aiuW+wrcgK6/7XA== +"@adonisjs/logger@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@adonisjs/logger/-/logger-4.1.0.tgz#0249ea8938e2200663a4de847923e6c2e1dbe81e" + integrity sha512-Baxx9FiI/rRQ2U58TpTYf5psG345YzTVs0Fh2lHP1f33wekjYLHFbHSjo/1vJDIBEAR0/4udO2BbBNG9jKa10Q== dependencies: - "@poppinss/utils" "^3.1.4" + "@poppinss/utils" "^3.1.5" "@types/pino" "^6.3.9" abstract-logging "^2.0.1" - pino "^6.12.0" + pino "^6.13.0" "@adonisjs/lucid@^15.0.1": version "15.0.3" @@ -218,19 +218,19 @@ slash "^3.0.0" "@adonisjs/mail@^7.2.1": - version "7.2.2" - resolved "https://registry.yarnpkg.com/@adonisjs/mail/-/mail-7.2.2.tgz#82f0f64ef6052c9affedb67b095bd8eb91b6c0d0" - integrity sha512-yTN8Nz4S4+brHZZSkRTelKz78m0PlXyq+2K27fOlvLuXzJfs6CZOvZ2SZsFwo0h/dA05xJMOIA9gttzR8rKKRw== + version "7.2.3" + resolved "https://registry.yarnpkg.com/@adonisjs/mail/-/mail-7.2.3.tgz#d3e1f0fe6cff66d50ca0e4200c815c8dfd4cff24" + integrity sha512-JFpSuBtLIVTANbLdOuPqYlViOAU1PFqgG11uSCFjTj/V5qqGaKpFsH6AM1AVnupFIUoYChy5eMcrWOX3+BWXcQ== dependencies: - "@poppinss/colors" "^2.1.4" - "@poppinss/manager" "^4.0.3" - "@poppinss/utils" "^3.1.3" - fastq "^1.11.0" + "@poppinss/colors" "^2.1.5" + "@poppinss/manager" "^4.0.4" + "@poppinss/utils" "^3.1.5" + fastq "^1.11.1" get-stream "^6.0.1" got "^11.8.2" - ical-generator "^2.2.0" + ical-generator "^3.0.0-develop.4" multi-part "^3.0.0" - nodemailer "^6.6.2" + nodemailer "^6.6.3" "@adonisjs/profiler@^6.0.6": version "6.0.6" @@ -311,9 +311,9 @@ validator "^13.6.0" "@adonisjs/view@^6.0.3": - version "6.0.7" - resolved "https://registry.yarnpkg.com/@adonisjs/view/-/view-6.0.7.tgz#baf186a01d7c3ada8afb61582523931b57032c1c" - integrity sha512-Jesr9bu0UK58vu76sxwbDfKcwkjgLpy1MmWR1fyHmQfgc/UudPIFUN+Dx+61//hCbtgsMn6JppWE2TAmBwzGaA== + version "6.0.8" + resolved "https://registry.yarnpkg.com/@adonisjs/view/-/view-6.0.8.tgz#22cc403975d1dc8d617e13796ec9c1bb134e8ac2" + integrity sha512-HJSPGeYgeuYKJ9dv+bVTF9jkphRZtaDE5bJXFuNdPCnJc6GS58OBugoS/DBlGpYoPe+uImPdHlEvWaETnttSuQ== dependencies: edge-error "^2.0.5" edge-supercharged "^3.1.1" @@ -411,7 +411,7 @@ raw-body "^2.4.1" type-is "^1.6.18" -"@poppinss/colors@^2.1.4", "@poppinss/colors@^2.1.5": +"@poppinss/colors@^2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@poppinss/colors/-/colors-2.1.5.tgz#3a8abb9c8e8828959ead55ee39b82a2c35e671ee" integrity sha512-C6XChd0fssMe4aXqRrAAGrIKlOySEemKV422JYfBZaS7/qCfvQNIw67b0N03kbrgSrGvEgMUlaJVULlukuZM+g== @@ -429,7 +429,7 @@ resolved "https://registry.yarnpkg.com/@poppinss/inspect/-/inspect-1.0.1.tgz#b03df9c1204ee72e3b9dbd5c34029c39475fb21d" integrity sha512-kLeEaBSGhlleyYvKc7c9s3uE6xv7cwyulE0EgHf4jU/CL96h0yC4mkdw1wvC1l1PYYQozCGy46FwMBAAMOobCA== -"@poppinss/manager@^4.0.3", "@poppinss/manager@^4.0.4": +"@poppinss/manager@^4.0.4": version "4.0.4" resolved "https://registry.yarnpkg.com/@poppinss/manager/-/manager-4.0.4.tgz#7e71aedbc8e3a32cc5eb53adc78cf861240d0082" integrity sha512-z9SFv+wKH+aZ5XLZXfkBsEk3h4scFf1imBtGFvlhBklzpplmvY70nSlHTPRC16h1VwjyuWaGuarN+vvQpQoFpA== @@ -468,9 +468,9 @@ enquirer "^2.3.6" "@poppinss/utils@^3.1.3", "@poppinss/utils@^3.1.4", "@poppinss/utils@^3.1.5": - version "3.1.5" - resolved "https://registry.yarnpkg.com/@poppinss/utils/-/utils-3.1.5.tgz#6cac2ecca8960bd08bb408890f84580fa250e84d" - integrity sha512-4+wJauWZa7okjLWvT/uWftzT2uzgUw7XGO9zXrVCJbvIMPBtgIRrtRWNjOHD9Mg74XS3JZlgjVSqvNIQ4ymoqg== + version "3.2.0" + resolved "https://registry.yarnpkg.com/@poppinss/utils/-/utils-3.2.0.tgz#cb07d536565e77b019d868f7d2cfc55600822337" + integrity sha512-gnqlrxE4zMvqW+LpviyCWCg4+RShCYCFyBdVTyg9ZZEEgPBV9bEY+YB5r/2klFrKx30k9nfClHVI2n8ZKmXgsw== dependencies: "@types/bytes" "^3.1.1" "@types/he" "^1.1.2" @@ -501,10 +501,10 @@ dependencies: defer-to-connect "^2.0.0" -"@tokenizer/token@^0.1.1": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.1.1.tgz#f0d92c12f87079ddfd1b29f614758b9696bc29e3" - integrity sha512-XO6INPbZCxdprl+9qa/AAbFFOMzzwqYxpjPgLICrMD6C2FCw6qfJOPcBk6JqqPLSaZ/Qx87qn4rpPmPMwaAK6w== +"@tokenizer/token@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" + integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== "@types/bytes@^3.1.1": version "3.1.1" @@ -569,9 +569,9 @@ integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== "@types/node@*": - version "16.4.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.0.tgz#2c219eaa3b8d1e4d04f4dd6e40bc68c7467d5272" - integrity sha512-HrJuE7Mlqcjj+00JqMWpZ3tY8w7EUd+S0U3L1+PQSWiXZbOgyQDvi+ogoUxaHApPJq5diKxYBQwA3iIlNcPqOg== + version "16.4.12" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.12.tgz#961e3091f263e6345d2d84afab4e047a60b4b11b" + integrity sha512-zxrTNFl9Z8boMJXs6ieqZP0wAhvkdzmHSxTlJabM16cf5G9xBc1uPRH5Bbv2omEDDiM8MzTfqTJXBf0Ba4xFWA== "@types/pino-pretty@*": version "4.7.1" @@ -588,14 +588,14 @@ "@types/node" "*" "@types/pino@*", "@types/pino@^6.3.9": - version "6.3.9" - resolved "https://registry.yarnpkg.com/@types/pino/-/pino-6.3.9.tgz#dbbbd4a9a6b99935f5ed286c3d998ab83d260482" - integrity sha512-2/XV6adNNCLWnT2lJqcSn/OXrCxRFOY6yXYoofrLy5Ts5e8RHTJP1M4XEcCarQQMa6H6JISaa4GkrlGZwIP5aQ== + version "6.3.11" + resolved "https://registry.yarnpkg.com/@types/pino/-/pino-6.3.11.tgz#83652799e76b3ad692aaf68f6fbf994e83af5db2" + integrity sha512-S7+fLONqSpHeW9d7TApUqO6VN47KYgOXhCNKwGBVLHObq8HhaAYlVqUNdfnvoXjCMiwE5xcPm/5R2ZUh8bgaXQ== dependencies: "@types/node" "*" "@types/pino-pretty" "*" "@types/pino-std-serializers" "*" - "@types/sonic-boom" "*" + sonic-boom "^2.1.0" "@types/responselike@*", "@types/responselike@^1.0.0": version "1.0.0" @@ -604,13 +604,6 @@ dependencies: "@types/node" "*" -"@types/sonic-boom@*": - version "0.7.0" - resolved "https://registry.yarnpkg.com/@types/sonic-boom/-/sonic-boom-0.7.0.tgz#38337036293992a1df65dd3161abddf8fb9b7176" - integrity sha512-AfqR0fZMoUXUNwusgXKxcE9DPlHNDHQp6nKYUd4PSRpLobF5CCevSpyTEBcVZreqaWKCnGBr9KI1fHMTttoB7A== - dependencies: - "@types/node" "*" - "@types/stack-trace@0.0.29": version "0.0.29" resolved "https://registry.yarnpkg.com/@types/stack-trace/-/stack-trace-0.0.29.tgz#eb7a7c60098edb35630ed900742a5ecb20cfcb4d" @@ -948,9 +941,9 @@ buffer-fill@^1.0.0: integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== builtin-modules@^3.2.0: version "3.2.0" @@ -1072,9 +1065,9 @@ chalk@^1.1.3: supports-color "^2.0.0" chalk@^4.0.0, chalk@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" - integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" @@ -1822,7 +1815,7 @@ fast-safe-stringify@^2.0.7, fast-safe-stringify@^2.0.8: resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz#dc2af48c46cf712b683e849b2bbd446b32de936f" integrity sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag== -fastq@^1.11.0: +fastq@^1.11.1: version "1.11.1" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.1.tgz#5d8175aae17db61947f8b162cfc7f63264d22807" integrity sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw== @@ -1834,14 +1827,14 @@ file-type@^12.1.0: resolved "https://registry.yarnpkg.com/file-type/-/file-type-12.4.2.tgz#a344ea5664a1d01447ee7fb1b635f72feb6169d9" integrity sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg== -file-type@^16.5.1: - version "16.5.2" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.2.tgz#e6626f7a253af2ecf499f31995f0e849226825a8" - integrity sha512-lnHRZj2USLF3v4C5ZY7/vQQeoTVA1YV9TtD6UUCr9z5Cd0uyutqxPBJxkXzM6lufPNuSfefq/yFmnSPz0C3wNw== +file-type@^16.5.2: + version "16.5.3" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.3.tgz#474b7e88c74724046abb505e9b8ed4db30c4fc06" + integrity sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A== dependencies: readable-web-to-node-stream "^3.0.0" - strtok3 "6.1.3" - token-types "^3.0.0" + strtok3 "^6.2.4" + token-types "^4.1.1" fill-range@^4.0.0: version "4.0.0" @@ -2263,10 +2256,10 @@ human-signals@^2.1.0: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== -ical-generator@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ical-generator/-/ical-generator-2.2.0.tgz#5a1e00eb495f693fccd4724f5ca24ce1b8de8ec8" - integrity sha512-rn31KfGw1x5bQUasxmqT0s1qKoPYl0dq/EH5DGWrVFMpKrNtDO+VODUaiWvtgQb1JgmDkX5fBjKfB0+zHuaNjQ== +ical-generator@^3.0.0-develop.4: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ical-generator/-/ical-generator-3.0.0.tgz#042a7c1d2ce8cae1428bc1ea51a8dbe6b8872fcd" + integrity sha512-PlDOOipgTlMzbfDDy+NJixAf5bzNb46wf0JXPkhnSjNQJc50y/XTOhOnQW/cp6tD+4ITHIMhkCkQ4CrUlDKMFQ== dependencies: uuid-random "^1.3.2" @@ -2326,15 +2319,16 @@ interpret@^2.2.0: integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== ioredis@^4.27.6: - version "4.27.6" - resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.27.6.tgz#a53d427d3fe75fbd10ed7ad150ce00559df8dcf8" - integrity sha512-6W3ZHMbpCa8ByMyC1LJGOi7P2WiOKP9B3resoZOVLDhi+6dDBOW+KNsRq3yI36Hmnb2sifCxHX+YSarTeXh48A== + version "4.27.7" + resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.27.7.tgz#11bf2947e23a0e8055931afa7c2da89fc48c8ff3" + integrity sha512-lqvFFmUyGIHlrNyDvBoakzy1+ioJzNyoP6CP97GWtdTjWq9IOAnv6l0HUTsqhvd/z9etGgtrDHZ4kWCMAwNkug== dependencies: cluster-key-slot "^1.1.0" debug "^4.3.1" denque "^1.1.0" lodash.defaults "^4.2.0" lodash.flatten "^4.4.0" + lodash.isarguments "^3.1.0" p-map "^2.1.0" redis-commands "1.7.0" redis-errors "^1.2.0" @@ -2484,9 +2478,9 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: isobject "^3.0.1" is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== is-windows@^1.0.2: version "1.0.2" @@ -2648,9 +2642,9 @@ knex-dynamic-connection@^2.1.1: knex "^0.95.6" knex@^0.95.6: - version "0.95.7" - resolved "https://registry.yarnpkg.com/knex/-/knex-0.95.7.tgz#9c55c60e3c63077013076b54b5b97376d5a70d41" - integrity sha512-J2X79td0NAcreTyWVmmHHretz5Ox705FHywddjkT3esTtmggphjcfDoaXym18xtsLdjzOvEb53WB/58lqcF14w== + version "0.95.9" + resolved "https://registry.yarnpkg.com/knex/-/knex-0.95.9.tgz#d72acbdbc7aa199a829cca3c53371b80e521adfe" + integrity sha512-iy8Wue3ofGBVZENgz32fx2uYSYhXCQEE7lemMIdm/FDtgwwmrzkYm9BdGZ4wb8Fg/oCgezMGWSdCflWicX4sdA== dependencies: colorette "1.2.1" commander "^7.1.0" @@ -2661,7 +2655,7 @@ knex@^0.95.6: interpret "^2.2.0" lodash "^4.17.21" pg-connection-string "2.5.0" - rechoir "^0.7.0" + rechoir "0.7.0" resolve-from "^5.0.0" tarn "^3.0.1" tildify "2.0.0" @@ -2698,6 +2692,11 @@ lodash.flatten@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= +lodash.isarguments@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= + lodash.toarray@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" @@ -2860,10 +2859,10 @@ micromatch@^3.1.10: snapdragon "^0.8.1" to-regex "^3.0.2" -mime-db@1.48.0: - version "1.48.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.48.0.tgz#e35b31045dd7eada3aaad537ed88a33afbef2d1d" - integrity sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ== +mime-db@1.49.0: + version "1.49.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" + integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== mime-kind@^3.0.0: version "3.0.0" @@ -2874,11 +2873,11 @@ mime-kind@^3.0.0: mime-types "^2.1.24" mime-types@^2.1.24, mime-types@^2.1.31, mime-types@~2.1.24: - version "2.1.31" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.31.tgz#a00d76b74317c61f9c2db2218b8e9f8e9c5c9e6b" - integrity sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg== + version "2.1.32" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" + integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== dependencies: - mime-db "1.48.0" + mime-db "1.49.0" mime@1.6.0: version "1.6.0" @@ -2945,72 +2944,72 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mjml-accordion@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-accordion/-/mjml-accordion-4.10.1.tgz#1149668944ff9d8f80d946f44d1b029e77ad1a62" - integrity sha512-wQ2PHsiuq3wxsumb78T7gWimB9aQXWP1yDQrQiLn+hmARiLOv9KOn96ZffM4nWyNlDM0AsWWm9fpLgv1RwI8wQ== +mjml-accordion@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-accordion/-/mjml-accordion-4.10.2.tgz#475526c1bbdae00a9586a056e8eaa0c23753d4be" + integrity sha512-32nPtx7zH2wdiIQ8wHoIYnIlXhDDwRoGWhm6Rc4uszB4CPYTIsh7vOXOlhLsXgKrWKTdYOD/TIxZcbyvBl4sIA== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-body@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-body/-/mjml-body-4.10.1.tgz#c10040361e1af7fb4dc80861f2773caa384b8530" - integrity sha512-6+v/m+PhTkm8NZYim1g2H0GsQ9sydZQZiaGCnzSpKJL6HXMYHqckdUc/yvgph86/XPRDTv2dIv/tvgJ5dBvFlA== +mjml-body@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-body/-/mjml-body-4.10.2.tgz#f75eee2b0cb701edf21244f4219b6db0d9f0f9a0" + integrity sha512-G80iK31hhm/DL40H4VSch0gtDpNBa7Pmj5ZJDnSkIrawgoKU+2qMD/fjlRTF2x+cxBLXSCKWpeH9bdompcs0pw== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-button@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-button/-/mjml-button-4.10.1.tgz#0410e5382abf8a95b48a4372a67da5d65b1709d8" - integrity sha512-3lmez3NZt1TJjE+HLZO10q9dfminH5JtTEV2m9Yf/gXRoT+vpD7XFs5vrAXVhMh879Unc3pxY8ghFr0/8JLBgQ== +mjml-button@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-button/-/mjml-button-4.10.2.tgz#b734b037e2eca6b19c1392ac02900438abd49c8e" + integrity sha512-q26UJPb80RGN0oVu9mYEutBKMY1e7AwZfT14k7lRA7+NznW/ASbj8B02IgI1nAW5Et5xK7Fr8ThICkuny7RR5A== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-carousel@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-carousel/-/mjml-carousel-4.10.1.tgz#132eade9ea3e6541eaacd3c0f3df63e9ea15166b" - integrity sha512-5n9LKP0KANRCoZDgT7jJCMiKlWr26idy1Sc2PunJ71164/lE6HKhSvMISNEdxDm+ZTj4Y2vDeobcc3zviQRkcw== +mjml-carousel@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-carousel/-/mjml-carousel-4.10.2.tgz#19b08622db014bb1dbd94d813fa036e78bb87578" + integrity sha512-WfJ6owuKdFVEmzlW/VluB4cxYoWH7IjcH44z9pvq5LrrgfMssyvbnEpkkZTFNQKKCIrBmdXsjDDt9Ex5oJREGw== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-cli@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-cli/-/mjml-cli-4.10.1.tgz#386d61cd22730042c51143338624ae89cdf8e9d7" - integrity sha512-M/N704fblgiJOqyqD6PoEi0F4ILnb5PLFsRF0BE8NNoCpQz0WnnnUjuCnPBfgCsz/rVxBrSXYpGNrpViCkgftQ== +mjml-cli@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-cli/-/mjml-cli-4.10.2.tgz#df9d10c060c31c38e9e1ce8f10d739269f4b2ac4" + integrity sha512-tRuiv0ZvuqSJjx67fpxSA8wHEoAsoZ2cLO1w2JiX5lBDXZp5oF8EJ65HPNX6sWyEgu1nKY+9bl7XG3YBUwg80w== dependencies: "@babel/runtime" "^7.8.7" chokidar "^3.0.0" glob "^7.1.1" html-minifier "^4.0.0" js-beautify "^1.6.14" - lodash "^4.17.15" - mjml-core "4.10.1" - mjml-migrate "4.10.1" - mjml-parser-xml "4.10.1" - mjml-validator "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" + mjml-migrate "4.10.2" + mjml-parser-xml "4.10.2" + mjml-validator "4.10.2" yargs "^16.1.0" -mjml-column@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-column/-/mjml-column-4.10.1.tgz#e074d104c166d2e8c913774f3b3823a3d20332d9" - integrity sha512-ajn2YHc3rWXhXYsJiOvYnHBWbSB+ep1dTs+qe2uhxq9h8BdvG9bxh5UZeN3do7IEwqZIeA7lFKeWZyu07LapCQ== +mjml-column@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-column/-/mjml-column-4.10.2.tgz#58590f16e26ddbc127fb6e4eb6ba8018f9d66b92" + integrity sha512-53hGPWTrNPEhY0Kb9Gu/bOoFs86q0k/UvZGxV47oCHSyIRYgfzG7FyaJDYrt+gxFe6hLJAZjQIoXEpZ8683xxw== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-core@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-core/-/mjml-core-4.10.1.tgz#dabb59c2fa4a98492e8d54e9b06629ea743c8420" - integrity sha512-2RsFeWteelaaijD6dDFsvpgc/Zt5caKmUCr1sI3u7gIpH17LEjS5+CcSTEUwAOyAztUxpNfdotuWs3W0i2YyCA== +mjml-core@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-core/-/mjml-core-4.10.2.tgz#139a6e3ce10073a01b864931981c649e3b20d45c" + integrity sha512-RsPCIUqQ1r8gysvljssU2pcScMfMBZnu1JQs2IO3QAlUEELd+sd3Mz/1u4MEWP7vWoUSRDlbJjZIPr1606g70A== dependencies: "@babel/runtime" "^7.8.7" cheerio "1.0.0-rc.10" @@ -3018,264 +3017,264 @@ mjml-core@4.10.1: html-minifier "^4.0.0" js-beautify "^1.6.14" juice "^7.0.0" - lodash "^4.17.15" - mjml-migrate "4.10.1" - mjml-parser-xml "4.10.1" - mjml-validator "4.10.1" + lodash "^4.17.21" + mjml-migrate "4.10.2" + mjml-parser-xml "4.10.2" + mjml-validator "4.10.2" -mjml-divider@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-divider/-/mjml-divider-4.10.1.tgz#dbeb05b3dce472516589daaed4ca9f4f200fb6be" - integrity sha512-k3Rs+Owa9zdS49LbSGA+KkI9XFnAjJpINCYSfwp0p05HP+80jZAVIyb8/oMVjwzcM3CCPQhqSxg6WSuLMDfezg== +mjml-divider@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-divider/-/mjml-divider-4.10.2.tgz#2ae6ab75daadb188dd759c464ed66323a7586246" + integrity sha512-2NGg80/PQVmXpESIWMOiT1c1p3811JpsdFnmXJfiXvwH5hIW3oEyLOB4e9WTXqeVOypcUI32PhR25emOr+Udww== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-group@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-group/-/mjml-group-4.10.1.tgz#263dd588020d9c171112cb61afe3b1fff919cd6f" - integrity sha512-uW5lIA3vRYqyUU7rzv2rMcUZkPkol4l4GJPnDvx5Pm45H9ogD8GgdhlPUq95cKRGEOqxj9ytFXqKrb1SlfDi3g== +mjml-group@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-group/-/mjml-group-4.10.2.tgz#1593dcea66f9289b84a2886c514529eda5f69c65" + integrity sha512-U7XLiqOwgJDJhimlHAW/6ar0nkpuwwBmrYsEUl1q1kEhX2pDld+Wia4GeVBdRGiWGrFMWW3lgkRmOqs2bMSWEg== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-head-attributes@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-head-attributes/-/mjml-head-attributes-4.10.1.tgz#2021029c898f682a838d9148de9819914d7d5fc7" - integrity sha512-o6Peu/NcoQ45YTIfuVrE5QDutl8Zi+Zp7owkF6yDFPqQfVR8QCTQ/JS+3Z0bI/HRXoljV6O7eCBA6HbDdvMiaQ== +mjml-head-attributes@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-head-attributes/-/mjml-head-attributes-4.10.2.tgz#a7181d4df878461ba942e925967b1ae48c5a9369" + integrity sha512-B+GXQK9NCun/RZMHsGrbzNVJM9g+Pni6xDu4CtytdHjOSY4m99cB+fAa3bPX/dxXWEnaRrsR41ReP49NZrO+pQ== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-head-breakpoint@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-head-breakpoint/-/mjml-head-breakpoint-4.10.1.tgz#c23a4c53d2c59aeef33771a49ee347c52b343831" - integrity sha512-2QJxmrQqB0N+Crfn+Cguq5eeL8YQ3y4g2K3UQ1d7dB0rEiwWN5x9gb4iOrrPTagepdYiaELJo9RqwR26WGw+9A== +mjml-head-breakpoint@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-head-breakpoint/-/mjml-head-breakpoint-4.10.2.tgz#306794188227c4b2676c51fbf2164628af3a41b6" + integrity sha512-omAZRnPtuhx2OHND5guvHvt7Vb94nWO+x/Jupd09gfzapz32mcN15qGQERH33oqfSSZl0paDUDPy53xjXWAkgA== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-head-font@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-head-font/-/mjml-head-font-4.10.1.tgz#47ba9079338d12b6f134c67aa03a10e117831dac" - integrity sha512-WjEyBneeyRaeEnW/iqfOMLGvkpSSijqHQxk/z6yVVQ+fEcZ6kOZFPIVDrXSgLUpPso0GV46ngde57zWuBYuTUQ== +mjml-head-font@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-head-font/-/mjml-head-font-4.10.2.tgz#40416a200f81fa839973a8020ee7f87af6da6c84" + integrity sha512-yDcM6mR0qBd8jZ59nYMvXwz53vw0eW1S+vqtaRq1s6TvmtiMy9Gf6TLcbdFDxUbxjKVVSwK9plSqqTwfiHUc2w== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-head-html-attributes@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-head-html-attributes/-/mjml-head-html-attributes-4.10.1.tgz#7a5a4e383055e89ee6edafbf71d735dbb5cf2624" - integrity sha512-ZT5DPfCauY0N6JR4ouJaJ3dYiUDbsXWE27A5bGTUNF19fl59571z/lfTgCUnW4veXmG4n4JvOQYdw8QLotn7/w== +mjml-head-html-attributes@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-head-html-attributes/-/mjml-head-html-attributes-4.10.2.tgz#3d9947ec472e02e99c87245c2a4b8cdc5770ea11" + integrity sha512-zUXs3CA5K4lPyYwF/DhF4isBzqFDTaJp0IURhfF5RAZGQDxQw8W1WPGwjtCgnOKqwMRaIPHBPoHusKqcWGr+mg== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-head-preview@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-head-preview/-/mjml-head-preview-4.10.1.tgz#07e6ebdcd49ce657e95a6481e917d0403d3559e7" - integrity sha512-aeWHNiIAiREraDWwdniqWt3Vy97Ao/hxu46FJFwLn7q4Za3ZevxeHzzIoPgkGB8qaOSKHeyYDLHwhzLqnQAdKw== +mjml-head-preview@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-head-preview/-/mjml-head-preview-4.10.2.tgz#107d12f957b45a116da84baaa4e5ab383dda3d86" + integrity sha512-ko3fxPhpztvqOiwQOLd4aB+cyls2fLxEAShZvaF7PAu02nmmwNCPJnKRAvm/WFqJT8PIGO32AqKb3gupTrKFrQ== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-head-style@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-head-style/-/mjml-head-style-4.10.1.tgz#22c0439aa07a7a1595e9cca82497a550fa8b1f1d" - integrity sha512-iCY5JsxJU9wiqh4A20CxeAv2MLqUBKotDS6V4lD16QVR2U1GDc7ZfP7rU8bL8ULE/589RxmkMq/+w3W5Fyx56g== +mjml-head-style@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-head-style/-/mjml-head-style-4.10.2.tgz#21b0d02280cc3a83b36ecca05ff141363cff871f" + integrity sha512-ut27xxYTau37fCO3TN3Y9HzJhhvtH92jOq+F8r8mbP7achrR+ToGphCxmKYMSnZ5zOwzDqq9GV1/xQCCudZAhQ== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-head-title@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-head-title/-/mjml-head-title-4.10.1.tgz#55cf92dd03cb188d2774ceab749b91423ecc5b4e" - integrity sha512-rw18SV3X0mGi+59cZUFxrsXKFhK0sO1NniwKyxAtb/9cjlHiMbiXYeSOaw8Yg4Ee++C37xOd5hWCCxXUj09kFw== +mjml-head-title@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-head-title/-/mjml-head-title-4.10.2.tgz#79b5eade1534ef43fce4f1ea842598f3044c14b3" + integrity sha512-ZBQ8FQzuDrfcr5b27Xq8SR0VM8up7CjSsrCiP4N7aBYwrwdRD9zDjr0VfqCGTDV+bxFnpoCwjv2dsWPfJRzr2Q== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-head@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-head/-/mjml-head-4.10.1.tgz#46b32b8ee786c63dba5fefb3cfe89e8dbfe6df21" - integrity sha512-NYnITF3yZvN4pemiJISW7rINjaQtVmtFwNROleHRBNj/7GleklSo6cMOYljhJ95qzUyFlEVPbO54+znt1IlQHw== +mjml-head@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-head/-/mjml-head-4.10.2.tgz#16458a50eb9b04438810afa513082bf6f293b07e" + integrity sha512-70HJc1x7agRVxggUyrBjHZh1bUt43GH0SjlmKgIivaGXKGQEd+1d+0m+aZesY7zplQXN7IBI5qBRZmgIfW+FLQ== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-hero@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-hero/-/mjml-hero-4.10.1.tgz#432e1665c162b4b635a575fd3082ddf0145a4f54" - integrity sha512-3MozfbGnF7XbVzBJ1iz6F7nTDnJUZTRgaIbPhFQXDCbJ33LN6IPPS1+22iQnlZQeTG9N4SpJLjlG2W8UQp7rew== +mjml-hero@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-hero/-/mjml-hero-4.10.2.tgz#909e3e20c341f546c6ffa54aded3de35d9fd36ed" + integrity sha512-fPA80s3eOEW3Y1YxgPfHDhNe5fGd+zelOhg7lGyO5QTH/diXu3ElkScPXMt7NeEz9vTnHLpwsygdp1X7rEJimA== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-image@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-image/-/mjml-image-4.10.1.tgz#feff0b74f909ccb915e64f7b82e839fb57ec241f" - integrity sha512-LZr49qbXDa/i9wM3iBOdwF9zndYn/xTHaofUn3rUxVmybfGLmr/N5fc84ZGMs4kBWYz8kuHodjOnaY/9g58pyg== +mjml-image@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-image/-/mjml-image-4.10.2.tgz#daa85304c08ff7e281dc0393833ac4626f8755dd" + integrity sha512-gmo5UQNAE2NfpSydwLwPoIRVtxKX/P34OMQwgc83bMasbigyJPU/mjJt/1NYfNQa+s4jD1IOiQmxBgV7b9UalA== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-migrate@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-migrate/-/mjml-migrate-4.10.1.tgz#4ab66ede50c09c06070c71968b01a176f0760eda" - integrity sha512-RfUUqW9oqxp/42EVVygpu7v1/TX0TksJS3+7cAAuMSh8WsXQGYaNDDpFjItQapMDYfOVT/0Uby1L8PiuhQtx+g== +mjml-migrate@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-migrate/-/mjml-migrate-4.10.2.tgz#efe5f51b43520f869061a74dadc75fafcd2df484" + integrity sha512-7b7HZG7H4ffl/HS/Qg6kDGgTpaF+HLDAi7eZDvfah20zkq8GYyOWo8OZek5ALXk6gwmszVBkhRhbB/r6DVvyqA== dependencies: "@babel/runtime" "^7.8.7" js-beautify "^1.6.14" - lodash "^4.17.15" - mjml-core "4.10.1" - mjml-parser-xml "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" + mjml-parser-xml "4.10.2" yargs "^16.1.0" -mjml-navbar@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-navbar/-/mjml-navbar-4.10.1.tgz#6bfa49b25e08690b572cb763f56640d285e20fd0" - integrity sha512-Fu6/1WxXFgY478OINmiCrB3tE2c2uaEpXNS0ac2EbIytaM7/azQ58+Y07jfie1UXM6cjHAb5ZWOTjvJoPPOdag== +mjml-navbar@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-navbar/-/mjml-navbar-4.10.2.tgz#b20db4d5408fad6f023de029172961474f51ed46" + integrity sha512-V/csnQDZSCUDh+/WTicTbB7TwjIah0UIoTIDz5NQq7BCXFDClVTvdm06pVamt1pUy+/0slVOLRDl7LTZ53Rc2A== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-parser-xml@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-parser-xml/-/mjml-parser-xml-4.10.1.tgz#4efe8658b7fa372de1043146b42802d57381d42e" - integrity sha512-dQW7efbPTXY9cgEshxefiEQ6lcWXp1yADjfv6hWYhcWlpeBfyZ6NBDL8aoRoem+5+avMSzn1tP1oRvedlSY/9Q== +mjml-parser-xml@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-parser-xml/-/mjml-parser-xml-4.10.2.tgz#c95823608c81c439c7df8e489240da70c1b307d9" + integrity sha512-kbWjT7zOTApLBCActvVTqkKgSol4y3tSYjVIZYBlRPViP5ZLw+I1nWRCTji9hQoQ/tGgqSXEIKa7+n9IIW+Zww== dependencies: "@babel/runtime" "^7.8.7" detect-node "2.0.4" htmlparser2 "^4.1.0" lodash "^4.17.15" -mjml-preset-core@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-preset-core/-/mjml-preset-core-4.10.1.tgz#4abfb36312fd655405621907fdfdcbb9f23cc258" - integrity sha512-zAD72N3xb5vxOedd446g1lAvMeh57JZ5HDUUFNB473QVvu7HgX2OShykwsgyzgYgKXE3MBhms8nr1jv55SnPuA== +mjml-preset-core@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-preset-core/-/mjml-preset-core-4.10.2.tgz#ba8999e4e68ce1e0cdc6cfafa64641da734f7f21" + integrity sha512-rqKEphVPYbT78wXiRZm8WK7q86GZtSdMV7sQHuRYu+++AAUNlFkZUxvnNmZtKt2KupHGoz18oBErF5z3WIesvg== dependencies: "@babel/runtime" "^7.8.7" - mjml-accordion "4.10.1" - mjml-body "4.10.1" - mjml-button "4.10.1" - mjml-carousel "4.10.1" - mjml-column "4.10.1" - mjml-divider "4.10.1" - mjml-group "4.10.1" - mjml-head "4.10.1" - mjml-head-attributes "4.10.1" - mjml-head-breakpoint "4.10.1" - mjml-head-font "4.10.1" - mjml-head-html-attributes "4.10.1" - mjml-head-preview "4.10.1" - mjml-head-style "4.10.1" - mjml-head-title "4.10.1" - mjml-hero "4.10.1" - mjml-image "4.10.1" - mjml-navbar "4.10.1" - mjml-raw "4.10.1" - mjml-section "4.10.1" - mjml-social "4.10.1" - mjml-spacer "4.10.1" - mjml-table "4.10.1" - mjml-text "4.10.1" - mjml-wrapper "4.10.1" + mjml-accordion "4.10.2" + mjml-body "4.10.2" + mjml-button "4.10.2" + mjml-carousel "4.10.2" + mjml-column "4.10.2" + mjml-divider "4.10.2" + mjml-group "4.10.2" + mjml-head "4.10.2" + mjml-head-attributes "4.10.2" + mjml-head-breakpoint "4.10.2" + mjml-head-font "4.10.2" + mjml-head-html-attributes "4.10.2" + mjml-head-preview "4.10.2" + mjml-head-style "4.10.2" + mjml-head-title "4.10.2" + mjml-hero "4.10.2" + mjml-image "4.10.2" + mjml-navbar "4.10.2" + mjml-raw "4.10.2" + mjml-section "4.10.2" + mjml-social "4.10.2" + mjml-spacer "4.10.2" + mjml-table "4.10.2" + mjml-text "4.10.2" + mjml-wrapper "4.10.2" -mjml-raw@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-raw/-/mjml-raw-4.10.1.tgz#958f48aa9a03e5d43e85a38bf644537bd9bd84f9" - integrity sha512-CgVn5E9c4uEvn10JMoOLrbcKLpaN1JAyl0d1M01v2kp1iG6VnfMv0BydliC7nZ4kHk7+bJ51XjkMBl9k+KDZYA== +mjml-raw@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-raw/-/mjml-raw-4.10.2.tgz#eb9b1f3dcdd8726a819562745ac2663f739f6272" + integrity sha512-jLkO6Q09Pyc/Izj7bOMmhSCiWuHfAbqoq0oKqWtzgSv2gw2yBSmaMHFyMqAsE3Tlm4NkPxWRLCahoswk4doUGg== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-section@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-section/-/mjml-section-4.10.1.tgz#76ded28375eee07aa1c501ffc14c27852c17b29a" - integrity sha512-9QC5tyJ4hgbA/lRLZRNgIh866/VTfLc7+ucKkaWnteeF/CCxjqTwcYrLPbR5HKEMSjVd5/T17SOVOB6jv/VIdg== +mjml-section@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-section/-/mjml-section-4.10.2.tgz#5f457fa26adc284c5fcaecc66805f7d05fbcea2c" + integrity sha512-wWTjKt+8Anm6MQUCuE/0ecHy1mt9JxShCR7BmGaO/hq0p1OqaUfveOpg1diod5TudHg9oT/f6ipyXCTSebVYIQ== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-social@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-social/-/mjml-social-4.10.1.tgz#d6611a4bb3fb66e4b9f8ceb4c608603bcb0e0365" - integrity sha512-YuPjJF60oXQ47cd0gtJfy8SZBBBM8HV7pFwIuD1NIKdTU6qPZj38X81ZKPPuvmD1td+FVG/W/mySzuuH1hZkWQ== +mjml-social@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-social/-/mjml-social-4.10.2.tgz#ab51e56d4d0845643bb59f59b1c94d84e1627e4a" + integrity sha512-rZexXYp+qgT4E+WGAvt622RxD+sp/ZL7WdRYvF9U/8bQMhnUfVFI6UCZA2UNoby0v4g0JNO4pv0oGzXbAhl6lQ== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-spacer@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-spacer/-/mjml-spacer-4.10.1.tgz#28a1c4ea215e15b6a604ceb1a9eb007458991a1c" - integrity sha512-/wgxbrAIGrjpB5Z3KZUKDliQ/bdUsEouXgbMjRqoPfgskVV6ocrSLMDjWT8XEpYPSKb5T4p3dlWn8XKKl1nrOw== +mjml-spacer@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-spacer/-/mjml-spacer-4.10.2.tgz#1e693d63f99dd411dedf9931b61a1acf3183b464" + integrity sha512-md5bbtEfvPE+EGGnfXOe+9lnpbHqkzXAq/51YxRYhW5Zr/iT9NyN3VWbqkOruKXztzKFlkL7u2aq+NBKJJiFMA== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-table@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-table/-/mjml-table-4.10.1.tgz#d28ed47b4cf78b4ef51fa38399fc096bf3d53009" - integrity sha512-bfztBF/leXqbVHcOUiQu4zaSlW7i7lE2q0mb8gPHPRbh9cPzwetk5pYh9Gc7PiMpodvzpAYR2OeaQS0Z4FfjKg== +mjml-table@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-table/-/mjml-table-4.10.2.tgz#a3102da62fc2bfa9ecacb7d069f8b59f7a3fa2c3" + integrity sha512-VSVptHIarlxMshAcLq1F/jqFkqVS61amXmtyMcFWqKcYEVrDVwfi7knB/P/BacsbZ3RJaG0KkkK9dTsP1UShzw== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-text@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-text/-/mjml-text-4.10.1.tgz#6a1befbb9220674016585b7748c7c8c5ded6f62c" - integrity sha512-SjB6U3O6TjkaeonQ85+BKfIQUGMf4gybS1QuI2ULlAMPlNYpmkNBhPzlXNECWUG1OETg1HgD6WqEYBG8Dd970A== +mjml-text@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-text/-/mjml-text-4.10.2.tgz#ab89d14fed48f3096e453a78864d915ec7335436" + integrity sha512-fxtzpLCFHuDFecS+CQBIbGdBPx3xyKZx1RfHJjjmjeX0dzoQvud4LiEmegqXted7tiUJ8yBI8vp1KfnIzxmyjA== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" -mjml-validator@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-validator/-/mjml-validator-4.10.1.tgz#0cb93da94bb0cc08cee775ff7fa396233e231bd1" - integrity sha512-tYnRLtupjAj82Do9gb2Y8hWGSGz6nTLV6csia11JubhLoykJNS3JnGW2CPZ/Y+zWNUxJMNHkgHnxAPwSlmX6dQ== +mjml-validator@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-validator/-/mjml-validator-4.10.2.tgz#1710f9243a2aafc49572e61bb365e87d076be698" + integrity sha512-6CIJ3iCnXRwy+z0GGpUZuVwBS7mW8/oZ0U2jnV9L8WVQiIAHPcilnRgR4yIcE6SvQ724XEnAu/za7rq6C5UBhA== dependencies: "@babel/runtime" "^7.8.7" -mjml-wrapper@4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml-wrapper/-/mjml-wrapper-4.10.1.tgz#1601c259efd002b1d905d99933307a8c1ecc2b8e" - integrity sha512-z0ewwxWPZAnIMKqsRCHh/jjsgPNcMO4Yej32LLait6IOAiUmo2hWLhrDmSFY69NrzuxxQPBI7tZ8G5LUbaH/EQ== +mjml-wrapper@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-wrapper/-/mjml-wrapper-4.10.2.tgz#086d51e59da2fc04dc69b49b5bca63dba6c684be" + integrity sha512-JkU92wHRyR6lh8GyovxJUrzY2JViIrDrU6bjewqDrm5Oi3fupck1kNEGRIR7ewzWLgGtlYcAjk1Myt9wcCeeZw== dependencies: "@babel/runtime" "^7.8.7" - lodash "^4.17.15" - mjml-core "4.10.1" - mjml-section "4.10.1" + lodash "^4.17.21" + mjml-core "4.10.2" + mjml-section "4.10.2" mjml@^4.10.1: - version "4.10.1" - resolved "https://registry.yarnpkg.com/mjml/-/mjml-4.10.1.tgz#8f5d06815bee01ef033553c73589451704a63e8a" - integrity sha512-cD6F20yIMOUT9xaAVWLfk0DnhQSq6VkpD+LCf/RUWrxsxxkwPJtJfKfrP5TMeuWcmDFS9hfOBS3Jz+NmGh03jQ== + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml/-/mjml-4.10.2.tgz#ae4f4fc33fedd9c7c1b5b36ad0486f1713e30f70" + integrity sha512-KVFcTl3AaugIbGRKeqqzjHebp8PTFpteUy3otaRGbrYgKMv+AHzwCMMOptkU9qknJBMCJb+ZUSc9FvOc+bbp4A== dependencies: "@babel/runtime" "^7.14.6" - mjml-cli "4.10.1" - mjml-core "4.10.1" - mjml-migrate "4.10.1" - mjml-preset-core "4.10.1" - mjml-validator "4.10.1" + mjml-cli "4.10.2" + mjml-core "4.10.2" + mjml-migrate "4.10.2" + mjml-preset-core "4.10.2" + mjml-validator "4.10.2" mkdirp@^1.0.3: version "1.0.4" @@ -3288,9 +3287,9 @@ mri@1.1.4: integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== mrm-core@^6.0.0: - version "6.1.2" - resolved "https://registry.yarnpkg.com/mrm-core/-/mrm-core-6.1.2.tgz#df594b20d33b0ba675bb888adbfe7e59e0df9676" - integrity sha512-OoN/QMSfBazJaPF+ZdXZYEiFcJde4jk/FPLUg2YAyL3LbXEW4zRUpTlv0IKrHtzTs2BUsKOuM0VuGlwRF8YtWQ== + version "6.1.5" + resolved "https://registry.yarnpkg.com/mrm-core/-/mrm-core-6.1.5.tgz#3cfe0d474775da3e94d8c2b6490c36d77d07ab25" + integrity sha512-lIJ+P3Utp1NI6VBvGBoZDzkyP4uAViK+y+vNuHvf8oV3+JlKqTgEgbCwqw6O+c0ulGZI4tBhlHhlWZ1fSxWWLQ== dependencies: babel-code-frame "^6.26.0" comment-json "^2.2.0" @@ -3436,7 +3435,7 @@ node-repl-await@^0.1.2: acorn-static-class-features "^1.0.0" acorn-walk "^8.0.2" -nodemailer@^6.6.2: +nodemailer@^6.6.3: version "6.6.3" resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.6.3.tgz#31fb53dd4d8ae16fc088a65cb9ffa8d928a69b48" integrity sha512-faZFufgTMrphYoDjvyVpbpJcYzwyFnbAMmQtj1lVBYAUSm3SOy2fIdd9+Mr4UxPosBa0JRw9bJoIwQn+nswiew== @@ -3722,10 +3721,10 @@ path-type@^3.0.0: dependencies: pify "^3.0.0" -peek-readable@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-3.1.4.tgz#f5c3b41a4eeb63a1322c4131f0b5bac7105b892e" - integrity sha512-DX7ec7frSMtCWw+zMd27f66hcxIz/w9LQTY2RflB4WNHCVPAye1pJiP2t3gvaaOhu7IOhtPbHw8MemMj+F5lrg== +peek-readable@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.0.1.tgz#9a045f291db254111c3412c1ce4fec27ddd4d202" + integrity sha512-7qmhptnR0WMSpxT5rMHG9bW/mYSR1uqaPFj2MHvT+y/aOUu6msJijpKt5SkTDKySwg65OWG2JwTMBlgcbwMHrQ== pg-connection-string@2.5.0: version "2.5.0" @@ -3780,7 +3779,7 @@ pino-std-serializers@^3.1.0: resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz#b56487c402d882eb96cd67c257868016b61ad671" integrity sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg== -pino@^6.12.0: +pino@^6.13.0: version "6.13.0" resolved "https://registry.yarnpkg.com/pino/-/pino-6.13.0.tgz#41810b9be213af6f8f7c23a1b17058d880267e7b" integrity sha512-mRXSTfa34tbfrWqCIp1sUpZLqBhcoaGapoyxfEwaWwJGMpLijlRdDKIQUyvq4M3DUfFH5vEglwSw8POZYwbThA== @@ -3949,10 +3948,10 @@ readme-badger@^0.3.0: dependencies: balanced-match "^1.0.0" -rechoir@^0.7.0: - version "0.7.1" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686" - integrity sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg== +rechoir@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" + integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== dependencies: resolve "^1.9.0" @@ -3986,9 +3985,9 @@ reflect-metadata@^0.1.13: integrity sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg== regenerator-runtime@^0.13.4: - version "0.13.7" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" - integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew== + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -4024,9 +4023,9 @@ require-directory@^2.1.1: integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= resolve-alpn@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.1.2.tgz#30b60cfbb0c0b8dc897940fe13fe255afcdd4d28" - integrity sha512-8OyfzhAtA32LVUsJSke3auIyINcwdh5l3cvYKdKO0nvsYSKuiLfTM5i78PJswFPT8y6cPW+L1v6/hE95chcpDA== + version "1.2.0" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.0.tgz#058bb0888d1cd4d12474e9a4b6eb17bdd5addc44" + integrity sha512-e4FNQs+9cINYMO5NMFc6kOUCdohjqFPSgMuwuZAOUWqrfWsen+Yjy5qZFkV5K7VO7tFSLKcUL97olkED7sCBHA== resolve-from@^5.0.0: version "5.0.0" @@ -4313,6 +4312,13 @@ sonic-boom@^1.0.2: atomic-sleep "^1.0.0" flatstr "^1.0.12" +sonic-boom@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.1.0.tgz#07b7b181b078aeb5f202019769e4088c70c4f0eb" + integrity sha512-x2j9LXx27EDlyZEC32gBM+scNVMdPutU7FIKV2BOTKCnPrp7bY5BsplCMQ4shYYR3IhDSIrEXoqb6GlS+z7KyQ== + dependencies: + atomic-sleep "^1.0.0" + source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -4482,13 +4488,13 @@ strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -strtok3@6.1.3: - version "6.1.3" - resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.1.3.tgz#488fe8ca91664cf93432c94752ba9e5c785bd9dd" - integrity sha512-ssWSKFOeUTurMSucgyUf+a6Z9mVTYrsYiyEK5RLnh8BM6sFrKSljVlnjZXIDxMguYfdQI+mUPFHo88FYTxq1XA== +strtok3@^6.2.4: + version "6.2.4" + resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.2.4.tgz#302aea64c0fa25d12a0385069ba66253fdc38a81" + integrity sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw== dependencies: - "@tokenizer/token" "^0.1.1" - peek-readable "^3.1.4" + "@tokenizer/token" "^0.3.0" + peek-readable "^4.0.1" supports-color@^2.0.0: version "2.0.0" @@ -4525,9 +4531,9 @@ supports-hyperlinks@^2.1.0: supports-color "^7.0.0" 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== + version "6.1.6" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.6.tgz#c23d797b0a1efe5d479b1490805c5443f3560c5d" + integrity sha512-oaWyu5dQbHaYcyZCTfyPpC+VmI62/OM2RTUYavTk1MDr1cwW5Boi3baeYQKiZbY2uSQJGr+iMOzb/JFxLrft+g== dependencies: chownr "^2.0.0" fs-minipass "^2.0.0" @@ -4593,12 +4599,12 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== -token-types@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/token-types/-/token-types-3.1.0.tgz#df3902b514ba7573d8c6a2c0a6f69d1ac6a6f544" - integrity sha512-WhoeIW7UTn7NC7L0t/4x3vU/YYSS1oeUxYgiGXQLd82Kaf1qtlxOex3ETY0+o2QuRgAdyursMlUhQBKDCfMUkQ== +token-types@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.1.1.tgz#ef9e8c8e2e0ded9f1b3f8dbaa46a3228b113ba1a" + integrity sha512-hD+QyuUAyI2spzsI0B7gf/jJ2ggR4RjkAo37j3StuePhApJUwcWDjnHDOFdIWYSwNR28H14hpwm4EI+V1Ted1w== dependencies: - "@tokenizer/token" "^0.1.1" + "@tokenizer/token" "^0.3.0" ieee754 "^1.2.1" truncatise@0.0.8: @@ -4637,9 +4643,9 @@ typescript@^4.3.4: integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== uglify-js@^3.5.1: - version "3.13.10" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.10.tgz#a6bd0d28d38f592c3adb6b180ea6e07e1e540a8d" - integrity sha512-57H3ACYFXeo1IaZ1w02sfA71wI60MGco/IQFjOqK+WtKoprh7Go2/yvd2HPtoJILO2Or84ncLccI4xoHMTSbGg== + version "3.14.1" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.1.tgz#e2cb9fe34db9cb4cf7e35d1d26dfea28e09a7d06" + integrity sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g== uid-safe@2.1.5: version "2.1.5" From 721eb3addc0b7cb2a8ab96b5351ec4bf7f5a058c Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 5 Aug 2021 15:26:36 +0200 Subject: [PATCH 076/244] Working on new version of website Signed-off-by: Arthur DANJOU --- ace-manifest.json | 6 +- app/Controllers/Http/AnnouncesController.ts | 63 +++++++++++++++++++ app/Controllers/Http/FileController.ts | 6 +- app/Controllers/Http/FormsController.ts | 34 +++++++--- app/Controllers/Http/GuestBookController.ts | 20 +++++- app/Controllers/Http/LocationsController.ts | 6 +- app/Controllers/Http/PostsController.ts | 6 +- app/Controllers/Http/ProfileController.ts | 2 +- app/Controllers/Http/ProfilesController.ts | 23 +++++++ app/Controllers/Http/ProjectsController.ts | 49 ++++++++++++--- app/Controllers/Http/StatesController.ts | 59 ----------------- app/Controllers/Http/SubscribersController.ts | 35 ++++------- .../Http/TranslationsController.ts | 45 +++++++++++++ app/Controllers/Http/UsersController.ts | 16 ++--- app/Tasks/UpdateGithubReadme.ts | 55 ---------------- app/Tasks/getTranslation.ts | 9 +++ app/Validators/AuthValidator.ts | 12 ++-- app/Validators/FormValidator.ts | 16 ----- .../announce/AnnounceStoreValidator.ts | 15 +++++ .../announce/AnnounceUpdateValidator.ts | 15 +++++ app/Validators/form/FormStoreValidator.ts | 18 ++++++ app/Validators/guestbook/GuestValidator.ts | 9 ++- app/Validators/location/LocationValidator.ts | 4 +- .../profile/ProfileUpdateValidator.ts | 16 +++++ .../project/ProjectStoreValidator.ts | 19 ++++++ .../project/ProjectUpdateValidator.ts | 18 ++++++ app/Validators/project/ProjectValidator.ts | 19 ------ .../subscriber/SubscriberStoreValidator.ts | 20 ++++++ .../subscriber/SubscriberValidator.ts | 19 ------ .../translation/TranslationStoreValidator.ts | 22 +++++++ .../translation/TranslationUpdateValidator.ts | 22 +++++++ app/Validators/user/UserStoreValidator.ts | 23 +++++++ app/Validators/user/UserUpdateValidator.ts | 33 ++++++++++ app/Validators/users/UserStoreValidator.ts | 22 ------- app/Validators/users/UserUpdateValidator.ts | 25 -------- config/auth.ts | 6 +- config/bodyparser.ts | 4 +- contracts/auth.ts | 6 +- .../1625146912533_guestbook_messages.ts | 2 +- .../migrations/1628110081266_translations.ts | 2 +- start/routes/artapi.ts | 16 +++-- start/routes/artsite.ts | 21 ++++--- start/routes/home.ts | 7 +-- 43 files changed, 525 insertions(+), 320 deletions(-) create mode 100644 app/Controllers/Http/AnnouncesController.ts create mode 100644 app/Controllers/Http/ProfilesController.ts delete mode 100755 app/Controllers/Http/StatesController.ts create mode 100644 app/Controllers/Http/TranslationsController.ts delete mode 100755 app/Tasks/UpdateGithubReadme.ts create mode 100644 app/Tasks/getTranslation.ts delete mode 100755 app/Validators/FormValidator.ts create mode 100644 app/Validators/announce/AnnounceStoreValidator.ts create mode 100644 app/Validators/announce/AnnounceUpdateValidator.ts create mode 100755 app/Validators/form/FormStoreValidator.ts create mode 100644 app/Validators/profile/ProfileUpdateValidator.ts create mode 100755 app/Validators/project/ProjectStoreValidator.ts create mode 100644 app/Validators/project/ProjectUpdateValidator.ts delete mode 100755 app/Validators/project/ProjectValidator.ts create mode 100755 app/Validators/subscriber/SubscriberStoreValidator.ts delete mode 100755 app/Validators/subscriber/SubscriberValidator.ts create mode 100644 app/Validators/translation/TranslationStoreValidator.ts create mode 100644 app/Validators/translation/TranslationUpdateValidator.ts create mode 100755 app/Validators/user/UserStoreValidator.ts create mode 100755 app/Validators/user/UserUpdateValidator.ts delete mode 100755 app/Validators/users/UserStoreValidator.ts delete mode 100755 app/Validators/users/UserUpdateValidator.ts diff --git a/ace-manifest.json b/ace-manifest.json index 0b1c0f2..149a594 100755 --- a/ace-manifest.json +++ b/ace-manifest.json @@ -2,7 +2,7 @@ "commands": { "dump:rcfile": { "settings": {}, - "commandPath": "@adonisjs/core/build/commands/DumpRc", + "commandPath": "@adonisjs/core/commands/DumpRc", "commandName": "dump:rcfile", "description": "Dump contents of .adonisrc.json file along with defaults", "args": [], @@ -13,7 +13,7 @@ "settings": { "loadApp": true }, - "commandPath": "@adonisjs/core/build/commands/ListRoutes", + "commandPath": "@adonisjs/core/commands/ListRoutes", "commandName": "list:routes", "description": "List application routes", "args": [], @@ -29,7 +29,7 @@ }, "generate:key": { "settings": {}, - "commandPath": "@adonisjs/core/build/commands/GenerateKey", + "commandPath": "@adonisjs/core/commands/GenerateKey", "commandName": "generate:key", "description": "Generate a new APP_KEY secret", "args": [], diff --git a/app/Controllers/Http/AnnouncesController.ts b/app/Controllers/Http/AnnouncesController.ts new file mode 100644 index 0000000..2fd8d59 --- /dev/null +++ b/app/Controllers/Http/AnnouncesController.ts @@ -0,0 +1,63 @@ +import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; +import Announce from "App/Models/Announce"; +import AnnounceStoreValidator from "App/Validators/announce/AnnounceStoreValidator"; +import AnnounceUpdateValidator from "App/Validators/announce/AnnounceUpdateValidator"; +import getTranslation from "App/Tasks/getTranslation"; +import File from "App/Models/File"; + +export default class AnnouncesController { + + public async index ({ response }: HttpContextContract) { + const announce = await Announce.query().orderBy('created_at', 'desc').first() + return response.status(200).send({ + announce: announce + }) + } + + public async store ({ request, response }: HttpContextContract) { + const data = await request.validate(AnnounceStoreValidator) + const announce = new Announce() + + const translation = await getTranslation(data.code) + await announce.related('message').associate(translation) + + const cover = await File.findBy('label', data.cover) + if (cover) await announce.related('cover').save(cover) + + return response.status(200).send({ + announce: announce.save() + }) + } + + public async show ({ params, response }: HttpContextContract) { + return response.status(200).send({ + user: await Announce.findOrFail(params.id) + }) + } + + public async update({ request, params, response }: HttpContextContract) { + const data = await request.validate(AnnounceUpdateValidator) + const announce = await Announce.findOrFail(params.id) + + if (data.code) { + const translation = await getTranslation(data.code) + await announce.related('message').associate(translation) + } + + const cover = await File.findBy('label', data.cover) + if (cover) await announce.related('cover').save(cover) + + return response.status(200).send({ + announce + }) + } + + public async destroy ({ response, params }: HttpContextContract) { + const announce = await Announce.findOrFail(params.id) + await announce.delete() + return response.status(200).send({ + message: 'Announce successfully deleted!' + }) + } + +} diff --git a/app/Controllers/Http/FileController.ts b/app/Controllers/Http/FileController.ts index 5cef60e..941bf31 100755 --- a/app/Controllers/Http/FileController.ts +++ b/app/Controllers/Http/FileController.ts @@ -4,13 +4,13 @@ import File from "App/Models/File"; export default class FileController { - public async index({response}: HttpContextContract) { + public async index ({ response }: HttpContextContract) { return response.status(200).send({ files: File.query() }) } - public async store({request, response}: HttpContextContract) { + public async store ({ request, response }: HttpContextContract) { const file = await request.file('file', { extnames: ['jpg', 'png', 'jpeg'] }) @@ -35,7 +35,7 @@ export default class FileController { }) } - public async destroy({params, response}: HttpContextContract) { + public async destroy ({ params, response }: HttpContextContract) { const file = await File.findOrFail(params.id) await file.delete() return response.status(200).send({ diff --git a/app/Controllers/Http/FormsController.ts b/app/Controllers/Http/FormsController.ts index f97b3b0..63ff235 100755 --- a/app/Controllers/Http/FormsController.ts +++ b/app/Controllers/Http/FormsController.ts @@ -1,18 +1,34 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' -import FormValidator from "App/Validators/FormValidator"; +import FormStoreValidator from "App/Validators/form/FormStoreValidator"; import Form from "App/Models/Form"; -import FormConfirmation from "App/Mailers/FormConfirmation"; export default class FormsController { - public async send({ request, response }: HttpContextContract) { - const data = await request.validate(FormValidator) - await Form.create(data) - - await new FormConfirmation(data.name, data.email).preview() - //todo send confirmation email + email to me + public async index ({ response }: HttpContextContract) { return response.status(200).send({ - message: 'Form successfully received !' + forms: Form.query().orderBy('created_at', 'asc') + }) + } + + public async store ({ request, response }: HttpContextContract) { + const data = await request.validate(FormStoreValidator) + //todo send confirmation email + email to me with FormConfirmation + return response.status(200).send({ + form: await Form.create(data) + }) + } + + public async show ({ params, response }: HttpContextContract) { + return response.status(200).send({ + form: await Form.findOrFail(params.id) + }) + } + + public async destroy ({ response, params }: HttpContextContract) { + const form = await Form.findOrFail(params.id) + await form.delete() + return response.status(200).send({ + message: 'Form successfully deleted!' }) } diff --git a/app/Controllers/Http/GuestBookController.ts b/app/Controllers/Http/GuestBookController.ts index 8548f80..15e270a 100755 --- a/app/Controllers/Http/GuestBookController.ts +++ b/app/Controllers/Http/GuestBookController.ts @@ -5,7 +5,7 @@ import User from "App/Models/User"; export default class GuestBookController { - public async index ({response}: HttpContextContract) { + public async index ({ response }: HttpContextContract) { const guestbook_messages = await GuestbookMessage .query() .preload('user') @@ -15,7 +15,7 @@ export default class GuestBookController { }) } - public async store ({request, response}: HttpContextContract) { + public async store ({ request, response }: HttpContextContract) { const data = await request.validate(GuestValidator) let user = await User.findBy('email', data.email) if (!user) { @@ -34,7 +34,21 @@ export default class GuestBookController { }) } - public async get ({params, response}: HttpContextContract) { + public async show ({ params, response }: HttpContextContract) { + return response.status(200).send({ + guestbook_message: await GuestbookMessage.findOrFail(params.id) + }) + } + + public async destroy ({ params, response }: HttpContextContract) { + const guestbook_message = await GuestbookMessage.findOrFail(params.id) + await guestbook_message.delete() + return response.status(200).send({ + message: 'GuestBookMessage successfully deleted!' + }) + } + + public async exists ({ params, response }: HttpContextContract) { const email = await params.email const guestbook_message = await GuestbookMessage.findBy('email', email) return response.status(200).send({ diff --git a/app/Controllers/Http/LocationsController.ts b/app/Controllers/Http/LocationsController.ts index 6adcaaf..caae745 100755 --- a/app/Controllers/Http/LocationsController.ts +++ b/app/Controllers/Http/LocationsController.ts @@ -4,7 +4,7 @@ import LocationValidator from "App/Validators/location/LocationValidator"; export default class LocationsController { - public async get ({ response }: HttpContextContract) { + public async index ({ response }: HttpContextContract) { const location = await Location.query().orderBy('since', 'desc').first() if (location) { return response.status(200).send({ @@ -23,9 +23,9 @@ export default class LocationsController { public async store ({ request, response }: HttpContextContract) { const data = await request.validate(LocationValidator) - await Location.create(data) + const location = await Location.create(data) return response.status(200).send({ - message: 'Location successfully added !' + location }) } diff --git a/app/Controllers/Http/PostsController.ts b/app/Controllers/Http/PostsController.ts index 5a54d0f..7a10bdb 100755 --- a/app/Controllers/Http/PostsController.ts +++ b/app/Controllers/Http/PostsController.ts @@ -3,7 +3,7 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; export default class PostsController { - public async getLikes({params, response}: HttpContextContract) { + public async getLikes ({ params, response }: HttpContextContract) { let post = await Post.findBy('slug', params.slug) if (!post) { @@ -18,7 +18,7 @@ export default class PostsController { }) } - public async like ({params, response}: HttpContextContract) { + public async like ({ params, response }: HttpContextContract) { let post = await Post.findBy('slug', params.slug) if (!post) { @@ -38,7 +38,7 @@ export default class PostsController { }) } - public async unlike ({params, response}: HttpContextContract) { + public async unlike ({ params, response }: HttpContextContract) { let post = await Post.findByOrFail('slug', params.slug) const getLikes = post.likes - 1 diff --git a/app/Controllers/Http/ProfileController.ts b/app/Controllers/Http/ProfileController.ts index b4db79a..eb839f4 100755 --- a/app/Controllers/Http/ProfileController.ts +++ b/app/Controllers/Http/ProfileController.ts @@ -48,7 +48,7 @@ export default class ProfileController { } //todo get discord Activity - public async discord({response}: HttpContextContract) { + public async discord ({ response }: HttpContextContract) { const activity = await getDiscordActivity() return response.status(200).send({ status: activity diff --git a/app/Controllers/Http/ProfilesController.ts b/app/Controllers/Http/ProfilesController.ts new file mode 100644 index 0000000..f506289 --- /dev/null +++ b/app/Controllers/Http/ProfilesController.ts @@ -0,0 +1,23 @@ +import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; +import Profile from "App/Models/Profile"; +import ProfileUpdateValidator from "App/Validators/profile/ProfileUpdateValidator"; + +export default class ProfilesController { + + public async index ( { response }: HttpContextContract ) { + return response.status(200).send({ + profile: await Profile.first() + }) + } + + public async update ( { response, request }: HttpContextContract ) { + const profile = await Profile.firstOrFail() + const data = await request.validate(ProfileUpdateValidator) + await profile.merge(data).save() + + return response.status(200).send({ + profile + }) + } + +} diff --git a/app/Controllers/Http/ProjectsController.ts b/app/Controllers/Http/ProjectsController.ts index 813f018..4740079 100755 --- a/app/Controllers/Http/ProjectsController.ts +++ b/app/Controllers/Http/ProjectsController.ts @@ -1,20 +1,55 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import Project from "App/Models/Project"; -import ProjectValidator from "App/Validators/project/ProjectValidator"; +import ProjectStoreValidator from "App/Validators/project/ProjectStoreValidator"; +import ProjectUpdateValidator from "App/Validators/project/ProjectUpdateValidator"; +import File from "App/Models/File"; export default class ProjectsController { - public async get ({ response }: HttpContextContract) { + public async index ({ response }: HttpContextContract) { return response.status(200).send({ - projects: await Project.query().orderBy('id', 'asc') + projects: await Project.query() + .orderBy('id', 'asc') + .preload('cover') }) } - public async store ({ request, response}: HttpContextContract) { - const data = await request.validate(ProjectValidator) - await Project.create(data) + public async store ({ request, response }: HttpContextContract) { + const data = await request.validate(ProjectStoreValidator) + const project = await Project.create(data) + const cover = await File.findByOrFail('label', data.cover) + + await project.related('cover').save(cover) return response.status(200).send({ - message: 'Project successfully created' + project + }) + } + + public async show ({ params, response }: HttpContextContract) { + const project = await Project.findOrFail(params.id) + await project.load('cover') + return response.status(200).send({ + project + }) + } + + public async update ({ request, params, response }: HttpContextContract) { + const project = await Project.findOrFail(params.id) + const data = await request.validate(ProjectUpdateValidator) + const cover = await File.findBy('label', data.cover) + + await project.merge(data).save() + if (cover) await project.related('cover').save(cover) + return response.status(200).send({ + project + }) + } + + public async destroy ({ response, params }: HttpContextContract) { + const project = await Project.findOrFail(params.id) + await project.delete() + return response.status(200).send({ + message: 'Project successfully deleted!' }) } diff --git a/app/Controllers/Http/StatesController.ts b/app/Controllers/Http/StatesController.ts deleted file mode 100755 index ed29498..0000000 --- a/app/Controllers/Http/StatesController.ts +++ /dev/null @@ -1,59 +0,0 @@ -import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; -import Redis from "@ioc:Adonis/Addons/Redis"; -import {UpdateGitHubReadme} from "App/Tasks/UpdateGithubReadme"; - -export default class StatesController { - - public async get({response}: HttpContextContract) { - - return response.status(200).send({ - states: { - "is_sleeping": this.getStatus(await Redis.get(`states:is_sleeping`)), - "is_developing": this.getStatus(await Redis.get(`states:is_developing`)), - "is_learning": this.getStatus(await Redis.get(`states:is_learning`)), - "is_listening_music": this.getStatus(await Redis.get(`states:is_listening_music`)), - } - }) - } - - public async set({request, response, params}: HttpContextContract) { - const state = params.state - const value = await request.input('value') - - if (state && value) { - await Redis.set(`states:${state}`, value) - - if (value === 'true') { - switch (state) { - case 'learning': - await Redis.set(`states:developing`, 'false') - await Redis.set(`states:sleeping`, 'false') - break - case 'developing': - await Redis.set(`states:learning`, 'false') - await Redis.set(`states:sleeping`, 'false') - break - case 'listening': - await Redis.set(`states:sleeping`, 'false') - break - case 'sleeping': - await Redis.set(`states:developing`, 'false') - await Redis.set(`states:listening`, 'false') - await Redis.set(`states:learning`, 'false') - break - } - } - - await UpdateGitHubReadme() - return response.status(200).send({ - message: 'State successfully updated!' - }) - } - } - - public getStatus(state: string | null): string { - if (state === null) return "No" - return state === 'true' ? "Yes" : "No" - } - -} diff --git a/app/Controllers/Http/SubscribersController.ts b/app/Controllers/Http/SubscribersController.ts index 892b33d..5370f94 100755 --- a/app/Controllers/Http/SubscribersController.ts +++ b/app/Controllers/Http/SubscribersController.ts @@ -1,39 +1,30 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import Subscriber from "App/Models/Subscriber"; -import SubscriberValidator from "App/Validators/subscriber/SubscriberValidator"; +import SubscriberStoreValidator from "App/Validators/subscriber/SubscriberStoreValidator"; export default class SubscribersController { - public async get ({ response }: HttpContextContract) { + public async index ({ response }: HttpContextContract) { const subscribers = await Subscriber.query() return response.status(200).send({ - count: subscribers.length + count: subscribers.length, + subscribers: subscribers }) } - public async store({request, response}: HttpContextContract) { - const data = await request.validate(SubscriberValidator) - const email = await Subscriber.findBy('email', data.email) - if (email) { - return response.status(201).send({ - message: 'Subscriber already exists' - }) - } - await Subscriber.create(data) + public async store ({ request, response }: HttpContextContract) { + const data = await request.validate(SubscriberStoreValidator) return response.status(200).send({ - message: 'Subscriber successfully registered!' + subscriber: await Subscriber.create(data) }) } - public async delete({request, response}: HttpContextContract) { - const data = await request.validate(SubscriberValidator) - const subscriber = await Subscriber.findBy('email', data.email) - if (subscriber) { - await subscriber.delete() - return response.status(200).send({ - message: 'Subscriber successfully deleted!' - }) - } + public async destroy ({ params, response }: HttpContextContract) { + const subscriber = await Subscriber.findOrFail(params.id) + await subscriber.delete() + return response.status(200).send({ + message: 'Subscriber successfully deleted!' + }) } } diff --git a/app/Controllers/Http/TranslationsController.ts b/app/Controllers/Http/TranslationsController.ts new file mode 100644 index 0000000..c174cb6 --- /dev/null +++ b/app/Controllers/Http/TranslationsController.ts @@ -0,0 +1,45 @@ +import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; +import Translation from "App/Models/Translation"; +import TranslationStoreValidator from "App/Validators/translation/TranslationStoreValidator"; +import TranslationUpdateValidator from "App/Validators/translation/TranslationUpdateValidator"; + +export default class TranslationsController { + + public async index ({ response }: HttpContextContract) { + return response.status(200).send({ + translations: Translation.query() + }) + } + + public async store ({ request, response }: HttpContextContract) { + const data = await request.validate(TranslationStoreValidator) + return response.status(200).send({ + translation: await Translation.create(data) + }) + } + + public async show ({ params, response }: HttpContextContract) { + return response.status(200).send({ + translation: await Translation.findOrFail(params.id) + }) + } + + public async update ({ request, params, response }: HttpContextContract) { + const translation = await Translation.findOrFail(params.id) + const data = await request.validate(TranslationUpdateValidator) + await translation.merge(data).save() + + return response.status(200).send({ + translation + }) + } + + public async destroy ({ response, params }: HttpContextContract) { + const translation = await Translation.findOrFail(params.id) + await translation.delete() + return response.status(200).send({ + message: 'Translation successfully deleted!' + }) + } + +} diff --git a/app/Controllers/Http/UsersController.ts b/app/Controllers/Http/UsersController.ts index ecb65dc..7ee2439 100755 --- a/app/Controllers/Http/UsersController.ts +++ b/app/Controllers/Http/UsersController.ts @@ -1,40 +1,40 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import User from "App/Models/User"; -import UserStoreValidator from "App/Validators/users/UserStoreValidator"; -import UserUpdateValidator from "App/Validators/users/UserUpdateValidator"; +import UserStoreValidator from "App/Validators/user/UserStoreValidator"; +import UserUpdateValidator from "App/Validators/user/UserUpdateValidator"; export default class UsersController { - public async index({response}: HttpContextContract) { + public async index ({ response }: HttpContextContract) { return response.status(200).send({ users: User.query() }) } - public async store({request, response}: HttpContextContract) { + public async store ({ request, response }: HttpContextContract) { const data = await request.validate(UserStoreValidator) return response.status(200).send({ user: await User.create(data) }) } - public async show({params, response}: HttpContextContract) { + public async show ({ params, response }: HttpContextContract) { return response.status(200).send({ user: await User.findOrFail(params.id) }) } - public async update({request, params, response}: HttpContextContract) { + public async update ({ request, params, response }: HttpContextContract) { const user = await User.findOrFail(params.id) const data = await request.validate(UserUpdateValidator) await user.merge(data).save() return response.status(200).send({ - message: 'User successfully updated!' + user }) } - public async destroy({ response, params, auth }: HttpContextContract) { + public async destroy ({ response, params, auth }: HttpContextContract) { const user = await User.findOrFail(params.id) const admin = await User.findBy('email', 'arthurdanjou@outlook.fr') diff --git a/app/Tasks/UpdateGithubReadme.ts b/app/Tasks/UpdateGithubReadme.ts deleted file mode 100755 index f788ee1..0000000 --- a/app/Tasks/UpdateGithubReadme.ts +++ /dev/null @@ -1,55 +0,0 @@ -import Redis from "@ioc:Adonis/Addons/Redis"; -import axios from 'axios' -import Env from "@ioc:Adonis/Core/Env"; - -export async function UpdateGitHubReadme(): Promise { - const sleeping = await Redis.get('states:sleeping') - const learning = await Redis.get('states:learning') - const developing = await Redis.get('states:developing') - const listening_music = await Redis.get('states:listening') - - const infos_table = `| Informations | State | -| ---------------------------: | ------: | -| :musical_note: Music Playing | **${getStatus(listening_music)}** | -| :bed: Sleeping | **${getStatus(sleeping)}** | -| :computer: Developing | **${getStatus(developing)}** | -| :books: Learning | **${getStatus(learning)}** |` - - let change = true; - - const {data: read_me} = await axios.get('https://api.github.com/repos/arthurdanjou/arthurdanjou/readme', { - headers: { - authorization: `Bearer ${Env.get('GITHUB_TOKEN')}` - }, - }) - - const content = Buffer.from(read_me.content, 'base64').toString() - - 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 (!change) return - - await axios.put('https://api.github.com/repos/ArthurDanjou/ArthurDanjou/contents/README.md', - { - message: 'Updating recent statistics & informations', - 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', - email: 'me@arthurdanjou.fr' - } - }, { - headers: { - authorization: `Bearer ${Env.get('GITHUB_TOKEN')}` - } - } - ) -} - -function getStatus(state): string { - if (state === null) return "No" - return state === "true" ? "Yes" : "No" -} diff --git a/app/Tasks/getTranslation.ts b/app/Tasks/getTranslation.ts new file mode 100644 index 0000000..f002a65 --- /dev/null +++ b/app/Tasks/getTranslation.ts @@ -0,0 +1,9 @@ +import Translation from "App/Models/Translation"; + +export default async function getTranslation(code: string): Promise { + let translation = await Translation.findBy('code', code) + if (!translation) { + translation = await Translation.create({code: code}) + } + return translation +} diff --git a/app/Validators/AuthValidator.ts b/app/Validators/AuthValidator.ts index 91266bb..49b0402 100755 --- a/app/Validators/AuthValidator.ts +++ b/app/Validators/AuthValidator.ts @@ -1,8 +1,9 @@ -import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import {rules, schema} from '@ioc:Adonis/Core/Validator' export default class AuthValidator { - constructor (private ctx: HttpContextContract) { + public messages = { + required: 'The field {{field}} is required' } public schema = schema.create({ @@ -16,11 +17,6 @@ export default class AuthValidator { remember_me: schema.boolean() }) - public cacheKey = this.ctx.routeKey - - public messages = { - 'email.email': 'L\'adresse mail n\'est pas valide !', - 'email.required': 'Veuillez renseigner une adresse mail !', - 'password.required': 'Veuillez renseigner un mot de passe !', + constructor (protected ctx: HttpContextContract) { } } diff --git a/app/Validators/FormValidator.ts b/app/Validators/FormValidator.ts deleted file mode 100755 index 6c6947b..0000000 --- a/app/Validators/FormValidator.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { schema } from '@ioc:Adonis/Core/Validator' -import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' - -export default class FormValidator { - constructor (protected ctx: HttpContextContract) { - } - - public schema = schema.create({ - name: schema.string(), - email: schema.string(), - subject: schema.string(), - content: schema.string() - }) - - public messages = {} -} diff --git a/app/Validators/announce/AnnounceStoreValidator.ts b/app/Validators/announce/AnnounceStoreValidator.ts new file mode 100644 index 0000000..ec2bb56 --- /dev/null +++ b/app/Validators/announce/AnnounceStoreValidator.ts @@ -0,0 +1,15 @@ +import {schema} from '@ioc:Adonis/Core/Validator' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' + +export default class AnnounceStoreValidator { + public schema = schema.create({ + code: schema.string(), + cover: schema.string.optional() + }) + public messages = { + required: 'The field {{ field }} is required' + } + + constructor (protected ctx: HttpContextContract) { + } +} diff --git a/app/Validators/announce/AnnounceUpdateValidator.ts b/app/Validators/announce/AnnounceUpdateValidator.ts new file mode 100644 index 0000000..8ffd4b2 --- /dev/null +++ b/app/Validators/announce/AnnounceUpdateValidator.ts @@ -0,0 +1,15 @@ +import {schema} from '@ioc:Adonis/Core/Validator' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' + +export default class AnnounceUpdateValidator { + public schema = schema.create({ + code: schema.string.optional(), + cover: schema.string.optional() + }) + public messages = { + required: 'The field {{field}} is required' + } + + constructor (protected ctx: HttpContextContract) { + } +} diff --git a/app/Validators/form/FormStoreValidator.ts b/app/Validators/form/FormStoreValidator.ts new file mode 100755 index 0000000..aac7eda --- /dev/null +++ b/app/Validators/form/FormStoreValidator.ts @@ -0,0 +1,18 @@ +import {schema} from '@ioc:Adonis/Core/Validator' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' + +export default class FormStoreValidator { + constructor (protected ctx: HttpContextContract) { + } + + public schema = schema.create({ + name: schema.string(), + email: schema.string(), + subject: schema.string(), + content: schema.string() + }) + + public messages = { + required: 'The field {{field}} is required' + } +} diff --git a/app/Validators/guestbook/GuestValidator.ts b/app/Validators/guestbook/GuestValidator.ts index 48579c3..7868f01 100755 --- a/app/Validators/guestbook/GuestValidator.ts +++ b/app/Validators/guestbook/GuestValidator.ts @@ -2,7 +2,9 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import {rules, schema} from '@ioc:Adonis/Core/Validator' export default class GuestValidator { - constructor (private ctx: HttpContextContract) { + public messages = { + required: 'The field {{field}} is required', + 'email.email': 'The email is not correct' } public schema = schema.create({ @@ -14,9 +16,6 @@ export default class GuestValidator { ]) }) - public cacheKey = this.ctx.routeKey - - public messages = { - required: 'Le champ {{field}} doit être valide !', + constructor (protected ctx: HttpContextContract) { } } diff --git a/app/Validators/location/LocationValidator.ts b/app/Validators/location/LocationValidator.ts index 5b43f9e..40c6b24 100755 --- a/app/Validators/location/LocationValidator.ts +++ b/app/Validators/location/LocationValidator.ts @@ -1,4 +1,4 @@ -import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import {schema} from '@ioc:Adonis/Core/Validator' export default class LocationValidator { @@ -14,6 +14,6 @@ export default class LocationValidator { public cacheKey = this.ctx.routeKey public messages = { - required: 'Le champ {{field}} doit être valide !', + required: 'The field {{field}} is required' } } diff --git a/app/Validators/profile/ProfileUpdateValidator.ts b/app/Validators/profile/ProfileUpdateValidator.ts new file mode 100644 index 0000000..11f94a8 --- /dev/null +++ b/app/Validators/profile/ProfileUpdateValidator.ts @@ -0,0 +1,16 @@ +import {schema} from '@ioc:Adonis/Core/Validator' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' + +export default class ProfileUpdateValidator { + public schema = schema.create({ + age: schema.number.optional(), + hiring_status: schema.string.optional(), + hiring_color: schema.string.optional() + }) + public messages = { + required: 'The field {{field}} is required' + } + + constructor (protected ctx: HttpContextContract) { + } +} diff --git a/app/Validators/project/ProjectStoreValidator.ts b/app/Validators/project/ProjectStoreValidator.ts new file mode 100755 index 0000000..638fba4 --- /dev/null +++ b/app/Validators/project/ProjectStoreValidator.ts @@ -0,0 +1,19 @@ +import {schema} from '@ioc:Adonis/Core/Validator' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' + +export default class ProjectStoreValidator { + constructor (protected ctx: HttpContextContract) { + } + + public schema = schema.create({ + name: schema.string(), + description: schema.string(), + progress: schema.number(), + url: schema.string(), + cover: schema.string() + }) + + public messages = { + required: 'The field {{field}} is required' + } +} diff --git a/app/Validators/project/ProjectUpdateValidator.ts b/app/Validators/project/ProjectUpdateValidator.ts new file mode 100644 index 0000000..1256a46 --- /dev/null +++ b/app/Validators/project/ProjectUpdateValidator.ts @@ -0,0 +1,18 @@ +import {schema} from '@ioc:Adonis/Core/Validator' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' + +export default class ProjectUpdateValidator { + public schema = schema.create({ + name: schema.string.optional(), + description: schema.string.optional(), + progress: schema.number.optional(), + url: schema.string.optional(), + cover: schema.string.optional() + }) + public messages = { + required: 'The field {{field}} is required' + } + + constructor (protected ctx: HttpContextContract) { + } +} diff --git a/app/Validators/project/ProjectValidator.ts b/app/Validators/project/ProjectValidator.ts deleted file mode 100755 index 33fa214..0000000 --- a/app/Validators/project/ProjectValidator.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { schema } from '@ioc:Adonis/Core/Validator' -import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' - -export default class ProjectValidator { - constructor (protected ctx: HttpContextContract) { - } - - public schema = schema.create({ - name: schema.string(), - description: schema.string(), - progress: schema.number(), - url: schema.string() - }) - - - public messages = { - required: 'Le champ {{field}} doit être valide !', - } -} diff --git a/app/Validators/subscriber/SubscriberStoreValidator.ts b/app/Validators/subscriber/SubscriberStoreValidator.ts new file mode 100755 index 0000000..07cfb86 --- /dev/null +++ b/app/Validators/subscriber/SubscriberStoreValidator.ts @@ -0,0 +1,20 @@ +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' +import {rules, schema} from '@ioc:Adonis/Core/Validator' + +export default class SubscriberStoreValidator { + public schema = schema.create({ + email: schema.string({ trim: true }, [ + rules.email(), + rules.unique({ + table: 'subscribers', + column: 'email' + }) + ]) + }) + public messages = { + required: 'The field {{field}} is required' + } + + constructor (protected ctx: HttpContextContract) { + } +} diff --git a/app/Validators/subscriber/SubscriberValidator.ts b/app/Validators/subscriber/SubscriberValidator.ts deleted file mode 100755 index f06f1a5..0000000 --- a/app/Validators/subscriber/SubscriberValidator.ts +++ /dev/null @@ -1,19 +0,0 @@ -import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' -import {rules, schema} from '@ioc:Adonis/Core/Validator' - -export default class SubscriberValidator { - constructor (private ctx: HttpContextContract) { - } - - public schema = schema.create({ - email: schema.string({ trim: true }, [ - rules.email() - ]) - }) - - public cacheKey = this.ctx.routeKey - - public messages = { - required: 'Le champ {{field}} doit être valide !', - } -} diff --git a/app/Validators/translation/TranslationStoreValidator.ts b/app/Validators/translation/TranslationStoreValidator.ts new file mode 100644 index 0000000..584e7d4 --- /dev/null +++ b/app/Validators/translation/TranslationStoreValidator.ts @@ -0,0 +1,22 @@ +import {rules, schema} from '@ioc:Adonis/Core/Validator' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' + +export default class TranslationStoreValidator { + public schema = schema.create({ + code: schema.string({}, [ + rules.unique({ + table: 'translations', + column: 'code' + }) + ]), + english: schema.string.optional(), + french: schema.string.optional() + }) + public messages = { + required: 'The field {{field}} is required', + 'code.unique': 'The translation code is not unique !' + } + + constructor (protected ctx: HttpContextContract) { + } +} diff --git a/app/Validators/translation/TranslationUpdateValidator.ts b/app/Validators/translation/TranslationUpdateValidator.ts new file mode 100644 index 0000000..541aa92 --- /dev/null +++ b/app/Validators/translation/TranslationUpdateValidator.ts @@ -0,0 +1,22 @@ +import {rules, schema} from '@ioc:Adonis/Core/Validator' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' + +export default class TranslationUpdateValidator { + public schema = schema.create({ + code: schema.string({}, [ + rules.unique({ + table: 'translations', + column: 'code' + }) + ]), + english: schema.string.optional(), + french: schema.string.optional() + }) + public messages = { + required: 'The field {{field}} is required', + 'code.unique': 'The translation code is not unique !' + } + + constructor (protected ctx: HttpContextContract) { + } +} diff --git a/app/Validators/user/UserStoreValidator.ts b/app/Validators/user/UserStoreValidator.ts new file mode 100755 index 0000000..aa6bc92 --- /dev/null +++ b/app/Validators/user/UserStoreValidator.ts @@ -0,0 +1,23 @@ +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' +import {rules, schema} from '@ioc:Adonis/Core/Validator' + +export default class UserStoreValidator { + public schema = schema.create({ + email: schema.string({ trim: true, escape: true }, [ + rules.email(), + rules.required(), + rules.unique({ + table: 'users', + column: 'email' + }) + ]) + }) + public messages = { + required: 'The field {{field}} is required', + 'email.email': 'The email must be valid', + 'email.unique': 'The email is not unique' + } + + constructor (protected ctx: HttpContextContract) { + } +} diff --git a/app/Validators/user/UserUpdateValidator.ts b/app/Validators/user/UserUpdateValidator.ts new file mode 100755 index 0000000..b04aaa6 --- /dev/null +++ b/app/Validators/user/UserUpdateValidator.ts @@ -0,0 +1,33 @@ +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' +import {rules, schema} from '@ioc:Adonis/Core/Validator' + +export default class UserUpdateValidator { + public schema = schema.create({ + email: schema.string.optional({ trim: true, escape: true }, + [ + rules.email(), + rules.unique( + { + table: 'users', + column: 'email' + }) + ] + ), + password: schema.string.optional({ trim: true, escape: true }, + [ + rules.confirmed() + ] + ), + is_confirmed: schema.boolean.optional(), + confirmation_token: schema.string.optional({ trim: true, escape: true }), + remember_me: schema.string.optional({ trim: true, escape: true }), + }) + public messages = { + required: 'The field {{field}} is required', + 'email.email': 'The email must be valid', + 'password.confirmation': 'Passwords are not the same' + } + + constructor (protected ctx: HttpContextContract) { + } +} diff --git a/app/Validators/users/UserStoreValidator.ts b/app/Validators/users/UserStoreValidator.ts deleted file mode 100755 index a9749c8..0000000 --- a/app/Validators/users/UserStoreValidator.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' -import {rules, schema} from '@ioc:Adonis/Core/Validator' - -export default class UserStoreValidator { - constructor (private ctx: HttpContextContract) { - } - - public schema = schema.create({ - email: schema.string({ trim: true, escape: true }, [ - rules.email(), - rules.required(), - rules.unique({table: 'users', column: 'email'}) - ]) - }) - - public cacheKey = this.ctx.routeKey - - public messages = { - required: 'Le champ {{field}} doit être valide !', - 'email.email': 'L\'adresse mail doit être valide !', - } -} diff --git a/app/Validators/users/UserUpdateValidator.ts b/app/Validators/users/UserUpdateValidator.ts deleted file mode 100755 index 0ec1aaf..0000000 --- a/app/Validators/users/UserUpdateValidator.ts +++ /dev/null @@ -1,25 +0,0 @@ -import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' -import {rules, schema} from '@ioc:Adonis/Core/Validator' - -export default class UserUpdateValidator { - constructor (private ctx: HttpContextContract) { - } - - public schema = schema.create({ - email: schema.string.optional({trim: true, escape: true}, [rules.email(), rules.unique({ - table: 'users', column: 'email' - })]), - password: schema.string.optional({trim: true, escape: true}, [rules.confirmed()]), - is_confirmed: schema.boolean.optional(), - confirmation_token: schema.string.optional({trim: true, escape: true}), - remember_me: schema.string.optional({trim: true, escape: true}), - }) - - public cacheKey = this.ctx.routeKey - - public messages = { - required: 'Le champ {{field}} doit être valide !', - 'email.email': 'L\'adresse mail doit être valide !', - 'password.confirmation': 'Les mots de passe ne correspondent pas !' - } -} diff --git a/config/auth.ts b/config/auth.ts index c1b828d..ea1f269 100755 --- a/config/auth.ts +++ b/config/auth.ts @@ -24,7 +24,7 @@ const authConfig: AuthConfig = { | Web Guard |-------------------------------------------------------------------------- | - | Web guard uses classic old school sessions for authenticating users. + | Web guard uses classic old school sessions for authenticating user. | If you are building a standard web application, it is recommended to | use web guard with session driver | @@ -71,7 +71,7 @@ const authConfig: AuthConfig = { | Model |-------------------------------------------------------------------------- | - | The model to use for fetching or finding users. The model is imported + | The model to use for fetching or finding user. The model is imported | lazily since the config files are read way earlier in the lifecycle | of booting the app and the models may not be in a usable state at | that time. @@ -158,7 +158,7 @@ const authConfig: AuthConfig = { | Model |-------------------------------------------------------------------------- | - | The model to use for fetching or finding users. The model is imported + | The model to use for fetching or finding user. The model is imported | lazily since the config files are read way earlier in the lifecycle | of booting the app and the models may not be in a usable state at | that time. diff --git a/config/bodyparser.ts b/config/bodyparser.ts index ea33edf..2abac8a 100755 --- a/config/bodyparser.ts +++ b/config/bodyparser.ts @@ -5,7 +5,7 @@ * file. */ -import { BodyParserConfig } from '@ioc:Adonis/Core/BodyParser' +import {BodyParserConfig} from '@ioc:Adonis/Core/BodyParser' const bodyParserConfig: BodyParserConfig = { /* @@ -153,7 +153,7 @@ const bodyParserConfig: BodyParserConfig = { | Convert empty strings to null |-------------------------------------------------------------------------- | - | Convert empty form fields to null. HTML forms results in field string + | Convert empty form fields to null. HTML form results in field string | value when the field is left blank. This option normalizes all the blank | field values to "null" | diff --git a/contracts/auth.ts b/contracts/auth.ts index a498628..c53cac1 100755 --- a/contracts/auth.ts +++ b/contracts/auth.ts @@ -13,7 +13,7 @@ declare module '@ioc:Adonis/Addons/Auth' { | Providers |-------------------------------------------------------------------------- | - | The providers are used to fetch users. The Auth module comes pre-bundled + | The providers are used to fetch user. The Auth module comes pre-bundled | with two providers that are `Lucid` and `Database`. Both uses database | to fetch user details. | @@ -44,14 +44,14 @@ declare module '@ioc:Adonis/Addons/Auth' { | Guards |-------------------------------------------------------------------------- | - | The guards are used for authenticating users using different drivers. + | The guards are used for authenticating user using different drivers. | The auth module comes with 3 different guards. | | - SessionGuardContract | - BasicAuthGuardContract | - OATGuardContract ( Opaque access token ) | - | Every guard needs a provider for looking up users from the database. + | Every guard needs a provider for looking up user from the database. | */ interface GuardsList { diff --git a/database/migrations/1625146912533_guestbook_messages.ts b/database/migrations/1625146912533_guestbook_messages.ts index 0e8bd0b..6f69a23 100644 --- a/database/migrations/1625146912533_guestbook_messages.ts +++ b/database/migrations/1625146912533_guestbook_messages.ts @@ -9,7 +9,7 @@ export default class GuestbookMessages extends BaseSchema { table .integer('user_id') .unsigned() - .references('users.id') + .references('user.id') .onDelete('CASCADE') table.text('message') table.timestamps(true, true) diff --git a/database/migrations/1628110081266_translations.ts b/database/migrations/1628110081266_translations.ts index b74a945..5ecd6fe 100644 --- a/database/migrations/1628110081266_translations.ts +++ b/database/migrations/1628110081266_translations.ts @@ -1,7 +1,7 @@ import BaseSchema from '@ioc:Adonis/Lucid/Schema' export default class Translations extends BaseSchema { - protected tableName = 'translations' + protected tableName = 'translation' public async up () { this.schema.createTable(this.tableName, (table) => { diff --git a/start/routes/artapi.ts b/start/routes/artapi.ts index 1ca8923..85b18d2 100644 --- a/start/routes/artapi.ts +++ b/start/routes/artapi.ts @@ -3,15 +3,21 @@ import Application from "@ioc:Adonis/Core/Application"; Route.group(() => { Route.get('/discord', 'ProfileController.discord') - Route.post('/states/:state', 'StatesController.set') - Route.resource('/users', 'UsersController') - Route.post('/locations', 'LocationsController.store') - Route.post('/projects', 'ProjectsController.store') - Route.resource('/files', 'FileController').only(['store', 'destroy']) + Route.get('/me', 'ProfileController.me') + + Route.resource('/users', 'UsersController').except(['edit', 'create']) + + Route.resource('/translations', 'TranslationsController').except(['edit', 'create']) + + Route.resource('/locations', 'LocationsController').only(['index', 'store']) + + Route.resource('/files', 'FileController').only(['index', 'store', 'destroy']) + Route.group(() => { Route.get('/', 'FileController.index') Route.get('/:filename', async ({response, params}) => { response.download(Application.makePath('storage', params.filename)) }) }).prefix('/files') + }).middleware('auth') diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts index 6619fd6..ecb861c 100644 --- a/start/routes/artsite.ts +++ b/start/routes/artsite.ts @@ -1,16 +1,23 @@ import Route from "@ioc:Adonis/Core/Route"; Route.group(() => { - Route.post('/form', 'FormsController.send') + Route.resource('/form', 'FormsController').except(['edit', 'create', 'update']) + + Route.resource('/announces', 'AnnouncesController').except(['edit', 'create']) + + Route.resource('/projects', 'ProjectsController').except(['edit', 'create']) + + Route.resource('/profile', 'ProfilesController').only(['index', 'update']) + Route.group(() => { Route.get('/:slug', 'PostsController.getLikes') Route.post('/:slug/like', 'PostsController.like') Route.post('/:slug/unlike', 'PostsController.unlike') }).prefix('/posts') - Route.get('/subscribers', 'SubscribersController.get') - Route.post('/subscribers', 'SubscribersController.store') - Route.delete('/subscribers', 'SubscribersController.delete') - Route.get('/guestbook', 'GuestBookController.index') - Route.post('/guestbook', 'GuestBookController.store') - Route.post('/guestbook/:email', 'GuestBookController.store') + + Route.resource('/subscribers', 'SubscribersController').only(['index', 'store', 'destroy']) + + Route.resource('/guestbook', 'GuestBookController').except(['edit', 'create', 'destroy']) + Route.get('/guestbook/:email', 'GuestBookController.exists') + }).middleware('auth') diff --git a/start/routes/home.ts b/start/routes/home.ts index 45fd8c1..2e705ae 100644 --- a/start/routes/home.ts +++ b/start/routes/home.ts @@ -12,9 +12,8 @@ Route.get('/', async ({response}: HttpContextContract) => { source: `${BASE_URL}/source`, healthCheck: `${BASE_URL}/health`, routes: { - profile: `${BASE_URL}/profile`, + profile: `${BASE_URL}/me`, //stats: `${BASE_URL}/stats`, - states: `${BASE_URL}/states`, locations: `${BASE_URL}/locations`, projects: `${BASE_URL}/projects` } @@ -36,8 +35,4 @@ Route.get('/health', async ({response}: HttpContextContract) => { }) }) -Route.get('/profile', 'ProfileController.me') -Route.get('/locations', 'LocationsController.get') Route.get('/stats', 'StatsController.get') -Route.get('/states', 'StatesController.get') -Route.get('/projects', 'ProjectsController.get') From 94f6175e71781e39a9ddf9b181664bfc0e886c11 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 5 Aug 2021 15:44:26 +0200 Subject: [PATCH 077/244] Add color in Announce model Signed-off-by: Arthur DANJOU --- app/Controllers/Http/AnnouncesController.ts | 4 ++-- app/Models/Announce.ts | 6 +++++ .../announce/AnnounceStoreValidator.ts | 22 ++++++++++--------- .../announce/AnnounceUpdateValidator.ts | 17 ++++++++------ 4 files changed, 30 insertions(+), 19 deletions(-) diff --git a/app/Controllers/Http/AnnouncesController.ts b/app/Controllers/Http/AnnouncesController.ts index 2fd8d59..e36515c 100644 --- a/app/Controllers/Http/AnnouncesController.ts +++ b/app/Controllers/Http/AnnouncesController.ts @@ -16,7 +16,7 @@ export default class AnnouncesController { public async store ({ request, response }: HttpContextContract) { const data = await request.validate(AnnounceStoreValidator) - const announce = new Announce() + const announce = await Announce.create(data) const translation = await getTranslation(data.code) await announce.related('message').associate(translation) @@ -25,7 +25,7 @@ export default class AnnouncesController { if (cover) await announce.related('cover').save(cover) return response.status(200).send({ - announce: announce.save() + announce: announce }) } diff --git a/app/Models/Announce.ts b/app/Models/Announce.ts index 62abe8f..fbcc8a2 100644 --- a/app/Models/Announce.ts +++ b/app/Models/Announce.ts @@ -7,6 +7,12 @@ export default class Announce extends BaseModel { @column({ isPrimary: true }) public id: number + @column() + public color: string + + @column() + public hoverColor: string + @belongsTo(() => Translation) public message: BelongsTo diff --git a/app/Validators/announce/AnnounceStoreValidator.ts b/app/Validators/announce/AnnounceStoreValidator.ts index ec2bb56..3a70835 100644 --- a/app/Validators/announce/AnnounceStoreValidator.ts +++ b/app/Validators/announce/AnnounceStoreValidator.ts @@ -1,15 +1,17 @@ -import {schema} from '@ioc:Adonis/Core/Validator' -import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' +import { schema } from '@ioc:Adonis/Core/Validator' +import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' export default class AnnounceStoreValidator { - public schema = schema.create({ - code: schema.string(), - cover: schema.string.optional() - }) - public messages = { - required: 'The field {{ field }} is required' - } - constructor (protected ctx: HttpContextContract) { } + + public schema = schema.create({ + code: schema.string(), + cover: schema.string.optional(), + color: schema.string(), + hoverColor: schema.string() + }) + public messages = { + required: 'The field {{field}} is required' + } } diff --git a/app/Validators/announce/AnnounceUpdateValidator.ts b/app/Validators/announce/AnnounceUpdateValidator.ts index 8ffd4b2..3b5c9b9 100644 --- a/app/Validators/announce/AnnounceUpdateValidator.ts +++ b/app/Validators/announce/AnnounceUpdateValidator.ts @@ -1,15 +1,18 @@ -import {schema} from '@ioc:Adonis/Core/Validator' -import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' +import { schema } from '@ioc:Adonis/Core/Validator' +import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' export default class AnnounceUpdateValidator { + constructor (protected ctx: HttpContextContract) { + } + public schema = schema.create({ - code: schema.string.optional(), - cover: schema.string.optional() + code: schema.string(), + cover: schema.string.optional(), + color: schema.string.optional(), + hoverColor: schema.string.optional() }) + public messages = { required: 'The field {{field}} is required' } - - constructor (protected ctx: HttpContextContract) { - } } From 353764a8a3fc03e33c3d80317bb78d3632d32cb4 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 5 Aug 2021 15:50:29 +0200 Subject: [PATCH 078/244] Rename the project Signed-off-by: Arthur DANJOU --- Dockerfile | 8 ++++---- README.md | 6 +++--- config/redis.ts | 2 +- config/session.ts | 2 +- package.json | 2 +- start/routes/{artapi.ts => api.ts} | 0 start/routes/index.ts | 2 +- 7 files changed, 11 insertions(+), 11 deletions(-) rename start/routes/{artapi.ts => api.ts} (100%) diff --git a/Dockerfile b/Dockerfile index d463aae..943c5f3 100755 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,9 @@ FROM node:15.8.0-alpine3.10 -RUN mkdir -p /usr/src/artapi -WORKDIR /usr/src/artapi +RUN mkdir -p /usr/src/athena +WORKDIR /usr/src/athena -COPY . /usr/src/artapi +COPY . /usr/src/athena RUN apk update && \ apk add git @@ -14,7 +14,7 @@ RUN yarn build RUN cp .env build -WORKDIR /usr/src/artapi/build +WORKDIR /usr/src/athena/build RUN yarn install --production diff --git a/README.md b/README.md index 33b6989..ab2a052 100755 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# ArtApi 🧠 +# Athena 🧠 -ArtAPi is my personnal api connected to my instances +Athena is my personal api connected to my instances ## Features ✨ @@ -26,4 +26,4 @@ ArtAPi is my personnal api connected to my instances ## License 📑 Copyright © 2020 - [@ArthurDanj](https://arthurdanjou.fr) \ -This project is [MIT](https://github.com/ArthurDanjou/artapi/blob/master/LICENSE) Licensed. +This project is [MIT](https://github.com/ArthurDanjou/athena/blob/master/LICENSE) Licensed. diff --git a/config/redis.ts b/config/redis.ts index e9680f0..62cb325 100755 --- a/config/redis.ts +++ b/config/redis.ts @@ -40,7 +40,7 @@ const redisConfig: RedisConfig = { port: Env.get('REDIS_PORT'), password: Env.get('REDIS_PASSWORD', ''), db: Env.get('REDIS_DB', 0), - keyPrefix: 'artapi:', + keyPrefix: 'athena:', healthCheck: true }, }, diff --git a/config/session.ts b/config/session.ts index e3dab72..582f274 100755 --- a/config/session.ts +++ b/config/session.ts @@ -36,7 +36,7 @@ const sessionConfig: SessionConfig = { | The name of the cookie that will hold the session id. | */ - cookieName: 'artapi-session', + cookieName: 'athena-session', /* |-------------------------------------------------------------------------- diff --git a/package.json b/package.json index 770e01f..6c9e31f 100755 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "artapi", + "name": "athena", "version": "1.0.0", "private": true, "scripts": { diff --git a/start/routes/artapi.ts b/start/routes/api.ts similarity index 100% rename from start/routes/artapi.ts rename to start/routes/api.ts diff --git a/start/routes/index.ts b/start/routes/index.ts index f1efa6f..f2bc8d8 100644 --- a/start/routes/index.ts +++ b/start/routes/index.ts @@ -1,4 +1,4 @@ import './artsite' -import './artapi' +import './api' import './auth' import './home' From c3e99c39687a88797a107c0383649ed5bc83941a Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 11 Aug 2021 20:16:08 +0200 Subject: [PATCH 079/244] Working --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 943c5f3..ef62493 100755 --- a/Dockerfile +++ b/Dockerfile @@ -12,10 +12,10 @@ RUN yarn install RUN yarn build -RUN cp .env build - WORKDIR /usr/src/athena/build +VOLUME /usr/src/athena/build/.env + RUN yarn install --production EXPOSE 5555 From 7f8bc0019539708a1fc12615235d2fd186471230 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 11 Aug 2021 20:21:18 +0200 Subject: [PATCH 080/244] Working --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index ef62493..8647652 100755 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ RUN yarn build WORKDIR /usr/src/athena/build -VOLUME /usr/src/athena/build/.env +VOLUME "/usr/src/athena/build/.env" RUN yarn install --production From 3defcf69233fbbc0c04c671636b1a44850891246 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 11 Aug 2021 20:28:33 +0200 Subject: [PATCH 081/244] Working --- Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8647652..06693e4 100755 --- a/Dockerfile +++ b/Dockerfile @@ -14,8 +14,6 @@ RUN yarn build WORKDIR /usr/src/athena/build -VOLUME "/usr/src/athena/build/.env" - RUN yarn install --production EXPOSE 5555 From 156763694fe265e6375aec67913f702abf810e7f Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 11 Aug 2021 20:33:02 +0200 Subject: [PATCH 082/244] add volume --- Dockerfile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Dockerfile b/Dockerfile index 06693e4..2207180 100755 --- a/Dockerfile +++ b/Dockerfile @@ -16,6 +16,10 @@ WORKDIR /usr/src/athena/build RUN yarn install --production +COPY . /usr/src/athena/build + +VOLUME /usr/src/athena/build/.env + EXPOSE 5555 CMD ["yarn", "start"] From 07cefcb385e211a942e8459792973e28a096c26a Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 11 Aug 2021 20:44:28 +0200 Subject: [PATCH 083/244] add volume --- .gitignore | 1 + start/routes/api.ts | 10 +++------- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index f3668bf..70d871d 100755 --- a/.gitignore +++ b/.gitignore @@ -108,3 +108,4 @@ dist # AdonisJS database/seeders +build diff --git a/start/routes/api.ts b/start/routes/api.ts index 85b18d2..7fcc848 100644 --- a/start/routes/api.ts +++ b/start/routes/api.ts @@ -12,12 +12,8 @@ Route.group(() => { Route.resource('/locations', 'LocationsController').only(['index', 'store']) Route.resource('/files', 'FileController').only(['index', 'store', 'destroy']) - - Route.group(() => { - Route.get('/', 'FileController.index') - Route.get('/:filename', async ({response, params}) => { - response.download(Application.makePath('storage', params.filename)) - }) - }).prefix('/files') + Route.get('/files/:filename', async ({response, params}) => { + response.download(Application.makePath('storage', params.filename)) + }) }).middleware('auth') From 51ff807a2b589057ed645049dec690f991530d7b Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 11 Aug 2021 22:22:44 +0200 Subject: [PATCH 084/244] add volume --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 2207180..7c633df 100755 --- a/Dockerfile +++ b/Dockerfile @@ -16,9 +16,9 @@ WORKDIR /usr/src/athena/build RUN yarn install --production -COPY . /usr/src/athena/build +COPY . . -VOLUME /usr/src/athena/build/.env +VOLUME .env EXPOSE 5555 From 4a6b101e5777c73963d34687a255435ccfe6ac99 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 11 Aug 2021 22:32:19 +0200 Subject: [PATCH 085/244] add volume --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 7c633df..69b1a35 100755 --- a/Dockerfile +++ b/Dockerfile @@ -18,7 +18,7 @@ RUN yarn install --production COPY . . -VOLUME .env +VOLUME /.env EXPOSE 5555 From 8a6aa9fb4cd1907d959d2bd1d6a6b24ad28f7364 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 11 Aug 2021 22:37:20 +0200 Subject: [PATCH 086/244] add volume --- Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 69b1a35..a267c87 100755 --- a/Dockerfile +++ b/Dockerfile @@ -18,8 +18,6 @@ RUN yarn install --production COPY . . -VOLUME /.env - EXPOSE 5555 CMD ["yarn", "start"] From bdd615104edf3d5a29682082f3e39872b7986fd0 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 11 Aug 2021 22:54:28 +0200 Subject: [PATCH 087/244] add volume --- Dockerfile | 2 -- 1 file changed, 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index a267c87..06693e4 100755 --- a/Dockerfile +++ b/Dockerfile @@ -16,8 +16,6 @@ WORKDIR /usr/src/athena/build RUN yarn install --production -COPY . . - EXPOSE 5555 CMD ["yarn", "start"] From 08bd3071cc5bc3881e5e16cc4a751c905e7356c2 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 11 Aug 2021 22:55:38 +0200 Subject: [PATCH 088/244] add volume --- Dockerfile | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 06693e4..216039a 100755 --- a/Dockerfile +++ b/Dockerfile @@ -5,15 +5,14 @@ WORKDIR /usr/src/athena COPY . /usr/src/athena -RUN apk update && \ - apk add git - RUN yarn install RUN yarn build WORKDIR /usr/src/athena/build +COPY . /usr/src/athena/build + RUN yarn install --production EXPOSE 5555 From cd0c471be9ac689e3acd2784f854b62ebb1fe6a3 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 11 Aug 2021 23:01:44 +0200 Subject: [PATCH 089/244] add volume --- Dockerfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index 216039a..4367393 100755 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,7 @@ -FROM node:15.8.0-alpine3.10 +FROM node:16-alpine3.11 RUN mkdir -p /usr/src/athena + WORKDIR /usr/src/athena COPY . /usr/src/athena @@ -11,10 +12,10 @@ RUN yarn build WORKDIR /usr/src/athena/build -COPY . /usr/src/athena/build - RUN yarn install --production EXPOSE 5555 +COPY . . + CMD ["yarn", "start"] From d22eab0f9d154f0b88f06926adbc5511ba76cef4 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 11 Aug 2021 23:05:34 +0200 Subject: [PATCH 090/244] add volume --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index 4367393..f637413 100755 --- a/Dockerfile +++ b/Dockerfile @@ -14,6 +14,8 @@ WORKDIR /usr/src/athena/build RUN yarn install --production +RUN touch .env + EXPOSE 5555 COPY . . From 81360d41927c5c7da3f8ae6495caa83220be5917 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 11 Aug 2021 23:08:15 +0200 Subject: [PATCH 091/244] Working --- Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index f637413..526ef29 100755 --- a/Dockerfile +++ b/Dockerfile @@ -18,6 +18,6 @@ RUN touch .env EXPOSE 5555 -COPY . . +COPY . /usr/src/athena/build CMD ["yarn", "start"] From e39d4e11c08258232fc35dae1db446a81be8a728 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 11 Aug 2021 23:10:41 +0200 Subject: [PATCH 092/244] Working --- Dockerfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 526ef29..5ac6377 100755 --- a/Dockerfile +++ b/Dockerfile @@ -10,12 +10,12 @@ RUN yarn install RUN yarn build +RUN cp .env build + WORKDIR /usr/src/athena/build RUN yarn install --production -RUN touch .env - EXPOSE 5555 COPY . /usr/src/athena/build From f7eb32d54a19d5508d564d9bb891f3d7bc9d5794 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 11 Aug 2021 23:16:54 +0200 Subject: [PATCH 093/244] Working --- Dockerfile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 5ac6377..31fdca8 100755 --- a/Dockerfile +++ b/Dockerfile @@ -10,14 +10,10 @@ RUN yarn install RUN yarn build -RUN cp .env build - WORKDIR /usr/src/athena/build RUN yarn install --production EXPOSE 5555 -COPY . /usr/src/athena/build - CMD ["yarn", "start"] From 13db2dd1e485fe59575cdb7f9c2f587d87261b68 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 12 Aug 2021 00:00:03 +0200 Subject: [PATCH 094/244] Fix migration --- database/migrations/1625146912533_guestbook_messages.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/migrations/1625146912533_guestbook_messages.ts b/database/migrations/1625146912533_guestbook_messages.ts index 6f69a23..0e8bd0b 100644 --- a/database/migrations/1625146912533_guestbook_messages.ts +++ b/database/migrations/1625146912533_guestbook_messages.ts @@ -9,7 +9,7 @@ export default class GuestbookMessages extends BaseSchema { table .integer('user_id') .unsigned() - .references('user.id') + .references('users.id') .onDelete('CASCADE') table.text('message') table.timestamps(true, true) From 00604e7d1f051bd7ce351ea8799fbb7661bd26d2 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 12 Aug 2021 00:01:14 +0200 Subject: [PATCH 095/244] Fix migration --- database/migrations/1628110081266_translations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/migrations/1628110081266_translations.ts b/database/migrations/1628110081266_translations.ts index 5ecd6fe..e0f393b 100644 --- a/database/migrations/1628110081266_translations.ts +++ b/database/migrations/1628110081266_translations.ts @@ -8,7 +8,7 @@ export default class Translations extends BaseSchema { table.increments('id') table.string('code').notNullable() table.string('french').defaultTo('Traduction manquante') - table.string('code').defaultTo('Missing translation') + table.string('english').defaultTo('Missing translation') table.timestamps(true, true) }) } From e1ed447df8221f9d61037ede23daab8de2ba8634 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 12 Aug 2021 00:03:56 +0200 Subject: [PATCH 096/244] Fix translation table name --- database/migrations/1628110081266_translations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/migrations/1628110081266_translations.ts b/database/migrations/1628110081266_translations.ts index e0f393b..7a80bfc 100644 --- a/database/migrations/1628110081266_translations.ts +++ b/database/migrations/1628110081266_translations.ts @@ -1,7 +1,7 @@ import BaseSchema from '@ioc:Adonis/Lucid/Schema' export default class Translations extends BaseSchema { - protected tableName = 'translation' + protected tableName = 'translations' public async up () { this.schema.createTable(this.tableName, (table) => { From 2459331c62fe2cb76534f59ba96c2270d643da32 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 12 Aug 2021 10:16:45 +0200 Subject: [PATCH 097/244] Fix middleware problem --- start/routes/api.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/start/routes/api.ts b/start/routes/api.ts index 7fcc848..3f69315 100644 --- a/start/routes/api.ts +++ b/start/routes/api.ts @@ -1,9 +1,10 @@ import Route from "@ioc:Adonis/Core/Route"; import Application from "@ioc:Adonis/Core/Application"; +Route.get('/discord', 'ProfileController.discord') +Route.get('/me', 'ProfileController.me') + Route.group(() => { - Route.get('/discord', 'ProfileController.discord') - Route.get('/me', 'ProfileController.me') Route.resource('/users', 'UsersController').except(['edit', 'create']) From d62674db001474909b3cca51faef2ce85e7951f1 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 12 Aug 2021 10:19:28 +0200 Subject: [PATCH 098/244] Add stats route --- app/Controllers/Http/StatsController.ts | 11 +++++++++++ start/routes/api.ts | 2 +- start/routes/home.ts | 7 ++----- 3 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 app/Controllers/Http/StatsController.ts diff --git a/app/Controllers/Http/StatsController.ts b/app/Controllers/Http/StatsController.ts new file mode 100644 index 0000000..c1d426b --- /dev/null +++ b/app/Controllers/Http/StatsController.ts @@ -0,0 +1,11 @@ +import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' + +export default class StatsController { + + public async index ({ response }: HttpContextContract) { + return response.status(200).send({ + message: 'Stats is under maintenance! Come back later.' + }) + } + +} diff --git a/start/routes/api.ts b/start/routes/api.ts index 3f69315..0b1695d 100644 --- a/start/routes/api.ts +++ b/start/routes/api.ts @@ -3,9 +3,9 @@ import Application from "@ioc:Adonis/Core/Application"; Route.get('/discord', 'ProfileController.discord') Route.get('/me', 'ProfileController.me') +Route.get('/stats', 'StatsController.index') Route.group(() => { - Route.resource('/users', 'UsersController').except(['edit', 'create']) Route.resource('/translations', 'TranslationsController').except(['edit', 'create']) diff --git a/start/routes/home.ts b/start/routes/home.ts index 2e705ae..9d27307 100644 --- a/start/routes/home.ts +++ b/start/routes/home.ts @@ -13,9 +13,8 @@ Route.get('/', async ({response}: HttpContextContract) => { healthCheck: `${BASE_URL}/health`, routes: { profile: `${BASE_URL}/me`, - //stats: `${BASE_URL}/stats`, - locations: `${BASE_URL}/locations`, - projects: `${BASE_URL}/projects` + stats: `${BASE_URL}/stats`, + locations: `${BASE_URL}/locations` } }) }) @@ -34,5 +33,3 @@ Route.get('/health', async ({response}: HttpContextContract) => { report: report.report }) }) - -Route.get('/stats', 'StatsController.get') From 89b22acc40963ced4884696303dd914f4b2e01c6 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 12 Aug 2021 10:26:13 +0200 Subject: [PATCH 099/244] Fix auth error --- start/routes/api.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/start/routes/api.ts b/start/routes/api.ts index 0b1695d..6815286 100644 --- a/start/routes/api.ts +++ b/start/routes/api.ts @@ -4,14 +4,13 @@ import Application from "@ioc:Adonis/Core/Application"; Route.get('/discord', 'ProfileController.discord') Route.get('/me', 'ProfileController.me') Route.get('/stats', 'StatsController.index') +Route.resource('/locations', 'LocationsController').only(['index', 'store']) Route.group(() => { Route.resource('/users', 'UsersController').except(['edit', 'create']) Route.resource('/translations', 'TranslationsController').except(['edit', 'create']) - Route.resource('/locations', 'LocationsController').only(['index', 'store']) - Route.resource('/files', 'FileController').only(['index', 'store', 'destroy']) Route.get('/files/:filename', async ({response, params}) => { response.download(Application.makePath('storage', params.filename)) From e2212274ee6d74fd49b5b1f8a50d93dc31f65a06 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 12 Aug 2021 11:14:25 +0200 Subject: [PATCH 100/244] Add migration --- .../migrations/1628759408774_announces.ts | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 database/migrations/1628759408774_announces.ts diff --git a/database/migrations/1628759408774_announces.ts b/database/migrations/1628759408774_announces.ts new file mode 100644 index 0000000..8cd8fff --- /dev/null +++ b/database/migrations/1628759408774_announces.ts @@ -0,0 +1,28 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class Announces extends BaseSchema { + protected tableName = 'announces' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id') + table.string('color') + table.string('hover_color') + table + .integer('message_id') + .unsigned() + .references('translations.id') + .onDelete('CASCADE') + table + .integer('cover_id') + .unsigned() + .references('files.id') + .onDelete('CASCADE') + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} From 288659248733b36c3c63e1758dac80314e196b1f Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 12 Aug 2021 11:19:46 +0200 Subject: [PATCH 101/244] Add preload --- app/Controllers/Http/AnnouncesController.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/Controllers/Http/AnnouncesController.ts b/app/Controllers/Http/AnnouncesController.ts index e36515c..fb3986b 100644 --- a/app/Controllers/Http/AnnouncesController.ts +++ b/app/Controllers/Http/AnnouncesController.ts @@ -8,7 +8,12 @@ import File from "App/Models/File"; export default class AnnouncesController { public async index ({ response }: HttpContextContract) { - const announce = await Announce.query().orderBy('created_at', 'desc').first() + const announce = await Announce + .query() + .orderBy('created_at', 'desc') + .preload('message') + .preload('cover') + .first() return response.status(200).send({ announce: announce }) From a9229f4ff30d48648c06717e8b3a537570611f55 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 12 Aug 2021 11:23:36 +0200 Subject: [PATCH 102/244] Add foreignKey --- app/Models/Announce.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/Models/Announce.ts b/app/Models/Announce.ts index fbcc8a2..753f438 100644 --- a/app/Models/Announce.ts +++ b/app/Models/Announce.ts @@ -13,7 +13,9 @@ export default class Announce extends BaseModel { @column() public hoverColor: string - @belongsTo(() => Translation) + @belongsTo(() => Translation, { + foreignKey: 'translationId' + }) public message: BelongsTo @column() From cd5e32cc2f83040bdec331c12e15e1c451d20abf Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 12 Aug 2021 11:29:04 +0200 Subject: [PATCH 103/244] change message to translation --- app/Controllers/Http/AnnouncesController.ts | 6 +++--- app/Models/Announce.ts | 8 +++----- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/app/Controllers/Http/AnnouncesController.ts b/app/Controllers/Http/AnnouncesController.ts index fb3986b..dc86f6e 100644 --- a/app/Controllers/Http/AnnouncesController.ts +++ b/app/Controllers/Http/AnnouncesController.ts @@ -11,7 +11,7 @@ export default class AnnouncesController { const announce = await Announce .query() .orderBy('created_at', 'desc') - .preload('message') + .preload('translation') .preload('cover') .first() return response.status(200).send({ @@ -24,7 +24,7 @@ export default class AnnouncesController { const announce = await Announce.create(data) const translation = await getTranslation(data.code) - await announce.related('message').associate(translation) + await announce.related('translation').associate(translation) const cover = await File.findBy('label', data.cover) if (cover) await announce.related('cover').save(cover) @@ -46,7 +46,7 @@ export default class AnnouncesController { if (data.code) { const translation = await getTranslation(data.code) - await announce.related('message').associate(translation) + await announce.related('translation').associate(translation) } const cover = await File.findBy('label', data.cover) diff --git a/app/Models/Announce.ts b/app/Models/Announce.ts index 753f438..2bb40de 100644 --- a/app/Models/Announce.ts +++ b/app/Models/Announce.ts @@ -13,13 +13,11 @@ export default class Announce extends BaseModel { @column() public hoverColor: string - @belongsTo(() => Translation, { - foreignKey: 'translationId' - }) - public message: BelongsTo + @belongsTo(() => Translation) + public translation: BelongsTo @column() - public messageId: number + public translationId: number @hasOne(() => File) public cover: HasOne From f0b9bd5401fe7f32d6d0fe9670b6cc9ce6d63ce3 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 12 Aug 2021 11:39:03 +0200 Subject: [PATCH 104/244] change message to translation --- app/Controllers/Http/AnnouncesController.ts | 6 +++--- app/Models/Announce.ts | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/Controllers/Http/AnnouncesController.ts b/app/Controllers/Http/AnnouncesController.ts index dc86f6e..fb3986b 100644 --- a/app/Controllers/Http/AnnouncesController.ts +++ b/app/Controllers/Http/AnnouncesController.ts @@ -11,7 +11,7 @@ export default class AnnouncesController { const announce = await Announce .query() .orderBy('created_at', 'desc') - .preload('translation') + .preload('message') .preload('cover') .first() return response.status(200).send({ @@ -24,7 +24,7 @@ export default class AnnouncesController { const announce = await Announce.create(data) const translation = await getTranslation(data.code) - await announce.related('translation').associate(translation) + await announce.related('message').associate(translation) const cover = await File.findBy('label', data.cover) if (cover) await announce.related('cover').save(cover) @@ -46,7 +46,7 @@ export default class AnnouncesController { if (data.code) { const translation = await getTranslation(data.code) - await announce.related('translation').associate(translation) + await announce.related('message').associate(translation) } const cover = await File.findBy('label', data.cover) diff --git a/app/Models/Announce.ts b/app/Models/Announce.ts index 2bb40de..dc7ba5d 100644 --- a/app/Models/Announce.ts +++ b/app/Models/Announce.ts @@ -14,10 +14,10 @@ export default class Announce extends BaseModel { public hoverColor: string @belongsTo(() => Translation) - public translation: BelongsTo + public message: BelongsTo - @column() - public translationId: number + @column({ columnName: 'message_id' }) + public messageId: number @hasOne(() => File) public cover: HasOne From 0906e3f729cc80a632764376c77aacf058f10c1b Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 12 Aug 2021 11:49:27 +0200 Subject: [PATCH 105/244] Working --- app/Controllers/Http/AnnouncesController.ts | 5 ++++- app/Models/Announce.ts | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/Controllers/Http/AnnouncesController.ts b/app/Controllers/Http/AnnouncesController.ts index fb3986b..9cbbd7f 100644 --- a/app/Controllers/Http/AnnouncesController.ts +++ b/app/Controllers/Http/AnnouncesController.ts @@ -35,8 +35,11 @@ export default class AnnouncesController { } public async show ({ params, response }: HttpContextContract) { + const announce = await Announce.findOrFail(params.id) + announce.load('message') + announce.load('cover') return response.status(200).send({ - user: await Announce.findOrFail(params.id) + announce }) } diff --git a/app/Models/Announce.ts b/app/Models/Announce.ts index dc7ba5d..64f9a9f 100644 --- a/app/Models/Announce.ts +++ b/app/Models/Announce.ts @@ -16,12 +16,15 @@ export default class Announce extends BaseModel { @belongsTo(() => Translation) public message: BelongsTo - @column({ columnName: 'message_id' }) - public messageId: number + @column() + public translationId: number @hasOne(() => File) public cover: HasOne + @column() + public fileId: number + @column.dateTime({ autoCreate: true }) public createdAt: DateTime From 2b80b42f9b374906a1d3a74ec38bac4e73b29a39 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 12 Aug 2021 11:53:01 +0200 Subject: [PATCH 106/244] Change hasone to belongsto --- app/Models/Announce.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Models/Announce.ts b/app/Models/Announce.ts index 64f9a9f..8ba2eb1 100644 --- a/app/Models/Announce.ts +++ b/app/Models/Announce.ts @@ -1,5 +1,5 @@ import {DateTime} from 'luxon' -import {BaseModel, BelongsTo, belongsTo, column, HasOne, hasOne} from '@ioc:Adonis/Lucid/Orm' +import {BaseModel, BelongsTo, belongsTo, column} from '@ioc:Adonis/Lucid/Orm' import File from "App/Models/File"; import Translation from "App/Models/Translation"; @@ -19,8 +19,8 @@ export default class Announce extends BaseModel { @column() public translationId: number - @hasOne(() => File) - public cover: HasOne + @belongsTo(() => File) + public cover: BelongsTo @column() public fileId: number From 698b3fe9bc0e2c9ffeb06add47d212d5eedd0402 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 12 Aug 2021 11:54:51 +0200 Subject: [PATCH 107/244] Fix --- app/Controllers/Http/AnnouncesController.ts | 4 ++-- .../Http/{FileController.ts => FilesController.ts} | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename app/Controllers/Http/{FileController.ts => FilesController.ts} (96%) diff --git a/app/Controllers/Http/AnnouncesController.ts b/app/Controllers/Http/AnnouncesController.ts index 9cbbd7f..d70623f 100644 --- a/app/Controllers/Http/AnnouncesController.ts +++ b/app/Controllers/Http/AnnouncesController.ts @@ -27,7 +27,7 @@ export default class AnnouncesController { await announce.related('message').associate(translation) const cover = await File.findBy('label', data.cover) - if (cover) await announce.related('cover').save(cover) + if (cover) await announce.related('cover').associate(cover) return response.status(200).send({ announce: announce @@ -53,7 +53,7 @@ export default class AnnouncesController { } const cover = await File.findBy('label', data.cover) - if (cover) await announce.related('cover').save(cover) + if (cover) await announce.related('cover').associate(cover) return response.status(200).send({ announce diff --git a/app/Controllers/Http/FileController.ts b/app/Controllers/Http/FilesController.ts similarity index 96% rename from app/Controllers/Http/FileController.ts rename to app/Controllers/Http/FilesController.ts index 941bf31..7c8a5d1 100755 --- a/app/Controllers/Http/FileController.ts +++ b/app/Controllers/Http/FilesController.ts @@ -2,7 +2,7 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import Application from "@ioc:Adonis/Core/Application"; import File from "App/Models/File"; -export default class FileController { +export default class FilesController { public async index ({ response }: HttpContextContract) { return response.status(200).send({ From 6abfb05872fef841aaa82266310cc7e64a922710 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 12 Aug 2021 11:57:13 +0200 Subject: [PATCH 108/244] Fix --- app/Models/Announce.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Models/Announce.ts b/app/Models/Announce.ts index 8ba2eb1..81c57ee 100644 --- a/app/Models/Announce.ts +++ b/app/Models/Announce.ts @@ -14,13 +14,13 @@ export default class Announce extends BaseModel { public hoverColor: string @belongsTo(() => Translation) - public message: BelongsTo + public translation: BelongsTo @column() public translationId: number @belongsTo(() => File) - public cover: BelongsTo + public file: BelongsTo @column() public fileId: number From 7f45c3c571ec4c4693cbf3a6e43e51691021915f Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 12 Aug 2021 11:59:16 +0200 Subject: [PATCH 109/244] Fix --- app/Controllers/Http/AnnouncesController.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/app/Controllers/Http/AnnouncesController.ts b/app/Controllers/Http/AnnouncesController.ts index d70623f..edf602c 100644 --- a/app/Controllers/Http/AnnouncesController.ts +++ b/app/Controllers/Http/AnnouncesController.ts @@ -11,8 +11,8 @@ export default class AnnouncesController { const announce = await Announce .query() .orderBy('created_at', 'desc') - .preload('message') - .preload('cover') + .preload('translation') + .preload('file') .first() return response.status(200).send({ announce: announce @@ -24,10 +24,10 @@ export default class AnnouncesController { const announce = await Announce.create(data) const translation = await getTranslation(data.code) - await announce.related('message').associate(translation) + await announce.related('translation').associate(translation) const cover = await File.findBy('label', data.cover) - if (cover) await announce.related('cover').associate(cover) + if (cover) await announce.related('file').associate(cover) return response.status(200).send({ announce: announce @@ -36,8 +36,8 @@ export default class AnnouncesController { public async show ({ params, response }: HttpContextContract) { const announce = await Announce.findOrFail(params.id) - announce.load('message') - announce.load('cover') + announce.load('translation') + announce.load('file') return response.status(200).send({ announce }) @@ -49,11 +49,11 @@ export default class AnnouncesController { if (data.code) { const translation = await getTranslation(data.code) - await announce.related('message').associate(translation) + await announce.related('translation').associate(translation) } const cover = await File.findBy('label', data.cover) - if (cover) await announce.related('cover').associate(cover) + if (cover) await announce.related('file').associate(cover) return response.status(200).send({ announce From 036e86f23b5a2f5bdd3fe6cbf48d6220f4faef45 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 12 Aug 2021 12:00:17 +0200 Subject: [PATCH 110/244] Fix --- app/Models/Project.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/Models/Project.ts b/app/Models/Project.ts index 59efb0a..1e41866 100755 --- a/app/Models/Project.ts +++ b/app/Models/Project.ts @@ -1,5 +1,5 @@ import {DateTime} from 'luxon' -import {BaseModel, column, HasOne, hasOne} from '@ioc:Adonis/Lucid/Orm' +import {BaseModel, BelongsTo, belongsTo, column} from '@ioc:Adonis/Lucid/Orm' import File from "App/Models/File"; export default class Project extends BaseModel { @@ -18,8 +18,11 @@ export default class Project extends BaseModel { @column() public url: string - @hasOne(() => File) - public cover: HasOne + @belongsTo(() => File) + public file: BelongsTo + + @column() + public fileId: number @column.dateTime({ autoCreate: true }) public createdAt: DateTime From 97ee726d04da792a2f711daa816fb5c0d2b3941d Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 12 Aug 2021 12:05:53 +0200 Subject: [PATCH 111/244] Fix --- app/Controllers/Http/ProjectsController.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Controllers/Http/ProjectsController.ts b/app/Controllers/Http/ProjectsController.ts index 4740079..7d59a83 100755 --- a/app/Controllers/Http/ProjectsController.ts +++ b/app/Controllers/Http/ProjectsController.ts @@ -10,7 +10,7 @@ export default class ProjectsController { return response.status(200).send({ projects: await Project.query() .orderBy('id', 'asc') - .preload('cover') + .preload('file') }) } @@ -19,7 +19,7 @@ export default class ProjectsController { const project = await Project.create(data) const cover = await File.findByOrFail('label', data.cover) - await project.related('cover').save(cover) + await project.related('file').associate(cover) return response.status(200).send({ project }) @@ -27,7 +27,7 @@ export default class ProjectsController { public async show ({ params, response }: HttpContextContract) { const project = await Project.findOrFail(params.id) - await project.load('cover') + await project.load('file') return response.status(200).send({ project }) @@ -39,7 +39,7 @@ export default class ProjectsController { const cover = await File.findBy('label', data.cover) await project.merge(data).save() - if (cover) await project.related('cover').save(cover) + if (cover) await project.related('file').associate(cover) return response.status(200).send({ project }) From 4ed8b644a9ecbf8e952bc8313e3c1e877a281e17 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 12 Aug 2021 12:09:56 +0200 Subject: [PATCH 112/244] Fix --- database/migrations/1628110400158_projects.ts | 4 ++-- database/migrations/1628759408774_announces.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/database/migrations/1628110400158_projects.ts b/database/migrations/1628110400158_projects.ts index 2921953..6e4cc0e 100644 --- a/database/migrations/1628110400158_projects.ts +++ b/database/migrations/1628110400158_projects.ts @@ -5,13 +5,13 @@ export default class Projects extends BaseSchema { public async up () { this.schema.table(this.tableName, (table) => { - table.integer('cover_id').unsigned().references('files.id').onDelete('CASCADE') + table.integer('file_id').unsigned().references('files.id').onDelete('CASCADE') }) } public async down () { this.schema.table(this.tableName, (table) => { - table.dropColumn('cover_id') + table.dropColumn('file_id') }) } } diff --git a/database/migrations/1628759408774_announces.ts b/database/migrations/1628759408774_announces.ts index 8cd8fff..f24b512 100644 --- a/database/migrations/1628759408774_announces.ts +++ b/database/migrations/1628759408774_announces.ts @@ -9,12 +9,12 @@ export default class Announces extends BaseSchema { table.string('color') table.string('hover_color') table - .integer('message_id') + .integer('translation_id') .unsigned() .references('translations.id') .onDelete('CASCADE') table - .integer('cover_id') + .integer('file_id') .unsigned() .references('files.id') .onDelete('CASCADE') From 6a4ab88addd09919830dc45f1a7eed8cb9d6b7f9 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 13 Aug 2021 18:57:50 +0200 Subject: [PATCH 113/244] Set OAuth providers to Stateless --- app/Controllers/Http/AuthController.ts | 8 ++++---- start/routes/auth.ts | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 6c8736e..41da57a 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -44,7 +44,7 @@ export default class AuthController { } public async twitter ({ ally, auth, response }: HttpContextContract) { - const twitter = ally.use('twitter') + const twitter = ally.use('twitter').stateless() if (twitter.accessDenied()) { return response.status(403).send({ @@ -73,7 +73,7 @@ export default class AuthController { } public async discord ({ ally, auth, response }: HttpContextContract) { - const discord = ally.use('discord') + const discord = ally.use('discord').stateless() if (discord.accessDenied()) { return response.status(403).send({ @@ -102,7 +102,7 @@ export default class AuthController { } public async github ({ ally, auth, response }: HttpContextContract) { - const github = ally.use('github') + const github = ally.use('github').stateless() if (github.accessDenied()) { return response.status(403).send({ @@ -131,7 +131,7 @@ export default class AuthController { } public async google ({ ally, auth, response, }: HttpContextContract) { - const google = ally.use('google') + const google = ally.use('google').stateless() if (google.accessDenied()) { return response.status(403).send({ diff --git a/start/routes/auth.ts b/start/routes/auth.ts index deb99a1..f4c2d56 100644 --- a/start/routes/auth.ts +++ b/start/routes/auth.ts @@ -13,16 +13,16 @@ Route.group(() => { Route.get('/discord/callback', 'AuthController.discord') Route.get('/twitter', async ({ally}) => { - return ally.use('twitter').redirect() + return ally.use('twitter').stateless().redirect() }) Route.get('/github', async ({ally}) => { - return ally.use('github').redirect() + return ally.use('github').stateless().redirect() }) Route.get('/google', async ({ally}) => { - return ally.use('google').redirect() + return ally.use('google').stateless().redirect() }) Route.get('/discord', async ({ally}) => { - return ally.use('discord').redirect() + return ally.use('discord').stateless().redirect() }) }).prefix('/auth') From 0a534d6f2ff975cae16a90f9753b7567bd694d65 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 14 Aug 2021 11:14:49 +0200 Subject: [PATCH 114/244] Change query to all --- .../Http/TranslationsController.ts | 2 +- yarn.lock | 4860 ----------------- 2 files changed, 1 insertion(+), 4861 deletions(-) delete mode 100644 yarn.lock diff --git a/app/Controllers/Http/TranslationsController.ts b/app/Controllers/Http/TranslationsController.ts index c174cb6..6a911ba 100644 --- a/app/Controllers/Http/TranslationsController.ts +++ b/app/Controllers/Http/TranslationsController.ts @@ -7,7 +7,7 @@ export default class TranslationsController { public async index ({ response }: HttpContextContract) { return response.status(200).send({ - translations: Translation.query() + translations: Translation.all() }) } diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index fa5db45..0000000 --- a/yarn.lock +++ /dev/null @@ -1,4860 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@adonisjs/ace@^11.0.3": - version "11.0.3" - resolved "https://registry.yarnpkg.com/@adonisjs/ace/-/ace-11.0.3.tgz#fb003d5de3c64c34c54b3462fb09f9e8c233507f" - integrity sha512-nqAVFu8+r3HdSL4qePdItgTZSRSoNcLc2ks49Deptf8rl51Wk6H2vHesU2yLg7JHNW8+sY7lehZidTVqrG3wrA== - dependencies: - "@poppinss/cliui" "^2.2.5" - "@poppinss/prompts" "^1.2.3" - "@poppinss/utils" "^3.1.5" - fs-extra "^10.0.0" - getopts "^2.3.0" - leven "^3.1.0" - mustache "^4.2.0" - slash "^3.0.0" - term-size "^2.2.1" - -"@adonisjs/ally@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@adonisjs/ally/-/ally-4.1.0.tgz#6811c77c7862f78279d11f6be52792b0837c1829" - integrity sha512-IgyUoV9U/a8iTuRBnR0US8/qV5w+d087dqDdDVbgevGVAPyzwci2KeBGBteNzbZDuF1lhfMAz76rL9rSSbWR9A== - dependencies: - "@poppinss/oauth-client" "^2.0.4" - "@poppinss/utils" "^3.1.3" - -"@adonisjs/application@^5.1.4", "@adonisjs/application@^5.1.6": - version "5.1.6" - resolved "https://registry.yarnpkg.com/@adonisjs/application/-/application-5.1.6.tgz#da3043163b49ab35aa5dc1bfcc4ed4ba38d63f65" - integrity sha512-xg6fkCCXijMmkoZ40ih8T1QF50Dj0J7EQ1I54TWfFCFEHsIYhXrCZxeWZEpMRHsTAWaPpP0GTnMrOac/+ERWsQ== - dependencies: - "@adonisjs/config" "^3.0.5" - "@adonisjs/env" "^3.0.5" - "@adonisjs/fold" "^8.1.5" - "@adonisjs/logger" "^4.1.0" - "@adonisjs/profiler" "^6.0.6" - "@poppinss/utils" "^3.1.5" - semver "^7.3.5" - -"@adonisjs/assembler@^5.3.2": - version "5.3.5" - resolved "https://registry.yarnpkg.com/@adonisjs/assembler/-/assembler-5.3.5.tgz#4a159cb2214c38b4c571e30378df1adc20485117" - integrity sha512-vuLHKZk9ZJ9zSWSdpQcHxVtUpRxySSKRlHuRo18nzSDZODtpsDawImdrDu8pYMKb90bkxdFxQZbkCMmuAg6TKg== - dependencies: - "@adonisjs/application" "^5.1.4" - "@adonisjs/env" "^3.0.4" - "@adonisjs/ioc-transformer" "^2.3.0" - "@adonisjs/require-ts" "^2.0.6" - "@adonisjs/sink" "^5.1.5" - "@poppinss/chokidar-ts" "^3.3.0" - "@poppinss/cliui" "^2.2.4" - "@poppinss/utils" "^3.1.3" - cpy "^8.1.2" - emittery "^0.9.2" - execa "^5.1.1" - fs-extra "^10.0.0" - get-port "^5.1.1" - has-yarn "^2.1.0" - picomatch "^2.3.0" - slash "^3.0.0" - -"@adonisjs/auth@^8.0.6": - version "8.0.7" - resolved "https://registry.yarnpkg.com/@adonisjs/auth/-/auth-8.0.7.tgz#8e73cb0d491dc58aa1e72b0ef8166718c5bfbf08" - integrity sha512-iTB9u5xzJBhdZthezxPR8+HPI0xLSseioeOeGlQumlawwS0KbuBDoJ1JkBSIy2/Yf235BzLdlB78vW3dYhNFsA== - dependencies: - "@poppinss/hooks" "^3.0.4" - "@poppinss/utils" "^3.1.3" - luxon "^1.27.0" - -"@adonisjs/bodyparser@^7.1.4": - version "7.1.5" - resolved "https://registry.yarnpkg.com/@adonisjs/bodyparser/-/bodyparser-7.1.5.tgz#dbe044a9c595bdca8b8dd965dda45e911080776c" - integrity sha512-wiWYHTKJixLZIVq04dHCp9ok8FhiRDVSre1AgPzCtGFGjQf+qXjqfPNCEiPozt+ffKWNaDAUL8PGqJsDSmLuDA== - dependencies: - "@poppinss/co-body" "^1.1.3" - "@poppinss/multiparty" "^1.0.2" - "@poppinss/utils" "^3.1.5" - bytes "^3.1.0" - end-of-stream "^1.4.4" - file-type "^16.5.2" - fs-extra "^10.0.0" - media-typer "^1.1.0" - -"@adonisjs/bouncer@^2.2.4": - version "2.2.4" - resolved "https://registry.yarnpkg.com/@adonisjs/bouncer/-/bouncer-2.2.4.tgz#651428140f71b087ad71850d5f5d4bbc405e953d" - integrity sha512-b8DRojf12qeJ2cdY84fUC/Ab2nhMkL/5+V9JBWP8/pnkbhQA1YjkvjTKLFWeGKSb+o4mKeK6OBW0W5e8v/R1Zw== - dependencies: - "@poppinss/utils" "^3.1.3" - -"@adonisjs/config@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@adonisjs/config/-/config-3.0.5.tgz#00597e949252d09b4d2f9fba3b1321f299833585" - integrity sha512-/Hy8K3s3WAfhBxlmdYqJTKpKfACyg/4V3rXx2t14pMF8Kkhoo7jGQK170HzEPjkMm+qkc5aViUMFkHSr6pgfrA== - dependencies: - "@poppinss/utils" "^3.1.4" - -"@adonisjs/core@^5.1.10": - version "5.1.11" - resolved "https://registry.yarnpkg.com/@adonisjs/core/-/core-5.1.11.tgz#fff8ac93dbf38e9d0eda2603d9c1fa0c2066633e" - integrity sha512-iBoV7cGMhq5TiUt1B89dnMRnOWma2kmkL0LE9RfzYUPMyNspyWPNr93E5RQ+ml7xAQr74bAyKVywImLHIy4nOw== - dependencies: - "@adonisjs/ace" "^11.0.3" - "@adonisjs/application" "^5.1.6" - "@adonisjs/bodyparser" "^7.1.4" - "@adonisjs/encryption" "^4.0.5" - "@adonisjs/events" "^7.1.2" - "@adonisjs/hash" "^7.0.8" - "@adonisjs/http-server" "^5.5.2" - "@adonisjs/validator" "^11.0.4" - "@poppinss/cliui" "^2.2.5" - "@poppinss/utils" "^3.1.5" - fs-extra "^10.0.0" - serve-static "^1.14.1" - stringify-attributes "^2.0.0" - -"@adonisjs/encryption@^4.0.5": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@adonisjs/encryption/-/encryption-4.0.5.tgz#cf4e3012d8a09815e6e53dd58b3add95cb9e9115" - integrity sha512-PCyzcwwb2IxotFNHEXV1fkfXK/XT4cpR+wJtpf+QurB7xS5BqIIosRWISEkwD7l98OuvLtt505Qg/caVDN3q8w== - dependencies: - "@poppinss/utils" "^3.1.4" - -"@adonisjs/env@^3.0.4", "@adonisjs/env@^3.0.5": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@adonisjs/env/-/env-3.0.5.tgz#537c510269292548945db35a819422ce2046d02b" - integrity sha512-pppLokSrTbt6ykSIMg7BxwRBChbwq2SyuqB7J5uyuXbHelExY/yX7UagtJxsK0IJ0FhNYs2oemXrtJQAIAQ0oQ== - dependencies: - "@poppinss/utils" "^3.1.4" - dotenv "^10.0.0" - validator "^13.6.0" - -"@adonisjs/events@^7.1.2": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@adonisjs/events/-/events-7.1.2.tgz#902e439362d2869b7fe8d5d0a7672af71dc519c7" - integrity sha512-S5ZhI/gFb6Ci0m6n8RRv0Gs/MBhAoFDNYJ/vilVaxTi0a6keRkRBR7Y3IgBrwXQedJnlGe4OqMXA4ExQLK8HNQ== - dependencies: - emittery "^0.9.2" - -"@adonisjs/fold@^8.1.5": - version "8.1.5" - resolved "https://registry.yarnpkg.com/@adonisjs/fold/-/fold-8.1.5.tgz#425f5f2d6fac2b1143c4bcf148bf8e91a0295099" - integrity sha512-eqbq0zQd0TV7AoN/RP4vUUg442BP4GSc0U1CsNYGKJ3YBhxfgThVLDlgn1K4/nadC1lv4/Gf3ZSnLj1Rx5OzFA== - dependencies: - "@poppinss/utils" "^3.1.4" - -"@adonisjs/hash@^7.0.8": - version "7.0.8" - resolved "https://registry.yarnpkg.com/@adonisjs/hash/-/hash-7.0.8.tgz#6f01a5becca92da9495ec34b36412fb66edfa560" - integrity sha512-nLgUUQw4SZ9petDsdAgywgYDR0VEdlZTh59MwW12wEdaLYvt7cKeabWh588JQQb0M7jmUmzVcUkYktpMBfdmdQ== - dependencies: - "@phc/format" "^1.0.0" - "@poppinss/manager" "^4.0.4" - "@poppinss/utils" "^3.1.4" - -"@adonisjs/http-server@^5.5.2": - version "5.5.4" - resolved "https://registry.yarnpkg.com/@adonisjs/http-server/-/http-server-5.5.4.tgz#8d04373b4a31edcea7cad4028c3c15ae619b5537" - integrity sha512-SQbDpQEbG+SZ3pnjNRcCVVBH9T4Zyi+ydoLG6oBIJfAYzzkOX7mZFyj9HOTkgJR361Jxb7l8+kkIDnTJ1v6O+Q== - dependencies: - "@poppinss/matchit" "^3.1.2" - "@poppinss/utils" "^3.1.5" - accepts "^1.3.7" - co-compose "^6.1.4" - content-disposition "^0.5.3" - cookie "^0.4.1" - destroy "^1.0.4" - encodeurl "^1.0.2" - etag "^1.8.1" - fresh "^0.5.2" - haye "^3.0.0" - macroable "^5.1.4" - mime-types "^2.1.31" - ms "^2.1.3" - on-finished "^2.3.0" - pluralize "^8.0.0" - proxy-addr "^2.0.7" - qs "^6.10.1" - set-cookie-parser "^2.4.8" - tmp-cache "^1.1.0" - type-is "^1.6.18" - vary "^1.1.2" - -"@adonisjs/ioc-transformer@^2.3.0": - version "2.3.1" - resolved "https://registry.yarnpkg.com/@adonisjs/ioc-transformer/-/ioc-transformer-2.3.1.tgz#9157cb03d0202a36b9a75712462b195171c4ce8d" - integrity sha512-/pbMSy2gmswWvvSdy4EbLHzr9Oa8gsIlM01n8J8xbO3QW3z1JRuZy2SbmD06OveW4b5dm/Hn0hC8GK2cY+nRgg== - -"@adonisjs/logger@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@adonisjs/logger/-/logger-4.1.0.tgz#0249ea8938e2200663a4de847923e6c2e1dbe81e" - integrity sha512-Baxx9FiI/rRQ2U58TpTYf5psG345YzTVs0Fh2lHP1f33wekjYLHFbHSjo/1vJDIBEAR0/4udO2BbBNG9jKa10Q== - dependencies: - "@poppinss/utils" "^3.1.5" - "@types/pino" "^6.3.9" - abstract-logging "^2.0.1" - pino "^6.13.0" - -"@adonisjs/lucid@^15.0.1": - version "15.0.3" - resolved "https://registry.yarnpkg.com/@adonisjs/lucid/-/lucid-15.0.3.tgz#b7549070423e2924a8db102156903e7b7c3774ec" - integrity sha512-UbzmyV96X227AOwyXjJNs9/DCRHUl8jCbEJzQwRcQrfFWI0HaIH9crJYKzi1djoQOxXjM+qcTdrd48HDwnb9Vw== - dependencies: - "@poppinss/hooks" "^3.0.4" - "@poppinss/utils" "^3.1.3" - "@types/faker" "^5.5.6" - faker "^5.5.3" - fast-deep-equal "^3.1.3" - igniculus "^1.5.0" - knex "^0.95.6" - knex-dynamic-connection "^2.1.1" - luxon "^1.27.0" - macroable "^5.1.3" - pretty-hrtime "^1.0.3" - qs "^6.10.1" - slash "^3.0.0" - -"@adonisjs/mail@^7.2.1": - version "7.2.3" - resolved "https://registry.yarnpkg.com/@adonisjs/mail/-/mail-7.2.3.tgz#d3e1f0fe6cff66d50ca0e4200c815c8dfd4cff24" - integrity sha512-JFpSuBtLIVTANbLdOuPqYlViOAU1PFqgG11uSCFjTj/V5qqGaKpFsH6AM1AVnupFIUoYChy5eMcrWOX3+BWXcQ== - dependencies: - "@poppinss/colors" "^2.1.5" - "@poppinss/manager" "^4.0.4" - "@poppinss/utils" "^3.1.5" - fastq "^1.11.1" - get-stream "^6.0.1" - got "^11.8.2" - ical-generator "^3.0.0-develop.4" - multi-part "^3.0.0" - nodemailer "^6.6.3" - -"@adonisjs/profiler@^6.0.6": - version "6.0.6" - resolved "https://registry.yarnpkg.com/@adonisjs/profiler/-/profiler-6.0.6.tgz#8a7b67404f8850ca98745064565aeb264e3bee24" - integrity sha512-8jW1awNazVTc5cj8cihBqEHX3zbvkBQyPHyCgNqkPJez3jQ+gr4YqvUdLm4rto+eJrORna6P9H8FM/g/u0Hvcw== - dependencies: - "@poppinss/utils" "^3.1.4" - jest-worker "^27.0.6" - -"@adonisjs/redis@^7.0.6": - version "7.0.8" - resolved "https://registry.yarnpkg.com/@adonisjs/redis/-/redis-7.0.8.tgz#25223b61c253131394ab94aaf29ce12a17b338d9" - integrity sha512-5tADsSTAJt3uCxg942/0jjZQkNYkbFNMYfvPczsQ2NX0ixx/CmjHje+RO6o/Uhm7YBcvClMIvJUoFHqa8nnv8w== - dependencies: - "@poppinss/utils" "^3.1.5" - "@types/ioredis" "^4.26.6" - ioredis "^4.27.6" - -"@adonisjs/repl@^3.1.4": - version "3.1.5" - resolved "https://registry.yarnpkg.com/@adonisjs/repl/-/repl-3.1.5.tgz#27eb99f8e5dcc2250435e90b964f12b8d633d8b8" - integrity sha512-rFc2dMzkEtYwQMVfVAEJiZcOHl0sn1s8vZ9LN6+ZpkT5rUyvRjHeY4MxrzWXcde6WSAwYlxlSpO167RwXDNCsw== - dependencies: - "@poppinss/colors" "^2.1.5" - node-repl-await "^0.1.2" - parse-imports "0.0.5" - string-width "^4.2.2" - -"@adonisjs/require-ts@^2.0.6": - version "2.0.7" - resolved "https://registry.yarnpkg.com/@adonisjs/require-ts/-/require-ts-2.0.7.tgz#11aaafd4e67fed1554f6f0991539368f208f78fa" - integrity sha512-B0c6kN5syDBLBW1+84BW57mTAkSFke6YbgbgfLMO3I9X38SlOFxujJLty/JNK4Oa/J7FLaL+mioM0XGJsRliSQ== - dependencies: - "@poppinss/utils" "^3.1.4" - debug "^4.3.2" - find-cache-dir "^3.3.1" - fs-extra "^10.0.0" - normalize-path "^3.0.0" - pirates "^4.0.1" - rev-hash "^3.0.0" - source-map-support "^0.5.19" - -"@adonisjs/session@^6.0.6": - version "6.1.1" - resolved "https://registry.yarnpkg.com/@adonisjs/session/-/session-6.1.1.tgz#f3ffed30ecb82168b0660d316c46ffb053566114" - integrity sha512-TClg2O6wUnsoI4DhCS7F3mCRqmWO8AEh1kSrnKNl6ZqnxesLgU+30lsmMGTPfohSK/j2eU27+LpzuLFCz9Rf7Q== - dependencies: - "@poppinss/utils" "^3.1.5" - fs-extra "^10.0.0" - -"@adonisjs/sink@^5.1.5": - version "5.1.5" - resolved "https://registry.yarnpkg.com/@adonisjs/sink/-/sink-5.1.5.tgz#8a238052d66f06dd9894516eb7270797c6489b2b" - integrity sha512-f/p9+OFluCaYXUrUAhCz20KPmOHub9CxNybSyzFSl34pPb0kIJbTcm5wjAz3nomAi5XZ5ZKMPpTYywc1KggGVA== - dependencies: - "@poppinss/cliui" "^2.2.4" - "@poppinss/prompts" "^1.2.2" - "@poppinss/utils" "^3.1.3" - cp-file "^9.0.0" - fs-extra "^10.0.0" - marked "^2.0.7" - marked-terminal "^4.1.1" - mrm-core "^6.0.0" - mustache "^4.2.0" - open "^8.2.0" - -"@adonisjs/validator@^11.0.4": - version "11.0.4" - resolved "https://registry.yarnpkg.com/@adonisjs/validator/-/validator-11.0.4.tgz#0b9017163f5c958f852efc550af279e0e7f1913f" - integrity sha512-8OuiZKa5YE1LvEEI592tbvc5CQUlwC1ixbTZpnrZ9QfcwJekDe+gD3Ap+XPPC5yfXhBnf85e9GWi+UFRPLSEzQ== - dependencies: - "@poppinss/utils" "^3.1.5" - "@types/luxon" "^1.27.1" - "@types/validator" "^13.6.3" - luxon "^2.0.1" - normalize-url "^6.1.0" - tmp-cache "^1.1.0" - validator "^13.6.0" - -"@adonisjs/view@^6.0.3": - version "6.0.8" - resolved "https://registry.yarnpkg.com/@adonisjs/view/-/view-6.0.8.tgz#22cc403975d1dc8d617e13796ec9c1bb134e8ac2" - integrity sha512-HJSPGeYgeuYKJ9dv+bVTF9jkphRZtaDE5bJXFuNdPCnJc6GS58OBugoS/DBlGpYoPe+uImPdHlEvWaETnttSuQ== - dependencies: - edge-error "^2.0.5" - edge-supercharged "^3.1.1" - edge.js "^5.3.1" - -"@arr/every@^1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@arr/every/-/every-1.0.1.tgz#22fe1f8e6355beca6c7c7bde965eb15cf994387b" - integrity sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg== - -"@babel/runtime@^7.14.6", "@babel/runtime@^7.8.7": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.8.tgz#7119a56f421018852694290b9f9148097391b446" - integrity sha512-twj3L8Og5SaCRCErB4x4ajbvBIVV77CGeFglHpeg5WC5FF8TZzBWXtTJ4MqaD9QszLYTtr+IsaAL2rEUevb+eg== - dependencies: - regenerator-runtime "^0.13.4" - -"@hapi/bourne@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-2.0.0.tgz#5bb2193eb685c0007540ca61d166d4e1edaf918d" - integrity sha512-WEezM1FWztfbzqIUbsDzFRVMxSoLy3HugVcux6KDDtTqzPsLE8NDRHfXvev66aH1i2oOKKar3/XDjbvh/OUBdg== - -"@kdf/salt@^2.0.1": - version "2.0.1" - 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.5" - resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz#2a0b32fcb416fb3f2250fd24cb2a81421a4f5950" - integrity sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA== - 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" - integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== - dependencies: - call-me-maybe "^1.0.1" - glob-to-regexp "^0.3.0" - -"@nodelib/fs.stat@^1.1.2": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" - integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== - -"@phc/format@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@phc/format/-/format-1.0.0.tgz#b5627003b3216dc4362125b13f48a4daa76680e4" - integrity sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ== - -"@poppinss/chokidar-ts@^3.3.0": - version "3.3.1" - resolved "https://registry.yarnpkg.com/@poppinss/chokidar-ts/-/chokidar-ts-3.3.1.tgz#8d68c7043c1bae21b7028cc4c129c0da55292000" - integrity sha512-S52E849XDUMcam+cE94yp9QWEl9ZTiytGJWM5XtWjTCjfyijn0KoG6DYnntgYPmdSeXZCdXt2DaGrMZM9I6llw== - dependencies: - builtin-modules "^3.2.0" - chokidar "^3.5.2" - debug "^4.3.1" - emittery "^0.9.2" - fs-extra "^10.0.0" - mem "^8.1.1" - picomatch "^2.3.0" - -"@poppinss/cliui@^2.2.4", "@poppinss/cliui@^2.2.5": - version "2.2.5" - resolved "https://registry.yarnpkg.com/@poppinss/cliui/-/cliui-2.2.5.tgz#2955057fc2449a1af0692f9d7ef1df2d11713a89" - integrity sha512-qF5Bqa9h0q74d1cQTNVx6xFgUulKzOBn8nE8d9HWzkjEOM+h1h0NI0m5Nl0la3kqANKymBOHM8e0IrMV5w/U+w== - dependencies: - "@poppinss/colors" "^2.1.5" - cli-boxes "^3.0.0" - cli-table3 "^0.6.0" - color-support "^1.1.3" - log-update "^4.0.0" - pretty-hrtime "^1.0.3" - string-width "^4.2.2" - -"@poppinss/co-body@^1.1.3": - version "1.1.3" - resolved "https://registry.yarnpkg.com/@poppinss/co-body/-/co-body-1.1.3.tgz#454e8cdc29196e8eead303c63b0b7207815fff18" - integrity sha512-Qhm2sGNTSRpKAlqt+ofZwWMzMI8QJXd36DN6F1Ska2B0Lt1Ev3qi+kNHym1GcIJ2NG/P/LS7i2fIbKZtGXnZ9w== - dependencies: - "@poppinss/utils" "^3.1.3" - inflation "^2.0.0" - qs "^6.10.1" - raw-body "^2.4.1" - type-is "^1.6.18" - -"@poppinss/colors@^2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@poppinss/colors/-/colors-2.1.5.tgz#3a8abb9c8e8828959ead55ee39b82a2c35e671ee" - integrity sha512-C6XChd0fssMe4aXqRrAAGrIKlOySEemKV422JYfBZaS7/qCfvQNIw67b0N03kbrgSrGvEgMUlaJVULlukuZM+g== - dependencies: - color-support "^1.1.3" - kleur "^4.1.4" - -"@poppinss/hooks@^3.0.4": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@poppinss/hooks/-/hooks-3.0.5.tgz#ae491fc11500bc9cb7e24f6b637704e7d9868505" - integrity sha512-kazQstmIPq4n7/qjk5ms9SEiXtLEJ+EMZXxyXTupTVq7URFIUeULgXFv/F3vheLPCSzfByu/L2iO7M457RjszQ== - -"@poppinss/inspect@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@poppinss/inspect/-/inspect-1.0.1.tgz#b03df9c1204ee72e3b9dbd5c34029c39475fb21d" - integrity sha512-kLeEaBSGhlleyYvKc7c9s3uE6xv7cwyulE0EgHf4jU/CL96h0yC4mkdw1wvC1l1PYYQozCGy46FwMBAAMOobCA== - -"@poppinss/manager@^4.0.4": - version "4.0.4" - resolved "https://registry.yarnpkg.com/@poppinss/manager/-/manager-4.0.4.tgz#7e71aedbc8e3a32cc5eb53adc78cf861240d0082" - integrity sha512-z9SFv+wKH+aZ5XLZXfkBsEk3h4scFf1imBtGFvlhBklzpplmvY70nSlHTPRC16h1VwjyuWaGuarN+vvQpQoFpA== - -"@poppinss/matchit@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@poppinss/matchit/-/matchit-3.1.2.tgz#674a477f6cc58f760b16b52d20673f886615cc43" - integrity sha512-Bx+jY+vmdQFmwYiHliiPjr+oVBaGnh79B1h1FSAm3jME1QylLFt8PPYC0ymO8Q5PzJj/KuE3jeTnZhRHOWqq8g== - dependencies: - "@arr/every" "^1.0.0" - -"@poppinss/multiparty@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@poppinss/multiparty/-/multiparty-1.0.2.tgz#40d7b71d23a6ae6f1ee8b9c0f272dc31a29c6920" - integrity sha512-SQuw3FmvAr/3TnAx8L/S7CKO4pKKVozscu9DZ/GXFCNd7KCKvajaDl0RCna0CgABJQBBcdKHxx3w1yH0NedzDA== - dependencies: - http-errors "~1.8.0" - safe-buffer "5.2.1" - uid-safe "2.1.5" - -"@poppinss/oauth-client@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@poppinss/oauth-client/-/oauth-client-2.0.4.tgz#26795088b472d580127074b8ec28d868d7feb352" - integrity sha512-bl8ITdz0FG1ydCAmXVJxrlEtUm42JZK4yj6jA7CVsVhKhzf8OwG3XY8kVETmh/APp8kH8vSM6u5l+lgPKpdlIA== - dependencies: - "@types/luxon" "^1.26.5" - got "^11.8.2" - luxon "^1.27.0" - -"@poppinss/prompts@^1.2.2", "@poppinss/prompts@^1.2.3": - version "1.2.3" - resolved "https://registry.yarnpkg.com/@poppinss/prompts/-/prompts-1.2.3.tgz#c9e7461837a99919d3ccb015aa33afe899a92f0c" - integrity sha512-/jS4KYZwnu6gqojMNT3p0UPLnYI1s7PYW+0xVEf+syXYDuCEE4UWuqLvVcqvuoBkLwAwhwD/hyVPr8NtoCoUYQ== - dependencies: - "@poppinss/colors" "^2.1.5" - enquirer "^2.3.6" - -"@poppinss/utils@^3.1.3", "@poppinss/utils@^3.1.4", "@poppinss/utils@^3.1.5": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@poppinss/utils/-/utils-3.2.0.tgz#cb07d536565e77b019d868f7d2cfc55600822337" - integrity sha512-gnqlrxE4zMvqW+LpviyCWCg4+RShCYCFyBdVTyg9ZZEEgPBV9bEY+YB5r/2klFrKx30k9nfClHVI2n8ZKmXgsw== - dependencies: - "@types/bytes" "^3.1.1" - "@types/he" "^1.1.2" - buffer-alloc "^1.2.0" - bytes "^3.1.0" - change-case "^4.1.2" - cuid "^2.1.8" - fs-readdir-recursive "^1.1.0" - he "^1.2.0" - kind-of "^6.0.3" - lodash "^4.17.21" - ms "^2.1.3" - pluralize "^8.0.0" - require-all "^3.0.0" - resolve-from "^5.0.0" - slugify "^1.6.0" - truncatise "0.0.8" - -"@sindresorhus/is@^4.0.0": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.0.1.tgz#d26729db850fa327b7cacc5522252194404226f5" - integrity sha512-Qm9hBEBu18wt1PO2flE7LPb30BHMQt1eQgbV76YntdNk73XZGpn3izvGTYxbGgzXKgbCjiia0uxTd3aTNQrY/g== - -"@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== - dependencies: - defer-to-connect "^2.0.0" - -"@tokenizer/token@^0.3.0": - version "0.3.0" - resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" - integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== - -"@types/bytes@^3.1.1": - version "3.1.1" - resolved "https://registry.yarnpkg.com/@types/bytes/-/bytes-3.1.1.tgz#67a876422e660dc4c10a27f3e5bcfbd5455f01d0" - integrity sha512-lOGyCnw+2JVPKU3wIV0srU0NyALwTBJlVSx5DfMQOFuuohA8y9S8orImpuIQikZ0uIQ8gehrRjxgQC1rLRi11w== - -"@types/cacheable-request@^6.0.1": - 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== - dependencies: - "@types/http-cache-semantics" "*" - "@types/keyv" "*" - "@types/node" "*" - "@types/responselike" "*" - -"@types/faker@^5.5.6": - version "5.5.7" - resolved "https://registry.yarnpkg.com/@types/faker/-/faker-5.5.7.tgz#52aa3ad6ead3642b7c54e1e87e9e3ff5b10b3873" - integrity sha512-ejzb61Q5zQTtS0ZIafgQ7ahO5ACzmGhG5PfX2hxWyth3k0/aysb4ZOxKQB8DbzwSPppA5jmFBwqnBxjv5hqI5Q== - -"@types/glob@^7.1.1": - version "7.1.4" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672" - integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - -"@types/he@^1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@types/he/-/he-1.1.2.tgz#0c8b275f36d2b8b651104638e4d45693349c3953" - integrity sha512-kSJPcLO1x+oolc0R89pUl2kozldQ/fVQ1C1p5mp8fPoLdF/ZcBvckaTC2M8xXh3GYendXvCpy5m/a2eSbfgNgw== - -"@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== - -"@types/ioredis@^4.26.6": - version "4.26.6" - resolved "https://registry.yarnpkg.com/@types/ioredis/-/ioredis-4.26.6.tgz#7e332d6d24f12d79a1099834ccfa0c169ef667ed" - integrity sha512-Q9ydXL/5Mot751i7WLCm9OGTj5jlW3XBdkdEW21SkXZ8Y03srbkluFGbM3q8c+vzPW30JOLJ+NsZWHoly0+13A== - dependencies: - "@types/node" "*" - -"@types/keyv@*": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.2.tgz#5d97bb65526c20b6e0845f6b0d2ade4f28604ee5" - integrity sha512-/FvAK2p4jQOaJ6CGDHJTqZcUtbZe820qIeTg7o0Shg7drB4JHeL+V/dhSaly7NXx6u8eSee+r7coT+yuJEvDLg== - dependencies: - "@types/node" "*" - -"@types/luxon@^1.26.5", "@types/luxon@^1.27.1": - version "1.27.1" - resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-1.27.1.tgz#aceeb2d5be8fccf541237e184e37ecff5faa9096" - integrity sha512-cPiXpOvPFDr2edMnOXlz3UBDApwUfR+cpizvxCy0n3vp9bz/qe8BWzHPIEFcy+ogUOyjKuCISgyq77ELZPmkkg== - -"@types/minimatch@*": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" - integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== - -"@types/node@*": - version "16.4.12" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.4.12.tgz#961e3091f263e6345d2d84afab4e047a60b4b11b" - integrity sha512-zxrTNFl9Z8boMJXs6ieqZP0wAhvkdzmHSxTlJabM16cf5G9xBc1uPRH5Bbv2omEDDiM8MzTfqTJXBf0Ba4xFWA== - -"@types/pino-pretty@*": - version "4.7.1" - resolved "https://registry.yarnpkg.com/@types/pino-pretty/-/pino-pretty-4.7.1.tgz#2ce3f56f3cf4f9632374419d616ae2e6c933b935" - integrity sha512-l1ntNXdpVWsnPYUk5HyO5Lxfr38zLCgxVfEn/9Zhhm+nGF04/BiIou/m8XPwvoVZLV+livUo79VdHXMJPfUYxA== - dependencies: - "@types/pino" "*" - -"@types/pino-std-serializers@*": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@types/pino-std-serializers/-/pino-std-serializers-2.4.1.tgz#f8bd52a209c8b3c97d1533b1ba27f57c816382bf" - integrity sha512-17XcksO47M24IVTVKPeAByWUd3Oez7EbIjXpSbzMPhXVzgjGtrOa49gKBwxH9hb8dKv58OelsWQ+A1G1l9S3wQ== - dependencies: - "@types/node" "*" - -"@types/pino@*", "@types/pino@^6.3.9": - version "6.3.11" - resolved "https://registry.yarnpkg.com/@types/pino/-/pino-6.3.11.tgz#83652799e76b3ad692aaf68f6fbf994e83af5db2" - integrity sha512-S7+fLONqSpHeW9d7TApUqO6VN47KYgOXhCNKwGBVLHObq8HhaAYlVqUNdfnvoXjCMiwE5xcPm/5R2ZUh8bgaXQ== - dependencies: - "@types/node" "*" - "@types/pino-pretty" "*" - "@types/pino-std-serializers" "*" - sonic-boom "^2.1.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== - dependencies: - "@types/node" "*" - -"@types/stack-trace@0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/stack-trace/-/stack-trace-0.0.29.tgz#eb7a7c60098edb35630ed900742a5ecb20cfcb4d" - integrity sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g== - -"@types/validator@^13.6.3": - version "13.6.3" - resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.6.3.tgz#31ca2e997bf13a0fffca30a25747d5b9f7dbb7de" - integrity sha512-fWG42pMJOL4jKsDDZZREnXLjc3UE0R8LOJfARWYg6U966rxDT7TYejYzLnUF5cvSObGg34nd0+H2wHHU5Omdfw== - -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== - -abstract-logging@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/abstract-logging/-/abstract-logging-2.0.1.tgz#6b0c371df212db7129b57d2e7fcf282b8bf1c839" - integrity sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA== - -accepts@^1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== - dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" - -acorn-class-fields@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/acorn-class-fields/-/acorn-class-fields-1.0.0.tgz#b413793e6b3ddfcd17a02f9c7a850f4bbfdc1c7a" - integrity sha512-l+1FokF34AeCXGBHkrXFmml9nOIRI+2yBnBpO5MaVAaTIJ96irWLtcCxX+7hAp6USHFCe+iyyBB4ZhxV807wmA== - dependencies: - acorn-private-class-elements "^1.0.0" - -acorn-private-class-elements@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/acorn-private-class-elements/-/acorn-private-class-elements-1.0.0.tgz#c5805bf8a46cd065dc9b3513bfebb504c88cd706" - integrity sha512-zYNcZtxKgVCg1brS39BEou86mIao1EV7eeREG+6WMwKbuYTeivRRs6S2XdWnboRde6G9wKh2w+WBydEyJsJ6mg== - -acorn-private-methods@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/acorn-private-methods/-/acorn-private-methods-1.0.0.tgz#b48f4c03a151cc8262f6f5ca8f57f7c5ac245184" - integrity sha512-Jou2L3nfwfPpFdmmHObI3yUpVPM1bPohTUAZCyVDw5Efyn9LSS6E36neRLCRfIr8QjskAfdxRdABOrvP4c/gwQ== - dependencies: - acorn-private-class-elements "^1.0.0" - -acorn-static-class-features@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/acorn-static-class-features/-/acorn-static-class-features-1.0.0.tgz#ab9d862d5b184007ed509f5a8d031b837694ace2" - integrity sha512-XZJECjbmMOKvMHiNzbiPXuXpLAJfN3dAKtfIYbk1eHiWdsutlek+gS7ND4B8yJ3oqvHo1NxfafnezVmq7NXK0A== - dependencies: - acorn-private-class-elements "^1.0.0" - -acorn-walk@^8.0.2: - version "8.1.1" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.1.1.tgz#3ddab7f84e4a7e2313f6c414c5b7dac85f4e3ebc" - integrity sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w== - -acorn@^8.0.5, acorn@^8.4.1: - version "8.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" - integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== - -adonis-preset-ts@^2.1.0: - version "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" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ansi-colors@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" - integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== - -ansi-escapes@^4.3.0, ansi-escapes@^4.3.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== - dependencies: - 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@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - -ansi-regex@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" - integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== - -ansi-styles@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" - integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.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== - dependencies: - color-convert "^2.0.1" - -ansicolors@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" - integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= - -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== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - -argon2@^0.28.2: - version "0.28.2" - resolved "https://registry.yarnpkg.com/argon2/-/argon2-0.28.2.tgz#b583e4ef5b052a83bfe146752844b9fa526dba29" - integrity sha512-8oRk3kPlL0lLletENzhpbF9zoZJqvIHwTkjBseMrg1uD4gBMqhqnjJz1z3lEtwT0oqQAEkEwsEpsjaQBBRHcWw== - dependencies: - "@mapbox/node-pre-gyp" "^1.0.1" - "@phc/format" "^1.0.0" - node-addon-api "^3.0.2" - opencollective-postinstall "^2.0.3" - -args@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/args/-/args-5.0.1.tgz#4bf298df90a4799a09521362c579278cc2fdd761" - integrity sha512-1kqmFCFsPffavQFGt8OxJdIcETti99kySRUPMpOhaGjL6mRJn8HFU1OxKY5bMqfZKUwTQc1mZkAjmGYaVOHFtQ== - dependencies: - camelcase "5.0.0" - chalk "2.4.2" - leven "2.1.0" - mri "1.1.4" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-union@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" - integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= - dependencies: - array-uniq "^1.0.1" - -array-uniq@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" - integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -arrify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -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== - -astring@^1.7.5: - version "1.7.5" - resolved "https://registry.yarnpkg.com/astring/-/astring-1.7.5.tgz#a7d47fceaf32b052d33a3d07c511efeec67447ca" - integrity sha512-lobf6RWXb8c4uZ7Mdq0U12efYmpD1UFnyOWVJPTa3ukqZrMopav+2hdNu0hgBF0JIBFK9QgrBDfwYvh3DFJDAA== - -atob@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -atomic-sleep@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" - integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== - -axios@^0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== - dependencies: - follow-redirects "^1.10.0" - -babel-code-frame@^6.26.0: - version "6.26.0" - resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" - integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= - dependencies: - chalk "^1.1.3" - esutils "^2.0.2" - js-tokens "^3.0.2" - -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== - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -bignumber.js@9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" - integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== - -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== - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^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== - dependencies: - fill-range "^7.0.1" - -buffer-alloc-unsafe@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" - integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== - -buffer-alloc@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" - integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== - dependencies: - buffer-alloc-unsafe "^1.1.0" - buffer-fill "^1.0.0" - -buffer-fill@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" - integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -builtin-modules@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" - integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== - -builtins@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" - integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= - -bytes@3.1.0, bytes@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -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-request@^7.0.1: - version "7.0.2" - resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" - 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" - -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== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -call-me-maybe@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" - integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= - -camel-case@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" - integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= - dependencies: - no-case "^2.2.0" - upper-case "^1.1.1" - -camel-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" - integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== - dependencies: - pascal-case "^3.1.2" - tslib "^2.0.3" - -camelcase@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" - integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== - -capital-case@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" - integrity sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - upper-case-first "^2.0.2" - -cardinal@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505" - integrity sha1-fMEFXYItISlU0HsIXeolHMe8VQU= - dependencies: - ansicolors "~0.3.2" - redeyed "~2.1.0" - -chalk@2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" - integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= - dependencies: - ansi-styles "^2.2.1" - escape-string-regexp "^1.0.2" - has-ansi "^2.0.0" - strip-ansi "^3.0.0" - supports-color "^2.0.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -change-case@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" - integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== - dependencies: - camel-case "^4.1.2" - capital-case "^1.0.4" - constant-case "^3.0.4" - dot-case "^3.0.4" - header-case "^2.0.4" - no-case "^3.0.4" - param-case "^3.0.4" - pascal-case "^3.1.2" - path-case "^3.0.4" - sentence-case "^3.0.4" - snake-case "^3.0.4" - tslib "^2.0.3" - -cheerio-select@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.5.0.tgz#faf3daeb31b17c5e1a9dabcee288aaf8aafa5823" - integrity sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg== - dependencies: - css-select "^4.1.3" - css-what "^5.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - domutils "^2.7.0" - -cheerio@1.0.0-rc.10, cheerio@^1.0.0-rc.3: - version "1.0.0-rc.10" - resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e" - integrity sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw== - dependencies: - cheerio-select "^1.5.0" - dom-serializer "^1.3.2" - domhandler "^4.2.0" - htmlparser2 "^6.1.0" - parse5 "^6.0.1" - parse5-htmlparser2-tree-adapter "^6.0.1" - tslib "^2.2.0" - -chokidar@^3.0.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== - 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" - optionalDependencies: - fsevents "~2.3.2" - -chownr@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" - integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -clean-css@^4.2.1: - version "4.2.3" - resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" - integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== - dependencies: - source-map "~0.6.0" - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-boxes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" - integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== - -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== - dependencies: - restore-cursor "^3.1.0" - -cli-table3@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" - integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== - dependencies: - object-assign "^4.1.0" - string-width "^4.2.0" - optionalDependencies: - colors "^1.1.2" - -cli-table@^0.3.1: - version "0.3.6" - resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.6.tgz#e9d6aa859c7fe636981fd3787378c2a20bce92fc" - integrity sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ== - dependencies: - colors "1.0.3" - -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== - dependencies: - 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= - dependencies: - mimic-response "^1.0.0" - -cluster-key-slot@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d" - integrity sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw== - -co-compose@^6.1.4: - version "6.1.4" - resolved "https://registry.yarnpkg.com/co-compose/-/co-compose-6.1.4.tgz#4e607a29fdda0428c599683b4d65f9c8f9d91723" - integrity sha512-6CoVwiUNKbCREAwWZdySCXAv0qqYw17L/xW+HOuH9NtBgBbGYsviVaekxMh2Lr5KHS36TyHRbNo3jh3GLRdffg== - -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= - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.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== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-support@^1.1.3: - 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== - -colorette@1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" - integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== - -colors@1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" - integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= - -colors@^1.1.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - -commander@^2.19.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" - integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== - -commander@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - -comment-json@^2.2.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-2.4.2.tgz#2111c065864338ad8d98ae01eecde9e02cd2f549" - integrity sha512-T+iXox779qsqneMYx/x5BZyz4xjCeQRmuNVzz8tko7qZUs3MlzpA3RAs+O1XsgcKToNBMIvfVzafGOeiU7RggA== - dependencies: - core-util-is "^1.0.2" - esprima "^4.0.1" - has-own-prop "^2.0.0" - repeat-string "^1.6.1" - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -component-emitter@^1.2.1: - 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== - -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= - -config-chain@^1.1.12: - version "1.1.13" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" - integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - -constant-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" - integrity sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - upper-case "^2.0.2" - -content-disposition@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== - dependencies: - safe-buffer "5.1.2" - -cookie@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" - integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -core-util-is@^1.0.2, core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cp-file@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-7.0.0.tgz#b9454cfd07fe3b974ab9ea0e5f29655791a9b8cd" - integrity sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw== - dependencies: - graceful-fs "^4.1.2" - make-dir "^3.0.0" - nested-error-stacks "^2.0.0" - p-event "^4.1.0" - -cp-file@^9.0.0: - version "9.1.0" - resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-9.1.0.tgz#e98e30db72d57d47b5b1d444deb70d05e5684921" - integrity sha512-3scnzFj/94eb7y4wyXRWwvzLFaQp87yyfTnChIjlfYrVqp5lVO3E2hIJMeQIltUT0K2ZAB3An1qXcBmwGyvuwA== - dependencies: - graceful-fs "^4.1.2" - make-dir "^3.0.0" - nested-error-stacks "^2.0.0" - p-event "^4.1.0" - -cpy@^8.1.2: - version "8.1.2" - resolved "https://registry.yarnpkg.com/cpy/-/cpy-8.1.2.tgz#e339ea54797ad23f8e3919a5cffd37bfc3f25935" - integrity sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg== - dependencies: - arrify "^2.0.1" - cp-file "^7.0.0" - globby "^9.2.0" - has-glob "^1.0.0" - junk "^3.1.0" - nested-error-stacks "^2.1.0" - p-all "^2.1.0" - p-filter "^2.1.0" - p-map "^3.0.0" - -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== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -css-select@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" - integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== - dependencies: - boolbase "^1.0.0" - css-what "^5.0.0" - domhandler "^4.2.0" - domutils "^2.6.0" - nth-check "^2.0.0" - -css-what@^5.0.0, css-what@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" - integrity sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg== - -cuid@^2.1.8: - version "2.1.8" - resolved "https://registry.yarnpkg.com/cuid/-/cuid-2.1.8.tgz#cbb88f954171e0d5747606c0139fb65c5101eac0" - integrity sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg== - -dateformat@^4.5.1: - version "4.5.1" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.5.1.tgz#c20e7a9ca77d147906b6dc2261a8be0a5bd2173c" - integrity sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q== - -debug@2.6.9, debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@4, debug@4.3.2, debug@^4.3.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== - dependencies: - ms "2.1.2" - -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@^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== - dependencies: - mimic-response "^3.1.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== - -defer-to-connect@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" - integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== - -define-lazy-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" - integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - -denque@^1.1.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.0.tgz#773de0686ff2d8ec2ff92914316a47b73b1c73de" - integrity sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ== - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= - -destroy@^1.0.4, destroy@~1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" - integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= - -detect-indent@^6.0.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" - integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== - -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= - -detect-node@2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" - integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== - -dir-glob@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" - integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== - dependencies: - path-type "^3.0.0" - -dom-serializer@^1.0.1, dom-serializer@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== - -domhandler@^3.0.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" - integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== - dependencies: - domelementtype "^2.0.1" - -domhandler@^4.0.0, domhandler@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.0.tgz#f9768a5f034be60a89a27c2e4d0f74eba0d8b059" - integrity sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA== - dependencies: - domelementtype "^2.2.0" - -domutils@^2.0.0, domutils@^2.5.2, domutils@^2.6.0, domutils@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.7.0.tgz#8ebaf0c41ebafcf55b0b72ec31c56323712c5442" - integrity sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dot-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" - integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -dotenv@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" - integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== - -edge-error@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/edge-error/-/edge-error-2.0.5.tgz#b439103d32a9f55da08891e85beec38036cc9142" - integrity sha512-1eJm10bEIS6u9N3dR5W0Eecnv4YVtUHralpJp0NdrVLo7H7DXx/s2DIjWoG/HsNkD2mymNVL37eZ+BgvBO5adQ== - -edge-lexer@^4.0.7: - version "4.0.7" - resolved "https://registry.yarnpkg.com/edge-lexer/-/edge-lexer-4.0.7.tgz#ff89deed437b4e9a565206229d86029769c835a4" - integrity sha512-GtmxqiusZ8mySw8FstBMz2jSt5tOW8OYUf2HMmtHQXJG/R/EgZC1DAU/5m1VUyqSNjpisGyPRls+Qn/MScmZ6g== - dependencies: - edge-error "^2.0.5" - -edge-parser@^8.0.10: - version "8.0.10" - resolved "https://registry.yarnpkg.com/edge-parser/-/edge-parser-8.0.10.tgz#bc70fb2f90980ebde5e13559af8ba1f16e327b68" - integrity sha512-Othm9HRmf1uunaJO7I6g1g2EcGvEFvPsIHDosphLL2JydzP6H51QAr34KXDde7aJb+ZlXLHTti8+q+dGM7wFDQ== - dependencies: - acorn "^8.4.1" - astring "^1.7.5" - edge-error "^2.0.5" - edge-lexer "^4.0.7" - js-stringify "^1.0.2" - -edge-supercharged@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/edge-supercharged/-/edge-supercharged-3.1.1.tgz#dcf68c38cf26d11db4bceab44e06729daec1d39d" - integrity sha512-Pxgst3UeR+0PWuTIG2QHuFgFe73TMoVMphRsa/bOmIvOkQ87cD7+VxiS9ph2KbA4djJ2ChbdgtbNiIvju5yXEw== - dependencies: - "@poppinss/utils" "^3.1.3" - slash "^3.0.0" - -edge.js@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/edge.js/-/edge.js-5.3.1.tgz#d31ccca55c67b2f1a7af0a57286ae7054627a29e" - integrity sha512-TWiPo7Unaww1fYll/zMANVma08q2WoG8j7g9iK3fed5AevD0XuBl8N2L9+vCE7TKJmTm/zNP5z8bKbfGWOTRbw== - dependencies: - "@poppinss/inspect" "^1.0.1" - "@poppinss/utils" "^3.1.4" - edge-error "^2.0.5" - edge-lexer "^4.0.7" - edge-parser "^8.0.10" - js-stringify "^1.0.2" - macroable "^5.1.4" - stringify-attributes "^2.0.0" - -editorconfig@^0.15.3: - version "0.15.3" - resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" - integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g== - dependencies: - commander "^2.19.0" - lru-cache "^4.1.5" - semver "^5.6.0" - sigmund "^1.0.1" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= - -emittery@^0.9.2: - version "0.9.2" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.9.2.tgz#0a57c40773c6da380115c85bd67d381dd9e22f6f" - integrity sha512-sweWHu3j4dQm+NjLPu17pv+m5lCeK7g4Ov0NgfbRUEyzLc59DYDeRYXqlxEvuolaToI0VR3ThjFAghzl7Acjfw== - -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== - -encodeurl@^1.0.2, encodeurl@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= - -end-of-stream@^1.1.0, end-of-stream@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" - integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== - dependencies: - once "^1.4.0" - -enquirer@^2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" - integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== - dependencies: - ansi-colors "^4.1.1" - -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -es-module-lexer@0.3.26: - version "0.3.26" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.3.26.tgz#7b507044e97d5b03b01d4392c74ffeb9c177a83b" - integrity sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA== - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -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@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-3.0.0.tgz#e8b5fb658553fe8a3c4959c316c6ebb8c842b19c" - integrity sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw== - -escape-html@~1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= - -escape-string-regexp@^1.0.2, 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= - -esm@^3.2.25: - version "3.2.25" - resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" - integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== - -esprima@^4.0.1, 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== - -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== - -etag@^1.8.1, etag@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" - integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= - -execa@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - 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" - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -faker@^5.5.3: - version "5.5.3" - resolved "https://registry.yarnpkg.com/faker/-/faker-5.5.3.tgz#c57974ee484431b25205c2c8dc09fda861e51e0e" - integrity sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g== - -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@^2.2.6: - version "2.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" - integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== - dependencies: - "@mrmlnc/readdir-enhanced" "^2.2.1" - "@nodelib/fs.stat" "^1.1.2" - glob-parent "^3.1.0" - is-glob "^4.0.0" - merge2 "^1.2.3" - micromatch "^3.1.10" - -fast-redact@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.0.1.tgz#d6015b971e933d03529b01333ba7f22c29961e92" - integrity sha512-kYpn4Y/valC9MdrISg47tZOpYBNoTXKgT9GYXFpHN/jYFs+lFkPoisY+LcBODdKVMY96ATzvzsWv+ES/4Kmufw== - -fast-safe-stringify@^2.0.7, fast-safe-stringify@^2.0.8: - version "2.0.8" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz#dc2af48c46cf712b683e849b2bbd446b32de936f" - integrity sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag== - -fastq@^1.11.1: - version "1.11.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.1.tgz#5d8175aae17db61947f8b162cfc7f63264d22807" - integrity sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw== - dependencies: - reusify "^1.0.4" - -file-type@^12.1.0: - version "12.4.2" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-12.4.2.tgz#a344ea5664a1d01447ee7fb1b635f72feb6169d9" - integrity sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg== - -file-type@^16.5.2: - version "16.5.3" - resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.3.tgz#474b7e88c74724046abb505e9b8ed4db30c4fc06" - integrity sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A== - dependencies: - readable-web-to-node-stream "^3.0.0" - strtok3 "^6.2.4" - token-types "^4.1.1" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-cache-dir@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -flatstr@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/flatstr/-/flatstr-1.0.12.tgz#c2ba6a08173edbb6c9640e3055b95e287ceb5931" - integrity sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw== - -follow-redirects@^1.10.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" - integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== - -for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -forwarded@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" - integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fresh@0.5.2, fresh@^0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= - -fs-extra@^10.0.0: - version "10.0.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" - integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^6.0.1" - universalify "^2.0.0" - -fs-extra@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" - integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== - dependencies: - graceful-fs "^4.2.0" - jsonfile "^4.0.0" - universalify "^0.1.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== - dependencies: - minipass "^3.0.0" - -fs-readdir-recursive@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" - integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -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== - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - -get-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-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== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-port@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" - integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== - -get-stream@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" - integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== - dependencies: - pump "^3.0.0" - -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-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getopts@2.2.5: - version "2.2.5" - resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.2.5.tgz#67a0fe471cacb9c687d817cab6450b96dde8313b" - integrity sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA== - -getopts@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.3.0.tgz#71e5593284807e03e2427449d4f6712a268666f4" - integrity sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA== - -glob-parent@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" - integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= - dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" - -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== - dependencies: - is-glob "^4.0.1" - -glob-to-regexp@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" - integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= - -glob@^7.1.1, glob@^7.1.3: - version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" - integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== - 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" - -globby@^9.2.0: - version "9.2.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" - integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== - dependencies: - "@types/glob" "^7.1.1" - array-union "^1.0.2" - dir-glob "^2.2.2" - fast-glob "^2.2.6" - glob "^7.1.3" - ignore "^4.0.3" - pify "^4.0.1" - slash "^2.0.0" - -got@^11.8.2: - version "11.8.2" - resolved "https://registry.yarnpkg.com/got/-/got-11.8.2.tgz#7abb3959ea28c31f3576f1576c1effce23f33599" - integrity sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ== - 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.1" - 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, graceful-fs@^4.1.6, graceful-fs@^4.2.0: - version "4.2.6" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" - integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== - -has-ansi@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" - integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= - dependencies: - ansi-regex "^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= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-glob@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-glob/-/has-glob-1.0.0.tgz#9aaa9eedbffb1ba3990a7b0010fb678ee0081207" - integrity sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc= - dependencies: - is-glob "^3.0.0" - -has-own-prop@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-own-prop/-/has-own-prop-2.0.0.tgz#f0f95d58f65804f5d218db32563bb85b8e0417af" - integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ== - -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== - -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -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== - dependencies: - function-bind "^1.1.1" - -haye@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/haye/-/haye-3.0.0.tgz#30b801dc235cfa4d83ddb43162b12911617a67e4" - integrity sha512-yWxbPdeex78IR3x3X/DdqkZbVG4rP4UaRdUGmpClfnUh1C61mASt7Iav8vk2tXcTMSygBHDDfgoVqk68NJqzhQ== - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -header-case@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" - integrity sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q== - dependencies: - capital-case "^1.0.4" - tslib "^2.0.3" - -html-minifier@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-4.0.0.tgz#cca9aad8bce1175e02e17a8c33e46d8988889f56" - integrity sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig== - dependencies: - camel-case "^3.0.0" - clean-css "^4.2.1" - commander "^2.19.0" - he "^1.2.0" - param-case "^2.1.1" - relateurl "^0.2.7" - uglify-js "^3.5.1" - -htmlparser2@^4.0.0, htmlparser2@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" - integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== - dependencies: - domelementtype "^2.0.1" - domhandler "^3.0.0" - domutils "^2.0.0" - entities "^2.0.0" - -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - -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-errors@1.7.3, http-errors@~1.7.2: - version "1.7.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" - integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.1.1" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" - -http-errors@~1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507" - integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.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== - dependencies: - 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== - -ical-generator@^3.0.0-develop.4: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ical-generator/-/ical-generator-3.0.0.tgz#042a7c1d2ce8cae1428bc1ea51a8dbe6b8872fcd" - integrity sha512-PlDOOipgTlMzbfDDy+NJixAf5bzNb46wf0JXPkhnSjNQJc50y/XTOhOnQW/cp6tD+4ITHIMhkCkQ4CrUlDKMFQ== - dependencies: - uuid-random "^1.3.2" - -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== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -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== - -igniculus@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/igniculus/-/igniculus-1.5.0.tgz#f6d5e7784dbe948b4e6a8a22a54d365de90623d0" - integrity sha1-9tXneE2+lItOaooipU02XekGI9A= - -ignore@^4.0.3: - version "4.0.6" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" - integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflation@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/inflation/-/inflation-2.0.0.tgz#8b417e47c28f925a45133d914ca1fd389107f30f" - integrity sha1-i0F+R8KPklpFEz2RTKH9OJEH8w8= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ini@^1.3.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== - -interpret@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" - integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== - -ioredis@^4.27.6: - version "4.27.7" - resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.27.7.tgz#11bf2947e23a0e8055931afa7c2da89fc48c8ff3" - integrity sha512-lqvFFmUyGIHlrNyDvBoakzy1+ioJzNyoP6CP97GWtdTjWq9IOAnv6l0HUTsqhvd/z9etGgtrDHZ4kWCMAwNkug== - dependencies: - cluster-key-slot "^1.1.0" - debug "^4.3.1" - denque "^1.1.0" - lodash.defaults "^4.2.0" - lodash.flatten "^4.4.0" - lodash.isarguments "^3.1.0" - p-map "^2.1.0" - redis-commands "1.7.0" - redis-errors "^1.2.0" - redis-parser "^3.0.0" - standard-as-callback "^2.1.0" - -ipaddr.js@1.9.1: - version "1.9.1" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" - integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.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== - dependencies: - binary-extensions "^2.0.0" - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-core-module@^2.2.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" - integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== - dependencies: - has "^1.0.3" - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-docker@^2.0.0, is-docker@^2.1.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" - integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0, is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" - integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= - dependencies: - number-is-nan "^1.0.0" - -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^3.0.0, is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -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-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -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-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -is-wsl@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" - integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== - dependencies: - is-docker "^2.0.0" - -isarray@1.0.0, isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -jest-worker@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.6.tgz#a5fdb1e14ad34eb228cfe162d9f729cdbfa28aed" - integrity sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jmespath@^0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" - integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= - -joycon@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.0.1.tgz#9074c9b08ccf37a6726ff74a18485f85efcaddaf" - integrity sha512-SJcJNBg32dGgxhPtM0wQqxqV0ax9k/9TaUskGDSJkSFSQOEWWvQ3zzWdGQRIUry2j1zA5+ReH13t0Mf3StuVZA== - -js-beautify@^1.6.14: - version "1.14.0" - resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.0.tgz#2ce790c555d53ce1e3d7363227acf5dc69024c2d" - integrity sha512-yuck9KirNSCAwyNJbqW+BxJqJ0NLJ4PwBUzQQACl5O3qHMBXVkXb/rD0ilh/Lat/tn88zSZ+CAHOlk0DsY7GuQ== - dependencies: - config-chain "^1.1.12" - editorconfig "^0.15.3" - glob "^7.1.3" - nopt "^5.0.0" - -js-stringify@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" - integrity sha1-Fzb939lyTyijaCrcYjCufk6Weds= - -js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= - -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== - -jsonfile@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" - integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= - optionalDependencies: - graceful-fs "^4.1.6" - -jsonfile@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" - integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== - dependencies: - universalify "^2.0.0" - optionalDependencies: - graceful-fs "^4.1.6" - -juice@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/juice/-/juice-7.0.0.tgz#509bed6adbb6e4bbaa7fbfadac4e2e83e8c89ba3" - integrity sha512-AjKQX31KKN+uJs+zaf+GW8mBO/f/0NqSh2moTMyvwBY+4/lXIYTU8D8I2h6BAV3Xnz6GGsbalUyFqbYMe+Vh+Q== - dependencies: - cheerio "^1.0.0-rc.3" - commander "^5.1.0" - mensch "^0.3.4" - slick "^1.12.2" - web-resource-inliner "^5.0.0" - -junk@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" - integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ== - -keyv@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.3.tgz#4f3aa98de254803cafcd2896734108daa35e4254" - integrity sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA== - dependencies: - json-buffer "3.0.1" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -kleur@^4.1.4: - version "4.1.4" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d" - integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== - -knex-dynamic-connection@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/knex-dynamic-connection/-/knex-dynamic-connection-2.1.1.tgz#a3c9934a51bf93e2ea6c3da2f9f3dca742f7a123" - integrity sha512-/Lwg/T13eNRJVoSJ4e9SH3slVUmg37UHxDxVluAAKdJZxYVj8YsP2x50JSk310RmKsYbOZ8oB8SwVVEuRa4nYw== - dependencies: - debug "^4.3.1" - knex "^0.95.6" - -knex@^0.95.6: - version "0.95.9" - resolved "https://registry.yarnpkg.com/knex/-/knex-0.95.9.tgz#d72acbdbc7aa199a829cca3c53371b80e521adfe" - integrity sha512-iy8Wue3ofGBVZENgz32fx2uYSYhXCQEE7lemMIdm/FDtgwwmrzkYm9BdGZ4wb8Fg/oCgezMGWSdCflWicX4sdA== - dependencies: - colorette "1.2.1" - commander "^7.1.0" - debug "4.3.2" - escalade "^3.1.1" - esm "^3.2.25" - getopts "2.2.5" - interpret "^2.2.0" - lodash "^4.17.21" - pg-connection-string "2.5.0" - rechoir "0.7.0" - resolve-from "^5.0.0" - tarn "^3.0.1" - tildify "2.0.0" - -leven@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -listify@^1.0.0: - version "1.0.3" - resolved "https://registry.yarnpkg.com/listify/-/listify-1.0.3.tgz#a9335ac351c3d1aea515494ed746976eeb92248b" - integrity sha512-083swF7iH7bx8666zdzBColpgEuy46HjN3r1isD4zV6Ix7FuHfb/2/WVnl4CH8hjuoWeFF7P5KkKNXUnJCFEJg== - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= - -lodash.flatten@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= - -lodash.isarguments@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= - -lodash.toarray@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.toarray/-/lodash.toarray-4.4.0.tgz#24c4bfcd6b2fba38bfd0594db1179d8e9b656561" - integrity sha1-JMS/zWsvuji/0FlNsRedjptlZWE= - -lodash@^4.17.15, 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-update@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" - integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== - dependencies: - ansi-escapes "^4.3.0" - cli-cursor "^3.1.0" - slice-ansi "^4.0.0" - wrap-ansi "^6.2.0" - -lower-case@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" - integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= - -lower-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" - integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== - dependencies: - tslib "^2.0.3" - -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== - -lru-cache@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -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== - dependencies: - yallist "^4.0.0" - -luxon@^1.27.0: - version "1.28.0" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.28.0.tgz#e7f96daad3938c06a62de0fb027115d251251fbf" - integrity sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ== - -luxon@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.0.1.tgz#b41ca2f1f5ad8099c18603ae6c36a7794039daf0" - integrity sha512-8Eawf81c9ZlQj62W3eq4mp+C7SAIAnmaS7ZuEAiX503YMcn+0C1JnMQRtfaQj6B5qTZLgHv0F4H5WabBCvi1fw== - -macroable@^5.1.3, macroable@^5.1.4: - version "5.1.4" - resolved "https://registry.yarnpkg.com/macroable/-/macroable-5.1.4.tgz#7d88f8190288833924e48120e1371e3198a6fa6e" - integrity sha512-6yOJQT7QhYlJqhNWn/B2h+1ylsCnL8dMBmBpdnVNK+02PfQm13Ix4Szx4HiS3rp4a28EKckCGW27gtTZoYXYYQ== - -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== - dependencies: - semver "^6.0.0" - -map-age-cleaner@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" - integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== - dependencies: - p-defer "^1.0.0" - -map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -marked-terminal@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-4.1.1.tgz#34a6f063cd6cfe26bffaf5bac3724e24242168a9" - integrity sha512-t7Mdf6T3PvOEyN01c3tYxDzhyKZ8xnkp8Rs6Fohno63L/0pFTJ5Qtwto2AQVuDtbQiWzD+4E5AAu1Z2iLc8miQ== - dependencies: - ansi-escapes "^4.3.1" - cardinal "^2.1.1" - chalk "^4.1.0" - cli-table "^0.3.1" - node-emoji "^1.10.0" - supports-hyperlinks "^2.1.0" - -marked@^2.0.7: - version "2.1.3" - resolved "https://registry.yarnpkg.com/marked/-/marked-2.1.3.tgz#bd017cef6431724fd4b27e0657f5ceb14bff3753" - integrity sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= - -media-typer@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-1.1.0.tgz#6ab74b8f2d3320f2064b2a87a38e7931ff3a5561" - integrity sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw== - -mem@^8.1.1: - version "8.1.1" - resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.1.tgz#cf118b357c65ab7b7e0817bdf00c8062297c0122" - integrity sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA== - dependencies: - map-age-cleaner "^0.1.3" - mimic-fn "^3.1.0" - -mensch@^0.3.4: - version "0.3.4" - resolved "https://registry.yarnpkg.com/mensch/-/mensch-0.3.4.tgz#770f91b46cb16ea5b204ee735768c3f0c491fecd" - integrity sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g== - -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.2.3: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^3.1.10: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -mime-db@1.49.0: - version "1.49.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" - integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== - -mime-kind@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mime-kind/-/mime-kind-3.0.0.tgz#23bb3aba03ed6a1ea8c4f6093a9c7ab7121a9cb2" - integrity sha512-sx9lClVP7GXY2mO3aVDWTQLhfvAdDvNhGi3o3g7+ae3aKaoybeGbEIlnreoRKjrbDpvlPltlkIryxOtatojeXQ== - dependencies: - file-type "^12.1.0" - mime-types "^2.1.24" - -mime-types@^2.1.24, mime-types@^2.1.31, mime-types@~2.1.24: - version "2.1.32" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" - integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== - dependencies: - mime-db "1.49.0" - -mime@1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" - integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== - -mime@^2.4.6: - version "2.5.2" - resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" - integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== - -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-fn@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" - integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== - -mimic-response@^1.0.0: - 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== - -minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.0: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minipass@^3.0.0: - version "3.1.3" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" - integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== - dependencies: - yallist "^4.0.0" - -minizlib@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" - integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== - dependencies: - minipass "^3.0.0" - yallist "^4.0.0" - -mixin-deep@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" - integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mjml-accordion@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-accordion/-/mjml-accordion-4.10.2.tgz#475526c1bbdae00a9586a056e8eaa0c23753d4be" - integrity sha512-32nPtx7zH2wdiIQ8wHoIYnIlXhDDwRoGWhm6Rc4uszB4CPYTIsh7vOXOlhLsXgKrWKTdYOD/TIxZcbyvBl4sIA== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-body@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-body/-/mjml-body-4.10.2.tgz#f75eee2b0cb701edf21244f4219b6db0d9f0f9a0" - integrity sha512-G80iK31hhm/DL40H4VSch0gtDpNBa7Pmj5ZJDnSkIrawgoKU+2qMD/fjlRTF2x+cxBLXSCKWpeH9bdompcs0pw== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-button@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-button/-/mjml-button-4.10.2.tgz#b734b037e2eca6b19c1392ac02900438abd49c8e" - integrity sha512-q26UJPb80RGN0oVu9mYEutBKMY1e7AwZfT14k7lRA7+NznW/ASbj8B02IgI1nAW5Et5xK7Fr8ThICkuny7RR5A== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-carousel@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-carousel/-/mjml-carousel-4.10.2.tgz#19b08622db014bb1dbd94d813fa036e78bb87578" - integrity sha512-WfJ6owuKdFVEmzlW/VluB4cxYoWH7IjcH44z9pvq5LrrgfMssyvbnEpkkZTFNQKKCIrBmdXsjDDt9Ex5oJREGw== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-cli@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-cli/-/mjml-cli-4.10.2.tgz#df9d10c060c31c38e9e1ce8f10d739269f4b2ac4" - integrity sha512-tRuiv0ZvuqSJjx67fpxSA8wHEoAsoZ2cLO1w2JiX5lBDXZp5oF8EJ65HPNX6sWyEgu1nKY+9bl7XG3YBUwg80w== - dependencies: - "@babel/runtime" "^7.8.7" - chokidar "^3.0.0" - glob "^7.1.1" - html-minifier "^4.0.0" - js-beautify "^1.6.14" - lodash "^4.17.21" - mjml-core "4.10.2" - mjml-migrate "4.10.2" - mjml-parser-xml "4.10.2" - mjml-validator "4.10.2" - yargs "^16.1.0" - -mjml-column@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-column/-/mjml-column-4.10.2.tgz#58590f16e26ddbc127fb6e4eb6ba8018f9d66b92" - integrity sha512-53hGPWTrNPEhY0Kb9Gu/bOoFs86q0k/UvZGxV47oCHSyIRYgfzG7FyaJDYrt+gxFe6hLJAZjQIoXEpZ8683xxw== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-core@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-core/-/mjml-core-4.10.2.tgz#139a6e3ce10073a01b864931981c649e3b20d45c" - integrity sha512-RsPCIUqQ1r8gysvljssU2pcScMfMBZnu1JQs2IO3QAlUEELd+sd3Mz/1u4MEWP7vWoUSRDlbJjZIPr1606g70A== - dependencies: - "@babel/runtime" "^7.8.7" - cheerio "1.0.0-rc.10" - detect-node "2.0.4" - html-minifier "^4.0.0" - js-beautify "^1.6.14" - juice "^7.0.0" - lodash "^4.17.21" - mjml-migrate "4.10.2" - mjml-parser-xml "4.10.2" - mjml-validator "4.10.2" - -mjml-divider@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-divider/-/mjml-divider-4.10.2.tgz#2ae6ab75daadb188dd759c464ed66323a7586246" - integrity sha512-2NGg80/PQVmXpESIWMOiT1c1p3811JpsdFnmXJfiXvwH5hIW3oEyLOB4e9WTXqeVOypcUI32PhR25emOr+Udww== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-group@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-group/-/mjml-group-4.10.2.tgz#1593dcea66f9289b84a2886c514529eda5f69c65" - integrity sha512-U7XLiqOwgJDJhimlHAW/6ar0nkpuwwBmrYsEUl1q1kEhX2pDld+Wia4GeVBdRGiWGrFMWW3lgkRmOqs2bMSWEg== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-head-attributes@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-head-attributes/-/mjml-head-attributes-4.10.2.tgz#a7181d4df878461ba942e925967b1ae48c5a9369" - integrity sha512-B+GXQK9NCun/RZMHsGrbzNVJM9g+Pni6xDu4CtytdHjOSY4m99cB+fAa3bPX/dxXWEnaRrsR41ReP49NZrO+pQ== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-head-breakpoint@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-head-breakpoint/-/mjml-head-breakpoint-4.10.2.tgz#306794188227c4b2676c51fbf2164628af3a41b6" - integrity sha512-omAZRnPtuhx2OHND5guvHvt7Vb94nWO+x/Jupd09gfzapz32mcN15qGQERH33oqfSSZl0paDUDPy53xjXWAkgA== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-head-font@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-head-font/-/mjml-head-font-4.10.2.tgz#40416a200f81fa839973a8020ee7f87af6da6c84" - integrity sha512-yDcM6mR0qBd8jZ59nYMvXwz53vw0eW1S+vqtaRq1s6TvmtiMy9Gf6TLcbdFDxUbxjKVVSwK9plSqqTwfiHUc2w== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-head-html-attributes@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-head-html-attributes/-/mjml-head-html-attributes-4.10.2.tgz#3d9947ec472e02e99c87245c2a4b8cdc5770ea11" - integrity sha512-zUXs3CA5K4lPyYwF/DhF4isBzqFDTaJp0IURhfF5RAZGQDxQw8W1WPGwjtCgnOKqwMRaIPHBPoHusKqcWGr+mg== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-head-preview@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-head-preview/-/mjml-head-preview-4.10.2.tgz#107d12f957b45a116da84baaa4e5ab383dda3d86" - integrity sha512-ko3fxPhpztvqOiwQOLd4aB+cyls2fLxEAShZvaF7PAu02nmmwNCPJnKRAvm/WFqJT8PIGO32AqKb3gupTrKFrQ== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-head-style@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-head-style/-/mjml-head-style-4.10.2.tgz#21b0d02280cc3a83b36ecca05ff141363cff871f" - integrity sha512-ut27xxYTau37fCO3TN3Y9HzJhhvtH92jOq+F8r8mbP7achrR+ToGphCxmKYMSnZ5zOwzDqq9GV1/xQCCudZAhQ== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-head-title@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-head-title/-/mjml-head-title-4.10.2.tgz#79b5eade1534ef43fce4f1ea842598f3044c14b3" - integrity sha512-ZBQ8FQzuDrfcr5b27Xq8SR0VM8up7CjSsrCiP4N7aBYwrwdRD9zDjr0VfqCGTDV+bxFnpoCwjv2dsWPfJRzr2Q== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-head@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-head/-/mjml-head-4.10.2.tgz#16458a50eb9b04438810afa513082bf6f293b07e" - integrity sha512-70HJc1x7agRVxggUyrBjHZh1bUt43GH0SjlmKgIivaGXKGQEd+1d+0m+aZesY7zplQXN7IBI5qBRZmgIfW+FLQ== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-hero@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-hero/-/mjml-hero-4.10.2.tgz#909e3e20c341f546c6ffa54aded3de35d9fd36ed" - integrity sha512-fPA80s3eOEW3Y1YxgPfHDhNe5fGd+zelOhg7lGyO5QTH/diXu3ElkScPXMt7NeEz9vTnHLpwsygdp1X7rEJimA== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-image@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-image/-/mjml-image-4.10.2.tgz#daa85304c08ff7e281dc0393833ac4626f8755dd" - integrity sha512-gmo5UQNAE2NfpSydwLwPoIRVtxKX/P34OMQwgc83bMasbigyJPU/mjJt/1NYfNQa+s4jD1IOiQmxBgV7b9UalA== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-migrate@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-migrate/-/mjml-migrate-4.10.2.tgz#efe5f51b43520f869061a74dadc75fafcd2df484" - integrity sha512-7b7HZG7H4ffl/HS/Qg6kDGgTpaF+HLDAi7eZDvfah20zkq8GYyOWo8OZek5ALXk6gwmszVBkhRhbB/r6DVvyqA== - dependencies: - "@babel/runtime" "^7.8.7" - js-beautify "^1.6.14" - lodash "^4.17.21" - mjml-core "4.10.2" - mjml-parser-xml "4.10.2" - yargs "^16.1.0" - -mjml-navbar@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-navbar/-/mjml-navbar-4.10.2.tgz#b20db4d5408fad6f023de029172961474f51ed46" - integrity sha512-V/csnQDZSCUDh+/WTicTbB7TwjIah0UIoTIDz5NQq7BCXFDClVTvdm06pVamt1pUy+/0slVOLRDl7LTZ53Rc2A== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-parser-xml@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-parser-xml/-/mjml-parser-xml-4.10.2.tgz#c95823608c81c439c7df8e489240da70c1b307d9" - integrity sha512-kbWjT7zOTApLBCActvVTqkKgSol4y3tSYjVIZYBlRPViP5ZLw+I1nWRCTji9hQoQ/tGgqSXEIKa7+n9IIW+Zww== - dependencies: - "@babel/runtime" "^7.8.7" - detect-node "2.0.4" - htmlparser2 "^4.1.0" - lodash "^4.17.15" - -mjml-preset-core@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-preset-core/-/mjml-preset-core-4.10.2.tgz#ba8999e4e68ce1e0cdc6cfafa64641da734f7f21" - integrity sha512-rqKEphVPYbT78wXiRZm8WK7q86GZtSdMV7sQHuRYu+++AAUNlFkZUxvnNmZtKt2KupHGoz18oBErF5z3WIesvg== - dependencies: - "@babel/runtime" "^7.8.7" - mjml-accordion "4.10.2" - mjml-body "4.10.2" - mjml-button "4.10.2" - mjml-carousel "4.10.2" - mjml-column "4.10.2" - mjml-divider "4.10.2" - mjml-group "4.10.2" - mjml-head "4.10.2" - mjml-head-attributes "4.10.2" - mjml-head-breakpoint "4.10.2" - mjml-head-font "4.10.2" - mjml-head-html-attributes "4.10.2" - mjml-head-preview "4.10.2" - mjml-head-style "4.10.2" - mjml-head-title "4.10.2" - mjml-hero "4.10.2" - mjml-image "4.10.2" - mjml-navbar "4.10.2" - mjml-raw "4.10.2" - mjml-section "4.10.2" - mjml-social "4.10.2" - mjml-spacer "4.10.2" - mjml-table "4.10.2" - mjml-text "4.10.2" - mjml-wrapper "4.10.2" - -mjml-raw@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-raw/-/mjml-raw-4.10.2.tgz#eb9b1f3dcdd8726a819562745ac2663f739f6272" - integrity sha512-jLkO6Q09Pyc/Izj7bOMmhSCiWuHfAbqoq0oKqWtzgSv2gw2yBSmaMHFyMqAsE3Tlm4NkPxWRLCahoswk4doUGg== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-section@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-section/-/mjml-section-4.10.2.tgz#5f457fa26adc284c5fcaecc66805f7d05fbcea2c" - integrity sha512-wWTjKt+8Anm6MQUCuE/0ecHy1mt9JxShCR7BmGaO/hq0p1OqaUfveOpg1diod5TudHg9oT/f6ipyXCTSebVYIQ== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-social@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-social/-/mjml-social-4.10.2.tgz#ab51e56d4d0845643bb59f59b1c94d84e1627e4a" - integrity sha512-rZexXYp+qgT4E+WGAvt622RxD+sp/ZL7WdRYvF9U/8bQMhnUfVFI6UCZA2UNoby0v4g0JNO4pv0oGzXbAhl6lQ== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-spacer@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-spacer/-/mjml-spacer-4.10.2.tgz#1e693d63f99dd411dedf9931b61a1acf3183b464" - integrity sha512-md5bbtEfvPE+EGGnfXOe+9lnpbHqkzXAq/51YxRYhW5Zr/iT9NyN3VWbqkOruKXztzKFlkL7u2aq+NBKJJiFMA== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-table@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-table/-/mjml-table-4.10.2.tgz#a3102da62fc2bfa9ecacb7d069f8b59f7a3fa2c3" - integrity sha512-VSVptHIarlxMshAcLq1F/jqFkqVS61amXmtyMcFWqKcYEVrDVwfi7knB/P/BacsbZ3RJaG0KkkK9dTsP1UShzw== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-text@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-text/-/mjml-text-4.10.2.tgz#ab89d14fed48f3096e453a78864d915ec7335436" - integrity sha512-fxtzpLCFHuDFecS+CQBIbGdBPx3xyKZx1RfHJjjmjeX0dzoQvud4LiEmegqXted7tiUJ8yBI8vp1KfnIzxmyjA== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - -mjml-validator@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-validator/-/mjml-validator-4.10.2.tgz#1710f9243a2aafc49572e61bb365e87d076be698" - integrity sha512-6CIJ3iCnXRwy+z0GGpUZuVwBS7mW8/oZ0U2jnV9L8WVQiIAHPcilnRgR4yIcE6SvQ724XEnAu/za7rq6C5UBhA== - dependencies: - "@babel/runtime" "^7.8.7" - -mjml-wrapper@4.10.2: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml-wrapper/-/mjml-wrapper-4.10.2.tgz#086d51e59da2fc04dc69b49b5bca63dba6c684be" - integrity sha512-JkU92wHRyR6lh8GyovxJUrzY2JViIrDrU6bjewqDrm5Oi3fupck1kNEGRIR7ewzWLgGtlYcAjk1Myt9wcCeeZw== - dependencies: - "@babel/runtime" "^7.8.7" - lodash "^4.17.21" - mjml-core "4.10.2" - mjml-section "4.10.2" - -mjml@^4.10.1: - version "4.10.2" - resolved "https://registry.yarnpkg.com/mjml/-/mjml-4.10.2.tgz#ae4f4fc33fedd9c7c1b5b36ad0486f1713e30f70" - integrity sha512-KVFcTl3AaugIbGRKeqqzjHebp8PTFpteUy3otaRGbrYgKMv+AHzwCMMOptkU9qknJBMCJb+ZUSc9FvOc+bbp4A== - dependencies: - "@babel/runtime" "^7.14.6" - mjml-cli "4.10.2" - mjml-core "4.10.2" - mjml-migrate "4.10.2" - mjml-preset-core "4.10.2" - mjml-validator "4.10.2" - -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" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" - integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== - -mrm-core@^6.0.0: - version "6.1.5" - resolved "https://registry.yarnpkg.com/mrm-core/-/mrm-core-6.1.5.tgz#3cfe0d474775da3e94d8c2b6490c36d77d07ab25" - integrity sha512-lIJ+P3Utp1NI6VBvGBoZDzkyP4uAViK+y+vNuHvf8oV3+JlKqTgEgbCwqw6O+c0ulGZI4tBhlHhlWZ1fSxWWLQ== - dependencies: - babel-code-frame "^6.26.0" - comment-json "^2.2.0" - detect-indent "^6.0.0" - editorconfig "^0.15.3" - find-up "^4.1.0" - fs-extra "^8.1.0" - kleur "^3.0.3" - listify "^1.0.0" - lodash "^4.17.15" - minimist "^1.2.0" - prop-ini "^0.0.2" - rc "^1.2.8" - readme-badger "^0.3.0" - semver "^6.3.0" - smpltmpl "^1.0.2" - split-lines "^2.0.0" - strip-bom "^4.0.0" - validate-npm-package-name "^3.0.0" - webpack-merge "^4.2.2" - yaml "^2.0.0-1" - -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.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - -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.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -multi-part-lite@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/multi-part-lite/-/multi-part-lite-1.0.0.tgz#7b86baf8ff83ef20ca13f1269a0f35aec42b9000" - integrity sha512-KxIRbBZZ45hoKX1ROD/19wJr0ql1bef1rE8Y1PCwD3PuNXV42pp7Wo8lEHYuAajoT4vfAFcd3rPjlkyEEyt1nw== - -multi-part@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/multi-part/-/multi-part-3.0.0.tgz#2bde386e8c1dcc9f15a2277267a7f5ed13aa0cc0" - integrity sha512-pDbdYQ6DLDxAsD83w9R7r7rlW56cETL7hIB5bCWX7FJYw0K+kL5JwHr0I8tRk9lGeFcAzf+2OEzXWlG/4wCnFw== - dependencies: - mime-kind "^3.0.0" - multi-part-lite "^1.0.0" - -mustache@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" - integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== - -mysql@^2.18.1: - version "2.18.1" - resolved "https://registry.yarnpkg.com/mysql/-/mysql-2.18.1.tgz#2254143855c5a8c73825e4522baf2ea021766717" - integrity sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig== - dependencies: - bignumber.js "9.0.0" - readable-stream "2.3.7" - safe-buffer "5.1.2" - sqlstring "2.3.1" - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== - -nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61" - integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug== - -no-case@^2.2.0: - version "2.3.2" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" - integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== - dependencies: - lower-case "^1.1.1" - -no-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" - integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== - dependencies: - lower-case "^2.0.2" - tslib "^2.0.3" - -node-addon-api@^3.0.2: - 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-emoji@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.10.0.tgz#8886abd25d9c7bb61802a658523d1f8d2a89b2da" - integrity sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw== - dependencies: - lodash.toarray "^4.4.0" - -node-fetch@^2.6.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-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" - integrity sha512-e03zlI31RjF6Ks9+/ju0gY55dZSm21XXMSzy85FGZtDxuAZCa/iQwzWoQjmZvaolQCrIjzs0e4shxZs1bxbpUg== - dependencies: - acorn "^8.0.5" - acorn-class-fields "^1.0.0" - acorn-private-methods "^1.0.0" - acorn-static-class-features "^1.0.0" - acorn-walk "^8.0.2" - -nodemailer@^6.6.3: - version "6.6.3" - resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.6.3.tgz#31fb53dd4d8ae16fc088a65cb9ffa8d928a69b48" - integrity sha512-faZFufgTMrphYoDjvyVpbpJcYzwyFnbAMmQtj1lVBYAUSm3SOy2fIdd9+Mr4UxPosBa0JRw9bJoIwQn+nswiew== - -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" - -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@^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-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== - dependencies: - path-key "^3.0.0" - -npmlog@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - -nth-check@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125" - integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== - dependencies: - boolbase "^1.0.0" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -object-assign@^4.1.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-inspect@^1.9.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -on-finished@^2.3.0, on-finished@~2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" - integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= - dependencies: - ee-first "1.1.1" - -once@^1.3.0, once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -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== - dependencies: - mimic-fn "^2.1.0" - -open@^8.2.0: - version "8.2.1" - resolved "https://registry.yarnpkg.com/open/-/open-8.2.1.tgz#82de42da0ccbf429bc12d099dad2e0975e14e8af" - integrity sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ== - dependencies: - define-lazy-prop "^2.0.0" - is-docker "^2.1.1" - is-wsl "^2.2.0" - -opencollective-postinstall@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" - integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== - -p-all@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-all/-/p-all-2.1.0.tgz#91419be56b7dee8fe4c5db875d55e0da084244a0" - integrity sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA== - dependencies: - p-map "^2.0.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-defer@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" - integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= - -p-event@^4.1.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== - dependencies: - p-timeout "^3.1.0" - -p-filter@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" - integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== - dependencies: - p-map "^2.0.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-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-map@^2.0.0, p-map@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" - integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== - -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.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== - dependencies: - p-finally "^1.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -param-case@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" - integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= - dependencies: - no-case "^2.2.0" - -param-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" - integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -parse-imports@0.0.5: - version "0.0.5" - resolved "https://registry.yarnpkg.com/parse-imports/-/parse-imports-0.0.5.tgz#80e505b9558d6fa8d760b9f0be64f42f65bf4d17" - integrity sha512-yA6mDNotJmyAXcEdi2AjiHfI8Llk+/uv/jgBgvzFVP8iGaHC5L3rR6VQk/1qEE3SvLUsDQ2GdQMfPTi0qrmt8Q== - dependencies: - es-module-lexer "0.3.26" - slashes "2.0.2" - -parse5-htmlparser2-tree-adapter@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" - integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== - dependencies: - parse5 "^6.0.1" - -parse5@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -parseurl@~1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -pascal-case@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" - integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" - integrity sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -path-dirname@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" - integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= - -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-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^3.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-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-type@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" - integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== - dependencies: - pify "^3.0.0" - -peek-readable@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.0.1.tgz#9a045f291db254111c3412c1ce4fec27ddd4d202" - integrity sha512-7qmhptnR0WMSpxT5rMHG9bW/mYSR1uqaPFj2MHvT+y/aOUu6msJijpKt5SkTDKySwg65OWG2JwTMBlgcbwMHrQ== - -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== - -phc-argon2@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/phc-argon2/-/phc-argon2-1.1.2.tgz#aa3f0fb9301a8322c81577d8a37fbb287adbb3e6" - integrity sha512-R+1G4/lZHPQrLKiYBSio7xhU0vhfP5mxLYJBuWWiGAtynorRM4QtQGZcvnT4BTaRZOUaCaqlR4PC8cBrQmxZ3A== - dependencies: - "@kdf/salt" "^2.0.1" - "@phc/format" "^1.0.0" - argon2 "^0.28.2" - tsse "^2.0.0" - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - -pify@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" - integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pino-pretty@^5.0.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-5.1.2.tgz#1c0e89cc86f7add87492edbe6c50ae4dd5982fa9" - integrity sha512-20HWKSHFvF/pF/C4spBVW0RQdnBYptCj4Bwgb6pFkWY5FOYiElCGHkkPU1173iK8fsoiBMHMEvS0wB2loQZJ+Q== - dependencies: - "@hapi/bourne" "^2.0.0" - args "^5.0.1" - chalk "^4.0.0" - dateformat "^4.5.1" - fast-safe-stringify "^2.0.7" - jmespath "^0.15.0" - joycon "^3.0.0" - pump "^3.0.0" - readable-stream "^3.6.0" - rfdc "^1.3.0" - split2 "^3.1.1" - strip-json-comments "^3.1.1" - -pino-std-serializers@^3.1.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz#b56487c402d882eb96cd67c257868016b61ad671" - integrity sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg== - -pino@^6.13.0: - version "6.13.0" - resolved "https://registry.yarnpkg.com/pino/-/pino-6.13.0.tgz#41810b9be213af6f8f7c23a1b17058d880267e7b" - integrity sha512-mRXSTfa34tbfrWqCIp1sUpZLqBhcoaGapoyxfEwaWwJGMpLijlRdDKIQUyvq4M3DUfFH5vEglwSw8POZYwbThA== - dependencies: - fast-redact "^3.0.0" - fast-safe-stringify "^2.0.8" - flatstr "^1.0.12" - pino-std-serializers "^3.1.0" - quick-format-unescaped "^4.0.3" - sonic-boom "^1.0.2" - -pirates@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" - integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== - dependencies: - node-modules-regexp "^1.0.0" - -pkg-dir@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pluralize@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" - integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -pretty-hrtime@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" - integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= - -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== - -prop-ini@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/prop-ini/-/prop-ini-0.0.2.tgz#6733a7cb5242acab2be42e607583d8124b172a5b" - integrity sha1-ZzOny1JCrKsr5C5gdYPYEksXKls= - dependencies: - extend "^3.0.0" - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= - -proxy-addr@^2.0.7: - version "2.0.7" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" - integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== - dependencies: - forwarded "0.2.0" - ipaddr.js "1.9.1" - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -pump@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" - integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -qs@^6.10.1: - version "6.10.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" - integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== - dependencies: - side-channel "^1.0.4" - -quick-format-unescaped@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.3.tgz#6d6b66b8207aa2b35eef12be1421bb24c428f652" - integrity sha512-MaL/oqh02mhEo5m5J2rwsVL23Iw2PEaGVHgT2vFt8AAsr0lfvQA5dpXo9TPu0rz7tSBdUPgkbam0j/fj5ZM8yg== - -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== - -random-bytes@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" - integrity sha1-T2ih3Arli9P7lYSMMDJNt11kNgs= - -range-parser@~1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" - integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== - -raw-body@^2.4.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" - integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== - dependencies: - bytes "3.1.0" - http-errors "1.7.3" - iconv-lite "0.4.24" - unpipe "1.0.0" - -rc@^1.2.8: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - -readable-stream@2.3.7, 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== - 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" - -readable-stream@^3.0.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== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readable-web-to-node-stream@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" - integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw== - dependencies: - readable-stream "^3.6.0" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -readme-badger@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/readme-badger/-/readme-badger-0.3.0.tgz#87007f3c3e0c445e545134a305d8e3068fe9cd6e" - integrity sha512-+sMOLSs1imZUISZ2Rhz7qqVd77QtpcAPbGeIraFdgJmijb04YtdlPjGNBvDChTNtLbeQ6JNGQy3pOgslWfaP3g== - dependencies: - balanced-match "^1.0.0" - -rechoir@0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" - integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== - dependencies: - resolve "^1.9.0" - -redeyed@~2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b" - integrity sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs= - dependencies: - esprima "~4.0.0" - -redis-commands@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.7.0.tgz#15a6fea2d58281e27b1cd1acfb4b293e278c3a89" - integrity sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ== - -redis-errors@^1.0.0, redis-errors@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" - integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60= - -redis-parser@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" - integrity sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ= - dependencies: - redis-errors "^1.0.0" - -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== - -regenerator-runtime@^0.13.4: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -relateurl@^0.2.7: - version "0.2.7" - resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" - integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= - -repeat-element@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" - integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -require-all@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/require-all/-/require-all-3.0.0.tgz#473d49704be310115ce124f77383b1ebd8671312" - integrity sha1-Rz1JcEvjEBFc4ST3c4Ox69hnExI= - -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= - -resolve-alpn@^1.0.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.0.tgz#058bb0888d1cd4d12474e9a4b6eb17bdd5addc44" - integrity sha512-e4FNQs+9cINYMO5NMFc6kOUCdohjqFPSgMuwuZAOUWqrfWsen+Yjy5qZFkV5K7VO7tFSLKcUL97olkED7sCBHA== - -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-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.9.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -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== - dependencies: - 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== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -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== - -rev-hash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/rev-hash/-/rev-hash-3.0.0.tgz#951d73d02b9606ea4bbb7ee3d93c252cd8556ce5" - integrity sha512-s+87HfEKAu95TaTxnbCobn0/BkbzR23LHSwVdYvr8mn5+PPjzy+hTWyh92b5oaLgig9TKPe5d6ZcubsVBtUrZg== - -rfdc@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" - integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== - -rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -safe-buffer@5.1.2, 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== - -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== - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -semver@^5.6.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.0.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.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== - dependencies: - lru-cache "^6.0.0" - -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.7.2" - mime "1.6.0" - ms "2.1.1" - on-finished "~2.3.0" - range-parser "~1.2.1" - statuses "~1.5.0" - -sentence-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" - integrity sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg== - dependencies: - no-case "^3.0.4" - tslib "^2.0.3" - upper-case-first "^2.0.2" - -serve-static@^1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.3" - send "0.17.1" - -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= - -set-cookie-parser@^2.4.8: - version "2.4.8" - resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.4.8.tgz#d0da0ed388bc8f24e706a391f9c9e252a13c58b2" - integrity sha512-edRH8mBKEWNVIVMKejNnuJxleqYE/ZSdcT8/Nem9/mmosx12pctd80s2Oy00KNZzrogMZS5mauK2/ymL1bvlvg== - -set-value@^2.0.0, set-value@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" - integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -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== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -sigmund@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" - integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= - -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slashes@2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/slashes/-/slashes-2.0.2.tgz#c149dd3555bd236fdc3b43ec56e748e924425613" - integrity sha512-68p+QkFAQQRetIUzNXAdktNJr8AYLxJukjBegYQz8F7VATsBJG621UYtY/vS2j9jerxdJ1k6Tc25K4DXEw1d5w== - -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== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -slick@^1.12.2: - version "1.12.2" - resolved "https://registry.yarnpkg.com/slick/-/slick-1.12.2.tgz#bd048ddb74de7d1ca6915faa4a57570b3550c2d7" - integrity sha1-vQSN23TefRymkV+qSldXCzVQwtc= - -slugify@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.6.0.tgz#6bdf8ed01dabfdc46425b67e3320b698832ff893" - integrity sha512-FkMq+MQc5hzYgM86nLuHI98Acwi3p4wX+a5BO9Hhw4JdK4L7WueIiZ4tXEobImPqBz2sVcV0+Mu3GRB30IGang== - -smpltmpl@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/smpltmpl/-/smpltmpl-1.0.2.tgz#b6e9d0eedab7827455c46c98fb8b9505ae6d4a82" - integrity sha512-Hq23NNgeZigOzIiX1dkb6W3gFn2/XQj43KhPxu65IMieG/gIwf/lQb1IudjYv0c/5LwJeS/mPayYzyo+8WJMxQ== - dependencies: - babel-code-frame "^6.26.0" - -snake-case@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" - integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== - dependencies: - dot-case "^3.0.4" - tslib "^2.0.3" - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -sonic-boom@^1.0.2: - 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" - -sonic-boom@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.1.0.tgz#07b7b181b078aeb5f202019769e4088c70c4f0eb" - integrity sha512-x2j9LXx27EDlyZEC32gBM+scNVMdPutU7FIKV2BOTKCnPrp7bY5BsplCMQ4shYYR3IhDSIrEXoqb6GlS+z7KyQ== - dependencies: - atomic-sleep "^1.0.0" - -source-map-resolve@^0.5.0: - version "0.5.3" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" - integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== - dependencies: - atob "^2.1.2" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-support@^0.5.19: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-url@^0.4.0: - version "0.4.1" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" - integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@~0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -split-lines@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/split-lines/-/split-lines-2.1.0.tgz#3bc9dbf75637c8bae6ed5dcbc7dbd83956b72311" - integrity sha512-8dv+1zKgTpfTkOy8XZLFyWrfxO0NV/bj/3EaQ+hBrBxGv2DwiroljPjU8NlCr+59nLnsVm9WYT7lXKwe4TC6bw== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -split2@^3.1.1: - version "3.2.2" - resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" - integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== - dependencies: - readable-stream "^3.0.0" - -sqlstring@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40" - integrity sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A= - -stack-trace@0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= - -standard-as-callback@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45" - integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -"statuses@>= 1.5.0 < 2", statuses@~1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= - -string-width@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" - integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= - dependencies: - code-point-at "^1.0.0" - is-fullwidth-code-point "^1.0.0" - strip-ansi "^3.0.0" - -"string-width@^1.0.2 || 2": - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -stringify-attributes@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/stringify-attributes/-/stringify-attributes-2.0.0.tgz#0355827de224ec8a94ca81a267f92a3f5f778820" - integrity sha512-wrVfRV6sCCB6wr3gx8OgKsp/9dSWWbKr8ifLfOxEcd/BBoa8d5pAf4BZb/jQW1JZnoZImjvUdxdo3ikYHZmYiw== - dependencies: - escape-goat "^2.0.0" - -strip-ansi@^3.0.0, strip-ansi@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" - integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= - dependencies: - ansi-regex "^2.0.0" - -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -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-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - -strtok3@^6.2.4: - version "6.2.4" - resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.2.4.tgz#302aea64c0fa25d12a0385069ba66253fdc38a81" - integrity sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw== - dependencies: - "@tokenizer/token" "^0.3.0" - peek-readable "^4.0.1" - -supports-color@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" - integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -tar@^6.1.0: - version "6.1.6" - resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.6.tgz#c23d797b0a1efe5d479b1490805c5443f3560c5d" - integrity sha512-oaWyu5dQbHaYcyZCTfyPpC+VmI62/OM2RTUYavTk1MDr1cwW5Boi3baeYQKiZbY2uSQJGr+iMOzb/JFxLrft+g== - 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" - -tarn@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/tarn/-/tarn-3.0.1.tgz#ebac2c6dbc6977d34d4526e0a7814200386a8aec" - integrity sha512-6usSlV9KyHsspvwu2duKH+FMUhqJnAh6J5J/4MITl8s94iSUQTLkJggdiewKv4RyARQccnigV48Z+khiuVZDJw== - -term-size@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" - integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== - -tildify@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/tildify/-/tildify-2.0.0.tgz#f205f3674d677ce698b7067a99e949ce03b4754a" - integrity sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw== - -tmp-cache@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/tmp-cache/-/tmp-cache-1.1.0.tgz#28b551cacdafee194540a47b47518b3fadaa049e" - integrity sha512-j040fkL/x+XAZQ9K3bKGEPwgYhOZNBQLa3NXEADUiuno9C+3N2JJA4bVPDREixp604G3/vTXWA3DIPpA9lu1RQ== - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== - -token-types@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.1.1.tgz#ef9e8c8e2e0ded9f1b3f8dbaa46a3228b113ba1a" - integrity sha512-hD+QyuUAyI2spzsI0B7gf/jJ2ggR4RjkAo37j3StuePhApJUwcWDjnHDOFdIWYSwNR28H14hpwm4EI+V1Ted1w== - dependencies: - "@tokenizer/token" "^0.3.0" - ieee754 "^1.2.1" - -truncatise@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/truncatise/-/truncatise-0.0.8.tgz#06514a0e98c57924f0c2d4ebaf7ff7a5f16ef39a" - integrity sha512-cXzueh9pzBCsLzhToB4X4gZCb3KYkrsAcBAX97JnazE74HOl3cpBJYEV7nabHeG/6/WXCU5Yujlde/WPBUwnsg== - -tslib@^2.0.3, tslib@^2.2.0, tslib@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" - integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== - -tsse@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/tsse/-/tsse-2.0.0.tgz#757a1357473fecaffb5c70024acd179514779f64" - integrity sha512-KiYDxhCTbCUQWXtCSF2OWafC71C/ZUZP6TyCh/w7nPjzY1ZLY70KtDSfmePs3H4vSdxQotqdJvAkGAofxsQ05w== - dependencies: - safe-buffer "^5.1.1" - -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-is@^1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typescript@^4.3.4: - version "4.3.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" - integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== - -uglify-js@^3.5.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.1.tgz#e2cb9fe34db9cb4cf7e35d1d26dfea28e09a7d06" - integrity sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g== - -uid-safe@2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.5.tgz#2b3d5c7240e8fc2e58f8aa269e5ee49c0857bd3a" - integrity sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA== - dependencies: - random-bytes "~1.0.0" - -union-value@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" - integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^2.0.1" - -universalify@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" - integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== - -universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== - -unpipe@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -upper-case-first@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" - integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== - dependencies: - tslib "^2.0.3" - -upper-case@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" - integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= - -upper-case@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" - integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== - dependencies: - tslib "^2.0.3" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -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= - -uuid-random@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/uuid-random/-/uuid-random-1.3.2.tgz#96715edbaef4e84b1dcf5024b00d16f30220e2d0" - integrity sha512-UOzej0Le/UgkbWEO8flm+0y+G+ljUon1QWTEZOq1rnMAsxo2+SckbiZdKzAHHlVh6gJqI1TjC/xwgR50MuCrBQ== - -valid-data-url@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/valid-data-url/-/valid-data-url-3.0.1.tgz#826c1744e71b5632e847dd15dbd45b9fb38aa34f" - integrity sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA== - -validate-npm-package-name@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" - integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= - dependencies: - builtins "^1.0.3" - -validator@^13.6.0: - version "13.6.0" - resolved "https://registry.yarnpkg.com/validator/-/validator-13.6.0.tgz#1e71899c14cdc7b2068463cb24c1cc16f6ec7059" - integrity sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg== - -vary@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= - -web-resource-inliner@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/web-resource-inliner/-/web-resource-inliner-5.0.0.tgz#ac30db8096931f20a7c1b3ade54ff444e2e20f7b" - integrity sha512-AIihwH+ZmdHfkJm7BjSXiEClVt4zUFqX4YlFAzjL13wLtDuUneSaFvDBTbdYRecs35SiU7iNKbMnN+++wVfb6A== - dependencies: - ansi-colors "^4.1.1" - escape-goat "^3.0.0" - htmlparser2 "^4.0.0" - mime "^2.4.6" - node-fetch "^2.6.0" - valid-data-url "^3.0.0" - -webpack-merge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" - integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== - dependencies: - lodash "^4.17.15" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -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== - dependencies: - 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= - -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== - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= - -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== - -yaml@^2.0.0-1: - version "2.0.0-7" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.0.0-7.tgz#9799d9d85dfc8f01e4cc425e18e09215364beef1" - integrity sha512-RbI2Tm3hl9AoHY4wWyWvGvJfFIbHOzuzaxum6ez1A0vve+uXgNor03Wys4t+2sgjJSVSe+B2xerd1/dnvqHlOA== - -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@^16.1.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - 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" - -youch-terminal@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/youch-terminal/-/youch-terminal-1.1.1.tgz#1b16780be43816e8817adced966a9a36113827f8" - integrity sha512-LRJCIDkMH4AA6KtiX1JH3nBO8xCJx8le/CHI2hheBGHd7hcpP62owgUW5R9ObrxW0RLQT/VqPRO4mR92STkvAw== - dependencies: - kleur "^4.1.4" - -youch@^2.2.2: - version "2.2.2" - resolved "https://registry.yarnpkg.com/youch/-/youch-2.2.2.tgz#cb87a359a5c524ebd35eb07ca3a1521dbc7e1a3e" - integrity sha512-/FaCeG3GkuJwaMR34GHVg0l8jCbafZLHiFowSjqLlqhC6OMyf2tPJBu8UirF7/NI9X/R5ai4QfEKUCOxMAGxZQ== - dependencies: - "@types/stack-trace" "0.0.29" - cookie "^0.4.1" - mustache "^4.2.0" - stack-trace "0.0.10" From f9098be315f8862383e24da0e60955926cd66802 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 14 Aug 2021 11:19:40 +0200 Subject: [PATCH 115/244] Add await --- app/Controllers/Http/FilesController.ts | 2 +- app/Controllers/Http/TranslationsController.ts | 2 +- app/Controllers/Http/UsersController.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Controllers/Http/FilesController.ts b/app/Controllers/Http/FilesController.ts index 7c8a5d1..2bb89a1 100755 --- a/app/Controllers/Http/FilesController.ts +++ b/app/Controllers/Http/FilesController.ts @@ -6,7 +6,7 @@ export default class FilesController { public async index ({ response }: HttpContextContract) { return response.status(200).send({ - files: File.query() + files: await File.all() }) } diff --git a/app/Controllers/Http/TranslationsController.ts b/app/Controllers/Http/TranslationsController.ts index 6a911ba..33abbd0 100644 --- a/app/Controllers/Http/TranslationsController.ts +++ b/app/Controllers/Http/TranslationsController.ts @@ -7,7 +7,7 @@ export default class TranslationsController { public async index ({ response }: HttpContextContract) { return response.status(200).send({ - translations: Translation.all() + translations: await Translation.all() }) } diff --git a/app/Controllers/Http/UsersController.ts b/app/Controllers/Http/UsersController.ts index 7ee2439..42960b4 100755 --- a/app/Controllers/Http/UsersController.ts +++ b/app/Controllers/Http/UsersController.ts @@ -7,7 +7,7 @@ export default class UsersController { public async index ({ response }: HttpContextContract) { return response.status(200).send({ - users: User.query() + users: await User.all() }) } From a5062cc854a9752819430e1a1abe935d3bc980c5 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 14 Aug 2021 12:25:38 +0200 Subject: [PATCH 116/244] add Skill --- app/Controllers/Http/AnnouncesController.ts | 3 +- app/Controllers/Http/SkillsController.ts | 59 ++++++++++++++++++++ app/Models/Skill.ts | 23 ++++++++ app/Validators/skill/SkillStoreValidator.ts | 15 +++++ app/Validators/skill/SkillUpdateValidator.ts | 16 ++++++ database/migrations/1628936238073_skills.ts | 22 ++++++++ start/routes/artsite.ts | 2 + 7 files changed, 139 insertions(+), 1 deletion(-) create mode 100644 app/Controllers/Http/SkillsController.ts create mode 100644 app/Models/Skill.ts create mode 100644 app/Validators/skill/SkillStoreValidator.ts create mode 100644 app/Validators/skill/SkillUpdateValidator.ts create mode 100644 database/migrations/1628936238073_skills.ts diff --git a/app/Controllers/Http/AnnouncesController.ts b/app/Controllers/Http/AnnouncesController.ts index edf602c..9820ca5 100644 --- a/app/Controllers/Http/AnnouncesController.ts +++ b/app/Controllers/Http/AnnouncesController.ts @@ -43,7 +43,7 @@ export default class AnnouncesController { }) } - public async update({ request, params, response }: HttpContextContract) { + public async update ({ request, params, response }: HttpContextContract) { const data = await request.validate(AnnounceUpdateValidator) const announce = await Announce.findOrFail(params.id) @@ -54,6 +54,7 @@ export default class AnnouncesController { const cover = await File.findBy('label', data.cover) if (cover) await announce.related('file').associate(cover) + await announce.merge(data).save() return response.status(200).send({ announce diff --git a/app/Controllers/Http/SkillsController.ts b/app/Controllers/Http/SkillsController.ts new file mode 100644 index 0000000..beb0488 --- /dev/null +++ b/app/Controllers/Http/SkillsController.ts @@ -0,0 +1,59 @@ +import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; +import File from "App/Models/File"; +import Skill from "App/Models/Skill"; +import SkillStoreValidator from "App/Validators/skill/SkillStoreValidator"; +import SkillUpdateValidator from "App/Validators/skill/SkillUpdateValidator"; + +export default class SkillsController { + + public async index ({ response }: HttpContextContract) { + const skills = await Skill + .query() + .preload('file') + return response.status(200).send({ + skills: skills + }) + } + + public async store ({ request, response }: HttpContextContract) { + const data = await request.validate(SkillStoreValidator) + const skill = await Skill.create(data) + + const cover = await File.findBy('label', data.cover) + if (cover) await skill.related('file').associate(cover) + + return response.status(200).send({ + skill: skill + }) + } + + public async show ({ params, response }: HttpContextContract) { + const skill = await Skill.findOrFail(params.id) + skill.load('file') + return response.status(200).send({ + skill + }) + } + + public async update ({ request, params, response }: HttpContextContract) { + const data = await request.validate(SkillUpdateValidator) + const skill = await Skill.findOrFail(params.id) + + const cover = await File.findBy('label', data.cover) + if (cover) await skill.related('file').associate(cover) + await skill.merge(data).save() + + return response.status(200).send({ + skill + }) + } + + public async destroy ({ response, params }: HttpContextContract) { + const skill = await Skill.findOrFail(params.id) + await skill.delete() + return response.status(200).send({ + message: 'Skill successfully deleted!' + }) + } + +} diff --git a/app/Models/Skill.ts b/app/Models/Skill.ts new file mode 100644 index 0000000..d689bb4 --- /dev/null +++ b/app/Models/Skill.ts @@ -0,0 +1,23 @@ +import { DateTime } from 'luxon' +import {BaseModel, BelongsTo, belongsTo, column} from '@ioc:Adonis/Lucid/Orm' +import File from "App/Models/File"; + +export default class Skill extends BaseModel { + @column({ isPrimary: true }) + public id: number + + @column() + public name: string + + @belongsTo(() => File) + public file: BelongsTo + + @column() + public fileId: number + + @column.dateTime({ autoCreate: true }) + public createdAt: DateTime + + @column.dateTime({ autoCreate: true, autoUpdate: true }) + public updatedAt: DateTime +} diff --git a/app/Validators/skill/SkillStoreValidator.ts b/app/Validators/skill/SkillStoreValidator.ts new file mode 100644 index 0000000..c58907d --- /dev/null +++ b/app/Validators/skill/SkillStoreValidator.ts @@ -0,0 +1,15 @@ +import { schema } from '@ioc:Adonis/Core/Validator' +import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' + +export default class SkillStoreValidator { + constructor (protected ctx: HttpContextContract) { + } + + public schema = schema.create({ + name: schema.string(), + cover: schema.string(), + }) + public messages = { + required: 'The field {{field}} is required' + } +} diff --git a/app/Validators/skill/SkillUpdateValidator.ts b/app/Validators/skill/SkillUpdateValidator.ts new file mode 100644 index 0000000..5454ef6 --- /dev/null +++ b/app/Validators/skill/SkillUpdateValidator.ts @@ -0,0 +1,16 @@ +import { schema } from '@ioc:Adonis/Core/Validator' +import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' + +export default class SkillUpdateValidator { + constructor (protected ctx: HttpContextContract) { + } + + public schema = schema.create({ + name: schema.string.optional(), + cover: schema.string.optional(), + }) + + public messages = { + required: 'The field {{field}} is required' + } +} diff --git a/database/migrations/1628936238073_skills.ts b/database/migrations/1628936238073_skills.ts new file mode 100644 index 0000000..3e54d20 --- /dev/null +++ b/database/migrations/1628936238073_skills.ts @@ -0,0 +1,22 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class Skills extends BaseSchema { + protected tableName = 'skills' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id') + table.string('name') + table + .integer('file_id') + .unsigned() + .references('files.id') + .onDelete('CASCADE') + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts index ecb861c..077e33a 100644 --- a/start/routes/artsite.ts +++ b/start/routes/artsite.ts @@ -5,6 +5,8 @@ Route.group(() => { Route.resource('/announces', 'AnnouncesController').except(['edit', 'create']) + Route.resource('/skills', 'SkillsController').except(['edit', 'create']) + Route.resource('/projects', 'ProjectsController').except(['edit', 'create']) Route.resource('/profile', 'ProfilesController').only(['index', 'update']) From 046fe0b0a9bb2b6f37676368aec6f0674c7732b9 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 14 Aug 2021 14:48:10 +0200 Subject: [PATCH 117/244] Rename profile to information --- .../Http/InformationsController.ts | 23 +++++++++++++++++++ app/Controllers/Http/ProfilesController.ts | 23 ------------------- app/Models/{Profile.ts => Information.ts} | 10 +++++--- .../InformationUpdateValidator.ts} | 2 +- ...files.ts => 1628945210540_informations.ts} | 10 +++++--- start/routes/artsite.ts | 2 +- 6 files changed, 39 insertions(+), 31 deletions(-) create mode 100644 app/Controllers/Http/InformationsController.ts delete mode 100644 app/Controllers/Http/ProfilesController.ts rename app/Models/{Profile.ts => Information.ts} (52%) rename app/Validators/{profile/ProfileUpdateValidator.ts => information/InformationUpdateValidator.ts} (89%) rename database/migrations/{1628110086918_profiles.ts => 1628945210540_informations.ts} (61%) diff --git a/app/Controllers/Http/InformationsController.ts b/app/Controllers/Http/InformationsController.ts new file mode 100644 index 0000000..be1abfe --- /dev/null +++ b/app/Controllers/Http/InformationsController.ts @@ -0,0 +1,23 @@ +import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; +import Information from "App/Models/Information"; +import InformationUpdateValidator from "App/Validators/information/InformationUpdateValidator"; + +export default class InformationsController { + + public async index ( { response }: HttpContextContract ) { + return response.status(200).send({ + informations: await Information.first() + }) + } + + public async update ( { response, request }: HttpContextContract ) { + const information = await Information.firstOrFail() + const data = await request.validate(InformationUpdateValidator) + await information.merge(data).save() + + return response.status(200).send({ + information + }) + } + +} diff --git a/app/Controllers/Http/ProfilesController.ts b/app/Controllers/Http/ProfilesController.ts deleted file mode 100644 index f506289..0000000 --- a/app/Controllers/Http/ProfilesController.ts +++ /dev/null @@ -1,23 +0,0 @@ -import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; -import Profile from "App/Models/Profile"; -import ProfileUpdateValidator from "App/Validators/profile/ProfileUpdateValidator"; - -export default class ProfilesController { - - public async index ( { response }: HttpContextContract ) { - return response.status(200).send({ - profile: await Profile.first() - }) - } - - public async update ( { response, request }: HttpContextContract ) { - const profile = await Profile.firstOrFail() - const data = await request.validate(ProfileUpdateValidator) - await profile.merge(data).save() - - return response.status(200).send({ - profile - }) - } - -} diff --git a/app/Models/Profile.ts b/app/Models/Information.ts similarity index 52% rename from app/Models/Profile.ts rename to app/Models/Information.ts index eda9e1d..ce7c71e 100644 --- a/app/Models/Profile.ts +++ b/app/Models/Information.ts @@ -1,15 +1,19 @@ import {DateTime} from 'luxon' -import {BaseModel, column} from '@ioc:Adonis/Lucid/Orm' +import {BaseModel, BelongsTo, belongsTo, column} from '@ioc:Adonis/Lucid/Orm' +import Translation from "App/Models/Translation"; -export default class Profile extends BaseModel { +export default class Information extends BaseModel { @column({ isPrimary: true }) public id: number @column() public age: number + @belongsTo(() => Translation) + public translation: BelongsTo + @column() - public hiringStatus: string + public translationId: number @column() public hiringColor: string diff --git a/app/Validators/profile/ProfileUpdateValidator.ts b/app/Validators/information/InformationUpdateValidator.ts similarity index 89% rename from app/Validators/profile/ProfileUpdateValidator.ts rename to app/Validators/information/InformationUpdateValidator.ts index 11f94a8..e6256b2 100644 --- a/app/Validators/profile/ProfileUpdateValidator.ts +++ b/app/Validators/information/InformationUpdateValidator.ts @@ -1,7 +1,7 @@ import {schema} from '@ioc:Adonis/Core/Validator' import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' -export default class ProfileUpdateValidator { +export default class InformationUpdateValidator { public schema = schema.create({ age: schema.number.optional(), hiring_status: schema.string.optional(), diff --git a/database/migrations/1628110086918_profiles.ts b/database/migrations/1628945210540_informations.ts similarity index 61% rename from database/migrations/1628110086918_profiles.ts rename to database/migrations/1628945210540_informations.ts index e4bae15..a334a8b 100644 --- a/database/migrations/1628110086918_profiles.ts +++ b/database/migrations/1628945210540_informations.ts @@ -1,14 +1,18 @@ import BaseSchema from '@ioc:Adonis/Lucid/Schema' -export default class Profiles extends BaseSchema { - protected tableName = 'profiles' +export default class Informations extends BaseSchema { + protected tableName = 'informations' public async up () { this.schema.createTable(this.tableName, (table) => { table.increments('id') table.integer('age').notNullable() table.string('hiring_color').notNullable() - table.string('hiring_status').notNullable() + table + .integer('translation_id') + .unsigned() + .references('translations.id') + .onDelete('CASCADE') table.timestamps(true, true) }) } diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts index 077e33a..3bf6630 100644 --- a/start/routes/artsite.ts +++ b/start/routes/artsite.ts @@ -9,7 +9,7 @@ Route.group(() => { Route.resource('/projects', 'ProjectsController').except(['edit', 'create']) - Route.resource('/profile', 'ProfilesController').only(['index', 'update']) + Route.resource('/informations', 'InformationsController').only(['index', 'update']) Route.group(() => { Route.get('/:slug', 'PostsController.getLikes') From 4fa0ef6c924f63cbc36653eca3190b64e05e1d12 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 14 Aug 2021 15:03:14 +0200 Subject: [PATCH 118/244] Rename profile to information --- app/Controllers/Http/InformationsController.ts | 12 +++++++++++- app/Models/Information.ts | 3 --- .../information/InformationUpdateValidator.ts | 2 +- database/migrations/1628945210540_informations.ts | 1 - 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/Controllers/Http/InformationsController.ts b/app/Controllers/Http/InformationsController.ts index be1abfe..58bee6e 100644 --- a/app/Controllers/Http/InformationsController.ts +++ b/app/Controllers/Http/InformationsController.ts @@ -1,18 +1,28 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import Information from "App/Models/Information"; import InformationUpdateValidator from "App/Validators/information/InformationUpdateValidator"; +import getTranslation from "App/Tasks/getTranslation"; export default class InformationsController { public async index ( { response }: HttpContextContract ) { return response.status(200).send({ - informations: await Information.first() + informations: await Information + .query() + .preload('translation') + .first() }) } public async update ( { response, request }: HttpContextContract ) { const information = await Information.firstOrFail() const data = await request.validate(InformationUpdateValidator) + + if (data.code) { + const translation = await getTranslation(data.code) + await information.related('translation').associate(translation) + } + await information.merge(data).save() return response.status(200).send({ diff --git a/app/Models/Information.ts b/app/Models/Information.ts index ce7c71e..7a58d64 100644 --- a/app/Models/Information.ts +++ b/app/Models/Information.ts @@ -15,9 +15,6 @@ export default class Information extends BaseModel { @column() public translationId: number - @column() - public hiringColor: string - @column.dateTime({ autoCreate: true }) public createdAt: DateTime diff --git a/app/Validators/information/InformationUpdateValidator.ts b/app/Validators/information/InformationUpdateValidator.ts index e6256b2..c5bc5c5 100644 --- a/app/Validators/information/InformationUpdateValidator.ts +++ b/app/Validators/information/InformationUpdateValidator.ts @@ -4,7 +4,7 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' export default class InformationUpdateValidator { public schema = schema.create({ age: schema.number.optional(), - hiring_status: schema.string.optional(), + code: schema.string.optional(), hiring_color: schema.string.optional() }) public messages = { diff --git a/database/migrations/1628945210540_informations.ts b/database/migrations/1628945210540_informations.ts index a334a8b..9cfbd47 100644 --- a/database/migrations/1628945210540_informations.ts +++ b/database/migrations/1628945210540_informations.ts @@ -7,7 +7,6 @@ export default class Informations extends BaseSchema { this.schema.createTable(this.tableName, (table) => { table.increments('id') table.integer('age').notNullable() - table.string('hiring_color').notNullable() table .integer('translation_id') .unsigned() From 6f163c3a2bc283f14367243a9810187bf8cc8916 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 16 Aug 2021 21:55:48 +0200 Subject: [PATCH 119/244] Update translation into message in Announce Model --- .dockerignore | 1 + app/Controllers/Http/AnnouncesController.ts | 16 +- app/Models/Announce.ts | 8 +- .../experience/ExperienceUpdateValidator.ts | 42 + yarn.lock | 4855 +++++++++++++++++ 5 files changed, 4910 insertions(+), 12 deletions(-) create mode 100644 app/Validators/experience/ExperienceUpdateValidator.ts create mode 100644 yarn.lock diff --git a/.dockerignore b/.dockerignore index 3c3629e..37d7e73 100755 --- a/.dockerignore +++ b/.dockerignore @@ -1 +1,2 @@ node_modules +.env diff --git a/app/Controllers/Http/AnnouncesController.ts b/app/Controllers/Http/AnnouncesController.ts index 9820ca5..4ff638e 100644 --- a/app/Controllers/Http/AnnouncesController.ts +++ b/app/Controllers/Http/AnnouncesController.ts @@ -11,8 +11,8 @@ export default class AnnouncesController { const announce = await Announce .query() .orderBy('created_at', 'desc') - .preload('translation') - .preload('file') + .preload('message') + .preload('cover') .first() return response.status(200).send({ announce: announce @@ -24,10 +24,10 @@ export default class AnnouncesController { const announce = await Announce.create(data) const translation = await getTranslation(data.code) - await announce.related('translation').associate(translation) + await announce.related('message').associate(translation) const cover = await File.findBy('label', data.cover) - if (cover) await announce.related('file').associate(cover) + if (cover) await announce.related('cover').associate(cover) return response.status(200).send({ announce: announce @@ -36,8 +36,8 @@ export default class AnnouncesController { public async show ({ params, response }: HttpContextContract) { const announce = await Announce.findOrFail(params.id) - announce.load('translation') - announce.load('file') + announce.load('message') + announce.load('cover') return response.status(200).send({ announce }) @@ -49,11 +49,11 @@ export default class AnnouncesController { if (data.code) { const translation = await getTranslation(data.code) - await announce.related('translation').associate(translation) + await announce.related('message').associate(translation) } const cover = await File.findBy('label', data.cover) - if (cover) await announce.related('file').associate(cover) + if (cover) await announce.related('cover').associate(cover) await announce.merge(data).save() return response.status(200).send({ diff --git a/app/Models/Announce.ts b/app/Models/Announce.ts index 81c57ee..ba80704 100644 --- a/app/Models/Announce.ts +++ b/app/Models/Announce.ts @@ -14,16 +14,16 @@ export default class Announce extends BaseModel { public hoverColor: string @belongsTo(() => Translation) - public translation: BelongsTo + public message: BelongsTo @column() - public translationId: number + public messageId: number @belongsTo(() => File) - public file: BelongsTo + public cover: BelongsTo @column() - public fileId: number + public coverId: number @column.dateTime({ autoCreate: true }) public createdAt: DateTime diff --git a/app/Validators/experience/ExperienceUpdateValidator.ts b/app/Validators/experience/ExperienceUpdateValidator.ts new file mode 100644 index 0000000..3c6af58 --- /dev/null +++ b/app/Validators/experience/ExperienceUpdateValidator.ts @@ -0,0 +1,42 @@ +import { schema } from '@ioc:Adonis/Core/Validator' +import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' + +export default class ExperienceUpdateValidator { + constructor (protected ctx: HttpContextContract) { + } + + /* + * Define schema to validate the "shape", "type", "formatting" and "integrity" of data. + * + * For example: + * 1. The username must be of data type string. But then also, it should + * not contain special characters or numbers. + * ``` + * schema.string({}, [ rules.alpha() ]) + * ``` + * + * 2. The email must be of data type string, formatted as a valid + * email. But also, not used by any other user. + * ``` + * schema.string({}, [ + * rules.email(), + * rules.unique({ table: 'users', column: 'email' }), + * ]) + * ``` + */ + public schema = schema.create({ + }) + + /** + * Custom messages for validation failures. You can make use of dot notation `(.)` + * for targeting nested fields and array expressions `(*)` for targeting all + * children of an array. For example: + * + * { + * 'profile.username.required': 'Username is required', + * 'scores.*.number': 'Define scores as valid numbers' + * } + * + */ + public messages = {} +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..f943204 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,4855 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@adonisjs/ace@^11.0.3": + version "11.0.3" + resolved "https://registry.yarnpkg.com/@adonisjs/ace/-/ace-11.0.3.tgz#fb003d5de3c64c34c54b3462fb09f9e8c233507f" + integrity sha512-nqAVFu8+r3HdSL4qePdItgTZSRSoNcLc2ks49Deptf8rl51Wk6H2vHesU2yLg7JHNW8+sY7lehZidTVqrG3wrA== + dependencies: + "@poppinss/cliui" "^2.2.5" + "@poppinss/prompts" "^1.2.3" + "@poppinss/utils" "^3.1.5" + fs-extra "^10.0.0" + getopts "^2.3.0" + leven "^3.1.0" + mustache "^4.2.0" + slash "^3.0.0" + term-size "^2.2.1" + +"@adonisjs/ally@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@adonisjs/ally/-/ally-4.1.0.tgz#6811c77c7862f78279d11f6be52792b0837c1829" + integrity sha512-IgyUoV9U/a8iTuRBnR0US8/qV5w+d087dqDdDVbgevGVAPyzwci2KeBGBteNzbZDuF1lhfMAz76rL9rSSbWR9A== + dependencies: + "@poppinss/oauth-client" "^2.0.4" + "@poppinss/utils" "^3.1.3" + +"@adonisjs/application@^5.1.4", "@adonisjs/application@^5.1.6": + version "5.1.6" + resolved "https://registry.yarnpkg.com/@adonisjs/application/-/application-5.1.6.tgz#da3043163b49ab35aa5dc1bfcc4ed4ba38d63f65" + integrity sha512-xg6fkCCXijMmkoZ40ih8T1QF50Dj0J7EQ1I54TWfFCFEHsIYhXrCZxeWZEpMRHsTAWaPpP0GTnMrOac/+ERWsQ== + dependencies: + "@adonisjs/config" "^3.0.5" + "@adonisjs/env" "^3.0.5" + "@adonisjs/fold" "^8.1.5" + "@adonisjs/logger" "^4.1.0" + "@adonisjs/profiler" "^6.0.6" + "@poppinss/utils" "^3.1.5" + semver "^7.3.5" + +"@adonisjs/assembler@^5.3.2": + version "5.3.5" + resolved "https://registry.yarnpkg.com/@adonisjs/assembler/-/assembler-5.3.5.tgz#4a159cb2214c38b4c571e30378df1adc20485117" + integrity sha512-vuLHKZk9ZJ9zSWSdpQcHxVtUpRxySSKRlHuRo18nzSDZODtpsDawImdrDu8pYMKb90bkxdFxQZbkCMmuAg6TKg== + dependencies: + "@adonisjs/application" "^5.1.4" + "@adonisjs/env" "^3.0.4" + "@adonisjs/ioc-transformer" "^2.3.0" + "@adonisjs/require-ts" "^2.0.6" + "@adonisjs/sink" "^5.1.5" + "@poppinss/chokidar-ts" "^3.3.0" + "@poppinss/cliui" "^2.2.4" + "@poppinss/utils" "^3.1.3" + cpy "^8.1.2" + emittery "^0.9.2" + execa "^5.1.1" + fs-extra "^10.0.0" + get-port "^5.1.1" + has-yarn "^2.1.0" + picomatch "^2.3.0" + slash "^3.0.0" + +"@adonisjs/auth@^8.0.6": + version "8.0.7" + resolved "https://registry.yarnpkg.com/@adonisjs/auth/-/auth-8.0.7.tgz#8e73cb0d491dc58aa1e72b0ef8166718c5bfbf08" + integrity sha512-iTB9u5xzJBhdZthezxPR8+HPI0xLSseioeOeGlQumlawwS0KbuBDoJ1JkBSIy2/Yf235BzLdlB78vW3dYhNFsA== + dependencies: + "@poppinss/hooks" "^3.0.4" + "@poppinss/utils" "^3.1.3" + luxon "^1.27.0" + +"@adonisjs/bodyparser@^7.1.4": + version "7.1.5" + resolved "https://registry.yarnpkg.com/@adonisjs/bodyparser/-/bodyparser-7.1.5.tgz#dbe044a9c595bdca8b8dd965dda45e911080776c" + integrity sha512-wiWYHTKJixLZIVq04dHCp9ok8FhiRDVSre1AgPzCtGFGjQf+qXjqfPNCEiPozt+ffKWNaDAUL8PGqJsDSmLuDA== + dependencies: + "@poppinss/co-body" "^1.1.3" + "@poppinss/multiparty" "^1.0.2" + "@poppinss/utils" "^3.1.5" + bytes "^3.1.0" + end-of-stream "^1.4.4" + file-type "^16.5.2" + fs-extra "^10.0.0" + media-typer "^1.1.0" + +"@adonisjs/bouncer@^2.2.4": + version "2.2.4" + resolved "https://registry.yarnpkg.com/@adonisjs/bouncer/-/bouncer-2.2.4.tgz#651428140f71b087ad71850d5f5d4bbc405e953d" + integrity sha512-b8DRojf12qeJ2cdY84fUC/Ab2nhMkL/5+V9JBWP8/pnkbhQA1YjkvjTKLFWeGKSb+o4mKeK6OBW0W5e8v/R1Zw== + dependencies: + "@poppinss/utils" "^3.1.3" + +"@adonisjs/config@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@adonisjs/config/-/config-3.0.5.tgz#00597e949252d09b4d2f9fba3b1321f299833585" + integrity sha512-/Hy8K3s3WAfhBxlmdYqJTKpKfACyg/4V3rXx2t14pMF8Kkhoo7jGQK170HzEPjkMm+qkc5aViUMFkHSr6pgfrA== + dependencies: + "@poppinss/utils" "^3.1.4" + +"@adonisjs/core@^5.1.10": + version "5.1.11" + resolved "https://registry.yarnpkg.com/@adonisjs/core/-/core-5.1.11.tgz#fff8ac93dbf38e9d0eda2603d9c1fa0c2066633e" + integrity sha512-iBoV7cGMhq5TiUt1B89dnMRnOWma2kmkL0LE9RfzYUPMyNspyWPNr93E5RQ+ml7xAQr74bAyKVywImLHIy4nOw== + dependencies: + "@adonisjs/ace" "^11.0.3" + "@adonisjs/application" "^5.1.6" + "@adonisjs/bodyparser" "^7.1.4" + "@adonisjs/encryption" "^4.0.5" + "@adonisjs/events" "^7.1.2" + "@adonisjs/hash" "^7.0.8" + "@adonisjs/http-server" "^5.5.2" + "@adonisjs/validator" "^11.0.4" + "@poppinss/cliui" "^2.2.5" + "@poppinss/utils" "^3.1.5" + fs-extra "^10.0.0" + serve-static "^1.14.1" + stringify-attributes "^2.0.0" + +"@adonisjs/encryption@^4.0.5": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@adonisjs/encryption/-/encryption-4.0.5.tgz#cf4e3012d8a09815e6e53dd58b3add95cb9e9115" + integrity sha512-PCyzcwwb2IxotFNHEXV1fkfXK/XT4cpR+wJtpf+QurB7xS5BqIIosRWISEkwD7l98OuvLtt505Qg/caVDN3q8w== + dependencies: + "@poppinss/utils" "^3.1.4" + +"@adonisjs/env@^3.0.4", "@adonisjs/env@^3.0.5": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@adonisjs/env/-/env-3.0.5.tgz#537c510269292548945db35a819422ce2046d02b" + integrity sha512-pppLokSrTbt6ykSIMg7BxwRBChbwq2SyuqB7J5uyuXbHelExY/yX7UagtJxsK0IJ0FhNYs2oemXrtJQAIAQ0oQ== + dependencies: + "@poppinss/utils" "^3.1.4" + dotenv "^10.0.0" + validator "^13.6.0" + +"@adonisjs/events@^7.1.2": + version "7.1.2" + resolved "https://registry.yarnpkg.com/@adonisjs/events/-/events-7.1.2.tgz#902e439362d2869b7fe8d5d0a7672af71dc519c7" + integrity sha512-S5ZhI/gFb6Ci0m6n8RRv0Gs/MBhAoFDNYJ/vilVaxTi0a6keRkRBR7Y3IgBrwXQedJnlGe4OqMXA4ExQLK8HNQ== + dependencies: + emittery "^0.9.2" + +"@adonisjs/fold@^8.1.5": + version "8.1.5" + resolved "https://registry.yarnpkg.com/@adonisjs/fold/-/fold-8.1.5.tgz#425f5f2d6fac2b1143c4bcf148bf8e91a0295099" + integrity sha512-eqbq0zQd0TV7AoN/RP4vUUg442BP4GSc0U1CsNYGKJ3YBhxfgThVLDlgn1K4/nadC1lv4/Gf3ZSnLj1Rx5OzFA== + dependencies: + "@poppinss/utils" "^3.1.4" + +"@adonisjs/hash@^7.0.8": + version "7.0.8" + resolved "https://registry.yarnpkg.com/@adonisjs/hash/-/hash-7.0.8.tgz#6f01a5becca92da9495ec34b36412fb66edfa560" + integrity sha512-nLgUUQw4SZ9petDsdAgywgYDR0VEdlZTh59MwW12wEdaLYvt7cKeabWh588JQQb0M7jmUmzVcUkYktpMBfdmdQ== + dependencies: + "@phc/format" "^1.0.0" + "@poppinss/manager" "^4.0.4" + "@poppinss/utils" "^3.1.4" + +"@adonisjs/http-server@^5.5.2": + version "5.5.4" + resolved "https://registry.yarnpkg.com/@adonisjs/http-server/-/http-server-5.5.4.tgz#8d04373b4a31edcea7cad4028c3c15ae619b5537" + integrity sha512-SQbDpQEbG+SZ3pnjNRcCVVBH9T4Zyi+ydoLG6oBIJfAYzzkOX7mZFyj9HOTkgJR361Jxb7l8+kkIDnTJ1v6O+Q== + dependencies: + "@poppinss/matchit" "^3.1.2" + "@poppinss/utils" "^3.1.5" + accepts "^1.3.7" + co-compose "^6.1.4" + content-disposition "^0.5.3" + cookie "^0.4.1" + destroy "^1.0.4" + encodeurl "^1.0.2" + etag "^1.8.1" + fresh "^0.5.2" + haye "^3.0.0" + macroable "^5.1.4" + mime-types "^2.1.31" + ms "^2.1.3" + on-finished "^2.3.0" + pluralize "^8.0.0" + proxy-addr "^2.0.7" + qs "^6.10.1" + set-cookie-parser "^2.4.8" + tmp-cache "^1.1.0" + type-is "^1.6.18" + vary "^1.1.2" + +"@adonisjs/ioc-transformer@^2.3.0": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@adonisjs/ioc-transformer/-/ioc-transformer-2.3.1.tgz#9157cb03d0202a36b9a75712462b195171c4ce8d" + integrity sha512-/pbMSy2gmswWvvSdy4EbLHzr9Oa8gsIlM01n8J8xbO3QW3z1JRuZy2SbmD06OveW4b5dm/Hn0hC8GK2cY+nRgg== + +"@adonisjs/logger@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@adonisjs/logger/-/logger-4.1.0.tgz#0249ea8938e2200663a4de847923e6c2e1dbe81e" + integrity sha512-Baxx9FiI/rRQ2U58TpTYf5psG345YzTVs0Fh2lHP1f33wekjYLHFbHSjo/1vJDIBEAR0/4udO2BbBNG9jKa10Q== + dependencies: + "@poppinss/utils" "^3.1.5" + "@types/pino" "^6.3.9" + abstract-logging "^2.0.1" + pino "^6.13.0" + +"@adonisjs/lucid@^15.0.1": + version "15.0.3" + resolved "https://registry.yarnpkg.com/@adonisjs/lucid/-/lucid-15.0.3.tgz#b7549070423e2924a8db102156903e7b7c3774ec" + integrity sha512-UbzmyV96X227AOwyXjJNs9/DCRHUl8jCbEJzQwRcQrfFWI0HaIH9crJYKzi1djoQOxXjM+qcTdrd48HDwnb9Vw== + dependencies: + "@poppinss/hooks" "^3.0.4" + "@poppinss/utils" "^3.1.3" + "@types/faker" "^5.5.6" + faker "^5.5.3" + fast-deep-equal "^3.1.3" + igniculus "^1.5.0" + knex "^0.95.6" + knex-dynamic-connection "^2.1.1" + luxon "^1.27.0" + macroable "^5.1.3" + pretty-hrtime "^1.0.3" + qs "^6.10.1" + slash "^3.0.0" + +"@adonisjs/mail@^7.2.1": + version "7.2.3" + resolved "https://registry.yarnpkg.com/@adonisjs/mail/-/mail-7.2.3.tgz#d3e1f0fe6cff66d50ca0e4200c815c8dfd4cff24" + integrity sha512-JFpSuBtLIVTANbLdOuPqYlViOAU1PFqgG11uSCFjTj/V5qqGaKpFsH6AM1AVnupFIUoYChy5eMcrWOX3+BWXcQ== + dependencies: + "@poppinss/colors" "^2.1.5" + "@poppinss/manager" "^4.0.4" + "@poppinss/utils" "^3.1.5" + fastq "^1.11.1" + get-stream "^6.0.1" + got "^11.8.2" + ical-generator "^3.0.0-develop.4" + multi-part "^3.0.0" + nodemailer "^6.6.3" + +"@adonisjs/profiler@^6.0.6": + version "6.0.6" + resolved "https://registry.yarnpkg.com/@adonisjs/profiler/-/profiler-6.0.6.tgz#8a7b67404f8850ca98745064565aeb264e3bee24" + integrity sha512-8jW1awNazVTc5cj8cihBqEHX3zbvkBQyPHyCgNqkPJez3jQ+gr4YqvUdLm4rto+eJrORna6P9H8FM/g/u0Hvcw== + dependencies: + "@poppinss/utils" "^3.1.4" + jest-worker "^27.0.6" + +"@adonisjs/redis@^7.0.6": + version "7.0.8" + resolved "https://registry.yarnpkg.com/@adonisjs/redis/-/redis-7.0.8.tgz#25223b61c253131394ab94aaf29ce12a17b338d9" + integrity sha512-5tADsSTAJt3uCxg942/0jjZQkNYkbFNMYfvPczsQ2NX0ixx/CmjHje+RO6o/Uhm7YBcvClMIvJUoFHqa8nnv8w== + dependencies: + "@poppinss/utils" "^3.1.5" + "@types/ioredis" "^4.26.6" + ioredis "^4.27.6" + +"@adonisjs/repl@^3.1.4": + version "3.1.5" + resolved "https://registry.yarnpkg.com/@adonisjs/repl/-/repl-3.1.5.tgz#27eb99f8e5dcc2250435e90b964f12b8d633d8b8" + integrity sha512-rFc2dMzkEtYwQMVfVAEJiZcOHl0sn1s8vZ9LN6+ZpkT5rUyvRjHeY4MxrzWXcde6WSAwYlxlSpO167RwXDNCsw== + dependencies: + "@poppinss/colors" "^2.1.5" + node-repl-await "^0.1.2" + parse-imports "0.0.5" + string-width "^4.2.2" + +"@adonisjs/require-ts@^2.0.6": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@adonisjs/require-ts/-/require-ts-2.0.7.tgz#11aaafd4e67fed1554f6f0991539368f208f78fa" + integrity sha512-B0c6kN5syDBLBW1+84BW57mTAkSFke6YbgbgfLMO3I9X38SlOFxujJLty/JNK4Oa/J7FLaL+mioM0XGJsRliSQ== + dependencies: + "@poppinss/utils" "^3.1.4" + debug "^4.3.2" + find-cache-dir "^3.3.1" + fs-extra "^10.0.0" + normalize-path "^3.0.0" + pirates "^4.0.1" + rev-hash "^3.0.0" + source-map-support "^0.5.19" + +"@adonisjs/session@^6.0.6": + version "6.1.1" + resolved "https://registry.yarnpkg.com/@adonisjs/session/-/session-6.1.1.tgz#f3ffed30ecb82168b0660d316c46ffb053566114" + integrity sha512-TClg2O6wUnsoI4DhCS7F3mCRqmWO8AEh1kSrnKNl6ZqnxesLgU+30lsmMGTPfohSK/j2eU27+LpzuLFCz9Rf7Q== + dependencies: + "@poppinss/utils" "^3.1.5" + fs-extra "^10.0.0" + +"@adonisjs/sink@^5.1.5": + version "5.1.5" + resolved "https://registry.yarnpkg.com/@adonisjs/sink/-/sink-5.1.5.tgz#8a238052d66f06dd9894516eb7270797c6489b2b" + integrity sha512-f/p9+OFluCaYXUrUAhCz20KPmOHub9CxNybSyzFSl34pPb0kIJbTcm5wjAz3nomAi5XZ5ZKMPpTYywc1KggGVA== + dependencies: + "@poppinss/cliui" "^2.2.4" + "@poppinss/prompts" "^1.2.2" + "@poppinss/utils" "^3.1.3" + cp-file "^9.0.0" + fs-extra "^10.0.0" + marked "^2.0.7" + marked-terminal "^4.1.1" + mrm-core "^6.0.0" + mustache "^4.2.0" + open "^8.2.0" + +"@adonisjs/validator@^11.0.4": + version "11.0.4" + resolved "https://registry.yarnpkg.com/@adonisjs/validator/-/validator-11.0.4.tgz#0b9017163f5c958f852efc550af279e0e7f1913f" + integrity sha512-8OuiZKa5YE1LvEEI592tbvc5CQUlwC1ixbTZpnrZ9QfcwJekDe+gD3Ap+XPPC5yfXhBnf85e9GWi+UFRPLSEzQ== + dependencies: + "@poppinss/utils" "^3.1.5" + "@types/luxon" "^1.27.1" + "@types/validator" "^13.6.3" + luxon "^2.0.1" + normalize-url "^6.1.0" + tmp-cache "^1.1.0" + validator "^13.6.0" + +"@adonisjs/view@^6.0.3": + version "6.0.8" + resolved "https://registry.yarnpkg.com/@adonisjs/view/-/view-6.0.8.tgz#22cc403975d1dc8d617e13796ec9c1bb134e8ac2" + integrity sha512-HJSPGeYgeuYKJ9dv+bVTF9jkphRZtaDE5bJXFuNdPCnJc6GS58OBugoS/DBlGpYoPe+uImPdHlEvWaETnttSuQ== + dependencies: + edge-error "^2.0.5" + edge-supercharged "^3.1.1" + edge.js "^5.3.1" + +"@arr/every@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@arr/every/-/every-1.0.1.tgz#22fe1f8e6355beca6c7c7bde965eb15cf994387b" + integrity sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg== + +"@babel/runtime@^7.14.6", "@babel/runtime@^7.8.7": + version "7.15.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.3.tgz#2e1c2880ca118e5b2f9988322bd8a7656a32502b" + integrity sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA== + dependencies: + regenerator-runtime "^0.13.4" + +"@hapi/bourne@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-2.0.0.tgz#5bb2193eb685c0007540ca61d166d4e1edaf918d" + integrity sha512-WEezM1FWztfbzqIUbsDzFRVMxSoLy3HugVcux6KDDtTqzPsLE8NDRHfXvev66aH1i2oOKKar3/XDjbvh/OUBdg== + +"@kdf/salt@^2.0.1": + version "2.0.1" + 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.5" + resolved "https://registry.yarnpkg.com/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.5.tgz#2a0b32fcb416fb3f2250fd24cb2a81421a4f5950" + integrity sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA== + 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" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== + dependencies: + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" + +"@nodelib/fs.stat@^1.1.2": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== + +"@phc/format@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@phc/format/-/format-1.0.0.tgz#b5627003b3216dc4362125b13f48a4daa76680e4" + integrity sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ== + +"@poppinss/chokidar-ts@^3.3.0": + version "3.3.1" + resolved "https://registry.yarnpkg.com/@poppinss/chokidar-ts/-/chokidar-ts-3.3.1.tgz#8d68c7043c1bae21b7028cc4c129c0da55292000" + integrity sha512-S52E849XDUMcam+cE94yp9QWEl9ZTiytGJWM5XtWjTCjfyijn0KoG6DYnntgYPmdSeXZCdXt2DaGrMZM9I6llw== + dependencies: + builtin-modules "^3.2.0" + chokidar "^3.5.2" + debug "^4.3.1" + emittery "^0.9.2" + fs-extra "^10.0.0" + mem "^8.1.1" + picomatch "^2.3.0" + +"@poppinss/cliui@^2.2.4", "@poppinss/cliui@^2.2.5": + version "2.2.5" + resolved "https://registry.yarnpkg.com/@poppinss/cliui/-/cliui-2.2.5.tgz#2955057fc2449a1af0692f9d7ef1df2d11713a89" + integrity sha512-qF5Bqa9h0q74d1cQTNVx6xFgUulKzOBn8nE8d9HWzkjEOM+h1h0NI0m5Nl0la3kqANKymBOHM8e0IrMV5w/U+w== + dependencies: + "@poppinss/colors" "^2.1.5" + cli-boxes "^3.0.0" + cli-table3 "^0.6.0" + color-support "^1.1.3" + log-update "^4.0.0" + pretty-hrtime "^1.0.3" + string-width "^4.2.2" + +"@poppinss/co-body@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@poppinss/co-body/-/co-body-1.1.3.tgz#454e8cdc29196e8eead303c63b0b7207815fff18" + integrity sha512-Qhm2sGNTSRpKAlqt+ofZwWMzMI8QJXd36DN6F1Ska2B0Lt1Ev3qi+kNHym1GcIJ2NG/P/LS7i2fIbKZtGXnZ9w== + dependencies: + "@poppinss/utils" "^3.1.3" + inflation "^2.0.0" + qs "^6.10.1" + raw-body "^2.4.1" + type-is "^1.6.18" + +"@poppinss/colors@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@poppinss/colors/-/colors-2.1.5.tgz#3a8abb9c8e8828959ead55ee39b82a2c35e671ee" + integrity sha512-C6XChd0fssMe4aXqRrAAGrIKlOySEemKV422JYfBZaS7/qCfvQNIw67b0N03kbrgSrGvEgMUlaJVULlukuZM+g== + dependencies: + color-support "^1.1.3" + kleur "^4.1.4" + +"@poppinss/hooks@^3.0.4": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@poppinss/hooks/-/hooks-3.0.5.tgz#ae491fc11500bc9cb7e24f6b637704e7d9868505" + integrity sha512-kazQstmIPq4n7/qjk5ms9SEiXtLEJ+EMZXxyXTupTVq7URFIUeULgXFv/F3vheLPCSzfByu/L2iO7M457RjszQ== + +"@poppinss/inspect@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@poppinss/inspect/-/inspect-1.0.1.tgz#b03df9c1204ee72e3b9dbd5c34029c39475fb21d" + integrity sha512-kLeEaBSGhlleyYvKc7c9s3uE6xv7cwyulE0EgHf4jU/CL96h0yC4mkdw1wvC1l1PYYQozCGy46FwMBAAMOobCA== + +"@poppinss/manager@^4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@poppinss/manager/-/manager-4.0.4.tgz#7e71aedbc8e3a32cc5eb53adc78cf861240d0082" + integrity sha512-z9SFv+wKH+aZ5XLZXfkBsEk3h4scFf1imBtGFvlhBklzpplmvY70nSlHTPRC16h1VwjyuWaGuarN+vvQpQoFpA== + +"@poppinss/matchit@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@poppinss/matchit/-/matchit-3.1.2.tgz#674a477f6cc58f760b16b52d20673f886615cc43" + integrity sha512-Bx+jY+vmdQFmwYiHliiPjr+oVBaGnh79B1h1FSAm3jME1QylLFt8PPYC0ymO8Q5PzJj/KuE3jeTnZhRHOWqq8g== + dependencies: + "@arr/every" "^1.0.0" + +"@poppinss/multiparty@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@poppinss/multiparty/-/multiparty-1.0.2.tgz#40d7b71d23a6ae6f1ee8b9c0f272dc31a29c6920" + integrity sha512-SQuw3FmvAr/3TnAx8L/S7CKO4pKKVozscu9DZ/GXFCNd7KCKvajaDl0RCna0CgABJQBBcdKHxx3w1yH0NedzDA== + dependencies: + http-errors "~1.8.0" + safe-buffer "5.2.1" + uid-safe "2.1.5" + +"@poppinss/oauth-client@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@poppinss/oauth-client/-/oauth-client-2.0.4.tgz#26795088b472d580127074b8ec28d868d7feb352" + integrity sha512-bl8ITdz0FG1ydCAmXVJxrlEtUm42JZK4yj6jA7CVsVhKhzf8OwG3XY8kVETmh/APp8kH8vSM6u5l+lgPKpdlIA== + dependencies: + "@types/luxon" "^1.26.5" + got "^11.8.2" + luxon "^1.27.0" + +"@poppinss/prompts@^1.2.2", "@poppinss/prompts@^1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@poppinss/prompts/-/prompts-1.2.3.tgz#c9e7461837a99919d3ccb015aa33afe899a92f0c" + integrity sha512-/jS4KYZwnu6gqojMNT3p0UPLnYI1s7PYW+0xVEf+syXYDuCEE4UWuqLvVcqvuoBkLwAwhwD/hyVPr8NtoCoUYQ== + dependencies: + "@poppinss/colors" "^2.1.5" + enquirer "^2.3.6" + +"@poppinss/utils@^3.1.3", "@poppinss/utils@^3.1.4", "@poppinss/utils@^3.1.5": + version "3.2.0" + resolved "https://registry.yarnpkg.com/@poppinss/utils/-/utils-3.2.0.tgz#cb07d536565e77b019d868f7d2cfc55600822337" + integrity sha512-gnqlrxE4zMvqW+LpviyCWCg4+RShCYCFyBdVTyg9ZZEEgPBV9bEY+YB5r/2klFrKx30k9nfClHVI2n8ZKmXgsw== + dependencies: + "@types/bytes" "^3.1.1" + "@types/he" "^1.1.2" + buffer-alloc "^1.2.0" + bytes "^3.1.0" + change-case "^4.1.2" + cuid "^2.1.8" + fs-readdir-recursive "^1.1.0" + he "^1.2.0" + kind-of "^6.0.3" + lodash "^4.17.21" + ms "^2.1.3" + pluralize "^8.0.0" + require-all "^3.0.0" + resolve-from "^5.0.0" + slugify "^1.6.0" + truncatise "0.0.8" + +"@sindresorhus/is@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-4.0.1.tgz#d26729db850fa327b7cacc5522252194404226f5" + integrity sha512-Qm9hBEBu18wt1PO2flE7LPb30BHMQt1eQgbV76YntdNk73XZGpn3izvGTYxbGgzXKgbCjiia0uxTd3aTNQrY/g== + +"@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== + dependencies: + defer-to-connect "^2.0.0" + +"@tokenizer/token@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" + integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== + +"@types/bytes@^3.1.1": + version "3.1.1" + resolved "https://registry.yarnpkg.com/@types/bytes/-/bytes-3.1.1.tgz#67a876422e660dc4c10a27f3e5bcfbd5455f01d0" + integrity sha512-lOGyCnw+2JVPKU3wIV0srU0NyALwTBJlVSx5DfMQOFuuohA8y9S8orImpuIQikZ0uIQ8gehrRjxgQC1rLRi11w== + +"@types/cacheable-request@^6.0.1": + 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== + dependencies: + "@types/http-cache-semantics" "*" + "@types/keyv" "*" + "@types/node" "*" + "@types/responselike" "*" + +"@types/faker@^5.5.6": + version "5.5.8" + resolved "https://registry.yarnpkg.com/@types/faker/-/faker-5.5.8.tgz#6649adfdfdbb0acf95361fc48f2d0ca6e88bd1cf" + integrity sha512-bsl0rYsaZVHlZkynL5O04q6YXDmVjcid6MbOHWqvtE2WWs/EKhp0qchDDhVWlWyQXUffX1G83X9LnMxRl8S/Mw== + +"@types/glob@^7.1.1": + version "7.1.4" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.4.tgz#ea59e21d2ee5c517914cb4bc8e4153b99e566672" + integrity sha512-w+LsMxKyYQm347Otw+IfBXOv9UWVjpHpCDdbBMt8Kz/xbvCYNjP+0qPh91Km3iKfSRLBB0P7fAMf0KHrPu+MyA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/he@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@types/he/-/he-1.1.2.tgz#0c8b275f36d2b8b651104638e4d45693349c3953" + integrity sha512-kSJPcLO1x+oolc0R89pUl2kozldQ/fVQ1C1p5mp8fPoLdF/ZcBvckaTC2M8xXh3GYendXvCpy5m/a2eSbfgNgw== + +"@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== + +"@types/ioredis@^4.26.6": + version "4.26.7" + resolved "https://registry.yarnpkg.com/@types/ioredis/-/ioredis-4.26.7.tgz#8c8174b9db38f71f0e372174c66a031a2ca7d9cf" + integrity sha512-TOGRR+e1to00CihjgPNygD7+G7ruVnMi62YdIvGUBRfj11k/aWq+Fv5Ea8St0Oy56NngTBfA8GvLn1uvHvhX6Q== + dependencies: + "@types/node" "*" + +"@types/keyv@*": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.2.tgz#5d97bb65526c20b6e0845f6b0d2ade4f28604ee5" + integrity sha512-/FvAK2p4jQOaJ6CGDHJTqZcUtbZe820qIeTg7o0Shg7drB4JHeL+V/dhSaly7NXx6u8eSee+r7coT+yuJEvDLg== + dependencies: + "@types/node" "*" + +"@types/luxon@^1.26.5", "@types/luxon@^1.27.1": + version "1.27.1" + resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-1.27.1.tgz#aceeb2d5be8fccf541237e184e37ecff5faa9096" + integrity sha512-cPiXpOvPFDr2edMnOXlz3UBDApwUfR+cpizvxCy0n3vp9bz/qe8BWzHPIEFcy+ogUOyjKuCISgyq77ELZPmkkg== + +"@types/minimatch@*": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + +"@types/node@*": + version "16.6.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.6.1.tgz#aee62c7b966f55fc66c7b6dfa1d58db2a616da61" + integrity sha512-Sr7BhXEAer9xyGuCN3Ek9eg9xPviCF2gfu9kTfuU2HkTVAMYSDeX40fvpmo72n5nansg3nsBjuQBrsS28r+NUw== + +"@types/pino-pretty@*": + version "4.7.1" + resolved "https://registry.yarnpkg.com/@types/pino-pretty/-/pino-pretty-4.7.1.tgz#2ce3f56f3cf4f9632374419d616ae2e6c933b935" + integrity sha512-l1ntNXdpVWsnPYUk5HyO5Lxfr38zLCgxVfEn/9Zhhm+nGF04/BiIou/m8XPwvoVZLV+livUo79VdHXMJPfUYxA== + dependencies: + "@types/pino" "*" + +"@types/pino-std-serializers@*": + version "2.4.1" + resolved "https://registry.yarnpkg.com/@types/pino-std-serializers/-/pino-std-serializers-2.4.1.tgz#f8bd52a209c8b3c97d1533b1ba27f57c816382bf" + integrity sha512-17XcksO47M24IVTVKPeAByWUd3Oez7EbIjXpSbzMPhXVzgjGtrOa49gKBwxH9hb8dKv58OelsWQ+A1G1l9S3wQ== + dependencies: + "@types/node" "*" + +"@types/pino@*", "@types/pino@^6.3.9": + version "6.3.11" + resolved "https://registry.yarnpkg.com/@types/pino/-/pino-6.3.11.tgz#83652799e76b3ad692aaf68f6fbf994e83af5db2" + integrity sha512-S7+fLONqSpHeW9d7TApUqO6VN47KYgOXhCNKwGBVLHObq8HhaAYlVqUNdfnvoXjCMiwE5xcPm/5R2ZUh8bgaXQ== + dependencies: + "@types/node" "*" + "@types/pino-pretty" "*" + "@types/pino-std-serializers" "*" + sonic-boom "^2.1.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== + dependencies: + "@types/node" "*" + +"@types/stack-trace@0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/stack-trace/-/stack-trace-0.0.29.tgz#eb7a7c60098edb35630ed900742a5ecb20cfcb4d" + integrity sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g== + +"@types/validator@^13.6.3": + version "13.6.3" + resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.6.3.tgz#31ca2e997bf13a0fffca30a25747d5b9f7dbb7de" + integrity sha512-fWG42pMJOL4jKsDDZZREnXLjc3UE0R8LOJfARWYg6U966rxDT7TYejYzLnUF5cvSObGg34nd0+H2wHHU5Omdfw== + +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== + +abstract-logging@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/abstract-logging/-/abstract-logging-2.0.1.tgz#6b0c371df212db7129b57d2e7fcf282b8bf1c839" + integrity sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA== + +accepts@^1.3.7: + version "1.3.7" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" + integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== + dependencies: + mime-types "~2.1.24" + negotiator "0.6.2" + +acorn-class-fields@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/acorn-class-fields/-/acorn-class-fields-1.0.0.tgz#b413793e6b3ddfcd17a02f9c7a850f4bbfdc1c7a" + integrity sha512-l+1FokF34AeCXGBHkrXFmml9nOIRI+2yBnBpO5MaVAaTIJ96irWLtcCxX+7hAp6USHFCe+iyyBB4ZhxV807wmA== + dependencies: + acorn-private-class-elements "^1.0.0" + +acorn-private-class-elements@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/acorn-private-class-elements/-/acorn-private-class-elements-1.0.0.tgz#c5805bf8a46cd065dc9b3513bfebb504c88cd706" + integrity sha512-zYNcZtxKgVCg1brS39BEou86mIao1EV7eeREG+6WMwKbuYTeivRRs6S2XdWnboRde6G9wKh2w+WBydEyJsJ6mg== + +acorn-private-methods@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/acorn-private-methods/-/acorn-private-methods-1.0.0.tgz#b48f4c03a151cc8262f6f5ca8f57f7c5ac245184" + integrity sha512-Jou2L3nfwfPpFdmmHObI3yUpVPM1bPohTUAZCyVDw5Efyn9LSS6E36neRLCRfIr8QjskAfdxRdABOrvP4c/gwQ== + dependencies: + acorn-private-class-elements "^1.0.0" + +acorn-static-class-features@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/acorn-static-class-features/-/acorn-static-class-features-1.0.0.tgz#ab9d862d5b184007ed509f5a8d031b837694ace2" + integrity sha512-XZJECjbmMOKvMHiNzbiPXuXpLAJfN3dAKtfIYbk1eHiWdsutlek+gS7ND4B8yJ3oqvHo1NxfafnezVmq7NXK0A== + dependencies: + acorn-private-class-elements "^1.0.0" + +acorn-walk@^8.0.2: + version "8.1.1" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.1.1.tgz#3ddab7f84e4a7e2313f6c414c5b7dac85f4e3ebc" + integrity sha512-FbJdceMlPHEAWJOILDk1fXD8lnTlEIWFkqtfk+MvmL5q/qlHfN7GEHcsFZWt/Tea9jRNPWUZG4G976nqAAmU9w== + +acorn@^8.0.5, acorn@^8.4.1: + version "8.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" + integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== + +adonis-preset-ts@^2.1.0: + version "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" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-escapes@^4.3.0, ansi-escapes@^4.3.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== + dependencies: + 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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.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== + dependencies: + color-convert "^2.0.1" + +ansicolors@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" + integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= + +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== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +argon2@^0.28.2: + version "0.28.2" + resolved "https://registry.yarnpkg.com/argon2/-/argon2-0.28.2.tgz#b583e4ef5b052a83bfe146752844b9fa526dba29" + integrity sha512-8oRk3kPlL0lLletENzhpbF9zoZJqvIHwTkjBseMrg1uD4gBMqhqnjJz1z3lEtwT0oqQAEkEwsEpsjaQBBRHcWw== + dependencies: + "@mapbox/node-pre-gyp" "^1.0.1" + "@phc/format" "^1.0.0" + node-addon-api "^3.0.2" + opencollective-postinstall "^2.0.3" + +args@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/args/-/args-5.0.1.tgz#4bf298df90a4799a09521362c579278cc2fdd761" + integrity sha512-1kqmFCFsPffavQFGt8OxJdIcETti99kySRUPMpOhaGjL6mRJn8HFU1OxKY5bMqfZKUwTQc1mZkAjmGYaVOHFtQ== + dependencies: + camelcase "5.0.0" + chalk "2.4.2" + leven "2.1.0" + mri "1.1.4" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-union@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +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== + +astring@^1.7.5: + version "1.7.5" + resolved "https://registry.yarnpkg.com/astring/-/astring-1.7.5.tgz#a7d47fceaf32b052d33a3d07c511efeec67447ca" + integrity sha512-lobf6RWXb8c4uZ7Mdq0U12efYmpD1UFnyOWVJPTa3ukqZrMopav+2hdNu0hgBF0JIBFK9QgrBDfwYvh3DFJDAA== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +atomic-sleep@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" + integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== + +axios@^0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== + dependencies: + follow-redirects "^1.10.0" + +babel-code-frame@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" + integrity sha1-Y/1D99weO7fONZR9uP42mj9Yx0s= + dependencies: + chalk "^1.1.3" + esutils "^2.0.2" + js-tokens "^3.0.2" + +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== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +bignumber.js@9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.0.tgz#805880f84a329b5eac6e7cb6f8274b6d82bdf075" + integrity sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A== + +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== + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^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== + dependencies: + fill-range "^7.0.1" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +builtin-modules@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= + +bytes@3.1.0, bytes@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +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-request@^7.0.1: + version "7.0.2" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-7.0.2.tgz#ea0d0b889364a25854757301ca12b2da77f91d27" + 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" + +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== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-me-maybe/-/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +camel-case@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camel-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + +camelcase@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" + integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== + +capital-case@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/capital-case/-/capital-case-1.0.4.tgz#9d130292353c9249f6b00fa5852bee38a717e669" + integrity sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case-first "^2.0.2" + +cardinal@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505" + integrity sha1-fMEFXYItISlU0HsIXeolHMe8VQU= + dependencies: + ansicolors "~0.3.2" + redeyed "~2.1.0" + +chalk@2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +change-case@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" + integrity sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A== + dependencies: + camel-case "^4.1.2" + capital-case "^1.0.4" + constant-case "^3.0.4" + dot-case "^3.0.4" + header-case "^2.0.4" + no-case "^3.0.4" + param-case "^3.0.4" + pascal-case "^3.1.2" + path-case "^3.0.4" + sentence-case "^3.0.4" + snake-case "^3.0.4" + tslib "^2.0.3" + +cheerio-select@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/cheerio-select/-/cheerio-select-1.5.0.tgz#faf3daeb31b17c5e1a9dabcee288aaf8aafa5823" + integrity sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg== + dependencies: + css-select "^4.1.3" + css-what "^5.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + domutils "^2.7.0" + +cheerio@1.0.0-rc.10, cheerio@^1.0.0-rc.3: + version "1.0.0-rc.10" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.10.tgz#2ba3dcdfcc26e7956fc1f440e61d51c643379f3e" + integrity sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw== + dependencies: + cheerio-select "^1.5.0" + dom-serializer "^1.3.2" + domhandler "^4.2.0" + htmlparser2 "^6.1.0" + parse5 "^6.0.1" + parse5-htmlparser2-tree-adapter "^6.0.1" + tslib "^2.2.0" + +chokidar@^3.0.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== + 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" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +clean-css@^4.2.1: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== + dependencies: + source-map "~0.6.0" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" + integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== + +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== + dependencies: + restore-cursor "^3.1.0" + +cli-table3@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.0.tgz#b7b1bc65ca8e7b5cef9124e13dc2b21e2ce4faee" + integrity sha512-gnB85c3MGC7Nm9I/FkiasNBOKjOiO1RNuXXarQms37q4QMpWdlbBgD/VnOStA2faG1dpXMv31RFApjX1/QdgWQ== + dependencies: + object-assign "^4.1.0" + string-width "^4.2.0" + optionalDependencies: + colors "^1.1.2" + +cli-table@^0.3.1: + version "0.3.6" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.6.tgz#e9d6aa859c7fe636981fd3787378c2a20bce92fc" + integrity sha512-ZkNZbnZjKERTY5NwC2SeMeLeifSPq/pubeRoTpdr3WchLlnZg6hEgvHkK5zL7KNFdd9PmHN8lxrENUwI3cE8vQ== + dependencies: + colors "1.0.3" + +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== + dependencies: + 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= + dependencies: + mimic-response "^1.0.0" + +cluster-key-slot@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d" + integrity sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw== + +co-compose@^6.1.4: + version "6.1.4" + resolved "https://registry.yarnpkg.com/co-compose/-/co-compose-6.1.4.tgz#4e607a29fdda0428c599683b4d65f9c8f9d91723" + integrity sha512-6CoVwiUNKbCREAwWZdySCXAv0qqYw17L/xW+HOuH9NtBgBbGYsviVaekxMh2Lr5KHS36TyHRbNo3jh3GLRdffg== + +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= + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.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== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-support@^1.1.3: + 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== + +colorette@1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== + +colors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + integrity sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs= + +colors@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +commander@^2.19.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commander@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + +commander@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +comment-json@^2.2.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/comment-json/-/comment-json-2.4.2.tgz#2111c065864338ad8d98ae01eecde9e02cd2f549" + integrity sha512-T+iXox779qsqneMYx/x5BZyz4xjCeQRmuNVzz8tko7qZUs3MlzpA3RAs+O1XsgcKToNBMIvfVzafGOeiU7RggA== + dependencies: + core-util-is "^1.0.2" + esprima "^4.0.1" + has-own-prop "^2.0.0" + repeat-string "^1.6.1" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + 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== + +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= + +config-chain@^1.1.12: + version "1.1.13" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4" + integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +constant-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" + integrity sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case "^2.0.2" + +content-disposition@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +cookie@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" + integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-util-is@^1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cp-file@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-7.0.0.tgz#b9454cfd07fe3b974ab9ea0e5f29655791a9b8cd" + integrity sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw== + dependencies: + graceful-fs "^4.1.2" + make-dir "^3.0.0" + nested-error-stacks "^2.0.0" + p-event "^4.1.0" + +cp-file@^9.0.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/cp-file/-/cp-file-9.1.0.tgz#e98e30db72d57d47b5b1d444deb70d05e5684921" + integrity sha512-3scnzFj/94eb7y4wyXRWwvzLFaQp87yyfTnChIjlfYrVqp5lVO3E2hIJMeQIltUT0K2ZAB3An1qXcBmwGyvuwA== + dependencies: + graceful-fs "^4.1.2" + make-dir "^3.0.0" + nested-error-stacks "^2.0.0" + p-event "^4.1.0" + +cpy@^8.1.2: + version "8.1.2" + resolved "https://registry.yarnpkg.com/cpy/-/cpy-8.1.2.tgz#e339ea54797ad23f8e3919a5cffd37bfc3f25935" + integrity sha512-dmC4mUesv0OYH2kNFEidtf/skUwv4zePmGeepjyyJ0qTo5+8KhA1o99oIAwVVLzQMAeDJml74d6wPPKb6EZUTg== + dependencies: + arrify "^2.0.1" + cp-file "^7.0.0" + globby "^9.2.0" + has-glob "^1.0.0" + junk "^3.1.0" + nested-error-stacks "^2.1.0" + p-all "^2.1.0" + p-filter "^2.1.0" + p-map "^3.0.0" + +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== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-select@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" + integrity sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA== + dependencies: + boolbase "^1.0.0" + css-what "^5.0.0" + domhandler "^4.2.0" + domutils "^2.6.0" + nth-check "^2.0.0" + +css-what@^5.0.0, css-what@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-5.0.1.tgz#3efa820131f4669a8ac2408f9c32e7c7de9f4cad" + integrity sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg== + +cuid@^2.1.8: + version "2.1.8" + resolved "https://registry.yarnpkg.com/cuid/-/cuid-2.1.8.tgz#cbb88f954171e0d5747606c0139fb65c5101eac0" + integrity sha512-xiEMER6E7TlTPnDxrM4eRiC6TRgjNX9xzEZ5U/Se2YJKr7Mq4pJn/2XEHjl3STcSh96GmkHPcBXLES8M29wyyg== + +dateformat@^4.5.1: + version "4.5.1" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.5.1.tgz#c20e7a9ca77d147906b6dc2261a8be0a5bd2173c" + integrity sha512-OD0TZ+B7yP7ZgpJf5K2DIbj3FZvFvxgFUuaqA/V5zTjAtAAXZ1E8bktHxmAGs4x5b7PflqA9LeQ84Og7wYtF7Q== + +debug@2.6.9, debug@^2.2.0, debug@^2.3.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@4.3.2, debug@^4.3.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== + dependencies: + ms "2.1.2" + +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@^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== + dependencies: + mimic-response "^3.1.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== + +defer-to-connect@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-2.0.1.tgz#8016bdb4143e4632b77a3449c6236277de520587" + integrity sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg== + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +denque@^1.1.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.0.tgz#773de0686ff2d8ec2ff92914316a47b73b1c73de" + integrity sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +destroy@^1.0.4, destroy@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" + integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= + +detect-indent@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.1.0.tgz#592485ebbbf6b3b1ab2be175c8393d04ca0d57e6" + integrity sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA== + +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= + +detect-node@2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.0.4.tgz#014ee8f8f669c5c58023da64b8179c083a28c46c" + integrity sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw== + +dir-glob@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-2.2.2.tgz#fa09f0694153c8918b18ba0deafae94769fc50c4" + integrity sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw== + dependencies: + path-type "^3.0.0" + +dom-serializer@^1.0.1, dom-serializer@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" + integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + +domhandler@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a" + integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA== + dependencies: + domelementtype "^2.0.1" + +domhandler@^4.0.0, domhandler@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.0.tgz#f9768a5f034be60a89a27c2e4d0f74eba0d8b059" + integrity sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.0.0, domutils@^2.5.2, domutils@^2.6.0, domutils@^2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.7.0.tgz#8ebaf0c41ebafcf55b0b72ec31c56323712c5442" + integrity sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + +edge-error@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/edge-error/-/edge-error-2.0.5.tgz#b439103d32a9f55da08891e85beec38036cc9142" + integrity sha512-1eJm10bEIS6u9N3dR5W0Eecnv4YVtUHralpJp0NdrVLo7H7DXx/s2DIjWoG/HsNkD2mymNVL37eZ+BgvBO5adQ== + +edge-lexer@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/edge-lexer/-/edge-lexer-4.0.7.tgz#ff89deed437b4e9a565206229d86029769c835a4" + integrity sha512-GtmxqiusZ8mySw8FstBMz2jSt5tOW8OYUf2HMmtHQXJG/R/EgZC1DAU/5m1VUyqSNjpisGyPRls+Qn/MScmZ6g== + dependencies: + edge-error "^2.0.5" + +edge-parser@^8.0.10: + version "8.0.10" + resolved "https://registry.yarnpkg.com/edge-parser/-/edge-parser-8.0.10.tgz#bc70fb2f90980ebde5e13559af8ba1f16e327b68" + integrity sha512-Othm9HRmf1uunaJO7I6g1g2EcGvEFvPsIHDosphLL2JydzP6H51QAr34KXDde7aJb+ZlXLHTti8+q+dGM7wFDQ== + dependencies: + acorn "^8.4.1" + astring "^1.7.5" + edge-error "^2.0.5" + edge-lexer "^4.0.7" + js-stringify "^1.0.2" + +edge-supercharged@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/edge-supercharged/-/edge-supercharged-3.1.1.tgz#dcf68c38cf26d11db4bceab44e06729daec1d39d" + integrity sha512-Pxgst3UeR+0PWuTIG2QHuFgFe73TMoVMphRsa/bOmIvOkQ87cD7+VxiS9ph2KbA4djJ2ChbdgtbNiIvju5yXEw== + dependencies: + "@poppinss/utils" "^3.1.3" + slash "^3.0.0" + +edge.js@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/edge.js/-/edge.js-5.3.1.tgz#d31ccca55c67b2f1a7af0a57286ae7054627a29e" + integrity sha512-TWiPo7Unaww1fYll/zMANVma08q2WoG8j7g9iK3fed5AevD0XuBl8N2L9+vCE7TKJmTm/zNP5z8bKbfGWOTRbw== + dependencies: + "@poppinss/inspect" "^1.0.1" + "@poppinss/utils" "^3.1.4" + edge-error "^2.0.5" + edge-lexer "^4.0.7" + edge-parser "^8.0.10" + js-stringify "^1.0.2" + macroable "^5.1.4" + stringify-attributes "^2.0.0" + +editorconfig@^0.15.3: + version "0.15.3" + resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" + integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g== + dependencies: + commander "^2.19.0" + lru-cache "^4.1.5" + semver "^5.6.0" + sigmund "^1.0.1" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= + +emittery@^0.9.2: + version "0.9.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.9.2.tgz#0a57c40773c6da380115c85bd67d381dd9e22f6f" + integrity sha512-sweWHu3j4dQm+NjLPu17pv+m5lCeK7g4Ov0NgfbRUEyzLc59DYDeRYXqlxEvuolaToI0VR3ThjFAghzl7Acjfw== + +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== + +encodeurl@^1.0.2, encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= + +end-of-stream@^1.1.0, end-of-stream@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enquirer@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +es-module-lexer@0.3.26: + version "0.3.26" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.3.26.tgz#7b507044e97d5b03b01d4392c74ffeb9c177a83b" + integrity sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA== + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +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@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/escape-goat/-/escape-goat-3.0.0.tgz#e8b5fb658553fe8a3c4959c316c6ebb8c842b19c" + integrity sha512-w3PwNZJwRxlp47QGzhuEBldEqVHHhh8/tIPcl6ecf2Bou99cdAt0knihBV0Ecc7CGxYduXVBDheH1K2oADRlvw== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg= + +escape-string-regexp@^1.0.2, 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= + +esm@^3.2.25: + version "3.2.25" + resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" + integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== + +esprima@^4.0.1, 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== + +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== + +etag@^1.8.1, etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +execa@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + 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" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +faker@^5.5.3: + version "5.5.3" + resolved "https://registry.yarnpkg.com/faker/-/faker-5.5.3.tgz#c57974ee484431b25205c2c8dc09fda861e51e0e" + integrity sha512-wLTv2a28wjUyWkbnX7u/ABZBkUkIF2fCd73V6P2oFqEGEktDfzWx4UxrSqtPRw0xPRAcjeAOIiJWqZm3pP4u3g== + +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@^2.2.6: + version "2.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-2.2.7.tgz#6953857c3afa475fff92ee6015d52da70a4cd39d" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== + dependencies: + "@mrmlnc/readdir-enhanced" "^2.2.1" + "@nodelib/fs.stat" "^1.1.2" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-redact@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.0.1.tgz#d6015b971e933d03529b01333ba7f22c29961e92" + integrity sha512-kYpn4Y/valC9MdrISg47tZOpYBNoTXKgT9GYXFpHN/jYFs+lFkPoisY+LcBODdKVMY96ATzvzsWv+ES/4Kmufw== + +fast-safe-stringify@^2.0.7, fast-safe-stringify@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.8.tgz#dc2af48c46cf712b683e849b2bbd446b32de936f" + integrity sha512-lXatBjf3WPjmWD6DpIZxkeSsCOwqI0maYMpgDlx8g4U2qi4lbjA9oH/HD2a87G+KfsUmo5WbJFmqBZlPxtptag== + +fastq@^1.11.1: + version "1.11.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.1.tgz#5d8175aae17db61947f8b162cfc7f63264d22807" + integrity sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw== + dependencies: + reusify "^1.0.4" + +file-type@^12.1.0: + version "12.4.2" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-12.4.2.tgz#a344ea5664a1d01447ee7fb1b635f72feb6169d9" + integrity sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg== + +file-type@^16.5.2: + version "16.5.3" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.3.tgz#474b7e88c74724046abb505e9b8ed4db30c4fc06" + integrity sha512-uVsl7iFhHSOY4bEONLlTK47iAHtNsFHWP5YE4xJfZ4rnX7S1Q3wce09XgqSC7E/xh8Ncv/be1lNoyprlUH/x6A== + dependencies: + readable-web-to-node-stream "^3.0.0" + strtok3 "^6.2.4" + token-types "^4.1.1" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-cache-dir@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +flatstr@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/flatstr/-/flatstr-1.0.12.tgz#c2ba6a08173edbb6c9640e3055b95e287ceb5931" + integrity sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw== + +follow-redirects@^1.10.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" + integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +fresh@0.5.2, fresh@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= + +fs-extra@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" + integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.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== + dependencies: + minipass "^3.0.0" + +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +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== + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + +get-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-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== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-port@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" + integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== + +get-stream@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== + dependencies: + pump "^3.0.0" + +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-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +getopts@2.2.5: + version "2.2.5" + resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.2.5.tgz#67a0fe471cacb9c687d817cab6450b96dde8313b" + integrity sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA== + +getopts@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.3.0.tgz#71e5593284807e03e2427449d4f6712a268666f4" + integrity sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA== + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +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== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz#8c5a1494d2066c570cc3bfe4496175acc4d502ab" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob@^7.1.1, glob@^7.1.3: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + 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" + +globby@^9.2.0: + version "9.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-9.2.0.tgz#fd029a706c703d29bdd170f4b6db3a3f7a7cb63d" + integrity sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^1.0.2" + dir-glob "^2.2.2" + fast-glob "^2.2.6" + glob "^7.1.3" + ignore "^4.0.3" + pify "^4.0.1" + slash "^2.0.0" + +got@^11.8.2: + version "11.8.2" + resolved "https://registry.yarnpkg.com/got/-/got-11.8.2.tgz#7abb3959ea28c31f3576f1576c1effce23f33599" + integrity sha512-D0QywKgIe30ODs+fm8wMZiAcZjypcCodPNuMz5H9Mny7RJ+IjJ10BdmGW7OM7fHXP+O7r6ZwapQ/YQmMSvB0UQ== + 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.1" + 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, graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.8" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" + integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^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= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-glob/-/has-glob-1.0.0.tgz#9aaa9eedbffb1ba3990a7b0010fb678ee0081207" + integrity sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc= + dependencies: + is-glob "^3.0.0" + +has-own-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-own-prop/-/has-own-prop-2.0.0.tgz#f0f95d58f65804f5d218db32563bb85b8e0417af" + integrity sha512-Pq0h+hvsVm6dDEa8x82GnLSYHOzNDt7f0ddFa3FqcQlgzEiptPqL+XrOJNavjOzSYiYWIrgeVYYgGlLmnxwilQ== + +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== + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +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== + dependencies: + function-bind "^1.1.1" + +haye@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/haye/-/haye-3.0.0.tgz#30b801dc235cfa4d83ddb43162b12911617a67e4" + integrity sha512-yWxbPdeex78IR3x3X/DdqkZbVG4rP4UaRdUGmpClfnUh1C61mASt7Iav8vk2tXcTMSygBHDDfgoVqk68NJqzhQ== + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +header-case@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" + integrity sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q== + dependencies: + capital-case "^1.0.4" + tslib "^2.0.3" + +html-minifier@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-4.0.0.tgz#cca9aad8bce1175e02e17a8c33e46d8988889f56" + integrity sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig== + dependencies: + camel-case "^3.0.0" + clean-css "^4.2.1" + commander "^2.19.0" + he "^1.2.0" + param-case "^2.1.1" + relateurl "^0.2.7" + uglify-js "^3.5.1" + +htmlparser2@^4.0.0, htmlparser2@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-4.1.0.tgz#9a4ef161f2e4625ebf7dfbe6c0a2f52d18a59e78" + integrity sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q== + dependencies: + domelementtype "^2.0.1" + domhandler "^3.0.0" + domutils "^2.0.0" + entities "^2.0.0" + +htmlparser2@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" + integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.0.0" + domutils "^2.5.2" + entities "^2.0.0" + +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-errors@1.7.3, http-errors@~1.7.2: + version "1.7.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +http-errors@~1.8.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507" + integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.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== + dependencies: + 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== + +ical-generator@^3.0.0-develop.4: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ical-generator/-/ical-generator-3.0.0.tgz#042a7c1d2ce8cae1428bc1ea51a8dbe6b8872fcd" + integrity sha512-PlDOOipgTlMzbfDDy+NJixAf5bzNb46wf0JXPkhnSjNQJc50y/XTOhOnQW/cp6tD+4ITHIMhkCkQ4CrUlDKMFQ== + dependencies: + uuid-random "^1.3.2" + +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== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +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== + +igniculus@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/igniculus/-/igniculus-1.5.0.tgz#f6d5e7784dbe948b4e6a8a22a54d365de90623d0" + integrity sha1-9tXneE2+lItOaooipU02XekGI9A= + +ignore@^4.0.3: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflation@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/inflation/-/inflation-2.0.0.tgz#8b417e47c28f925a45133d914ca1fd389107f30f" + integrity sha1-i0F+R8KPklpFEz2RTKH9OJEH8w8= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.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== + +interpret@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" + integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== + +ioredis@^4.27.6: + version "4.27.7" + resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.27.7.tgz#11bf2947e23a0e8055931afa7c2da89fc48c8ff3" + integrity sha512-lqvFFmUyGIHlrNyDvBoakzy1+ioJzNyoP6CP97GWtdTjWq9IOAnv6l0HUTsqhvd/z9etGgtrDHZ4kWCMAwNkug== + dependencies: + cluster-key-slot "^1.1.0" + debug "^4.3.1" + denque "^1.1.0" + lodash.defaults "^4.2.0" + lodash.flatten "^4.4.0" + lodash.isarguments "^3.1.0" + p-map "^2.1.0" + redis-commands "1.7.0" + redis-errors "^1.2.0" + redis-parser "^3.0.0" + standard-as-callback "^2.1.0" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.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== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-core-module@^2.2.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" + integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^3.0.0, is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +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-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +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-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +jest-worker@^27.0.6: + version "27.0.6" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.6.tgz#a5fdb1e14ad34eb228cfe162d9f729cdbfa28aed" + integrity sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jmespath@^0.15.0: + version "0.15.0" + resolved "https://registry.yarnpkg.com/jmespath/-/jmespath-0.15.0.tgz#a3f222a9aae9f966f5d27c796510e28091764217" + integrity sha1-o/Iiqarp+Wb10nx5ZRDigJF2Qhc= + +joycon@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.0.1.tgz#9074c9b08ccf37a6726ff74a18485f85efcaddaf" + integrity sha512-SJcJNBg32dGgxhPtM0wQqxqV0ax9k/9TaUskGDSJkSFSQOEWWvQ3zzWdGQRIUry2j1zA5+ReH13t0Mf3StuVZA== + +js-beautify@^1.6.14: + version "1.14.0" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.14.0.tgz#2ce790c555d53ce1e3d7363227acf5dc69024c2d" + integrity sha512-yuck9KirNSCAwyNJbqW+BxJqJ0NLJ4PwBUzQQACl5O3qHMBXVkXb/rD0ilh/Lat/tn88zSZ+CAHOlk0DsY7GuQ== + dependencies: + config-chain "^1.1.12" + editorconfig "^0.15.3" + glob "^7.1.3" + nopt "^5.0.0" + +js-stringify@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" + integrity sha1-Fzb939lyTyijaCrcYjCufk6Weds= + +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls= + +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== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +juice@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/juice/-/juice-7.0.0.tgz#509bed6adbb6e4bbaa7fbfadac4e2e83e8c89ba3" + integrity sha512-AjKQX31KKN+uJs+zaf+GW8mBO/f/0NqSh2moTMyvwBY+4/lXIYTU8D8I2h6BAV3Xnz6GGsbalUyFqbYMe+Vh+Q== + dependencies: + cheerio "^1.0.0-rc.3" + commander "^5.1.0" + mensch "^0.3.4" + slick "^1.12.2" + web-resource-inliner "^5.0.0" + +junk@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/junk/-/junk-3.1.0.tgz#31499098d902b7e98c5d9b9c80f43457a88abfa1" + integrity sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ== + +keyv@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.0.3.tgz#4f3aa98de254803cafcd2896734108daa35e4254" + integrity sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA== + dependencies: + json-buffer "3.0.1" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +kleur@^4.1.4: + version "4.1.4" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-4.1.4.tgz#8c202987d7e577766d039a8cd461934c01cda04d" + integrity sha512-8QADVssbrFjivHWQU7KkMgptGTl6WAcSdlbBPY4uNF+mWr6DGcKrvY2w4FQJoXch7+fKMjj0dRrL75vk3k23OA== + +knex-dynamic-connection@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/knex-dynamic-connection/-/knex-dynamic-connection-2.1.1.tgz#a3c9934a51bf93e2ea6c3da2f9f3dca742f7a123" + integrity sha512-/Lwg/T13eNRJVoSJ4e9SH3slVUmg37UHxDxVluAAKdJZxYVj8YsP2x50JSk310RmKsYbOZ8oB8SwVVEuRa4nYw== + dependencies: + debug "^4.3.1" + knex "^0.95.6" + +knex@^0.95.6: + version "0.95.9" + resolved "https://registry.yarnpkg.com/knex/-/knex-0.95.9.tgz#d72acbdbc7aa199a829cca3c53371b80e521adfe" + integrity sha512-iy8Wue3ofGBVZENgz32fx2uYSYhXCQEE7lemMIdm/FDtgwwmrzkYm9BdGZ4wb8Fg/oCgezMGWSdCflWicX4sdA== + dependencies: + colorette "1.2.1" + commander "^7.1.0" + debug "4.3.2" + escalade "^3.1.1" + esm "^3.2.25" + getopts "2.2.5" + interpret "^2.2.0" + lodash "^4.17.21" + pg-connection-string "2.5.0" + rechoir "0.7.0" + resolve-from "^5.0.0" + tarn "^3.0.1" + tildify "2.0.0" + +leven@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +listify@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/listify/-/listify-1.0.3.tgz#a9335ac351c3d1aea515494ed746976eeb92248b" + integrity sha512-083swF7iH7bx8666zdzBColpgEuy46HjN3r1isD4zV6Ix7FuHfb/2/WVnl4CH8hjuoWeFF7P5KkKNXUnJCFEJg== + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + +lodash.isarguments@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= + +lodash@^4.17.15, 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-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + +lower-case@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + +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== + +lru-cache@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +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== + dependencies: + yallist "^4.0.0" + +luxon@^1.27.0: + version "1.28.0" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-1.28.0.tgz#e7f96daad3938c06a62de0fb027115d251251fbf" + integrity sha512-TfTiyvZhwBYM/7QdAVDh+7dBTBA29v4ik0Ce9zda3Mnf8on1S5KJI8P2jKFZ8+5C0jhmr0KwJEO/Wdpm0VeWJQ== + +luxon@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.0.2.tgz#11f2cd4a11655fdf92e076b5782d7ede5bcdd133" + integrity sha512-ZRioYLCgRHrtTORaZX1mx+jtxKtKuI5ZDvHNAmqpUzGqSrR+tL4FVLn/CUGMA3h0+AKD1MAxGI5GnCqR5txNqg== + +macroable@^5.1.3, macroable@^5.1.4: + version "5.1.4" + resolved "https://registry.yarnpkg.com/macroable/-/macroable-5.1.4.tgz#7d88f8190288833924e48120e1371e3198a6fa6e" + integrity sha512-6yOJQT7QhYlJqhNWn/B2h+1ylsCnL8dMBmBpdnVNK+02PfQm13Ix4Szx4HiS3rp4a28EKckCGW27gtTZoYXYYQ== + +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== + dependencies: + semver "^6.0.0" + +map-age-cleaner@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz#7d583a7306434c055fe474b0f45078e6e1b4b92a" + integrity sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w== + dependencies: + p-defer "^1.0.0" + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +marked-terminal@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/marked-terminal/-/marked-terminal-4.1.1.tgz#34a6f063cd6cfe26bffaf5bac3724e24242168a9" + integrity sha512-t7Mdf6T3PvOEyN01c3tYxDzhyKZ8xnkp8Rs6Fohno63L/0pFTJ5Qtwto2AQVuDtbQiWzD+4E5AAu1Z2iLc8miQ== + dependencies: + ansi-escapes "^4.3.1" + cardinal "^2.1.1" + chalk "^4.1.0" + cli-table "^0.3.1" + node-emoji "^1.10.0" + supports-hyperlinks "^2.1.0" + +marked@^2.0.7: + version "2.1.3" + resolved "https://registry.yarnpkg.com/marked/-/marked-2.1.3.tgz#bd017cef6431724fd4b27e0657f5ceb14bff3753" + integrity sha512-/Q+7MGzaETqifOMWYEA7HVMaZb4XbcRfaOzcSsHZEith83KGlvaSG33u0SKu89Mj5h+T8V2hM+8O45Qc5XTgwA== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + +media-typer@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-1.1.0.tgz#6ab74b8f2d3320f2064b2a87a38e7931ff3a5561" + integrity sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw== + +mem@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.1.tgz#cf118b357c65ab7b7e0817bdf00c8062297c0122" + integrity sha512-qFCFUDs7U3b8mBDPyz5EToEKoAkgCzqquIgi9nkkR9bixxOVOre+09lbuH7+9Kn2NFpm56M3GUWVbU2hQgdACA== + dependencies: + map-age-cleaner "^0.1.3" + mimic-fn "^3.1.0" + +mensch@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/mensch/-/mensch-0.3.4.tgz#770f91b46cb16ea5b204ee735768c3f0c491fecd" + integrity sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g== + +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.2.3: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +mime-db@1.49.0: + version "1.49.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.49.0.tgz#f3dfde60c99e9cf3bc9701d687778f537001cbed" + integrity sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA== + +mime-kind@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mime-kind/-/mime-kind-3.0.0.tgz#23bb3aba03ed6a1ea8c4f6093a9c7ab7121a9cb2" + integrity sha512-sx9lClVP7GXY2mO3aVDWTQLhfvAdDvNhGi3o3g7+ae3aKaoybeGbEIlnreoRKjrbDpvlPltlkIryxOtatojeXQ== + dependencies: + file-type "^12.1.0" + mime-types "^2.1.24" + +mime-types@^2.1.24, mime-types@^2.1.31, mime-types@~2.1.24: + version "2.1.32" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.32.tgz#1d00e89e7de7fe02008db61001d9e02852670fd5" + integrity sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A== + dependencies: + mime-db "1.49.0" + +mime@1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.4.6: + version "2.5.2" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.5.2.tgz#6e3dc6cc2b9510643830e5f19d5cb753da5eeabe" + integrity sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg== + +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-fn@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-3.1.0.tgz#65755145bbf3e36954b949c16450427451d5ca74" + integrity sha512-Ysbi9uYW9hFyfrThdDEQuykN4Ey6BuwPD2kpI5ES/nFTDn/98yxYNLZJcgUAKPT/mcrLLKaGzJR9YVxJrIdASQ== + +mimic-response@^1.0.0: + 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== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +minipass@^3.0.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== + dependencies: + yallist "^4.0.0" + +minizlib@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mjml-accordion@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-accordion/-/mjml-accordion-4.10.2.tgz#475526c1bbdae00a9586a056e8eaa0c23753d4be" + integrity sha512-32nPtx7zH2wdiIQ8wHoIYnIlXhDDwRoGWhm6Rc4uszB4CPYTIsh7vOXOlhLsXgKrWKTdYOD/TIxZcbyvBl4sIA== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-body@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-body/-/mjml-body-4.10.2.tgz#f75eee2b0cb701edf21244f4219b6db0d9f0f9a0" + integrity sha512-G80iK31hhm/DL40H4VSch0gtDpNBa7Pmj5ZJDnSkIrawgoKU+2qMD/fjlRTF2x+cxBLXSCKWpeH9bdompcs0pw== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-button@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-button/-/mjml-button-4.10.2.tgz#b734b037e2eca6b19c1392ac02900438abd49c8e" + integrity sha512-q26UJPb80RGN0oVu9mYEutBKMY1e7AwZfT14k7lRA7+NznW/ASbj8B02IgI1nAW5Et5xK7Fr8ThICkuny7RR5A== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-carousel@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-carousel/-/mjml-carousel-4.10.2.tgz#19b08622db014bb1dbd94d813fa036e78bb87578" + integrity sha512-WfJ6owuKdFVEmzlW/VluB4cxYoWH7IjcH44z9pvq5LrrgfMssyvbnEpkkZTFNQKKCIrBmdXsjDDt9Ex5oJREGw== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-cli@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-cli/-/mjml-cli-4.10.2.tgz#df9d10c060c31c38e9e1ce8f10d739269f4b2ac4" + integrity sha512-tRuiv0ZvuqSJjx67fpxSA8wHEoAsoZ2cLO1w2JiX5lBDXZp5oF8EJ65HPNX6sWyEgu1nKY+9bl7XG3YBUwg80w== + dependencies: + "@babel/runtime" "^7.8.7" + chokidar "^3.0.0" + glob "^7.1.1" + html-minifier "^4.0.0" + js-beautify "^1.6.14" + lodash "^4.17.21" + mjml-core "4.10.2" + mjml-migrate "4.10.2" + mjml-parser-xml "4.10.2" + mjml-validator "4.10.2" + yargs "^16.1.0" + +mjml-column@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-column/-/mjml-column-4.10.2.tgz#58590f16e26ddbc127fb6e4eb6ba8018f9d66b92" + integrity sha512-53hGPWTrNPEhY0Kb9Gu/bOoFs86q0k/UvZGxV47oCHSyIRYgfzG7FyaJDYrt+gxFe6hLJAZjQIoXEpZ8683xxw== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-core@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-core/-/mjml-core-4.10.2.tgz#139a6e3ce10073a01b864931981c649e3b20d45c" + integrity sha512-RsPCIUqQ1r8gysvljssU2pcScMfMBZnu1JQs2IO3QAlUEELd+sd3Mz/1u4MEWP7vWoUSRDlbJjZIPr1606g70A== + dependencies: + "@babel/runtime" "^7.8.7" + cheerio "1.0.0-rc.10" + detect-node "2.0.4" + html-minifier "^4.0.0" + js-beautify "^1.6.14" + juice "^7.0.0" + lodash "^4.17.21" + mjml-migrate "4.10.2" + mjml-parser-xml "4.10.2" + mjml-validator "4.10.2" + +mjml-divider@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-divider/-/mjml-divider-4.10.2.tgz#2ae6ab75daadb188dd759c464ed66323a7586246" + integrity sha512-2NGg80/PQVmXpESIWMOiT1c1p3811JpsdFnmXJfiXvwH5hIW3oEyLOB4e9WTXqeVOypcUI32PhR25emOr+Udww== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-group@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-group/-/mjml-group-4.10.2.tgz#1593dcea66f9289b84a2886c514529eda5f69c65" + integrity sha512-U7XLiqOwgJDJhimlHAW/6ar0nkpuwwBmrYsEUl1q1kEhX2pDld+Wia4GeVBdRGiWGrFMWW3lgkRmOqs2bMSWEg== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-head-attributes@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-head-attributes/-/mjml-head-attributes-4.10.2.tgz#a7181d4df878461ba942e925967b1ae48c5a9369" + integrity sha512-B+GXQK9NCun/RZMHsGrbzNVJM9g+Pni6xDu4CtytdHjOSY4m99cB+fAa3bPX/dxXWEnaRrsR41ReP49NZrO+pQ== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-head-breakpoint@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-head-breakpoint/-/mjml-head-breakpoint-4.10.2.tgz#306794188227c4b2676c51fbf2164628af3a41b6" + integrity sha512-omAZRnPtuhx2OHND5guvHvt7Vb94nWO+x/Jupd09gfzapz32mcN15qGQERH33oqfSSZl0paDUDPy53xjXWAkgA== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-head-font@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-head-font/-/mjml-head-font-4.10.2.tgz#40416a200f81fa839973a8020ee7f87af6da6c84" + integrity sha512-yDcM6mR0qBd8jZ59nYMvXwz53vw0eW1S+vqtaRq1s6TvmtiMy9Gf6TLcbdFDxUbxjKVVSwK9plSqqTwfiHUc2w== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-head-html-attributes@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-head-html-attributes/-/mjml-head-html-attributes-4.10.2.tgz#3d9947ec472e02e99c87245c2a4b8cdc5770ea11" + integrity sha512-zUXs3CA5K4lPyYwF/DhF4isBzqFDTaJp0IURhfF5RAZGQDxQw8W1WPGwjtCgnOKqwMRaIPHBPoHusKqcWGr+mg== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-head-preview@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-head-preview/-/mjml-head-preview-4.10.2.tgz#107d12f957b45a116da84baaa4e5ab383dda3d86" + integrity sha512-ko3fxPhpztvqOiwQOLd4aB+cyls2fLxEAShZvaF7PAu02nmmwNCPJnKRAvm/WFqJT8PIGO32AqKb3gupTrKFrQ== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-head-style@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-head-style/-/mjml-head-style-4.10.2.tgz#21b0d02280cc3a83b36ecca05ff141363cff871f" + integrity sha512-ut27xxYTau37fCO3TN3Y9HzJhhvtH92jOq+F8r8mbP7achrR+ToGphCxmKYMSnZ5zOwzDqq9GV1/xQCCudZAhQ== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-head-title@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-head-title/-/mjml-head-title-4.10.2.tgz#79b5eade1534ef43fce4f1ea842598f3044c14b3" + integrity sha512-ZBQ8FQzuDrfcr5b27Xq8SR0VM8up7CjSsrCiP4N7aBYwrwdRD9zDjr0VfqCGTDV+bxFnpoCwjv2dsWPfJRzr2Q== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-head@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-head/-/mjml-head-4.10.2.tgz#16458a50eb9b04438810afa513082bf6f293b07e" + integrity sha512-70HJc1x7agRVxggUyrBjHZh1bUt43GH0SjlmKgIivaGXKGQEd+1d+0m+aZesY7zplQXN7IBI5qBRZmgIfW+FLQ== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-hero@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-hero/-/mjml-hero-4.10.2.tgz#909e3e20c341f546c6ffa54aded3de35d9fd36ed" + integrity sha512-fPA80s3eOEW3Y1YxgPfHDhNe5fGd+zelOhg7lGyO5QTH/diXu3ElkScPXMt7NeEz9vTnHLpwsygdp1X7rEJimA== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-image@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-image/-/mjml-image-4.10.2.tgz#daa85304c08ff7e281dc0393833ac4626f8755dd" + integrity sha512-gmo5UQNAE2NfpSydwLwPoIRVtxKX/P34OMQwgc83bMasbigyJPU/mjJt/1NYfNQa+s4jD1IOiQmxBgV7b9UalA== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-migrate@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-migrate/-/mjml-migrate-4.10.2.tgz#efe5f51b43520f869061a74dadc75fafcd2df484" + integrity sha512-7b7HZG7H4ffl/HS/Qg6kDGgTpaF+HLDAi7eZDvfah20zkq8GYyOWo8OZek5ALXk6gwmszVBkhRhbB/r6DVvyqA== + dependencies: + "@babel/runtime" "^7.8.7" + js-beautify "^1.6.14" + lodash "^4.17.21" + mjml-core "4.10.2" + mjml-parser-xml "4.10.2" + yargs "^16.1.0" + +mjml-navbar@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-navbar/-/mjml-navbar-4.10.2.tgz#b20db4d5408fad6f023de029172961474f51ed46" + integrity sha512-V/csnQDZSCUDh+/WTicTbB7TwjIah0UIoTIDz5NQq7BCXFDClVTvdm06pVamt1pUy+/0slVOLRDl7LTZ53Rc2A== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-parser-xml@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-parser-xml/-/mjml-parser-xml-4.10.2.tgz#c95823608c81c439c7df8e489240da70c1b307d9" + integrity sha512-kbWjT7zOTApLBCActvVTqkKgSol4y3tSYjVIZYBlRPViP5ZLw+I1nWRCTji9hQoQ/tGgqSXEIKa7+n9IIW+Zww== + dependencies: + "@babel/runtime" "^7.8.7" + detect-node "2.0.4" + htmlparser2 "^4.1.0" + lodash "^4.17.15" + +mjml-preset-core@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-preset-core/-/mjml-preset-core-4.10.2.tgz#ba8999e4e68ce1e0cdc6cfafa64641da734f7f21" + integrity sha512-rqKEphVPYbT78wXiRZm8WK7q86GZtSdMV7sQHuRYu+++AAUNlFkZUxvnNmZtKt2KupHGoz18oBErF5z3WIesvg== + dependencies: + "@babel/runtime" "^7.8.7" + mjml-accordion "4.10.2" + mjml-body "4.10.2" + mjml-button "4.10.2" + mjml-carousel "4.10.2" + mjml-column "4.10.2" + mjml-divider "4.10.2" + mjml-group "4.10.2" + mjml-head "4.10.2" + mjml-head-attributes "4.10.2" + mjml-head-breakpoint "4.10.2" + mjml-head-font "4.10.2" + mjml-head-html-attributes "4.10.2" + mjml-head-preview "4.10.2" + mjml-head-style "4.10.2" + mjml-head-title "4.10.2" + mjml-hero "4.10.2" + mjml-image "4.10.2" + mjml-navbar "4.10.2" + mjml-raw "4.10.2" + mjml-section "4.10.2" + mjml-social "4.10.2" + mjml-spacer "4.10.2" + mjml-table "4.10.2" + mjml-text "4.10.2" + mjml-wrapper "4.10.2" + +mjml-raw@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-raw/-/mjml-raw-4.10.2.tgz#eb9b1f3dcdd8726a819562745ac2663f739f6272" + integrity sha512-jLkO6Q09Pyc/Izj7bOMmhSCiWuHfAbqoq0oKqWtzgSv2gw2yBSmaMHFyMqAsE3Tlm4NkPxWRLCahoswk4doUGg== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-section@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-section/-/mjml-section-4.10.2.tgz#5f457fa26adc284c5fcaecc66805f7d05fbcea2c" + integrity sha512-wWTjKt+8Anm6MQUCuE/0ecHy1mt9JxShCR7BmGaO/hq0p1OqaUfveOpg1diod5TudHg9oT/f6ipyXCTSebVYIQ== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-social@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-social/-/mjml-social-4.10.2.tgz#ab51e56d4d0845643bb59f59b1c94d84e1627e4a" + integrity sha512-rZexXYp+qgT4E+WGAvt622RxD+sp/ZL7WdRYvF9U/8bQMhnUfVFI6UCZA2UNoby0v4g0JNO4pv0oGzXbAhl6lQ== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-spacer@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-spacer/-/mjml-spacer-4.10.2.tgz#1e693d63f99dd411dedf9931b61a1acf3183b464" + integrity sha512-md5bbtEfvPE+EGGnfXOe+9lnpbHqkzXAq/51YxRYhW5Zr/iT9NyN3VWbqkOruKXztzKFlkL7u2aq+NBKJJiFMA== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-table@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-table/-/mjml-table-4.10.2.tgz#a3102da62fc2bfa9ecacb7d069f8b59f7a3fa2c3" + integrity sha512-VSVptHIarlxMshAcLq1F/jqFkqVS61amXmtyMcFWqKcYEVrDVwfi7knB/P/BacsbZ3RJaG0KkkK9dTsP1UShzw== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-text@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-text/-/mjml-text-4.10.2.tgz#ab89d14fed48f3096e453a78864d915ec7335436" + integrity sha512-fxtzpLCFHuDFecS+CQBIbGdBPx3xyKZx1RfHJjjmjeX0dzoQvud4LiEmegqXted7tiUJ8yBI8vp1KfnIzxmyjA== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + +mjml-validator@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-validator/-/mjml-validator-4.10.2.tgz#1710f9243a2aafc49572e61bb365e87d076be698" + integrity sha512-6CIJ3iCnXRwy+z0GGpUZuVwBS7mW8/oZ0U2jnV9L8WVQiIAHPcilnRgR4yIcE6SvQ724XEnAu/za7rq6C5UBhA== + dependencies: + "@babel/runtime" "^7.8.7" + +mjml-wrapper@4.10.2: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml-wrapper/-/mjml-wrapper-4.10.2.tgz#086d51e59da2fc04dc69b49b5bca63dba6c684be" + integrity sha512-JkU92wHRyR6lh8GyovxJUrzY2JViIrDrU6bjewqDrm5Oi3fupck1kNEGRIR7ewzWLgGtlYcAjk1Myt9wcCeeZw== + dependencies: + "@babel/runtime" "^7.8.7" + lodash "^4.17.21" + mjml-core "4.10.2" + mjml-section "4.10.2" + +mjml@^4.10.1: + version "4.10.2" + resolved "https://registry.yarnpkg.com/mjml/-/mjml-4.10.2.tgz#ae4f4fc33fedd9c7c1b5b36ad0486f1713e30f70" + integrity sha512-KVFcTl3AaugIbGRKeqqzjHebp8PTFpteUy3otaRGbrYgKMv+AHzwCMMOptkU9qknJBMCJb+ZUSc9FvOc+bbp4A== + dependencies: + "@babel/runtime" "^7.14.6" + mjml-cli "4.10.2" + mjml-core "4.10.2" + mjml-migrate "4.10.2" + mjml-preset-core "4.10.2" + mjml-validator "4.10.2" + +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" + resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" + integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== + +mrm-core@^6.0.0: + version "6.1.5" + resolved "https://registry.yarnpkg.com/mrm-core/-/mrm-core-6.1.5.tgz#3cfe0d474775da3e94d8c2b6490c36d77d07ab25" + integrity sha512-lIJ+P3Utp1NI6VBvGBoZDzkyP4uAViK+y+vNuHvf8oV3+JlKqTgEgbCwqw6O+c0ulGZI4tBhlHhlWZ1fSxWWLQ== + dependencies: + babel-code-frame "^6.26.0" + comment-json "^2.2.0" + detect-indent "^6.0.0" + editorconfig "^0.15.3" + find-up "^4.1.0" + fs-extra "^8.1.0" + kleur "^3.0.3" + listify "^1.0.0" + lodash "^4.17.15" + minimist "^1.2.0" + prop-ini "^0.0.2" + rc "^1.2.8" + readme-badger "^0.3.0" + semver "^6.3.0" + smpltmpl "^1.0.2" + split-lines "^2.0.0" + strip-bom "^4.0.0" + validate-npm-package-name "^3.0.0" + webpack-merge "^4.2.2" + yaml "^2.0.0-1" + +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.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" + integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== + +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.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multi-part-lite@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/multi-part-lite/-/multi-part-lite-1.0.0.tgz#7b86baf8ff83ef20ca13f1269a0f35aec42b9000" + integrity sha512-KxIRbBZZ45hoKX1ROD/19wJr0ql1bef1rE8Y1PCwD3PuNXV42pp7Wo8lEHYuAajoT4vfAFcd3rPjlkyEEyt1nw== + +multi-part@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/multi-part/-/multi-part-3.0.0.tgz#2bde386e8c1dcc9f15a2277267a7f5ed13aa0cc0" + integrity sha512-pDbdYQ6DLDxAsD83w9R7r7rlW56cETL7hIB5bCWX7FJYw0K+kL5JwHr0I8tRk9lGeFcAzf+2OEzXWlG/4wCnFw== + dependencies: + mime-kind "^3.0.0" + multi-part-lite "^1.0.0" + +mustache@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/mustache/-/mustache-4.2.0.tgz#e5892324d60a12ec9c2a73359edca52972bf6f64" + integrity sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ== + +mysql@^2.18.1: + version "2.18.1" + resolved "https://registry.yarnpkg.com/mysql/-/mysql-2.18.1.tgz#2254143855c5a8c73825e4522baf2ea021766717" + integrity sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig== + dependencies: + bignumber.js "9.0.0" + readable-stream "2.3.7" + safe-buffer "5.1.2" + sqlstring "2.3.1" + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +negotiator@0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" + integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== + +nested-error-stacks@^2.0.0, nested-error-stacks@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz#0fbdcf3e13fe4994781280524f8b96b0cdff9c61" + integrity sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug== + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-addon-api@^3.0.2: + 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-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== + dependencies: + lodash "^4.17.21" + +node-fetch@^2.6.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-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" + integrity sha512-e03zlI31RjF6Ks9+/ju0gY55dZSm21XXMSzy85FGZtDxuAZCa/iQwzWoQjmZvaolQCrIjzs0e4shxZs1bxbpUg== + dependencies: + acorn "^8.0.5" + acorn-class-fields "^1.0.0" + acorn-private-methods "^1.0.0" + acorn-static-class-features "^1.0.0" + acorn-walk "^8.0.2" + +nodemailer@^6.6.3: + version "6.6.3" + resolved "https://registry.yarnpkg.com/nodemailer/-/nodemailer-6.6.3.tgz#31fb53dd4d8ae16fc088a65cb9ffa8d928a69b48" + integrity sha512-faZFufgTMrphYoDjvyVpbpJcYzwyFnbAMmQtj1lVBYAUSm3SOy2fIdd9+Mr4UxPosBa0JRw9bJoIwQn+nswiew== + +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" + +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@^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-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== + dependencies: + path-key "^3.0.0" + +npmlog@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + +nth-check@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.0.tgz#1bb4f6dac70072fc313e8c9cd1417b5074c0a125" + integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== + dependencies: + boolbase "^1.0.0" + +number-is-nan@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.9.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" + integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +on-finished@^2.3.0, on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc= + dependencies: + ee-first "1.1.1" + +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +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== + dependencies: + mimic-fn "^2.1.0" + +open@^8.2.0: + version "8.2.1" + resolved "https://registry.yarnpkg.com/open/-/open-8.2.1.tgz#82de42da0ccbf429bc12d099dad2e0975e14e8af" + integrity sha512-rXILpcQlkF/QuFez2BJDf3GsqpjGKbkUUToAIGo9A0Q6ZkoSGogZJulrUdwRkrAsoQvoZsrjCYt8+zblOk7JQQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +opencollective-postinstall@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" + integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== + +p-all@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-all/-/p-all-2.1.0.tgz#91419be56b7dee8fe4c5db875d55e0da084244a0" + integrity sha512-HbZxz5FONzz/z2gJfk6bFca0BCiSRF8jU3yCsWOen/vR6lZjfPOu/e7L3uFzTW1i0H8TlC3vqQstEJPQL4/uLA== + dependencies: + p-map "^2.0.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-defer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" + integrity sha1-n26xgvbJqozXQwBKfU+WsZaw+ww= + +p-event@^4.1.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== + dependencies: + p-timeout "^3.1.0" + +p-filter@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-filter/-/p-filter-2.1.0.tgz#1b1472562ae7a0f742f0f3d3d3718ea66ff9c09c" + integrity sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw== + dependencies: + p-map "^2.0.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-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-map@^2.0.0, p-map@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" + integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.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== + dependencies: + p-finally "^1.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +param-case@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= + dependencies: + no-case "^2.2.0" + +param-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" + integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +parse-imports@0.0.5: + version "0.0.5" + resolved "https://registry.yarnpkg.com/parse-imports/-/parse-imports-0.0.5.tgz#80e505b9558d6fa8d760b9f0be64f42f65bf4d17" + integrity sha512-yA6mDNotJmyAXcEdi2AjiHfI8Llk+/uv/jgBgvzFVP8iGaHC5L3rR6VQk/1qEE3SvLUsDQ2GdQMfPTi0qrmt8Q== + dependencies: + es-module-lexer "0.3.26" + slashes "2.0.2" + +parse5-htmlparser2-tree-adapter@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" + +parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" + integrity sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +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-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.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-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-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +peek-readable@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.0.1.tgz#9a045f291db254111c3412c1ce4fec27ddd4d202" + integrity sha512-7qmhptnR0WMSpxT5rMHG9bW/mYSR1uqaPFj2MHvT+y/aOUu6msJijpKt5SkTDKySwg65OWG2JwTMBlgcbwMHrQ== + +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== + +phc-argon2@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/phc-argon2/-/phc-argon2-1.1.2.tgz#aa3f0fb9301a8322c81577d8a37fbb287adbb3e6" + integrity sha512-R+1G4/lZHPQrLKiYBSio7xhU0vhfP5mxLYJBuWWiGAtynorRM4QtQGZcvnT4BTaRZOUaCaqlR4PC8cBrQmxZ3A== + dependencies: + "@kdf/salt" "^2.0.1" + "@phc/format" "^1.0.0" + argon2 "^0.28.2" + tsse "^2.0.0" + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pino-pretty@^5.0.2: + version "5.1.3" + resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-5.1.3.tgz#c4085093d1dffda359ab52731f87d96f7f832dc9" + integrity sha512-Zj+0TVdYKkAAIx9EUCL5e4TttwgsaFvJh2ceIMQeFCY8ak9tseEZQGSgpvyjEj1/iIVGIh5tdhkGEQWSMILKHA== + dependencies: + "@hapi/bourne" "^2.0.0" + args "^5.0.1" + chalk "^4.0.0" + dateformat "^4.5.1" + fast-safe-stringify "^2.0.7" + jmespath "^0.15.0" + joycon "^3.0.0" + pump "^3.0.0" + readable-stream "^3.6.0" + rfdc "^1.3.0" + split2 "^3.1.1" + strip-json-comments "^3.1.1" + +pino-std-serializers@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-3.2.0.tgz#b56487c402d882eb96cd67c257868016b61ad671" + integrity sha512-EqX4pwDPrt3MuOAAUBMU0Tk5kR/YcCM5fNPEzgCO2zJ5HfX0vbiH9HbJglnyeQsN96Kznae6MWD47pZB5avTrg== + +pino@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/pino/-/pino-6.13.0.tgz#41810b9be213af6f8f7c23a1b17058d880267e7b" + integrity sha512-mRXSTfa34tbfrWqCIp1sUpZLqBhcoaGapoyxfEwaWwJGMpLijlRdDKIQUyvq4M3DUfFH5vEglwSw8POZYwbThA== + dependencies: + fast-redact "^3.0.0" + fast-safe-stringify "^2.0.8" + flatstr "^1.0.12" + pino-std-serializers "^3.1.0" + quick-format-unescaped "^4.0.3" + sonic-boom "^1.0.2" + +pirates@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" + integrity sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA== + dependencies: + node-modules-regexp "^1.0.0" + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +pretty-hrtime@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= + +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== + +prop-ini@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/prop-ini/-/prop-ini-0.0.2.tgz#6733a7cb5242acab2be42e607583d8124b172a5b" + integrity sha1-ZzOny1JCrKsr5C5gdYPYEksXKls= + dependencies: + extend "^3.0.0" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= + +proxy-addr@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +qs@^6.10.1: + version "6.10.1" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" + integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== + dependencies: + side-channel "^1.0.4" + +quick-format-unescaped@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.3.tgz#6d6b66b8207aa2b35eef12be1421bb24c428f652" + integrity sha512-MaL/oqh02mhEo5m5J2rwsVL23Iw2PEaGVHgT2vFt8AAsr0lfvQA5dpXo9TPu0rz7tSBdUPgkbam0j/fj5ZM8yg== + +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== + +random-bytes@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/random-bytes/-/random-bytes-1.0.0.tgz#4f68a1dc0ae58bd3fb95848c30324db75d64360b" + integrity sha1-T2ih3Arli9P7lYSMMDJNt11kNgs= + +range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c" + integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== + dependencies: + bytes "3.1.0" + http-errors "1.7.3" + iconv-lite "0.4.24" + unpipe "1.0.0" + +rc@^1.2.8: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +readable-stream@2.3.7, 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== + 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" + +readable-stream@^3.0.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== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-web-to-node-stream@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" + integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw== + dependencies: + readable-stream "^3.6.0" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +readme-badger@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/readme-badger/-/readme-badger-0.3.0.tgz#87007f3c3e0c445e545134a305d8e3068fe9cd6e" + integrity sha512-+sMOLSs1imZUISZ2Rhz7qqVd77QtpcAPbGeIraFdgJmijb04YtdlPjGNBvDChTNtLbeQ6JNGQy3pOgslWfaP3g== + dependencies: + balanced-match "^1.0.0" + +rechoir@0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" + integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== + dependencies: + resolve "^1.9.0" + +redeyed@~2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b" + integrity sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs= + dependencies: + esprima "~4.0.0" + +redis-commands@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.7.0.tgz#15a6fea2d58281e27b1cd1acfb4b293e278c3a89" + integrity sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ== + +redis-errors@^1.0.0, redis-errors@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" + integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60= + +redis-parser@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" + integrity sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ= + dependencies: + redis-errors "^1.0.0" + +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== + +regenerator-runtime@^0.13.4: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +relateurl@^0.2.7: + version "0.2.7" + resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" + integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +require-all@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/require-all/-/require-all-3.0.0.tgz#473d49704be310115ce124f77383b1ebd8671312" + integrity sha1-Rz1JcEvjEBFc4ST3c4Ox69hnExI= + +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= + +resolve-alpn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/resolve-alpn/-/resolve-alpn-1.2.0.tgz#058bb0888d1cd4d12474e9a4b6eb17bdd5addc44" + integrity sha512-e4FNQs+9cINYMO5NMFc6kOUCdohjqFPSgMuwuZAOUWqrfWsen+Yjy5qZFkV5K7VO7tFSLKcUL97olkED7sCBHA== + +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-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.9.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +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== + dependencies: + 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== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +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== + +rev-hash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/rev-hash/-/rev-hash-3.0.0.tgz#951d73d02b9606ea4bbb7ee3d93c252cd8556ce5" + integrity sha512-s+87HfEKAu95TaTxnbCobn0/BkbzR23LHSwVdYvr8mn5+PPjzy+hTWyh92b5oaLgig9TKPe5d6ZcubsVBtUrZg== + +rfdc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" + integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +safe-buffer@5.1.2, 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== + +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== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +semver@^7.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== + dependencies: + lru-cache "^6.0.0" + +send@0.17.1: + version "0.17.1" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" + integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== + dependencies: + debug "2.6.9" + depd "~1.1.2" + destroy "~1.0.4" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "~1.7.2" + mime "1.6.0" + ms "2.1.1" + on-finished "~2.3.0" + range-parser "~1.2.1" + statuses "~1.5.0" + +sentence-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" + integrity sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + upper-case-first "^2.0.2" + +serve-static@^1.14.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" + integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== + dependencies: + encodeurl "~1.0.2" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.17.1" + +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= + +set-cookie-parser@^2.4.8: + version "2.4.8" + resolved "https://registry.yarnpkg.com/set-cookie-parser/-/set-cookie-parser-2.4.8.tgz#d0da0ed388bc8f24e706a391f9c9e252a13c58b2" + integrity sha512-edRH8mBKEWNVIVMKejNnuJxleqYE/ZSdcT8/Nem9/mmosx12pctd80s2Oy00KNZzrogMZS5mauK2/ymL1bvlvg== + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +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== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +sigmund@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= + +signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +slash@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" + integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slashes@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/slashes/-/slashes-2.0.2.tgz#c149dd3555bd236fdc3b43ec56e748e924425613" + integrity sha512-68p+QkFAQQRetIUzNXAdktNJr8AYLxJukjBegYQz8F7VATsBJG621UYtY/vS2j9jerxdJ1k6Tc25K4DXEw1d5w== + +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== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slick@^1.12.2: + version "1.12.2" + resolved "https://registry.yarnpkg.com/slick/-/slick-1.12.2.tgz#bd048ddb74de7d1ca6915faa4a57570b3550c2d7" + integrity sha1-vQSN23TefRymkV+qSldXCzVQwtc= + +slugify@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.6.0.tgz#6bdf8ed01dabfdc46425b67e3320b698832ff893" + integrity sha512-FkMq+MQc5hzYgM86nLuHI98Acwi3p4wX+a5BO9Hhw4JdK4L7WueIiZ4tXEobImPqBz2sVcV0+Mu3GRB30IGang== + +smpltmpl@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/smpltmpl/-/smpltmpl-1.0.2.tgz#b6e9d0eedab7827455c46c98fb8b9505ae6d4a82" + integrity sha512-Hq23NNgeZigOzIiX1dkb6W3gFn2/XQj43KhPxu65IMieG/gIwf/lQb1IudjYv0c/5LwJeS/mPayYzyo+8WJMxQ== + dependencies: + babel-code-frame "^6.26.0" + +snake-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sonic-boom@^1.0.2: + 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" + +sonic-boom@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-2.1.0.tgz#07b7b181b078aeb5f202019769e4088c70c4f0eb" + integrity sha512-x2j9LXx27EDlyZEC32gBM+scNVMdPutU7FIKV2BOTKCnPrp7bY5BsplCMQ4shYYR3IhDSIrEXoqb6GlS+z7KyQ== + dependencies: + atomic-sleep "^1.0.0" + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@^0.5.19: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.0, source-map@~0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +split-lines@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/split-lines/-/split-lines-2.1.0.tgz#3bc9dbf75637c8bae6ed5dcbc7dbd83956b72311" + integrity sha512-8dv+1zKgTpfTkOy8XZLFyWrfxO0NV/bj/3EaQ+hBrBxGv2DwiroljPjU8NlCr+59nLnsVm9WYT7lXKwe4TC6bw== + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +split2@^3.1.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + dependencies: + readable-stream "^3.0.0" + +sqlstring@2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/sqlstring/-/sqlstring-2.3.1.tgz#475393ff9e91479aea62dcaf0ca3d14983a7fb40" + integrity sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A= + +stack-trace@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= + +standard-as-callback@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45" + integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2": + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" + integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-attributes@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/stringify-attributes/-/stringify-attributes-2.0.0.tgz#0355827de224ec8a94ca81a267f92a3f5f778820" + integrity sha512-wrVfRV6sCCB6wr3gx8OgKsp/9dSWWbKr8ifLfOxEcd/BBoa8d5pAf4BZb/jQW1JZnoZImjvUdxdo3ikYHZmYiw== + dependencies: + escape-goat "^2.0.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +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-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +strtok3@^6.2.4: + version "6.2.4" + resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.2.4.tgz#302aea64c0fa25d12a0385069ba66253fdc38a81" + integrity sha512-GO8IcFF9GmFDvqduIspUBwCzCbqzegyVKIsSymcMgiZKeCfrN9SowtUoi8+b59WZMAjIzVZic/Ft97+pynR3Iw== + dependencies: + "@tokenizer/token" "^0.3.0" + peek-readable "^4.0.1" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +tar@^6.1.0: + version "6.1.8" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.1.8.tgz#4fc50cfe56511c538ce15b71e05eebe66530cbd4" + integrity sha512-sb9b0cp855NbkMJcskdSYA7b11Q8JsX4qe4pyUAfHp+Y6jBjJeek2ZVlwEfWayshEIwlIzXx0Fain3QG9JPm2A== + 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" + +tarn@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/tarn/-/tarn-3.0.1.tgz#ebac2c6dbc6977d34d4526e0a7814200386a8aec" + integrity sha512-6usSlV9KyHsspvwu2duKH+FMUhqJnAh6J5J/4MITl8s94iSUQTLkJggdiewKv4RyARQccnigV48Z+khiuVZDJw== + +term-size@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== + +tildify@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tildify/-/tildify-2.0.0.tgz#f205f3674d677ce698b7067a99e949ce03b4754a" + integrity sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw== + +tmp-cache@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/tmp-cache/-/tmp-cache-1.1.0.tgz#28b551cacdafee194540a47b47518b3fadaa049e" + integrity sha512-j040fkL/x+XAZQ9K3bKGEPwgYhOZNBQLa3NXEADUiuno9C+3N2JJA4bVPDREixp604G3/vTXWA3DIPpA9lu1RQ== + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +token-types@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.1.1.tgz#ef9e8c8e2e0ded9f1b3f8dbaa46a3228b113ba1a" + integrity sha512-hD+QyuUAyI2spzsI0B7gf/jJ2ggR4RjkAo37j3StuePhApJUwcWDjnHDOFdIWYSwNR28H14hpwm4EI+V1Ted1w== + dependencies: + "@tokenizer/token" "^0.3.0" + ieee754 "^1.2.1" + +truncatise@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/truncatise/-/truncatise-0.0.8.tgz#06514a0e98c57924f0c2d4ebaf7ff7a5f16ef39a" + integrity sha512-cXzueh9pzBCsLzhToB4X4gZCb3KYkrsAcBAX97JnazE74HOl3cpBJYEV7nabHeG/6/WXCU5Yujlde/WPBUwnsg== + +tslib@^2.0.3, tslib@^2.2.0, tslib@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + +tsse@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/tsse/-/tsse-2.0.0.tgz#757a1357473fecaffb5c70024acd179514779f64" + integrity sha512-KiYDxhCTbCUQWXtCSF2OWafC71C/ZUZP6TyCh/w7nPjzY1ZLY70KtDSfmePs3H4vSdxQotqdJvAkGAofxsQ05w== + dependencies: + safe-buffer "^5.1.1" + +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-is@^1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typescript@^4.3.4: + version "4.3.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.3.5.tgz#4d1c37cc16e893973c45a06886b7113234f119f4" + integrity sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA== + +uglify-js@^3.5.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.14.1.tgz#e2cb9fe34db9cb4cf7e35d1d26dfea28e09a7d06" + integrity sha512-JhS3hmcVaXlp/xSo3PKY5R0JqKs5M3IV+exdLHW99qKvKivPO4Z8qbej6mte17SOPqAOVMjt/XGgWacnFSzM3g== + +uid-safe@2.1.5: + version "2.1.5" + resolved "https://registry.yarnpkg.com/uid-safe/-/uid-safe-2.1.5.tgz#2b3d5c7240e8fc2e58f8aa269e5ee49c0857bd3a" + integrity sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA== + dependencies: + random-bytes "~1.0.0" + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + +unpipe@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upper-case-first@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" + integrity sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg== + dependencies: + tslib "^2.0.3" + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + +upper-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" + integrity sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg== + dependencies: + tslib "^2.0.3" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +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= + +uuid-random@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/uuid-random/-/uuid-random-1.3.2.tgz#96715edbaef4e84b1dcf5024b00d16f30220e2d0" + integrity sha512-UOzej0Le/UgkbWEO8flm+0y+G+ljUon1QWTEZOq1rnMAsxo2+SckbiZdKzAHHlVh6gJqI1TjC/xwgR50MuCrBQ== + +valid-data-url@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/valid-data-url/-/valid-data-url-3.0.1.tgz#826c1744e71b5632e847dd15dbd45b9fb38aa34f" + integrity sha512-jOWVmzVceKlVVdwjNSenT4PbGghU0SBIizAev8ofZVgivk/TVHXSbNL8LP6M3spZvkR9/QolkyJavGSX5Cs0UA== + +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= + dependencies: + builtins "^1.0.3" + +validator@^13.6.0: + version "13.6.0" + resolved "https://registry.yarnpkg.com/validator/-/validator-13.6.0.tgz#1e71899c14cdc7b2068463cb24c1cc16f6ec7059" + integrity sha512-gVgKbdbHgtxpRyR8K0O6oFZPhhB5tT1jeEHZR0Znr9Svg03U0+r9DXWMrnRAB+HtCStDQKlaIZm42tVsVjqtjg== + +vary@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw= + +web-resource-inliner@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/web-resource-inliner/-/web-resource-inliner-5.0.0.tgz#ac30db8096931f20a7c1b3ade54ff444e2e20f7b" + integrity sha512-AIihwH+ZmdHfkJm7BjSXiEClVt4zUFqX4YlFAzjL13wLtDuUneSaFvDBTbdYRecs35SiU7iNKbMnN+++wVfb6A== + dependencies: + ansi-colors "^4.1.1" + escape-goat "^3.0.0" + htmlparser2 "^4.0.0" + mime "^2.4.6" + node-fetch "^2.6.0" + valid-data-url "^3.0.0" + +webpack-merge@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" + integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== + dependencies: + lodash "^4.17.15" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +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== + dependencies: + 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= + +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== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +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== + +yaml@^2.0.0-1: + version "2.0.0-7" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.0.0-7.tgz#9799d9d85dfc8f01e4cc425e18e09215364beef1" + integrity sha512-RbI2Tm3hl9AoHY4wWyWvGvJfFIbHOzuzaxum6ez1A0vve+uXgNor03Wys4t+2sgjJSVSe+B2xerd1/dnvqHlOA== + +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@^16.1.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + 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" + +youch-terminal@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/youch-terminal/-/youch-terminal-1.1.1.tgz#1b16780be43816e8817adced966a9a36113827f8" + integrity sha512-LRJCIDkMH4AA6KtiX1JH3nBO8xCJx8le/CHI2hheBGHd7hcpP62owgUW5R9ObrxW0RLQT/VqPRO4mR92STkvAw== + dependencies: + kleur "^4.1.4" + +youch@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/youch/-/youch-2.2.2.tgz#cb87a359a5c524ebd35eb07ca3a1521dbc7e1a3e" + integrity sha512-/FaCeG3GkuJwaMR34GHVg0l8jCbafZLHiFowSjqLlqhC6OMyf2tPJBu8UirF7/NI9X/R5ai4QfEKUCOxMAGxZQ== + dependencies: + "@types/stack-trace" "0.0.29" + cookie "^0.4.1" + mustache "^4.2.0" + stack-trace "0.0.10" From a40687d0450f0166f4be496a348cd4b905b65cd6 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 16 Aug 2021 22:01:16 +0200 Subject: [PATCH 120/244] Add localKey --- app/Models/Announce.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/Models/Announce.ts b/app/Models/Announce.ts index ba80704..d0500cc 100644 --- a/app/Models/Announce.ts +++ b/app/Models/Announce.ts @@ -13,7 +13,9 @@ export default class Announce extends BaseModel { @column() public hoverColor: string - @belongsTo(() => Translation) + @belongsTo(() => Translation, { + localKey: 'id' + }) public message: BelongsTo @column() From 2e9dda67fbf8c963046e1d56945e2598169c5f66 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 16 Aug 2021 22:03:40 +0200 Subject: [PATCH 121/244] Add localKey --- app/Models/Announce.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/Announce.ts b/app/Models/Announce.ts index d0500cc..5913178 100644 --- a/app/Models/Announce.ts +++ b/app/Models/Announce.ts @@ -14,7 +14,7 @@ export default class Announce extends BaseModel { public hoverColor: string @belongsTo(() => Translation, { - localKey: 'id' + localKey: 'messageId' }) public message: BelongsTo From e22e0b55c5c801c696fc6774a9200aab414e73e2 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 16 Aug 2021 22:06:45 +0200 Subject: [PATCH 122/244] Change localKey to foreignKey --- app/Models/Announce.ts | 2 +- app/Validators/information/InformationUpdateValidator.ts | 3 +-- app/Validators/subscriber/SubscriberStoreValidator.ts | 1 + app/Validators/user/UserStoreValidator.ts | 1 + app/Validators/user/UserUpdateValidator.ts | 1 + 5 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/Models/Announce.ts b/app/Models/Announce.ts index 5913178..7634d8c 100644 --- a/app/Models/Announce.ts +++ b/app/Models/Announce.ts @@ -14,7 +14,7 @@ export default class Announce extends BaseModel { public hoverColor: string @belongsTo(() => Translation, { - localKey: 'messageId' + foreignKey: 'messageId' }) public message: BelongsTo diff --git a/app/Validators/information/InformationUpdateValidator.ts b/app/Validators/information/InformationUpdateValidator.ts index c5bc5c5..4964026 100644 --- a/app/Validators/information/InformationUpdateValidator.ts +++ b/app/Validators/information/InformationUpdateValidator.ts @@ -4,8 +4,7 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' export default class InformationUpdateValidator { public schema = schema.create({ age: schema.number.optional(), - code: schema.string.optional(), - hiring_color: schema.string.optional() + code: schema.string.optional() }) public messages = { required: 'The field {{field}} is required' diff --git a/app/Validators/subscriber/SubscriberStoreValidator.ts b/app/Validators/subscriber/SubscriberStoreValidator.ts index 07cfb86..d4b76dd 100755 --- a/app/Validators/subscriber/SubscriberStoreValidator.ts +++ b/app/Validators/subscriber/SubscriberStoreValidator.ts @@ -11,6 +11,7 @@ export default class SubscriberStoreValidator { }) ]) }) + public messages = { required: 'The field {{field}} is required' } diff --git a/app/Validators/user/UserStoreValidator.ts b/app/Validators/user/UserStoreValidator.ts index aa6bc92..a353667 100755 --- a/app/Validators/user/UserStoreValidator.ts +++ b/app/Validators/user/UserStoreValidator.ts @@ -12,6 +12,7 @@ export default class UserStoreValidator { }) ]) }) + public messages = { required: 'The field {{field}} is required', 'email.email': 'The email must be valid', diff --git a/app/Validators/user/UserUpdateValidator.ts b/app/Validators/user/UserUpdateValidator.ts index b04aaa6..8df7a4e 100755 --- a/app/Validators/user/UserUpdateValidator.ts +++ b/app/Validators/user/UserUpdateValidator.ts @@ -22,6 +22,7 @@ export default class UserUpdateValidator { confirmation_token: schema.string.optional({ trim: true, escape: true }), remember_me: schema.string.optional({ trim: true, escape: true }), }) + public messages = { required: 'The field {{field}} is required', 'email.email': 'The email must be valid', From 09e5b2f76fc3384aec25dd7bdd93e0bca2ce3485 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 16 Aug 2021 22:32:08 +0200 Subject: [PATCH 123/244] Rework migrations schemes --- database/migrations/1608409476823_locations.ts | 6 +++--- database/migrations/1608415261417_projects.ts | 13 +++++++++---- database/migrations/1618661863952_forms.ts | 8 ++++---- database/migrations/1625078903131_users.ts | 5 ++++- database/migrations/1625078908619_api_tokens.ts | 6 +++++- .../1625146912533_guestbook_messages.ts | 2 +- .../migrations/1628110081266_translations.ts | 2 +- database/migrations/1628110400158_projects.ts | 17 ----------------- database/migrations/1628759408774_announces.ts | 4 ++-- database/migrations/1628936238073_skills.ts | 4 ++-- .../migrations/1628945210540_informations.ts | 2 +- 11 files changed, 32 insertions(+), 37 deletions(-) delete mode 100644 database/migrations/1628110400158_projects.ts diff --git a/database/migrations/1608409476823_locations.ts b/database/migrations/1608409476823_locations.ts index de1d485..0b44e62 100644 --- a/database/migrations/1608409476823_locations.ts +++ b/database/migrations/1608409476823_locations.ts @@ -6,9 +6,9 @@ export default class Locations extends BaseSchema { public async up () { this.schema.createTable(this.tableName, (table) => { table.increments('id').primary() - table.string('place') - table.string('left') - table.date('since') + table.string('place').notNullable() + table.string('left').notNullable() + table.date('since').notNullable() table.timestamps(true, true) }) } diff --git a/database/migrations/1608415261417_projects.ts b/database/migrations/1608415261417_projects.ts index 85919de..ec8e071 100644 --- a/database/migrations/1608415261417_projects.ts +++ b/database/migrations/1608415261417_projects.ts @@ -6,10 +6,15 @@ export default class Projects extends BaseSchema { public async up () { this.schema.createTable(this.tableName, (table) => { table.increments('id').primary() - table.string('name') - table.string('description') - table.string('url') - table.integer('progress') + table.string('name').notNullable() + table.string('description').notNullable() + table.string('url').notNullable() + table.integer('progress').notNullable() + table + .integer('file_id') + .unsigned() + .references('files.id') + .onDelete('CASCADE') table.timestamps(true, true) }) } diff --git a/database/migrations/1618661863952_forms.ts b/database/migrations/1618661863952_forms.ts index d59a0ed..5f472c8 100644 --- a/database/migrations/1618661863952_forms.ts +++ b/database/migrations/1618661863952_forms.ts @@ -6,10 +6,10 @@ export default class Forms extends BaseSchema { public async up () { this.schema.createTable(this.tableName, (table) => { table.increments('id').primary() - table.string('name') - table.string('email') - table.string('subject') - table.string('content') + table.string('name').notNullable() + table.string('email').notNullable() + table.string('subject').notNullable() + table.string('content').notNullable() table.timestamps(true, true) }) } diff --git a/database/migrations/1625078903131_users.ts b/database/migrations/1625078903131_users.ts index ba44cb0..1f4d68c 100644 --- a/database/migrations/1625078903131_users.ts +++ b/database/migrations/1625078903131_users.ts @@ -9,7 +9,10 @@ export default class Users extends BaseSchema { table.increments('id').primary() table.string('username', 255).notNullable() table.string('email', 255).notNullable() - table.string('password', 180).defaultTo(this.randomPassword()).notNullable() + table + .string('password', 180) + .defaultTo(this.randomPassword()) + .notNullable() table.boolean('is_confirmed').defaultTo(false).notNullable() table.string('remember_me_token').defaultTo(null).nullable() table.string('confirmation_token').defaultTo(null).nullable() diff --git a/database/migrations/1625078908619_api_tokens.ts b/database/migrations/1625078908619_api_tokens.ts index 96fd16c..5278eb3 100644 --- a/database/migrations/1625078908619_api_tokens.ts +++ b/database/migrations/1625078908619_api_tokens.ts @@ -6,7 +6,11 @@ export default class ApiTokens extends BaseSchema { public async up () { this.schema.createTable(this.tableName, (table) => { table.increments('id').primary() - table.integer('user_id').unsigned().references('id').inTable('users').onDelete('CASCADE') + table.integer('user_id') + .unsigned() + .references('id') + .inTable('users') + .onDelete('CASCADE') table.string('name').notNullable() table.string('type').notNullable() table.string('token', 64).notNullable() diff --git a/database/migrations/1625146912533_guestbook_messages.ts b/database/migrations/1625146912533_guestbook_messages.ts index 0e8bd0b..8ef518d 100644 --- a/database/migrations/1625146912533_guestbook_messages.ts +++ b/database/migrations/1625146912533_guestbook_messages.ts @@ -11,7 +11,7 @@ export default class GuestbookMessages extends BaseSchema { .unsigned() .references('users.id') .onDelete('CASCADE') - table.text('message') + table.text('message').notNullable() table.timestamps(true, true) }) } diff --git a/database/migrations/1628110081266_translations.ts b/database/migrations/1628110081266_translations.ts index 7a80bfc..218bec2 100644 --- a/database/migrations/1628110081266_translations.ts +++ b/database/migrations/1628110081266_translations.ts @@ -5,7 +5,7 @@ export default class Translations extends BaseSchema { public async up () { this.schema.createTable(this.tableName, (table) => { - table.increments('id') + table.increments('id').primary() table.string('code').notNullable() table.string('french').defaultTo('Traduction manquante') table.string('english').defaultTo('Missing translation') diff --git a/database/migrations/1628110400158_projects.ts b/database/migrations/1628110400158_projects.ts deleted file mode 100644 index 6e4cc0e..0000000 --- a/database/migrations/1628110400158_projects.ts +++ /dev/null @@ -1,17 +0,0 @@ -import BaseSchema from '@ioc:Adonis/Lucid/Schema' - -export default class Projects extends BaseSchema { - protected tableName = 'projects' - - public async up () { - this.schema.table(this.tableName, (table) => { - table.integer('file_id').unsigned().references('files.id').onDelete('CASCADE') - }) - } - - public async down () { - this.schema.table(this.tableName, (table) => { - table.dropColumn('file_id') - }) - } -} diff --git a/database/migrations/1628759408774_announces.ts b/database/migrations/1628759408774_announces.ts index f24b512..01994cd 100644 --- a/database/migrations/1628759408774_announces.ts +++ b/database/migrations/1628759408774_announces.ts @@ -5,8 +5,8 @@ export default class Announces extends BaseSchema { public async up () { this.schema.createTable(this.tableName, (table) => { - table.increments('id') - table.string('color') + table.increments('id').primary() + table.string('color').notNullable() table.string('hover_color') table .integer('translation_id') diff --git a/database/migrations/1628936238073_skills.ts b/database/migrations/1628936238073_skills.ts index 3e54d20..56195cb 100644 --- a/database/migrations/1628936238073_skills.ts +++ b/database/migrations/1628936238073_skills.ts @@ -5,8 +5,8 @@ export default class Skills extends BaseSchema { public async up () { this.schema.createTable(this.tableName, (table) => { - table.increments('id') - table.string('name') + table.increments('id').primary() + table.string('name').notNullable() table .integer('file_id') .unsigned() diff --git a/database/migrations/1628945210540_informations.ts b/database/migrations/1628945210540_informations.ts index 9cfbd47..01bfd41 100644 --- a/database/migrations/1628945210540_informations.ts +++ b/database/migrations/1628945210540_informations.ts @@ -5,7 +5,7 @@ export default class Informations extends BaseSchema { public async up () { this.schema.createTable(this.tableName, (table) => { - table.increments('id') + table.increments('id').primary() table.integer('age').notNullable() table .integer('translation_id') From 7a5a246177f5e94491a1bbb31da9200517c05d76 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 16 Aug 2021 22:32:30 +0200 Subject: [PATCH 124/244] Working and optimise --- app/Controllers/Http/AnnouncesController.ts | 8 +++----- app/Models/Announce.ts | 4 +++- app/Tasks/getTranslation.ts | 6 +----- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/app/Controllers/Http/AnnouncesController.ts b/app/Controllers/Http/AnnouncesController.ts index 4ff638e..8be227b 100644 --- a/app/Controllers/Http/AnnouncesController.ts +++ b/app/Controllers/Http/AnnouncesController.ts @@ -22,9 +22,7 @@ export default class AnnouncesController { public async store ({ request, response }: HttpContextContract) { const data = await request.validate(AnnounceStoreValidator) const announce = await Announce.create(data) - - const translation = await getTranslation(data.code) - await announce.related('message').associate(translation) + await announce.related('message').associate(await getTranslation(data.code)) const cover = await File.findBy('label', data.cover) if (cover) await announce.related('cover').associate(cover) @@ -48,12 +46,12 @@ export default class AnnouncesController { const announce = await Announce.findOrFail(params.id) if (data.code) { - const translation = await getTranslation(data.code) - await announce.related('message').associate(translation) + await announce.related('message').associate(await getTranslation(data.code)) } const cover = await File.findBy('label', data.cover) if (cover) await announce.related('cover').associate(cover) + await announce.merge(data).save() return response.status(200).send({ diff --git a/app/Models/Announce.ts b/app/Models/Announce.ts index 7634d8c..f33e14d 100644 --- a/app/Models/Announce.ts +++ b/app/Models/Announce.ts @@ -21,7 +21,9 @@ export default class Announce extends BaseModel { @column() public messageId: number - @belongsTo(() => File) + @belongsTo(() => File, { + foreignKey: 'coverId' + }) public cover: BelongsTo @column() diff --git a/app/Tasks/getTranslation.ts b/app/Tasks/getTranslation.ts index f002a65..fe127d9 100644 --- a/app/Tasks/getTranslation.ts +++ b/app/Tasks/getTranslation.ts @@ -1,9 +1,5 @@ import Translation from "App/Models/Translation"; export default async function getTranslation(code: string): Promise { - let translation = await Translation.findBy('code', code) - if (!translation) { - translation = await Translation.create({code: code}) - } - return translation + return await Translation.firstOrNew({code}, {code}) } From 98f9402de4578ad8d1154ed570626536cc57a8af Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 16 Aug 2021 22:32:44 +0200 Subject: [PATCH 125/244] Added Experiences and Formations --- app/Controllers/Http/ExperiencesController.ts | 60 ++++++++++++++++ app/Controllers/Http/FormationsController.ts | 68 +++++++++++++++++++ app/Models/Experience.ts | 34 ++++++++++ app/Models/Formation.ts | 39 +++++++++++ .../experience/ExperienceStoreValidator.ts | 19 ++++++ .../experience/ExperienceUpdateValidator.ts | 39 +++-------- .../formation/FormationStoreValidator.ts | 19 ++++++ .../formation/FormationUpdateValidator.ts | 19 ++++++ .../migrations/1629143076777_experiences.ts | 25 +++++++ .../migrations/1629145139594_formations.ts | 29 ++++++++ start/routes/artsite.ts | 4 ++ 11 files changed, 324 insertions(+), 31 deletions(-) create mode 100644 app/Controllers/Http/ExperiencesController.ts create mode 100644 app/Controllers/Http/FormationsController.ts create mode 100644 app/Models/Experience.ts create mode 100644 app/Models/Formation.ts create mode 100644 app/Validators/experience/ExperienceStoreValidator.ts create mode 100644 app/Validators/formation/FormationStoreValidator.ts create mode 100644 app/Validators/formation/FormationUpdateValidator.ts create mode 100644 database/migrations/1629143076777_experiences.ts create mode 100644 database/migrations/1629145139594_formations.ts diff --git a/app/Controllers/Http/ExperiencesController.ts b/app/Controllers/Http/ExperiencesController.ts new file mode 100644 index 0000000..d27ffb0 --- /dev/null +++ b/app/Controllers/Http/ExperiencesController.ts @@ -0,0 +1,60 @@ +import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; +import Experience from "App/Models/Experience"; +import ExperienceStoreValidator from "App/Validators/experience/ExperienceStoreValidator"; +import getTranslation from "App/Tasks/getTranslation"; +import ExperienceUpdateValidator from "App/Validators/experience/ExperienceUpdateValidator"; + +export default class ExperiencesController { + + public async index ({ response }: HttpContextContract) { + const experiences = await Experience + .query() + .orderBy('begin_date', 'desc') + .preload('title') + return response.status(200).send({ + experiences: experiences + }) + } + + public async store ({ request, response }: HttpContextContract) { + const data = await request.validate(ExperienceStoreValidator) + const experience = await Experience.create(data) + await experience.related('title').associate(await getTranslation(data.title)) + + return response.status(200).send({ + experience: experience + }) + } + + public async show ({ params, response }: HttpContextContract) { + const experience = await Experience.findOrFail(params.id) + experience.load('title') + return response.status(200).send({ + experience + }) + } + + public async update ({ request, params, response }: HttpContextContract) { + const data = await request.validate(ExperienceUpdateValidator) + const experience = await Experience.findOrFail(params.id) + + if (data.title) { + await experience.related('title').associate(await getTranslation(data.title)) + } + + await experience.merge(data).save() + + return response.status(200).send({ + experience + }) + } + + public async destroy ({ response, params }: HttpContextContract) { + const experience = await Experience.findOrFail(params.id) + await experience.delete() + return response.status(200).send({ + message: 'Experience successfully deleted!' + }) + } + +} diff --git a/app/Controllers/Http/FormationsController.ts b/app/Controllers/Http/FormationsController.ts new file mode 100644 index 0000000..e392e2b --- /dev/null +++ b/app/Controllers/Http/FormationsController.ts @@ -0,0 +1,68 @@ +import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; +import getTranslation from "App/Tasks/getTranslation"; +import FormationStoreValidator from "App/Validators/formation/FormationStoreValidator"; +import FormationUpdateValidator from "App/Validators/formation/FormationUpdateValidator"; +import Formation from "App/Models/Formation"; + +export default class FormationsController { + + public async index ({ response }: HttpContextContract) { + const formations = await Formation + .query() + .orderBy('begin_date', 'desc') + .preload('title') + .preload('description') + return response.status(200).send({ + formations: formations + }) + } + + public async store ({ request, response }: HttpContextContract) { + const data = await request.validate(FormationStoreValidator) + const formation = await Formation.create(data) + + await formation.related('title').associate(await getTranslation(data.title)) + await formation.related('description').associate(await getTranslation(data.description)) + + return response.status(200).send({ + formation: formation + }) + } + + public async show ({ params, response }: HttpContextContract) { + const formation = await Formation.findOrFail(params.id) + formation.load('title') + formation.load('description') + return response.status(200).send({ + formation + }) + } + + public async update ({ request, params, response }: HttpContextContract) { + const data = await request.validate(FormationUpdateValidator) + const formation = await Formation.findOrFail(params.id) + + if (data.title) { + await formation.related('title').associate(await getTranslation(data.title)) + } + + if (data.description) { + await formation.related('description').associate(await getTranslation(data.description)) + } + + await formation.merge(data).save() + + return response.status(200).send({ + formation + }) + } + + public async destroy ({ response, params }: HttpContextContract) { + const formation = await Formation.findOrFail(params.id) + await formation.delete() + return response.status(200).send({ + message: 'Formation successfully deleted!' + }) + } + +} diff --git a/app/Models/Experience.ts b/app/Models/Experience.ts new file mode 100644 index 0000000..c11cd71 --- /dev/null +++ b/app/Models/Experience.ts @@ -0,0 +1,34 @@ +import { DateTime } from 'luxon' +import {BaseModel, BelongsTo, belongsTo, column} from '@ioc:Adonis/Lucid/Orm' +import Translation from "App/Models/Translation"; + +export default class Experience extends BaseModel { + @column({ isPrimary: true }) + public id: number + + @belongsTo(() => Translation, { + foreignKey: 'titleId' + }) + public title: BelongsTo + + @column() + public titleId: number + + @column() + public company: string + + @column() + public location: string + + @column() + public beginDate: string + + @column() + public endDate: string + + @column.dateTime({ autoCreate: true }) + public createdAt: DateTime + + @column.dateTime({ autoCreate: true, autoUpdate: true }) + public updatedAt: DateTime +} diff --git a/app/Models/Formation.ts b/app/Models/Formation.ts new file mode 100644 index 0000000..eab04c5 --- /dev/null +++ b/app/Models/Formation.ts @@ -0,0 +1,39 @@ +import { DateTime } from 'luxon' +import {BaseModel, BelongsTo, belongsTo, column} from '@ioc:Adonis/Lucid/Orm' +import Translation from "App/Models/Translation"; + +export default class Formation extends BaseModel { + @column({ isPrimary: true }) + public id: number + + @belongsTo(() => Translation, { + foreignKey: 'titleId' + }) + public title: BelongsTo + + @column() + public titleId: number + + @belongsTo(() => Translation, { + foreignKey: 'descriptionId' + }) + public description: BelongsTo + + @column() + public descriptionId: number + + @column() + public location: string + + @column() + public beginDate: string + + @column() + public endDate: string + + @column.dateTime({ autoCreate: true }) + public createdAt: DateTime + + @column.dateTime({ autoCreate: true, autoUpdate: true }) + public updatedAt: DateTime +} diff --git a/app/Validators/experience/ExperienceStoreValidator.ts b/app/Validators/experience/ExperienceStoreValidator.ts new file mode 100644 index 0000000..1bd3e2e --- /dev/null +++ b/app/Validators/experience/ExperienceStoreValidator.ts @@ -0,0 +1,19 @@ +import { schema } from '@ioc:Adonis/Core/Validator' +import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' + +export default class ExperienceStoreValidator { + constructor (protected ctx: HttpContextContract) { + } + + public schema = schema.create({ + title: schema.string(), + company: schema.string(), + location: schema.string(), + beginDate: schema.string(), + endDate: schema.string() + }) + + public messages = { + required: 'The field {{field}} is required' + } +} diff --git a/app/Validators/experience/ExperienceUpdateValidator.ts b/app/Validators/experience/ExperienceUpdateValidator.ts index 3c6af58..03bec85 100644 --- a/app/Validators/experience/ExperienceUpdateValidator.ts +++ b/app/Validators/experience/ExperienceUpdateValidator.ts @@ -5,38 +5,15 @@ export default class ExperienceUpdateValidator { constructor (protected ctx: HttpContextContract) { } - /* - * Define schema to validate the "shape", "type", "formatting" and "integrity" of data. - * - * For example: - * 1. The username must be of data type string. But then also, it should - * not contain special characters or numbers. - * ``` - * schema.string({}, [ rules.alpha() ]) - * ``` - * - * 2. The email must be of data type string, formatted as a valid - * email. But also, not used by any other user. - * ``` - * schema.string({}, [ - * rules.email(), - * rules.unique({ table: 'users', column: 'email' }), - * ]) - * ``` - */ public schema = schema.create({ + title: schema.string.optional(), + company: schema.string.optional(), + location: schema.string.optional(), + beginDate: schema.string.optional(), + endDate: schema.string.optional() }) - /** - * Custom messages for validation failures. You can make use of dot notation `(.)` - * for targeting nested fields and array expressions `(*)` for targeting all - * children of an array. For example: - * - * { - * 'profile.username.required': 'Username is required', - * 'scores.*.number': 'Define scores as valid numbers' - * } - * - */ - public messages = {} + public messages = { + required: 'The field {{field}} is required' + } } diff --git a/app/Validators/formation/FormationStoreValidator.ts b/app/Validators/formation/FormationStoreValidator.ts new file mode 100644 index 0000000..613af84 --- /dev/null +++ b/app/Validators/formation/FormationStoreValidator.ts @@ -0,0 +1,19 @@ +import { schema } from '@ioc:Adonis/Core/Validator' +import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' + +export default class FormationStoreValidator { + constructor (protected ctx: HttpContextContract) { + } + + public schema = schema.create({ + title: schema.string(), + description: schema.string(), + location: schema.string(), + beginDate: schema.string(), + endDate: schema.string() + }) + + public messages = { + required: 'The field {{field}} is required' + } +} diff --git a/app/Validators/formation/FormationUpdateValidator.ts b/app/Validators/formation/FormationUpdateValidator.ts new file mode 100644 index 0000000..f331d41 --- /dev/null +++ b/app/Validators/formation/FormationUpdateValidator.ts @@ -0,0 +1,19 @@ +import { schema } from '@ioc:Adonis/Core/Validator' +import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' + +export default class FormationUpdateValidator { + constructor (protected ctx: HttpContextContract) { + } + + public schema = schema.create({ + title: schema.string.optional(), + description: schema.string.optional(), + location: schema.string.optional(), + beginDate: schema.string.optional(), + endDate: schema.string.optional() + }) + + public messages = { + required: 'The field {{field}} is required' + } +} diff --git a/database/migrations/1629143076777_experiences.ts b/database/migrations/1629143076777_experiences.ts new file mode 100644 index 0000000..18a90dc --- /dev/null +++ b/database/migrations/1629143076777_experiences.ts @@ -0,0 +1,25 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class Experiences extends BaseSchema { + protected tableName = 'experiences' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table + .increments('title_id') + .unsigned() + .references('translations.id') + .onDelete('CASCADE') + table.string('company').notNullable() + table.string('location').notNullable() + table.string('begin_date').notNullable() + table.string('end_date').defaultTo('Today').notNullable() + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/database/migrations/1629145139594_formations.ts b/database/migrations/1629145139594_formations.ts new file mode 100644 index 0000000..2360fd9 --- /dev/null +++ b/database/migrations/1629145139594_formations.ts @@ -0,0 +1,29 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class Formations extends BaseSchema { + protected tableName = 'formations' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table + .integer('title_id') + .unsigned() + .references('translations.id') + .onDelete('CASCADE') + table + .integer('description_id') + .unsigned() + .references('translations.id') + .onDelete('CASCADE') + table.string('location').notNullable() + table.string('begin_date').notNullable() + table.string('end_date').defaultTo('Today').notNullable() + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts index 3bf6630..56fd905 100644 --- a/start/routes/artsite.ts +++ b/start/routes/artsite.ts @@ -5,6 +5,10 @@ Route.group(() => { Route.resource('/announces', 'AnnouncesController').except(['edit', 'create']) + Route.resource('/experiences', 'ExperiencesController').except(['edit', 'create']) + + Route.resource('/formations', 'FormationsController').except(['edit', 'create']) + Route.resource('/skills', 'SkillsController').except(['edit', 'create']) Route.resource('/projects', 'ProjectsController').except(['edit', 'create']) From 2c4a7c0ddad0763d3c916a8553ab5ed089473b43 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 16 Aug 2021 22:38:58 +0200 Subject: [PATCH 126/244] Added Tags --- app/Controllers/Http/TagsController.ts | 58 +++++++++++++++++++++++ app/Models/Tag.ts | 21 ++++++++ app/Validators/tag/TagStoreValidator.ts | 15 ++++++ app/Validators/tag/TagUpdateValidator.ts | 15 ++++++ database/migrations/1629146001824_tags.ts | 21 ++++++++ 5 files changed, 130 insertions(+) create mode 100644 app/Controllers/Http/TagsController.ts create mode 100644 app/Models/Tag.ts create mode 100644 app/Validators/tag/TagStoreValidator.ts create mode 100644 app/Validators/tag/TagUpdateValidator.ts create mode 100644 database/migrations/1629146001824_tags.ts diff --git a/app/Controllers/Http/TagsController.ts b/app/Controllers/Http/TagsController.ts new file mode 100644 index 0000000..6b12d0f --- /dev/null +++ b/app/Controllers/Http/TagsController.ts @@ -0,0 +1,58 @@ +import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; +import getTranslation from "App/Tasks/getTranslation"; +import TagStoreValidator from "App/Validators/tag/TagStoreValidator"; +import TagUpdateValidator from "App/Validators/tag/TagUpdateValidator"; +import Tag from "App/Models/Tag"; + +export default class TagsController { + + public async index ({ response }: HttpContextContract) { + const tags = await Tag + .query() + .preload('label') + return response.status(200).send({ + tags: tags + }) + } + + public async store ({ request, response }: HttpContextContract) { + const data = await request.validate(TagStoreValidator) + const tag = await Tag.create({}) + + await tag.related('label').associate(await getTranslation(data.label)) + + return response.status(200).send({ + tag: tag + }) + } + + public async show ({ params, response }: HttpContextContract) { + const tag = await Tag.findOrFail(params.id) + tag.load('label') + return response.status(200).send({ + tag + }) + } + + public async update ({ request, params, response }: HttpContextContract) { + const data = await request.validate(TagUpdateValidator) + const tag = await Tag.findOrFail(params.id) + + if (data.label) { + await tag.related('label').associate(await getTranslation(data.label)) + } + + return response.status(200).send({ + tag + }) + } + + public async destroy ({ response, params }: HttpContextContract) { + const tag = await Tag.findOrFail(params.id) + await tag.delete() + return response.status(200).send({ + message: 'Tag successfully deleted!' + }) + } + +} diff --git a/app/Models/Tag.ts b/app/Models/Tag.ts new file mode 100644 index 0000000..1e27f59 --- /dev/null +++ b/app/Models/Tag.ts @@ -0,0 +1,21 @@ +import { DateTime } from 'luxon' +import {BaseModel, BelongsTo, belongsTo, column} from '@ioc:Adonis/Lucid/Orm' +import Translation from "App/Models/Translation"; + +export default class Tag extends BaseModel { + @column({ isPrimary: true }) + public id: number + + @belongsTo(() => Translation, { + foreignKey: 'labelId' + }) + public label: BelongsTo + + public labelId: number + + @column.dateTime({ autoCreate: true }) + public createdAt: DateTime + + @column.dateTime({ autoCreate: true, autoUpdate: true }) + public updatedAt: DateTime +} diff --git a/app/Validators/tag/TagStoreValidator.ts b/app/Validators/tag/TagStoreValidator.ts new file mode 100644 index 0000000..1551d36 --- /dev/null +++ b/app/Validators/tag/TagStoreValidator.ts @@ -0,0 +1,15 @@ +import { schema } from '@ioc:Adonis/Core/Validator' +import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' + +export default class TagStoreValidator { + constructor (protected ctx: HttpContextContract) { + } + + public schema = schema.create({ + label: schema.string() + }) + + public messages = { + required: 'The field {{field}} is required', + } +} diff --git a/app/Validators/tag/TagUpdateValidator.ts b/app/Validators/tag/TagUpdateValidator.ts new file mode 100644 index 0000000..f9a9d17 --- /dev/null +++ b/app/Validators/tag/TagUpdateValidator.ts @@ -0,0 +1,15 @@ +import { schema } from '@ioc:Adonis/Core/Validator' +import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' + +export default class TagUpdateValidator { + constructor (protected ctx: HttpContextContract) { + } + + public schema = schema.create({ + label: schema.string.optional() + }) + + public messages = { + required: 'The field {{field}} is required', + } +} diff --git a/database/migrations/1629146001824_tags.ts b/database/migrations/1629146001824_tags.ts new file mode 100644 index 0000000..da82622 --- /dev/null +++ b/database/migrations/1629146001824_tags.ts @@ -0,0 +1,21 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class Tags extends BaseSchema { + protected tableName = 'tags' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table + .integer('label_id') + .unsigned() + .references('translations.id') + .onDelete('CASCADE') + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} From bd6aa52cfa79cd8c52fc4bae58fdf9e15e7f28f4 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 16 Aug 2021 22:40:00 +0200 Subject: [PATCH 127/244] Remove useless table --- .../migrations/1625078908619_api_tokens.ts | 25 ------------------- 1 file changed, 25 deletions(-) delete mode 100644 database/migrations/1625078908619_api_tokens.ts diff --git a/database/migrations/1625078908619_api_tokens.ts b/database/migrations/1625078908619_api_tokens.ts deleted file mode 100644 index 5278eb3..0000000 --- a/database/migrations/1625078908619_api_tokens.ts +++ /dev/null @@ -1,25 +0,0 @@ -import BaseSchema from '@ioc:Adonis/Lucid/Schema' - -export default class ApiTokens extends BaseSchema { - protected tableName = 'api_tokens' - - public async up () { - this.schema.createTable(this.tableName, (table) => { - table.increments('id').primary() - table.integer('user_id') - .unsigned() - .references('id') - .inTable('users') - .onDelete('CASCADE') - table.string('name').notNullable() - table.string('type').notNullable() - table.string('token', 64).notNullable() - table.timestamp('expires_at', { useTz: true }).nullable() - table.timestamps(true, true) - }) - } - - public async down () { - this.schema.dropTable(this.tableName) - } -} From e246a288f3325a21d4076b718c8a1ac99c58c089 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 16 Aug 2021 22:40:22 +0200 Subject: [PATCH 128/244] Add tags in routes --- start/routes/artsite.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts index 56fd905..cf68c3b 100644 --- a/start/routes/artsite.ts +++ b/start/routes/artsite.ts @@ -9,6 +9,8 @@ Route.group(() => { Route.resource('/formations', 'FormationsController').except(['edit', 'create']) + Route.resource('/tags', 'TagsController').except(['edit', 'create']) + Route.resource('/skills', 'SkillsController').except(['edit', 'create']) Route.resource('/projects', 'ProjectsController').except(['edit', 'create']) From 85a9d97d8001c3da6580976e4eff733e1e9b177c Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 16 Aug 2021 22:48:34 +0200 Subject: [PATCH 129/244] fix error --- database/migrations/1629143076777_experiences.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/migrations/1629143076777_experiences.ts b/database/migrations/1629143076777_experiences.ts index 18a90dc..b32feca 100644 --- a/database/migrations/1629143076777_experiences.ts +++ b/database/migrations/1629143076777_experiences.ts @@ -7,7 +7,7 @@ export default class Experiences extends BaseSchema { this.schema.createTable(this.tableName, (table) => { table.increments('id').primary() table - .increments('title_id') + .integer('title_id') .unsigned() .references('translations.id') .onDelete('CASCADE') From 9a438587e07c4e438103c7aa7075b19e66192379 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 16 Aug 2021 23:06:46 +0200 Subject: [PATCH 130/244] fix error --- database/migrations/1628759408774_announces.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/database/migrations/1628759408774_announces.ts b/database/migrations/1628759408774_announces.ts index 01994cd..f93a92a 100644 --- a/database/migrations/1628759408774_announces.ts +++ b/database/migrations/1628759408774_announces.ts @@ -9,12 +9,12 @@ export default class Announces extends BaseSchema { table.string('color').notNullable() table.string('hover_color') table - .integer('translation_id') + .integer('message_id') .unsigned() .references('translations.id') .onDelete('CASCADE') table - .integer('file_id') + .integer('cover_id') .unsigned() .references('files.id') .onDelete('CASCADE') From 5c3dd3775824abf6d032953d0eed4a7a6dbfd06b Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 16 Aug 2021 23:24:39 +0200 Subject: [PATCH 131/244] Add pivot table --- app/Models/Post.ts | 6 ++++- app/Models/Project.ts | 6 ++++- ...711010_posts.ts => 1629148762478_posts.ts} | 0 database/migrations/1629148789980_post_tag.ts | 27 +++++++++++++++++++ .../migrations/1629149023037_project_tag.ts | 27 +++++++++++++++++++ 5 files changed, 64 insertions(+), 2 deletions(-) rename database/migrations/{1605956711010_posts.ts => 1629148762478_posts.ts} (100%) create mode 100644 database/migrations/1629148789980_post_tag.ts create mode 100644 database/migrations/1629149023037_project_tag.ts diff --git a/app/Models/Post.ts b/app/Models/Post.ts index 465c912..f6e36f7 100755 --- a/app/Models/Post.ts +++ b/app/Models/Post.ts @@ -1,10 +1,14 @@ import { DateTime } from 'luxon' -import {BaseModel, column} from '@ioc:Adonis/Lucid/Orm' +import {BaseModel, column, manyToMany, ManyToMany} from '@ioc:Adonis/Lucid/Orm' +import Tag from "App/Models/Tag"; export default class Post extends BaseModel { @column({ isPrimary: true }) public id: number + @manyToMany(() => Tag) + public tags: ManyToMany + @column() public slug: string diff --git a/app/Models/Project.ts b/app/Models/Project.ts index 1e41866..128dd21 100755 --- a/app/Models/Project.ts +++ b/app/Models/Project.ts @@ -1,6 +1,7 @@ import {DateTime} from 'luxon' -import {BaseModel, BelongsTo, belongsTo, column} from '@ioc:Adonis/Lucid/Orm' +import {BaseModel, BelongsTo, belongsTo, column, ManyToMany, manyToMany} from '@ioc:Adonis/Lucid/Orm' import File from "App/Models/File"; +import Tag from "App/Models/Tag"; export default class Project extends BaseModel { @column({ isPrimary: true }) @@ -24,6 +25,9 @@ export default class Project extends BaseModel { @column() public fileId: number + @manyToMany(() => Tag) + public tags: ManyToMany + @column.dateTime({ autoCreate: true }) public createdAt: DateTime diff --git a/database/migrations/1605956711010_posts.ts b/database/migrations/1629148762478_posts.ts similarity index 100% rename from database/migrations/1605956711010_posts.ts rename to database/migrations/1629148762478_posts.ts diff --git a/database/migrations/1629148789980_post_tag.ts b/database/migrations/1629148789980_post_tag.ts new file mode 100644 index 0000000..7dd6b2c --- /dev/null +++ b/database/migrations/1629148789980_post_tag.ts @@ -0,0 +1,27 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class PostTags extends BaseSchema { + protected tableName = 'post_tag' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table + .integer('post_id') + .unsigned() + .references('posts.id') + .onDelete('CASCADE') + table + .integer('tag_id') + .unsigned() + .references('tags.id') + .onDelete('CASCADE') + table.unique(['post_id', 'tag_id']) + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/database/migrations/1629149023037_project_tag.ts b/database/migrations/1629149023037_project_tag.ts new file mode 100644 index 0000000..18228fd --- /dev/null +++ b/database/migrations/1629149023037_project_tag.ts @@ -0,0 +1,27 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class ProjectTags extends BaseSchema { + protected tableName = 'project_tag' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table + .integer('project_id') + .unsigned() + .references('projects.id') + .onDelete('CASCADE') + table + .integer('tag_id') + .unsigned() + .references('tags.id') + .onDelete('CASCADE') + table.unique(['project_id', 'tag_id']) + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} From 2931be07bb6c5c6ba6cf4da9eead8d305a1ee90f Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 16 Aug 2021 23:30:32 +0200 Subject: [PATCH 132/244] Add tags pivot in projects --- app/Controllers/Http/ProjectsController.ts | 12 ++++++++---- app/Models/Project.ts | 8 +++++--- app/Validators/project/ProjectStoreValidator.ts | 3 ++- app/Validators/project/ProjectUpdateValidator.ts | 3 ++- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/app/Controllers/Http/ProjectsController.ts b/app/Controllers/Http/ProjectsController.ts index 7d59a83..6a03320 100755 --- a/app/Controllers/Http/ProjectsController.ts +++ b/app/Controllers/Http/ProjectsController.ts @@ -10,7 +10,8 @@ export default class ProjectsController { return response.status(200).send({ projects: await Project.query() .orderBy('id', 'asc') - .preload('file') + .preload('cover') + .preload('tags') }) } @@ -19,7 +20,8 @@ export default class ProjectsController { const project = await Project.create(data) const cover = await File.findByOrFail('label', data.cover) - await project.related('file').associate(cover) + await project.related('cover').associate(cover) + await project.related('tags').sync(data.tags!) return response.status(200).send({ project }) @@ -27,7 +29,8 @@ export default class ProjectsController { public async show ({ params, response }: HttpContextContract) { const project = await Project.findOrFail(params.id) - await project.load('file') + await project.load('cover') + await project.load('tags') return response.status(200).send({ project }) @@ -39,7 +42,8 @@ export default class ProjectsController { const cover = await File.findBy('label', data.cover) await project.merge(data).save() - if (cover) await project.related('file').associate(cover) + if (cover) await project.related('cover').associate(cover) + await project.related('tags').sync(data.tags!) return response.status(200).send({ project }) diff --git a/app/Models/Project.ts b/app/Models/Project.ts index 128dd21..cc0fc47 100755 --- a/app/Models/Project.ts +++ b/app/Models/Project.ts @@ -19,11 +19,13 @@ export default class Project extends BaseModel { @column() public url: string - @belongsTo(() => File) - public file: BelongsTo + @belongsTo(() => File, { + foreignKey: 'coverId' + }) + public cover: BelongsTo @column() - public fileId: number + public coverId: number @manyToMany(() => Tag) public tags: ManyToMany diff --git a/app/Validators/project/ProjectStoreValidator.ts b/app/Validators/project/ProjectStoreValidator.ts index 638fba4..5234f85 100755 --- a/app/Validators/project/ProjectStoreValidator.ts +++ b/app/Validators/project/ProjectStoreValidator.ts @@ -10,7 +10,8 @@ export default class ProjectStoreValidator { description: schema.string(), progress: schema.number(), url: schema.string(), - cover: schema.string() + cover: schema.string(), + tags: schema.array.optional().members(schema.string()) }) public messages = { diff --git a/app/Validators/project/ProjectUpdateValidator.ts b/app/Validators/project/ProjectUpdateValidator.ts index 1256a46..b81e219 100644 --- a/app/Validators/project/ProjectUpdateValidator.ts +++ b/app/Validators/project/ProjectUpdateValidator.ts @@ -7,7 +7,8 @@ export default class ProjectUpdateValidator { description: schema.string.optional(), progress: schema.number.optional(), url: schema.string.optional(), - cover: schema.string.optional() + cover: schema.string.optional(), + tags: schema.array.optional().members(schema.string()) }) public messages = { required: 'The field {{field}} is required' From 52eed07d3219b3dc77fdf4c94fb1f364c0414057 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 17 Aug 2021 16:59:05 +0200 Subject: [PATCH 133/244] Rename controller --- start/routes/api.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start/routes/api.ts b/start/routes/api.ts index 6815286..0da899f 100644 --- a/start/routes/api.ts +++ b/start/routes/api.ts @@ -11,7 +11,7 @@ Route.group(() => { Route.resource('/translations', 'TranslationsController').except(['edit', 'create']) - Route.resource('/files', 'FileController').only(['index', 'store', 'destroy']) + Route.resource('/files', 'FilesController').only(['index', 'store', 'destroy']) Route.get('/files/:filename', async ({response, params}) => { response.download(Application.makePath('storage', params.filename)) }) From 5cc616ee912e52220728e4d31c3aba1ad9ff0dcb Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 18 Aug 2021 19:49:30 +0200 Subject: [PATCH 134/244] Add color in skill --- app/Models/Skill.ts | 3 +++ app/Validators/skill/SkillStoreValidator.ts | 1 + app/Validators/skill/SkillUpdateValidator.ts | 1 + database/migrations/1628936238073_skills.ts | 1 + 4 files changed, 6 insertions(+) diff --git a/app/Models/Skill.ts b/app/Models/Skill.ts index d689bb4..c962069 100644 --- a/app/Models/Skill.ts +++ b/app/Models/Skill.ts @@ -15,6 +15,9 @@ export default class Skill extends BaseModel { @column() public fileId: number + @column() + public color: string + @column.dateTime({ autoCreate: true }) public createdAt: DateTime diff --git a/app/Validators/skill/SkillStoreValidator.ts b/app/Validators/skill/SkillStoreValidator.ts index c58907d..b3aa0cb 100644 --- a/app/Validators/skill/SkillStoreValidator.ts +++ b/app/Validators/skill/SkillStoreValidator.ts @@ -8,6 +8,7 @@ export default class SkillStoreValidator { public schema = schema.create({ name: schema.string(), cover: schema.string(), + color: schema.string() }) public messages = { required: 'The field {{field}} is required' diff --git a/app/Validators/skill/SkillUpdateValidator.ts b/app/Validators/skill/SkillUpdateValidator.ts index 5454ef6..c1d8c1c 100644 --- a/app/Validators/skill/SkillUpdateValidator.ts +++ b/app/Validators/skill/SkillUpdateValidator.ts @@ -8,6 +8,7 @@ export default class SkillUpdateValidator { public schema = schema.create({ name: schema.string.optional(), cover: schema.string.optional(), + color: schema.string.optional() }) public messages = { diff --git a/database/migrations/1628936238073_skills.ts b/database/migrations/1628936238073_skills.ts index 56195cb..b3e8dd3 100644 --- a/database/migrations/1628936238073_skills.ts +++ b/database/migrations/1628936238073_skills.ts @@ -7,6 +7,7 @@ export default class Skills extends BaseSchema { this.schema.createTable(this.tableName, (table) => { table.increments('id').primary() table.string('name').notNullable() + table.string('color').notNullable() table .integer('file_id') .unsigned() From 271b49b0afb629dd0e8a570b1add6464c45815b4 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 19 Aug 2021 00:01:48 +0200 Subject: [PATCH 135/244] Remove auth middleware to get files --- start/routes/api.ts | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/start/routes/api.ts b/start/routes/api.ts index 0da899f..0aec16d 100644 --- a/start/routes/api.ts +++ b/start/routes/api.ts @@ -12,8 +12,9 @@ Route.group(() => { Route.resource('/translations', 'TranslationsController').except(['edit', 'create']) Route.resource('/files', 'FilesController').only(['index', 'store', 'destroy']) - Route.get('/files/:filename', async ({response, params}) => { - response.download(Application.makePath('storage', params.filename)) - }) }).middleware('auth') + +Route.get('/files/:filename', async ({response, params}) => { + response.download(Application.makePath('storage', params.filename)) +}) From e8f4eb8c0fb903db965bd0d315a14265ba48910c Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 19 Aug 2021 18:51:23 +0200 Subject: [PATCH 136/244] Testing Oauth --- app/Controllers/Http/AuthController.ts | 21 +++++++++++++-------- start/routes/auth.ts | 8 ++++---- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 41da57a..341a4c2 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -44,7 +44,7 @@ export default class AuthController { } public async twitter ({ ally, auth, response }: HttpContextContract) { - const twitter = ally.use('twitter').stateless() + const twitter = ally.use('twitter') if (twitter.accessDenied()) { return response.status(403).send({ @@ -73,7 +73,7 @@ export default class AuthController { } public async discord ({ ally, auth, response }: HttpContextContract) { - const discord = ally.use('discord').stateless() + const discord = ally.use('discord') if (discord.accessDenied()) { return response.status(403).send({ @@ -101,8 +101,9 @@ export default class AuthController { }) } - public async github ({ ally, auth, response }: HttpContextContract) { - const github = ally.use('github').stateless() + public async github ({ request, ally, auth, response }: HttpContextContract) { + const github = ally.use('github') + const redirected_url = request.input('redirect') if (github.accessDenied()) { return response.status(403).send({ @@ -125,13 +126,17 @@ export default class AuthController { const githubUser = await github.user() const user = await this.createUser(githubUser) await auth.use('web').login(user, true) - return response.status(200).send({ - user: user - }) + if (redirected_url) { + return response.status(200).redirect(redirected_url) + } else { + return response.status(200).send({ + user: user + }) + } } public async google ({ ally, auth, response, }: HttpContextContract) { - const google = ally.use('google').stateless() + const google = ally.use('google') if (google.accessDenied()) { return response.status(403).send({ diff --git a/start/routes/auth.ts b/start/routes/auth.ts index f4c2d56..deb99a1 100644 --- a/start/routes/auth.ts +++ b/start/routes/auth.ts @@ -13,16 +13,16 @@ Route.group(() => { Route.get('/discord/callback', 'AuthController.discord') Route.get('/twitter', async ({ally}) => { - return ally.use('twitter').stateless().redirect() + return ally.use('twitter').redirect() }) Route.get('/github', async ({ally}) => { - return ally.use('github').stateless().redirect() + return ally.use('github').redirect() }) Route.get('/google', async ({ally}) => { - return ally.use('google').stateless().redirect() + return ally.use('google').redirect() }) Route.get('/discord', async ({ally}) => { - return ally.use('discord').stateless().redirect() + return ally.use('discord').redirect() }) }).prefix('/auth') From b0c5672100b272acd7238c8c4970b7f54a53d4f8 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 19 Aug 2021 19:20:42 +0200 Subject: [PATCH 137/244] Testing Oauth --- app/Controllers/Http/AuthController.ts | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 341a4c2..4607b2d 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -101,9 +101,8 @@ export default class AuthController { }) } - public async github ({ request, ally, auth, response }: HttpContextContract) { + public async github ({ ally, auth, response }: HttpContextContract) { const github = ally.use('github') - const redirected_url = request.input('redirect') if (github.accessDenied()) { return response.status(403).send({ @@ -126,13 +125,7 @@ export default class AuthController { const githubUser = await github.user() const user = await this.createUser(githubUser) await auth.use('web').login(user, true) - if (redirected_url) { - return response.status(200).redirect(redirected_url) - } else { - return response.status(200).send({ - user: user - }) - } + return response.status(200).redirect('http://localhost:3333/guestbook') } public async google ({ ally, auth, response, }: HttpContextContract) { From 0bda1ecd124a4f38283a3376b959a8cd05160cd5 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 19 Aug 2021 19:27:57 +0200 Subject: [PATCH 138/244] Testing Oauth --- app/Controllers/Http/AuthController.ts | 12 ++++++++++-- package.json | 2 +- start/routes/auth.ts | 9 +++++---- yarn.lock | 2 +- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 4607b2d..44afb3e 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -101,8 +101,10 @@ export default class AuthController { }) } - public async github ({ ally, auth, response }: HttpContextContract) { + public async github ({ session, ally, auth, response }: HttpContextContract) { const github = ally.use('github') + const redirected_url = await session.get('redirect') + await session.forget('redirect') if (github.accessDenied()) { return response.status(403).send({ @@ -125,7 +127,13 @@ export default class AuthController { const githubUser = await github.user() const user = await this.createUser(githubUser) await auth.use('web').login(user, true) - return response.status(200).redirect('http://localhost:3333/guestbook') + if (redirected_url) { + return response.status(200).redirect(redirected_url) + } else { + return response.status(200).send({ + user: user + }) + } } public async google ({ ally, auth, response, }: HttpContextContract) { diff --git a/package.json b/package.json index 6c9e31f..fcf78be 100755 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "@adonisjs/mail": "^7.2.1", "@adonisjs/redis": "^7.0.6", "@adonisjs/repl": "^3.1.4", - "@adonisjs/session": "^6.0.6", + "@adonisjs/session": "^6.1.1", "@adonisjs/view": "^6.0.3", "axios": "^0.21.1", "luxon": "^1.27.0", diff --git a/start/routes/auth.ts b/start/routes/auth.ts index deb99a1..16cffca 100644 --- a/start/routes/auth.ts +++ b/start/routes/auth.ts @@ -12,16 +12,17 @@ Route.group(() => { Route.get('/google/callback', 'AuthController.google') Route.get('/discord/callback', 'AuthController.discord') - Route.get('/twitter', async ({ally}) => { + Route.get('/twitter', async ({ ally}) => { return ally.use('twitter').redirect() }) - Route.get('/github', async ({ally}) => { + Route.get('/github', async ({ request, session, ally}) => { + await session.put('redirect', request.input('redirect')) return ally.use('github').redirect() }) - Route.get('/google', async ({ally}) => { + Route.get('/google', async ({ ally}) => { return ally.use('google').redirect() }) - Route.get('/discord', async ({ally}) => { + Route.get('/discord', async ({ ally}) => { return ally.use('discord').redirect() }) }).prefix('/auth') diff --git a/yarn.lock b/yarn.lock index f943204..609095f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -273,7 +273,7 @@ rev-hash "^3.0.0" source-map-support "^0.5.19" -"@adonisjs/session@^6.0.6": +"@adonisjs/session@^6.1.1": version "6.1.1" resolved "https://registry.yarnpkg.com/@adonisjs/session/-/session-6.1.1.tgz#f3ffed30ecb82168b0660d316c46ffb053566114" integrity sha512-TClg2O6wUnsoI4DhCS7F3mCRqmWO8AEh1kSrnKNl6ZqnxesLgU+30lsmMGTPfohSK/j2eU27+LpzuLFCz9Rf7Q== From a36176396fd875bec5732f0d63b6ef0134e174f2 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 19 Aug 2021 19:36:25 +0200 Subject: [PATCH 139/244] Testing Oauth --- app/Controllers/Http/AuthController.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 44afb3e..5f77d3c 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -128,7 +128,7 @@ export default class AuthController { const user = await this.createUser(githubUser) await auth.use('web').login(user, true) if (redirected_url) { - return response.status(200).redirect(redirected_url) + return response.redirect(redirected_url) } else { return response.status(200).send({ user: user From 9b5e230f61d47fc3e17d1c1df7a8006d279fe43b Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 19 Aug 2021 19:41:22 +0200 Subject: [PATCH 140/244] Testing Oauth --- app/Controllers/Http/AuthController.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 5f77d3c..a4da216 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -1,6 +1,7 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import User from "App/Models/User"; import {AllyUserContract} from "@ioc:Adonis/Addons/Ally"; +import Logger from "@ioc:Adonis/Core/Logger"; export default class AuthController { @@ -106,6 +107,8 @@ export default class AuthController { const redirected_url = await session.get('redirect') await session.forget('redirect') + Logger.debug(redirected_url) + if (github.accessDenied()) { return response.status(403).send({ message: 'Access Denied!' From 6dd18808068ac10180fd5819b6c0f6bb8e761341 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 19 Aug 2021 19:49:16 +0200 Subject: [PATCH 141/244] Testing Oauth --- app/Controllers/Http/AuthController.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index a4da216..ba2084a 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -1,7 +1,6 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import User from "App/Models/User"; import {AllyUserContract} from "@ioc:Adonis/Addons/Ally"; -import Logger from "@ioc:Adonis/Core/Logger"; export default class AuthController { @@ -107,8 +106,6 @@ export default class AuthController { const redirected_url = await session.get('redirect') await session.forget('redirect') - Logger.debug(redirected_url) - if (github.accessDenied()) { return response.status(403).send({ message: 'Access Denied!' @@ -131,7 +128,11 @@ export default class AuthController { const user = await this.createUser(githubUser) await auth.use('web').login(user, true) if (redirected_url) { - return response.redirect(redirected_url) + return response.send({ + redirect: redirected_url, + user, + session + }) } else { return response.status(200).send({ user: user From 66302e769e38127dc8f850b31080c26fd2f30c15 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 19 Aug 2021 20:03:20 +0200 Subject: [PATCH 142/244] Testing Oauth --- app/Controllers/Http/AuthController.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index ba2084a..9dad3e7 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -130,12 +130,12 @@ export default class AuthController { if (redirected_url) { return response.send({ redirect: redirected_url, - user, - session + user }) } else { return response.status(200).send({ - user: user + user: user, + redirected_url }) } } From a241e176d8af10a640d1def1cf9820f76e69c7e3 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 19 Aug 2021 20:08:23 +0200 Subject: [PATCH 143/244] Testing Oauth --- app/Controllers/Http/AuthController.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 9dad3e7..77147ac 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -129,13 +129,15 @@ export default class AuthController { await auth.use('web').login(user, true) if (redirected_url) { return response.send({ - redirect: redirected_url, - user + redirected_url, + user, + redirected: 'Yes' }) } else { return response.status(200).send({ - user: user, - redirected_url + user, + redirected_url, + redirected: 'No' }) } } From 815c08060af2b3f6eb401b559f3cd6a853f8f6be Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 19 Aug 2021 20:53:56 +0200 Subject: [PATCH 144/244] Testing Oauth --- app/Controllers/Http/AuthController.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 77147ac..196763d 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -128,15 +128,11 @@ export default class AuthController { const user = await this.createUser(githubUser) await auth.use('web').login(user, true) if (redirected_url) { - return response.send({ - redirected_url, - user, - redirected: 'Yes' - }) + return response.redirect(redirected_url) } else { return response.status(200).send({ user, - redirected_url, + redirected_url: redirected_url, redirected: 'No' }) } From 4555bae3200d2126e634a47b3ecbbfe2dadd1a4f Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 19 Aug 2021 22:53:37 +0200 Subject: [PATCH 145/244] Testing Oauth --- app/Controllers/Http/AuthController.ts | 19 ++++++------------- start/routes/auth.ts | 17 ++++++++--------- 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 196763d..5ae8604 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -101,10 +101,8 @@ export default class AuthController { }) } - public async github ({ session, ally, auth, response }: HttpContextContract) { + public async github ({ ally, auth, response }: HttpContextContract) { const github = ally.use('github') - const redirected_url = await session.get('redirect') - await session.forget('redirect') if (github.accessDenied()) { return response.status(403).send({ @@ -126,16 +124,11 @@ export default class AuthController { const githubUser = await github.user() const user = await this.createUser(githubUser) - await auth.use('web').login(user, true) - if (redirected_url) { - return response.redirect(redirected_url) - } else { - return response.status(200).send({ - user, - redirected_url: redirected_url, - redirected: 'No' - }) - } + const authUser: User = await auth.use('web').login(user, true) + return response.status(200).send({ + authUser: authUser, + user: user + }) } public async google ({ ally, auth, response, }: HttpContextContract) { diff --git a/start/routes/auth.ts b/start/routes/auth.ts index 16cffca..ec51921 100644 --- a/start/routes/auth.ts +++ b/start/routes/auth.ts @@ -7,22 +7,21 @@ Route.group(() => { Route.post('/login', 'AuthController.login') Route.post('/logout', 'AuthController.logout') - Route.get('/twitter/callback', 'AuthController.twitter') - Route.get('/github/callback', 'AuthController.github') - Route.get('/google/callback', 'AuthController.google') - Route.get('/discord/callback', 'AuthController.discord') + Route.post('/twitter/callback', 'AuthController.twitter') + Route.post('/github/callback', 'AuthController.github') + Route.post('/google/callback', 'AuthController.google') + Route.post('/discord/callback', 'AuthController.discord') - Route.get('/twitter', async ({ ally}) => { + Route.get('/twitter', async ({ ally }) => { return ally.use('twitter').redirect() }) - Route.get('/github', async ({ request, session, ally}) => { - await session.put('redirect', request.input('redirect')) + Route.get('/github', async ({ ally }) => { return ally.use('github').redirect() }) - Route.get('/google', async ({ ally}) => { + Route.get('/google', async ({ ally }) => { return ally.use('google').redirect() }) - Route.get('/discord', async ({ ally}) => { + Route.get('/discord', async ({ ally }) => { return ally.use('discord').redirect() }) }).prefix('/auth') From f0df6fef9e1b59b97d32440b550bf79f06353b6d Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 19 Aug 2021 23:04:31 +0200 Subject: [PATCH 146/244] Testing Oauth --- config/ally.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/ally.ts b/config/ally.ts index ee1ca4f..4ba82bf 100644 --- a/config/ally.ts +++ b/config/ally.ts @@ -27,7 +27,7 @@ const allyConfig: AllyConfig = { driver: 'github', clientId: Env.get('GITHUB_CLIENT_ID'), clientSecret: Env.get('GITHUB_CLIENT_SECRET'), - callbackUrl: `${Env.get('BASE_URL')}/auth/github/callback`, + callbackUrl: `http://localhost:3333/guestbook`, }, /* |-------------------------------------------------------------------------- From 218d2e4d4fe4f32bab22d5555e3d5237cdc5c0e7 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Thu, 19 Aug 2021 23:28:36 +0200 Subject: [PATCH 147/244] Change callback url --- config/ally.ts | 8 ++++---- env.ts | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/config/ally.ts b/config/ally.ts index 4ba82bf..1307fbf 100644 --- a/config/ally.ts +++ b/config/ally.ts @@ -27,7 +27,7 @@ const allyConfig: AllyConfig = { driver: 'github', clientId: Env.get('GITHUB_CLIENT_ID'), clientSecret: Env.get('GITHUB_CLIENT_SECRET'), - callbackUrl: `http://localhost:3333/guestbook`, + callbackUrl: `${Env.get('ALLY_CALLBACK_URL')}/github`, }, /* |-------------------------------------------------------------------------- @@ -38,7 +38,7 @@ const allyConfig: AllyConfig = { driver: 'google', clientId: Env.get('GOOGLE_CLIENT_ID'), clientSecret: Env.get('GOOGLE_CLIENT_SECRET'), - callbackUrl: `${Env.get('BASE_URL')}/auth/google/callback`, + callbackUrl: `${Env.get('ALLY_CALLBACK_URL')}/google`, }, /* |-------------------------------------------------------------------------- @@ -49,7 +49,7 @@ const allyConfig: AllyConfig = { driver: 'twitter', clientId: Env.get('TWITTER_CLIENT_ID'), clientSecret: Env.get('TWITTER_CLIENT_SECRET'), - callbackUrl: `${Env.get('BASE_URL')}/auth/twitter/callback`, + callbackUrl: `${Env.get('ALLY_CALLBACK_URL')}/twitter`, }, /* |-------------------------------------------------------------------------- @@ -60,7 +60,7 @@ const allyConfig: AllyConfig = { driver: 'discord', clientId: Env.get('DISCORD_CLIENT_ID'), clientSecret: Env.get('DISCORD_CLIENT_SECRET'), - callbackUrl: `${Env.get('BASE_URL')}/auth/discord/callback`, + callbackUrl: `${Env.get('ALLY_CALLBACK_URL')}/discord`, }, } diff --git a/env.ts b/env.ts index 3bd8c5c..984f5a3 100755 --- a/env.ts +++ b/env.ts @@ -22,6 +22,7 @@ export default Env.rules({ APP_NAME: Env.schema.string(), NODE_ENV: Env.schema.enum(['development', 'production', 'testing'] as const), BASE_URL: Env.schema.string(), + ALLY_CALLBACK_URL: Env.schema.string(), API_VERSION: Env.schema.string(), //Utils From 2424dd85896cd86689bc544d7b189d5665005ef8 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 20 Aug 2021 10:29:44 +0200 Subject: [PATCH 148/244] Add shield --- .adonisrc.json | 3 +- config/shield.ts | 238 +++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + start/kernel.ts | 1 + tsconfig.json | 3 +- yarn.lock | 33 +++++++ 6 files changed, 277 insertions(+), 2 deletions(-) create mode 100644 config/shield.ts diff --git a/.adonisrc.json b/.adonisrc.json index 18d531a..f7394a4 100755 --- a/.adonisrc.json +++ b/.adonisrc.json @@ -30,7 +30,8 @@ "@adonisjs/mail", "@adonisjs/view", "@adonisjs/bouncer", - "@adonisjs/ally" + "@adonisjs/ally", + "@adonisjs/shield" ], "aceProviders": [ "@adonisjs/repl" diff --git a/config/shield.ts b/config/shield.ts new file mode 100644 index 0000000..4074832 --- /dev/null +++ b/config/shield.ts @@ -0,0 +1,238 @@ +/** + * Config source: https://git.io/Jvwvt + * + * Feel free to let us know via PR, if you find something broken in this config + * file. + */ + +import Env from '@ioc:Adonis/Core/Env' +import { ShieldConfig } from '@ioc:Adonis/Addons/Shield' + +/* +|-------------------------------------------------------------------------- +| Content Security Policy +|-------------------------------------------------------------------------- +| +| Content security policy filters out the origins not allowed to execute +| and load resources like scripts, styles and fonts. There are wide +| variety of options to choose from. +*/ +export const csp: ShieldConfig['csp'] = { + /* + |-------------------------------------------------------------------------- + | Enable/disable CSP + |-------------------------------------------------------------------------- + | + | The CSP rules are disabled by default for seamless onboarding. + | + */ + enabled: false, + + /* + |-------------------------------------------------------------------------- + | Directives + |-------------------------------------------------------------------------- + | + | All directives are defined in camelCase and here is the list of + | available directives and their possible values. + | + | https://content-security-policy.com + | + | @example + | directives: { + | defaultSrc: ['self', '@nonce', 'cdnjs.cloudflare.com'] + | } + | + */ + directives: { + }, + + /* + |-------------------------------------------------------------------------- + | Report only + |-------------------------------------------------------------------------- + | + | Setting `reportOnly=true` will not block the scripts from running and + | instead report them to a URL. + | + */ + reportOnly: false, +} + +/* +|-------------------------------------------------------------------------- +| CSRF Protection +|-------------------------------------------------------------------------- +| +| CSRF Protection adds another layer of security by making sure, actionable +| routes does have a valid token to execute an action. +| +*/ +export const csrf: ShieldConfig['csrf'] = { + /* + |-------------------------------------------------------------------------- + | Enable/Disable CSRF + |-------------------------------------------------------------------------- + */ + enabled: Env.get('NODE_ENV') !== 'testing', + + /* + |-------------------------------------------------------------------------- + | Routes to Ignore + |-------------------------------------------------------------------------- + | + | Define an array of route patterns that you want to ignore from CSRF + | validation. Make sure the route patterns are started with a leading + | slash. Example: + | + | `/foo/bar` + | + | Also you can define a function that is evaluated on every HTTP Request. + | ``` + | exceptRoutes: ({ request }) => request.url().includes('/api') + | ``` + | + */ + exceptRoutes: [], + + /* + |-------------------------------------------------------------------------- + | Enable Sharing Token Via Cookie + |-------------------------------------------------------------------------- + | + | When the following flag is enabled, AdonisJS will drop `XSRF-TOKEN` + | cookie that frontend frameworks can read and return back as a + | `X-XSRF-TOKEN` header. + | + | The cookie has `httpOnly` flag set to false, so it is little insecure and + | can be turned off when you are not using a frontend framework making + | AJAX requests. + | + */ + enableXsrfCookie: true, + + /* + |-------------------------------------------------------------------------- + | Methods to Validate + |-------------------------------------------------------------------------- + | + | Define an array of HTTP methods to be validated for a valid CSRF token. + | + */ + methods: ['POST', 'PUT', 'PATCH', 'DELETE'], +} + +/* +|-------------------------------------------------------------------------- +| DNS Prefetching +|-------------------------------------------------------------------------- +| +| DNS prefetching allows browsers to proactively perform domain name +| resolution in background. +| +| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-DNS-Prefetch-Control +| +*/ +export const dnsPrefetch: ShieldConfig['dnsPrefetch'] = { + /* + |-------------------------------------------------------------------------- + | Enable/disable this feature + |-------------------------------------------------------------------------- + */ + enabled: true, + + /* + |-------------------------------------------------------------------------- + | Allow or Dis-Allow Explicitly + |-------------------------------------------------------------------------- + | + | The `enabled` boolean does not set `X-DNS-Prefetch-Control` header. However + | the `allow` boolean controls the value of `X-DNS-Prefetch-Control` header. + | + | - When `allow = true`, then `X-DNS-Prefetch-Control = 'on'` + | - When `allow = false`, then `X-DNS-Prefetch-Control = 'off'` + | + */ + allow: true, +} + +/* +|-------------------------------------------------------------------------- +| Iframe Options +|-------------------------------------------------------------------------- +| +| xFrame defines whether or not your website can be embedded inside an +| iframe. Choose from one of the following options. +| +| - DENY +| - SAMEORIGIN +| - ALLOW-FROM http://example.com +| +| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options +*/ +export const xFrame: ShieldConfig['xFrame'] = { + enabled: true, + action: 'DENY', +} + +/* +|-------------------------------------------------------------------------- +| Http Strict Transport Security +|-------------------------------------------------------------------------- +| +| A security to ensure that a browser always makes a connection over +| HTTPS. +| +| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security +| +*/ +export const hsts: ShieldConfig['hsts'] = { + enabled: true, + /* + |-------------------------------------------------------------------------- + | Max Age + |-------------------------------------------------------------------------- + | + | Control, how long the browser should remember that a site is only to be + | accessed using HTTPS. + | + */ + maxAge: '180 days', + + /* + |-------------------------------------------------------------------------- + | Include Subdomains + |-------------------------------------------------------------------------- + | + | Apply rules on the subdomains as well. + | + */ + includeSubDomains: true, + + /* + |-------------------------------------------------------------------------- + | Preloading + |-------------------------------------------------------------------------- + | + | Google maintains a service to register your domain and it will preload + | the HSTS policy. Learn more https://hstspreload.org/ + | + */ + preload: false, +} + +/* +|-------------------------------------------------------------------------- +| No Sniff +|-------------------------------------------------------------------------- +| +| Browsers have a habit of sniffing content-type of a response. Which means +| files with .txt extension containing Javascript code will be executed as +| Javascript. You can disable this behavior by setting nosniff to false. +| +| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options +| +*/ +export const contentTypeSniffing: ShieldConfig['contentTypeSniffing'] = { + enabled: true, +} diff --git a/package.json b/package.json index fcf78be..66a1fb6 100755 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "@adonisjs/redis": "^7.0.6", "@adonisjs/repl": "^3.1.4", "@adonisjs/session": "^6.1.1", + "@adonisjs/shield": "^7.0.5", "@adonisjs/view": "^6.0.3", "axios": "^0.21.1", "luxon": "^1.27.0", diff --git a/start/kernel.ts b/start/kernel.ts index 2523202..67432f3 100755 --- a/start/kernel.ts +++ b/start/kernel.ts @@ -22,6 +22,7 @@ import Server from "@ioc:Adonis/Core/Server"; Server.middleware.register([ () => import('@ioc:Adonis/Core/BodyParser'), + () => import('@ioc:Adonis/Addons/Shield'), () => import('App/Middleware/SilentAuth'), ]) diff --git a/tsconfig.json b/tsconfig.json index 1194e95..09e3384 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -35,7 +35,8 @@ "@adonisjs/mail", "@adonisjs/view", "@adonisjs/ally", - "@adonisjs/bouncer" + "@adonisjs/bouncer", + "@adonisjs/shield" ] } } diff --git a/yarn.lock b/yarn.lock index 609095f..b9e7fa3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -281,6 +281,15 @@ "@poppinss/utils" "^3.1.5" fs-extra "^10.0.0" +"@adonisjs/shield@^7.0.5": + version "7.0.5" + resolved "https://registry.yarnpkg.com/@adonisjs/shield/-/shield-7.0.5.tgz#7103c1fa8fa0b42883988a12a5caac8371fc548d" + integrity sha512-Gst4PXDMOKBq5VLNrt4p3QK3fHDR4U3CdIJIWyrV+HZtbVXQM+SI8+aIK7WXUpNuaI5y10ux1qzJ2qHHjWLwTQ== + dependencies: + "@poppinss/utils" "^3.1.5" + csrf "^3.1.0" + helmet-csp "^3.4.0" + "@adonisjs/sink@^5.1.5": version "5.1.5" resolved "https://registry.yarnpkg.com/@adonisjs/sink/-/sink-5.1.5.tgz#8a238052d66f06dd9894516eb7270797c6489b2b" @@ -1396,6 +1405,15 @@ cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" +csrf@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/csrf/-/csrf-3.1.0.tgz#ec75e9656d004d674b8ef5ba47b41fbfd6cb9c30" + integrity sha512-uTqEnCvWRk042asU6JtapDTcJeeailFy4ydOQS28bj1hcLnYRiqi8SsD2jS412AY1I/4qdOwWZun774iqywf9w== + dependencies: + rndm "1.2.0" + tsscmp "1.0.6" + uid-safe "2.1.5" + css-select@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" @@ -2175,6 +2193,11 @@ header-case@^2.0.4: capital-case "^1.0.4" tslib "^2.0.3" +helmet-csp@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/helmet-csp/-/helmet-csp-3.4.0.tgz#7fdd0b0274cd90a64664e2ed8e48f9a430037233" + integrity sha512-a+YgzWw6dajqhQfb6ktxil0FsQuWTKzrLSUfy55dxS8fuvl1jidTIMPZ2udN15mjjcpBPgTHNHGF5tyWKYyR8w== + html-minifier@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-4.0.0.tgz#cca9aad8bce1175e02e17a8c33e46d8988889f56" @@ -4082,6 +4105,11 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" +rndm@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/rndm/-/rndm-1.2.0.tgz#f33fe9cfb52bbfd520aa18323bc65db110a1b76c" + integrity sha1-8z/pz7Urv9UgqhgyO8ZdsRCht2w= + safe-buffer@5.1.2, 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" @@ -4612,6 +4640,11 @@ tslib@^2.0.3, tslib@^2.2.0, tslib@^2.3.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== +tsscmp@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" + integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== + tsse@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/tsse/-/tsse-2.0.0.tgz#757a1357473fecaffb5c70024acd179514779f64" From b23eb346d69e9a11d106df597f60430f368eefb3 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 20 Aug 2021 10:35:42 +0200 Subject: [PATCH 149/244] Remove shield --- .adonisrc.json | 1 - config/shield.ts | 238 ----------------------------------------------- package.json | 1 - start/kernel.ts | 1 - tsconfig.json | 1 - yarn.lock | 33 ------- 6 files changed, 275 deletions(-) delete mode 100644 config/shield.ts diff --git a/.adonisrc.json b/.adonisrc.json index f7394a4..7facf7c 100755 --- a/.adonisrc.json +++ b/.adonisrc.json @@ -31,7 +31,6 @@ "@adonisjs/view", "@adonisjs/bouncer", "@adonisjs/ally", - "@adonisjs/shield" ], "aceProviders": [ "@adonisjs/repl" diff --git a/config/shield.ts b/config/shield.ts deleted file mode 100644 index 4074832..0000000 --- a/config/shield.ts +++ /dev/null @@ -1,238 +0,0 @@ -/** - * Config source: https://git.io/Jvwvt - * - * Feel free to let us know via PR, if you find something broken in this config - * file. - */ - -import Env from '@ioc:Adonis/Core/Env' -import { ShieldConfig } from '@ioc:Adonis/Addons/Shield' - -/* -|-------------------------------------------------------------------------- -| Content Security Policy -|-------------------------------------------------------------------------- -| -| Content security policy filters out the origins not allowed to execute -| and load resources like scripts, styles and fonts. There are wide -| variety of options to choose from. -*/ -export const csp: ShieldConfig['csp'] = { - /* - |-------------------------------------------------------------------------- - | Enable/disable CSP - |-------------------------------------------------------------------------- - | - | The CSP rules are disabled by default for seamless onboarding. - | - */ - enabled: false, - - /* - |-------------------------------------------------------------------------- - | Directives - |-------------------------------------------------------------------------- - | - | All directives are defined in camelCase and here is the list of - | available directives and their possible values. - | - | https://content-security-policy.com - | - | @example - | directives: { - | defaultSrc: ['self', '@nonce', 'cdnjs.cloudflare.com'] - | } - | - */ - directives: { - }, - - /* - |-------------------------------------------------------------------------- - | Report only - |-------------------------------------------------------------------------- - | - | Setting `reportOnly=true` will not block the scripts from running and - | instead report them to a URL. - | - */ - reportOnly: false, -} - -/* -|-------------------------------------------------------------------------- -| CSRF Protection -|-------------------------------------------------------------------------- -| -| CSRF Protection adds another layer of security by making sure, actionable -| routes does have a valid token to execute an action. -| -*/ -export const csrf: ShieldConfig['csrf'] = { - /* - |-------------------------------------------------------------------------- - | Enable/Disable CSRF - |-------------------------------------------------------------------------- - */ - enabled: Env.get('NODE_ENV') !== 'testing', - - /* - |-------------------------------------------------------------------------- - | Routes to Ignore - |-------------------------------------------------------------------------- - | - | Define an array of route patterns that you want to ignore from CSRF - | validation. Make sure the route patterns are started with a leading - | slash. Example: - | - | `/foo/bar` - | - | Also you can define a function that is evaluated on every HTTP Request. - | ``` - | exceptRoutes: ({ request }) => request.url().includes('/api') - | ``` - | - */ - exceptRoutes: [], - - /* - |-------------------------------------------------------------------------- - | Enable Sharing Token Via Cookie - |-------------------------------------------------------------------------- - | - | When the following flag is enabled, AdonisJS will drop `XSRF-TOKEN` - | cookie that frontend frameworks can read and return back as a - | `X-XSRF-TOKEN` header. - | - | The cookie has `httpOnly` flag set to false, so it is little insecure and - | can be turned off when you are not using a frontend framework making - | AJAX requests. - | - */ - enableXsrfCookie: true, - - /* - |-------------------------------------------------------------------------- - | Methods to Validate - |-------------------------------------------------------------------------- - | - | Define an array of HTTP methods to be validated for a valid CSRF token. - | - */ - methods: ['POST', 'PUT', 'PATCH', 'DELETE'], -} - -/* -|-------------------------------------------------------------------------- -| DNS Prefetching -|-------------------------------------------------------------------------- -| -| DNS prefetching allows browsers to proactively perform domain name -| resolution in background. -| -| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-DNS-Prefetch-Control -| -*/ -export const dnsPrefetch: ShieldConfig['dnsPrefetch'] = { - /* - |-------------------------------------------------------------------------- - | Enable/disable this feature - |-------------------------------------------------------------------------- - */ - enabled: true, - - /* - |-------------------------------------------------------------------------- - | Allow or Dis-Allow Explicitly - |-------------------------------------------------------------------------- - | - | The `enabled` boolean does not set `X-DNS-Prefetch-Control` header. However - | the `allow` boolean controls the value of `X-DNS-Prefetch-Control` header. - | - | - When `allow = true`, then `X-DNS-Prefetch-Control = 'on'` - | - When `allow = false`, then `X-DNS-Prefetch-Control = 'off'` - | - */ - allow: true, -} - -/* -|-------------------------------------------------------------------------- -| Iframe Options -|-------------------------------------------------------------------------- -| -| xFrame defines whether or not your website can be embedded inside an -| iframe. Choose from one of the following options. -| -| - DENY -| - SAMEORIGIN -| - ALLOW-FROM http://example.com -| -| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options -*/ -export const xFrame: ShieldConfig['xFrame'] = { - enabled: true, - action: 'DENY', -} - -/* -|-------------------------------------------------------------------------- -| Http Strict Transport Security -|-------------------------------------------------------------------------- -| -| A security to ensure that a browser always makes a connection over -| HTTPS. -| -| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security -| -*/ -export const hsts: ShieldConfig['hsts'] = { - enabled: true, - /* - |-------------------------------------------------------------------------- - | Max Age - |-------------------------------------------------------------------------- - | - | Control, how long the browser should remember that a site is only to be - | accessed using HTTPS. - | - */ - maxAge: '180 days', - - /* - |-------------------------------------------------------------------------- - | Include Subdomains - |-------------------------------------------------------------------------- - | - | Apply rules on the subdomains as well. - | - */ - includeSubDomains: true, - - /* - |-------------------------------------------------------------------------- - | Preloading - |-------------------------------------------------------------------------- - | - | Google maintains a service to register your domain and it will preload - | the HSTS policy. Learn more https://hstspreload.org/ - | - */ - preload: false, -} - -/* -|-------------------------------------------------------------------------- -| No Sniff -|-------------------------------------------------------------------------- -| -| Browsers have a habit of sniffing content-type of a response. Which means -| files with .txt extension containing Javascript code will be executed as -| Javascript. You can disable this behavior by setting nosniff to false. -| -| Learn more at https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options -| -*/ -export const contentTypeSniffing: ShieldConfig['contentTypeSniffing'] = { - enabled: true, -} diff --git a/package.json b/package.json index 66a1fb6..fcf78be 100755 --- a/package.json +++ b/package.json @@ -28,7 +28,6 @@ "@adonisjs/redis": "^7.0.6", "@adonisjs/repl": "^3.1.4", "@adonisjs/session": "^6.1.1", - "@adonisjs/shield": "^7.0.5", "@adonisjs/view": "^6.0.3", "axios": "^0.21.1", "luxon": "^1.27.0", diff --git a/start/kernel.ts b/start/kernel.ts index 67432f3..2523202 100755 --- a/start/kernel.ts +++ b/start/kernel.ts @@ -22,7 +22,6 @@ import Server from "@ioc:Adonis/Core/Server"; Server.middleware.register([ () => import('@ioc:Adonis/Core/BodyParser'), - () => import('@ioc:Adonis/Addons/Shield'), () => import('App/Middleware/SilentAuth'), ]) diff --git a/tsconfig.json b/tsconfig.json index 09e3384..5c7402e 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -36,7 +36,6 @@ "@adonisjs/view", "@adonisjs/ally", "@adonisjs/bouncer", - "@adonisjs/shield" ] } } diff --git a/yarn.lock b/yarn.lock index b9e7fa3..609095f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -281,15 +281,6 @@ "@poppinss/utils" "^3.1.5" fs-extra "^10.0.0" -"@adonisjs/shield@^7.0.5": - version "7.0.5" - resolved "https://registry.yarnpkg.com/@adonisjs/shield/-/shield-7.0.5.tgz#7103c1fa8fa0b42883988a12a5caac8371fc548d" - integrity sha512-Gst4PXDMOKBq5VLNrt4p3QK3fHDR4U3CdIJIWyrV+HZtbVXQM+SI8+aIK7WXUpNuaI5y10ux1qzJ2qHHjWLwTQ== - dependencies: - "@poppinss/utils" "^3.1.5" - csrf "^3.1.0" - helmet-csp "^3.4.0" - "@adonisjs/sink@^5.1.5": version "5.1.5" resolved "https://registry.yarnpkg.com/@adonisjs/sink/-/sink-5.1.5.tgz#8a238052d66f06dd9894516eb7270797c6489b2b" @@ -1405,15 +1396,6 @@ cross-spawn@^7.0.3: shebang-command "^2.0.0" which "^2.0.1" -csrf@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/csrf/-/csrf-3.1.0.tgz#ec75e9656d004d674b8ef5ba47b41fbfd6cb9c30" - integrity sha512-uTqEnCvWRk042asU6JtapDTcJeeailFy4ydOQS28bj1hcLnYRiqi8SsD2jS412AY1I/4qdOwWZun774iqywf9w== - dependencies: - rndm "1.2.0" - tsscmp "1.0.6" - uid-safe "2.1.5" - css-select@^4.1.3: version "4.1.3" resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.1.3.tgz#a70440f70317f2669118ad74ff105e65849c7067" @@ -2193,11 +2175,6 @@ header-case@^2.0.4: capital-case "^1.0.4" tslib "^2.0.3" -helmet-csp@^3.4.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/helmet-csp/-/helmet-csp-3.4.0.tgz#7fdd0b0274cd90a64664e2ed8e48f9a430037233" - integrity sha512-a+YgzWw6dajqhQfb6ktxil0FsQuWTKzrLSUfy55dxS8fuvl1jidTIMPZ2udN15mjjcpBPgTHNHGF5tyWKYyR8w== - html-minifier@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-4.0.0.tgz#cca9aad8bce1175e02e17a8c33e46d8988889f56" @@ -4105,11 +4082,6 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -rndm@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/rndm/-/rndm-1.2.0.tgz#f33fe9cfb52bbfd520aa18323bc65db110a1b76c" - integrity sha1-8z/pz7Urv9UgqhgyO8ZdsRCht2w= - safe-buffer@5.1.2, 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" @@ -4640,11 +4612,6 @@ tslib@^2.0.3, tslib@^2.2.0, tslib@^2.3.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== -tsscmp@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" - integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== - tsse@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/tsse/-/tsse-2.0.0.tgz#757a1357473fecaffb5c70024acd179514779f64" From 92f47dd8ef744bfb409dc9243f869a5f7c4a110f Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 20 Aug 2021 10:37:07 +0200 Subject: [PATCH 150/244] Remove shield --- .adonisrc.json | 2 +- tsconfig.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.adonisrc.json b/.adonisrc.json index 7facf7c..18d531a 100755 --- a/.adonisrc.json +++ b/.adonisrc.json @@ -30,7 +30,7 @@ "@adonisjs/mail", "@adonisjs/view", "@adonisjs/bouncer", - "@adonisjs/ally", + "@adonisjs/ally" ], "aceProviders": [ "@adonisjs/repl" diff --git a/tsconfig.json b/tsconfig.json index 5c7402e..1194e95 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -35,7 +35,7 @@ "@adonisjs/mail", "@adonisjs/view", "@adonisjs/ally", - "@adonisjs/bouncer", + "@adonisjs/bouncer" ] } } From 0c3640e507495e6ddbd0c3332255a156d755a4de Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 20 Aug 2021 10:47:06 +0200 Subject: [PATCH 151/244] Change cookie --- config/session.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/config/session.ts b/config/session.ts index 582f274..debfd33 100755 --- a/config/session.ts +++ b/config/session.ts @@ -77,9 +77,7 @@ const sessionConfig: SessionConfig = { cookie: { path: '/', httpOnly: true, - sameSite: true, - domain: '.arthurdanjou.fr', - secure: true + sameSite: false, }, /* From 6f3ed077f61a5f1a6dc1414743a1ba5cda8673c4 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 20 Aug 2021 10:51:57 +0200 Subject: [PATCH 152/244] Trying stateless --- app/Controllers/Http/AuthController.ts | 2 +- config/session.ts | 2 ++ start/routes/auth.ts | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 5ae8604..840f669 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -102,7 +102,7 @@ export default class AuthController { } public async github ({ ally, auth, response }: HttpContextContract) { - const github = ally.use('github') + const github = ally.use('github').stateless() if (github.accessDenied()) { return response.status(403).send({ diff --git a/config/session.ts b/config/session.ts index debfd33..5247832 100755 --- a/config/session.ts +++ b/config/session.ts @@ -78,6 +78,8 @@ const sessionConfig: SessionConfig = { path: '/', httpOnly: true, sameSite: false, + domain: '.arthurdanjou.fr', + secure: true }, /* diff --git a/start/routes/auth.ts b/start/routes/auth.ts index ec51921..e6975ef 100644 --- a/start/routes/auth.ts +++ b/start/routes/auth.ts @@ -16,7 +16,7 @@ Route.group(() => { return ally.use('twitter').redirect() }) Route.get('/github', async ({ ally }) => { - return ally.use('github').redirect() + return ally.use('github').stateless().redirect() }) Route.get('/google', async ({ ally }) => { return ally.use('google').redirect() From d86ff565fb846aaa7f8e1bd7bbbb4ec57e88b1fc Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 20 Aug 2021 11:20:41 +0200 Subject: [PATCH 153/244] Fix --- app/Controllers/Http/GuestBookController.ts | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/app/Controllers/Http/GuestBookController.ts b/app/Controllers/Http/GuestBookController.ts index 15e270a..b1780c2 100755 --- a/app/Controllers/Http/GuestBookController.ts +++ b/app/Controllers/Http/GuestBookController.ts @@ -17,14 +17,10 @@ export default class GuestBookController { public async store ({ request, response }: HttpContextContract) { const data = await request.validate(GuestValidator) - let user = await User.findBy('email', data.email) - if (!user) { - user = await User.create({ - email: data.email, - }) - } - const guestbook_message = user.related('guestbook_message').firstOrCreate({ - userId: user.id + let user = await User.findByOrFail('email', data.email) + const guestbook_message = user.related('guestbook_message').updateOrCreate({ + userId: user.id, + message: data.message }, { userId: user.id, message: data.message From 4a1442654761846ab0c7c1f30754e0539e36afac Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 20 Aug 2021 11:26:35 +0200 Subject: [PATCH 154/244] Remove GuestBook --- .adonisrc.json | 3 +- .env.example | 9 -- app/Controllers/Http/AuthController.ts | 129 ------------------ app/Controllers/Http/GuestBookController.ts | 54 -------- app/Models/GuestbookMessage.ts | 23 ---- app/Models/User.ts | 6 +- app/Validators/guestbook/GuestValidator.ts | 21 --- config/ally.ts | 67 --------- contracts/ally.ts | 27 ---- .../1625146912533_guestbook_messages.ts | 22 --- package.json | 1 - start/routes/artsite.ts | 4 - start/routes/auth.ts | 18 --- tsconfig.json | 1 - yarn.lock | 19 +-- 15 files changed, 3 insertions(+), 401 deletions(-) delete mode 100755 app/Controllers/Http/GuestBookController.ts delete mode 100755 app/Models/GuestbookMessage.ts delete mode 100755 app/Validators/guestbook/GuestValidator.ts delete mode 100644 config/ally.ts delete mode 100644 contracts/ally.ts delete mode 100644 database/migrations/1625146912533_guestbook_messages.ts diff --git a/.adonisrc.json b/.adonisrc.json index 18d531a..6085ebb 100755 --- a/.adonisrc.json +++ b/.adonisrc.json @@ -29,8 +29,7 @@ "@adonisjs/lucid", "@adonisjs/mail", "@adonisjs/view", - "@adonisjs/bouncer", - "@adonisjs/ally" + "@adonisjs/bouncer" ], "aceProviders": [ "@adonisjs/repl" diff --git a/.env.example b/.env.example index 48cc2e0..14e695b 100755 --- a/.env.example +++ b/.env.example @@ -32,12 +32,3 @@ SMTP_HOST= SMTP_PORT= SMTP_USERNAME= SMTP_PASSWORD= - -GITHUB_CLIENT_ID= -GITHUB_CLIENT_SECRET= -GOOGLE_CLIENT_ID= -GOOGLE_CLIENT_SECRET= -TWITTER_CLIENT_ID= -TWITTER_CLIENT_SECRET= -DISCORD_CLIENT_ID= -DISCORD_CLIENT_SECRET= diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 840f669..786415d 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -1,6 +1,5 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' import User from "App/Models/User"; -import {AllyUserContract} from "@ioc:Adonis/Addons/Ally"; export default class AuthController { @@ -42,132 +41,4 @@ export default class AuthController { user: user }) } - - public async twitter ({ ally, auth, response }: HttpContextContract) { - const twitter = ally.use('twitter') - - if (twitter.accessDenied()) { - return response.status(403).send({ - message: 'Access Denied!' - }) - } - - if (twitter.stateMisMatch()) { - return response.status(405).send({ - message: 'Request expired. Retry again!' - }) - } - - if (twitter.hasError()) { - return response.status(500).send({ - message: twitter.getError() - }) - } - - const twitterUser = await twitter.user() - const user = await this.createUser(twitterUser) - await auth.use('web').login(user, true) - return response.status(200).send({ - user: user - }) - } - - public async discord ({ ally, auth, response }: HttpContextContract) { - const discord = ally.use('discord') - - if (discord.accessDenied()) { - return response.status(403).send({ - message: 'Access Denied!' - }) - } - - if (discord.stateMisMatch()) { - return response.status(405).send({ - message: 'Request expired. Retry again!' - }) - } - - if (discord.hasError()) { - return response.status(500).send({ - message: discord.getError() - }) - } - - const discordUser = await discord.user() - const user = await this.createUser(discordUser) - await auth.use('web').login(user, true) - return response.status(200).send({ - user: user - }) - } - - public async github ({ ally, auth, response }: HttpContextContract) { - const github = ally.use('github').stateless() - - if (github.accessDenied()) { - return response.status(403).send({ - message: 'Access Denied!' - }) - } - - if (github.stateMisMatch()) { - return response.status(405).send({ - message: 'Request expired. Retry again!' - }) - } - - if (github.hasError()) { - return response.status(500).send({ - message: github.getError() - }) - } - - const githubUser = await github.user() - const user = await this.createUser(githubUser) - const authUser: User = await auth.use('web').login(user, true) - return response.status(200).send({ - authUser: authUser, - user: user - }) - } - - public async google ({ ally, auth, response, }: HttpContextContract) { - const google = ally.use('google') - - if (google.accessDenied()) { - return response.status(403).send({ - message: 'Access Denied!' - }) - } - - if (google.stateMisMatch()) { - return response.status(405).send({ - message: 'Request expired. Retry again!' - }) - } - - if (google.hasError()) { - return response.status(500).send({ - message: google.getError() - }) - } - - const googleUser = await google.user() - const user = await this.createUser(googleUser) - await auth.use('web').login(user, true) - return response.status(200).send({ - user: user - }) - } - - public async createUser (allyUser: AllyUserContract): Promise { - return await User.firstOrCreate({ - email: allyUser.email!, - }, { - email: allyUser.email!, - username: allyUser.name, - isConfirmed: allyUser.emailVerificationState === 'verified' - }) - } - } diff --git a/app/Controllers/Http/GuestBookController.ts b/app/Controllers/Http/GuestBookController.ts deleted file mode 100755 index b1780c2..0000000 --- a/app/Controllers/Http/GuestBookController.ts +++ /dev/null @@ -1,54 +0,0 @@ -import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; -import GuestValidator from "App/Validators/guestbook/GuestValidator"; -import GuestbookMessage from "App/Models/GuestbookMessage"; -import User from "App/Models/User"; - -export default class GuestBookController { - - public async index ({ response }: HttpContextContract) { - const guestbook_messages = await GuestbookMessage - .query() - .preload('user') - .orderBy('created_at', 'desc') - return response.status(200).send({ - guestbook_messages - }) - } - - public async store ({ request, response }: HttpContextContract) { - const data = await request.validate(GuestValidator) - let user = await User.findByOrFail('email', data.email) - const guestbook_message = user.related('guestbook_message').updateOrCreate({ - userId: user.id, - message: data.message - }, { - userId: user.id, - message: data.message - }) - return response.status(200).send({ - guestbook_message - }) - } - - public async show ({ params, response }: HttpContextContract) { - return response.status(200).send({ - guestbook_message: await GuestbookMessage.findOrFail(params.id) - }) - } - - public async destroy ({ params, response }: HttpContextContract) { - const guestbook_message = await GuestbookMessage.findOrFail(params.id) - await guestbook_message.delete() - return response.status(200).send({ - message: 'GuestBookMessage successfully deleted!' - }) - } - - public async exists ({ params, response }: HttpContextContract) { - const email = await params.email - const guestbook_message = await GuestbookMessage.findBy('email', email) - return response.status(200).send({ - signed: guestbook_message !== null - }) - } -} diff --git a/app/Models/GuestbookMessage.ts b/app/Models/GuestbookMessage.ts deleted file mode 100755 index ef4a596..0000000 --- a/app/Models/GuestbookMessage.ts +++ /dev/null @@ -1,23 +0,0 @@ -import {DateTime} from 'luxon' -import {BaseModel, BelongsTo, belongsTo, column} from '@ioc:Adonis/Lucid/Orm' -import User from "App/Models/User"; - -export default class GuestbookMessage extends BaseModel { - @column({isPrimary: true}) - public id: number - - @belongsTo(() => User) - public user: BelongsTo - - @column() - public userId: number - - @column() - public message: string - - @column.dateTime({ autoCreate: true }) - public createdAt: DateTime - - @column.dateTime({ autoCreate: true, autoUpdate: true }) - public updatedAt: DateTime -} diff --git a/app/Models/User.ts b/app/Models/User.ts index 2ba03fc..78eb5fe 100755 --- a/app/Models/User.ts +++ b/app/Models/User.ts @@ -1,7 +1,6 @@ import {DateTime} from 'luxon' import Hash from '@ioc:Adonis/Core/Hash' -import {BaseModel, beforeSave, column, hasOne, HasOne,} from '@ioc:Adonis/Lucid/Orm' -import GuestbookMessage from "App/Models/GuestbookMessage"; +import {BaseModel, beforeSave, column} from '@ioc:Adonis/Lucid/Orm' export default class User extends BaseModel { @column({isPrimary: true}) @@ -25,9 +24,6 @@ export default class User extends BaseModel { @column() public rememberMeToken?: string - @hasOne(() => GuestbookMessage) - public guestbook_message: HasOne - @column.dateTime({autoCreate: true}) public createdAt: DateTime diff --git a/app/Validators/guestbook/GuestValidator.ts b/app/Validators/guestbook/GuestValidator.ts deleted file mode 100755 index 7868f01..0000000 --- a/app/Validators/guestbook/GuestValidator.ts +++ /dev/null @@ -1,21 +0,0 @@ -import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' -import {rules, schema} from '@ioc:Adonis/Core/Validator' - -export default class GuestValidator { - public messages = { - required: 'The field {{field}} is required', - 'email.email': 'The email is not correct' - } - - public schema = schema.create({ - message: schema.string({}, [ - rules.required() - ]), - email: schema.string({}, [ - rules.email() - ]) - }) - - constructor (protected ctx: HttpContextContract) { - } -} diff --git a/config/ally.ts b/config/ally.ts deleted file mode 100644 index 1307fbf..0000000 --- a/config/ally.ts +++ /dev/null @@ -1,67 +0,0 @@ -/** - * Config source: https://git.io/JOdi5 - * - * Feel free to let us know via PR, if you find something broken in this config - * file. - */ - -import Env from '@ioc:Adonis/Core/Env' -import {AllyConfig} from '@ioc:Adonis/Addons/Ally' - -/* -|-------------------------------------------------------------------------- -| Ally Config -|-------------------------------------------------------------------------- -| -| The `AllyConfig` relies on the `SocialProviders` interface which is -| defined inside `contracts/ally.ts` file. -| -*/ -const allyConfig: AllyConfig = { - /* - |-------------------------------------------------------------------------- - | Github driver - |-------------------------------------------------------------------------- - */ - github: { - driver: 'github', - clientId: Env.get('GITHUB_CLIENT_ID'), - clientSecret: Env.get('GITHUB_CLIENT_SECRET'), - callbackUrl: `${Env.get('ALLY_CALLBACK_URL')}/github`, - }, - /* - |-------------------------------------------------------------------------- - | Google driver - |-------------------------------------------------------------------------- - */ - google: { - driver: 'google', - clientId: Env.get('GOOGLE_CLIENT_ID'), - clientSecret: Env.get('GOOGLE_CLIENT_SECRET'), - callbackUrl: `${Env.get('ALLY_CALLBACK_URL')}/google`, - }, - /* - |-------------------------------------------------------------------------- - | Twitter driver - |-------------------------------------------------------------------------- - */ - twitter: { - driver: 'twitter', - clientId: Env.get('TWITTER_CLIENT_ID'), - clientSecret: Env.get('TWITTER_CLIENT_SECRET'), - callbackUrl: `${Env.get('ALLY_CALLBACK_URL')}/twitter`, - }, - /* - |-------------------------------------------------------------------------- - | Discord driver - |-------------------------------------------------------------------------- - */ - discord: { - driver: 'discord', - clientId: Env.get('DISCORD_CLIENT_ID'), - clientSecret: Env.get('DISCORD_CLIENT_SECRET'), - callbackUrl: `${Env.get('ALLY_CALLBACK_URL')}/discord`, - }, -} - -export default allyConfig diff --git a/contracts/ally.ts b/contracts/ally.ts deleted file mode 100644 index e9de077..0000000 --- a/contracts/ally.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Contract source: https://git.io/JOdiQ - * - * Feel free to let us know via PR, if you find something broken in this contract - * file. - */ - -declare module '@ioc:Adonis/Addons/Ally' { - interface SocialProviders { - github: { - config: GithubDriverConfig - implementation: GithubDriverContract - } - google: { - config: GoogleDriverConfig - implementation: GoogleDriverContract - } - twitter: { - config: TwitterDriverConfig - implementation: TwitterDriverContract - } - discord: { - config: DiscordDriverConfig - implementation: DiscordDriverContract - } - } -} diff --git a/database/migrations/1625146912533_guestbook_messages.ts b/database/migrations/1625146912533_guestbook_messages.ts deleted file mode 100644 index 8ef518d..0000000 --- a/database/migrations/1625146912533_guestbook_messages.ts +++ /dev/null @@ -1,22 +0,0 @@ -import BaseSchema from '@ioc:Adonis/Lucid/Schema' - -export default class GuestbookMessages extends BaseSchema { - protected tableName = 'guestbook_messages' - - public async up() { - this.schema.createTable(this.tableName, (table) => { - table.increments('id').primary() - table - .integer('user_id') - .unsigned() - .references('users.id') - .onDelete('CASCADE') - table.text('message').notNullable() - table.timestamps(true, true) - }) - } - - public async down() { - this.schema.dropTable(this.tableName) - } -} diff --git a/package.json b/package.json index fcf78be..e7631ed 100755 --- a/package.json +++ b/package.json @@ -19,7 +19,6 @@ "youch-terminal": "^1.1.1" }, "dependencies": { - "@adonisjs/ally": "^4.1.0", "@adonisjs/auth": "^8.0.6", "@adonisjs/bouncer": "^2.2.4", "@adonisjs/core": "^5.1.10", diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts index cf68c3b..9e67254 100644 --- a/start/routes/artsite.ts +++ b/start/routes/artsite.ts @@ -24,8 +24,4 @@ Route.group(() => { }).prefix('/posts') Route.resource('/subscribers', 'SubscribersController').only(['index', 'store', 'destroy']) - - Route.resource('/guestbook', 'GuestBookController').except(['edit', 'create', 'destroy']) - Route.get('/guestbook/:email', 'GuestBookController.exists') - }).middleware('auth') diff --git a/start/routes/auth.ts b/start/routes/auth.ts index e6975ef..f2f9c50 100644 --- a/start/routes/auth.ts +++ b/start/routes/auth.ts @@ -6,23 +6,5 @@ Route.group(() => { Route.post('/login', 'AuthController.login') Route.post('/logout', 'AuthController.logout') - - Route.post('/twitter/callback', 'AuthController.twitter') - Route.post('/github/callback', 'AuthController.github') - Route.post('/google/callback', 'AuthController.google') - Route.post('/discord/callback', 'AuthController.discord') - - Route.get('/twitter', async ({ ally }) => { - return ally.use('twitter').redirect() - }) - Route.get('/github', async ({ ally }) => { - return ally.use('github').stateless().redirect() - }) - Route.get('/google', async ({ ally }) => { - return ally.use('google').redirect() - }) - Route.get('/discord', async ({ ally }) => { - return ally.use('discord').redirect() - }) }).prefix('/auth') diff --git a/tsconfig.json b/tsconfig.json index 1194e95..3cffb77 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -34,7 +34,6 @@ "@adonisjs/lucid", "@adonisjs/mail", "@adonisjs/view", - "@adonisjs/ally", "@adonisjs/bouncer" ] } diff --git a/yarn.lock b/yarn.lock index 609095f..98d8fc5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17,14 +17,6 @@ slash "^3.0.0" term-size "^2.2.1" -"@adonisjs/ally@^4.1.0": - version "4.1.0" - resolved "https://registry.yarnpkg.com/@adonisjs/ally/-/ally-4.1.0.tgz#6811c77c7862f78279d11f6be52792b0837c1829" - integrity sha512-IgyUoV9U/a8iTuRBnR0US8/qV5w+d087dqDdDVbgevGVAPyzwci2KeBGBteNzbZDuF1lhfMAz76rL9rSSbWR9A== - dependencies: - "@poppinss/oauth-client" "^2.0.4" - "@poppinss/utils" "^3.1.3" - "@adonisjs/application@^5.1.4", "@adonisjs/application@^5.1.6": version "5.1.6" resolved "https://registry.yarnpkg.com/@adonisjs/application/-/application-5.1.6.tgz#da3043163b49ab35aa5dc1bfcc4ed4ba38d63f65" @@ -450,15 +442,6 @@ safe-buffer "5.2.1" uid-safe "2.1.5" -"@poppinss/oauth-client@^2.0.4": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@poppinss/oauth-client/-/oauth-client-2.0.4.tgz#26795088b472d580127074b8ec28d868d7feb352" - integrity sha512-bl8ITdz0FG1ydCAmXVJxrlEtUm42JZK4yj6jA7CVsVhKhzf8OwG3XY8kVETmh/APp8kH8vSM6u5l+lgPKpdlIA== - dependencies: - "@types/luxon" "^1.26.5" - got "^11.8.2" - luxon "^1.27.0" - "@poppinss/prompts@^1.2.2", "@poppinss/prompts@^1.2.3": version "1.2.3" resolved "https://registry.yarnpkg.com/@poppinss/prompts/-/prompts-1.2.3.tgz#c9e7461837a99919d3ccb015aa33afe899a92f0c" @@ -558,7 +541,7 @@ dependencies: "@types/node" "*" -"@types/luxon@^1.26.5", "@types/luxon@^1.27.1": +"@types/luxon@^1.27.1": version "1.27.1" resolved "https://registry.yarnpkg.com/@types/luxon/-/luxon-1.27.1.tgz#aceeb2d5be8fccf541237e184e37ecff5faa9096" integrity sha512-cPiXpOvPFDr2edMnOXlz3UBDApwUfR+cpizvxCy0n3vp9bz/qe8BWzHPIEFcy+ogUOyjKuCISgyq77ELZPmkkg== From 321342e3ae84aca569dd86957b92a50bbc86258c Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 12:59:48 +0200 Subject: [PATCH 155/244] Fix projects descriptions --- app/Controllers/Http/ProjectsController.ts | 7 +++++++ app/Models/Project.ts | 8 +++++++- database/migrations/1608415261417_projects.ts | 6 +++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/app/Controllers/Http/ProjectsController.ts b/app/Controllers/Http/ProjectsController.ts index 6a03320..f7fbc60 100755 --- a/app/Controllers/Http/ProjectsController.ts +++ b/app/Controllers/Http/ProjectsController.ts @@ -3,6 +3,7 @@ import Project from "App/Models/Project"; import ProjectStoreValidator from "App/Validators/project/ProjectStoreValidator"; import ProjectUpdateValidator from "App/Validators/project/ProjectUpdateValidator"; import File from "App/Models/File"; +import getTranslation from "App/Tasks/getTranslation"; export default class ProjectsController { @@ -11,6 +12,7 @@ export default class ProjectsController { projects: await Project.query() .orderBy('id', 'asc') .preload('cover') + .preload('description') .preload('tags') }) } @@ -21,6 +23,7 @@ export default class ProjectsController { const cover = await File.findByOrFail('label', data.cover) await project.related('cover').associate(cover) + await project.related('description').associate(await getTranslation(data.description)) await project.related('tags').sync(data.tags!) return response.status(200).send({ project @@ -30,6 +33,7 @@ export default class ProjectsController { public async show ({ params, response }: HttpContextContract) { const project = await Project.findOrFail(params.id) await project.load('cover') + await project.load('description') await project.load('tags') return response.status(200).send({ project @@ -43,6 +47,9 @@ export default class ProjectsController { await project.merge(data).save() if (cover) await project.related('cover').associate(cover) + + if (data.description) await project.related('description').associate(await getTranslation(data.description)) + await project.related('tags').sync(data.tags!) return response.status(200).send({ project diff --git a/app/Models/Project.ts b/app/Models/Project.ts index cc0fc47..cd182e0 100755 --- a/app/Models/Project.ts +++ b/app/Models/Project.ts @@ -2,6 +2,7 @@ import {DateTime} from 'luxon' import {BaseModel, BelongsTo, belongsTo, column, ManyToMany, manyToMany} from '@ioc:Adonis/Lucid/Orm' import File from "App/Models/File"; import Tag from "App/Models/Tag"; +import Translation from "App/Models/Translation"; export default class Project extends BaseModel { @column({ isPrimary: true }) @@ -10,8 +11,13 @@ export default class Project extends BaseModel { @column() public name: string + @belongsTo(() => Translation, { + foreignKey: 'descriptionId' + }) + public description: BelongsTo + @column() - public description: string + public descriptionId: number @column() public progress: number diff --git a/database/migrations/1608415261417_projects.ts b/database/migrations/1608415261417_projects.ts index ec8e071..a2f9c68 100644 --- a/database/migrations/1608415261417_projects.ts +++ b/database/migrations/1608415261417_projects.ts @@ -7,7 +7,11 @@ export default class Projects extends BaseSchema { this.schema.createTable(this.tableName, (table) => { table.increments('id').primary() table.string('name').notNullable() - table.string('description').notNullable() + table + .integer('description_id') + .unsigned() + .references('translations.id') + .onDelete('CASCADE') table.string('url').notNullable() table.integer('progress').notNullable() table From 3dc08aea309b386794e07e9cda2b7c4b9e548901 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 13:04:09 +0200 Subject: [PATCH 156/244] Remove missing env --- env.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/env.ts b/env.ts index 984f5a3..3bd8c5c 100755 --- a/env.ts +++ b/env.ts @@ -22,7 +22,6 @@ export default Env.rules({ APP_NAME: Env.schema.string(), NODE_ENV: Env.schema.enum(['development', 'production', 'testing'] as const), BASE_URL: Env.schema.string(), - ALLY_CALLBACK_URL: Env.schema.string(), API_VERSION: Env.schema.string(), //Utils From d08cf1af3d7115dfc7b7ee83bb43cd45c2a544da Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 13:07:07 +0200 Subject: [PATCH 157/244] Remove useless env variables --- env.ts | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/env.ts b/env.ts index 3bd8c5c..cc36140 100755 --- a/env.ts +++ b/env.ts @@ -55,14 +55,4 @@ export default Env.rules({ SMTP_PORT: Env.schema.number(), SMTP_USERNAME: Env.schema.string(), SMTP_PASSWORD: Env.schema.string(), - - //Socials Authentication - GOOGLE_CLIENT_ID: Env.schema.string(), - GOOGLE_CLIENT_SECRET: Env.schema.string(), - TWITTER_CLIENT_ID: Env.schema.string(), - TWITTER_CLIENT_SECRET: Env.schema.string(), - GITHUB_CLIENT_ID: Env.schema.string(), - GITHUB_CLIENT_SECRET: Env.schema.string(), - DISCORD_CLIENT_ID: Env.schema.string(), - DISCORD_CLIENT_SECRET: Env.schema.string(), }) From d59a26f514ac6c5c2ada5d637912b79c4a1994fa Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 13:23:16 +0200 Subject: [PATCH 158/244] Remove progress --- app/Models/Project.ts | 3 --- app/Validators/project/ProjectStoreValidator.ts | 1 - app/Validators/project/ProjectUpdateValidator.ts | 1 - database/migrations/1608415261417_projects.ts | 1 - 4 files changed, 6 deletions(-) diff --git a/app/Models/Project.ts b/app/Models/Project.ts index cd182e0..547d07f 100755 --- a/app/Models/Project.ts +++ b/app/Models/Project.ts @@ -19,9 +19,6 @@ export default class Project extends BaseModel { @column() public descriptionId: number - @column() - public progress: number - @column() public url: string diff --git a/app/Validators/project/ProjectStoreValidator.ts b/app/Validators/project/ProjectStoreValidator.ts index 5234f85..99c7886 100755 --- a/app/Validators/project/ProjectStoreValidator.ts +++ b/app/Validators/project/ProjectStoreValidator.ts @@ -8,7 +8,6 @@ export default class ProjectStoreValidator { public schema = schema.create({ name: schema.string(), description: schema.string(), - progress: schema.number(), url: schema.string(), cover: schema.string(), tags: schema.array.optional().members(schema.string()) diff --git a/app/Validators/project/ProjectUpdateValidator.ts b/app/Validators/project/ProjectUpdateValidator.ts index b81e219..519a1a1 100644 --- a/app/Validators/project/ProjectUpdateValidator.ts +++ b/app/Validators/project/ProjectUpdateValidator.ts @@ -5,7 +5,6 @@ export default class ProjectUpdateValidator { public schema = schema.create({ name: schema.string.optional(), description: schema.string.optional(), - progress: schema.number.optional(), url: schema.string.optional(), cover: schema.string.optional(), tags: schema.array.optional().members(schema.string()) diff --git a/database/migrations/1608415261417_projects.ts b/database/migrations/1608415261417_projects.ts index a2f9c68..065d6a4 100644 --- a/database/migrations/1608415261417_projects.ts +++ b/database/migrations/1608415261417_projects.ts @@ -13,7 +13,6 @@ export default class Projects extends BaseSchema { .references('translations.id') .onDelete('CASCADE') table.string('url').notNullable() - table.integer('progress').notNullable() table .integer('file_id') .unsigned() From 6abe3e5601e5dc202fa8b255af94a52a5f3afef4 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 13:40:52 +0200 Subject: [PATCH 159/244] Preload label --- app/Controllers/Http/ProjectsController.ts | 4 +++- database/migrations/1608415261417_projects.ts | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/Controllers/Http/ProjectsController.ts b/app/Controllers/Http/ProjectsController.ts index f7fbc60..978667e 100755 --- a/app/Controllers/Http/ProjectsController.ts +++ b/app/Controllers/Http/ProjectsController.ts @@ -13,7 +13,9 @@ export default class ProjectsController { .orderBy('id', 'asc') .preload('cover') .preload('description') - .preload('tags') + .preload('tags', (tags) => { + tags.preload('label') + }) }) } diff --git a/database/migrations/1608415261417_projects.ts b/database/migrations/1608415261417_projects.ts index 065d6a4..32e68f0 100644 --- a/database/migrations/1608415261417_projects.ts +++ b/database/migrations/1608415261417_projects.ts @@ -14,7 +14,7 @@ export default class Projects extends BaseSchema { .onDelete('CASCADE') table.string('url').notNullable() table - .integer('file_id') + .integer('cover_id') .unsigned() .references('files.id') .onDelete('CASCADE') From bbebdf681d11c66ac63f65370e4cca75aae7357b Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 13:44:46 +0200 Subject: [PATCH 160/244] Add column() --- app/Models/Tag.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/app/Models/Tag.ts b/app/Models/Tag.ts index 1e27f59..5d2174d 100644 --- a/app/Models/Tag.ts +++ b/app/Models/Tag.ts @@ -11,6 +11,7 @@ export default class Tag extends BaseModel { }) public label: BelongsTo + @column() public labelId: number @column.dateTime({ autoCreate: true }) From 0c70b340a999d2ef06177e993686721413da8911 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 14:38:14 +0200 Subject: [PATCH 161/244] Add maintenance mode and update announce --- app/Controllers/Http/AnnouncesController.ts | 22 ---------- .../Http/MaintenancesController.ts | 42 +++++++++++++++++++ app/Models/Maintenance.ts | 25 +++++++++++ .../announce/AnnounceUpdateValidator.ts | 2 +- .../MaintenanceUpdateValidator.ts} | 9 ++-- .../migrations/1629722224211_maintenances.ts | 22 ++++++++++ start/routes/artsite.ts | 4 +- 7 files changed, 97 insertions(+), 29 deletions(-) create mode 100644 app/Controllers/Http/MaintenancesController.ts create mode 100644 app/Models/Maintenance.ts rename app/Validators/{announce/AnnounceStoreValidator.ts => maintenance/MaintenanceUpdateValidator.ts} (63%) create mode 100644 database/migrations/1629722224211_maintenances.ts diff --git a/app/Controllers/Http/AnnouncesController.ts b/app/Controllers/Http/AnnouncesController.ts index 8be227b..5c656f6 100644 --- a/app/Controllers/Http/AnnouncesController.ts +++ b/app/Controllers/Http/AnnouncesController.ts @@ -1,6 +1,5 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import Announce from "App/Models/Announce"; -import AnnounceStoreValidator from "App/Validators/announce/AnnounceStoreValidator"; import AnnounceUpdateValidator from "App/Validators/announce/AnnounceUpdateValidator"; import getTranslation from "App/Tasks/getTranslation"; import File from "App/Models/File"; @@ -19,19 +18,6 @@ export default class AnnouncesController { }) } - public async store ({ request, response }: HttpContextContract) { - const data = await request.validate(AnnounceStoreValidator) - const announce = await Announce.create(data) - await announce.related('message').associate(await getTranslation(data.code)) - - const cover = await File.findBy('label', data.cover) - if (cover) await announce.related('cover').associate(cover) - - return response.status(200).send({ - announce: announce - }) - } - public async show ({ params, response }: HttpContextContract) { const announce = await Announce.findOrFail(params.id) announce.load('message') @@ -59,12 +45,4 @@ export default class AnnouncesController { }) } - public async destroy ({ response, params }: HttpContextContract) { - const announce = await Announce.findOrFail(params.id) - await announce.delete() - return response.status(200).send({ - message: 'Announce successfully deleted!' - }) - } - } diff --git a/app/Controllers/Http/MaintenancesController.ts b/app/Controllers/Http/MaintenancesController.ts new file mode 100644 index 0000000..558c1ee --- /dev/null +++ b/app/Controllers/Http/MaintenancesController.ts @@ -0,0 +1,42 @@ +import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; +import getTranslation from "App/Tasks/getTranslation"; +import Maintenance from "App/Models/Maintenance"; +import MaintenanceUpdateValidator from "App/Validators/maintenance/MaintenanceUpdateValidator"; + +export default class MaintenancesController { + + public async index ({ response }: HttpContextContract) { + const maintenance = await Maintenance + .query() + .orderBy('created_at', 'desc') + .preload('reason') + .first() + return response.status(200).send({ + maintenance: maintenance + }) + } + + public async show ({ params, response }: HttpContextContract) { + const maintenance = await Maintenance.findOrFail(params.id) + maintenance.load('reason') + return response.status(200).send({ + maintenance + }) + } + + public async update ({ request, params, response }: HttpContextContract) { + const data = await request.validate(MaintenanceUpdateValidator) + const maintenance = await Maintenance.findOrFail(params.id) + + if (data.reason) { + await maintenance.related('reason').associate(await getTranslation(data.reason)) + } + + await maintenance.merge(data).save() + + return response.status(200).send({ + maintenance + }) + } + +} diff --git a/app/Models/Maintenance.ts b/app/Models/Maintenance.ts new file mode 100644 index 0000000..967681b --- /dev/null +++ b/app/Models/Maintenance.ts @@ -0,0 +1,25 @@ +import { DateTime } from 'luxon' +import {BaseModel, BelongsTo, belongsTo, column} from '@ioc:Adonis/Lucid/Orm' +import Translation from "App/Models/Translation"; + +export default class Maintenance extends BaseModel { + @column({ isPrimary: true }) + public id: number + + @column() + public active: boolean + + @belongsTo(() => Translation, { + foreignKey: 'reasonId' + }) + public reason: BelongsTo + + @column() + public reasonId: number + + @column.dateTime({ autoCreate: true }) + public createdAt: DateTime + + @column.dateTime({ autoCreate: true, autoUpdate: true }) + public updatedAt: DateTime +} diff --git a/app/Validators/announce/AnnounceUpdateValidator.ts b/app/Validators/announce/AnnounceUpdateValidator.ts index 3b5c9b9..144033b 100644 --- a/app/Validators/announce/AnnounceUpdateValidator.ts +++ b/app/Validators/announce/AnnounceUpdateValidator.ts @@ -6,7 +6,7 @@ export default class AnnounceUpdateValidator { } public schema = schema.create({ - code: schema.string(), + code: schema.string.optional(), cover: schema.string.optional(), color: schema.string.optional(), hoverColor: schema.string.optional() diff --git a/app/Validators/announce/AnnounceStoreValidator.ts b/app/Validators/maintenance/MaintenanceUpdateValidator.ts similarity index 63% rename from app/Validators/announce/AnnounceStoreValidator.ts rename to app/Validators/maintenance/MaintenanceUpdateValidator.ts index 3a70835..f40af69 100644 --- a/app/Validators/announce/AnnounceStoreValidator.ts +++ b/app/Validators/maintenance/MaintenanceUpdateValidator.ts @@ -1,16 +1,15 @@ import { schema } from '@ioc:Adonis/Core/Validator' import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' -export default class AnnounceStoreValidator { +export default class MaintenanceUpdateValidator { constructor (protected ctx: HttpContextContract) { } public schema = schema.create({ - code: schema.string(), - cover: schema.string.optional(), - color: schema.string(), - hoverColor: schema.string() + reason: schema.string.optional(), + active: schema.boolean.optional() }) + public messages = { required: 'The field {{field}} is required' } diff --git a/database/migrations/1629722224211_maintenances.ts b/database/migrations/1629722224211_maintenances.ts new file mode 100644 index 0000000..65312e6 --- /dev/null +++ b/database/migrations/1629722224211_maintenances.ts @@ -0,0 +1,22 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class Maintenances extends BaseSchema { + protected tableName = 'maintenances' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id') + table.boolean('active').defaultTo(false).notNullable() + table + .integer('reason_id') + .unsigned() + .references('translations.id') + .onDelete('CASCADE') + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts index 9e67254..5b602ba 100644 --- a/start/routes/artsite.ts +++ b/start/routes/artsite.ts @@ -3,7 +3,9 @@ import Route from "@ioc:Adonis/Core/Route"; Route.group(() => { Route.resource('/form', 'FormsController').except(['edit', 'create', 'update']) - Route.resource('/announces', 'AnnouncesController').except(['edit', 'create']) + Route.resource('/announces', 'AnnouncesController').only(['index', 'show', 'update']) + + Route.resource('/maintenance', 'MaintenanceController').only(['index', 'show', 'update']) Route.resource('/experiences', 'ExperiencesController').except(['edit', 'create']) From fd06d6ecfab4de4226335de69538e185b7a94aff Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 14:42:35 +0200 Subject: [PATCH 162/244] Remove useless spacings --- app/Controllers/Http/InformationsController.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Controllers/Http/InformationsController.ts b/app/Controllers/Http/InformationsController.ts index 58bee6e..843b7af 100644 --- a/app/Controllers/Http/InformationsController.ts +++ b/app/Controllers/Http/InformationsController.ts @@ -5,7 +5,7 @@ import getTranslation from "App/Tasks/getTranslation"; export default class InformationsController { - public async index ( { response }: HttpContextContract ) { + public async index ({ response }: HttpContextContract) { return response.status(200).send({ informations: await Information .query() @@ -14,7 +14,7 @@ export default class InformationsController { }) } - public async update ( { response, request }: HttpContextContract ) { + public async update ({ response, request }: HttpContextContract) { const information = await Information.firstOrFail() const data = await request.validate(InformationUpdateValidator) From a57aacfbd2c0ee68738f25932478af949ed7488d Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 14:43:23 +0200 Subject: [PATCH 163/244] remove useless routes --- app/Controllers/Http/AnnouncesController.ts | 9 --------- app/Controllers/Http/MaintenancesController.ts | 8 -------- start/routes/artsite.ts | 4 ++-- 3 files changed, 2 insertions(+), 19 deletions(-) diff --git a/app/Controllers/Http/AnnouncesController.ts b/app/Controllers/Http/AnnouncesController.ts index 5c656f6..75861d0 100644 --- a/app/Controllers/Http/AnnouncesController.ts +++ b/app/Controllers/Http/AnnouncesController.ts @@ -18,15 +18,6 @@ export default class AnnouncesController { }) } - public async show ({ params, response }: HttpContextContract) { - const announce = await Announce.findOrFail(params.id) - announce.load('message') - announce.load('cover') - return response.status(200).send({ - announce - }) - } - public async update ({ request, params, response }: HttpContextContract) { const data = await request.validate(AnnounceUpdateValidator) const announce = await Announce.findOrFail(params.id) diff --git a/app/Controllers/Http/MaintenancesController.ts b/app/Controllers/Http/MaintenancesController.ts index 558c1ee..28ef848 100644 --- a/app/Controllers/Http/MaintenancesController.ts +++ b/app/Controllers/Http/MaintenancesController.ts @@ -16,14 +16,6 @@ export default class MaintenancesController { }) } - public async show ({ params, response }: HttpContextContract) { - const maintenance = await Maintenance.findOrFail(params.id) - maintenance.load('reason') - return response.status(200).send({ - maintenance - }) - } - public async update ({ request, params, response }: HttpContextContract) { const data = await request.validate(MaintenanceUpdateValidator) const maintenance = await Maintenance.findOrFail(params.id) diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts index 5b602ba..a4ddcf1 100644 --- a/start/routes/artsite.ts +++ b/start/routes/artsite.ts @@ -3,9 +3,9 @@ import Route from "@ioc:Adonis/Core/Route"; Route.group(() => { Route.resource('/form', 'FormsController').except(['edit', 'create', 'update']) - Route.resource('/announces', 'AnnouncesController').only(['index', 'show', 'update']) + Route.resource('/announces', 'AnnouncesController').only(['index', 'update']) - Route.resource('/maintenance', 'MaintenanceController').only(['index', 'show', 'update']) + Route.resource('/maintenance', 'MaintenanceController').only(['index', 'update']) Route.resource('/experiences', 'ExperiencesController').except(['edit', 'create']) From a82648284ed8a30c32c984f82ca0620a0dacb0dc Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 14:52:44 +0200 Subject: [PATCH 164/244] fix --- start/routes/artsite.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts index a4ddcf1..555301c 100644 --- a/start/routes/artsite.ts +++ b/start/routes/artsite.ts @@ -3,9 +3,9 @@ import Route from "@ioc:Adonis/Core/Route"; Route.group(() => { Route.resource('/form', 'FormsController').except(['edit', 'create', 'update']) - Route.resource('/announces', 'AnnouncesController').only(['index', 'update']) + Route.resource('/announce', 'AnnouncesController').only(['index', 'update']) - Route.resource('/maintenance', 'MaintenanceController').only(['index', 'update']) + Route.resource('/maintenance', 'MaintenancesController').only(['index', 'update']) Route.resource('/experiences', 'ExperiencesController').except(['edit', 'create']) From 89c294aa0945f9ef547660c5286a6eea29c13919 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 17:21:45 +0200 Subject: [PATCH 165/244] Working on posts --- app/Controllers/Http/PostsController.ts | 65 ++++++++++++---------- app/Controllers/Http/ProjectsController.ts | 4 +- start/routes/artsite.ts | 4 +- 3 files changed, 42 insertions(+), 31 deletions(-) diff --git a/app/Controllers/Http/PostsController.ts b/app/Controllers/Http/PostsController.ts index 7a10bdb..eb43e87 100755 --- a/app/Controllers/Http/PostsController.ts +++ b/app/Controllers/Http/PostsController.ts @@ -3,15 +3,32 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; export default class PostsController { - public async getLikes ({ params, response }: HttpContextContract) { - let post = await Post.findBy('slug', params.slug) + public async index ({ response }: HttpContextContract) { + return response.status(200).send({ + posts: await Post.query() + .preload('tags', (tags) => { + tags.preload('label') + }) + }) + } - if (!post) { - post = await Post.create({ - slug: params.slug, - likes: 0 - }) - } + public async show ({ params, response }: HttpContextContract) { + const post = await Post.findByOrFail('slug', params.slug) + await post.load('tags', (tags) => { + tags.preload('label') + }) + return response.status(200).send({ + post + }) + } + + public async getLikes ({ params, response }: HttpContextContract) { + const post = await Post.firstOrCreate({ + slug: params.slug + }, { + slug: params.slug, + likes: 0 + }) return response.status(200).send({ likes: post.likes @@ -19,33 +36,23 @@ export default class PostsController { } public async like ({ params, response }: HttpContextContract) { - let post = await Post.findBy('slug', params.slug) - - if (!post) { - post = await Post.create({ - slug: params.slug, - likes: 0 - }) - } - - const getLikes = post.likes + 1 - - await post.merge({ - likes: getLikes - }).save() + const post = await Post.firstOrCreate({ + slug: params.slug + }, { + slug: params.slug, + likes: 0 + }) + post.likes = post.likes++ + await post.save() return response.status(200).send({ post }) } public async unlike ({ params, response }: HttpContextContract) { - let post = await Post.findByOrFail('slug', params.slug) - - const getLikes = post.likes - 1 - - await post.merge({ - likes: getLikes - }).save() + const post = await Post.findByOrFail('slug', params.slug) + post.likes = post.likes-- + await post.save() return response.status(200).send({ post }) diff --git a/app/Controllers/Http/ProjectsController.ts b/app/Controllers/Http/ProjectsController.ts index 978667e..905bbdb 100755 --- a/app/Controllers/Http/ProjectsController.ts +++ b/app/Controllers/Http/ProjectsController.ts @@ -36,7 +36,9 @@ export default class ProjectsController { const project = await Project.findOrFail(params.id) await project.load('cover') await project.load('description') - await project.load('tags') + await project.load('tags', (tags) => { + tags.preload('label') + }) return response.status(200).send({ project }) diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts index 555301c..1be9817 100644 --- a/start/routes/artsite.ts +++ b/start/routes/artsite.ts @@ -20,9 +20,11 @@ Route.group(() => { Route.resource('/informations', 'InformationsController').only(['index', 'update']) Route.group(() => { - Route.get('/:slug', 'PostsController.getLikes') + Route.get('/:slug/likes', 'PostsController.getLikes') Route.post('/:slug/like', 'PostsController.like') Route.post('/:slug/unlike', 'PostsController.unlike') + Route.get('/', 'PostsController.index') + Route.get('/:slug', 'PostsController.show') }).prefix('/posts') Route.resource('/subscribers', 'SubscribersController').only(['index', 'store', 'destroy']) From 95965106adf5ce1b87f70c13d2832591c6848e1a Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 17:29:31 +0200 Subject: [PATCH 166/244] Working on posts --- app/Controllers/Http/PostsController.ts | 30 +++++++++++++++------- app/Validators/post/PostUpdateValidator.ts | 17 ++++++++++++ start/routes/artsite.ts | 4 +-- 3 files changed, 39 insertions(+), 12 deletions(-) create mode 100644 app/Validators/post/PostUpdateValidator.ts diff --git a/app/Controllers/Http/PostsController.ts b/app/Controllers/Http/PostsController.ts index eb43e87..1a4c0e3 100755 --- a/app/Controllers/Http/PostsController.ts +++ b/app/Controllers/Http/PostsController.ts @@ -1,5 +1,6 @@ import Post from "App/Models/Post"; import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; +import PostUpdateValidator from "App/Validators/post/PostUpdateValidator"; export default class PostsController { @@ -13,7 +14,12 @@ export default class PostsController { } public async show ({ params, response }: HttpContextContract) { - const post = await Post.findByOrFail('slug', params.slug) + const post = await Post.firstOrCreate({ + slug: params.slug + }, { + slug: params.slug, + likes: 0 + }) await post.load('tags', (tags) => { tags.preload('label') }) @@ -22,16 +28,22 @@ export default class PostsController { }) } - public async getLikes ({ params, response }: HttpContextContract) { - const post = await Post.firstOrCreate({ - slug: params.slug - }, { - slug: params.slug, - likes: 0 - }) + public async update ({ request, params, response }: HttpContextContract) { + const post = await Post.findOrFail(params.id) + const data = await request.validate(PostUpdateValidator) + await post.merge(data).save() + await post.related('tags').sync(data.tags!) return response.status(200).send({ - likes: post.likes + post + }) + } + + public async destroy ({ response, params }: HttpContextContract) { + const post = await Post.findOrFail(params.id) + await post.delete() + return response.status(200).send({ + message: 'Post successfully deleted!' }) } diff --git a/app/Validators/post/PostUpdateValidator.ts b/app/Validators/post/PostUpdateValidator.ts new file mode 100644 index 0000000..9dec108 --- /dev/null +++ b/app/Validators/post/PostUpdateValidator.ts @@ -0,0 +1,17 @@ +import {schema} from '@ioc:Adonis/Core/Validator' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' + +export default class PostUpdateValidator { + + public schema = schema.create({ + slug: schema.string.optional(), + likes: schema.number.optional(), + tags: schema.array.optional().members(schema.string()) + }) + public messages = { + required: 'The field {{field}} is required' + } + + constructor (protected ctx: HttpContextContract) { + } +} diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts index 1be9817..56bd80b 100644 --- a/start/routes/artsite.ts +++ b/start/routes/artsite.ts @@ -20,11 +20,9 @@ Route.group(() => { Route.resource('/informations', 'InformationsController').only(['index', 'update']) Route.group(() => { - Route.get('/:slug/likes', 'PostsController.getLikes') + Route.resource('/', 'PostsController').only(['index', 'show', 'destroy']) Route.post('/:slug/like', 'PostsController.like') Route.post('/:slug/unlike', 'PostsController.unlike') - Route.get('/', 'PostsController.index') - Route.get('/:slug', 'PostsController.show') }).prefix('/posts') Route.resource('/subscribers', 'SubscribersController').only(['index', 'store', 'destroy']) From bb9ac0156bfdd46e5192abf8b74b0ae0c6bd783e Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 17:32:39 +0200 Subject: [PATCH 167/244] FIX ROUTES --- start/routes/artsite.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts index 56bd80b..578ab98 100644 --- a/start/routes/artsite.ts +++ b/start/routes/artsite.ts @@ -19,8 +19,9 @@ Route.group(() => { Route.resource('/informations', 'InformationsController').only(['index', 'update']) + Route.resource('/posts', 'PostsController').only(['index', 'destroy']) Route.group(() => { - Route.resource('/', 'PostsController').only(['index', 'show', 'destroy']) + Route.get('/:slug', 'PostsController.show') Route.post('/:slug/like', 'PostsController.like') Route.post('/:slug/unlike', 'PostsController.unlike') }).prefix('/posts') From 8c5032fa721c0da844a44b39765206cfd7380027 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 17:55:49 +0200 Subject: [PATCH 168/244] Working on posts --- app/Controllers/Http/AnnouncesController.ts | 2 +- app/Controllers/Http/ExperiencesController.ts | 2 +- app/Controllers/Http/FormationsController.ts | 2 +- .../Http/InformationsController.ts | 2 +- .../Http/MaintenancesController.ts | 2 +- app/Controllers/Http/PostsController.ts | 35 +++++++++++++++++++ app/Controllers/Http/ProfileController.ts | 2 +- app/Controllers/Http/ProjectsController.ts | 2 +- app/Controllers/Http/TagsController.ts | 2 +- app/Models/Post.ts | 31 +++++++++++++++- app/{Tasks => Utils}/GetDiscordActivity.ts | 0 app/{Tasks => Utils}/getTranslation.ts | 0 app/Validators/post/PostStoreValidator.ts | 21 +++++++++++ app/Validators/post/PostUpdateValidator.ts | 6 +++- start/routes/artsite.ts | 4 +-- 15 files changed, 101 insertions(+), 12 deletions(-) rename app/{Tasks => Utils}/GetDiscordActivity.ts (100%) rename app/{Tasks => Utils}/getTranslation.ts (100%) create mode 100644 app/Validators/post/PostStoreValidator.ts diff --git a/app/Controllers/Http/AnnouncesController.ts b/app/Controllers/Http/AnnouncesController.ts index 75861d0..0446999 100644 --- a/app/Controllers/Http/AnnouncesController.ts +++ b/app/Controllers/Http/AnnouncesController.ts @@ -1,7 +1,7 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import Announce from "App/Models/Announce"; import AnnounceUpdateValidator from "App/Validators/announce/AnnounceUpdateValidator"; -import getTranslation from "App/Tasks/getTranslation"; +import getTranslation from "App/Utils/getTranslation"; import File from "App/Models/File"; export default class AnnouncesController { diff --git a/app/Controllers/Http/ExperiencesController.ts b/app/Controllers/Http/ExperiencesController.ts index d27ffb0..00c4617 100644 --- a/app/Controllers/Http/ExperiencesController.ts +++ b/app/Controllers/Http/ExperiencesController.ts @@ -1,7 +1,7 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import Experience from "App/Models/Experience"; import ExperienceStoreValidator from "App/Validators/experience/ExperienceStoreValidator"; -import getTranslation from "App/Tasks/getTranslation"; +import getTranslation from "App/Utils/getTranslation"; import ExperienceUpdateValidator from "App/Validators/experience/ExperienceUpdateValidator"; export default class ExperiencesController { diff --git a/app/Controllers/Http/FormationsController.ts b/app/Controllers/Http/FormationsController.ts index e392e2b..9b35616 100644 --- a/app/Controllers/Http/FormationsController.ts +++ b/app/Controllers/Http/FormationsController.ts @@ -1,5 +1,5 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; -import getTranslation from "App/Tasks/getTranslation"; +import getTranslation from "App/Utils/getTranslation"; import FormationStoreValidator from "App/Validators/formation/FormationStoreValidator"; import FormationUpdateValidator from "App/Validators/formation/FormationUpdateValidator"; import Formation from "App/Models/Formation"; diff --git a/app/Controllers/Http/InformationsController.ts b/app/Controllers/Http/InformationsController.ts index 843b7af..33c82bf 100644 --- a/app/Controllers/Http/InformationsController.ts +++ b/app/Controllers/Http/InformationsController.ts @@ -1,7 +1,7 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import Information from "App/Models/Information"; import InformationUpdateValidator from "App/Validators/information/InformationUpdateValidator"; -import getTranslation from "App/Tasks/getTranslation"; +import getTranslation from "App/Utils/getTranslation"; export default class InformationsController { diff --git a/app/Controllers/Http/MaintenancesController.ts b/app/Controllers/Http/MaintenancesController.ts index 28ef848..4d907de 100644 --- a/app/Controllers/Http/MaintenancesController.ts +++ b/app/Controllers/Http/MaintenancesController.ts @@ -1,5 +1,5 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; -import getTranslation from "App/Tasks/getTranslation"; +import getTranslation from "App/Utils/getTranslation"; import Maintenance from "App/Models/Maintenance"; import MaintenanceUpdateValidator from "App/Validators/maintenance/MaintenanceUpdateValidator"; diff --git a/app/Controllers/Http/PostsController.ts b/app/Controllers/Http/PostsController.ts index 1a4c0e3..e35789a 100755 --- a/app/Controllers/Http/PostsController.ts +++ b/app/Controllers/Http/PostsController.ts @@ -1,6 +1,9 @@ import Post from "App/Models/Post"; import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import PostUpdateValidator from "App/Validators/post/PostUpdateValidator"; +import getTranslation from "App/Utils/getTranslation"; +import File from "App/Models/File"; +import PostStoreValidator from "App/Validators/post/PostStoreValidator"; export default class PostsController { @@ -13,7 +16,34 @@ export default class PostsController { }) } + public async store ({ request, response }: HttpContextContract) { + const data = await request.validate(PostStoreValidator) + const post = await Post.create(data) + const cover = await File.findByOrFail('label', data.cover) + + await post.related('cover').associate(cover) + await post.related('description').associate(await getTranslation(data.description)) + await post.related('title').associate(await getTranslation(data.title)) + await post.related('tags').sync(data.tags!) + return response.status(200).send({ + post + }) + } + public async show ({ params, response }: HttpContextContract) { + const post = await Post.findOrFail(params.id) + await post.load('cover') + await post.load('title') + await post.load('description') + await post.load('tags', (tags) => { + tags.preload('label') + }) + return response.status(200).send({ + post + }) + } + + public async get ({ params, response }: HttpContextContract) { const post = await Post.firstOrCreate({ slug: params.slug }, { @@ -34,6 +64,11 @@ export default class PostsController { await post.merge(data).save() await post.related('tags').sync(data.tags!) + await post.related('description').associate(await getTranslation(data.description!)) + await post.related('title').associate(await getTranslation(data.title!)) + + const cover = await File.findBy('label', data.cover) + if (cover) await post.related('cover').associate(cover) return response.status(200).send({ post }) diff --git a/app/Controllers/Http/ProfileController.ts b/app/Controllers/Http/ProfileController.ts index eb839f4..478c351 100755 --- a/app/Controllers/Http/ProfileController.ts +++ b/app/Controllers/Http/ProfileController.ts @@ -1,5 +1,5 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; -import {getDiscordActivity} from "App/Tasks/GetDiscordActivity"; +import {getDiscordActivity} from "App/Utils/GetDiscordActivity"; export default class ProfileController { diff --git a/app/Controllers/Http/ProjectsController.ts b/app/Controllers/Http/ProjectsController.ts index 905bbdb..88c4a5b 100755 --- a/app/Controllers/Http/ProjectsController.ts +++ b/app/Controllers/Http/ProjectsController.ts @@ -3,7 +3,7 @@ import Project from "App/Models/Project"; import ProjectStoreValidator from "App/Validators/project/ProjectStoreValidator"; import ProjectUpdateValidator from "App/Validators/project/ProjectUpdateValidator"; import File from "App/Models/File"; -import getTranslation from "App/Tasks/getTranslation"; +import getTranslation from "App/Utils/getTranslation"; export default class ProjectsController { diff --git a/app/Controllers/Http/TagsController.ts b/app/Controllers/Http/TagsController.ts index 6b12d0f..c8ba20b 100644 --- a/app/Controllers/Http/TagsController.ts +++ b/app/Controllers/Http/TagsController.ts @@ -1,5 +1,5 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; -import getTranslation from "App/Tasks/getTranslation"; +import getTranslation from "App/Utils/getTranslation"; import TagStoreValidator from "App/Validators/tag/TagStoreValidator"; import TagUpdateValidator from "App/Validators/tag/TagUpdateValidator"; import Tag from "App/Models/Tag"; diff --git a/app/Models/Post.ts b/app/Models/Post.ts index f6e36f7..52097e0 100755 --- a/app/Models/Post.ts +++ b/app/Models/Post.ts @@ -1,6 +1,8 @@ import { DateTime } from 'luxon' -import {BaseModel, column, manyToMany, ManyToMany} from '@ioc:Adonis/Lucid/Orm' +import {BaseModel, BelongsTo, belongsTo, column, manyToMany, ManyToMany} from '@ioc:Adonis/Lucid/Orm' import Tag from "App/Models/Tag"; +import Translation from "App/Models/Translation"; +import File from "App/Models/File"; export default class Post extends BaseModel { @column({ isPrimary: true }) @@ -15,6 +17,33 @@ export default class Post extends BaseModel { @column() public likes: number + @belongsTo(() => Translation, { + foreignKey: 'titleId' + }) + public title: BelongsTo + + @column() + public titleId: number + + @belongsTo(() => Translation, { + foreignKey: 'descriptionId' + }) + public description: BelongsTo + + @column() + public descriptionId: number + + @belongsTo(() => File, { + foreignKey: 'coverId' + }) + public cover: BelongsTo + + @column() + public coverId: number + + @column() + public readingTime: number + @column.dateTime({ autoCreate: true }) public createdAt: DateTime diff --git a/app/Tasks/GetDiscordActivity.ts b/app/Utils/GetDiscordActivity.ts similarity index 100% rename from app/Tasks/GetDiscordActivity.ts rename to app/Utils/GetDiscordActivity.ts diff --git a/app/Tasks/getTranslation.ts b/app/Utils/getTranslation.ts similarity index 100% rename from app/Tasks/getTranslation.ts rename to app/Utils/getTranslation.ts diff --git a/app/Validators/post/PostStoreValidator.ts b/app/Validators/post/PostStoreValidator.ts new file mode 100644 index 0000000..d2f972d --- /dev/null +++ b/app/Validators/post/PostStoreValidator.ts @@ -0,0 +1,21 @@ +import {schema} from '@ioc:Adonis/Core/Validator' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' + +export default class PostStoreValidator { + + public schema = schema.create({ + slug: schema.string(), + likes: schema.number(), + tags: schema.array().members(schema.string()), + title: schema.string(), + description: schema.string(), + cover: schema.string(), + readingTime: schema.number() + }) + public messages = { + required: 'The field {{field}} is required' + } + + constructor (protected ctx: HttpContextContract) { + } +} diff --git a/app/Validators/post/PostUpdateValidator.ts b/app/Validators/post/PostUpdateValidator.ts index 9dec108..57b1b5c 100644 --- a/app/Validators/post/PostUpdateValidator.ts +++ b/app/Validators/post/PostUpdateValidator.ts @@ -6,7 +6,11 @@ export default class PostUpdateValidator { public schema = schema.create({ slug: schema.string.optional(), likes: schema.number.optional(), - tags: schema.array.optional().members(schema.string()) + tags: schema.array.optional().members(schema.string()), + title: schema.string.optional(), + description: schema.string.optional(), + cover: schema.string.optional(), + readingTime: schema.number.optional() }) public messages = { required: 'The field {{field}} is required' diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts index 578ab98..76d7eee 100644 --- a/start/routes/artsite.ts +++ b/start/routes/artsite.ts @@ -19,9 +19,9 @@ Route.group(() => { Route.resource('/informations', 'InformationsController').only(['index', 'update']) - Route.resource('/posts', 'PostsController').only(['index', 'destroy']) + Route.resource('/posts', 'PostsController').except(['edit', 'create']) Route.group(() => { - Route.get('/:slug', 'PostsController.show') + Route.get('/:slug', 'PostsController.get') Route.post('/:slug/like', 'PostsController.like') Route.post('/:slug/unlike', 'PostsController.unlike') }).prefix('/posts') From 40249dc55ef9dd2eb05e468d9b76672856a56d84 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 17:59:12 +0200 Subject: [PATCH 169/244] Working on posts --- app/Models/Post.ts | 3 +++ app/Validators/post/PostStoreValidator.ts | 3 ++- app/Validators/post/PostUpdateValidator.ts | 3 ++- database/migrations/1629148762478_posts.ts | 17 +++++++++++++++++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/app/Models/Post.ts b/app/Models/Post.ts index 52097e0..e9f2e5b 100755 --- a/app/Models/Post.ts +++ b/app/Models/Post.ts @@ -44,6 +44,9 @@ export default class Post extends BaseModel { @column() public readingTime: number + @column() + public date: string + @column.dateTime({ autoCreate: true }) public createdAt: DateTime diff --git a/app/Validators/post/PostStoreValidator.ts b/app/Validators/post/PostStoreValidator.ts index d2f972d..99fe1b6 100644 --- a/app/Validators/post/PostStoreValidator.ts +++ b/app/Validators/post/PostStoreValidator.ts @@ -10,7 +10,8 @@ export default class PostStoreValidator { title: schema.string(), description: schema.string(), cover: schema.string(), - readingTime: schema.number() + readingTime: schema.number(), + date: schema.string(), }) public messages = { required: 'The field {{field}} is required' diff --git a/app/Validators/post/PostUpdateValidator.ts b/app/Validators/post/PostUpdateValidator.ts index 57b1b5c..7a0fcb2 100644 --- a/app/Validators/post/PostUpdateValidator.ts +++ b/app/Validators/post/PostUpdateValidator.ts @@ -10,7 +10,8 @@ export default class PostUpdateValidator { title: schema.string.optional(), description: schema.string.optional(), cover: schema.string.optional(), - readingTime: schema.number.optional() + readingTime: schema.number.optional(), + date: schema.string.optional(), }) public messages = { required: 'The field {{field}} is required' diff --git a/database/migrations/1629148762478_posts.ts b/database/migrations/1629148762478_posts.ts index 4a30245..5f62313 100644 --- a/database/migrations/1629148762478_posts.ts +++ b/database/migrations/1629148762478_posts.ts @@ -8,6 +8,23 @@ export default class Posts extends BaseSchema { table.increments('id').primary() table.string('slug').notNullable() table.integer('likes').notNullable() + table.integer('reading_time').notNullable() + table.string('date').notNullable() + table + .integer('title_id') + .unsigned() + .references('translations.id') + .onDelete('CASCADE') + table + .integer('description_id') + .unsigned() + .references('translations.id') + .onDelete('CASCADE') + table + .integer('title_id') + .unsigned() + .references('files.id') + .onDelete('CASCADE') table.timestamps(true, true) }) } From 4da459d30f71c333c9c60045bebbd888c5eedd0b Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 18:01:47 +0200 Subject: [PATCH 170/244] fix --- database/migrations/1629148762478_posts.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/database/migrations/1629148762478_posts.ts b/database/migrations/1629148762478_posts.ts index 5f62313..c090c08 100644 --- a/database/migrations/1629148762478_posts.ts +++ b/database/migrations/1629148762478_posts.ts @@ -21,7 +21,7 @@ export default class Posts extends BaseSchema { .references('translations.id') .onDelete('CASCADE') table - .integer('title_id') + .integer('cover_id') .unsigned() .references('files.id') .onDelete('CASCADE') From ec922ce9d294726dcdb7ef13dfaeb373b48c44cb Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 18:11:14 +0200 Subject: [PATCH 171/244] Preload all --- app/Controllers/Http/PostsController.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/Controllers/Http/PostsController.ts b/app/Controllers/Http/PostsController.ts index e35789a..227475b 100755 --- a/app/Controllers/Http/PostsController.ts +++ b/app/Controllers/Http/PostsController.ts @@ -13,6 +13,9 @@ export default class PostsController { .preload('tags', (tags) => { tags.preload('label') }) + .preload('cover') + .preload('title') + .preload('description') }) } From 03d084fb3d13e42ff512f06f5279bd58b61d2828 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 18:28:42 +0200 Subject: [PATCH 172/244] fix routes --- start/routes/artsite.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts index 76d7eee..02f29af 100644 --- a/start/routes/artsite.ts +++ b/start/routes/artsite.ts @@ -21,7 +21,7 @@ Route.group(() => { Route.resource('/posts', 'PostsController').except(['edit', 'create']) Route.group(() => { - Route.get('/:slug', 'PostsController.get') + Route.get('/:slug/data', 'PostsController.get') Route.post('/:slug/like', 'PostsController.like') Route.post('/:slug/unlike', 'PostsController.unlike') }).prefix('/posts') From 404ae3ac39119c5e5734090f0d93913baa684dd0 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 18:34:17 +0200 Subject: [PATCH 173/244] Load relationShips --- app/Controllers/Http/PostsController.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/Controllers/Http/PostsController.ts b/app/Controllers/Http/PostsController.ts index 227475b..2ee0ff0 100755 --- a/app/Controllers/Http/PostsController.ts +++ b/app/Controllers/Http/PostsController.ts @@ -56,6 +56,9 @@ export default class PostsController { await post.load('tags', (tags) => { tags.preload('label') }) + await post.load('cover') + await post.load('description') + await post.load('title') return response.status(200).send({ post }) From 94a0c692b16af4007309d76f355ef05311b67d3e Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 18:44:11 +0200 Subject: [PATCH 174/244] Load relationShips --- app/Controllers/Http/PostsController.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/Controllers/Http/PostsController.ts b/app/Controllers/Http/PostsController.ts index 2ee0ff0..946324b 100755 --- a/app/Controllers/Http/PostsController.ts +++ b/app/Controllers/Http/PostsController.ts @@ -95,8 +95,10 @@ export default class PostsController { slug: params.slug, likes: 0 }) - post.likes = post.likes++ - await post.save() + const getLikes = post.likes + await post.merge({ + likes: getLikes + 1 + }).save return response.status(200).send({ post }) @@ -104,8 +106,10 @@ export default class PostsController { public async unlike ({ params, response }: HttpContextContract) { const post = await Post.findByOrFail('slug', params.slug) - post.likes = post.likes-- - await post.save() + const getLikes = post.likes + await post.merge({ + likes: getLikes - 1 + }).save return response.status(200).send({ post }) From f79485881d6ed01a4b196134e58e106671dd6bf3 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Mon, 23 Aug 2021 18:58:18 +0200 Subject: [PATCH 175/244] Function --- app/Controllers/Http/PostsController.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Controllers/Http/PostsController.ts b/app/Controllers/Http/PostsController.ts index 946324b..0fd9f1a 100755 --- a/app/Controllers/Http/PostsController.ts +++ b/app/Controllers/Http/PostsController.ts @@ -98,7 +98,7 @@ export default class PostsController { const getLikes = post.likes await post.merge({ likes: getLikes + 1 - }).save + }).save() return response.status(200).send({ post }) @@ -109,7 +109,7 @@ export default class PostsController { const getLikes = post.likes await post.merge({ likes: getLikes - 1 - }).save + }).save() return response.status(200).send({ post }) From 5a2d1fab4386ec193323d8798e9d8cd27c847ebe Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 24 Aug 2021 21:10:24 +0200 Subject: [PATCH 176/244] Add file overwriting --- app/Controllers/Http/FilesController.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/Controllers/Http/FilesController.ts b/app/Controllers/Http/FilesController.ts index 2bb89a1..e9de178 100755 --- a/app/Controllers/Http/FilesController.ts +++ b/app/Controllers/Http/FilesController.ts @@ -24,11 +24,14 @@ export default class FilesController { } await file.move(Application.makePath('storage'), { - name: `${label}.${file.extname}` + name: `${label}.${file.extname}`, + overwrite: true }) return response.status(200).send({ - file: await File.create({ + file: await File.firstOrCreate({ + label: label + }, { fileName: `${label}.${file.extname}`, label: label }) From 48552f0ccf5fd27ea5778152534890ba80e37559 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 28 Aug 2021 19:08:48 +0200 Subject: [PATCH 177/244] Add post content --- app/Controllers/Http/PostsController.ts | 1 + app/Models/Post.ts | 8 ++++++++ database/migrations/1629148762478_posts.ts | 5 +++++ 3 files changed, 14 insertions(+) diff --git a/app/Controllers/Http/PostsController.ts b/app/Controllers/Http/PostsController.ts index 0fd9f1a..9eaa25e 100755 --- a/app/Controllers/Http/PostsController.ts +++ b/app/Controllers/Http/PostsController.ts @@ -10,6 +10,7 @@ export default class PostsController { public async index ({ response }: HttpContextContract) { return response.status(200).send({ posts: await Post.query() + .orderBy('id', 'desc') .preload('tags', (tags) => { tags.preload('label') }) diff --git a/app/Models/Post.ts b/app/Models/Post.ts index e9f2e5b..2fac1d4 100755 --- a/app/Models/Post.ts +++ b/app/Models/Post.ts @@ -41,6 +41,14 @@ export default class Post extends BaseModel { @column() public coverId: number + @belongsTo(() => Translation, { + foreignKey: 'contentId' + }) + public content: BelongsTo + + @column() + public contentId: number + @column() public readingTime: number diff --git a/database/migrations/1629148762478_posts.ts b/database/migrations/1629148762478_posts.ts index c090c08..205be3b 100644 --- a/database/migrations/1629148762478_posts.ts +++ b/database/migrations/1629148762478_posts.ts @@ -25,6 +25,11 @@ export default class Posts extends BaseSchema { .unsigned() .references('files.id') .onDelete('CASCADE') + table + .integer('content_id') + .unsigned() + .references('translations.id') + .onDelete('CASCADE') table.timestamps(true, true) }) } From 8f819264479976f72d403e94dc65f8547e34f6b1 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 28 Aug 2021 22:36:38 +0200 Subject: [PATCH 178/244] Add PostColor and content --- app/Controllers/Http/PostColorsController.ts | 46 +++++++++++++++++++ app/Controllers/Http/PostsController.ts | 20 ++++++++ app/Models/Post.ts | 9 ++++ app/Models/PostColor.ts | 19 ++++++++ app/Validators/post/PostStoreValidator.ts | 2 + app/Validators/post/PostUpdateValidator.ts | 2 + .../postColor/PostColorStoreValidator.ts | 16 +++++++ .../postColor/PostColorUpdateValidator.ts | 16 +++++++ database/migrations/1629148762478_posts.ts | 5 ++ .../migrations/1629722224211_maintenances.ts | 2 +- .../migrations/1630182451186_post_colors.ts | 18 ++++++++ start/routes/artsite.ts | 2 + 12 files changed, 156 insertions(+), 1 deletion(-) create mode 100644 app/Controllers/Http/PostColorsController.ts create mode 100644 app/Models/PostColor.ts create mode 100755 app/Validators/postColor/PostColorStoreValidator.ts create mode 100644 app/Validators/postColor/PostColorUpdateValidator.ts create mode 100644 database/migrations/1630182451186_post_colors.ts diff --git a/app/Controllers/Http/PostColorsController.ts b/app/Controllers/Http/PostColorsController.ts new file mode 100644 index 0000000..b9cc49d --- /dev/null +++ b/app/Controllers/Http/PostColorsController.ts @@ -0,0 +1,46 @@ +import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; +import PostColor from "App/Models/PostColor"; +import PostColorStoreValidator from "App/Validators/postColor/PostColorStoreValidator"; +import PostColorUpdateValidator from "App/Validators/postColor/PostColorUpdateValidator"; + +export default class PostColorsController { + + public async index ({ response }: HttpContextContract) { + return response.status(200).send({ + users: await PostColor.all() + }) + } + + public async store ({ request, response }: HttpContextContract) { + const data = await request.validate(PostColorStoreValidator) + const postColor = await PostColor.create(data) + return response.status(200).send({ + postColor + }) + } + + public async show ({ params, response }: HttpContextContract) { + const postColor = await PostColor.findOrFail(params.id) + return response.status(200).send({ + postColor + }) + } + + public async update ({ request, params, response }: HttpContextContract) { + const data = await request.validate(PostColorUpdateValidator) + const postColor = await PostColor.findOrFail(params.id) + await postColor.merge(data).save() + return response.status(200).send({ + postColor + }) + } + + public async destroy ({ response, params }: HttpContextContract) { + const postColor = await PostColor.findOrFail(params.id) + await postColor.delete() + return response.status(200).send({ + message: 'PostColor successfully deleted!' + }) + } + +} diff --git a/app/Controllers/Http/PostsController.ts b/app/Controllers/Http/PostsController.ts index 9eaa25e..31aa93c 100755 --- a/app/Controllers/Http/PostsController.ts +++ b/app/Controllers/Http/PostsController.ts @@ -4,6 +4,7 @@ import PostUpdateValidator from "App/Validators/post/PostUpdateValidator"; import getTranslation from "App/Utils/getTranslation"; import File from "App/Models/File"; import PostStoreValidator from "App/Validators/post/PostStoreValidator"; +import PostColor from "App/Models/PostColor"; export default class PostsController { @@ -15,6 +16,8 @@ export default class PostsController { tags.preload('label') }) .preload('cover') + .preload('color') + .preload('content') .preload('title') .preload('description') }) @@ -23,12 +26,19 @@ export default class PostsController { public async store ({ request, response }: HttpContextContract) { const data = await request.validate(PostStoreValidator) const post = await Post.create(data) + const cover = await File.findByOrFail('label', data.cover) + const color = await PostColor.findByOrFail('name', data.color) await post.related('cover').associate(cover) + await post.related('color').associate(color) + await post.related('description').associate(await getTranslation(data.description)) await post.related('title').associate(await getTranslation(data.title)) + await post.related('content').associate(await getTranslation(data.content)) + await post.related('tags').sync(data.tags!) + return response.status(200).send({ post }) @@ -39,6 +49,8 @@ export default class PostsController { await post.load('cover') await post.load('title') await post.load('description') + await post.load('content') + await post.load('color') await post.load('tags', (tags) => { tags.preload('label') }) @@ -60,6 +72,8 @@ export default class PostsController { await post.load('cover') await post.load('description') await post.load('title') + await post.load('content') + await post.load('color') return response.status(200).send({ post }) @@ -70,12 +84,18 @@ export default class PostsController { const data = await request.validate(PostUpdateValidator) await post.merge(data).save() + await post.related('tags').sync(data.tags!) await post.related('description').associate(await getTranslation(data.description!)) await post.related('title').associate(await getTranslation(data.title!)) + await post.related('content').associate(await getTranslation(data.content!)) const cover = await File.findBy('label', data.cover) if (cover) await post.related('cover').associate(cover) + + const color = await PostColor.findBy('name', data.color) + if (color) await post.related('color').associate(color) + return response.status(200).send({ post }) diff --git a/app/Models/Post.ts b/app/Models/Post.ts index 2fac1d4..316b8f7 100755 --- a/app/Models/Post.ts +++ b/app/Models/Post.ts @@ -3,6 +3,7 @@ import {BaseModel, BelongsTo, belongsTo, column, manyToMany, ManyToMany} from '@ import Tag from "App/Models/Tag"; import Translation from "App/Models/Translation"; import File from "App/Models/File"; +import PostColor from "App/Models/PostColor"; export default class Post extends BaseModel { @column({ isPrimary: true }) @@ -49,6 +50,14 @@ export default class Post extends BaseModel { @column() public contentId: number + @belongsTo(() => PostColor, { + foreignKey: 'postColorId' + }) + public color: BelongsTo + + @column() + public postColorId: number + @column() public readingTime: number diff --git a/app/Models/PostColor.ts b/app/Models/PostColor.ts new file mode 100644 index 0000000..95c540b --- /dev/null +++ b/app/Models/PostColor.ts @@ -0,0 +1,19 @@ +import { DateTime } from 'luxon' +import { BaseModel, column } from '@ioc:Adonis/Lucid/Orm' + +export default class PostColor extends BaseModel { + @column({ isPrimary: true }) + public id: number + + @column() + public name: string + + @column() + public color: string + + @column.dateTime({ autoCreate: true }) + public createdAt: DateTime + + @column.dateTime({ autoCreate: true, autoUpdate: true }) + public updatedAt: DateTime +} diff --git a/app/Validators/post/PostStoreValidator.ts b/app/Validators/post/PostStoreValidator.ts index 99fe1b6..4c329b4 100644 --- a/app/Validators/post/PostStoreValidator.ts +++ b/app/Validators/post/PostStoreValidator.ts @@ -12,6 +12,8 @@ export default class PostStoreValidator { cover: schema.string(), readingTime: schema.number(), date: schema.string(), + color: schema.string(), + content: schema.string() }) public messages = { required: 'The field {{field}} is required' diff --git a/app/Validators/post/PostUpdateValidator.ts b/app/Validators/post/PostUpdateValidator.ts index 7a0fcb2..3b4fb6c 100644 --- a/app/Validators/post/PostUpdateValidator.ts +++ b/app/Validators/post/PostUpdateValidator.ts @@ -12,6 +12,8 @@ export default class PostUpdateValidator { cover: schema.string.optional(), readingTime: schema.number.optional(), date: schema.string.optional(), + color: schema.string.optional(), + content: schema.string.optional() }) public messages = { required: 'The field {{field}} is required' diff --git a/app/Validators/postColor/PostColorStoreValidator.ts b/app/Validators/postColor/PostColorStoreValidator.ts new file mode 100755 index 0000000..6b15449 --- /dev/null +++ b/app/Validators/postColor/PostColorStoreValidator.ts @@ -0,0 +1,16 @@ +import {schema} from '@ioc:Adonis/Core/Validator' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' + +export default class PostColorStoreValidator { + constructor (protected ctx: HttpContextContract) { + } + + public schema = schema.create({ + name: schema.string(), + color: schema.string() + }) + + public messages = { + required: 'The field {{field}} is required' + } +} diff --git a/app/Validators/postColor/PostColorUpdateValidator.ts b/app/Validators/postColor/PostColorUpdateValidator.ts new file mode 100644 index 0000000..7d79bb7 --- /dev/null +++ b/app/Validators/postColor/PostColorUpdateValidator.ts @@ -0,0 +1,16 @@ +import {schema} from '@ioc:Adonis/Core/Validator' +import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' + +export default class PostColorUpdateValidator { + public schema = schema.create({ + name: schema.string.optional(), + color: schema.string.optional() + }) + + public messages = { + required: 'The field {{field}} is required' + } + + constructor (protected ctx: HttpContextContract) { + } +} diff --git a/database/migrations/1629148762478_posts.ts b/database/migrations/1629148762478_posts.ts index 205be3b..98353ac 100644 --- a/database/migrations/1629148762478_posts.ts +++ b/database/migrations/1629148762478_posts.ts @@ -30,6 +30,11 @@ export default class Posts extends BaseSchema { .unsigned() .references('translations.id') .onDelete('CASCADE') + table + .integer('post_color_id') + .unsigned() + .references('post_colors.id') + .onDelete('CASCADE') table.timestamps(true, true) }) } diff --git a/database/migrations/1629722224211_maintenances.ts b/database/migrations/1629722224211_maintenances.ts index 65312e6..83f02e1 100644 --- a/database/migrations/1629722224211_maintenances.ts +++ b/database/migrations/1629722224211_maintenances.ts @@ -5,7 +5,7 @@ export default class Maintenances extends BaseSchema { public async up () { this.schema.createTable(this.tableName, (table) => { - table.increments('id') + table.increments('id').primary() table.boolean('active').defaultTo(false).notNullable() table .integer('reason_id') diff --git a/database/migrations/1630182451186_post_colors.ts b/database/migrations/1630182451186_post_colors.ts new file mode 100644 index 0000000..260dfed --- /dev/null +++ b/database/migrations/1630182451186_post_colors.ts @@ -0,0 +1,18 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class PostColors extends BaseSchema { + protected tableName = 'post_colors' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table.string('name').notNullable() + table.string('color').notNullable() + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts index 02f29af..c7afeb8 100644 --- a/start/routes/artsite.ts +++ b/start/routes/artsite.ts @@ -7,6 +7,8 @@ Route.group(() => { Route.resource('/maintenance', 'MaintenancesController').only(['index', 'update']) + Route.resource('/colors', 'PostColorsController').only(['index', 'update']) + Route.resource('/experiences', 'ExperiencesController').except(['edit', 'create']) Route.resource('/formations', 'FormationsController').except(['edit', 'create']) From 27cb7d463580cac14ffa2aff4486bfce3d0f6d3a Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 28 Aug 2021 22:40:24 +0200 Subject: [PATCH 179/244] Add PostColor and content --- database/migrations/1629148762478_posts.ts | 10 --------- database/migrations/1630183188499_posts.ts | 26 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 10 deletions(-) create mode 100644 database/migrations/1630183188499_posts.ts diff --git a/database/migrations/1629148762478_posts.ts b/database/migrations/1629148762478_posts.ts index 98353ac..c090c08 100644 --- a/database/migrations/1629148762478_posts.ts +++ b/database/migrations/1629148762478_posts.ts @@ -25,16 +25,6 @@ export default class Posts extends BaseSchema { .unsigned() .references('files.id') .onDelete('CASCADE') - table - .integer('content_id') - .unsigned() - .references('translations.id') - .onDelete('CASCADE') - table - .integer('post_color_id') - .unsigned() - .references('post_colors.id') - .onDelete('CASCADE') table.timestamps(true, true) }) } diff --git a/database/migrations/1630183188499_posts.ts b/database/migrations/1630183188499_posts.ts new file mode 100644 index 0000000..74dd770 --- /dev/null +++ b/database/migrations/1630183188499_posts.ts @@ -0,0 +1,26 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class Posts extends BaseSchema { + protected tableName = 'posts' + + public async up () { + this.schema.table(this.tableName, (table) => { + table + .integer('content_id') + .unsigned() + .references('translations.id') + .onDelete('CASCADE') + table + .integer('post_color_id') + .unsigned() + .references('post_colors.id') + .onDelete('CASCADE') + }) + } + + public async down () { + this.schema.table(this.tableName, (table) => { + table.dropColumns('content_id', 'post_color_id') + }) + } +} From dd0bb02f74f2f66e0dbe9ecc755283b83e5e8d47 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 28 Aug 2021 22:44:42 +0200 Subject: [PATCH 180/244] Fix response title --- app/Controllers/Http/PostColorsController.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/Controllers/Http/PostColorsController.ts b/app/Controllers/Http/PostColorsController.ts index b9cc49d..8a3fe18 100644 --- a/app/Controllers/Http/PostColorsController.ts +++ b/app/Controllers/Http/PostColorsController.ts @@ -7,7 +7,7 @@ export default class PostColorsController { public async index ({ response }: HttpContextContract) { return response.status(200).send({ - users: await PostColor.all() + post_colors: await PostColor.all() }) } @@ -15,14 +15,14 @@ export default class PostColorsController { const data = await request.validate(PostColorStoreValidator) const postColor = await PostColor.create(data) return response.status(200).send({ - postColor + post_color: postColor }) } public async show ({ params, response }: HttpContextContract) { const postColor = await PostColor.findOrFail(params.id) return response.status(200).send({ - postColor + post_color: postColor }) } @@ -31,7 +31,7 @@ export default class PostColorsController { const postColor = await PostColor.findOrFail(params.id) await postColor.merge(data).save() return response.status(200).send({ - postColor + post_color: postColor }) } From f62877a8f0681885ddf7f0ac055697155eef2d5a Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 28 Aug 2021 22:48:35 +0200 Subject: [PATCH 181/244] Remove useless column --- app/Models/PostColor.ts | 3 --- app/Validators/postColor/PostColorStoreValidator.ts | 1 - app/Validators/postColor/PostColorUpdateValidator.ts | 1 - 3 files changed, 5 deletions(-) diff --git a/app/Models/PostColor.ts b/app/Models/PostColor.ts index 95c540b..3a2d32f 100644 --- a/app/Models/PostColor.ts +++ b/app/Models/PostColor.ts @@ -8,9 +8,6 @@ export default class PostColor extends BaseModel { @column() public name: string - @column() - public color: string - @column.dateTime({ autoCreate: true }) public createdAt: DateTime diff --git a/app/Validators/postColor/PostColorStoreValidator.ts b/app/Validators/postColor/PostColorStoreValidator.ts index 6b15449..0cc4866 100755 --- a/app/Validators/postColor/PostColorStoreValidator.ts +++ b/app/Validators/postColor/PostColorStoreValidator.ts @@ -7,7 +7,6 @@ export default class PostColorStoreValidator { public schema = schema.create({ name: schema.string(), - color: schema.string() }) public messages = { diff --git a/app/Validators/postColor/PostColorUpdateValidator.ts b/app/Validators/postColor/PostColorUpdateValidator.ts index 7d79bb7..7cfc140 100644 --- a/app/Validators/postColor/PostColorUpdateValidator.ts +++ b/app/Validators/postColor/PostColorUpdateValidator.ts @@ -4,7 +4,6 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' export default class PostColorUpdateValidator { public schema = schema.create({ name: schema.string.optional(), - color: schema.string.optional() }) public messages = { From fecdfb16da61eddb5ce92b865fe102cb27c0b91e Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 28 Aug 2021 22:50:58 +0200 Subject: [PATCH 182/244] fix routes --- start/routes/artsite.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts index c7afeb8..9d0c86e 100644 --- a/start/routes/artsite.ts +++ b/start/routes/artsite.ts @@ -7,7 +7,7 @@ Route.group(() => { Route.resource('/maintenance', 'MaintenancesController').only(['index', 'update']) - Route.resource('/colors', 'PostColorsController').only(['index', 'update']) + Route.resource('/colors', 'PostColorsController').except(['edit', 'create']) Route.resource('/experiences', 'ExperiencesController').except(['edit', 'create']) From 51aab6d0bd90470876f3fb7421c451ce7fdcb509 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 28 Aug 2021 22:55:10 +0200 Subject: [PATCH 183/244] Fix column --- app/Models/Post.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/Post.ts b/app/Models/Post.ts index 316b8f7..e27c7e1 100755 --- a/app/Models/Post.ts +++ b/app/Models/Post.ts @@ -53,7 +53,7 @@ export default class Post extends BaseModel { @belongsTo(() => PostColor, { foreignKey: 'postColorId' }) - public color: BelongsTo + public postColor: BelongsTo @column() public postColorId: number From 778cda65439a8537d6199178da9ebb3e4f8c5003 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 28 Aug 2021 22:57:51 +0200 Subject: [PATCH 184/244] Fix build error --- app/Controllers/Http/PostsController.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/Controllers/Http/PostsController.ts b/app/Controllers/Http/PostsController.ts index 31aa93c..7ba8078 100755 --- a/app/Controllers/Http/PostsController.ts +++ b/app/Controllers/Http/PostsController.ts @@ -16,7 +16,7 @@ export default class PostsController { tags.preload('label') }) .preload('cover') - .preload('color') + .preload('postColor') .preload('content') .preload('title') .preload('description') @@ -31,7 +31,7 @@ export default class PostsController { const color = await PostColor.findByOrFail('name', data.color) await post.related('cover').associate(cover) - await post.related('color').associate(color) + await post.related('postColor').associate(color) await post.related('description').associate(await getTranslation(data.description)) await post.related('title').associate(await getTranslation(data.title)) @@ -50,7 +50,7 @@ export default class PostsController { await post.load('title') await post.load('description') await post.load('content') - await post.load('color') + await post.load('postColor') await post.load('tags', (tags) => { tags.preload('label') }) @@ -73,7 +73,7 @@ export default class PostsController { await post.load('description') await post.load('title') await post.load('content') - await post.load('color') + await post.load('postColor') return response.status(200).send({ post }) @@ -94,7 +94,7 @@ export default class PostsController { if (cover) await post.related('cover').associate(cover) const color = await PostColor.findBy('name', data.color) - if (color) await post.related('color').associate(color) + if (color) await post.related('postColor').associate(color) return response.status(200).send({ post From b8dc79989a8ddabd9f567da3e090934a70bf878c Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 28 Aug 2021 23:00:53 +0200 Subject: [PATCH 185/244] rename --- app/Controllers/Http/PostsController.ts | 10 +++++----- app/Models/Post.ts | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/Controllers/Http/PostsController.ts b/app/Controllers/Http/PostsController.ts index 7ba8078..31aa93c 100755 --- a/app/Controllers/Http/PostsController.ts +++ b/app/Controllers/Http/PostsController.ts @@ -16,7 +16,7 @@ export default class PostsController { tags.preload('label') }) .preload('cover') - .preload('postColor') + .preload('color') .preload('content') .preload('title') .preload('description') @@ -31,7 +31,7 @@ export default class PostsController { const color = await PostColor.findByOrFail('name', data.color) await post.related('cover').associate(cover) - await post.related('postColor').associate(color) + await post.related('color').associate(color) await post.related('description').associate(await getTranslation(data.description)) await post.related('title').associate(await getTranslation(data.title)) @@ -50,7 +50,7 @@ export default class PostsController { await post.load('title') await post.load('description') await post.load('content') - await post.load('postColor') + await post.load('color') await post.load('tags', (tags) => { tags.preload('label') }) @@ -73,7 +73,7 @@ export default class PostsController { await post.load('description') await post.load('title') await post.load('content') - await post.load('postColor') + await post.load('color') return response.status(200).send({ post }) @@ -94,7 +94,7 @@ export default class PostsController { if (cover) await post.related('cover').associate(cover) const color = await PostColor.findBy('name', data.color) - if (color) await post.related('postColor').associate(color) + if (color) await post.related('color').associate(color) return response.status(200).send({ post diff --git a/app/Models/Post.ts b/app/Models/Post.ts index e27c7e1..32aab6d 100755 --- a/app/Models/Post.ts +++ b/app/Models/Post.ts @@ -53,10 +53,10 @@ export default class Post extends BaseModel { @belongsTo(() => PostColor, { foreignKey: 'postColorId' }) - public postColor: BelongsTo + public color: BelongsTo @column() - public postColorId: number + public colorId: number @column() public readingTime: number From 0489a6fd705367e877d11bfa1d72f395cf36b785 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 28 Aug 2021 23:02:50 +0200 Subject: [PATCH 186/244] Fix error --- app/Models/Post.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Models/Post.ts b/app/Models/Post.ts index 32aab6d..2b21d77 100755 --- a/app/Models/Post.ts +++ b/app/Models/Post.ts @@ -51,7 +51,7 @@ export default class Post extends BaseModel { public contentId: number @belongsTo(() => PostColor, { - foreignKey: 'postColorId' + foreignKey: 'colorId' }) public color: BelongsTo From 8194dfcb6c000c5d4ec29278e6040fdd91d4be4b Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Sat, 28 Aug 2021 23:06:04 +0200 Subject: [PATCH 187/244] Fix migration --- database/migrations/1630183188499_posts.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/database/migrations/1630183188499_posts.ts b/database/migrations/1630183188499_posts.ts index 74dd770..d6d4b31 100644 --- a/database/migrations/1630183188499_posts.ts +++ b/database/migrations/1630183188499_posts.ts @@ -11,7 +11,7 @@ export default class Posts extends BaseSchema { .references('translations.id') .onDelete('CASCADE') table - .integer('post_color_id') + .integer('color_id') .unsigned() .references('post_colors.id') .onDelete('CASCADE') @@ -20,7 +20,7 @@ export default class Posts extends BaseSchema { public async down () { this.schema.table(this.tableName, (table) => { - table.dropColumns('content_id', 'post_color_id') + table.dropColumns('content_id', 'color_id') }) } } From de1056d96576dade33664d2de09d58684db1365a Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Wed, 8 Sep 2021 17:27:27 +0200 Subject: [PATCH 188/244] Add Web authentication --- app/Controllers/Http/AuthController.ts | 29 ++++++++++++++++++++++---- config/session.ts | 2 +- start/routes/auth.ts | 12 +++++++++-- 3 files changed, 36 insertions(+), 7 deletions(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 786415d..ae14eb2 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -3,12 +3,12 @@ import User from "App/Models/User"; export default class AuthController { - public async login ({ request, auth, response }: HttpContextContract) { + public async loginApi ({ request, auth, response }: HttpContextContract) { const email = request.input('email') const password = request.input('password') const infinity = request.input('infinity', false) - const token = await auth.attempt(email, password, { + const token = await auth.use('api').attempt(email, password, { expiresIn: infinity ? '' : '2 days' }) return response.status(200).send({ @@ -16,6 +16,18 @@ export default class AuthController { }) } + public async loginWeb ({ request, auth, response }: HttpContextContract) { + const email = request.input('email') + const password = request.input('password') + const remember = request.input('rembember', false) + + await auth.use('web').attempt(email, password, remember) + + return response.status(200).send({ + user: auth.use('web').user + }) + } + public async createInfiniteToken ({ request, auth, response }: HttpContextContract) { const email = request.input('email') const password = request.input('password') @@ -25,8 +37,17 @@ export default class AuthController { }) } - public async logout ({ auth, response }: HttpContextContract) { - await auth.logout() + public async logoutApi ({ auth, response }: HttpContextContract) { + await auth.use('api').logout() + await auth.use('api').revoke() + return response.status(200).send({ + message: 'You have been disconnected!' + }) + } + + public async logoutWeb ({ auth, response }: HttpContextContract) { + await auth.use('web').logout() + await auth.use('api').revoke() return response.status(200).send({ message: 'You have been disconnected!' }) diff --git a/config/session.ts b/config/session.ts index 5247832..3ebd2d5 100755 --- a/config/session.ts +++ b/config/session.ts @@ -63,7 +63,7 @@ const sessionConfig: SessionConfig = { | Example: `2 days`, `2.5 hrs`, `1y`, `5s` and so on. | */ - age: '2h', + age: '2 days', /* |-------------------------------------------------------------------------- diff --git a/start/routes/auth.ts b/start/routes/auth.ts index f2f9c50..0f02d8e 100644 --- a/start/routes/auth.ts +++ b/start/routes/auth.ts @@ -4,7 +4,15 @@ Route.group(() => { Route.get('/me', 'AuthController.user').middleware('auth') Route.post('/token', 'AuthController.createInfiniteToken') - Route.post('/login', 'AuthController.login') - Route.post('/logout', 'AuthController.logout') + Route.group(() => { + Route.post('/login', 'AuthController.loginApi') + Route.post('/logout', 'AuthController.logoutApi') + }).prefix('/api') + + Route.group(() => { + Route.post('/login', 'AuthController.loginWeb') + Route.post('/logout', 'AuthController.logoutWeb') + }).prefix('/web') + }).prefix('/auth') From 4780d258a0f4fad73ca60aaeeae9c3d44290fc7c Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 10 Sep 2021 12:21:25 +0200 Subject: [PATCH 189/244] update cookies --- config/app.ts | 5 ++--- config/session.ts | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/config/app.ts b/config/app.ts index 8ffbf88..6514a24 100755 --- a/config/app.ts +++ b/config/app.ts @@ -102,12 +102,11 @@ export const http: ServerConfig = { |-------------------------------------------------------------------------- */ cookie: { - domain: '', path: '/', - maxAge: '2h', httpOnly: true, + sameSite: false, + domain: '.arthurdanjou.fr', secure: true, - sameSite: true, }, /* diff --git a/config/session.ts b/config/session.ts index 3ebd2d5..5247832 100755 --- a/config/session.ts +++ b/config/session.ts @@ -63,7 +63,7 @@ const sessionConfig: SessionConfig = { | Example: `2 days`, `2.5 hrs`, `1y`, `5s` and so on. | */ - age: '2 days', + age: '2h', /* |-------------------------------------------------------------------------- From 275694a18e94042821ea9df8bdcc7656519ed1f7 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 10 Sep 2021 15:15:03 +0200 Subject: [PATCH 190/244] update cookies --- config/session.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/session.ts b/config/session.ts index 5247832..fc956ac 100755 --- a/config/session.ts +++ b/config/session.ts @@ -79,7 +79,7 @@ const sessionConfig: SessionConfig = { httpOnly: true, sameSite: false, domain: '.arthurdanjou.fr', - secure: true + secure: Env.get('NODE_ENV') === 'production' }, /* From b4aae27ab797ce07649eed6f9af795e1523240fa Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 10 Sep 2021 15:17:50 +0200 Subject: [PATCH 191/244] update cookies --- config/session.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/session.ts b/config/session.ts index fc956ac..582f274 100755 --- a/config/session.ts +++ b/config/session.ts @@ -77,9 +77,9 @@ const sessionConfig: SessionConfig = { cookie: { path: '/', httpOnly: true, - sameSite: false, + sameSite: true, domain: '.arthurdanjou.fr', - secure: Env.get('NODE_ENV') === 'production' + secure: true }, /* From 9d9a519a735e1384f7f0bbd9814f83adf9cb41c5 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 10 Sep 2021 15:22:16 +0200 Subject: [PATCH 192/244] update cookies --- config/session.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/session.ts b/config/session.ts index 582f274..6aca907 100755 --- a/config/session.ts +++ b/config/session.ts @@ -78,7 +78,7 @@ const sessionConfig: SessionConfig = { path: '/', httpOnly: true, sameSite: true, - domain: '.arthurdanjou.fr', + domain: 'arthurdanjou.fr', secure: true }, From 5cc8e7a64de128aa1d6d8b5616d790546b1cbc83 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 10 Sep 2021 15:29:21 +0200 Subject: [PATCH 193/244] update cookies --- config/session.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/session.ts b/config/session.ts index 6aca907..7c908fd 100755 --- a/config/session.ts +++ b/config/session.ts @@ -77,8 +77,8 @@ const sessionConfig: SessionConfig = { cookie: { path: '/', httpOnly: true, - sameSite: true, - domain: 'arthurdanjou.fr', + sameSite: 'lax', + domain: '.arthurdanjou.fr', secure: true }, From 8477c113aa5cfcaca5940ba3f2fbc8a5a4cdadc8 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 10 Sep 2021 15:30:03 +0200 Subject: [PATCH 194/244] update cookies --- config/session.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/config/session.ts b/config/session.ts index 7c908fd..debfd33 100755 --- a/config/session.ts +++ b/config/session.ts @@ -77,9 +77,7 @@ const sessionConfig: SessionConfig = { cookie: { path: '/', httpOnly: true, - sameSite: 'lax', - domain: '.arthurdanjou.fr', - secure: true + sameSite: false, }, /* From d5eb5e5e75e9c6365b128a54ad905fa40d4462c7 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 10 Sep 2021 16:51:26 +0200 Subject: [PATCH 195/244] update cookies --- config/session.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/session.ts b/config/session.ts index debfd33..438f032 100755 --- a/config/session.ts +++ b/config/session.ts @@ -77,7 +77,7 @@ const sessionConfig: SessionConfig = { cookie: { path: '/', httpOnly: true, - sameSite: false, + sameSite: 'none', }, /* From 5fe14f467c65437a1d3ed7ad4f299b1005d23cf1 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 10 Sep 2021 17:00:41 +0200 Subject: [PATCH 196/244] update cookies --- config/app.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/config/app.ts b/config/app.ts index 6514a24..20d8698 100755 --- a/config/app.ts +++ b/config/app.ts @@ -105,8 +105,6 @@ export const http: ServerConfig = { path: '/', httpOnly: true, sameSite: false, - domain: '.arthurdanjou.fr', - secure: true, }, /* From f3b959ccc7fbf2cfd9b8d35a26099f8c9507fab2 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 10 Sep 2021 17:07:34 +0200 Subject: [PATCH 197/244] update cookies --- config/session.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/session.ts b/config/session.ts index 438f032..debfd33 100755 --- a/config/session.ts +++ b/config/session.ts @@ -77,7 +77,7 @@ const sessionConfig: SessionConfig = { cookie: { path: '/', httpOnly: true, - sameSite: 'none', + sameSite: false, }, /* From 3da0360b7474b3da2c31f0cbfbd3c56c82aa54ba Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 10 Sep 2021 17:10:43 +0200 Subject: [PATCH 198/244] update cookies --- config/app.ts | 2 +- config/session.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/app.ts b/config/app.ts index 20d8698..c5ee40f 100755 --- a/config/app.ts +++ b/config/app.ts @@ -104,7 +104,7 @@ export const http: ServerConfig = { cookie: { path: '/', httpOnly: true, - sameSite: false, + sameSite: 'none', }, /* diff --git a/config/session.ts b/config/session.ts index debfd33..438f032 100755 --- a/config/session.ts +++ b/config/session.ts @@ -77,7 +77,7 @@ const sessionConfig: SessionConfig = { cookie: { path: '/', httpOnly: true, - sameSite: false, + sameSite: 'none', }, /* From fa5329364080c644b51fe5f926c6fdf2a53c75fd Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 10 Sep 2021 17:12:49 +0200 Subject: [PATCH 199/244] update cookies --- config/app.ts | 1 + config/session.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/config/app.ts b/config/app.ts index c5ee40f..96f1948 100755 --- a/config/app.ts +++ b/config/app.ts @@ -105,6 +105,7 @@ export const http: ServerConfig = { path: '/', httpOnly: true, sameSite: 'none', + secure: true }, /* diff --git a/config/session.ts b/config/session.ts index 438f032..99ac4ce 100755 --- a/config/session.ts +++ b/config/session.ts @@ -78,6 +78,7 @@ const sessionConfig: SessionConfig = { path: '/', httpOnly: true, sameSite: 'none', + secure: true }, /* From 51e92d7c02f34a2d916ac557659399572ebe0243 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 14 Sep 2021 18:18:19 +0200 Subject: [PATCH 200/244] Working on auth --- .adonisrc.json | 1 - app/Controllers/Http/AuthController.ts | 29 ++----- app/Validators/AuthValidator.ts | 2 +- config/auth.ts | 4 +- config/redis.ts | 49 ----------- ...tions.ts => 1603020084372_translations.ts} | 0 .../migrations/1631617499307_api_tokens.ts | 25 ++++++ package.json | 1 - start/routes/auth.ts | 2 +- start/routes/home.ts | 2 +- yarn.lock | 82 +------------------ 11 files changed, 40 insertions(+), 157 deletions(-) delete mode 100755 config/redis.ts rename database/migrations/{1628110081266_translations.ts => 1603020084372_translations.ts} (100%) create mode 100644 database/migrations/1631617499307_api_tokens.ts diff --git a/.adonisrc.json b/.adonisrc.json index 6085ebb..ca62597 100755 --- a/.adonisrc.json +++ b/.adonisrc.json @@ -23,7 +23,6 @@ "providers": [ "./providers/AppProvider", "@adonisjs/core", - "@adonisjs/redis", "@adonisjs/session", "@adonisjs/auth", "@adonisjs/lucid", diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index ae14eb2..86a78a6 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -1,15 +1,12 @@ import {HttpContextContract} from '@ioc:Adonis/Core/HttpContext' -import User from "App/Models/User"; +import AuthValidator from "App/Validators/AuthValidator"; export default class AuthController { public async loginApi ({ request, auth, response }: HttpContextContract) { - const email = request.input('email') - const password = request.input('password') - const infinity = request.input('infinity', false) - + const { email, password } = await request.validate(AuthValidator) const token = await auth.use('api').attempt(email, password, { - expiresIn: infinity ? '' : '2 days' + expiresIn: '2 days' }) return response.status(200).send({ token: token.toJSON() @@ -17,10 +14,7 @@ export default class AuthController { } public async loginWeb ({ request, auth, response }: HttpContextContract) { - const email = request.input('email') - const password = request.input('password') - const remember = request.input('rembember', false) - + const { email, password, remember } = await request.validate(AuthValidator) await auth.use('web').attempt(email, password, remember) return response.status(200).send({ @@ -29,16 +23,14 @@ export default class AuthController { } public async createInfiniteToken ({ request, auth, response }: HttpContextContract) { - const email = request.input('email') - const password = request.input('password') - const token = await auth.attempt(email, password) + const { email, password } = await request.validate(AuthValidator) + const token = await auth.use('api').attempt(email, password) return response.status(200).send({ token: token.toJSON() }) } public async logoutApi ({ auth, response }: HttpContextContract) { - await auth.use('api').logout() await auth.use('api').revoke() return response.status(200).send({ message: 'You have been disconnected!' @@ -47,17 +39,14 @@ export default class AuthController { public async logoutWeb ({ auth, response }: HttpContextContract) { await auth.use('web').logout() - await auth.use('api').revoke() return response.status(200).send({ message: 'You have been disconnected!' }) } - public async user ({ auth, response }: HttpContextContract) { - await auth.authenticate() - const user = await User.query() - .where('id', auth.user!.id) - .firstOrFail() + public async user ({ auth, response, logger }: HttpContextContract) { + const user = await auth.use('web').authenticate() || await auth.use('api').authenticate() + logger.info('' + user) return response.status(200).send({ user: user }) diff --git a/app/Validators/AuthValidator.ts b/app/Validators/AuthValidator.ts index 49b0402..d589e4c 100755 --- a/app/Validators/AuthValidator.ts +++ b/app/Validators/AuthValidator.ts @@ -14,7 +14,7 @@ export default class AuthValidator { password: schema.string({ trim: true }, [ rules.required() ]), - remember_me: schema.boolean() + remember: schema.boolean.optional() }) constructor (protected ctx: HttpContextContract) { diff --git a/config/auth.ts b/config/auth.ts index ea1f269..c991efb 100755 --- a/config/auth.ts +++ b/config/auth.ts @@ -114,8 +114,8 @@ const authConfig: AuthConfig = { */ tokenProvider: { type: 'api', - driver: 'redis', - redisConnection: 'local', + driver: 'database', + table: 'api_tokens', foreignKey: 'user_id', }, diff --git a/config/redis.ts b/config/redis.ts deleted file mode 100755 index 62cb325..0000000 --- a/config/redis.ts +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Config source: https://git.io/JemcF - * - * Feel free to let us know via PR, if you find something broken in this config - * file. - */ - -import Env from '@ioc:Adonis/Core/Env' -import { RedisConfig } from '@ioc:Adonis/Addons/Redis' - -/* -|-------------------------------------------------------------------------- -| Redis configuration -|-------------------------------------------------------------------------- -| -| Following is the configuration used by the Redis provider to connect to -| the redis server and execute redis commands. -| -| Do make sure to pre-define the connections type inside `contracts/redis.ts` -| file for AdonisJs to recognize connections. -| -| Make sure to check `contracts/redis.ts` file for defining extra connections -*/ -const redisConfig: RedisConfig = { - connection: Env.get('REDIS_CONNECTION'), - - connections: { - /* - |-------------------------------------------------------------------------- - | The default connection - |-------------------------------------------------------------------------- - | - | The main connection you want to use to execute redis commands. The same - | connection will be used by the session provider, if you rely on the - | redis driver. - | - */ - local: { - host: Env.get('REDIS_HOST'), - port: Env.get('REDIS_PORT'), - password: Env.get('REDIS_PASSWORD', ''), - db: Env.get('REDIS_DB', 0), - keyPrefix: 'athena:', - healthCheck: true - }, - }, -} - -export default redisConfig diff --git a/database/migrations/1628110081266_translations.ts b/database/migrations/1603020084372_translations.ts similarity index 100% rename from database/migrations/1628110081266_translations.ts rename to database/migrations/1603020084372_translations.ts diff --git a/database/migrations/1631617499307_api_tokens.ts b/database/migrations/1631617499307_api_tokens.ts new file mode 100644 index 0000000..19dac4f --- /dev/null +++ b/database/migrations/1631617499307_api_tokens.ts @@ -0,0 +1,25 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class ApiTokens extends BaseSchema { + protected tableName = 'api_tokens' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table + .integer('user_id') + .unsigned() + .references('users.id') + .onDelete('CASCADE') + table.string('name').notNullable() + table.string('type').notNullable() + table.string('token', 64).notNullable() + table.timestamp('expires_at', { useTz: true }).nullable() + table.timestamp('created_at', { useTz: true }).notNullable() + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/package.json b/package.json index e7631ed..aec760d 100755 --- a/package.json +++ b/package.json @@ -24,7 +24,6 @@ "@adonisjs/core": "^5.1.10", "@adonisjs/lucid": "^15.0.1", "@adonisjs/mail": "^7.2.1", - "@adonisjs/redis": "^7.0.6", "@adonisjs/repl": "^3.1.4", "@adonisjs/session": "^6.1.1", "@adonisjs/view": "^6.0.3", diff --git a/start/routes/auth.ts b/start/routes/auth.ts index 0f02d8e..ffe1e32 100644 --- a/start/routes/auth.ts +++ b/start/routes/auth.ts @@ -1,7 +1,7 @@ import Route from "@ioc:Adonis/Core/Route"; Route.group(() => { - Route.get('/me', 'AuthController.user').middleware('auth') + Route.get('/me', 'AuthController.user') Route.post('/token', 'AuthController.createInfiniteToken') Route.group(() => { diff --git a/start/routes/home.ts b/start/routes/home.ts index 9d27307..3d4546d 100644 --- a/start/routes/home.ts +++ b/start/routes/home.ts @@ -26,7 +26,7 @@ Route.get('/source', async ({response}: HttpContextContract) => { Route.get('/health', async ({response}: HttpContextContract) => { const report = await HealthCheck.getReport() const isLive = await HealthCheck.isLive() - const isReady = await HealthCheck.isReady() + const isReady = HealthCheck.isReady() return report.healthy ? response.ok({isLive, isReady, report: report.report}) : response.badRequest({ isLive, isReady, diff --git a/yarn.lock b/yarn.lock index 98d8fc5..881f266 100644 --- a/yarn.lock +++ b/yarn.lock @@ -232,15 +232,6 @@ "@poppinss/utils" "^3.1.4" jest-worker "^27.0.6" -"@adonisjs/redis@^7.0.6": - version "7.0.8" - resolved "https://registry.yarnpkg.com/@adonisjs/redis/-/redis-7.0.8.tgz#25223b61c253131394ab94aaf29ce12a17b338d9" - integrity sha512-5tADsSTAJt3uCxg942/0jjZQkNYkbFNMYfvPczsQ2NX0ixx/CmjHje+RO6o/Uhm7YBcvClMIvJUoFHqa8nnv8w== - dependencies: - "@poppinss/utils" "^3.1.5" - "@types/ioredis" "^4.26.6" - ioredis "^4.27.6" - "@adonisjs/repl@^3.1.4": version "3.1.5" resolved "https://registry.yarnpkg.com/@adonisjs/repl/-/repl-3.1.5.tgz#27eb99f8e5dcc2250435e90b964f12b8d633d8b8" @@ -527,13 +518,6 @@ resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== -"@types/ioredis@^4.26.6": - version "4.26.7" - resolved "https://registry.yarnpkg.com/@types/ioredis/-/ioredis-4.26.7.tgz#8c8174b9db38f71f0e372174c66a031a2ca7d9cf" - integrity sha512-TOGRR+e1to00CihjgPNygD7+G7ruVnMi62YdIvGUBRfj11k/aWq+Fv5Ea8St0Oy56NngTBfA8GvLn1uvHvhX6Q== - dependencies: - "@types/node" "*" - "@types/keyv@*": version "3.1.2" resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.2.tgz#5d97bb65526c20b6e0845f6b0d2ade4f28604ee5" @@ -1184,11 +1168,6 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" -cluster-key-slot@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d" - integrity sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw== - co-compose@^6.1.4: version "6.1.4" resolved "https://registry.yarnpkg.com/co-compose/-/co-compose-6.1.4.tgz#4e607a29fdda0428c599683b4d65f9c8f9d91723" @@ -1473,11 +1452,6 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= -denque@^1.1.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.0.tgz#773de0686ff2d8ec2ff92914316a47b73b1c73de" - integrity sha512-CYiCSgIF1p6EUByQPlGkKnP1M9g0ZV3qMIrqMqZqdwazygIA/YP2vrbcyl1h/WppKJTdl1F85cXIle+394iDAQ== - depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -2301,23 +2275,6 @@ interpret@^2.2.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== -ioredis@^4.27.6: - version "4.27.7" - resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.27.7.tgz#11bf2947e23a0e8055931afa7c2da89fc48c8ff3" - integrity sha512-lqvFFmUyGIHlrNyDvBoakzy1+ioJzNyoP6CP97GWtdTjWq9IOAnv6l0HUTsqhvd/z9etGgtrDHZ4kWCMAwNkug== - dependencies: - cluster-key-slot "^1.1.0" - debug "^4.3.1" - denque "^1.1.0" - lodash.defaults "^4.2.0" - lodash.flatten "^4.4.0" - lodash.isarguments "^3.1.0" - p-map "^2.1.0" - redis-commands "1.7.0" - redis-errors "^1.2.0" - redis-parser "^3.0.0" - standard-as-callback "^2.1.0" - ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -2665,21 +2622,6 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -lodash.defaults@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" - integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= - -lodash.flatten@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" - integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= - -lodash.isarguments@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" - integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= - lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -3582,7 +3524,7 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-map@^2.0.0, p-map@^2.1.0: +p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== @@ -3940,23 +3882,6 @@ redeyed@~2.1.0: dependencies: esprima "~4.0.0" -redis-commands@1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.7.0.tgz#15a6fea2d58281e27b1cd1acfb4b293e278c3a89" - integrity sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ== - -redis-errors@^1.0.0, redis-errors@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" - integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60= - -redis-parser@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" - integrity sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ= - dependencies: - redis-errors "^1.0.0" - reflect-metadata@^0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" @@ -4360,11 +4285,6 @@ stack-trace@0.0.10: resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= -standard-as-callback@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45" - integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== - static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" From ee5c6a8de7dd13c10363d18bc863afae7da853f9 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 14 Sep 2021 21:06:24 +0200 Subject: [PATCH 201/244] Change secure to dev mode --- config/app.ts | 2 +- config/session.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/app.ts b/config/app.ts index 96f1948..224fd57 100755 --- a/config/app.ts +++ b/config/app.ts @@ -105,7 +105,7 @@ export const http: ServerConfig = { path: '/', httpOnly: true, sameSite: 'none', - secure: true + secure: Env.get('NODE_ENV') === 'production' }, /* diff --git a/config/session.ts b/config/session.ts index 99ac4ce..ec8de9d 100755 --- a/config/session.ts +++ b/config/session.ts @@ -78,7 +78,7 @@ const sessionConfig: SessionConfig = { path: '/', httpOnly: true, sameSite: 'none', - secure: true + secure: Env.get('NODE_ENV') === 'production' }, /* From 4f3ec748be6a2ac024225138fb333c6e6dcf3bc7 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 14 Sep 2021 21:14:55 +0200 Subject: [PATCH 202/244] Store token store from db to redis --- .adonisrc.json | 3 +- config/auth.ts | 5 +- config/redis.ts | 49 +++++++++++ .../migrations/1631617499307_api_tokens.ts | 25 ------ package.json | 1 + yarn.lock | 84 ++++++++++++++++++- 6 files changed, 136 insertions(+), 31 deletions(-) create mode 100644 config/redis.ts delete mode 100644 database/migrations/1631617499307_api_tokens.ts diff --git a/.adonisrc.json b/.adonisrc.json index ca62597..a34ea65 100755 --- a/.adonisrc.json +++ b/.adonisrc.json @@ -28,7 +28,8 @@ "@adonisjs/lucid", "@adonisjs/mail", "@adonisjs/view", - "@adonisjs/bouncer" + "@adonisjs/bouncer", + "@adonisjs/redis" ], "aceProviders": [ "@adonisjs/repl" diff --git a/config/auth.ts b/config/auth.ts index c991efb..3a137cb 100755 --- a/config/auth.ts +++ b/config/auth.ts @@ -114,9 +114,8 @@ const authConfig: AuthConfig = { */ tokenProvider: { type: 'api', - driver: 'database', - table: 'api_tokens', - foreignKey: 'user_id', + driver: 'redis', + redisConnection: 'local' }, provider: { diff --git a/config/redis.ts b/config/redis.ts new file mode 100644 index 0000000..62cb325 --- /dev/null +++ b/config/redis.ts @@ -0,0 +1,49 @@ +/** + * Config source: https://git.io/JemcF + * + * Feel free to let us know via PR, if you find something broken in this config + * file. + */ + +import Env from '@ioc:Adonis/Core/Env' +import { RedisConfig } from '@ioc:Adonis/Addons/Redis' + +/* +|-------------------------------------------------------------------------- +| Redis configuration +|-------------------------------------------------------------------------- +| +| Following is the configuration used by the Redis provider to connect to +| the redis server and execute redis commands. +| +| Do make sure to pre-define the connections type inside `contracts/redis.ts` +| file for AdonisJs to recognize connections. +| +| Make sure to check `contracts/redis.ts` file for defining extra connections +*/ +const redisConfig: RedisConfig = { + connection: Env.get('REDIS_CONNECTION'), + + connections: { + /* + |-------------------------------------------------------------------------- + | The default connection + |-------------------------------------------------------------------------- + | + | The main connection you want to use to execute redis commands. The same + | connection will be used by the session provider, if you rely on the + | redis driver. + | + */ + local: { + host: Env.get('REDIS_HOST'), + port: Env.get('REDIS_PORT'), + password: Env.get('REDIS_PASSWORD', ''), + db: Env.get('REDIS_DB', 0), + keyPrefix: 'athena:', + healthCheck: true + }, + }, +} + +export default redisConfig diff --git a/database/migrations/1631617499307_api_tokens.ts b/database/migrations/1631617499307_api_tokens.ts deleted file mode 100644 index 19dac4f..0000000 --- a/database/migrations/1631617499307_api_tokens.ts +++ /dev/null @@ -1,25 +0,0 @@ -import BaseSchema from '@ioc:Adonis/Lucid/Schema' - -export default class ApiTokens extends BaseSchema { - protected tableName = 'api_tokens' - - public async up () { - this.schema.createTable(this.tableName, (table) => { - table.increments('id').primary() - table - .integer('user_id') - .unsigned() - .references('users.id') - .onDelete('CASCADE') - table.string('name').notNullable() - table.string('type').notNullable() - table.string('token', 64).notNullable() - table.timestamp('expires_at', { useTz: true }).nullable() - table.timestamp('created_at', { useTz: true }).notNullable() - }) - } - - public async down () { - this.schema.dropTable(this.tableName) - } -} diff --git a/package.json b/package.json index aec760d..6b3dd62 100755 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "@adonisjs/core": "^5.1.10", "@adonisjs/lucid": "^15.0.1", "@adonisjs/mail": "^7.2.1", + "@adonisjs/redis": "^7.0.9", "@adonisjs/repl": "^3.1.4", "@adonisjs/session": "^6.1.1", "@adonisjs/view": "^6.0.3", diff --git a/yarn.lock b/yarn.lock index 881f266..ce525d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -232,6 +232,15 @@ "@poppinss/utils" "^3.1.4" jest-worker "^27.0.6" +"@adonisjs/redis@^7.0.9": + version "7.0.9" + resolved "https://registry.yarnpkg.com/@adonisjs/redis/-/redis-7.0.9.tgz#a61888747220130cef8462a52d50b3058393ed30" + integrity sha512-d+NDJuC3BG2p5YhH1vMqLXzgWDaaosk2YTklmCyvZIT0LAueXNVCyJrxduAdRA2EH/81Y5MyRhubEBnp/wQl4w== + dependencies: + "@poppinss/utils" "^3.2.0" + "@types/ioredis" "^4.27.1" + ioredis "^4.27.8" + "@adonisjs/repl@^3.1.4": version "3.1.5" resolved "https://registry.yarnpkg.com/@adonisjs/repl/-/repl-3.1.5.tgz#27eb99f8e5dcc2250435e90b964f12b8d633d8b8" @@ -441,7 +450,7 @@ "@poppinss/colors" "^2.1.5" enquirer "^2.3.6" -"@poppinss/utils@^3.1.3", "@poppinss/utils@^3.1.4", "@poppinss/utils@^3.1.5": +"@poppinss/utils@^3.1.3", "@poppinss/utils@^3.1.4", "@poppinss/utils@^3.1.5", "@poppinss/utils@^3.2.0": version "3.2.0" resolved "https://registry.yarnpkg.com/@poppinss/utils/-/utils-3.2.0.tgz#cb07d536565e77b019d868f7d2cfc55600822337" integrity sha512-gnqlrxE4zMvqW+LpviyCWCg4+RShCYCFyBdVTyg9ZZEEgPBV9bEY+YB5r/2klFrKx30k9nfClHVI2n8ZKmXgsw== @@ -518,6 +527,13 @@ resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== +"@types/ioredis@^4.27.1": + version "4.27.2" + resolved "https://registry.yarnpkg.com/@types/ioredis/-/ioredis-4.27.2.tgz#067d0e361d7a01f6231fa6b9c6f08846102ba71e" + integrity sha512-/HXAbeJOR4Ub1O0XVlOFxrRTf2Yeq7BSre3qGoBvTTxN29tSmQPPwIYYxyzm2SkNgvx0Re9ahqCVanOVHqAARg== + dependencies: + "@types/node" "*" + "@types/keyv@*": version "3.1.2" resolved "https://registry.yarnpkg.com/@types/keyv/-/keyv-3.1.2.tgz#5d97bb65526c20b6e0845f6b0d2ade4f28604ee5" @@ -1168,6 +1184,11 @@ clone-response@^1.0.2: dependencies: mimic-response "^1.0.0" +cluster-key-slot@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/cluster-key-slot/-/cluster-key-slot-1.1.0.tgz#30474b2a981fb12172695833052bc0d01336d10d" + integrity sha512-2Nii8p3RwAPiFwsnZvukotvow2rIHM+yQ6ZcBXGHdniadkYGZYiGmkHJIbZPIV9nfv7m/U1IPMVVcAhoWFeklw== + co-compose@^6.1.4: version "6.1.4" resolved "https://registry.yarnpkg.com/co-compose/-/co-compose-6.1.4.tgz#4e607a29fdda0428c599683b4d65f9c8f9d91723" @@ -1452,6 +1473,11 @@ delegates@^1.0.0: resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= +denque@^1.1.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/denque/-/denque-1.5.1.tgz#07f670e29c9a78f8faecb2566a1e2c11929c5cbf" + integrity sha512-XwE+iZ4D6ZUB7mfYRMb5wByE8L74HCn30FBN7sWnXksWc1LO1bPDl67pBR9o/kC4z/xSNAwkMYcGgqDV3BE3Hw== + depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -2275,6 +2301,23 @@ interpret@^2.2.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== +ioredis@^4.27.8: + version "4.27.9" + resolved "https://registry.yarnpkg.com/ioredis/-/ioredis-4.27.9.tgz#c27bbade9724f0b8f84c279fb1d567be785ba33d" + integrity sha512-hAwrx9F+OQ0uIvaJefuS3UTqW+ByOLyLIV+j0EH8ClNVxvFyH9Vmb08hCL4yje6mDYT5zMquShhypkd50RRzkg== + dependencies: + cluster-key-slot "^1.1.0" + debug "^4.3.1" + denque "^1.1.0" + lodash.defaults "^4.2.0" + lodash.flatten "^4.4.0" + lodash.isarguments "^3.1.0" + p-map "^2.1.0" + redis-commands "1.7.0" + redis-errors "^1.2.0" + redis-parser "^3.0.0" + standard-as-callback "^2.1.0" + ipaddr.js@1.9.1: version "1.9.1" resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" @@ -2622,6 +2665,21 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +lodash.defaults@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.defaults/-/lodash.defaults-4.2.0.tgz#d09178716ffea4dde9e5fb7b37f6f0802274580c" + integrity sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw= + +lodash.flatten@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" + integrity sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8= + +lodash.isarguments@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= + lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -3524,7 +3582,7 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-map@^2.0.0: +p-map@^2.0.0, p-map@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" integrity sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw== @@ -3882,6 +3940,23 @@ redeyed@~2.1.0: dependencies: esprima "~4.0.0" +redis-commands@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/redis-commands/-/redis-commands-1.7.0.tgz#15a6fea2d58281e27b1cd1acfb4b293e278c3a89" + integrity sha512-nJWqw3bTFy21hX/CPKHth6sfhZbdiHP6bTawSgQBlKOVRG7EZkfHbbHwQJnrE4vsQf0CMNE+3gJ4Fmm16vdVlQ== + +redis-errors@^1.0.0, redis-errors@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/redis-errors/-/redis-errors-1.2.0.tgz#eb62d2adb15e4eaf4610c04afe1529384250abad" + integrity sha1-62LSrbFeTq9GEMBK/hUpOEJQq60= + +redis-parser@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redis-parser/-/redis-parser-3.0.0.tgz#b66d828cdcafe6b4b8a428a7def4c6bcac31c8b4" + integrity sha1-tm2CjNyv5rS4pCin3vTGvKwxyLQ= + dependencies: + redis-errors "^1.0.0" + reflect-metadata@^0.1.13: version "0.1.13" resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.13.tgz#67ae3ca57c972a2aa1642b10fe363fe32d49dc08" @@ -4285,6 +4360,11 @@ stack-trace@0.0.10: resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= +standard-as-callback@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/standard-as-callback/-/standard-as-callback-2.1.0.tgz#8953fc05359868a77b5b9739a665c5977bb7df45" + integrity sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A== + static-extend@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" From 35756bbc8679caa42fd10ef43527b64fb860df91 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 8 Oct 2021 14:58:13 +0200 Subject: [PATCH 203/244] Order Translations by id --- app/Controllers/Http/TranslationsController.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Controllers/Http/TranslationsController.ts b/app/Controllers/Http/TranslationsController.ts index 33abbd0..c4cf913 100644 --- a/app/Controllers/Http/TranslationsController.ts +++ b/app/Controllers/Http/TranslationsController.ts @@ -7,7 +7,7 @@ export default class TranslationsController { public async index ({ response }: HttpContextContract) { return response.status(200).send({ - translations: await Translation.all() + translations: await Translation.query().orderBy('id', 'asc') }) } From 5b79f6dd1e8687d01fb81d6db3d48dd5756e4a36 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 8 Oct 2021 14:58:24 +0200 Subject: [PATCH 204/244] Change cookie session --- config/session.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/session.ts b/config/session.ts index ec8de9d..c0966e6 100755 --- a/config/session.ts +++ b/config/session.ts @@ -77,7 +77,7 @@ const sessionConfig: SessionConfig = { cookie: { path: '/', httpOnly: true, - sameSite: 'none', + sameSite: Env.get('NODE_ENV') === 'production' ? 'none' : false, secure: Env.get('NODE_ENV') === 'production' }, From 340f418eb3ece402f390cbb80ce0aae765547ee8 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 8 Oct 2021 14:58:47 +0200 Subject: [PATCH 205/244] Add double check in middleware --- app/Middleware/SilentAuth.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/Middleware/SilentAuth.ts b/app/Middleware/SilentAuth.ts index a30e106..14f822e 100755 --- a/app/Middleware/SilentAuth.ts +++ b/app/Middleware/SilentAuth.ts @@ -15,7 +15,8 @@ export default class SilentAuthMiddleware { * Check if user is logged-in or not. If yes, then `ctx.auth.user` will be * set to the instance of the currently logged in user. */ - await auth.check() + await auth.use('api').check() + await auth.use('web').check() await next() } } From 35169d5f50ed32585a62805a1a24129e607e15f5 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 8 Oct 2021 14:59:37 +0200 Subject: [PATCH 206/244] Remove logger --- app/Controllers/Http/AuthController.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/Controllers/Http/AuthController.ts b/app/Controllers/Http/AuthController.ts index 86a78a6..ad32724 100755 --- a/app/Controllers/Http/AuthController.ts +++ b/app/Controllers/Http/AuthController.ts @@ -44,11 +44,10 @@ export default class AuthController { }) } - public async user ({ auth, response, logger }: HttpContextContract) { + public async user ({ auth, response }: HttpContextContract) { const user = await auth.use('web').authenticate() || await auth.use('api').authenticate() - logger.info('' + user) return response.status(200).send({ - user: user + user }) } } From c2dee1d06437b21650da8c4cc03b205bba8c070b Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 8 Oct 2021 15:01:10 +0200 Subject: [PATCH 207/244] Remove Discord Activity --- app/Utils/GetDiscordActivity.ts | 6 ------ 1 file changed, 6 deletions(-) delete mode 100755 app/Utils/GetDiscordActivity.ts diff --git a/app/Utils/GetDiscordActivity.ts b/app/Utils/GetDiscordActivity.ts deleted file mode 100755 index 7b543ac..0000000 --- a/app/Utils/GetDiscordActivity.ts +++ /dev/null @@ -1,6 +0,0 @@ -import axios, {AxiosResponse} from "axios"; -import Env from "@ioc:Adonis/Core/Env"; - -export async function getDiscordActivity(): Promise { - return await axios.get(`https://api.lanyard.rest/v1/users/${Env.get('DISCORD_ID')}`) -} From 017f520fcc2af00b327c115d734ce7b53b58afd9 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 8 Oct 2021 15:01:24 +0200 Subject: [PATCH 208/244] Add middleware to protect a route --- start/routes/auth.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start/routes/auth.ts b/start/routes/auth.ts index ffe1e32..f7dd813 100644 --- a/start/routes/auth.ts +++ b/start/routes/auth.ts @@ -1,7 +1,7 @@ import Route from "@ioc:Adonis/Core/Route"; Route.group(() => { - Route.get('/me', 'AuthController.user') + Route.get('/me', 'AuthController.user').middleware('auth:web,api') Route.post('/token', 'AuthController.createInfiniteToken') Route.group(() => { From f453d5ca5fda96b79bfeeb81d0ab8993cc9bf3f5 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 8 Oct 2021 15:01:34 +0200 Subject: [PATCH 209/244] Add check middleware --- start/routes/artsite.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/start/routes/artsite.ts b/start/routes/artsite.ts index 9d0c86e..44e9b42 100644 --- a/start/routes/artsite.ts +++ b/start/routes/artsite.ts @@ -29,4 +29,4 @@ Route.group(() => { }).prefix('/posts') Route.resource('/subscribers', 'SubscribersController').only(['index', 'store', 'destroy']) -}).middleware('auth') +}).middleware('auth:web,api') From 7c04323e50b9ea6a08fd4ded968e3d4f63b0ed71 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 8 Oct 2021 15:01:50 +0200 Subject: [PATCH 210/244] Add States --- app/Controllers/Http/StatesController.ts | 42 +++++++++++++++++++ .../states/StateDevelopingValidator.ts | 15 +++++++ .../states/StateSleepingValidator.ts | 15 +++++++ 3 files changed, 72 insertions(+) create mode 100644 app/Controllers/Http/StatesController.ts create mode 100644 app/Validators/states/StateDevelopingValidator.ts create mode 100644 app/Validators/states/StateSleepingValidator.ts diff --git a/app/Controllers/Http/StatesController.ts b/app/Controllers/Http/StatesController.ts new file mode 100644 index 0000000..2913a07 --- /dev/null +++ b/app/Controllers/Http/StatesController.ts @@ -0,0 +1,42 @@ +import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; +import Redis from "@ioc:Adonis/Addons/Redis"; +import StateSleepingValidator from "App/Validators/states/StateSleepingValidator"; +import StateDevelopingValidator from "App/Validators/states/StateDevelopingValidator"; + +export default class StatesController { + + // Listening Music + + public async index ({ response }: HttpContextContract) { + const sleeping = this.formatValue(Boolean(await Redis.get('states:sleeping')) || false) + const developing = this.formatValue(Boolean(await Redis.get('states:developing')) || false) + return response.status(200).send({ + sleeping, + developing, + listening_music: "Soon" + }) + } + + public async setSleeping ({ request, response }: HttpContextContract) { + const { value } = await request.validate(StateSleepingValidator) + await Redis.set('states:sleeping', String(value)) + return response.status(200).send({ + message: 'State was successfully set!', + value: this.formatValue(value) + }) + } + + public async setDeveloping ({ request, response }: HttpContextContract) { + const { value } = await request.validate(StateDevelopingValidator) + await Redis.set('states:developing', String(value)) + return response.status(200).send({ + message: 'State was successfully set!', + value: this.formatValue(value) + }) + } + + public formatValue (value: boolean): string { + return value ? 'Yes' : 'No' + } + +} diff --git a/app/Validators/states/StateDevelopingValidator.ts b/app/Validators/states/StateDevelopingValidator.ts new file mode 100644 index 0000000..c8d5519 --- /dev/null +++ b/app/Validators/states/StateDevelopingValidator.ts @@ -0,0 +1,15 @@ +import { schema } from '@ioc:Adonis/Core/Validator' +import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' + +export default class StateDevelopingValidator { + constructor (protected ctx: HttpContextContract) { + } + + public schema = schema.create({ + value: schema.boolean() + }) + + public messages = { + required: 'The field {{field}} is required', + } +} diff --git a/app/Validators/states/StateSleepingValidator.ts b/app/Validators/states/StateSleepingValidator.ts new file mode 100644 index 0000000..94c5272 --- /dev/null +++ b/app/Validators/states/StateSleepingValidator.ts @@ -0,0 +1,15 @@ +import { schema } from '@ioc:Adonis/Core/Validator' +import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' + +export default class StateSleepingValidator { + constructor (protected ctx: HttpContextContract) { + } + + public schema = schema.create({ + value: schema.boolean() + }) + + public messages = { + required: 'The field {{field}} is required', + } +} From 5074e37807e60974ce63c37dfdccbacd40d3d515 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 8 Oct 2021 15:02:02 +0200 Subject: [PATCH 211/244] Remove Discord Activity route --- app/Controllers/Http/ProfileController.ts | 9 --------- 1 file changed, 9 deletions(-) diff --git a/app/Controllers/Http/ProfileController.ts b/app/Controllers/Http/ProfileController.ts index 478c351..61c2fce 100755 --- a/app/Controllers/Http/ProfileController.ts +++ b/app/Controllers/Http/ProfileController.ts @@ -1,5 +1,4 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; -import {getDiscordActivity} from "App/Utils/GetDiscordActivity"; export default class ProfileController { @@ -46,12 +45,4 @@ export default class ProfileController { }, }) } - - //todo get discord Activity - public async discord ({ response }: HttpContextContract) { - const activity = await getDiscordActivity() - return response.status(200).send({ - status: activity - }) - } } From c8a09d9ab65dc682bb0843251af214fa1081479c Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 8 Oct 2021 15:02:22 +0200 Subject: [PATCH 212/244] Remove Discord Activity route --- app/Controllers/Http/StatsController.ts | 59 ++++++++++++++++++++++++- start/routes/api.ts | 14 +++++- start/routes/home.ts | 3 +- 3 files changed, 72 insertions(+), 4 deletions(-) diff --git a/app/Controllers/Http/StatsController.ts b/app/Controllers/Http/StatsController.ts index c1d426b..4926eb1 100644 --- a/app/Controllers/Http/StatsController.ts +++ b/app/Controllers/Http/StatsController.ts @@ -1,10 +1,67 @@ import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' +import { + fetchDailyStatistics, + fetchMonthlyStatistics, + fetchStatistics, + fetchWeeklyStatistics +} from "App/Tasks/DevelopmentHoursTask"; +import CommandsRun from "App/Models/CommandsRun"; +import {DateTime} from "luxon"; +import BuildsRun from "App/Models/BuildsRun"; export default class StatsController { public async index ({ response }: HttpContextContract) { + const daily = await fetchDailyStatistics() + const weekly = await fetchWeeklyStatistics() + const monthly = await fetchMonthlyStatistics() + const total = await fetchStatistics() + return response.status(200).send({ - message: 'Stats is under maintenance! Come back later.' + daily, + weekly, + monthly, + total + }) + } + + public async incrementCommandCount({ response }: HttpContextContract) { + const current_date = DateTime.fromJSDate(new Date(new Date().setUTCMinutes(0, 0, 0))) + const current_commands = await CommandsRun.firstOrCreate( + { + date: current_date + }, + { + date: current_date, + commands: 0 + } + ) + + current_commands.commands++ + await current_commands.save() + + return response.status(200).send({ + message: 'Commands Count successfully incremented !' + }) + } + + public async incrementBuildCount({ response }: HttpContextContract) { + const current_date = DateTime.fromJSDate(new Date(new Date().setUTCMinutes(0, 0, 0))) + const current_builds = await BuildsRun.firstOrCreate( + { + date: current_date + }, + { + date: current_date, + builds: 0 + } + ) + + current_builds.builds++ + await current_builds.save() + + return response.status(200).send({ + message: 'Builds Count successfully incremented !' }) } diff --git a/start/routes/api.ts b/start/routes/api.ts index 0aec16d..37eaf58 100644 --- a/start/routes/api.ts +++ b/start/routes/api.ts @@ -1,9 +1,9 @@ import Route from "@ioc:Adonis/Core/Route"; import Application from "@ioc:Adonis/Core/Application"; -Route.get('/discord', 'ProfileController.discord') Route.get('/me', 'ProfileController.me') Route.get('/stats', 'StatsController.index') +Route.get('/states', 'StatesController.index') Route.resource('/locations', 'LocationsController').only(['index', 'store']) Route.group(() => { @@ -13,7 +13,17 @@ Route.group(() => { Route.resource('/files', 'FilesController').only(['index', 'store', 'destroy']) -}).middleware('auth') + Route.group(() => { + Route.post('/sleeping', 'StatesController.setSleeping') + Route.post('/developing', 'StatesController.setDeveloping') + }).prefix('states') + + Route.group(() => { + Route.post('/commands', 'StatsController.incrementCommandCount') + Route.post('/docker', 'StatsController.incrementBuildCount') + }).prefix('stats') + +}).middleware('auth:web,api') Route.get('/files/:filename', async ({response, params}) => { response.download(Application.makePath('storage', params.filename)) diff --git a/start/routes/home.ts b/start/routes/home.ts index 3d4546d..0efea04 100644 --- a/start/routes/home.ts +++ b/start/routes/home.ts @@ -10,10 +10,11 @@ Route.get('/', async ({response}: HttpContextContract) => { domain: BASE_URL, version: Env.get('API_VERSION'), source: `${BASE_URL}/source`, - healthCheck: `${BASE_URL}/health`, + health: `${BASE_URL}/health`, routes: { profile: `${BASE_URL}/me`, stats: `${BASE_URL}/stats`, + states: `${BASE_URL}/states`, locations: `${BASE_URL}/locations` } }) From 92f64a80a85ecd19ddc6a596513f7453d63e643c Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 8 Oct 2021 15:02:30 +0200 Subject: [PATCH 213/244] Add stats migrations --- .../migrations/1633697377760_commands_runs.ts | 17 +++++++++++++++++ .../migrations/1633697382674_builds_runs.ts | 17 +++++++++++++++++ .../1633697389017_development_hours.ts | 17 +++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 database/migrations/1633697377760_commands_runs.ts create mode 100644 database/migrations/1633697382674_builds_runs.ts create mode 100644 database/migrations/1633697389017_development_hours.ts diff --git a/database/migrations/1633697377760_commands_runs.ts b/database/migrations/1633697377760_commands_runs.ts new file mode 100644 index 0000000..9692753 --- /dev/null +++ b/database/migrations/1633697377760_commands_runs.ts @@ -0,0 +1,17 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class CommandsRuns extends BaseSchema { + protected tableName = 'commands_runs' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table.bigInteger('commands') + table.date('date') + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/database/migrations/1633697382674_builds_runs.ts b/database/migrations/1633697382674_builds_runs.ts new file mode 100644 index 0000000..7048728 --- /dev/null +++ b/database/migrations/1633697382674_builds_runs.ts @@ -0,0 +1,17 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class BuildsRuns extends BaseSchema { + protected tableName = 'builds_runs' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table.bigInteger('builds') + table.timestamp('date') + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/database/migrations/1633697389017_development_hours.ts b/database/migrations/1633697389017_development_hours.ts new file mode 100644 index 0000000..9b8d7cf --- /dev/null +++ b/database/migrations/1633697389017_development_hours.ts @@ -0,0 +1,17 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class DevelopmentHours extends BaseSchema { + protected tableName = 'development_hours' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table.double('seconds') + table.date('date') + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} From 306debc6d1bae2f4801c3e0ae7967488c90db089 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 8 Oct 2021 15:02:40 +0200 Subject: [PATCH 214/244] Add Stats models --- app/Models/BuildsRun.ts | 13 +++++++++++++ app/Models/CommandsRun.ts | 13 +++++++++++++ app/Models/DevelopmentHour.ts | 13 +++++++++++++ 3 files changed, 39 insertions(+) create mode 100644 app/Models/BuildsRun.ts create mode 100644 app/Models/CommandsRun.ts create mode 100644 app/Models/DevelopmentHour.ts diff --git a/app/Models/BuildsRun.ts b/app/Models/BuildsRun.ts new file mode 100644 index 0000000..076ae26 --- /dev/null +++ b/app/Models/BuildsRun.ts @@ -0,0 +1,13 @@ +import { DateTime } from 'luxon' +import { BaseModel, column } from '@ioc:Adonis/Lucid/Orm' + +export default class BuildsRun extends BaseModel { + @column({ isPrimary: true }) + public id: number + + @column() + public builds: number + + @column.date({ autoCreate: true }) + public date: DateTime +} diff --git a/app/Models/CommandsRun.ts b/app/Models/CommandsRun.ts new file mode 100644 index 0000000..3241255 --- /dev/null +++ b/app/Models/CommandsRun.ts @@ -0,0 +1,13 @@ +import { DateTime } from 'luxon' +import { BaseModel, column } from '@ioc:Adonis/Lucid/Orm' + +export default class CommandsRun extends BaseModel { + @column({ isPrimary: true }) + public id: number + + @column() + public commands: number + + @column.date({ autoCreate: true }) + public date: DateTime +} diff --git a/app/Models/DevelopmentHour.ts b/app/Models/DevelopmentHour.ts new file mode 100644 index 0000000..986f839 --- /dev/null +++ b/app/Models/DevelopmentHour.ts @@ -0,0 +1,13 @@ +import { DateTime } from 'luxon' +import { BaseModel, column } from '@ioc:Adonis/Lucid/Orm' + +export default class DevelopmentHour extends BaseModel { + @column({ isPrimary: true }) + public id: number + + @column() + public seconds: number + + @column.date({ autoCreate: true }) + public date: DateTime +} From af39f161ee40a3ba59f5d1d7e838e3481d5301fb Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 8 Oct 2021 15:03:56 +0200 Subject: [PATCH 215/244] Add Utils class to simplify the life --- app/Controllers/Http/StatsController.ts | 8 +- app/Utils/StatsUtils.ts | 143 ++++++++++++++++++++++++ 2 files changed, 147 insertions(+), 4 deletions(-) create mode 100644 app/Utils/StatsUtils.ts diff --git a/app/Controllers/Http/StatsController.ts b/app/Controllers/Http/StatsController.ts index 4926eb1..c4fafc1 100644 --- a/app/Controllers/Http/StatsController.ts +++ b/app/Controllers/Http/StatsController.ts @@ -1,13 +1,13 @@ import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' +import CommandsRun from "App/Models/CommandsRun"; +import {DateTime} from "luxon"; +import BuildsRun from "App/Models/BuildsRun"; import { fetchDailyStatistics, fetchMonthlyStatistics, fetchStatistics, fetchWeeklyStatistics -} from "App/Tasks/DevelopmentHoursTask"; -import CommandsRun from "App/Models/CommandsRun"; -import {DateTime} from "luxon"; -import BuildsRun from "App/Models/BuildsRun"; +} from "App/Utils/StatsUtils"; export default class StatsController { diff --git a/app/Utils/StatsUtils.ts b/app/Utils/StatsUtils.ts new file mode 100644 index 0000000..8c31242 --- /dev/null +++ b/app/Utils/StatsUtils.ts @@ -0,0 +1,143 @@ +import DevelopmentHour from "App/Models/DevelopmentHour"; +import CommandsRun from "App/Models/CommandsRun"; +import BuildsRun from "App/Models/BuildsRun"; + +interface Stats { + start: Date; + end: Date; + + development_seconds: number; + commands_ran: number; + builds_ran: number; +} + +export async function getDevelopmentHours(start: Date, end: Date): Promise { + const development_seconds = await DevelopmentHour + .query() + .where('date', '>=', start) + .where('date', '<=', end) + .orderBy('date', 'desc') + + if (!development_seconds || development_seconds.length <= 0) { + return 0 + } + + const reduced = development_seconds.reduce((a: DevelopmentHour, b: DevelopmentHour) => { + return { + ...a, + seconds: a.seconds + b.seconds + } + }) + + return Number(reduced.seconds) +} + +export async function getCommandsRan(start: Date, end: Date): Promise { + const commands_run = await CommandsRun + .query() + .where('date', '>=', start) + .where('date', '<=', end) + .orderBy('date', 'desc') + + if (!commands_run || commands_run.length <= 0) { + return 0 + } + + const reduced = commands_run.reduce((a: CommandsRun, b: CommandsRun) => { + return { + ...a, + commands: a.commands + b.commands + } + }) + + return Number(reduced.commands) +} + +export async function getBuildsRan(start: Date, end: Date): Promise { + const builds_run = await BuildsRun + .query() + .where('date', '>=', start) + .where('date', '<=', end) + .orderBy('date', 'desc') + + if (!builds_run || builds_run.length <= 0) { + return 0 + } + + const reduced = builds_run.reduce((a: BuildsRun, b: BuildsRun) => { + return { + ...a, + builds: a.builds + b.builds + } + }) + + return Number(reduced.builds) +} + +export async function fetchStatistics(): Promise { + const start = new Date("01-01-2000"); + const end = new Date(); + + const development_seconds = await getDevelopmentHours(start, end) + const commands_ran = await getCommandsRan(start, end) + const builds_ran = await getBuildsRan(start, end) + + return { + start, + end, + development_seconds, + commands_ran, + builds_ran + } +} + +export async function fetchMonthlyStatistics(): Promise { + const start = new Date(new Date().setMonth(new Date().getMonth() - 1)); + const end = new Date(); + + const development_seconds = await getDevelopmentHours(start, end) + const commands_ran = await getCommandsRan(start, end) + const builds_ran = await getBuildsRan(start, end) + + return { + start, + end, + development_seconds, + commands_ran, + builds_ran + } +} + +export async function fetchWeeklyStatistics(): Promise { + const start = new Date(new Date().getTime() - 7 * 24 * 60 * 60 * 1000); + const end = new Date(); + + const development_seconds = await getDevelopmentHours(start, end) + const commands_ran = await getCommandsRan(start, end) + const builds_ran = await getBuildsRan(start, end) + + return { + start, + end, + development_seconds, + commands_ran, + builds_ran + } +} + +export async function fetchDailyStatistics(): Promise { + const start = new Date(); + const end = new Date(); + + const development_seconds = await getDevelopmentHours(start, end) + const commands_ran = await getCommandsRan(start, end) + const builds_ran = await getBuildsRan(start, end) + + return { + start, + end, + development_seconds, + commands_ran, + builds_ran + } +} From cfbd359b1efb326446d7c466271fbcb71568f7f3 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 8 Oct 2021 15:06:49 +0200 Subject: [PATCH 216/244] Rename Utils Class --- app/Controllers/Http/AnnouncesController.ts | 2 +- app/Controllers/Http/ExperiencesController.ts | 2 +- app/Controllers/Http/FormationsController.ts | 2 +- app/Controllers/Http/InformationsController.ts | 2 +- app/Controllers/Http/MaintenancesController.ts | 2 +- app/Controllers/Http/PostsController.ts | 2 +- app/Controllers/Http/ProjectsController.ts | 2 +- app/Controllers/Http/TagsController.ts | 2 +- app/Utils/{getTranslation.ts => TranslationsUtils.ts} | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) rename app/Utils/{getTranslation.ts => TranslationsUtils.ts} (56%) diff --git a/app/Controllers/Http/AnnouncesController.ts b/app/Controllers/Http/AnnouncesController.ts index 0446999..ba475a0 100644 --- a/app/Controllers/Http/AnnouncesController.ts +++ b/app/Controllers/Http/AnnouncesController.ts @@ -1,8 +1,8 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import Announce from "App/Models/Announce"; import AnnounceUpdateValidator from "App/Validators/announce/AnnounceUpdateValidator"; -import getTranslation from "App/Utils/getTranslation"; import File from "App/Models/File"; +import {getTranslation} from "App/Utils/TranslationsUtils"; export default class AnnouncesController { diff --git a/app/Controllers/Http/ExperiencesController.ts b/app/Controllers/Http/ExperiencesController.ts index 00c4617..7706f04 100644 --- a/app/Controllers/Http/ExperiencesController.ts +++ b/app/Controllers/Http/ExperiencesController.ts @@ -1,8 +1,8 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import Experience from "App/Models/Experience"; import ExperienceStoreValidator from "App/Validators/experience/ExperienceStoreValidator"; -import getTranslation from "App/Utils/getTranslation"; import ExperienceUpdateValidator from "App/Validators/experience/ExperienceUpdateValidator"; +import {getTranslation} from "App/Utils/TranslationsUtils"; export default class ExperiencesController { diff --git a/app/Controllers/Http/FormationsController.ts b/app/Controllers/Http/FormationsController.ts index 9b35616..c94b693 100644 --- a/app/Controllers/Http/FormationsController.ts +++ b/app/Controllers/Http/FormationsController.ts @@ -1,8 +1,8 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; -import getTranslation from "App/Utils/getTranslation"; import FormationStoreValidator from "App/Validators/formation/FormationStoreValidator"; import FormationUpdateValidator from "App/Validators/formation/FormationUpdateValidator"; import Formation from "App/Models/Formation"; +import {getTranslation} from "App/Utils/TranslationsUtils"; export default class FormationsController { diff --git a/app/Controllers/Http/InformationsController.ts b/app/Controllers/Http/InformationsController.ts index 33c82bf..3cbdbfb 100644 --- a/app/Controllers/Http/InformationsController.ts +++ b/app/Controllers/Http/InformationsController.ts @@ -1,7 +1,7 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import Information from "App/Models/Information"; import InformationUpdateValidator from "App/Validators/information/InformationUpdateValidator"; -import getTranslation from "App/Utils/getTranslation"; +import {getTranslation} from "App/Utils/TranslationsUtils"; export default class InformationsController { diff --git a/app/Controllers/Http/MaintenancesController.ts b/app/Controllers/Http/MaintenancesController.ts index 4d907de..e3e1e26 100644 --- a/app/Controllers/Http/MaintenancesController.ts +++ b/app/Controllers/Http/MaintenancesController.ts @@ -1,7 +1,7 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; -import getTranslation from "App/Utils/getTranslation"; import Maintenance from "App/Models/Maintenance"; import MaintenanceUpdateValidator from "App/Validators/maintenance/MaintenanceUpdateValidator"; +import {getTranslation} from "App/Utils/TranslationsUtils"; export default class MaintenancesController { diff --git a/app/Controllers/Http/PostsController.ts b/app/Controllers/Http/PostsController.ts index 31aa93c..348378b 100755 --- a/app/Controllers/Http/PostsController.ts +++ b/app/Controllers/Http/PostsController.ts @@ -1,10 +1,10 @@ import Post from "App/Models/Post"; import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import PostUpdateValidator from "App/Validators/post/PostUpdateValidator"; -import getTranslation from "App/Utils/getTranslation"; import File from "App/Models/File"; import PostStoreValidator from "App/Validators/post/PostStoreValidator"; import PostColor from "App/Models/PostColor"; +import {getTranslation} from "App/Utils/TranslationsUtils"; export default class PostsController { diff --git a/app/Controllers/Http/ProjectsController.ts b/app/Controllers/Http/ProjectsController.ts index 88c4a5b..62db091 100755 --- a/app/Controllers/Http/ProjectsController.ts +++ b/app/Controllers/Http/ProjectsController.ts @@ -3,7 +3,7 @@ import Project from "App/Models/Project"; import ProjectStoreValidator from "App/Validators/project/ProjectStoreValidator"; import ProjectUpdateValidator from "App/Validators/project/ProjectUpdateValidator"; import File from "App/Models/File"; -import getTranslation from "App/Utils/getTranslation"; +import {getTranslation} from "App/Utils/TranslationsUtils"; export default class ProjectsController { diff --git a/app/Controllers/Http/TagsController.ts b/app/Controllers/Http/TagsController.ts index c8ba20b..a5f0a47 100644 --- a/app/Controllers/Http/TagsController.ts +++ b/app/Controllers/Http/TagsController.ts @@ -1,8 +1,8 @@ import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; -import getTranslation from "App/Utils/getTranslation"; import TagStoreValidator from "App/Validators/tag/TagStoreValidator"; import TagUpdateValidator from "App/Validators/tag/TagUpdateValidator"; import Tag from "App/Models/Tag"; +import {getTranslation} from "App/Utils/TranslationsUtils"; export default class TagsController { diff --git a/app/Utils/getTranslation.ts b/app/Utils/TranslationsUtils.ts similarity index 56% rename from app/Utils/getTranslation.ts rename to app/Utils/TranslationsUtils.ts index fe127d9..df08e78 100644 --- a/app/Utils/getTranslation.ts +++ b/app/Utils/TranslationsUtils.ts @@ -1,5 +1,5 @@ import Translation from "App/Models/Translation"; -export default async function getTranslation(code: string): Promise { +export async function getTranslation(code: string): Promise { return await Translation.firstOrNew({code}, {code}) } From bd0b523598bf07712736da6c57fc6d4df96c38d2 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 8 Oct 2021 15:08:58 +0200 Subject: [PATCH 217/244] Add info message on app boot --- providers/AppProvider.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/providers/AppProvider.ts b/providers/AppProvider.ts index 40d2ee0..34a01f7 100755 --- a/providers/AppProvider.ts +++ b/providers/AppProvider.ts @@ -1,4 +1,5 @@ import { ApplicationContract } from '@ioc:Adonis/Core/Application' +import Logger from "@ioc:Adonis/Core/Logger"; export default class AppProvider { public static needsApplication = true @@ -12,13 +13,16 @@ export default class AppProvider { public async boot () { // IoC container is ready + Logger.info('Application is booting. Please wait...') } public async ready () { // App is ready + Logger.info('Application is ready!') } public async shutdown () { // Cleanup, since app is going down + Logger.info('Application is closing. Bye...') } } From 2c5003b2c7d87329dbc4e05adc9b141e174d3d13 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 8 Oct 2021 15:11:32 +0200 Subject: [PATCH 218/244] Simplify code with Lucid --- app/Utils/StatsUtils.ts | 36 +++++++++--------------------------- 1 file changed, 9 insertions(+), 27 deletions(-) diff --git a/app/Utils/StatsUtils.ts b/app/Utils/StatsUtils.ts index 8c31242..9d7a2e2 100644 --- a/app/Utils/StatsUtils.ts +++ b/app/Utils/StatsUtils.ts @@ -17,19 +17,13 @@ export async function getDevelopmentHours(start: Date, end: Date): Promise=', start) .where('date', '<=', end) .orderBy('date', 'desc') + .first() - if (!development_seconds || development_seconds.length <= 0) { + if (!development_seconds) { return 0 } - const reduced = development_seconds.reduce((a: DevelopmentHour, b: DevelopmentHour) => { - return { - ...a, - seconds: a.seconds + b.seconds - } - }) - - return Number(reduced.seconds) + return development_seconds.seconds } export async function getCommandsRan(start: Date, end: Date): Promise { @@ -38,19 +32,13 @@ export async function getCommandsRan(start: Date, end: Date): Promise { .where('date', '>=', start) .where('date', '<=', end) .orderBy('date', 'desc') + .first() - if (!commands_run || commands_run.length <= 0) { + if (!commands_run) { return 0 } - const reduced = commands_run.reduce((a: CommandsRun, b: CommandsRun) => { - return { - ...a, - commands: a.commands + b.commands - } - }) - - return Number(reduced.commands) + return commands_run.commands } export async function getBuildsRan(start: Date, end: Date): Promise { @@ -59,19 +47,13 @@ export async function getBuildsRan(start: Date, end: Date): Promise { .where('date', '>=', start) .where('date', '<=', end) .orderBy('date', 'desc') + .first() - if (!builds_run || builds_run.length <= 0) { + if (!builds_run) { return 0 } - const reduced = builds_run.reduce((a: BuildsRun, b: BuildsRun) => { - return { - ...a, - builds: a.builds + b.builds - } - }) - - return Number(reduced.builds) + return builds_run.builds } export async function fetchStatistics(): Promise { From bedbf1c59b4fefb9c25bdb871bab2e48b3bd57b2 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Fri, 8 Oct 2021 15:14:34 +0200 Subject: [PATCH 219/244] Remove useless semi-colon --- app/Utils/StatsUtils.ts | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/app/Utils/StatsUtils.ts b/app/Utils/StatsUtils.ts index 9d7a2e2..9765efa 100644 --- a/app/Utils/StatsUtils.ts +++ b/app/Utils/StatsUtils.ts @@ -3,12 +3,12 @@ import CommandsRun from "App/Models/CommandsRun"; import BuildsRun from "App/Models/BuildsRun"; interface Stats { - start: Date; - end: Date; + start: Date + end: Date - development_seconds: number; - commands_ran: number; - builds_ran: number; + development_seconds: number + commands_ran: number + builds_ran: number } export async function getDevelopmentHours(start: Date, end: Date): Promise { @@ -57,8 +57,8 @@ export async function getBuildsRan(start: Date, end: Date): Promise { } export async function fetchStatistics(): Promise { - const start = new Date("01-01-2000"); - const end = new Date(); + const start = new Date("01-01-2000") + const end = new Date() const development_seconds = await getDevelopmentHours(start, end) const commands_ran = await getCommandsRan(start, end) @@ -74,8 +74,8 @@ export async function fetchStatistics(): Promise { } export async function fetchMonthlyStatistics(): Promise { - const start = new Date(new Date().setMonth(new Date().getMonth() - 1)); - const end = new Date(); + const start = new Date(new Date().setMonth(new Date().getMonth() - 1)) + const end = new Date() const development_seconds = await getDevelopmentHours(start, end) const commands_ran = await getCommandsRan(start, end) @@ -91,8 +91,8 @@ export async function fetchMonthlyStatistics(): Promise { } export async function fetchWeeklyStatistics(): Promise { - const start = new Date(new Date().getTime() - 7 * 24 * 60 * 60 * 1000); - const end = new Date(); + const start = new Date(new Date().getTime() - 7 * 24 * 60 * 60 * 1000) + const end = new Date() const development_seconds = await getDevelopmentHours(start, end) const commands_ran = await getCommandsRan(start, end) @@ -108,8 +108,8 @@ export async function fetchWeeklyStatistics(): Promise { } export async function fetchDailyStatistics(): Promise { - const start = new Date(); - const end = new Date(); + const start = new Date() + const end = new Date() const development_seconds = await getDevelopmentHours(start, end) const commands_ran = await getCommandsRan(start, end) From 141f0096761672676e421138efc20ffcee182420 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 12 Oct 2021 20:46:22 +0200 Subject: [PATCH 220/244] Add new env variables --- .env.example | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.env.example b/.env.example index 14e695b..a9fcd52 100755 --- a/.env.example +++ b/.env.example @@ -32,3 +32,6 @@ SMTP_HOST= SMTP_PORT= SMTP_USERNAME= SMTP_PASSWORD= + +WAKATIME_USER= +WAKATIME_ID= From 32346e50c222a816d4b77e92008e10e17c8a5916 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 12 Oct 2021 20:46:32 +0200 Subject: [PATCH 221/244] Add axios --- package.json | 2 +- yarn.lock | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 6b3dd62..477ecd7 100755 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "@adonisjs/repl": "^3.1.4", "@adonisjs/session": "^6.1.1", "@adonisjs/view": "^6.0.3", - "axios": "^0.21.1", + "axios": "^0.22.0", "luxon": "^1.27.0", "mjml": "^4.10.1", "mysql": "^2.18.1", diff --git a/yarn.lock b/yarn.lock index ce525d3..d56119d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -825,12 +825,12 @@ atomic-sleep@^1.0.0: resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== -axios@^0.21.1: - version "0.21.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" - integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== +axios@^0.22.0: + version "0.22.0" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.22.0.tgz#bf702c41fb50fbca4539589d839a077117b79b25" + integrity sha512-Z0U3uhqQeg1oNcihswf4ZD57O3NrR1+ZXhxaROaWpDmsDTx7T2HNBV2ulBtie2hwJptu8UvgnJoK+BIqdzh/1w== dependencies: - follow-redirects "^1.10.0" + follow-redirects "^1.14.4" babel-code-frame@^6.26.0: version "6.26.0" @@ -1858,10 +1858,10 @@ flatstr@^1.0.12: resolved "https://registry.yarnpkg.com/flatstr/-/flatstr-1.0.12.tgz#c2ba6a08173edbb6c9640e3055b95e287ceb5931" integrity sha512-4zPxDyhCyiN2wIAtSLI6gc82/EjqZc1onI4Mz/l0pWrAlsSfYH/2ZIcU+e3oA2wDwbzIWNKwa23F8rh6+DRWkw== -follow-redirects@^1.10.0: - version "1.14.1" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" - integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== +follow-redirects@^1.14.4: + version "1.14.4" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.4.tgz#838fdf48a8bbdd79e52ee51fb1c94e3ed98b9379" + integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g== for-in@^1.0.2: version "1.0.2" From b400a323d70c506bf9f0bb3adf8c6b32e8dcdc13 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 12 Oct 2021 20:46:38 +0200 Subject: [PATCH 222/244] Add new env variables --- env.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/env.ts b/env.ts index cc36140..46b39b6 100755 --- a/env.ts +++ b/env.ts @@ -55,4 +55,8 @@ export default Env.rules({ SMTP_PORT: Env.schema.number(), SMTP_USERNAME: Env.schema.string(), SMTP_PASSWORD: Env.schema.string(), + + //Wakatime + WAKATIME_USER: Env.schema.string(), + WAKATIME_ID: Env.schema.string() }) From 29b57f2001ec044a026315958a05d0bc4b08b52b Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 12 Oct 2021 20:46:47 +0200 Subject: [PATCH 223/244] Add axios type --- tsconfig.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsconfig.json b/tsconfig.json index 3cffb77..d5ce1f5 100755 --- a/tsconfig.json +++ b/tsconfig.json @@ -34,7 +34,7 @@ "@adonisjs/lucid", "@adonisjs/mail", "@adonisjs/view", - "@adonisjs/bouncer" + "@adonisjs/bouncer", ] } } From b08d9450a3514382efabeca95a883cf587cfaeae Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 12 Oct 2021 20:47:25 +0200 Subject: [PATCH 224/244] Change date type to string in migration --- database/migrations/1633697377760_commands_runs.ts | 2 +- database/migrations/1633697382674_builds_runs.ts | 2 +- database/migrations/1633697389017_development_hours.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/database/migrations/1633697377760_commands_runs.ts b/database/migrations/1633697377760_commands_runs.ts index 9692753..c7adbde 100644 --- a/database/migrations/1633697377760_commands_runs.ts +++ b/database/migrations/1633697377760_commands_runs.ts @@ -7,7 +7,7 @@ export default class CommandsRuns extends BaseSchema { this.schema.createTable(this.tableName, (table) => { table.increments('id').primary() table.bigInteger('commands') - table.date('date') + table.string('date') }) } diff --git a/database/migrations/1633697382674_builds_runs.ts b/database/migrations/1633697382674_builds_runs.ts index 7048728..21f4a4a 100644 --- a/database/migrations/1633697382674_builds_runs.ts +++ b/database/migrations/1633697382674_builds_runs.ts @@ -7,7 +7,7 @@ export default class BuildsRuns extends BaseSchema { this.schema.createTable(this.tableName, (table) => { table.increments('id').primary() table.bigInteger('builds') - table.timestamp('date') + table.string('date') }) } diff --git a/database/migrations/1633697389017_development_hours.ts b/database/migrations/1633697389017_development_hours.ts index 9b8d7cf..a1440ba 100644 --- a/database/migrations/1633697389017_development_hours.ts +++ b/database/migrations/1633697389017_development_hours.ts @@ -7,7 +7,7 @@ export default class DevelopmentHours extends BaseSchema { this.schema.createTable(this.tableName, (table) => { table.increments('id').primary() table.double('seconds') - table.date('date') + table.string('date') }) } From 0f4fc39ed7103b6ae92c424bf518c460981c35e5 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 12 Oct 2021 20:48:59 +0200 Subject: [PATCH 225/244] Change date type in models --- app/Models/BuildsRun.ts | 5 ++--- app/Models/CommandsRun.ts | 5 ++--- app/Models/DevelopmentHour.ts | 7 +++---- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/app/Models/BuildsRun.ts b/app/Models/BuildsRun.ts index 076ae26..bec157c 100644 --- a/app/Models/BuildsRun.ts +++ b/app/Models/BuildsRun.ts @@ -1,4 +1,3 @@ -import { DateTime } from 'luxon' import { BaseModel, column } from '@ioc:Adonis/Lucid/Orm' export default class BuildsRun extends BaseModel { @@ -8,6 +7,6 @@ export default class BuildsRun extends BaseModel { @column() public builds: number - @column.date({ autoCreate: true }) - public date: DateTime + @column() + public date: string } diff --git a/app/Models/CommandsRun.ts b/app/Models/CommandsRun.ts index 3241255..c4137b8 100644 --- a/app/Models/CommandsRun.ts +++ b/app/Models/CommandsRun.ts @@ -1,4 +1,3 @@ -import { DateTime } from 'luxon' import { BaseModel, column } from '@ioc:Adonis/Lucid/Orm' export default class CommandsRun extends BaseModel { @@ -8,6 +7,6 @@ export default class CommandsRun extends BaseModel { @column() public commands: number - @column.date({ autoCreate: true }) - public date: DateTime + @column() + public date: string } diff --git a/app/Models/DevelopmentHour.ts b/app/Models/DevelopmentHour.ts index 986f839..2141900 100644 --- a/app/Models/DevelopmentHour.ts +++ b/app/Models/DevelopmentHour.ts @@ -1,5 +1,4 @@ -import { DateTime } from 'luxon' -import { BaseModel, column } from '@ioc:Adonis/Lucid/Orm' +import {BaseModel, column} from '@ioc:Adonis/Lucid/Orm' export default class DevelopmentHour extends BaseModel { @column({ isPrimary: true }) @@ -8,6 +7,6 @@ export default class DevelopmentHour extends BaseModel { @column() public seconds: number - @column.date({ autoCreate: true }) - public date: DateTime + @column() + public date: string } From efa2cd905a836331f647cf83b6763575674fb37c Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 12 Oct 2021 20:49:14 +0200 Subject: [PATCH 226/244] Activate task on app boot --- providers/AppProvider.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/providers/AppProvider.ts b/providers/AppProvider.ts index 34a01f7..a99aaf3 100755 --- a/providers/AppProvider.ts +++ b/providers/AppProvider.ts @@ -18,11 +18,15 @@ export default class AppProvider { public async ready () { // App is ready + const StatsTask = await import('App/Tasks/StatsTask') + await StatsTask.Activate() Logger.info('Application is ready!') } public async shutdown () { // Cleanup, since app is going down + const StatsTask = (await import('App/Tasks/StatsTask')) + await StatsTask.ShutDown() Logger.info('Application is closing. Bye...') } } From f7e4aa9c2627f41d0fad462150cb4278b2098713 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 12 Oct 2021 20:49:23 +0200 Subject: [PATCH 227/244] Add db pools --- config/database.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/config/database.ts b/config/database.ts index c80e9bd..fe41667 100755 --- a/config/database.ts +++ b/config/database.ts @@ -42,6 +42,11 @@ const databaseConfig: DatabaseConfig = { password: Env.get('MYSQL_PASSWORD', ''), database: Env.get('MYSQL_DB_NAME'), }, + pool: { + max: 10, + min: 1, + idleTimeoutMillis: 30000, + }, healthCheck: true, debug: false, }, From 8c055477522c67613c2a7181c35bf69bd4ff6c6f Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 12 Oct 2021 20:49:41 +0200 Subject: [PATCH 228/244] Add Wakatime Fetch Stats --- app/Tasks/StatsTask.ts | 48 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 app/Tasks/StatsTask.ts diff --git a/app/Tasks/StatsTask.ts b/app/Tasks/StatsTask.ts new file mode 100644 index 0000000..325c4d8 --- /dev/null +++ b/app/Tasks/StatsTask.ts @@ -0,0 +1,48 @@ +import Logger from "@ioc:Adonis/Core/Logger"; +import Env from "@ioc:Adonis/Core/Env"; +import axios from "axios"; +import DevelopmentHour from "App/Models/DevelopmentHour"; + +const MS = 1000 * 5 * 60 // 5 min +let taskId + +interface StatsResponse { + grand_total: { + total_seconds: number + } + range: { + date: string + } +} + +async function getDevelopmentHours(): Promise { + const response = await axios.get<{ data: StatsResponse[]}>(`https://wakatime.com/share/@${Env.get('WAKATIME_USER')}/${Env.get('WAKATIME_ID')}.json`) + if (response.status === 200) { + const mapped_stats = response.data.data.map((item: StatsResponse) => { + return { + seconds: item.grand_total.total_seconds, date: item.range.date + } + }) + + for (const data of mapped_stats) { + await DevelopmentHour.updateOrCreate({ + date: data.date.split('T')[0] + }, { + date: data.date.split('T')[0], + seconds: data.seconds + }) + } + } +} + +export async function Activate(): Promise { + Logger.info(`Starting task runner for getting development hours [every ${MS} ms]`) + await getDevelopmentHours() + taskId = setInterval(getDevelopmentHours, MS) + return +} + +export function ShutDown(): void { + clearInterval(taskId) + Logger.info(`Shutdown task runner for getting development hours`) +} From f14e9b5cb9afedf514cb0500b1ea0f8c9efd2423 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 12 Oct 2021 20:50:41 +0200 Subject: [PATCH 229/244] Add stats controller --- app/Controllers/Http/StatsController.ts | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/app/Controllers/Http/StatsController.ts b/app/Controllers/Http/StatsController.ts index c4fafc1..e5a3166 100644 --- a/app/Controllers/Http/StatsController.ts +++ b/app/Controllers/Http/StatsController.ts @@ -1,12 +1,12 @@ import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext' import CommandsRun from "App/Models/CommandsRun"; -import {DateTime} from "luxon"; import BuildsRun from "App/Models/BuildsRun"; import { fetchDailyStatistics, fetchMonthlyStatistics, fetchStatistics, - fetchWeeklyStatistics + fetchWeeklyStatistics, + NOW } from "App/Utils/StatsUtils"; export default class StatsController { @@ -21,18 +21,21 @@ export default class StatsController { daily, weekly, monthly, - total + total: { + development_time: total.development_time, + commands_run: total.commands_ran, + builds_run: total.builds_ran, + } }) } public async incrementCommandCount({ response }: HttpContextContract) { - const current_date = DateTime.fromJSDate(new Date(new Date().setUTCMinutes(0, 0, 0))) const current_commands = await CommandsRun.firstOrCreate( { - date: current_date + date: NOW }, { - date: current_date, + date: NOW, commands: 0 } ) @@ -41,18 +44,17 @@ export default class StatsController { await current_commands.save() return response.status(200).send({ - message: 'Commands Count successfully incremented !' + message: 'Commands Count successfully incremented!' }) } public async incrementBuildCount({ response }: HttpContextContract) { - const current_date = DateTime.fromJSDate(new Date(new Date().setUTCMinutes(0, 0, 0))) const current_builds = await BuildsRun.firstOrCreate( { - date: current_date + date: NOW }, { - date: current_date, + date: NOW, builds: 0 } ) @@ -61,7 +63,7 @@ export default class StatsController { await current_builds.save() return response.status(200).send({ - message: 'Builds Count successfully incremented !' + message: 'Builds Count successfully incremented!' }) } From e36e8c86543a99b24f6b550fbf5038411fc62193 Mon Sep 17 00:00:00 2001 From: Arthur DANJOU Date: Tue, 12 Oct 2021 20:50:58 +0200 Subject: [PATCH 230/244] Update TaskUtil --- app/Utils/StatsUtils.ts | 126 +++++++++++++++++++++++++--------------- 1 file changed, 78 insertions(+), 48 deletions(-) diff --git a/app/Utils/StatsUtils.ts b/app/Utils/StatsUtils.ts index 9765efa..a16e21a 100644 --- a/app/Utils/StatsUtils.ts +++ b/app/Utils/StatsUtils.ts @@ -3,122 +3,152 @@ import CommandsRun from "App/Models/CommandsRun"; import BuildsRun from "App/Models/BuildsRun"; interface Stats { - start: Date - end: Date + range: { + start: string + end: string + } - development_seconds: number + development_time: Time commands_ran: number builds_ran: number } -export async function getDevelopmentHours(start: Date, end: Date): Promise { - const development_seconds = await DevelopmentHour +interface Time { + total_hours: number + total_minutes: number + total_seconds: number +} + +function formatDate(date: Date): string { + return date.toISOString().split('T')[0] +} + +export const NOW = formatDate(new Date()) + +export async function getDevelopmentHours(start: string, end: string): Promise