From 3b2744020c5255339f9e45adc257d6f135d1be54 Mon Sep 17 00:00:00 2001 From: Felix Mosheev <9304194+felixmosh@users.noreply.github.com> Date: Sat, 15 May 2021 19:18:46 +0300 Subject: [PATCH] Reformat the code when semicolons enabled --- .prettierrc | 6 +- babel.config.js | 2 +- bullAdapter.d.ts | 2 +- bullAdapter.js | 2 +- bullMQAdapter.d.ts | 2 +- bullMQAdapter.js | 2 +- example.ts | 99 +- jest.config.js | 2 +- package.json | 1 + src/@types/api.ts | 6 +- src/@types/app.ts | 116 +- src/@types/global.ts | 4 +- src/@types/utils.ts | 2 +- src/index.ts | 58 +- src/queueAdapters/base.ts | 32 +- src/queueAdapters/bull.ts | 24 +- src/queueAdapters/bullMQ.ts | 32 +- src/routes/apiRouter.ts | 36 +- src/routes/entryPoint.ts | 8 +- src/routes/handlers/cleanAll.ts | 24 +- src/routes/handlers/cleanJob.ts | 14 +- src/routes/handlers/errorHandler.ts | 6 +- src/routes/handlers/jobLogs.ts | 12 +- src/routes/handlers/promoteJob.ts | 14 +- src/routes/handlers/queues.ts | 78 +- src/routes/handlers/retryAll.ts | 16 +- src/routes/handlers/retryJob.ts | 14 +- src/routes/middlewares/jobProvider.ts | 20 +- src/routes/middlewares/queueProvider.ts | 26 +- src/routes/middlewares/wrapAsync.ts | 6 +- src/ui/components/App.tsx | 38 +- src/ui/components/Header/Header.module.css | 56 +- src/ui/components/Header/Header.tsx | 8 +- src/ui/components/Highlight/Highlight.tsx | 36 +- .../Highlight/languages/stacktrace.ts | 8 +- src/ui/components/Icons/Promote.tsx | 4 +- src/ui/components/Icons/Retry.tsx | 4 +- src/ui/components/Icons/Trash.tsx | 4 +- .../JobCard/Button/Button.module.css | 32 +- src/ui/components/JobCard/Button/Button.tsx | 12 +- .../JobCard/Details/Details.module.css | 122 +- src/ui/components/JobCard/Details/Details.tsx | 28 +- .../Details/DetailsContent/DetailsContent.tsx | 30 +- .../DetailsContent/JobLogs/JobLogs.tsx | 26 +- .../JobCard/JobActions/JobActions.module.css | 12 +- .../JobCard/JobActions/JobActions.tsx | 44 +- src/ui/components/JobCard/JobCard.module.css | 80 +- src/ui/components/JobCard/JobCard.tsx | 34 +- .../JobCard/Progress/Progress.module.css | 16 +- .../components/JobCard/Progress/Progress.tsx | 18 +- .../JobCard/Timeline/Timeline.module.css | 59 +- .../components/JobCard/Timeline/Timeline.tsx | 30 +- src/ui/components/Menu/Menu.module.css | 78 +- src/ui/components/Menu/Menu.tsx | 16 +- .../QueueActions/QueueActions.module.css | 16 +- .../components/QueueActions/QueueActions.tsx | 34 +- .../components/QueuePage/QueuePage.module.css | 14 +- src/ui/components/QueuePage/QueuePage.tsx | 26 +- .../RedisStats/RedisStats.module.css | 28 +- src/ui/components/RedisStats/RedisStats.tsx | 30 +- .../StatusMenu/StatusMenu.module.css | 72 +- src/ui/components/StatusMenu/StatusMenu.tsx | 26 +- src/ui/components/Tooltip/Tooltip.module.css | 38 +- src/ui/components/Tooltip/Tooltip.tsx | 6 +- src/ui/components/constants.ts | 12 +- src/ui/hooks/useDetailsTabs.tsx | 22 +- src/ui/hooks/useInterval.ts | 22 +- src/ui/hooks/useScrollTopOnNav.ts | 10 +- src/ui/hooks/useSelectedStatuses.ts | 28 +- src/ui/hooks/useStore.ts | 56 +- src/ui/index.css | 40 +- src/ui/index.ejs | 16 +- src/ui/index.tsx | 25 +- src/ui/services/Api.ts | 54 +- src/ui/theme.css | 66 +- src/ui/toastify.css | 332 +-- tests/api/index.spec.ts | 54 +- tests/api/public-interface.spec.ts | 8 +- tests/dockest.ts | 8 +- webpack.config.js | 26 +- yarn.lock | 2449 ++++++++++++++++- 81 files changed, 3673 insertions(+), 1306 deletions(-) diff --git a/.prettierrc b/.prettierrc index 72f76deb..c6a1376d 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,6 +1,4 @@ { - "semi": false, - "singleQuote": true, - "trailingComma": "all", - "arrowParens": "always" + "trailingComma": "es5", + "singleQuote": true } diff --git a/babel.config.js b/babel.config.js index 8a049909..0289a181 100644 --- a/babel.config.js +++ b/babel.config.js @@ -9,4 +9,4 @@ module.exports = { '@babel/plugin-proposal-object-rest-spread', '@babel/plugin-proposal-class-properties', ], -} +}; diff --git a/bullAdapter.d.ts b/bullAdapter.d.ts index c3aa2d36..92f9169d 100644 --- a/bullAdapter.d.ts +++ b/bullAdapter.d.ts @@ -1 +1 @@ -export { BullAdapter } from './dist/queueAdapters/bull' +export { BullAdapter } from './dist/queueAdapters/bull'; diff --git a/bullAdapter.js b/bullAdapter.js index d81e887a..95e4bf80 100644 --- a/bullAdapter.js +++ b/bullAdapter.js @@ -1 +1 @@ -module.exports = require('./dist/queueAdapters/bull') +module.exports = require('./dist/queueAdapters/bull'); diff --git a/bullMQAdapter.d.ts b/bullMQAdapter.d.ts index 114a12e2..d2c77990 100644 --- a/bullMQAdapter.d.ts +++ b/bullMQAdapter.d.ts @@ -1 +1 @@ -export { BullMQAdapter } from './dist/queueAdapters/bullMQ' +export { BullMQAdapter } from './dist/queueAdapters/bullMQ'; diff --git a/bullMQAdapter.js b/bullMQAdapter.js index 31b9ef5d..726775c3 100644 --- a/bullMQAdapter.js +++ b/bullMQAdapter.js @@ -1,2 +1,2 @@ /// -module.exports = require('./dist/queueAdapters/bullMQ') +module.exports = require('./dist/queueAdapters/bullMQ'); diff --git a/example.ts b/example.ts index da957e9f..84ea2a17 100644 --- a/example.ts +++ b/example.ts @@ -1,96 +1,97 @@ -import * as Bull from 'bull' -import Queue3 from 'bull' -import { Queue as QueueMQ, QueueScheduler, Worker } from 'bullmq' -import express from 'express' -import { createBullBoard } from './src' -import { BullAdapter } from './src/queueAdapters/bull' -import { BullMQAdapter } from './src/queueAdapters/bullMQ' +import * as Bull from 'bull'; +import Queue3 from 'bull'; +import { Queue as QueueMQ, QueueScheduler, Worker } from 'bullmq'; +import express from 'express'; +import { createBullBoard } from './src'; +import { BullAdapter } from './src/queueAdapters/bull'; +import { BullMQAdapter } from './src/queueAdapters/bullMQ'; const redisOptions = { port: 6379, host: 'localhost', password: '', -} +}; const sleep = (t: number) => - new Promise((resolve) => setTimeout(resolve, t * 1000)) + new Promise((resolve) => setTimeout(resolve, t * 1000)); -const createQueue3 = (name: string) => new Queue3(name, { redis: redisOptions }) +const createQueue3 = (name: string) => + new Queue3(name, { redis: redisOptions }); const createQueueMQ = (name: string) => - new QueueMQ(name, { connection: redisOptions }) + new QueueMQ(name, { connection: redisOptions }); function setupBullProcessor(bullQueue: Bull.Queue) { bullQueue.process(async (job) => { for (let i = 0; i <= 100; i++) { - await sleep(Math.random()) - await job.progress(i) - await job.log(`Processing job at interval ${i}`) - if (Math.random() * 200 < 1) throw new Error(`Random error ${i}`) + await sleep(Math.random()); + await job.progress(i); + await job.log(`Processing job at interval ${i}`); + if (Math.random() * 200 < 1) throw new Error(`Random error ${i}`); } - return { jobId: `This is the return value of job (${job.id})` } - }) + return { jobId: `This is the return value of job (${job.id})` }; + }); } async function setupBullMQProcessor(queueName: string) { const queueScheduler = new QueueScheduler(queueName, { connection: redisOptions, - }) - await queueScheduler.waitUntilReady() + }); + await queueScheduler.waitUntilReady(); new Worker(queueName, async (job) => { for (let i = 0; i <= 100; i++) { - await sleep(Math.random()) - await job.updateProgress(i) - await job.log(`Processing job at interval ${i}`) + await sleep(Math.random()); + await job.updateProgress(i); + await job.log(`Processing job at interval ${i}`); - if (Math.random() * 200 < 1) throw new Error(`Random error ${i}`) + if (Math.random() * 200 < 1) throw new Error(`Random error ${i}`); } - return { jobId: `This is the return value of job (${job.id})` } - }) + return { jobId: `This is the return value of job (${job.id})` }; + }); } const run = async () => { - const app = express() + const app = express(); - const exampleBull = createQueue3('ExampleBull') - const exampleBullMq = createQueueMQ('ExampleBullMQ') + const exampleBull = createQueue3('ExampleBull'); + const exampleBullMq = createQueueMQ('ExampleBullMQ'); - await setupBullProcessor(exampleBull) // needed only for example proposes - await setupBullMQProcessor(exampleBullMq.name) // needed only for example proposes + await setupBullProcessor(exampleBull); // needed only for example proposes + await setupBullMQProcessor(exampleBullMq.name); // needed only for example proposes app.use('/add', (req, res) => { - const opts = req.query.opts || ({} as any) + const opts = req.query.opts || ({} as any); if (opts.delay) { - opts.delay = +opts.delay * 1000 // delay must be a number + opts.delay = +opts.delay * 1000; // delay must be a number } - exampleBull.add({ title: req.query.title }, opts) - exampleBullMq.add('Add', { title: req.query.title }, opts) + exampleBull.add({ title: req.query.title }, opts); + exampleBullMq.add('Add', { title: req.query.title }, opts); res.json({ ok: true, - }) - }) + }); + }); const { router: bullBoardRouter } = createBullBoard([ new BullMQAdapter(exampleBullMq), new BullAdapter(exampleBull), - ]) + ]); - app.use('/ui', bullBoardRouter) + app.use('/ui', bullBoardRouter); app.listen(3000, () => { - console.log('Running on 3000...') - console.log('For the UI, open http://localhost:3000/ui') - console.log('Make sure Redis is running on port 6379 by default') - console.log('To populate the queue, run:') - console.log(' curl http://localhost:3000/add?title=Example') - console.log('To populate the queue with custom options (opts), run:') - console.log(' curl http://localhost:3000/add?title=Test&opts[delay]=10') - }) -} - -run().catch((e) => console.error(e)) + console.log('Running on 3000...'); + console.log('For the UI, open http://localhost:3000/ui'); + console.log('Make sure Redis is running on port 6379 by default'); + console.log('To populate the queue, run:'); + console.log(' curl http://localhost:3000/add?title=Example'); + console.log('To populate the queue with custom options (opts), run:'); + console.log(' curl http://localhost:3000/add?title=Test&opts[delay]=10'); + }); +}; + +run().catch((e) => console.error(e)); diff --git a/jest.config.js b/jest.config.js index 66a4d63f..8cf0348b 100644 --- a/jest.config.js +++ b/jest.config.js @@ -8,4 +8,4 @@ module.exports = { }, testPathIgnorePatterns: ['/node_modules/'], testMatch: ['/tests/**/*.spec.ts'], -} +}; diff --git a/package.json b/package.json index 059278c1..46bc14ca 100644 --- a/package.json +++ b/package.json @@ -91,6 +91,7 @@ "highlight.js": "^10.7.1", "html-webpack-plugin": "^5.3.1", "jest": "^26.6.3", + "lerna": "^4.0.0", "mini-css-extract-plugin": "^1.6.0", "postcss-loader": "^5.2.0", "postcss-preset-env": "^6.7.0", diff --git a/src/@types/api.ts b/src/@types/api.ts index 19b05337..b2c0f71e 100644 --- a/src/@types/api.ts +++ b/src/@types/api.ts @@ -1,6 +1,6 @@ -import { ValidMetrics, AppQueue } from './app' +import { AppQueue, ValidMetrics } from './app'; export interface GetQueues { - stats: Partial - queues: AppQueue[] + stats: Partial; + queues: AppQueue[]; } diff --git a/src/@types/app.ts b/src/@types/app.ts index 446c3d65..7e362b55 100644 --- a/src/@types/app.ts +++ b/src/@types/app.ts @@ -1,96 +1,96 @@ -import { BaseAdapter } from '../queueAdapters/base' -import { Status } from '../ui/components/constants' +import { BaseAdapter } from '../queueAdapters/base'; +import { Status } from '../ui/components/constants'; export type JobCleanStatus = | 'completed' | 'wait' | 'active' | 'delayed' - | 'failed' + | 'failed'; -export type JobStatus = Status +export type JobStatus = Status; -export type JobCounts = Record +export type JobCounts = Record; export interface QueueAdapterOptions { - readOnlyMode: boolean + readOnlyMode: boolean; } -export type BullBoardQueues = Map +export type BullBoardQueues = Map; export interface QueueJob { opts: { - delay?: number | undefined - } + delay?: number | undefined; + }; - promote(): Promise + promote(): Promise; - remove(): Promise + remove(): Promise; - retry(): Promise + retry(): Promise; - toJSON(): QueueJobJson + toJSON(): QueueJobJson; } export interface QueueJobJson { // add properties as needed from real Bull/BullMQ jobs - id?: string | undefined | number | null - name: string + id?: string | undefined | number | null; + name: string; // eslint-disable-next-line @typescript-eslint/ban-types - progress: number | object - attemptsMade: number - finishedOn?: number | null - processedOn?: number | null - timestamp: number - failedReason: string - stacktrace: string[] | null - data: any - returnvalue: any - opts: any - parentKey?: string + progress: number | object; + attemptsMade: number; + finishedOn?: number | null; + processedOn?: number | null; + timestamp: number; + failedReason: string; + stacktrace: string[] | null; + data: any; + returnvalue: any; + opts: any; + parentKey?: string; } export interface ValidMetrics { - total_system_memory: string - redis_version: string - used_memory: string - mem_fragmentation_ratio: string - connected_clients: string - blocked_clients: string + total_system_memory: string; + redis_version: string; + used_memory: string; + mem_fragmentation_ratio: string; + connected_clients: string; + blocked_clients: string; } export interface AppJob { - id: QueueJobJson['id'] - name: QueueJobJson['name'] - timestamp: QueueJobJson['timestamp'] - processedOn?: QueueJobJson['processedOn'] - finishedOn?: QueueJobJson['finishedOn'] - progress: QueueJobJson['progress'] - attempts: QueueJobJson['attemptsMade'] - failedReason: QueueJobJson['failedReason'] - stacktrace: string[] - delay: number | undefined - opts: QueueJobJson['opts'] - data: QueueJobJson['data'] - returnValue: QueueJobJson['returnvalue'] + id: QueueJobJson['id']; + name: QueueJobJson['name']; + timestamp: QueueJobJson['timestamp']; + processedOn?: QueueJobJson['processedOn']; + finishedOn?: QueueJobJson['finishedOn']; + progress: QueueJobJson['progress']; + attempts: QueueJobJson['attemptsMade']; + failedReason: QueueJobJson['failedReason']; + stacktrace: string[]; + delay: number | undefined; + opts: QueueJobJson['opts']; + data: QueueJobJson['data']; + returnValue: QueueJobJson['returnvalue']; } export interface AppQueue { - name: string - counts: Record - jobs: AppJob[] - readOnlyMode: boolean + name: string; + counts: Record; + jobs: AppJob[]; + readOnlyMode: boolean; } -export type SelectedStatuses = Record +export type SelectedStatuses = Record; export interface QueueActions { - promoteJob: (queueName: string) => (job: AppJob) => () => Promise - retryJob: (queueName: string) => (job: AppJob) => () => Promise - cleanJob: (queueName: string) => (job: AppJob) => () => Promise - getJobLogs: (queueName: string) => (job: AppJob) => () => Promise - retryAll: (queueName: string) => () => Promise - cleanAllDelayed: (queueName: string) => () => Promise - cleanAllFailed: (queueName: string) => () => Promise - cleanAllCompleted: (queueName: string) => () => Promise + promoteJob: (queueName: string) => (job: AppJob) => () => Promise; + retryJob: (queueName: string) => (job: AppJob) => () => Promise; + cleanJob: (queueName: string) => (job: AppJob) => () => Promise; + getJobLogs: (queueName: string) => (job: AppJob) => () => Promise; + retryAll: (queueName: string) => () => Promise; + cleanAllDelayed: (queueName: string) => () => Promise; + cleanAllFailed: (queueName: string) => () => Promise; + cleanAllCompleted: (queueName: string) => () => Promise; } diff --git a/src/@types/global.ts b/src/@types/global.ts index 9a2782a7..3976bbe9 100644 --- a/src/@types/global.ts +++ b/src/@types/global.ts @@ -1,4 +1,4 @@ declare module '*.css' { - const resource: Record - export = resource + const resource: Record; + export = resource; } diff --git a/src/@types/utils.ts b/src/@types/utils.ts index 2a052959..9c1c1d57 100644 --- a/src/@types/utils.ts +++ b/src/@types/utils.ts @@ -1 +1 @@ -export type KeyOf = Array +export type KeyOf = Array; diff --git a/src/index.ts b/src/index.ts index 6770257b..9f7453ab 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,53 +1,53 @@ -import express from 'express' -import { Express } from 'express-serve-static-core' -import path from 'path' -import { BullBoardQueues } from './@types/app' -import { BaseAdapter } from './queueAdapters/base' -import { apiRouter } from './routes/apiRouter' -import { entryPoint } from './routes/entryPoint' +import express from 'express'; +import { Express } from 'express-serve-static-core'; +import path from 'path'; +import { BullBoardQueues } from './@types/app'; +import { BaseAdapter } from './queueAdapters/base'; +import { apiRouter } from './routes/apiRouter'; +import { entryPoint } from './routes/entryPoint'; export function createBullBoard( - bullQueues: ReadonlyArray, + bullQueues: ReadonlyArray ): { - router: Express - setQueues: (newBullQueues: ReadonlyArray) => void - replaceQueues: (newBullQueues: ReadonlyArray) => void + router: Express; + setQueues: (newBullQueues: ReadonlyArray) => void; + replaceQueues: (newBullQueues: ReadonlyArray) => void; } { - const bullBoardQueues: BullBoardQueues = new Map() - const app: Express = express() - app.locals.bullBoardQueues = bullBoardQueues + const bullBoardQueues: BullBoardQueues = new Map(); + const app: Express = express(); + app.locals.bullBoardQueues = bullBoardQueues; - app.set('view engine', 'ejs') - app.set('views', path.resolve(__dirname, '../dist/ui')) + app.set('view engine', 'ejs'); + app.set('views', path.resolve(__dirname, '../dist/ui')); - app.use('/static', express.static(path.resolve(__dirname, '../static'))) + app.use('/static', express.static(path.resolve(__dirname, '../static'))); - app.get(['/', '/queue/:queueName'], entryPoint) - app.use('/api', apiRouter) + app.get(['/', '/queue/:queueName'], entryPoint); + app.use('/api', apiRouter); function setQueues(newBullQueues: ReadonlyArray): void { newBullQueues.forEach((queue) => { - const name = queue.getName() + const name = queue.getName(); - bullBoardQueues.set(name, queue) - }) + bullBoardQueues.set(name, queue); + }); } function replaceQueues(newBullQueues: ReadonlyArray): void { const queuesToPersist: string[] = newBullQueues.map((queue) => - queue.getName(), - ) + queue.getName() + ); bullBoardQueues.forEach((_queue, name) => { if (queuesToPersist.indexOf(name) === -1) { - bullBoardQueues.delete(name) + bullBoardQueues.delete(name); } - }) + }); - return setQueues(newBullQueues) + return setQueues(newBullQueues); } - setQueues(bullQueues) + setQueues(bullQueues); - return { router: app, setQueues, replaceQueues } + return { router: app, setQueues, replaceQueues }; } diff --git a/src/queueAdapters/base.ts b/src/queueAdapters/base.ts index b6f5a22c..2254bc6d 100644 --- a/src/queueAdapters/base.ts +++ b/src/queueAdapters/base.ts @@ -4,48 +4,48 @@ import { JobStatus, QueueAdapterOptions, QueueJob, -} from '../@types/app' +} from '../@types/app'; export abstract class BaseAdapter { - public readonly readOnlyMode: boolean - private formatters: Record any> = {} + public readonly readOnlyMode: boolean; + private formatters: Record any> = {}; protected constructor(options: Partial = {}) { - this.readOnlyMode = options.readOnlyMode === true + this.readOnlyMode = options.readOnlyMode === true; } public setFormatter( field: 'data' | 'returnValue', - formatter: (data: any) => any, + formatter: (data: any) => any ): void { - this.formatters[field] = formatter + this.formatters[field] = formatter; } // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types public format(field: 'data' | 'returnValue', data: any): any { return typeof this.formatters[field] === 'function' ? this.formatters[field](data) - : data + : data; } public abstract clean( queueStatus: JobCleanStatus, - graceTimeMs: number, - ): Promise + graceTimeMs: number + ): Promise; - public abstract getJob(id: string): Promise + public abstract getJob(id: string): Promise; - public abstract getJobCounts(...jobStatuses: JobStatus[]): Promise + public abstract getJobCounts(...jobStatuses: JobStatus[]): Promise; public abstract getJobs( jobStatuses: JobStatus[], start?: number, - end?: number, - ): Promise + end?: number + ): Promise; - public abstract getJobLogs(id: string): Promise + public abstract getJobLogs(id: string): Promise; - public abstract getName(): string + public abstract getName(): string; - public abstract getRedisInfo(): Promise + public abstract getRedisInfo(): Promise; } diff --git a/src/queueAdapters/bull.ts b/src/queueAdapters/bull.ts index feb9b6af..25b98de0 100644 --- a/src/queueAdapters/bull.ts +++ b/src/queueAdapters/bull.ts @@ -1,47 +1,47 @@ -import { Job, Queue } from 'bull' +import { Job, Queue } from 'bull'; import { JobCleanStatus, JobCounts, JobStatus, QueueAdapterOptions, -} from '../@types/app' -import { BaseAdapter } from './base' +} from '../@types/app'; +import { BaseAdapter } from './base'; export class BullAdapter extends BaseAdapter { constructor(public queue: Queue, options: Partial = {}) { - super(options) + super(options); } public getRedisInfo(): Promise { - return this.queue.client.info() + return this.queue.client.info(); } public getName(): string { - return this.queue.name + return this.queue.name; } public clean(jobStatus: JobCleanStatus, graceTimeMs: number): Promise { - return this.queue.clean(graceTimeMs, jobStatus as any) + return this.queue.clean(graceTimeMs, jobStatus as any); } public getJob(id: string): Promise { - return this.queue.getJob(id) + return this.queue.getJob(id); } public getJobs( jobStatuses: JobStatus[], start?: number, - end?: number, + end?: number ): Promise { - return this.queue.getJobs(jobStatuses as any, start, end) + return this.queue.getJobs(jobStatuses as any, start, end); } // eslint-disable-next-line @typescript-eslint/no-unused-vars public getJobCounts(..._jobStatuses: JobStatus[]): Promise { - return (this.queue.getJobCounts() as unknown) as Promise + return (this.queue.getJobCounts() as unknown) as Promise; } public getJobLogs(id: string): Promise { - return this.queue.getJobLogs(id).then(({ logs }) => logs) + return this.queue.getJobLogs(id).then(({ logs }) => logs); } } diff --git a/src/queueAdapters/bullMQ.ts b/src/queueAdapters/bullMQ.ts index 57a5b490..63ceb322 100644 --- a/src/queueAdapters/bullMQ.ts +++ b/src/queueAdapters/bullMQ.ts @@ -1,54 +1,54 @@ -import { Job, Queue } from 'bullmq' +import { Job, Queue } from 'bullmq'; import { JobCleanStatus, JobCounts, JobStatus, QueueAdapterOptions, -} from '../@types/app' -import { BaseAdapter } from './base' +} from '../@types/app'; +import { BaseAdapter } from './base'; export class BullMQAdapter extends BaseAdapter { - private readonly LIMIT = 1000 + private readonly LIMIT = 1000; constructor( private queue: Queue, - options: Partial = {}, + options: Partial = {} ) { - super(options) + super(options); } public async getRedisInfo(): Promise { - const client = await this.queue.client - return client.info() + const client = await this.queue.client; + return client.info(); } public getName(): string { - return this.queue.name + return this.queue.name; } public clean(jobStatus: JobCleanStatus, graceTimeMs: number): Promise { - return this.queue.clean(graceTimeMs, this.LIMIT, jobStatus) + return this.queue.clean(graceTimeMs, this.LIMIT, jobStatus); } public getJob(id: string): Promise { - return this.queue.getJob(id) + return this.queue.getJob(id); } public getJobs( jobStatuses: JobStatus[], start?: number, - end?: number, + end?: number ): Promise { - return this.queue.getJobs(jobStatuses, start, end) + return this.queue.getJobs(jobStatuses, start, end); } public getJobCounts(...jobStatuses: JobStatus[]): Promise { return (this.queue.getJobCounts( - ...jobStatuses, - ) as unknown) as Promise + ...jobStatuses + ) as unknown) as Promise; } public getJobLogs(id: string): Promise { - return this.queue.getJobLogs(id).then(({ logs }) => logs) + return this.queue.getJobLogs(id).then(({ logs }) => logs); } } diff --git a/src/routes/apiRouter.ts b/src/routes/apiRouter.ts index ca1e37be..9d463ab6 100644 --- a/src/routes/apiRouter.ts +++ b/src/routes/apiRouter.ts @@ -1,15 +1,15 @@ -import { Router } from 'express' -import { cleanAll } from './handlers/cleanAll' -import { cleanJob } from './handlers/cleanJob' -import { errorHandler } from './handlers/errorHandler' -import { jobLogs } from './handlers/jobLogs' -import { promoteJob } from './handlers/promoteJob' -import { queuesHandler } from './handlers/queues' -import { retryAll } from './handlers/retryAll' -import { retryJob } from './handlers/retryJob' -import { jobProvider } from './middlewares/jobProvider' -import { queueProvider } from './middlewares/queueProvider' -import { wrapAsync } from './middlewares/wrapAsync' +import { Router } from 'express'; +import { cleanAll } from './handlers/cleanAll'; +import { cleanJob } from './handlers/cleanJob'; +import { errorHandler } from './handlers/errorHandler'; +import { jobLogs } from './handlers/jobLogs'; +import { promoteJob } from './handlers/promoteJob'; +import { queuesHandler } from './handlers/queues'; +import { retryAll } from './handlers/retryAll'; +import { retryJob } from './handlers/retryJob'; +import { jobProvider } from './middlewares/jobProvider'; +import { queueProvider } from './middlewares/queueProvider'; +import { wrapAsync } from './middlewares/wrapAsync'; export const apiRouter = Router() .get('/queues', wrapAsync(queuesHandler)) @@ -17,26 +17,26 @@ export const apiRouter = Router() .put( '/queues/:queueName/:jobId/retry', [queueProvider(), jobProvider()], - wrapAsync(retryJob), + wrapAsync(retryJob) ) .put( '/queues/:queueName/:jobId/clean', [queueProvider(), jobProvider()], - wrapAsync(cleanJob), + wrapAsync(cleanJob) ) .put( '/queues/:queueName/:jobId/promote', [queueProvider(), jobProvider()], - wrapAsync(promoteJob), + wrapAsync(promoteJob) ) .put( '/queues/:queueName/clean/:queueStatus', queueProvider(), - wrapAsync(cleanAll), + wrapAsync(cleanAll) ) .get( '/queues/:queueName/:jobId/logs', [queueProvider({ skipReadOnlyModeCheck: true }), jobProvider()], - wrapAsync(jobLogs), + wrapAsync(jobLogs) ) - .use(errorHandler) + .use(errorHandler); diff --git a/src/routes/entryPoint.ts b/src/routes/entryPoint.ts index d37b583d..03040b53 100644 --- a/src/routes/entryPoint.ts +++ b/src/routes/entryPoint.ts @@ -1,9 +1,9 @@ -import { Request, RequestHandler, Response } from 'express-serve-static-core' +import { Request, RequestHandler, Response } from 'express-serve-static-core'; export const entryPoint: RequestHandler = (req: Request, res: Response) => { - const basePath = (req as any).proxyUrl || req.baseUrl + const basePath = (req as any).proxyUrl || req.baseUrl; res.render('index', { basePath, - }) -} + }); +}; diff --git a/src/routes/handlers/cleanAll.ts b/src/routes/handlers/cleanAll.ts index 98441c30..19a12864 100644 --- a/src/routes/handlers/cleanAll.ts +++ b/src/routes/handlers/cleanAll.ts @@ -1,21 +1,21 @@ -import { Request, RequestHandler, Response } from 'express-serve-static-core' -import { JobCleanStatus } from '../../@types/app' +import { Request, RequestHandler, Response } from 'express-serve-static-core'; +import { JobCleanStatus } from '../../@types/app'; type RequestParams = { - queueName: string - queueStatus: JobCleanStatus -} + queueName: string; + queueStatus: JobCleanStatus; +}; export const cleanAll: RequestHandler = async ( req: Request, - res: Response, + res: Response ) => { - const { queueStatus } = req.params - const { queue } = res.locals + const { queueStatus } = req.params; + const { queue } = res.locals; - const GRACE_TIME_MS = 5000 + const GRACE_TIME_MS = 5000; - await queue.clean(queueStatus as any, GRACE_TIME_MS) + await queue.clean(queueStatus as any, GRACE_TIME_MS); - return res.sendStatus(200) -} + return res.sendStatus(200); +}; diff --git a/src/routes/handlers/cleanJob.ts b/src/routes/handlers/cleanJob.ts index c24040e6..b8e76e1f 100644 --- a/src/routes/handlers/cleanJob.ts +++ b/src/routes/handlers/cleanJob.ts @@ -1,13 +1,13 @@ -import { Request, RequestHandler, Response } from 'express-serve-static-core' -import { QueueJob } from '../../@types/app' +import { Request, RequestHandler, Response } from 'express-serve-static-core'; +import { QueueJob } from '../../@types/app'; export const cleanJob: RequestHandler = async ( _req: Request, - res: Response, + res: Response ) => { - const { job } = res.locals as { job: QueueJob } + const { job } = res.locals as { job: QueueJob }; - await job.remove() + await job.remove(); - return res.sendStatus(204) -} + return res.sendStatus(204); +}; diff --git a/src/routes/handlers/errorHandler.ts b/src/routes/handlers/errorHandler.ts index ad36c9d8..53c8a25c 100644 --- a/src/routes/handlers/errorHandler.ts +++ b/src/routes/handlers/errorHandler.ts @@ -1,15 +1,15 @@ -import { Request, Response } from 'express-serve-static-core' +import { Request, Response } from 'express-serve-static-core'; export function errorHandler( err: Error, _req: Request, res: Response, // eslint-disable-next-line - _next: any, // important argument, don't remove + _next: any // important argument, don't remove ): void { res.status(500).send({ error: 'Queue error', message: err.message, details: err.stack, - }) + }); } diff --git a/src/routes/handlers/jobLogs.ts b/src/routes/handlers/jobLogs.ts index 0b0bc560..11d14f06 100644 --- a/src/routes/handlers/jobLogs.ts +++ b/src/routes/handlers/jobLogs.ts @@ -1,10 +1,10 @@ -import { Request, RequestHandler, Response } from 'express-serve-static-core' +import { Request, RequestHandler, Response } from 'express-serve-static-core'; export const jobLogs: RequestHandler = async (req: Request, res: Response) => { - const { jobId } = req.params - const { queue } = res.locals + const { jobId } = req.params; + const { queue } = res.locals; - const logs = await queue.getJobLogs(jobId) + const logs = await queue.getJobLogs(jobId); - return res.json(logs) -} + return res.json(logs); +}; diff --git a/src/routes/handlers/promoteJob.ts b/src/routes/handlers/promoteJob.ts index 4820a2a4..97cfa288 100644 --- a/src/routes/handlers/promoteJob.ts +++ b/src/routes/handlers/promoteJob.ts @@ -1,13 +1,13 @@ -import { Request, RequestHandler, Response } from 'express-serve-static-core' -import { QueueJob } from '../../@types/app' +import { Request, RequestHandler, Response } from 'express-serve-static-core'; +import { QueueJob } from '../../@types/app'; export const promoteJob: RequestHandler = async ( _req: Request, - res: Response, + res: Response ) => { - const { job } = res.locals as { job: QueueJob } + const { job } = res.locals as { job: QueueJob }; - await job.promote() + await job.promote(); - return res.sendStatus(204) -} + return res.sendStatus(204); +}; diff --git a/src/routes/handlers/queues.ts b/src/routes/handlers/queues.ts index 6bdd2112..ccff0c79 100644 --- a/src/routes/handlers/queues.ts +++ b/src/routes/handlers/queues.ts @@ -1,13 +1,13 @@ -import { Request, RequestHandler, Response } from 'express-serve-static-core' -import { parse as parseRedisInfo } from 'redis-info' +import { Request, RequestHandler, Response } from 'express-serve-static-core'; +import { parse as parseRedisInfo } from 'redis-info'; -import * as api from '../../@types/api' -import * as app from '../../@types/app' -import { BullBoardQueues, JobStatus, QueueJob } from '../../@types/app' -import { BaseAdapter } from '../../queueAdapters/base' -import { Status } from '../../ui/components/constants' +import * as api from '../../@types/api'; +import * as app from '../../@types/app'; +import { BullBoardQueues, JobStatus, QueueJob } from '../../@types/app'; +import { BaseAdapter } from '../../queueAdapters/base'; +import { Status } from '../../ui/components/constants'; -type MetricName = keyof app.ValidMetrics +type MetricName = keyof app.ValidMetrics; const metrics: MetricName[] = [ 'redis_version', @@ -15,28 +15,28 @@ const metrics: MetricName[] = [ 'mem_fragmentation_ratio', 'connected_clients', 'blocked_clients', -] +]; const getStats = async (queue: BaseAdapter): Promise => { - const redisInfoRaw = await queue.getRedisInfo() - const redisInfo = parseRedisInfo(redisInfoRaw) + const redisInfoRaw = await queue.getRedisInfo(); + const redisInfo = parseRedisInfo(redisInfoRaw); const validMetrics = metrics.reduce((acc, metric) => { if (redisInfo[metric]) { - acc[metric] = redisInfo[metric] + acc[metric] = redisInfo[metric]; } - return acc - }, {} as Record) + return acc; + }, {} as Record); validMetrics.total_system_memory = - redisInfo.total_system_memory || redisInfo.maxmemory + redisInfo.total_system_memory || redisInfo.maxmemory; - return validMetrics -} + return validMetrics; +}; const formatJob = (job: QueueJob, queue: BaseAdapter): app.AppJob => { - const jobProps = job.toJSON() + const jobProps = job.toJSON(); return { id: jobProps.id, @@ -52,8 +52,8 @@ const formatJob = (job: QueueJob, queue: BaseAdapter): app.AppJob => { data: queue.format('data', jobProps.data), name: jobProps.name, returnValue: queue.format('returnValue', jobProps.returnvalue), - } -} + }; +}; const statuses: JobStatus[] = [ 'active', @@ -62,53 +62,53 @@ const statuses: JobStatus[] = [ 'failed', 'paused', 'waiting', -] +]; const getDataForQueues = async ( bullBoardQueues: app.BullBoardQueues, - req: Request, + req: Request ): Promise => { - const query = req.query || {} - const pairs = [...bullBoardQueues.entries()] + const query = req.query || {}; + const pairs = [...bullBoardQueues.entries()]; if (pairs.length == 0) { return { stats: {}, queues: [], - } + }; } const queues: app.AppQueue[] = await Promise.all( pairs.map(async ([name, queue]) => { - const counts = await queue.getJobCounts(...statuses) + const counts = await queue.getJobCounts(...statuses); const status = - query[name] === 'latest' ? statuses : (query[name] as JobStatus[]) - const jobs = await queue.getJobs(status, 0, 10) + query[name] === 'latest' ? statuses : (query[name] as JobStatus[]); + const jobs = await queue.getJobs(status, 0, 10); return { name, counts: counts as Record, jobs: jobs.filter(Boolean).map((job) => formatJob(job, queue)), readOnlyMode: queue.readOnlyMode, - } - }), - ) + }; + }) + ); - const stats = await getStats(pairs[0][1]) + const stats = await getStats(pairs[0][1]); return { stats, queues, - } -} + }; +}; export const queuesHandler: RequestHandler = async ( req: Request, - res: Response, + res: Response ) => { const { bullBoardQueues } = req.app.locals as { - bullBoardQueues: BullBoardQueues - } + bullBoardQueues: BullBoardQueues; + }; - res.json(await getDataForQueues(bullBoardQueues, req)) -} + res.json(await getDataForQueues(bullBoardQueues, req)); +}; diff --git a/src/routes/handlers/retryAll.ts b/src/routes/handlers/retryAll.ts index 2e3f38e4..263b5f2d 100644 --- a/src/routes/handlers/retryAll.ts +++ b/src/routes/handlers/retryAll.ts @@ -1,14 +1,14 @@ -import { Request, RequestHandler, Response } from 'express-serve-static-core' -import { BaseAdapter } from '../../queueAdapters/base' +import { Request, RequestHandler, Response } from 'express-serve-static-core'; +import { BaseAdapter } from '../../queueAdapters/base'; export const retryAll: RequestHandler = async ( _req: Request, - res: Response, + res: Response ) => { - const { queue } = res.locals as { queue: BaseAdapter } + const { queue } = res.locals as { queue: BaseAdapter }; - const jobs = await queue.getJobs(['failed']) - await Promise.all(jobs.map((job) => job.retry())) + const jobs = await queue.getJobs(['failed']); + await Promise.all(jobs.map((job) => job.retry())); - return res.sendStatus(200) -} + return res.sendStatus(200); +}; diff --git a/src/routes/handlers/retryJob.ts b/src/routes/handlers/retryJob.ts index ed384bb3..d8148027 100644 --- a/src/routes/handlers/retryJob.ts +++ b/src/routes/handlers/retryJob.ts @@ -1,13 +1,13 @@ -import { Request, RequestHandler, Response } from 'express-serve-static-core' -import { QueueJob } from '../../@types/app' +import { Request, RequestHandler, Response } from 'express-serve-static-core'; +import { QueueJob } from '../../@types/app'; export const retryJob: RequestHandler = async ( _req: Request, - res: Response, + res: Response ) => { - const { job } = res.locals as { job: QueueJob } + const { job } = res.locals as { job: QueueJob }; - await job.retry() + await job.retry(); - return res.sendStatus(204) -} + return res.sendStatus(204); +}; diff --git a/src/routes/middlewares/jobProvider.ts b/src/routes/middlewares/jobProvider.ts index 9393efd3..a2bb3bc0 100644 --- a/src/routes/middlewares/jobProvider.ts +++ b/src/routes/middlewares/jobProvider.ts @@ -1,25 +1,25 @@ -import { NextFunction, Request, Response } from 'express-serve-static-core' -import { BaseAdapter } from '../../queueAdapters/base' +import { NextFunction, Request, Response } from 'express-serve-static-core'; +import { BaseAdapter } from '../../queueAdapters/base'; export function jobProvider() { return async (req: Request, res: Response, next: NextFunction) => { - const { jobId } = req.params - const { queue } = res.locals as { queue: BaseAdapter } + const { jobId } = req.params; + const { queue } = res.locals as { queue: BaseAdapter }; if (!jobId || !queue) { - return next(new Error('Invalid data')) + return next(new Error('Invalid data')); } - const job = await queue.getJob(jobId) + const job = await queue.getJob(jobId); if (!job) { return res.status(404).send({ error: 'Job not found', - }) + }); } - res.locals.job = job + res.locals.job = job; - next() - } + next(); + }; } diff --git a/src/routes/middlewares/queueProvider.ts b/src/routes/middlewares/queueProvider.ts index fecd3477..8233bea0 100644 --- a/src/routes/middlewares/queueProvider.ts +++ b/src/routes/middlewares/queueProvider.ts @@ -1,33 +1,33 @@ -import { NextFunction, Request, Response } from 'express-serve-static-core' -import { BullBoardQueues } from '../../@types/app' +import { NextFunction, Request, Response } from 'express-serve-static-core'; +import { BullBoardQueues } from '../../@types/app'; export function queueProvider({ skipReadOnlyModeCheck = false, }: { - skipReadOnlyModeCheck?: boolean + skipReadOnlyModeCheck?: boolean; } = {}) { return async (req: Request, res: Response, next: NextFunction) => { - const { queueName } = req.params + const { queueName } = req.params; if (typeof queueName === 'undefined') { - return next() + return next(); } const { bullBoardQueues } = req.app.locals as { - bullBoardQueues: BullBoardQueues - } + bullBoardQueues: BullBoardQueues; + }; - const queue = bullBoardQueues.get(queueName) + const queue = bullBoardQueues.get(queueName); if (!queue) { - return res.status(404).send({ error: 'Queue not found' }) + return res.status(404).send({ error: 'Queue not found' }); } else if (queue.readOnlyMode && !skipReadOnlyModeCheck) { return res.status(405).send({ error: 'Method not allowed on read only queue', - }) + }); } - res.locals.queue = queue + res.locals.queue = queue; - next() - } + next(); + }; } diff --git a/src/routes/middlewares/wrapAsync.ts b/src/routes/middlewares/wrapAsync.ts index e88ea8fc..c27093dd 100644 --- a/src/routes/middlewares/wrapAsync.ts +++ b/src/routes/middlewares/wrapAsync.ts @@ -1,6 +1,6 @@ -import { ParamsDictionary, RequestHandler } from 'express-serve-static-core' +import { ParamsDictionary, RequestHandler } from 'express-serve-static-core'; export const wrapAsync = ( - fn: RequestHandler, + fn: RequestHandler ): RequestHandler => async (req, res, next) => - Promise.resolve(fn(req, res, next)).catch(next) + Promise.resolve(fn(req, res, next)).catch(next); diff --git a/src/ui/components/App.tsx b/src/ui/components/App.tsx index 3d27d042..a2cca449 100644 --- a/src/ui/components/App.tsx +++ b/src/ui/components/App.tsx @@ -1,17 +1,17 @@ -import React from 'react' -import { Redirect, Route, Switch } from 'react-router-dom' -import { ToastContainer } from 'react-toastify' -import { useScrollTopOnNav } from '../hooks/useScrollTopOnNav' -import { useStore } from '../hooks/useStore' -import { Api } from '../services/Api' -import { Header } from './Header/Header' -import { Menu } from './Menu/Menu' -import { QueuePage } from './QueuePage/QueuePage' -import { RedisStats } from './RedisStats/RedisStats' +import React from 'react'; +import { Redirect, Route, Switch } from 'react-router-dom'; +import { ToastContainer } from 'react-toastify'; +import { useScrollTopOnNav } from '../hooks/useScrollTopOnNav'; +import { useStore } from '../hooks/useStore'; +import { Api } from '../services/Api'; +import { Header } from './Header/Header'; +import { Menu } from './Menu/Menu'; +import { QueuePage } from './QueuePage/QueuePage'; +import { RedisStats } from './RedisStats/RedisStats'; export const App = ({ api }: { api: Api }) => { - useScrollTopOnNav() - const { state, actions, selectedStatuses } = useStore(api) + useScrollTopOnNav(); + const { state, actions, selectedStatuses } = useStore(api); return ( <> @@ -27,10 +27,10 @@ export const App = ({ api }: { api: Api }) => { { - const currentQueueName = decodeURIComponent(params.name) + const currentQueueName = decodeURIComponent(params.name); const queue = state.data?.queues.find( - (q) => q.name === currentQueueName, - ) + (q) => q.name === currentQueueName + ); return ( { actions={actions} selectedStatus={selectedStatuses} /> - ) + ); }} /> @@ -48,7 +48,7 @@ export const App = ({ api }: { api: Api }) => { state.data.queues.length > 0 && ( )} @@ -63,5 +63,5 @@ export const App = ({ api }: { api: Api }) => { /> - ) -} + ); +}; diff --git a/src/ui/components/Header/Header.module.css b/src/ui/components/Header/Header.module.css index 3122d1de..18287de6 100644 --- a/src/ui/components/Header/Header.module.css +++ b/src/ui/components/Header/Header.module.css @@ -1,36 +1,36 @@ .header { - z-index: 99; - position: fixed; - top: 0; - left: 0; - width: 100%; - background: white; - transition: box-shadow 0.5s ease-in-out; - display: flex; - align-items: center; - justify-content: space-between; - height: var(--header-height); - box-sizing: border-box; - border-bottom: 1px solid #e6e7e8; + z-index: 99; + position: fixed; + top: 0; + left: 0; + width: 100%; + background: white; + transition: box-shadow 0.5s ease-in-out; + display: flex; + align-items: center; + justify-content: space-between; + height: var(--header-height); + box-sizing: border-box; + border-bottom: 1px solid #e6e7e8; } .header > .logo { - width: var(--menu-width); - flex-basis: var(--menu-width); - flex-shrink: 0; - white-space: nowrap; - text-align: center; - font-size: 1.728rem; - height: inherit; - line-height: var(--header-height); - background-color: hsl(217, 22%, 24%); - color: #f5f8fa; - border-bottom: 1px solid rgba(0, 0, 0, 0.4); - box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.1); - z-index: 2; - box-sizing: content-box; + width: var(--menu-width); + flex-basis: var(--menu-width); + flex-shrink: 0; + white-space: nowrap; + text-align: center; + font-size: 1.728rem; + height: inherit; + line-height: var(--header-height); + background-color: hsl(217, 22%, 24%); + color: #f5f8fa; + border-bottom: 1px solid rgba(0, 0, 0, 0.4); + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.1); + z-index: 2; + box-sizing: content-box; } .header + main { - padding-top: var(--header-height); + padding-top: var(--header-height); } diff --git a/src/ui/components/Header/Header.tsx b/src/ui/components/Header/Header.tsx index be11405f..56adcac7 100644 --- a/src/ui/components/Header/Header.tsx +++ b/src/ui/components/Header/Header.tsx @@ -1,5 +1,5 @@ -import React, { PropsWithChildren } from 'react' -import s from './Header.module.css' +import React, { PropsWithChildren } from 'react'; +import s from './Header.module.css'; export const Header = ({ children }: PropsWithChildren) => { return ( @@ -7,5 +7,5 @@ export const Header = ({ children }: PropsWithChildren) => {
🎯 Bull Dashboard
{children} - ) -} + ); +}; diff --git a/src/ui/components/Highlight/Highlight.tsx b/src/ui/components/Highlight/Highlight.tsx index f1c3c1d5..63af2d4a 100644 --- a/src/ui/components/Highlight/Highlight.tsx +++ b/src/ui/components/Highlight/Highlight.tsx @@ -1,22 +1,22 @@ // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore -import hljs from 'highlight.js/lib/core' +import hljs from 'highlight.js/lib/core'; // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-ignore -import json from 'highlight.js/lib/languages/json' -import React from 'react' -import { stacktraceJS } from './languages/stacktrace' +import json from 'highlight.js/lib/languages/json'; +import React from 'react'; +import { stacktraceJS } from './languages/stacktrace'; -hljs.registerLanguage('json', json) -hljs.registerLanguage('stacktrace', stacktraceJS) +hljs.registerLanguage('json', json); +hljs.registerLanguage('stacktrace', stacktraceJS); interface HighlightProps { - language: 'json' | 'stacktrace' - children: string | null + language: 'json' | 'stacktrace'; + children: string | null; } export class Highlight extends React.Component { - private codeRef = React.createRef() + private codeRef = React.createRef(); public shouldComponentUpdate(nextProps: Readonly) { return ( @@ -24,34 +24,34 @@ export class Highlight extends React.Component { (Array.isArray(this.props.children) ? this.props.children.some( (item: any) => - !([] as any).concat(nextProps.children).includes(item), + !([] as any).concat(nextProps.children).includes(item) ) : nextProps.children !== this.props.children) - ) + ); } public componentDidMount() { - this.highlightCode() + this.highlightCode(); } public componentDidUpdate() { - this.highlightCode() + this.highlightCode(); } public render() { - const { language } = this.props + const { language } = this.props; return (
         
       
- ) + ); } private highlightCode() { - const node = this.codeRef.current?.querySelector('code') + const node = this.codeRef.current?.querySelector('code'); if (node) { - node.textContent = this.props.children - hljs.highlightElement(node) + node.textContent = this.props.children; + hljs.highlightElement(node); } } } diff --git a/src/ui/components/Highlight/languages/stacktrace.ts b/src/ui/components/Highlight/languages/stacktrace.ts index 6fa209c2..60d2af77 100644 --- a/src/ui/components/Highlight/languages/stacktrace.ts +++ b/src/ui/components/Highlight/languages/stacktrace.ts @@ -18,13 +18,13 @@ export function stacktraceJS(): any { endsWithParent: true, }, ], - } + }; const LINE_NUMBER = { className: 'number', begin: ':\\d+:\\d+', relevance: 5, - } + }; const TRACE_LINE = { className: 'trace-line', @@ -41,10 +41,10 @@ export function stacktraceJS(): any { contains: [LINE_NUMBER], }, ], - } + }; return { case_insensitive: true, contains: [ERROR, TRACE_LINE, LINE_NUMBER], - } + }; } diff --git a/src/ui/components/Icons/Promote.tsx b/src/ui/components/Icons/Promote.tsx index 5622ca44..807feed3 100644 --- a/src/ui/components/Icons/Promote.tsx +++ b/src/ui/components/Icons/Promote.tsx @@ -1,7 +1,7 @@ -import React from 'react' +import React from 'react'; export const PromoteIcon = () => ( -) +); diff --git a/src/ui/components/Icons/Retry.tsx b/src/ui/components/Icons/Retry.tsx index fbc959be..8bb5e2ea 100644 --- a/src/ui/components/Icons/Retry.tsx +++ b/src/ui/components/Icons/Retry.tsx @@ -1,7 +1,7 @@ -import React from 'react' +import React from 'react'; export const RetryIcon = () => ( -) +); diff --git a/src/ui/components/Icons/Trash.tsx b/src/ui/components/Icons/Trash.tsx index 0cac476f..84b69f37 100644 --- a/src/ui/components/Icons/Trash.tsx +++ b/src/ui/components/Icons/Trash.tsx @@ -1,7 +1,7 @@ -import React from 'react' +import React from 'react'; export const TrashIcon = () => ( -) +); diff --git a/src/ui/components/JobCard/Button/Button.module.css b/src/ui/components/JobCard/Button/Button.module.css index be36676d..04608df0 100644 --- a/src/ui/components/JobCard/Button/Button.module.css +++ b/src/ui/components/JobCard/Button/Button.module.css @@ -1,33 +1,33 @@ .button { - font-size: 1rem; - background: none; - border: none; - border-radius: 0.28571429rem; - cursor: pointer; - outline: none; - white-space: nowrap; - padding: 0.65em 0.92857143em; - color: inherit; + font-size: 1rem; + background: none; + border: none; + border-radius: 0.28571429rem; + cursor: pointer; + outline: none; + white-space: nowrap; + padding: 0.65em 0.92857143em; + color: inherit; } .button > svg { - width: 1.25em; - vertical-align: middle; - display: inline-block; - fill: #718096; + width: 1.25em; + vertical-align: middle; + display: inline-block; + fill: #718096; } .button:hover, .button:focus { - background-color: #e2e8f0; + background-color: #e2e8f0; } .button:active, .button.isActive { - background-color: #cbd5e0; + background-color: #cbd5e0; } .button:hover > svg, .button:focus > svg { - fill: #718096; + fill: #718096; } diff --git a/src/ui/components/JobCard/Button/Button.tsx b/src/ui/components/JobCard/Button/Button.tsx index e9bf5401..b83189dd 100644 --- a/src/ui/components/JobCard/Button/Button.tsx +++ b/src/ui/components/JobCard/Button/Button.tsx @@ -1,6 +1,6 @@ -import React from 'react' -import s from './Button.module.css' -import cn from 'clsx' +import React from 'react'; +import s from './Button.module.css'; +import cn from 'clsx'; export const Button = ({ children, @@ -10,7 +10,9 @@ export const Button = ({ }: React.DetailedHTMLProps< React.ButtonHTMLAttributes, HTMLButtonElement -> & { isActive?: boolean }) => ( +> & { + isActive?: boolean; +}) => ( -) +); diff --git a/src/ui/components/JobCard/Details/Details.module.css b/src/ui/components/JobCard/Details/Details.module.css index 6b4d71ea..1cf16c2e 100644 --- a/src/ui/components/JobCard/Details/Details.module.css +++ b/src/ui/components/JobCard/Details/Details.module.css @@ -1,87 +1,87 @@ .details { - height: 100%; - display: flex; - flex-direction: column; + height: 100%; + display: flex; + flex-direction: column; } .tabActions { - list-style: none; - padding: 0; - margin: 1rem 0 2rem; - display: flex; + list-style: none; + padding: 0; + margin: 1rem 0 2rem; + display: flex; } .tabActions li + li { - margin-left: 0.75rem; + margin-left: 0.75rem; } .tabContent { - flex: 1; - max-width: calc(100% - 80px); - position: relative; - overflow: hidden; + flex: 1; + max-width: calc(100% - 80px); + position: relative; + overflow: hidden; } .tabContent:before { - content: ''; - position: absolute; - right: 0; - top: 0; - bottom: 0; - width: 2rem; - background: linear-gradient( - 270deg, - hsl(0, 0%, 100%) 0%, - hsla(0, 0%, 100%, 0.738) 19%, - hsla(0, 0%, 100%, 0.541) 34%, - hsla(0, 0%, 100%, 0.382) 47%, - hsla(0, 0%, 100%, 0.278) 56.5%, - hsla(0, 0%, 100%, 0.194) 65%, - hsla(0, 0%, 100%, 0.126) 73%, - hsla(0, 0%, 100%, 0.075) 80.2%, - hsla(0, 0%, 100%, 0.042) 86.1%, - hsla(0, 0%, 100%, 0.021) 91%, - hsla(0, 0%, 100%, 0.008) 95.2%, - hsla(0, 0%, 100%, 0.002) 98.2%, - hsla(0, 0%, 100%, 0) 100% - ); + content: ''; + position: absolute; + right: 0; + top: 0; + bottom: 0; + width: 2rem; + background: linear-gradient( + 270deg, + hsl(0, 0%, 100%) 0%, + hsla(0, 0%, 100%, 0.738) 19%, + hsla(0, 0%, 100%, 0.541) 34%, + hsla(0, 0%, 100%, 0.382) 47%, + hsla(0, 0%, 100%, 0.278) 56.5%, + hsla(0, 0%, 100%, 0.194) 65%, + hsla(0, 0%, 100%, 0.126) 73%, + hsla(0, 0%, 100%, 0.075) 80.2%, + hsla(0, 0%, 100%, 0.042) 86.1%, + hsla(0, 0%, 100%, 0.021) 91%, + hsla(0, 0%, 100%, 0.008) 95.2%, + hsla(0, 0%, 100%, 0.002) 98.2%, + hsla(0, 0%, 100%, 0) 100% + ); } .tabContent:after { - content: ''; - position: absolute; - right: 0; - left: 0; - bottom: 0; - height: 2rem; - background: linear-gradient( - 0deg, - hsl(0, 0%, 100%) 0%, - hsla(0, 0%, 100%, 0.738) 19%, - hsla(0, 0%, 100%, 0.541) 34%, - hsla(0, 0%, 100%, 0.382) 47%, - hsla(0, 0%, 100%, 0.278) 56.5%, - hsla(0, 0%, 100%, 0.194) 65%, - hsla(0, 0%, 100%, 0.126) 73%, - hsla(0, 0%, 100%, 0.075) 80.2%, - hsla(0, 0%, 100%, 0.042) 86.1%, - hsla(0, 0%, 100%, 0.021) 91%, - hsla(0, 0%, 100%, 0.008) 95.2%, - hsla(0, 0%, 100%, 0.002) 98.2%, - hsla(0, 0%, 100%, 0) 100% - ); + content: ''; + position: absolute; + right: 0; + left: 0; + bottom: 0; + height: 2rem; + background: linear-gradient( + 0deg, + hsl(0, 0%, 100%) 0%, + hsla(0, 0%, 100%, 0.738) 19%, + hsla(0, 0%, 100%, 0.541) 34%, + hsla(0, 0%, 100%, 0.382) 47%, + hsla(0, 0%, 100%, 0.278) 56.5%, + hsla(0, 0%, 100%, 0.194) 65%, + hsla(0, 0%, 100%, 0.126) 73%, + hsla(0, 0%, 100%, 0.075) 80.2%, + hsla(0, 0%, 100%, 0.042) 86.1%, + hsla(0, 0%, 100%, 0.021) 91%, + hsla(0, 0%, 100%, 0.008) 95.2%, + hsla(0, 0%, 100%, 0.002) 98.2%, + hsla(0, 0%, 100%, 0) 100% + ); } .tabContent > div { - overflow: auto; - padding-bottom: 2rem; - height: 100%; + overflow: auto; + padding-bottom: 2rem; + height: 100%; } .tabContent :global(.error) { - color: #d73a49; + color: #d73a49; } .tabContent pre { - margin: 0; + margin: 0; } diff --git a/src/ui/components/JobCard/Details/Details.tsx b/src/ui/components/JobCard/Details/Details.tsx index ccc242ec..a241cf49 100644 --- a/src/ui/components/JobCard/Details/Details.tsx +++ b/src/ui/components/JobCard/Details/Details.tsx @@ -1,22 +1,22 @@ -import React from 'react' -import { AppJob } from '../../../../@types/app' -import { useDetailsTabs } from '../../../hooks/useDetailsTabs' -import { Status } from '../../constants' -import { Button } from '../Button/Button' -import s from './Details.module.css' -import { DetailsContent } from './DetailsContent/DetailsContent' +import React from 'react'; +import { AppJob } from '../../../../@types/app'; +import { useDetailsTabs } from '../../../hooks/useDetailsTabs'; +import { Status } from '../../constants'; +import { Button } from '../Button/Button'; +import s from './Details.module.css'; +import { DetailsContent } from './DetailsContent/DetailsContent'; interface DetailsProps { - job: AppJob - status: Status - actions: { getJobLogs: () => Promise } + job: AppJob; + status: Status; + actions: { getJobLogs: () => Promise }; } export const Details = ({ status, job, actions }: DetailsProps) => { - const { tabs, selectedTab } = useDetailsTabs(status) + const { tabs, selectedTab } = useDetailsTabs(status); if (tabs.length === 0) { - return null + return null; } return ( @@ -40,5 +40,5 @@ export const Details = ({ status, job, actions }: DetailsProps) => { - ) -} + ); +}; diff --git a/src/ui/components/JobCard/Details/DetailsContent/DetailsContent.tsx b/src/ui/components/JobCard/Details/DetailsContent/DetailsContent.tsx index 91fccc5d..35d32ea8 100644 --- a/src/ui/components/JobCard/Details/DetailsContent/DetailsContent.tsx +++ b/src/ui/components/JobCard/Details/DetailsContent/DetailsContent.tsx @@ -1,15 +1,15 @@ -import React from 'react' -import { AppJob } from '../../../../../@types/app' -import { TabsType } from '../../../../hooks/useDetailsTabs' -import { Highlight } from '../../../Highlight/Highlight' -import { JobLogs } from './JobLogs/JobLogs' +import React from 'react'; +import { AppJob } from '../../../../../@types/app'; +import { TabsType } from '../../../../hooks/useDetailsTabs'; +import { Highlight } from '../../../Highlight/Highlight'; +import { JobLogs } from './JobLogs/JobLogs'; interface DetailsContentProps { - job: AppJob - selectedTab: TabsType + job: AppJob; + selectedTab: TabsType; actions: { - getJobLogs: () => Promise - } + getJobLogs: () => Promise; + }; } export const DetailsContent = ({ @@ -23,11 +23,11 @@ export const DetailsContent = ({ {JSON.stringify({ data, returnValue }, null, 2)} - ) + ); case 'Options': return ( {JSON.stringify(opts, null, 2)} - ) + ); case 'Error': return ( <> @@ -39,10 +39,10 @@ export const DetailsContent = ({ )} - ) + ); case 'Logs': - return + return ; default: - return null + return null; } -} +}; diff --git a/src/ui/components/JobCard/Details/DetailsContent/JobLogs/JobLogs.tsx b/src/ui/components/JobCard/Details/DetailsContent/JobLogs/JobLogs.tsx index 60aac663..a4811298 100644 --- a/src/ui/components/JobCard/Details/DetailsContent/JobLogs/JobLogs.tsx +++ b/src/ui/components/JobCard/Details/DetailsContent/JobLogs/JobLogs.tsx @@ -1,25 +1,25 @@ -import React, { useEffect, useState } from 'react' -import s from './JobLogs.module.css' +import React, { useEffect, useState } from 'react'; +import s from './JobLogs.module.css'; interface JobLogsProps { actions: { - getJobLogs: () => Promise - } + getJobLogs: () => Promise; + }; } export const JobLogs = ({ actions }: JobLogsProps) => { - const [logs, setLogs] = useState([]) + const [logs, setLogs] = useState([]); useEffect(() => { - let mounted = true - actions.getJobLogs().then((logs) => mounted && setLogs(logs)) + let mounted = true; + actions.getJobLogs().then((logs) => mounted && setLogs(logs)); return () => { - mounted = false - } - }, []) + mounted = false; + }; + }, []); if (!Array.isArray(logs) || !logs.length) { - return null + return null; } return ( @@ -28,5 +28,5 @@ export const JobLogs = ({ actions }: JobLogsProps) => {
  • {log}
  • ))} - ) -} + ); +}; diff --git a/src/ui/components/JobCard/JobActions/JobActions.module.css b/src/ui/components/JobCard/JobActions/JobActions.module.css index a80ac484..0825e0ae 100644 --- a/src/ui/components/JobCard/JobActions/JobActions.module.css +++ b/src/ui/components/JobCard/JobActions/JobActions.module.css @@ -1,14 +1,14 @@ .jobActions { - list-style: none; - margin: 0; - padding: 0; - display: flex; + list-style: none; + margin: 0; + padding: 0; + display: flex; } .jobActions li + li { - margin-left: 0.5rem; + margin-left: 0.5rem; } .jobActions .button { - padding: 0.5rem; + padding: 0.5rem; } diff --git a/src/ui/components/JobCard/JobActions/JobActions.tsx b/src/ui/components/JobCard/JobActions/JobActions.tsx index 3883cdfd..9fa70820 100644 --- a/src/ui/components/JobCard/JobActions/JobActions.tsx +++ b/src/ui/components/JobCard/JobActions/JobActions.tsx @@ -1,44 +1,44 @@ -import React from 'react' -import { Status, STATUSES } from '../../constants' -import { PromoteIcon } from '../../Icons/Promote' -import { RetryIcon } from '../../Icons/Retry' -import { TrashIcon } from '../../Icons/Trash' -import { Tooltip } from '../../Tooltip/Tooltip' -import { Button } from '../Button/Button' -import s from './JobActions.module.css' +import React from 'react'; +import { Status, STATUSES } from '../../constants'; +import { PromoteIcon } from '../../Icons/Promote'; +import { RetryIcon } from '../../Icons/Retry'; +import { TrashIcon } from '../../Icons/Trash'; +import { Tooltip } from '../../Tooltip/Tooltip'; +import { Button } from '../Button/Button'; +import s from './JobActions.module.css'; interface JobActionsProps { - status: Status + status: Status; actions: { - promoteJob: () => Promise - retryJob: () => Promise - cleanJob: () => Promise - } + promoteJob: () => Promise; + retryJob: () => Promise; + cleanJob: () => Promise; + }; } interface ButtonType { - title: string - Icon: React.ElementType - actionKey: 'promoteJob' | 'cleanJob' | 'retryJob' + title: string; + Icon: React.ElementType; + actionKey: 'promoteJob' | 'cleanJob' | 'retryJob'; } const buttonTypes: Record = { promote: { title: 'Promote', Icon: PromoteIcon, actionKey: 'promoteJob' }, clean: { title: 'Clean', Icon: TrashIcon, actionKey: 'cleanJob' }, retry: { title: 'Retry', Icon: RetryIcon, actionKey: 'retryJob' }, -} +}; const statusToButtonsMap: Record = { [STATUSES.failed]: [buttonTypes.retry, buttonTypes.clean], [STATUSES.delayed]: [buttonTypes.promote, buttonTypes.clean], [STATUSES.completed]: [buttonTypes.clean], [STATUSES.waiting]: [buttonTypes.clean], -} +}; export const JobActions = ({ actions, status }: JobActionsProps) => { - const buttons = statusToButtonsMap[status] + const buttons = statusToButtonsMap[status]; if (!buttons) { - return null + return null; } return (
      @@ -52,5 +52,5 @@ export const JobActions = ({ actions, status }: JobActionsProps) => { ))}
    - ) -} + ); +}; diff --git a/src/ui/components/JobCard/JobCard.module.css b/src/ui/components/JobCard/JobCard.module.css index baae326a..555b5d03 100644 --- a/src/ui/components/JobCard/JobCard.module.css +++ b/src/ui/components/JobCard/JobCard.module.css @@ -1,70 +1,70 @@ .card { - background-color: #fff; - box-shadow: 0 1px 1px 0 rgba(60, 75, 100, 0.14), - 0 2px 1px -1px rgba(60, 75, 100, 0.12), 0 1px 3px 0 rgba(60, 75, 100, 0.2); - border-radius: 0.25rem; - padding: 1em; - display: flex; - min-height: 320px; - max-height: 370px; + background-color: #fff; + box-shadow: 0 1px 1px 0 rgba(60, 75, 100, 0.14), 0 2px 1px -1px rgba(60, 75, 100, 0.12), + 0 1px 3px 0 rgba(60, 75, 100, 0.2); + border-radius: 0.25rem; + padding: 1em; + display: flex; + min-height: 320px; + max-height: 370px; } .card + .card { - margin-top: 2rem; + margin-top: 2rem; } .contentWrapper { - flex: 1; - display: flex; - flex-direction: column; + flex: 1; + display: flex; + flex-direction: column; } .title { - display: flex; - justify-content: space-between; + display: flex; + justify-content: space-between; } .title h4, .sideInfo span { - font-size: 1.44rem; - font-weight: 300; - color: #4a5568; - line-height: 1; + font-size: 1.44rem; + font-weight: 300; + color: #4a5568; + line-height: 1; } .title h4 span { - margin-left: 1.5rem; - color: #a0aec0; - font-size: 0.694em; + margin-left: 1.5rem; + color: #a0aec0; + font-size: 0.694em; } .sideInfo { - width: 200px; - padding-right: 2rem; - display: flex; - flex-direction: column; - text-align: right; - color: #cbd5e0; - flex-shrink: 0; + width: 200px; + padding-right: 2rem; + display: flex; + flex-direction: column; + text-align: right; + color: #cbd5e0; + flex-shrink: 0; } .sideInfo span { - display: block; - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - color: #cbd5e0; - padding-right: 1rem; + display: block; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + color: #cbd5e0; + padding-right: 1rem; } .content { - position: relative; - flex: 1; - overflow: hidden; + position: relative; + flex: 1; + overflow: hidden; } .content .progress { - position: absolute; - bottom: 0; - right: 0; + position: absolute; + bottom: 0; + right: 0; } diff --git a/src/ui/components/JobCard/JobCard.tsx b/src/ui/components/JobCard/JobCard.tsx index a6fad82d..3676cacc 100644 --- a/src/ui/components/JobCard/JobCard.tsx +++ b/src/ui/components/JobCard/JobCard.tsx @@ -1,22 +1,22 @@ -import React from 'react' -import { AppJob } from '../../../@types/app' -import { Status } from '../constants' -import { Details } from './Details/Details' -import { JobActions } from './JobActions/JobActions' -import s from './JobCard.module.css' -import { Progress } from './Progress/Progress' -import { Timeline } from './Timeline/Timeline' +import React from 'react'; +import { AppJob } from '../../../@types/app'; +import { Status } from '../constants'; +import { Details } from './Details/Details'; +import { JobActions } from './JobActions/JobActions'; +import s from './JobCard.module.css'; +import { Progress } from './Progress/Progress'; +import { Timeline } from './Timeline/Timeline'; interface JobCardProps { - job: AppJob - status: Status - readOnlyMode: boolean + job: AppJob; + status: Status; + readOnlyMode: boolean; actions: { - promoteJob: () => Promise - retryJob: () => Promise - cleanJob: () => Promise - getJobLogs: () => Promise - } + promoteJob: () => Promise; + retryJob: () => Promise; + cleanJob: () => Promise; + getJobLogs: () => Promise; + }; } export const JobCard = ({ @@ -50,4 +50,4 @@ export const JobCard = ({ -) +); diff --git a/src/ui/components/JobCard/Progress/Progress.module.css b/src/ui/components/JobCard/Progress/Progress.module.css index 532930a5..8252dc3a 100644 --- a/src/ui/components/JobCard/Progress/Progress.module.css +++ b/src/ui/components/JobCard/Progress/Progress.module.css @@ -1,16 +1,16 @@ .progress { - width: 80px; - height: 80px; + width: 80px; + height: 80px; } .progress circle { - transform-origin: center; - transition: stroke-dashoffset 500ms ease-in-out; + transform-origin: center; + transition: stroke-dashoffset 500ms ease-in-out; } .progress text { - font-size: 2.5rem; - font-family: inherit; - font-weight: 300; - fill: #a0aec0; + font-size: 2.5rem; + font-family: inherit; + font-weight: 300; + fill: #a0aec0; } diff --git a/src/ui/components/JobCard/Progress/Progress.tsx b/src/ui/components/JobCard/Progress/Progress.tsx index c4334845..aabc7eec 100644 --- a/src/ui/components/JobCard/Progress/Progress.tsx +++ b/src/ui/components/JobCard/Progress/Progress.tsx @@ -1,16 +1,16 @@ -import React from 'react' -import { Status } from '../../constants' -import s from './Progress.module.css' -import cn from 'clsx' +import React from 'react'; +import { Status } from '../../constants'; +import s from './Progress.module.css'; +import cn from 'clsx'; export const Progress = ({ percentage, status, className, }: { - percentage: number - status: Status - className?: string + percentage: number; + status: Status; + className?: string; }) => { return ( @@ -40,5 +40,5 @@ export const Progress = ({ {percentage}% - ) -} + ); +}; diff --git a/src/ui/components/JobCard/Timeline/Timeline.module.css b/src/ui/components/JobCard/Timeline/Timeline.module.css index 5d7bf227..6e467554 100644 --- a/src/ui/components/JobCard/Timeline/Timeline.module.css +++ b/src/ui/components/JobCard/Timeline/Timeline.module.css @@ -1,53 +1,52 @@ .timeline { - padding: 1.5rem 1rem 1.5rem 0; - margin: 0; - list-style: none; - border: 0; - border-right-width: 2px; - border-right-style: solid; - border-image: linear-gradient(to bottom, #fff, #e2e8f0 10%, #e2e8f0 90%, #fff) - 1 100%; - color: #a0aec0; - font-weight: 300; - height: 100%; + padding: 1.5rem 1rem 1.5rem 0; + margin: 0; + list-style: none; + border: 0; + border-right-width: 2px; + border-right-style: solid; + border-image: linear-gradient(to bottom, #fff, #e2e8f0 10%, #e2e8f0 90%, #fff) 1 100%; + color: #a0aec0; + font-weight: 300; + height: 100%; } .timeline li { - display: block; + display: block; } .timeline li + li { - margin-top: 1.5rem; + margin-top: 1.5rem; } .timeline li > time { - position: relative; - color: #718096; + position: relative; + color: #718096; } .timeline li > time:before { - content: ''; - width: 0.5rem; - height: 0.5rem; - position: absolute; - right: -1.5rem; - top: 50%; - margin-top: -0.5rem; - background-color: #cbd5e0; - border-radius: 100%; - border: 3px solid #fff; + content: ''; + width: 0.5rem; + height: 0.5rem; + position: absolute; + right: -1.5rem; + top: 50%; + margin-top: -0.5rem; + background-color: #cbd5e0; + border-radius: 100%; + border: 3px solid #fff; } .timeline li > small { - display: block; - line-height: 1; + display: block; + line-height: 1; } .timeline li > small + small { - margin-top: 1.5rem; + margin-top: 1.5rem; } .timelineWrapper { - position: relative; - flex: 1; + position: relative; + flex: 1; } diff --git a/src/ui/components/JobCard/Timeline/Timeline.tsx b/src/ui/components/JobCard/Timeline/Timeline.tsx index 42dbf2dc..940a33e5 100644 --- a/src/ui/components/JobCard/Timeline/Timeline.tsx +++ b/src/ui/components/JobCard/Timeline/Timeline.tsx @@ -1,27 +1,27 @@ -import { format, formatDistance, getYear, isToday } from 'date-fns' -import React from 'react' -import { AppJob } from '../../../../@types/app' -import { Status } from '../../constants' -import s from './Timeline.module.css' +import { format, formatDistance, getYear, isToday } from 'date-fns'; +import React from 'react'; +import { AppJob } from '../../../../@types/app'; +import { Status } from '../../constants'; +import s from './Timeline.module.css'; -type TimeStamp = number | Date +type TimeStamp = number | Date; const formatDate = (ts: TimeStamp) => { if (isToday(ts)) { - return format(ts, 'HH:mm:ss') + return format(ts, 'HH:mm:ss'); } return getYear(ts) === getYear(new Date()) ? format(ts, 'MM/dd HH:mm:ss') - : format(ts, 'MM/dd/yyyy HH:mm:ss') -} + : format(ts, 'MM/dd/yyyy HH:mm:ss'); +}; export const Timeline = function Timeline({ job, status, }: { - job: AppJob - status: Status + job: AppJob; + status: Status; }) { return (
    @@ -37,7 +37,9 @@ export const Timeline = function Timeline({ {formatDistance( job.timestamp || 0, (job.timestamp || 0) + job.delay, - { includeSeconds: true }, + { + includeSeconds: true, + } )} @@ -67,5 +69,5 @@ export const Timeline = function Timeline({ )}
    - ) -} + ); +}; diff --git a/src/ui/components/Menu/Menu.module.css b/src/ui/components/Menu/Menu.module.css index d07e9c62..4a379d24 100644 --- a/src/ui/components/Menu/Menu.module.css +++ b/src/ui/components/Menu/Menu.module.css @@ -1,65 +1,65 @@ .aside { - position: fixed; - z-index: 99; - top: var(--header-height); - left: 0; - bottom: 0; - width: var(--menu-width); - background: linear-gradient( - to bottom, - hsl(217, 22%, 20%), - hsl(217, 22%, 16%) 80%, - hsl(217, 22%, 12%) - ); - padding-top: 1rem; - color: #d5d9dc; - display: flex; - flex-direction: column; - box-shadow: 4px 0 8px 3px rgba(38, 46, 60, 0.1); + position: fixed; + z-index: 99; + top: var(--header-height); + left: 0; + bottom: 0; + width: var(--menu-width); + background: linear-gradient( + to bottom, + hsl(217, 22%, 20%), + hsl(217, 22%, 16%) 80%, + hsl(217, 22%, 12%) + ); + padding-top: 1rem; + color: #d5d9dc; + display: flex; + flex-direction: column; + box-shadow: 4px 0 8px 3px rgba(38, 46, 60, 0.1); } .aside > div { - color: #828e97; - font-size: 0.833em; - padding: 0 1rem; + color: #828e97; + font-size: 0.833em; + padding: 0 1rem; } .aside nav { - flex: 1; - overflow-y: auto; + flex: 1; + overflow-y: auto; } .menu { - list-style: none; - padding: 0; + list-style: none; + padding: 0; } .menu li + li { - border-top: 1px solid hsl(206, 9%, 25%); + border-top: 1px solid hsl(206, 9%, 25%); } .menu a { - color: inherit; - text-decoration: none; - display: block; - padding: 1rem 1.25rem; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - transition: background-color 100ms ease-in; - border-left: 3px solid transparent; + color: inherit; + text-decoration: none; + display: block; + padding: 1rem 1.25rem; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + transition: background-color 100ms ease-in; + border-left: 3px solid transparent; } .menu a:hover { - background-color: rgba(255, 255, 255, 0.05); - border-left-color: hsl(184, 20%, 30%); + background-color: rgba(255, 255, 255, 0.05); + border-left-color: hsl(184, 20%, 30%); } .menu a.active { - background-color: rgba(255, 255, 255, 0.1); - border-left-color: #4abec7; + background-color: rgba(255, 255, 255, 0.1); + border-left-color: #4abec7; } .appVersion { - text-align: center; + text-align: center; } diff --git a/src/ui/components/Menu/Menu.tsx b/src/ui/components/Menu/Menu.tsx index 1c3f1645..77b3038a 100644 --- a/src/ui/components/Menu/Menu.tsx +++ b/src/ui/components/Menu/Menu.tsx @@ -1,15 +1,15 @@ -import React from 'react' -import { NavLink } from 'react-router-dom' -import { Store } from '../../hooks/useStore' -import { STATUS_LIST } from '../constants' -import s from './Menu.module.css' +import React from 'react'; +import { NavLink } from 'react-router-dom'; +import { Store } from '../../hooks/useStore'; +import { STATUS_LIST } from '../constants'; +import s from './Menu.module.css'; export const Menu = ({ queues, selectedStatuses, }: { - queues: string[] | undefined - selectedStatuses: Store['selectedStatuses'] + queues: string[] | undefined; + selectedStatuses: Store['selectedStatuses']; }) => ( -) +); diff --git a/src/ui/components/QueueActions/QueueActions.module.css b/src/ui/components/QueueActions/QueueActions.module.css index d4798132..a186c730 100644 --- a/src/ui/components/QueueActions/QueueActions.module.css +++ b/src/ui/components/QueueActions/QueueActions.module.css @@ -1,20 +1,20 @@ .queueActions { - padding: 0 0 1rem; - margin: -1rem 0 0; - list-style: none; - display: flex; + padding: 0 0 1rem; + margin: -1rem 0 0; + list-style: none; + display: flex; } .queueActions > li + li { - margin-left: 0.25rem; + margin-left: 0.25rem; } .queueActions .button > svg { - fill: #a0aec0; - margin: -0.25em 0.5em 0 0; + fill: #a0aec0; + margin: -0.25em 0.5em 0 0; } .queueActions .button:hover > svg, .queueActions .button:focus > svg { - fill: #718096; + fill: #718096; } diff --git a/src/ui/components/QueueActions/QueueActions.tsx b/src/ui/components/QueueActions/QueueActions.tsx index f9ecaf53..3caa00b5 100644 --- a/src/ui/components/QueueActions/QueueActions.tsx +++ b/src/ui/components/QueueActions/QueueActions.tsx @@ -1,33 +1,33 @@ -import React from 'react' -import { AppQueue } from '../../../@types/app' -import { Store } from '../../hooks/useStore' -import { Status } from '../constants' -import { RetryIcon } from '../Icons/Retry' -import { TrashIcon } from '../Icons/Trash' -import { Button } from '../JobCard/Button/Button' -import s from './QueueActions.module.css' +import React from 'react'; +import { AppQueue } from '../../../@types/app'; +import { Store } from '../../hooks/useStore'; +import { Status } from '../constants'; +import { RetryIcon } from '../Icons/Retry'; +import { TrashIcon } from '../Icons/Trash'; +import { Button } from '../JobCard/Button/Button'; +import s from './QueueActions.module.css'; interface QueueActionProps { - queue: AppQueue - actions: Store['actions'] - status: Status + queue: AppQueue; + actions: Store['actions']; + status: Status; } -const ACTIONABLE_STATUSES = ['failed', 'delayed', 'completed'] +const ACTIONABLE_STATUSES = ['failed', 'delayed', 'completed']; const isStatusActionable = (status: Status): boolean => - ACTIONABLE_STATUSES.includes(status) + ACTIONABLE_STATUSES.includes(status); const CleanAllButton = ({ onClick }: any) => ( -) +); export const QueueActions = ({ status, actions, queue }: QueueActionProps) => { if (!isStatusActionable(status)) { - return null + return null; } return ( @@ -56,5 +56,5 @@ export const QueueActions = ({ status, actions, queue }: QueueActionProps) => { )} - ) -} + ); +}; diff --git a/src/ui/components/QueuePage/QueuePage.module.css b/src/ui/components/QueuePage/QueuePage.module.css index 815c4528..526eb19e 100644 --- a/src/ui/components/QueuePage/QueuePage.module.css +++ b/src/ui/components/QueuePage/QueuePage.module.css @@ -1,9 +1,9 @@ .stickyHeader { - position: sticky; - top: var(--header-height); - z-index: 2; - background-color: rgba(245, 248, 250, 0.85); - backdrop-filter: blur(4px); - margin: 0 -1rem; - padding: 0 1rem; + position: sticky; + top: var(--header-height); + z-index: 2; + background-color: rgba(245, 248, 250, 0.85); + backdrop-filter: blur(4px); + margin: 0 -1rem; + padding: 0 1rem; } diff --git a/src/ui/components/QueuePage/QueuePage.tsx b/src/ui/components/QueuePage/QueuePage.tsx index 537dc342..b0ea3a66 100644 --- a/src/ui/components/QueuePage/QueuePage.tsx +++ b/src/ui/components/QueuePage/QueuePage.tsx @@ -1,22 +1,22 @@ -import React from 'react' -import { AppQueue } from '../../../@types/app' -import { Store } from '../../hooks/useStore' -import { JobCard } from '../JobCard/JobCard' -import { QueueActions } from '../QueueActions/QueueActions' -import { StatusMenu } from '../StatusMenu/StatusMenu' -import s from './QueuePage.module.css' +import React from 'react'; +import { AppQueue } from '../../../@types/app'; +import { Store } from '../../hooks/useStore'; +import { JobCard } from '../JobCard/JobCard'; +import { QueueActions } from '../QueueActions/QueueActions'; +import { StatusMenu } from '../StatusMenu/StatusMenu'; +import s from './QueuePage.module.css'; export const QueuePage = ({ selectedStatus, actions, queue, }: { - queue: AppQueue | undefined - actions: Store['actions'] - selectedStatus: Store['selectedStatuses'] + queue: AppQueue | undefined; + actions: Store['actions']; + selectedStatus: Store['selectedStatuses']; }) => { if (!queue) { - return
    Queue Not found
    + return
    Queue Not found
    ; } return ( @@ -46,5 +46,5 @@ export const QueuePage = ({ /> ))} - ) -} + ); +}; diff --git a/src/ui/components/RedisStats/RedisStats.module.css b/src/ui/components/RedisStats/RedisStats.module.css index 7ee61e43..242a18e0 100644 --- a/src/ui/components/RedisStats/RedisStats.module.css +++ b/src/ui/components/RedisStats/RedisStats.module.css @@ -1,25 +1,25 @@ .stats { - padding: 0 1rem 0.5rem; - display: flex; - color: #718096; - font-weight: 200; - align-items: center; + padding: 0 1rem 0.5rem; + display: flex; + color: #718096; + font-weight: 200; + align-items: center; } .stats > div { - text-align: center; - margin: 0 0.5rem; - position: relative; + text-align: center; + margin: 0 0.5rem; + position: relative; } .stats span { - display: block; - font-size: 1.44rem; - margin-top: 0.125em; + display: block; + font-size: 1.44rem; + margin-top: 0.125em; } .stats small { - position: absolute; - white-space: nowrap; - left: 0; + position: absolute; + white-space: nowrap; + left: 0; } diff --git a/src/ui/components/RedisStats/RedisStats.tsx b/src/ui/components/RedisStats/RedisStats.tsx index e8029af6..0bdd7b6f 100644 --- a/src/ui/components/RedisStats/RedisStats.tsx +++ b/src/ui/components/RedisStats/RedisStats.tsx @@ -1,7 +1,7 @@ -import formatBytes from 'pretty-bytes' -import React from 'react' -import { ValidMetrics } from '../../../@types/app' -import s from './RedisStats.module.css' +import formatBytes from 'pretty-bytes'; +import React from 'react'; +import { ValidMetrics } from '../../../@types/app'; +import s from './RedisStats.module.css'; const RedisLogo = () => ( @@ -18,24 +18,24 @@ const RedisLogo = () => ( d="M23.99414 14.34005c-.01.229-.313.485-.935.81-1.281.667-7.916 3.396-9.328 4.132-1.413.736-2.197.729-3.313.195-1.116-.533-8.176-3.386-9.448-3.993-.635-.304-.959-.56-.97-.802v2.426c0 .242.334.499.97.803 1.272.608 8.333 3.46 9.448 3.993 1.116.534 1.9.541 3.313-.196 1.412-.736 8.047-3.464 9.328-4.132.651-.339.939-.603.939-.842 0-.226.001-2.392.001-2.392-.001-.001-.004-.001-.005-.002z" /> -) +); const getMemoryUsage = ( used_memory?: ValidMetrics['used_memory'], - total_system_memory?: ValidMetrics['total_system_memory'], + total_system_memory?: ValidMetrics['total_system_memory'] ) => { if (used_memory === undefined) { - return '-' + return '-'; } - const usedMemory = parseInt(used_memory, 10) + const usedMemory = parseInt(used_memory, 10); if (total_system_memory === undefined) { - return formatBytes(usedMemory) + return formatBytes(usedMemory); } - const totalSystemMemory = parseInt(total_system_memory, 10) + const totalSystemMemory = parseInt(total_system_memory, 10); - return `${((usedMemory / totalSystemMemory) * 100).toFixed(2)}%` -} + return `${((usedMemory / totalSystemMemory) * 100).toFixed(2)}%`; +}; export const RedisStats = ({ stats }: { stats: Partial }) => { const { @@ -45,7 +45,7 @@ export const RedisStats = ({ stats }: { stats: Partial }) => { mem_fragmentation_ratio, connected_clients, blocked_clients, - } = stats + } = stats; return (
    @@ -86,5 +86,5 @@ export const RedisStats = ({ stats }: { stats: Partial }) => { {blocked_clients}
    - ) -} + ); +}; diff --git a/src/ui/components/StatusMenu/StatusMenu.module.css b/src/ui/components/StatusMenu/StatusMenu.module.css index 9cb790e0..c3e8cb14 100644 --- a/src/ui/components/StatusMenu/StatusMenu.module.css +++ b/src/ui/components/StatusMenu/StatusMenu.module.css @@ -1,54 +1,56 @@ .statusMenu { - display: flex; - margin-bottom: 2rem; - min-height: 2.85714286em; - border-bottom: 2px solid #e0e7eb; - align-items: flex-end; + display: flex; + margin-bottom: 2rem; + min-height: 2.85714286em; + border-bottom: 2px solid #e0e7eb; + align-items: flex-end; } .statusMenu > a { - text-decoration: none; - border-bottom: 2px solid transparent; - margin: 0 0 -2px; - padding: 0.5em 1em; - color: rgba(0, 0, 0, 0.87); - transition: border-bottom-color 200ms ease-in-out, color 0.1s ease; - display: flex; - align-items: center; + text-decoration: none; + border-bottom: 2px solid transparent; + margin: 0 0 -2px; + padding: 0.5em 1em; + color: rgba(0, 0, 0, 0.87); + transition: border-bottom-color 200ms ease-in-out, color 0.1s ease; + display: flex; + align-items: center; } + .statusMenu > a span { - flex: 1; + flex: 1; } + .statusMenu > a span:before { - display: block; - content: attr(title); - font-weight: 600; - height: 0; - overflow: hidden; - visibility: hidden; + display: block; + content: attr(title); + font-weight: 600; + height: 0; + overflow: hidden; + visibility: hidden; } .statusMenu > a:hover, .statusMenu > a:active { - border-color: hsl(210, 4%, 50%); + border-color: hsl(210, 4%, 50%); } .statusMenu > a.active { - border-color: #1b1c1d; - color: rgba(0, 0, 0, 0.95); - font-weight: 700; + border-color: #1b1c1d; + color: rgba(0, 0, 0, 0.95); + font-weight: 700; } .badge { - display: inline-block; - background-color: #a0aec0; - border-color: #a0aec0; - color: #fff; - font-size: 0.833rem; - padding: 0.25em 0.75em; - line-height: 1em; - text-align: center; - border-radius: 500rem; - margin: -0.5em 0 -0.5em 0.5rem; - font-weight: 400; + display: inline-block; + background-color: #a0aec0; + border-color: #a0aec0; + color: #fff; + font-size: 0.833rem; + padding: 0.25em 0.75em; + line-height: 1em; + text-align: center; + border-radius: 500rem; + margin: -0.5em 0 -0.5em 0.5rem; + font-weight: 400; } diff --git a/src/ui/components/StatusMenu/StatusMenu.tsx b/src/ui/components/StatusMenu/StatusMenu.tsx index c910caa8..3e264cb1 100644 --- a/src/ui/components/StatusMenu/StatusMenu.tsx +++ b/src/ui/components/StatusMenu/StatusMenu.tsx @@ -1,27 +1,27 @@ -import React from 'react' -import { NavLink, useRouteMatch } from 'react-router-dom' -import { AppQueue } from '../../../@types/app' -import { STATUS_LIST, STATUSES } from '../constants' -import s from './StatusMenu.module.css' +import React from 'react'; +import { NavLink, useRouteMatch } from 'react-router-dom'; +import { AppQueue } from '../../../@types/app'; +import { STATUS_LIST, STATUSES } from '../constants'; +import s from './StatusMenu.module.css'; export const StatusMenu = ({ queue }: { queue: AppQueue }) => { - const { url } = useRouteMatch() + const { url } = useRouteMatch(); return (
    {STATUS_LIST.map((status) => { - const isLatest = status === STATUSES.latest - const displayStatus = status.toLocaleUpperCase() + const isLatest = status === STATUSES.latest; + const displayStatus = status.toLocaleUpperCase(); return ( { - const query = new URLSearchParams(search) + const query = new URLSearchParams(search); return ( query.get('status') === status || (isLatest && query.get('status') === null) - ) + ); }} key={`${queue.name}-${status}`} > @@ -30,8 +30,8 @@ export const StatusMenu = ({ queue }: { queue: AppQueue }) => { {queue.counts[status]} )} - ) + ); })}
    - ) -} + ); +}; diff --git a/src/ui/components/Tooltip/Tooltip.module.css b/src/ui/components/Tooltip/Tooltip.module.css index 7345685e..ba6e6a4c 100644 --- a/src/ui/components/Tooltip/Tooltip.module.css +++ b/src/ui/components/Tooltip/Tooltip.module.css @@ -1,27 +1,27 @@ .tooltip { - position: relative; + position: relative; } .tooltip:before { - content: attr(data-title); - padding: 0.2em 0.75em; - background-color: rgba(45, 55, 72, 0.95); - color: #fff; - border-radius: 0.28571429rem; - font-size: 0.833rem; - font-weight: 300; - position: absolute; - bottom: 100%; - margin-bottom: 0.75rem; - left: 50%; - transform: translateX(-50%) translateY(-25%); - transition: transform 250ms ease-in-out, opacity 250ms ease-in-out; - pointer-events: none; - opacity: 0; - z-index: 2; + content: attr(data-title); + padding: 0.2em 0.75em; + background-color: rgba(45, 55, 72, 0.95); + color: #fff; + border-radius: 0.28571429rem; + font-size: 0.833rem; + font-weight: 300; + position: absolute; + bottom: 100%; + margin-bottom: 0.75rem; + left: 50%; + transform: translateX(-50%) translateY(-25%); + transition: transform 250ms ease-in-out, opacity 250ms ease-in-out; + pointer-events: none; + opacity: 0; + z-index: 2; } .tooltip:hover:before { - transform: translateX(-50%) translateY(0); - opacity: 1; + transform: translateX(-50%) translateY(0); + opacity: 1; } diff --git a/src/ui/components/Tooltip/Tooltip.tsx b/src/ui/components/Tooltip/Tooltip.tsx index e12faf77..337ba0b9 100644 --- a/src/ui/components/Tooltip/Tooltip.tsx +++ b/src/ui/components/Tooltip/Tooltip.tsx @@ -1,5 +1,5 @@ -import React from 'react' -import s from './Tooltip.module.css' +import React from 'react'; +import s from './Tooltip.module.css'; export const Tooltip = ({ title, @@ -8,4 +8,4 @@ export const Tooltip = ({ {children} -) +); diff --git a/src/ui/components/constants.ts b/src/ui/components/constants.ts index dde34c43..81cf3abc 100644 --- a/src/ui/components/constants.ts +++ b/src/ui/components/constants.ts @@ -1,4 +1,4 @@ -import { KeyOf } from '../../@types/utils' +import { KeyOf } from '../../@types/utils'; export const STATUSES = { latest: 'latest', @@ -8,7 +8,7 @@ export const STATUSES = { failed: 'failed', delayed: 'delayed', paused: 'paused', -} +}; export const STATUS_LIST: KeyOf = [ STATUSES.latest as any, @@ -18,9 +18,9 @@ export const STATUS_LIST: KeyOf = [ STATUSES.failed, STATUSES.delayed, STATUSES.paused, -] +]; -export type Status = keyof typeof STATUSES +export type Status = keyof typeof STATUSES; export type Field = | 'attempts' @@ -34,7 +34,7 @@ export type Field = | 'failedReason' | 'retry' | 'promote' - | 'clean' + | 'clean'; export const FIELDS: Record = { active: ['attempts', 'data', 'id', 'name', 'opts', 'progress', 'timestamps'], @@ -73,4 +73,4 @@ export const FIELDS: Record = { latest: ['attempts', 'data', 'id', 'name', 'opts', 'progress', 'timestamps'], paused: ['attempts', 'data', 'id', 'name', 'opts', 'timestamps'], waiting: ['data', 'id', 'name', 'opts', 'timestamps', 'clean'], -} +}; diff --git a/src/ui/hooks/useDetailsTabs.tsx b/src/ui/hooks/useDetailsTabs.tsx index 990ab251..e95ac2da 100644 --- a/src/ui/hooks/useDetailsTabs.tsx +++ b/src/ui/hooks/useDetailsTabs.tsx @@ -1,22 +1,22 @@ -import { useEffect, useState } from 'react' -import { Status, STATUSES } from '../components/constants' +import { useEffect, useState } from 'react'; +import { Status, STATUSES } from '../components/constants'; -const regularItems = ['Data', 'Options', 'Logs'] as const +const regularItems = ['Data', 'Options', 'Logs'] as const; -export type TabsType = typeof regularItems[number] | 'Error' +export type TabsType = typeof regularItems[number] | 'Error'; export function useDetailsTabs(currentStatus: Status) { - const [tabs, updateTabs] = useState([]) - const [selectedTabIdx, setSelectedTabIdx] = useState(0) - const selectedTab = tabs[selectedTabIdx] + const [tabs, updateTabs] = useState([]); + const [selectedTabIdx, setSelectedTabIdx] = useState(0); + const selectedTab = tabs[selectedTabIdx]; useEffect(() => { updateTabs( currentStatus === STATUSES.failed ? ['Error', ...regularItems] - : [...regularItems], - ) - }, [currentStatus]) + : [...regularItems] + ); + }, [currentStatus]); return { tabs: tabs.map((title, index) => ({ @@ -25,5 +25,5 @@ export function useDetailsTabs(currentStatus: Status) { selectTab: () => setSelectedTabIdx(index), })), selectedTab, - } + }; } diff --git a/src/ui/hooks/useInterval.ts b/src/ui/hooks/useInterval.ts index 619a07ae..e6b6c038 100644 --- a/src/ui/hooks/useInterval.ts +++ b/src/ui/hooks/useInterval.ts @@ -1,30 +1,30 @@ -import { useEffect, useRef } from 'react' +import { useEffect, useRef } from 'react'; export function useInterval( callback: () => void, delay: number | null, - deps: any[] = [], + deps: any[] = [] ): void { - const savedCallback = useRef(callback) + const savedCallback = useRef(callback); // Remember the latest callback if it changes. useEffect(() => { - savedCallback.current = callback - }, [callback]) + savedCallback.current = callback; + }, [callback]); // Set up the interval. useEffect(() => { // Don't schedule if no delay is specified. if (delay === null) { - return + return; } - savedCallback.current() + savedCallback.current(); - const id = setInterval(() => savedCallback.current(), delay) + const id = setInterval(() => savedCallback.current(), delay); return () => { - clearInterval(id) - } - }, [delay, ...deps]) + clearInterval(id); + }; + }, [delay, ...deps]); } diff --git a/src/ui/hooks/useScrollTopOnNav.ts b/src/ui/hooks/useScrollTopOnNav.ts index 9ab9519e..210e22c1 100644 --- a/src/ui/hooks/useScrollTopOnNav.ts +++ b/src/ui/hooks/useScrollTopOnNav.ts @@ -1,9 +1,9 @@ -import { useEffect } from 'react' -import { useLocation } from 'react-router-dom' +import { useEffect } from 'react'; +import { useLocation } from 'react-router-dom'; export function useScrollTopOnNav(): void { - const { key } = useLocation() + const { key } = useLocation(); useEffect(() => { - window.scrollTo(0, 0) - }, [key]) + window.scrollTo(0, 0); + }, [key]); } diff --git a/src/ui/hooks/useSelectedStatuses.ts b/src/ui/hooks/useSelectedStatuses.ts index a52517b3..45554973 100644 --- a/src/ui/hooks/useSelectedStatuses.ts +++ b/src/ui/hooks/useSelectedStatuses.ts @@ -1,22 +1,24 @@ -import { useEffect, useState } from 'react' -import { useLocation, useRouteMatch } from 'react-router-dom' -import { SelectedStatuses } from '../../@types/app' -import { Status, STATUS_LIST } from '../components/constants' +import { useEffect, useState } from 'react'; +import { useLocation, useRouteMatch } from 'react-router-dom'; +import { SelectedStatuses } from '../../@types/app'; +import { Status, STATUS_LIST } from '../components/constants'; export function useSelectedStatuses(): SelectedStatuses { - const { search, pathname } = useLocation() - const match = useRouteMatch<{ name: string }>({ path: '/queue/:name' }) + const { search, pathname } = useLocation(); + const match = useRouteMatch<{ name: string }>({ path: '/queue/:name' }); - const [selectedStatuses, setSelectedStatuses] = useState({}) + const [selectedStatuses, setSelectedStatuses] = useState( + {} + ); useEffect(() => { - const query = new URLSearchParams(search) - const status = (query.get('status') as Status) || STATUS_LIST[0] - const queue = match ? decodeURIComponent(match?.params.name) : '' + const query = new URLSearchParams(search); + const status = (query.get('status') as Status) || STATUS_LIST[0]; + const queue = match ? decodeURIComponent(match?.params.name) : ''; if (queue) { - setSelectedStatuses({ ...selectedStatuses, [queue]: status }) + setSelectedStatuses({ ...selectedStatuses, [queue]: status }); } - }, [search, pathname]) + }, [search, pathname]); - return selectedStatuses + return selectedStatuses; } diff --git a/src/ui/hooks/useStore.ts b/src/ui/hooks/useStore.ts index 6bb2cc13..aac0bc19 100644 --- a/src/ui/hooks/useStore.ts +++ b/src/ui/hooks/useStore.ts @@ -1,65 +1,65 @@ -import { useState } from 'react' -import * as api from '../../@types/api' -import { AppJob, QueueActions, SelectedStatuses } from '../../@types/app' -import { Api } from '../services/Api' -import { useInterval } from './useInterval' -import { useSelectedStatuses } from './useSelectedStatuses' +import { useState } from 'react'; +import * as api from '../../@types/api'; +import { AppJob, QueueActions, SelectedStatuses } from '../../@types/app'; +import { Api } from '../services/Api'; +import { useInterval } from './useInterval'; +import { useSelectedStatuses } from './useSelectedStatuses'; -const interval = 5000 +const interval = 5000; type State = { - data: null | api.GetQueues - loading: boolean -} + data: null | api.GetQueues; + loading: boolean; +}; export interface Store { - state: State - actions: QueueActions - selectedStatuses: SelectedStatuses + state: State; + actions: QueueActions; + selectedStatuses: SelectedStatuses; } export const useStore = (api: Api): Store => { const [state, setState] = useState({ data: null, loading: true, - }) + }); - const selectedStatuses = useSelectedStatuses() + const selectedStatuses = useSelectedStatuses(); const update = () => api .getQueues({ status: selectedStatuses }) .then((data: api.GetQueues) => { - setState({ data, loading: false }) + setState({ data, loading: false }); }) // eslint-disable-next-line no-console - .catch((error) => console.error('Failed to poll', error)) + .catch((error) => console.error('Failed to poll', error)); - useInterval(update, interval, [selectedStatuses]) + useInterval(update, interval, [selectedStatuses]); const promoteJob = (queueName: string) => (job: AppJob) => () => - api.promoteJob(queueName, job.id).then(update) + api.promoteJob(queueName, job.id).then(update); const retryJob = (queueName: string) => (job: AppJob) => () => - api.retryJob(queueName, job.id).then(update) + api.retryJob(queueName, job.id).then(update); const cleanJob = (queueName: string) => (job: AppJob) => () => - api.cleanJob(queueName, job.id).then(update) + api.cleanJob(queueName, job.id).then(update); const retryAll = (queueName: string) => () => - api.retryAll(queueName).then(update) + api.retryAll(queueName).then(update); const cleanAllDelayed = (queueName: string) => () => - api.cleanAllDelayed(queueName).then(update) + api.cleanAllDelayed(queueName).then(update); const cleanAllFailed = (queueName: string) => () => - api.cleanAllFailed(queueName).then(update) + api.cleanAllFailed(queueName).then(update); const cleanAllCompleted = (queueName: string) => () => - api.cleanAllCompleted(queueName).then(update) + api.cleanAllCompleted(queueName).then(update); const getJobLogs = (queueName: string) => (job: AppJob) => () => - api.getJobLogs(queueName, job.id) + api.getJobLogs(queueName, job.id); return { state, @@ -74,5 +74,5 @@ export const useStore = (api: Api): Store => { getJobLogs, }, selectedStatuses, - } -} + }; +}; diff --git a/src/ui/index.css b/src/ui/index.css index 1f0e5cbe..fe7df5d1 100644 --- a/src/ui/index.css +++ b/src/ui/index.css @@ -1,47 +1,47 @@ :root { - --menu-width: 260px; - --header-height: 80px; + --menu-width: 260px; + --header-height: 80px; } body { - background: #f5f8fa; - font-family: 'Ubuntu', sans-serif; - font-weight: 400; - line-height: 1.25em; - margin: 0; - font-size: 16px; - color: #454b52; + background: #f5f8fa; + font-family: 'Ubuntu', sans-serif; + font-weight: 400; + line-height: 1.25em; + margin: 0; + font-size: 16px; + color: #454b52; } html, body { - height: 100%; + height: 100%; } * { - box-sizing: border-box; + box-sizing: border-box; } #root { - height: inherit; + height: inherit; } small { - font-size: 0.833em; - opacity: 0.85; + font-size: 0.833em; + opacity: 0.85; } main { - padding-left: var(--menu-width); - min-height: 100%; + padding-left: var(--menu-width); + min-height: 100%; } main > div { - padding: 2rem; + padding: 2rem; } button { - font-family: inherit; + font-family: inherit; } h1, @@ -52,6 +52,6 @@ h5, h6, article, li { - margin: 0; - line-height: 1.5em; + margin: 0; + line-height: 1.5em; } diff --git a/src/ui/index.ejs b/src/ui/index.ejs index ed723402..a430e3da 100644 --- a/src/ui/index.ejs +++ b/src/ui/index.ejs @@ -1,16 +1,16 @@ - + - + Bull Dashboard - - -
    Loading...
    - + + +
    Loading...
    + diff --git a/src/ui/index.tsx b/src/ui/index.tsx index e828374a..e9833c02 100644 --- a/src/ui/index.tsx +++ b/src/ui/index.tsx @@ -1,19 +1,20 @@ -import React from 'react' -import { render } from 'react-dom' +import React from 'react'; +import { render } from 'react-dom'; -import './index.css' -import './theme.css' -import './toastify.css' -import { BrowserRouter } from 'react-router-dom' -import { App } from './components/App' -import { Api } from './services/Api' +import './index.css'; +import './theme.css'; +import './toastify.css'; +import { BrowserRouter } from 'react-router-dom'; +import { App } from './components/App'; +import { Api } from './services/Api'; -const basePath = document.head.querySelector('base')?.getAttribute('href') || '' -const api = new Api({ basePath }) +const basePath = + document.head.querySelector('base')?.getAttribute('href') || ''; +const api = new Api({ basePath }); render( , - document.getElementById('root'), -) + document.getElementById('root') +); diff --git a/src/ui/services/Api.ts b/src/ui/services/Api.ts index d642e16e..ee052b1a 100644 --- a/src/ui/services/Api.ts +++ b/src/ui/services/Api.ts @@ -1,79 +1,79 @@ -import Axios, { AxiosInstance, AxiosResponse } from 'axios' -import { toast } from 'react-toastify' -import { GetQueues } from '../../@types/api' -import { AppJob, SelectedStatuses } from '../../@types/app' +import Axios, { AxiosInstance, AxiosResponse } from 'axios'; +import { toast } from 'react-toastify'; +import { GetQueues } from '../../@types/api'; +import { AppJob, SelectedStatuses } from '../../@types/app'; export class Api { - private axios: AxiosInstance + private axios: AxiosInstance; constructor({ basePath }: { basePath: string } = { basePath: '' }) { - this.axios = Axios.create({ baseURL: `${basePath}/api` }) - this.axios.interceptors.response.use(this.handleResponse, this.handleError) + this.axios = Axios.create({ baseURL: `${basePath}/api` }); + this.axios.interceptors.response.use(this.handleResponse, this.handleError); } public getQueues({ status, }: { - status: SelectedStatuses + status: SelectedStatuses; }): Promise { - return this.axios.get(`/queues/`, { params: { ...status } }) + return this.axios.get(`/queues/`, { params: { ...status } }); } public retryAll(queueName: string): Promise { - return this.axios.put(`/queues/${encodeURIComponent(queueName)}/retry`) + return this.axios.put(`/queues/${encodeURIComponent(queueName)}/retry`); } public cleanAllDelayed(queueName: string): Promise { return this.axios.put( - `/queues/${encodeURIComponent(queueName)}/clean/delayed`, - ) + `/queues/${encodeURIComponent(queueName)}/clean/delayed` + ); } public cleanAllFailed(queueName: string): Promise { return this.axios.put( - `/queues/${encodeURIComponent(queueName)}/clean/failed`, - ) + `/queues/${encodeURIComponent(queueName)}/clean/failed` + ); } public cleanAllCompleted(queueName: string): Promise { return this.axios.put( - `/queues/${encodeURIComponent(queueName)}/clean/completed`, - ) + `/queues/${encodeURIComponent(queueName)}/clean/completed` + ); } public cleanJob(queueName: string, jobId: AppJob['id']): Promise { return this.axios.put( - `/queues/${encodeURIComponent(queueName)}/${jobId}/clean`, - ) + `/queues/${encodeURIComponent(queueName)}/${jobId}/clean` + ); } public retryJob(queueName: string, jobId: AppJob['id']): Promise { return this.axios.put( - `/queues/${encodeURIComponent(queueName)}/${jobId}/retry`, - ) + `/queues/${encodeURIComponent(queueName)}/${jobId}/retry` + ); } public promoteJob(queueName: string, jobId: AppJob['id']): Promise { return this.axios.put( - `/queues/${encodeURIComponent(queueName)}/${jobId}/promote`, - ) + `/queues/${encodeURIComponent(queueName)}/${jobId}/promote` + ); } public getJobLogs(queueName: string, jobId: AppJob['id']): Promise { return this.axios.get( - `/queues/${encodeURIComponent(queueName)}/${jobId}/logs`, - ) + `/queues/${encodeURIComponent(queueName)}/${jobId}/logs` + ); } private handleResponse(response: AxiosResponse): any { - return response.data + return response.data; } private async handleError(error: { response: AxiosResponse }): Promise { if (error.response.data?.error) { - toast.error(error.response.data?.error, { autoClose: 5000 }) + toast.error(error.response.data?.error, { autoClose: 5000 }); } - return Promise.resolve(error.response.data) + return Promise.resolve(error.response.data); } } diff --git a/src/ui/theme.css b/src/ui/theme.css index 6d264ce7..80088d70 100644 --- a/src/ui/theme.css +++ b/src/ui/theme.css @@ -1,79 +1,95 @@ .hljs { - display: block; - padding: 0.5em; - white-space: pre-wrap; + display: block; + padding: 0.5em; + white-space: pre-wrap; } + .hljs-comment, .hljs-quote { - color: #998; - font-style: italic; + color: #998; + font-style: italic; } + .hljs-keyword, .hljs-selector-tag, .hljs-subst { - font-weight: 700; + font-weight: 700; } + .hljs-literal, .hljs-number, .hljs-tag .hljs-attr, .hljs-template-variable, .hljs-variable { - color: teal; + color: teal; } + .hljs-doctag, .hljs-string { - color: #d14; + color: #d14; } + .hljs-section, .hljs-selector-id, .hljs-title { - color: #d73a49; - font-weight: 700; + color: #d73a49; + font-weight: 700; } .hljs-class .hljs-title, .hljs-type, .hljs-attr { - color: #458; - font-weight: 700; + color: #458; + font-weight: 700; } + .hljs-attribute, .hljs-name, .hljs-tag { - color: navy; - font-weight: 400; + color: navy; + font-weight: 400; } + .hljs-link, .hljs-regexp { - color: #009926; + color: #009926; } + .hljs-bullet, .hljs-symbol { - color: #990073; + color: #990073; } + .hljs-built_in, .hljs-builtin-name { - color: #0086b3; + color: #0086b3; } + .hljs-meta { - color: #999; - font-weight: 700; + color: #999; + font-weight: 700; } + .hljs-deletion { - background: #fdd; + background: #fdd; } + .hljs-addition { - background: #dfd; + background: #dfd; } + .hljs-emphasis { - font-style: italic; + font-style: italic; } + .hljs-strong { - font-weight: 700; + font-weight: 700; } + .hljs-trace-line { - color: #aaa; + color: #aaa; } + .hljs-trace-line .hljs-code-path { - color: #454b52; + color: #454b52; } diff --git a/src/ui/toastify.css b/src/ui/toastify.css index 0cc10001..71998291 100644 --- a/src/ui/toastify.css +++ b/src/ui/toastify.css @@ -1,232 +1,254 @@ .Toastify__toast-container { - z-index: 9999; - -webkit-transform: translate3d(0, 0, 9999px); - position: fixed; - padding: 4px; - width: 320px; - box-sizing: border-box; - color: #fff; + z-index: 9999; + -webkit-transform: translate3d(0, 0, 9999px); + position: fixed; + padding: 4px; + width: 320px; + box-sizing: border-box; + color: #fff; } + .Toastify__toast-container--top-left { - top: 1em; - left: 1em; + top: 1em; + left: 1em; } + .Toastify__toast-container--top-center { - top: 1em; - left: 50%; - transform: translateX(-50%); + top: 1em; + left: 50%; + transform: translateX(-50%); } + .Toastify__toast-container--top-right { - top: 1em; - right: 1em; + top: 1em; + right: 1em; } + .Toastify__toast-container--bottom-left { - bottom: 1em; - left: 1em; + bottom: 1em; + left: 1em; } + .Toastify__toast-container--bottom-center { - bottom: 1em; - left: 50%; - transform: translateX(-50%); + bottom: 1em; + left: 50%; + transform: translateX(-50%); } + .Toastify__toast-container--bottom-right { - bottom: 1em; - right: 1em; + bottom: 1em; + right: 1em; } @media only screen and (max-width: 480px) { - .Toastify__toast-container { - width: 100vw; - padding: 0; - left: 0; - margin: 0; - } - .Toastify__toast-container--top-left, - .Toastify__toast-container--top-center, - .Toastify__toast-container--top-right { - top: 0; - transform: translateX(0); - } - .Toastify__toast-container--bottom-left, - .Toastify__toast-container--bottom-center, - .Toastify__toast-container--bottom-right { - bottom: 0; - transform: translateX(0); - } - .Toastify__toast-container--rtl { - right: 0; - left: initial; - } + .Toastify__toast-container { + width: 100vw; + padding: 0; + left: 0; + margin: 0; + } + + .Toastify__toast-container--top-left, + .Toastify__toast-container--top-center, + .Toastify__toast-container--top-right { + top: 0; + transform: translateX(0); + } + + .Toastify__toast-container--bottom-left, + .Toastify__toast-container--bottom-center, + .Toastify__toast-container--bottom-right { + bottom: 0; + transform: translateX(0); + } + + .Toastify__toast-container--rtl { + right: 0; + left: initial; + } } + .Toastify__toast { - position: relative; - min-height: 64px; - box-sizing: border-box; - margin-bottom: 1rem; - padding: 8px; - border-radius: 4px; - box-shadow: 0 1px 10px 0 rgba(0, 0, 0, 0.1), 0 2px 15px 0 rgba(0, 0, 0, 0.05); - display: -ms-flexbox; - display: flex; - -ms-flex-pack: justify; - justify-content: space-between; - max-height: 800px; - overflow: hidden; - font-family: sans-serif; - cursor: pointer; - direction: ltr; + position: relative; + min-height: 64px; + box-sizing: border-box; + margin-bottom: 1rem; + padding: 8px; + border-radius: 4px; + box-shadow: 0 1px 10px 0 rgba(0, 0, 0, 0.1), 0 2px 15px 0 rgba(0, 0, 0, 0.05); + display: -ms-flexbox; + display: flex; + -ms-flex-pack: justify; + justify-content: space-between; + max-height: 800px; + overflow: hidden; + font-family: sans-serif; + cursor: pointer; + direction: ltr; } + .Toastify__toast--rtl { - direction: rtl; + direction: rtl; } + .Toastify__toast--dark { - background: #121212; - color: #fff; + background: #121212; + color: #fff; } + .Toastify__toast--default { - background: #fff; - color: #aaa; + background: #fff; + color: #aaa; } + .Toastify__toast--info { - background: #3498db; + background: #3498db; } + .Toastify__toast--success { - background: #07bc0c; + background: #07bc0c; } + .Toastify__toast--warning { - background: #f1c40f; + background: #f1c40f; } + .Toastify__toast--error { - background: #e74c3c; + background: #e74c3c; } + .Toastify__toast-body { - margin: auto 0; - padding: 6px; + margin: auto 0; + padding: 6px; } .Toastify--animate { - animation-fill-mode: both; - animation-duration: 0.7s; + animation-fill-mode: both; + animation-duration: 0.7s; } @media only screen and (max-width: 480px) { - .Toastify__toast { - margin-bottom: 0; - } + .Toastify__toast { + margin-bottom: 0; + } } + .Toastify__close-button { - color: #fff; - background: transparent; - outline: none; - border: none; - padding: 0; - cursor: pointer; - opacity: 0.7; - transition: 0.3s ease; - -ms-flex-item-align: start; - align-self: flex-start; + color: #fff; + background: transparent; + outline: none; + border: none; + padding: 0; + cursor: pointer; + opacity: 0.7; + transition: 0.3s ease; + -ms-flex-item-align: start; + align-self: flex-start; } + .Toastify__close-button--default { - color: #000; - opacity: 0.3; + color: #000; + opacity: 0.3; } + .Toastify__close-button > svg { - fill: currentColor; - height: 16px; - width: 14px; + fill: currentColor; + height: 16px; + width: 14px; } + .Toastify__close-button:hover, .Toastify__close-button:focus { - opacity: 1; + opacity: 1; } @keyframes Toastify__trackProgress { - 0% { - transform: scaleX(1); - } - 100% { - transform: scaleX(0); - } + 0% { + transform: scaleX(1); + } + 100% { + transform: scaleX(0); + } } + .Toastify__progress-bar { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - height: 5px; - z-index: 9999; - opacity: 0.7; - background-color: rgba(255, 255, 255, 0.7); - transform-origin: left; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 5px; + z-index: 9999; + opacity: 0.7; + background-color: rgba(255, 255, 255, 0.7); + transform-origin: left; } + .Toastify__progress-bar--animated { - animation: Toastify__trackProgress linear 1 forwards; + animation: Toastify__trackProgress linear 1 forwards; } + .Toastify__progress-bar--controlled { - transition: transform 0.2s; + transition: transform 0.2s; } + .Toastify__progress-bar--rtl { - right: 0; - left: initial; - transform-origin: right; + right: 0; + left: initial; + transform-origin: right; } + .Toastify__progress-bar--default { - background: linear-gradient( - to right, - #4cd964, - #5ac8fa, - #007aff, - #34aadc, - #5856d6, - #ff2d55 - ); + background: linear-gradient(to right, #4cd964, #5ac8fa, #007aff, #34aadc, #5856d6, #ff2d55); } + .Toastify__progress-bar--dark { - background: #bb86fc; + background: #bb86fc; } + @keyframes Toastify__bounceInRight { - from, - 60%, - 75%, - 90%, - to { - animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); - } - from { - opacity: 0; - transform: translate3d(3000px, 0, 0); - } - 60% { - opacity: 1; - transform: translate3d(-25px, 0, 0); - } - 75% { - transform: translate3d(10px, 0, 0); - } - 90% { - transform: translate3d(-5px, 0, 0); - } - to { - transform: none; - } + from, + 60%, + 75%, + 90%, + to { + animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1); + } + from { + opacity: 0; + transform: translate3d(3000px, 0, 0); + } + 60% { + opacity: 1; + transform: translate3d(-25px, 0, 0); + } + 75% { + transform: translate3d(10px, 0, 0); + } + 90% { + transform: translate3d(-5px, 0, 0); + } + to { + transform: none; + } } + @keyframes Toastify__bounceOutRight { - 20% { - opacity: 1; - transform: translate3d(-20px, 0, 0); - } - to { - opacity: 0; - transform: translate3d(2000px, 0, 0); - } + 20% { + opacity: 1; + transform: translate3d(-20px, 0, 0); + } + to { + opacity: 0; + transform: translate3d(2000px, 0, 0); + } } .Toastify__bounce-enter--top-right, .Toastify__bounce-enter--bottom-right { - animation-name: Toastify__bounceInRight; + animation-name: Toastify__bounceInRight; } .Toastify__bounce-exit--top-right, .Toastify__bounce-exit--bottom-right { - animation-name: Toastify__bounceOutRight; + animation-name: Toastify__bounceOutRight; } diff --git a/tests/api/index.spec.ts b/tests/api/index.spec.ts index ceab26af..599519ae 100644 --- a/tests/api/index.spec.ts +++ b/tests/api/index.spec.ts @@ -1,8 +1,8 @@ -import { Queue } from 'bullmq' -import request from 'supertest' +import { Queue } from 'bullmq'; +import request from 'supertest'; -import { createBullBoard } from '../../src' -import { BullMQAdapter } from '../../src/queueAdapters/bullMQ' +import { createBullBoard } from '../../src'; +import { BullMQAdapter } from '../../src/queueAdapters/bullMQ'; describe('happy', () => { it('should be able to set queue', async () => { @@ -11,9 +11,9 @@ describe('happy', () => { host: 'localhost', port: 6379, }, - }) + }); - const { router } = createBullBoard([new BullMQAdapter(paintQueue)]) + const { router } = createBullBoard([new BullMQAdapter(paintQueue)]); await request(router) .get('/api/queues') @@ -57,10 +57,10 @@ describe('happy', () => { "used_memory": Any, }, } - `, - ) - }) - }) + ` + ); + }); + }); it('should be able to replace queues', async () => { const paintQueue = new Queue('Paint', { @@ -68,28 +68,28 @@ describe('happy', () => { host: 'localhost', port: 6379, }, - }) + }); const drainQueue = new Queue('Drain', { connection: { host: 'localhost', port: 6379, }, - }) + }); const codeQueue = new Queue('Code', { connection: { host: 'localhost', port: 6379, }, - }) + }); const { router, replaceQueues } = createBullBoard([ new BullMQAdapter(paintQueue), new BullMQAdapter(drainQueue), - ]) + ]); - replaceQueues([new BullMQAdapter(codeQueue)]) + replaceQueues([new BullMQAdapter(codeQueue)]); await request(router) .get('/api/queues') @@ -133,10 +133,10 @@ describe('happy', () => { "used_memory": Any, }, } - `, - ) - }) - }) + ` + ); + }); + }); it('should be able to replace queues without initial set', async () => { const codeQueue = new Queue('Code', { @@ -144,11 +144,11 @@ describe('happy', () => { host: 'localhost', port: 6379, }, - }) + }); - const { router, replaceQueues } = createBullBoard([]) + const { router, replaceQueues } = createBullBoard([]); - replaceQueues([new BullMQAdapter(codeQueue)]) + replaceQueues([new BullMQAdapter(codeQueue)]); await request(router) .get('/api/queues') @@ -192,8 +192,8 @@ describe('happy', () => { "used_memory": Any, }, } - `, - ) - }) - }) -}) + ` + ); + }); + }); +}); diff --git a/tests/api/public-interface.spec.ts b/tests/api/public-interface.spec.ts index d4b882eb..d448769c 100644 --- a/tests/api/public-interface.spec.ts +++ b/tests/api/public-interface.spec.ts @@ -1,4 +1,4 @@ -import * as bullBoard from '../../src' +import * as bullBoard from '../../src'; describe('lib public interface', () => { it('should save the interface', () => { @@ -6,6 +6,6 @@ describe('lib public interface', () => { Object { "createBullBoard": [Function], } - `) - }) -}) + `); + }); +}); diff --git a/tests/dockest.ts b/tests/dockest.ts index 0b40d899..365b0d2f 100644 --- a/tests/dockest.ts +++ b/tests/dockest.ts @@ -1,17 +1,17 @@ -import { Dockest, logLevel } from 'dockest' +import { Dockest, logLevel } from 'dockest'; const { run } = new Dockest({ dumpErrors: true, jestLib: require('jest'), logLevel: logLevel.DEBUG, -}) +}); run([ { serviceName: 'redis', readinessCheck: async ({ defaultReadinessChecks: { redis } }) => { - await redis() + await redis(); }, }, // eslint-disable-next-line no-console -]).catch((e) => console.error(e)) +]).catch((e) => console.error(e)); diff --git a/webpack.config.js b/webpack.config.js index 9d427ff5..a4afc195 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -1,17 +1,17 @@ /* eslint-disable @typescript-eslint/no-var-requires */ -const path = require('path') -const webpack = require('webpack') -const MiniCssExtractPlugin = require('mini-css-extract-plugin') -const HtmlWebpackPlugin = require('html-webpack-plugin') -const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin') -const CssMinimizerPlugin = require('css-minimizer-webpack-plugin') -const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin') +const path = require('path'); +const webpack = require('webpack'); +const MiniCssExtractPlugin = require('mini-css-extract-plugin'); +const HtmlWebpackPlugin = require('html-webpack-plugin'); +const ForkTsCheckerWebpackPlugin = require('fork-ts-checker-webpack-plugin'); +const CssMinimizerPlugin = require('css-minimizer-webpack-plugin'); +const ReactRefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin'); -const isProd = process.env.NODE_ENV === 'production' -const devServerPort = 9000 -const basePath = '<%= basePath %>' -const pkg = require('./package.json') +const isProd = process.env.NODE_ENV === 'production'; +const devServerPort = 9000; +const basePath = '<%= basePath %>'; +const pkg = require('./package.json'); module.exports = { mode: 'development', @@ -75,7 +75,7 @@ module.exports = { }, optimization: { minimizer: [isProd && `...`, isProd && new CssMinimizerPlugin()].filter( - Boolean, + Boolean ), chunkIds: 'named', splitChunks: { @@ -118,4 +118,4 @@ module.exports = { open: true, openPage: 'ui', }, -} +}; diff --git a/yarn.lock b/yarn.lock index 4f66aadc..0d666b1b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1337,6 +1337,677 @@ "@types/yargs" "^15.0.0" chalk "^4.0.0" +"@lerna/add@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/add/-/add-4.0.0.tgz#c36f57d132502a57b9e7058d1548b7a565ef183f" + integrity sha512-cpmAH1iS3k8JBxNvnMqrGTTjbY/ZAiKa1ChJzFevMYY3eeqbvhsBKnBcxjRXtdrJ6bd3dCQM+ZtK+0i682Fhng== + dependencies: + "@lerna/bootstrap" "4.0.0" + "@lerna/command" "4.0.0" + "@lerna/filter-options" "4.0.0" + "@lerna/npm-conf" "4.0.0" + "@lerna/validation-error" "4.0.0" + dedent "^0.7.0" + npm-package-arg "^8.1.0" + p-map "^4.0.0" + pacote "^11.2.6" + semver "^7.3.4" + +"@lerna/bootstrap@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/bootstrap/-/bootstrap-4.0.0.tgz#5f5c5e2c6cfc8fcec50cb2fbe569a8c607101891" + integrity sha512-RkS7UbeM2vu+kJnHzxNRCLvoOP9yGNgkzRdy4UV2hNalD7EP41bLvRVOwRYQ7fhc2QcbhnKNdOBihYRL0LcKtw== + dependencies: + "@lerna/command" "4.0.0" + "@lerna/filter-options" "4.0.0" + "@lerna/has-npm-version" "4.0.0" + "@lerna/npm-install" "4.0.0" + "@lerna/package-graph" "4.0.0" + "@lerna/pulse-till-done" "4.0.0" + "@lerna/rimraf-dir" "4.0.0" + "@lerna/run-lifecycle" "4.0.0" + "@lerna/run-topologically" "4.0.0" + "@lerna/symlink-binary" "4.0.0" + "@lerna/symlink-dependencies" "4.0.0" + "@lerna/validation-error" "4.0.0" + dedent "^0.7.0" + get-port "^5.1.1" + multimatch "^5.0.0" + npm-package-arg "^8.1.0" + npmlog "^4.1.2" + p-map "^4.0.0" + p-map-series "^2.1.0" + p-waterfall "^2.1.1" + read-package-tree "^5.3.1" + semver "^7.3.4" + +"@lerna/changed@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/changed/-/changed-4.0.0.tgz#b9fc76cea39b9292a6cd263f03eb57af85c9270b" + integrity sha512-cD+KuPRp6qiPOD+BO6S6SN5cARspIaWSOqGBpGnYzLb4uWT8Vk4JzKyYtc8ym1DIwyoFXHosXt8+GDAgR8QrgQ== + dependencies: + "@lerna/collect-updates" "4.0.0" + "@lerna/command" "4.0.0" + "@lerna/listable" "4.0.0" + "@lerna/output" "4.0.0" + +"@lerna/check-working-tree@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/check-working-tree/-/check-working-tree-4.0.0.tgz#257e36a602c00142e76082a19358e3e1ae8dbd58" + integrity sha512-/++bxM43jYJCshBiKP5cRlCTwSJdRSxVmcDAXM+1oUewlZJVSVlnks5eO0uLxokVFvLhHlC5kHMc7gbVFPHv6Q== + dependencies: + "@lerna/collect-uncommitted" "4.0.0" + "@lerna/describe-ref" "4.0.0" + "@lerna/validation-error" "4.0.0" + +"@lerna/child-process@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/child-process/-/child-process-4.0.0.tgz#341b96a57dffbd9705646d316e231df6fa4df6e1" + integrity sha512-XtCnmCT9eyVsUUHx6y/CTBYdV9g2Cr/VxyseTWBgfIur92/YKClfEtJTbOh94jRT62hlKLqSvux/UhxXVh613Q== + dependencies: + chalk "^4.1.0" + execa "^5.0.0" + strong-log-transformer "^2.1.0" + +"@lerna/clean@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/clean/-/clean-4.0.0.tgz#8f778b6f2617aa2a936a6b5e085ae62498e57dc5" + integrity sha512-uugG2iN9k45ITx2jtd8nEOoAtca8hNlDCUM0N3lFgU/b1mEQYAPRkqr1qs4FLRl/Y50ZJ41wUz1eazS+d/0osA== + dependencies: + "@lerna/command" "4.0.0" + "@lerna/filter-options" "4.0.0" + "@lerna/prompt" "4.0.0" + "@lerna/pulse-till-done" "4.0.0" + "@lerna/rimraf-dir" "4.0.0" + p-map "^4.0.0" + p-map-series "^2.1.0" + p-waterfall "^2.1.1" + +"@lerna/cli@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/cli/-/cli-4.0.0.tgz#8eabd334558836c1664df23f19acb95e98b5bbf3" + integrity sha512-Neaw3GzFrwZiRZv2g7g6NwFjs3er1vhraIniEs0jjVLPMNC4eata0na3GfE5yibkM/9d3gZdmihhZdZ3EBdvYA== + dependencies: + "@lerna/global-options" "4.0.0" + dedent "^0.7.0" + npmlog "^4.1.2" + yargs "^16.2.0" + +"@lerna/collect-uncommitted@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/collect-uncommitted/-/collect-uncommitted-4.0.0.tgz#855cd64612969371cfc2453b90593053ff1ba779" + integrity sha512-ufSTfHZzbx69YNj7KXQ3o66V4RC76ffOjwLX0q/ab//61bObJ41n03SiQEhSlmpP+gmFbTJ3/7pTe04AHX9m/g== + dependencies: + "@lerna/child-process" "4.0.0" + chalk "^4.1.0" + npmlog "^4.1.2" + +"@lerna/collect-updates@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/collect-updates/-/collect-updates-4.0.0.tgz#8e208b1bafd98a372ff1177f7a5e288f6bea8041" + integrity sha512-bnNGpaj4zuxsEkyaCZLka9s7nMs58uZoxrRIPJ+nrmrZYp1V5rrd+7/NYTuunOhY2ug1sTBvTAxj3NZQ+JKnOw== + dependencies: + "@lerna/child-process" "4.0.0" + "@lerna/describe-ref" "4.0.0" + minimatch "^3.0.4" + npmlog "^4.1.2" + slash "^3.0.0" + +"@lerna/command@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/command/-/command-4.0.0.tgz#991c7971df8f5bf6ae6e42c808869a55361c1b98" + integrity sha512-LM9g3rt5FsPNFqIHUeRwWXLNHJ5NKzOwmVKZ8anSp4e1SPrv2HNc1V02/9QyDDZK/w+5POXH5lxZUI1CHaOK/A== + dependencies: + "@lerna/child-process" "4.0.0" + "@lerna/package-graph" "4.0.0" + "@lerna/project" "4.0.0" + "@lerna/validation-error" "4.0.0" + "@lerna/write-log-file" "4.0.0" + clone-deep "^4.0.1" + dedent "^0.7.0" + execa "^5.0.0" + is-ci "^2.0.0" + npmlog "^4.1.2" + +"@lerna/conventional-commits@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/conventional-commits/-/conventional-commits-4.0.0.tgz#660fb2c7b718cb942ead70110df61f18c6f99750" + integrity sha512-CSUQRjJHFrH8eBn7+wegZLV3OrNc0Y1FehYfYGhjLE2SIfpCL4bmfu/ViYuHh9YjwHaA+4SX6d3hR+xkeseKmw== + dependencies: + "@lerna/validation-error" "4.0.0" + conventional-changelog-angular "^5.0.12" + conventional-changelog-core "^4.2.2" + conventional-recommended-bump "^6.1.0" + fs-extra "^9.1.0" + get-stream "^6.0.0" + lodash.template "^4.5.0" + npm-package-arg "^8.1.0" + npmlog "^4.1.2" + pify "^5.0.0" + semver "^7.3.4" + +"@lerna/create-symlink@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/create-symlink/-/create-symlink-4.0.0.tgz#8c5317ce5ae89f67825443bd7651bf4121786228" + integrity sha512-I0phtKJJdafUiDwm7BBlEUOtogmu8+taxq6PtIrxZbllV9hWg59qkpuIsiFp+no7nfRVuaasNYHwNUhDAVQBig== + dependencies: + cmd-shim "^4.1.0" + fs-extra "^9.1.0" + npmlog "^4.1.2" + +"@lerna/create@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/create/-/create-4.0.0.tgz#b6947e9b5dfb6530321952998948c3e63d64d730" + integrity sha512-mVOB1niKByEUfxlbKTM1UNECWAjwUdiioIbRQZEeEabtjCL69r9rscIsjlGyhGWCfsdAG5wfq4t47nlDXdLLag== + dependencies: + "@lerna/child-process" "4.0.0" + "@lerna/command" "4.0.0" + "@lerna/npm-conf" "4.0.0" + "@lerna/validation-error" "4.0.0" + dedent "^0.7.0" + fs-extra "^9.1.0" + globby "^11.0.2" + init-package-json "^2.0.2" + npm-package-arg "^8.1.0" + p-reduce "^2.1.0" + pacote "^11.2.6" + pify "^5.0.0" + semver "^7.3.4" + slash "^3.0.0" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "^3.0.0" + whatwg-url "^8.4.0" + yargs-parser "20.2.4" + +"@lerna/describe-ref@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/describe-ref/-/describe-ref-4.0.0.tgz#53c53b4ea65fdceffa072a62bfebe6772c45d9ec" + integrity sha512-eTU5+xC4C5Gcgz+Ey4Qiw9nV2B4JJbMulsYJMW8QjGcGh8zudib7Sduj6urgZXUYNyhYpRs+teci9M2J8u+UvQ== + dependencies: + "@lerna/child-process" "4.0.0" + npmlog "^4.1.2" + +"@lerna/diff@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/diff/-/diff-4.0.0.tgz#6d3071817aaa4205a07bf77cfc6e932796d48b92" + integrity sha512-jYPKprQVg41+MUMxx6cwtqsNm0Yxx9GDEwdiPLwcUTFx+/qKCEwifKNJ1oGIPBxyEHX2PFCOjkK39lHoj2qiag== + dependencies: + "@lerna/child-process" "4.0.0" + "@lerna/command" "4.0.0" + "@lerna/validation-error" "4.0.0" + npmlog "^4.1.2" + +"@lerna/exec@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/exec/-/exec-4.0.0.tgz#eb6cb95cb92d42590e9e2d628fcaf4719d4a8be6" + integrity sha512-VGXtL/b/JfY84NB98VWZpIExfhLOzy0ozm/0XaS4a2SmkAJc5CeUfrhvHxxkxiTBLkU+iVQUyYEoAT0ulQ8PCw== + dependencies: + "@lerna/child-process" "4.0.0" + "@lerna/command" "4.0.0" + "@lerna/filter-options" "4.0.0" + "@lerna/profiler" "4.0.0" + "@lerna/run-topologically" "4.0.0" + "@lerna/validation-error" "4.0.0" + p-map "^4.0.0" + +"@lerna/filter-options@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/filter-options/-/filter-options-4.0.0.tgz#ac94cc515d7fa3b47e2f7d74deddeabb1de5e9e6" + integrity sha512-vV2ANOeZhOqM0rzXnYcFFCJ/kBWy/3OA58irXih9AMTAlQLymWAK0akWybl++sUJ4HB9Hx12TOqaXbYS2NM5uw== + dependencies: + "@lerna/collect-updates" "4.0.0" + "@lerna/filter-packages" "4.0.0" + dedent "^0.7.0" + npmlog "^4.1.2" + +"@lerna/filter-packages@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/filter-packages/-/filter-packages-4.0.0.tgz#b1f70d70e1de9cdd36a4e50caa0ac501f8d012f2" + integrity sha512-+4AJIkK7iIiOaqCiVTYJxh/I9qikk4XjNQLhE3kixaqgMuHl1NQ99qXRR0OZqAWB9mh8Z1HA9bM5K1HZLBTOqA== + dependencies: + "@lerna/validation-error" "4.0.0" + multimatch "^5.0.0" + npmlog "^4.1.2" + +"@lerna/get-npm-exec-opts@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-4.0.0.tgz#dc955be94a4ae75c374ef9bce91320887d34608f" + integrity sha512-yvmkerU31CTWS2c7DvmAWmZVeclPBqI7gPVr5VATUKNWJ/zmVcU4PqbYoLu92I9Qc4gY1TuUplMNdNuZTSL7IQ== + dependencies: + npmlog "^4.1.2" + +"@lerna/get-packed@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/get-packed/-/get-packed-4.0.0.tgz#0989d61624ac1f97e393bdad2137c49cd7a37823" + integrity sha512-rfWONRsEIGyPJTxFzC8ECb3ZbsDXJbfqWYyeeQQDrJRPnEJErlltRLPLgC2QWbxFgFPsoDLeQmFHJnf0iDfd8w== + dependencies: + fs-extra "^9.1.0" + ssri "^8.0.1" + tar "^6.1.0" + +"@lerna/github-client@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/github-client/-/github-client-4.0.0.tgz#2ced67721363ef70f8e12ffafce4410918f4a8a4" + integrity sha512-2jhsldZtTKXYUBnOm23Lb0Fx8G4qfSXF9y7UpyUgWUj+YZYd+cFxSuorwQIgk5P4XXrtVhsUesIsli+BYSThiw== + dependencies: + "@lerna/child-process" "4.0.0" + "@octokit/plugin-enterprise-rest" "^6.0.1" + "@octokit/rest" "^18.1.0" + git-url-parse "^11.4.4" + npmlog "^4.1.2" + +"@lerna/gitlab-client@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/gitlab-client/-/gitlab-client-4.0.0.tgz#00dad73379c7b38951d4b4ded043504c14e2b67d" + integrity sha512-OMUpGSkeDWFf7BxGHlkbb35T7YHqVFCwBPSIR6wRsszY8PAzCYahtH3IaJzEJyUg6vmZsNl0FSr3pdA2skhxqA== + dependencies: + node-fetch "^2.6.1" + npmlog "^4.1.2" + whatwg-url "^8.4.0" + +"@lerna/global-options@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/global-options/-/global-options-4.0.0.tgz#c7d8b0de6a01d8a845e2621ea89e7f60f18c6a5f" + integrity sha512-TRMR8afAHxuYBHK7F++Ogop2a82xQjoGna1dvPOY6ltj/pEx59pdgcJfYcynYqMkFIk8bhLJJN9/ndIfX29FTQ== + +"@lerna/has-npm-version@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/has-npm-version/-/has-npm-version-4.0.0.tgz#d3fc3292c545eb28bd493b36e6237cf0279f631c" + integrity sha512-LQ3U6XFH8ZmLCsvsgq1zNDqka0Xzjq5ibVN+igAI5ccRWNaUsE/OcmsyMr50xAtNQMYMzmpw5GVLAivT2/YzCg== + dependencies: + "@lerna/child-process" "4.0.0" + semver "^7.3.4" + +"@lerna/import@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/import/-/import-4.0.0.tgz#bde656c4a451fa87ae41733ff8a8da60547c5465" + integrity sha512-FaIhd+4aiBousKNqC7TX1Uhe97eNKf5/SC7c5WZANVWtC7aBWdmswwDt3usrzCNpj6/Wwr9EtEbYROzxKH8ffg== + dependencies: + "@lerna/child-process" "4.0.0" + "@lerna/command" "4.0.0" + "@lerna/prompt" "4.0.0" + "@lerna/pulse-till-done" "4.0.0" + "@lerna/validation-error" "4.0.0" + dedent "^0.7.0" + fs-extra "^9.1.0" + p-map-series "^2.1.0" + +"@lerna/info@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/info/-/info-4.0.0.tgz#b9fb0e479d60efe1623603958a831a88b1d7f1fc" + integrity sha512-8Uboa12kaCSZEn4XRfPz5KU9XXoexSPS4oeYGj76s2UQb1O1GdnEyfjyNWoUl1KlJ2i/8nxUskpXIftoFYH0/Q== + dependencies: + "@lerna/command" "4.0.0" + "@lerna/output" "4.0.0" + envinfo "^7.7.4" + +"@lerna/init@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/init/-/init-4.0.0.tgz#dadff67e6dfb981e8ccbe0e6a310e837962f6c7a" + integrity sha512-wY6kygop0BCXupzWj5eLvTUqdR7vIAm0OgyV9WHpMYQGfs1V22jhztt8mtjCloD/O0nEe4tJhdG62XU5aYmPNQ== + dependencies: + "@lerna/child-process" "4.0.0" + "@lerna/command" "4.0.0" + fs-extra "^9.1.0" + p-map "^4.0.0" + write-json-file "^4.3.0" + +"@lerna/link@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/link/-/link-4.0.0.tgz#c3a38aabd44279d714e90f2451e31b63f0fb65ba" + integrity sha512-KlvPi7XTAcVOByfaLlOeYOfkkDcd+bejpHMCd1KcArcFTwijOwXOVi24DYomIeHvy6HsX/IUquJ4PPUJIeB4+w== + dependencies: + "@lerna/command" "4.0.0" + "@lerna/package-graph" "4.0.0" + "@lerna/symlink-dependencies" "4.0.0" + p-map "^4.0.0" + slash "^3.0.0" + +"@lerna/list@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/list/-/list-4.0.0.tgz#24b4e6995bd73f81c556793fe502b847efd9d1d7" + integrity sha512-L2B5m3P+U4Bif5PultR4TI+KtW+SArwq1i75QZ78mRYxPc0U/piau1DbLOmwrdqr99wzM49t0Dlvl6twd7GHFg== + dependencies: + "@lerna/command" "4.0.0" + "@lerna/filter-options" "4.0.0" + "@lerna/listable" "4.0.0" + "@lerna/output" "4.0.0" + +"@lerna/listable@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/listable/-/listable-4.0.0.tgz#d00d6cb4809b403f2b0374fc521a78e318b01214" + integrity sha512-/rPOSDKsOHs5/PBLINZOkRIX1joOXUXEtyUs5DHLM8q6/RP668x/1lFhw6Dx7/U+L0+tbkpGtZ1Yt0LewCLgeQ== + dependencies: + "@lerna/query-graph" "4.0.0" + chalk "^4.1.0" + columnify "^1.5.4" + +"@lerna/log-packed@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/log-packed/-/log-packed-4.0.0.tgz#95168fe2e26ac6a71e42f4be857519b77e57a09f" + integrity sha512-+dpCiWbdzgMAtpajLToy9PO713IHoE6GV/aizXycAyA07QlqnkpaBNZ8DW84gHdM1j79TWockGJo9PybVhrrZQ== + dependencies: + byte-size "^7.0.0" + columnify "^1.5.4" + has-unicode "^2.0.1" + npmlog "^4.1.2" + +"@lerna/npm-conf@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/npm-conf/-/npm-conf-4.0.0.tgz#b259fd1e1cee2bf5402b236e770140ff9ade7fd2" + integrity sha512-uS7H02yQNq3oejgjxAxqq/jhwGEE0W0ntr8vM3EfpCW1F/wZruwQw+7bleJQ9vUBjmdXST//tk8mXzr5+JXCfw== + dependencies: + config-chain "^1.1.12" + pify "^5.0.0" + +"@lerna/npm-dist-tag@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/npm-dist-tag/-/npm-dist-tag-4.0.0.tgz#d1e99b4eccd3414142f0548ad331bf2d53f3257a" + integrity sha512-F20sg28FMYTgXqEQihgoqSfwmq+Id3zT23CnOwD+XQMPSy9IzyLf1fFVH319vXIw6NF6Pgs4JZN2Qty6/CQXGw== + dependencies: + "@lerna/otplease" "4.0.0" + npm-package-arg "^8.1.0" + npm-registry-fetch "^9.0.0" + npmlog "^4.1.2" + +"@lerna/npm-install@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/npm-install/-/npm-install-4.0.0.tgz#31180be3ab3b7d1818a1a0c206aec156b7094c78" + integrity sha512-aKNxq2j3bCH3eXl3Fmu4D54s/YLL9WSwV8W7X2O25r98wzrO38AUN6AB9EtmAx+LV/SP15et7Yueg9vSaanRWg== + dependencies: + "@lerna/child-process" "4.0.0" + "@lerna/get-npm-exec-opts" "4.0.0" + fs-extra "^9.1.0" + npm-package-arg "^8.1.0" + npmlog "^4.1.2" + signal-exit "^3.0.3" + write-pkg "^4.0.0" + +"@lerna/npm-publish@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/npm-publish/-/npm-publish-4.0.0.tgz#84eb62e876fe949ae1fd62c60804423dbc2c4472" + integrity sha512-vQb7yAPRo5G5r77DRjHITc9piR9gvEKWrmfCH7wkfBnGWEqu7n8/4bFQ7lhnkujvc8RXOsYpvbMQkNfkYibD/w== + dependencies: + "@lerna/otplease" "4.0.0" + "@lerna/run-lifecycle" "4.0.0" + fs-extra "^9.1.0" + libnpmpublish "^4.0.0" + npm-package-arg "^8.1.0" + npmlog "^4.1.2" + pify "^5.0.0" + read-package-json "^3.0.0" + +"@lerna/npm-run-script@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/npm-run-script/-/npm-run-script-4.0.0.tgz#dfebf4f4601442e7c0b5214f9fb0d96c9350743b" + integrity sha512-Jmyh9/IwXJjOXqKfIgtxi0bxi1pUeKe5bD3S81tkcy+kyng/GNj9WSqD5ZggoNP2NP//s4CLDAtUYLdP7CU9rA== + dependencies: + "@lerna/child-process" "4.0.0" + "@lerna/get-npm-exec-opts" "4.0.0" + npmlog "^4.1.2" + +"@lerna/otplease@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/otplease/-/otplease-4.0.0.tgz#84972eb43448f8a1077435ba1c5e59233b725850" + integrity sha512-Sgzbqdk1GH4psNiT6hk+BhjOfIr/5KhGBk86CEfHNJTk9BK4aZYyJD4lpDbDdMjIV4g03G7pYoqHzH765T4fxw== + dependencies: + "@lerna/prompt" "4.0.0" + +"@lerna/output@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/output/-/output-4.0.0.tgz#b1d72215c0e35483e4f3e9994debc82c621851f2" + integrity sha512-Un1sHtO1AD7buDQrpnaYTi2EG6sLF+KOPEAMxeUYG5qG3khTs2Zgzq5WE3dt2N/bKh7naESt20JjIW6tBELP0w== + dependencies: + npmlog "^4.1.2" + +"@lerna/pack-directory@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/pack-directory/-/pack-directory-4.0.0.tgz#8b617db95d20792f043aaaa13a9ccc0e04cb4c74" + integrity sha512-NJrmZNmBHS+5aM+T8N6FVbaKFScVqKlQFJNY2k7nsJ/uklNKsLLl6VhTQBPwMTbf6Tf7l6bcKzpy7aePuq9UiQ== + dependencies: + "@lerna/get-packed" "4.0.0" + "@lerna/package" "4.0.0" + "@lerna/run-lifecycle" "4.0.0" + npm-packlist "^2.1.4" + npmlog "^4.1.2" + tar "^6.1.0" + temp-write "^4.0.0" + +"@lerna/package-graph@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/package-graph/-/package-graph-4.0.0.tgz#16a00253a8ac810f72041481cb46bcee8d8123dd" + integrity sha512-QED2ZCTkfXMKFoTGoccwUzjHtZMSf3UKX14A4/kYyBms9xfFsesCZ6SLI5YeySEgcul8iuIWfQFZqRw+Qrjraw== + dependencies: + "@lerna/prerelease-id-from-version" "4.0.0" + "@lerna/validation-error" "4.0.0" + npm-package-arg "^8.1.0" + npmlog "^4.1.2" + semver "^7.3.4" + +"@lerna/package@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/package/-/package-4.0.0.tgz#1b4c259c4bcff45c876ee1d591a043aacbc0d6b7" + integrity sha512-l0M/izok6FlyyitxiQKr+gZLVFnvxRQdNhzmQ6nRnN9dvBJWn+IxxpM+cLqGACatTnyo9LDzNTOj2Db3+s0s8Q== + dependencies: + load-json-file "^6.2.0" + npm-package-arg "^8.1.0" + write-pkg "^4.0.0" + +"@lerna/prerelease-id-from-version@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-4.0.0.tgz#c7e0676fcee1950d85630e108eddecdd5b48c916" + integrity sha512-GQqguzETdsYRxOSmdFZ6zDBXDErIETWOqomLERRY54f4p+tk4aJjoVdd9xKwehC9TBfIFvlRbL1V9uQGHh1opg== + dependencies: + semver "^7.3.4" + +"@lerna/profiler@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/profiler/-/profiler-4.0.0.tgz#8a53ab874522eae15d178402bff90a14071908e9" + integrity sha512-/BaEbqnVh1LgW/+qz8wCuI+obzi5/vRE8nlhjPzdEzdmWmZXuCKyWSEzAyHOJWw1ntwMiww5dZHhFQABuoFz9Q== + dependencies: + fs-extra "^9.1.0" + npmlog "^4.1.2" + upath "^2.0.1" + +"@lerna/project@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/project/-/project-4.0.0.tgz#ff84893935833533a74deff30c0e64ddb7f0ba6b" + integrity sha512-o0MlVbDkD5qRPkFKlBZsXZjoNTWPyuL58564nSfZJ6JYNmgAptnWPB2dQlAc7HWRZkmnC2fCkEdoU+jioPavbg== + dependencies: + "@lerna/package" "4.0.0" + "@lerna/validation-error" "4.0.0" + cosmiconfig "^7.0.0" + dedent "^0.7.0" + dot-prop "^6.0.1" + glob-parent "^5.1.1" + globby "^11.0.2" + load-json-file "^6.2.0" + npmlog "^4.1.2" + p-map "^4.0.0" + resolve-from "^5.0.0" + write-json-file "^4.3.0" + +"@lerna/prompt@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/prompt/-/prompt-4.0.0.tgz#5ec69a803f3f0db0ad9f221dad64664d3daca41b" + integrity sha512-4Ig46oCH1TH5M7YyTt53fT6TuaKMgqUUaqdgxvp6HP6jtdak6+amcsqB8YGz2eQnw/sdxunx84DfI9XpoLj4bQ== + dependencies: + inquirer "^7.3.3" + npmlog "^4.1.2" + +"@lerna/publish@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/publish/-/publish-4.0.0.tgz#f67011305adeba120066a3b6d984a5bb5fceef65" + integrity sha512-K8jpqjHrChH22qtkytA5GRKIVFEtqBF6JWj1I8dWZtHs4Jywn8yB1jQ3BAMLhqmDJjWJtRck0KXhQQKzDK2UPg== + dependencies: + "@lerna/check-working-tree" "4.0.0" + "@lerna/child-process" "4.0.0" + "@lerna/collect-updates" "4.0.0" + "@lerna/command" "4.0.0" + "@lerna/describe-ref" "4.0.0" + "@lerna/log-packed" "4.0.0" + "@lerna/npm-conf" "4.0.0" + "@lerna/npm-dist-tag" "4.0.0" + "@lerna/npm-publish" "4.0.0" + "@lerna/otplease" "4.0.0" + "@lerna/output" "4.0.0" + "@lerna/pack-directory" "4.0.0" + "@lerna/prerelease-id-from-version" "4.0.0" + "@lerna/prompt" "4.0.0" + "@lerna/pulse-till-done" "4.0.0" + "@lerna/run-lifecycle" "4.0.0" + "@lerna/run-topologically" "4.0.0" + "@lerna/validation-error" "4.0.0" + "@lerna/version" "4.0.0" + fs-extra "^9.1.0" + libnpmaccess "^4.0.1" + npm-package-arg "^8.1.0" + npm-registry-fetch "^9.0.0" + npmlog "^4.1.2" + p-map "^4.0.0" + p-pipe "^3.1.0" + pacote "^11.2.6" + semver "^7.3.4" + +"@lerna/pulse-till-done@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/pulse-till-done/-/pulse-till-done-4.0.0.tgz#04bace7d483a8205c187b806bcd8be23d7bb80a3" + integrity sha512-Frb4F7QGckaybRhbF7aosLsJ5e9WuH7h0KUkjlzSByVycxY91UZgaEIVjS2oN9wQLrheLMHl6SiFY0/Pvo0Cxg== + dependencies: + npmlog "^4.1.2" + +"@lerna/query-graph@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/query-graph/-/query-graph-4.0.0.tgz#09dd1c819ac5ee3f38db23931143701f8a6eef63" + integrity sha512-YlP6yI3tM4WbBmL9GCmNDoeQyzcyg1e4W96y/PKMZa5GbyUvkS2+Jc2kwPD+5KcXou3wQZxSPzR3Te5OenaDdg== + dependencies: + "@lerna/package-graph" "4.0.0" + +"@lerna/resolve-symlink@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/resolve-symlink/-/resolve-symlink-4.0.0.tgz#6d006628a210c9b821964657a9e20a8c9a115e14" + integrity sha512-RtX8VEUzqT+uLSCohx8zgmjc6zjyRlh6i/helxtZTMmc4+6O4FS9q5LJas2uGO2wKvBlhcD6siibGt7dIC3xZA== + dependencies: + fs-extra "^9.1.0" + npmlog "^4.1.2" + read-cmd-shim "^2.0.0" + +"@lerna/rimraf-dir@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/rimraf-dir/-/rimraf-dir-4.0.0.tgz#2edf3b62d4eb0ef4e44e430f5844667d551ec25a" + integrity sha512-QNH9ABWk9mcMJh2/muD9iYWBk1oQd40y6oH+f3wwmVGKYU5YJD//+zMiBI13jxZRtwBx0vmBZzkBkK1dR11cBg== + dependencies: + "@lerna/child-process" "4.0.0" + npmlog "^4.1.2" + path-exists "^4.0.0" + rimraf "^3.0.2" + +"@lerna/run-lifecycle@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/run-lifecycle/-/run-lifecycle-4.0.0.tgz#e648a46f9210a9bcd7c391df6844498cb5079334" + integrity sha512-IwxxsajjCQQEJAeAaxF8QdEixfI7eLKNm4GHhXHrgBu185JcwScFZrj9Bs+PFKxwb+gNLR4iI5rpUdY8Y0UdGQ== + dependencies: + "@lerna/npm-conf" "4.0.0" + npm-lifecycle "^3.1.5" + npmlog "^4.1.2" + +"@lerna/run-topologically@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/run-topologically/-/run-topologically-4.0.0.tgz#af846eeee1a09b0c2be0d1bfb5ef0f7b04bb1827" + integrity sha512-EVZw9hGwo+5yp+VL94+NXRYisqgAlj0jWKWtAIynDCpghRxCE5GMO3xrQLmQgqkpUl9ZxQFpICgYv5DW4DksQA== + dependencies: + "@lerna/query-graph" "4.0.0" + p-queue "^6.6.2" + +"@lerna/run@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/run/-/run-4.0.0.tgz#4bc7fda055a729487897c23579694f6183c91262" + integrity sha512-9giulCOzlMPzcZS/6Eov6pxE9gNTyaXk0Man+iCIdGJNMrCnW7Dme0Z229WWP/UoxDKg71F2tMsVVGDiRd8fFQ== + dependencies: + "@lerna/command" "4.0.0" + "@lerna/filter-options" "4.0.0" + "@lerna/npm-run-script" "4.0.0" + "@lerna/output" "4.0.0" + "@lerna/profiler" "4.0.0" + "@lerna/run-topologically" "4.0.0" + "@lerna/timer" "4.0.0" + "@lerna/validation-error" "4.0.0" + p-map "^4.0.0" + +"@lerna/symlink-binary@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/symlink-binary/-/symlink-binary-4.0.0.tgz#21009f62d53a425f136cb4c1a32c6b2a0cc02d47" + integrity sha512-zualodWC4q1QQc1pkz969hcFeWXOsVYZC5AWVtAPTDfLl+TwM7eG/O6oP+Rr3fFowspxo6b1TQ6sYfDV6HXNWA== + dependencies: + "@lerna/create-symlink" "4.0.0" + "@lerna/package" "4.0.0" + fs-extra "^9.1.0" + p-map "^4.0.0" + +"@lerna/symlink-dependencies@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/symlink-dependencies/-/symlink-dependencies-4.0.0.tgz#8910eca084ae062642d0490d8972cf2d98e9ebbd" + integrity sha512-BABo0MjeUHNAe2FNGty1eantWp8u83BHSeIMPDxNq0MuW2K3CiQRaeWT3EGPAzXpGt0+hVzBrA6+OT0GPn7Yuw== + dependencies: + "@lerna/create-symlink" "4.0.0" + "@lerna/resolve-symlink" "4.0.0" + "@lerna/symlink-binary" "4.0.0" + fs-extra "^9.1.0" + p-map "^4.0.0" + p-map-series "^2.1.0" + +"@lerna/timer@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/timer/-/timer-4.0.0.tgz#a52e51bfcd39bfd768988049ace7b15c1fd7a6da" + integrity sha512-WFsnlaE7SdOvjuyd05oKt8Leg3ENHICnvX3uYKKdByA+S3g+TCz38JsNs7OUZVt+ba63nC2nbXDlUnuT2Xbsfg== + +"@lerna/validation-error@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/validation-error/-/validation-error-4.0.0.tgz#af9d62fe8304eaa2eb9a6ba1394f9aa807026d35" + integrity sha512-1rBOM5/koiVWlRi3V6dB863E1YzJS8v41UtsHgMr6gB2ncJ2LsQtMKlJpi3voqcgh41H8UsPXR58RrrpPpufyw== + dependencies: + npmlog "^4.1.2" + +"@lerna/version@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/version/-/version-4.0.0.tgz#532659ec6154d8a8789c5ab53878663e244e3228" + integrity sha512-otUgiqs5W9zGWJZSCCMRV/2Zm2A9q9JwSDS7s/tlKq4mWCYriWo7+wsHEA/nPTMDyYyBO5oyZDj+3X50KDUzeA== + dependencies: + "@lerna/check-working-tree" "4.0.0" + "@lerna/child-process" "4.0.0" + "@lerna/collect-updates" "4.0.0" + "@lerna/command" "4.0.0" + "@lerna/conventional-commits" "4.0.0" + "@lerna/github-client" "4.0.0" + "@lerna/gitlab-client" "4.0.0" + "@lerna/output" "4.0.0" + "@lerna/prerelease-id-from-version" "4.0.0" + "@lerna/prompt" "4.0.0" + "@lerna/run-lifecycle" "4.0.0" + "@lerna/run-topologically" "4.0.0" + "@lerna/validation-error" "4.0.0" + chalk "^4.1.0" + dedent "^0.7.0" + load-json-file "^6.2.0" + minimatch "^3.0.4" + npmlog "^4.1.2" + p-map "^4.0.0" + p-pipe "^3.1.0" + p-reduce "^2.1.0" + p-waterfall "^2.1.1" + semver "^7.3.4" + slash "^3.0.0" + temp-write "^4.0.0" + write-json-file "^4.3.0" + +"@lerna/write-log-file@4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@lerna/write-log-file/-/write-log-file-4.0.0.tgz#18221a38a6a307d6b0a5844dd592ad53fa27091e" + integrity sha512-XRG5BloiArpXRakcnPHmEHJp+4AtnhRtpDIHSghmXD5EichI1uD73J7FgPp30mm2pDRq3FdqB0NbwSEsJ9xFQg== + dependencies: + npmlog "^4.1.2" + write-file-atomic "^3.0.3" + "@nodelib/fs.scandir@2.1.4": version "2.1.4" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" @@ -1358,6 +2029,64 @@ "@nodelib/fs.scandir" "2.1.4" fastq "^1.6.0" +"@npmcli/ci-detect@^1.0.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@npmcli/ci-detect/-/ci-detect-1.3.0.tgz#6c1d2c625fb6ef1b9dea85ad0a5afcbef85ef22a" + integrity sha512-oN3y7FAROHhrAt7Rr7PnTSwrHrZVRTS2ZbyxeQwSSYD0ifwM3YNgQqbaRmjcWoPyq77MjchusjJDspbzMmip1Q== + +"@npmcli/git@^2.0.1": + version "2.0.9" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-2.0.9.tgz#915bbfe66300e67b4da5ef765a4475ffb2ca5b6b" + integrity sha512-hTMbMryvOqGLwnmMBKs5usbPsJtyEsMsgXwJbmNrsEuQQh1LAIMDU77IoOrwkCg+NgQWl+ySlarJASwM3SutCA== + dependencies: + "@npmcli/promise-spawn" "^1.3.2" + lru-cache "^6.0.0" + mkdirp "^1.0.4" + npm-pick-manifest "^6.1.1" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^2.0.2" + +"@npmcli/installed-package-contents@^1.0.6": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" + integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== + dependencies: + npm-bundled "^1.1.1" + npm-normalize-package-bin "^1.0.1" + +"@npmcli/move-file@^1.0.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-1.1.2.tgz#1a82c3e372f7cae9253eb66d72543d6b8685c674" + integrity sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@npmcli/node-gyp@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-1.0.2.tgz#3cdc1f30e9736dbc417373ed803b42b1a0a29ede" + integrity sha512-yrJUe6reVMpktcvagumoqD9r08fH1iRo01gn1u0zoCApa9lnZGEigVKUd2hzsCId4gdtkZZIVscLhNxMECKgRg== + +"@npmcli/promise-spawn@^1.2.0", "@npmcli/promise-spawn@^1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz#42d4e56a8e9274fba180dabc0aea6e38f29274f5" + integrity sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg== + dependencies: + infer-owner "^1.0.4" + +"@npmcli/run-script@^1.8.2": + version "1.8.5" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-1.8.5.tgz#f250a0c5e1a08a792d775a315d0ff42fc3a51e1d" + integrity sha512-NQspusBCpTjNwNRFMtz2C5MxoxyzlbuJ4YEhxAKrIonTiirKDtatsZictx9RgamQIx6+QuHMNmPl0wQdoESs9A== + dependencies: + "@npmcli/node-gyp" "^1.0.2" + "@npmcli/promise-spawn" "^1.3.2" + infer-owner "^1.0.4" + node-gyp "^7.1.0" + read-package-json-fast "^2.0.1" + "@octokit/auth-token@^2.4.4": version "2.4.5" resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.5.tgz#568ccfb8cb46f36441fac094ce34f7a875b197f3" @@ -1401,6 +2130,16 @@ resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-6.1.0.tgz#cf0f859f9a4833b7fa5141b53e1d62d5d1cbc78f" integrity sha512-Z9fDZVbGj4dFLErEoXUSuZhk3wJ8KVGnbrUwoPijsQ9EyNwOeQ+U2jSqaHUz8WtgIWf0aeO59oJyhMpWCKaabg== +"@octokit/openapi-types@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-7.0.0.tgz#0f6992db9854af15eca77d71ab0ec7fad2f20411" + integrity sha512-gV/8DJhAL/04zjTI95a7FhQwS6jlEE0W/7xeYAzuArD0KVAVWDLP2f3vi98hs3HLTczxXdRK/mF0tRoQPpolEw== + +"@octokit/plugin-enterprise-rest@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz#e07896739618dab8da7d4077c658003775f95437" + integrity sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw== + "@octokit/plugin-paginate-rest@^2.6.2": version "2.13.3" resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.13.3.tgz#f0f1792230805108762d87906fb02d573b9e070a" @@ -1421,6 +2160,14 @@ "@octokit/types" "^6.13.0" deprecation "^2.3.1" +"@octokit/plugin-rest-endpoint-methods@5.0.1": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.0.1.tgz#631b8d4edc6798b03489911252a25f2a4e58c594" + integrity sha512-vvWbPtPqLyIzJ7A4IPdTl+8IeuKAwMJ4LjvmqWOOdfSuqWQYZXq2CEd0hsnkidff2YfKlguzujHs/reBdAx8Sg== + dependencies: + "@octokit/types" "^6.13.1" + deprecation "^2.3.1" + "@octokit/request-error@^2.0.0", "@octokit/request-error@^2.0.5": version "2.0.5" resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.5.tgz#72cc91edc870281ad583a42619256b380c600143" @@ -1452,6 +2199,16 @@ "@octokit/plugin-request-log" "^1.0.2" "@octokit/plugin-rest-endpoint-methods" "5.0.0" +"@octokit/rest@^18.1.0": + version "18.5.3" + resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.5.3.tgz#6a2e6006a87ebbc34079c419258dd29ec9ff659d" + integrity sha512-KPAsUCr1DOdLVbZJgGNuE/QVLWEaVBpFQwDAz/2Cnya6uW2wJ/P5RVGk0itx7yyN1aGa8uXm2pri4umEqG1JBA== + dependencies: + "@octokit/core" "^3.2.3" + "@octokit/plugin-paginate-rest" "^2.6.2" + "@octokit/plugin-request-log" "^1.0.2" + "@octokit/plugin-rest-endpoint-methods" "5.0.1" + "@octokit/types@^6.0.3", "@octokit/types@^6.11.0", "@octokit/types@^6.13.0", "@octokit/types@^6.7.1": version "6.13.1" resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.13.1.tgz#85f447f97dc7edb672f221df51f56a51785c131a" @@ -1459,6 +2216,13 @@ dependencies: "@octokit/openapi-types" "^6.0.0" +"@octokit/types@^6.13.1": + version "6.14.2" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.14.2.tgz#64c9457f38fb8522bdbba3c8cc814590a2d61bf5" + integrity sha512-wiQtW9ZSy4OvgQ09iQOdyXYNN60GqjCL/UdMsepDr1Gr0QzpW6irIKbH3REuAHXAhxkEk9/F2a3Gcs1P6kW5jA== + dependencies: + "@octokit/openapi-types" "^7.0.0" + "@pmmmwh/react-refresh-webpack-plugin@^0.4.3": version "0.4.3" resolved "https://registry.yarnpkg.com/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.4.3.tgz#1eec460596d200c0236bf195b078a5d1df89b766" @@ -1509,6 +2273,11 @@ dependencies: defer-to-connect "^2.0.0" +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + "@trysound/sax@0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.1.1.tgz#3348564048e7a2d7398c935d466c0414ebb6a669" @@ -1724,11 +2493,16 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a" integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw== -"@types/minimatch@*": +"@types/minimatch@*", "@types/minimatch@^3.0.3": 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/minimist@^1.2.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.1.tgz#283f669ff76d7b8260df8ab7a4262cc83d988256" + integrity sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg== + "@types/node@*", "@types/node@^14.14.35": version "14.14.41" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.41.tgz#d0b939d94c1d7bd53d04824af45f1139b8c45615" @@ -2144,11 +2918,24 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +JSONStream@^1.0.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0" + integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ== + dependencies: + jsonparse "^1.2.0" + through ">=2.2.7 <3" + abab@^2.0.3, abab@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== +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== + accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" @@ -2190,11 +2977,40 @@ acorn@^8.2.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.2.4.tgz#caba24b08185c3b56e3168e97d15ed17f4d31fd0" integrity sha512-Ibt84YwBDDA890eDiDCEqcbwvHlBvzzDkU2cGBBDDI1QWT12jTiXIOn2CIw5KK4i6N5Z2HUxwYjzriDyqaqqZg== +add-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/add-stream/-/add-stream-1.0.0.tgz#6a7990437ca736d5e1288db92bd3266d5f5cb2aa" + integrity sha1-anmQQ3ynNtXhKI25K9MmbV9csqo= + address@1.1.2, address@^1.0.1: version "1.1.2" resolved "https://registry.yarnpkg.com/address/-/address-1.1.2.tgz#bf1116c9c758c51b7a933d296b72c221ed9428b6" integrity sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA== +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" + +agentkeepalive@^4.1.3: + version "4.1.4" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.1.4.tgz#d928028a4862cb11718e55227872e842a44c945b" + integrity sha512-+V/rGa3EuU74H6wR04plBb7Ks10FbtUQgRj/FQOG7uUIEuaINI+AiqJR1k6t3SVNs7o7ZjIdus6706qqzVq8jQ== + dependencies: + debug "^4.1.0" + depd "^1.1.2" + humanize-ms "^1.2.1" + +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" + ajv-errors@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/ajv-errors/-/ajv-errors-1.0.1.tgz#f35986aceb91afadec4102fbd85014950cefa64d" @@ -2314,6 +3130,24 @@ anymatch@^3.0.3, anymatch@~3.1.1: 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== + +aproba@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" + integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== + +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" + arg@^4.1.0: version "4.1.3" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" @@ -2341,6 +3175,11 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= +array-differ@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-3.0.0.tgz#3cbb3d0f316810eafcc47624734237d6aee4ae6b" + integrity sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg== + array-find-index@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" @@ -2356,6 +3195,11 @@ array-flatten@^2.1.0: resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== +array-ify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-ify/-/array-ify-1.0.0.tgz#9e528762b4a9066ad163a6962a364418e9626ece" + integrity sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4= + array-includes@^3.1.2, array-includes@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.3.tgz#c7f619b382ad2afaf5326cddfdc0afc61af7690a" @@ -2399,6 +3243,21 @@ array.prototype.flatmap@^1.2.4: es-abstract "^1.18.0-next.1" function-bind "^1.1.1" +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +arrify@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +asap@^2.0.0: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" @@ -2816,6 +3675,11 @@ buffer@^5.5.0: base64-js "^1.3.1" ieee754 "^1.1.13" +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= + bull@^3.22.4: version "3.22.4" resolved "https://registry.yarnpkg.com/bull/-/bull-3.22.4.tgz#1bda418d2aebdf892413d0c45d75c8ea5e0fc984" @@ -2846,6 +3710,16 @@ bullmq@^1.24.5: tslib "^1.10.0" uuid "^8.2.0" +byline@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/byline/-/byline-5.0.0.tgz#741c5216468eadc457b03410118ad77de8c1ddb1" + integrity sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE= + +byte-size@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-7.0.1.tgz#b1daf3386de7ab9d706b941a748dbfc71130dee3" + integrity sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A== + bytes@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" @@ -2856,6 +3730,29 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== +cacache@^15.0.5: + version "15.0.6" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-15.0.6.tgz#65a8c580fda15b59150fb76bf3f3a8e45d583099" + integrity sha512-g1WYDMct/jzW+JdWEyjaX2zoBkZ6ZT9VpOyp2I/VMtDsNLffNat3kqPFfi1eDRSK9/SuKGyORDHcQMcPF8sQ/w== + dependencies: + "@npmcli/move-file" "^1.0.1" + chownr "^2.0.0" + fs-minipass "^2.0.0" + glob "^7.1.4" + infer-owner "^1.0.4" + lru-cache "^6.0.0" + minipass "^3.1.1" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.2" + mkdirp "^1.0.3" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.0.2" + unique-filename "^1.1.1" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -2931,6 +3828,15 @@ camelcase-keys@^2.0.0: camelcase "^2.0.0" map-obj "^1.0.0" +camelcase-keys@^6.2.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" + integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== + dependencies: + camelcase "^5.3.1" + map-obj "^4.0.0" + quick-lru "^4.0.1" + camelcase@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" @@ -3053,6 +3959,16 @@ chokidar@^3.4.2, chokidar@^3.5.1: optionalDependencies: fsevents "~2.3.1" +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + chrome-trace-event@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" @@ -3095,6 +4011,11 @@ clean-css@^4.2.3: 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@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" @@ -3135,6 +4056,15 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + clone-deep@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" @@ -3166,11 +4096,23 @@ 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== +cmd-shim@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cmd-shim/-/cmd-shim-4.1.0.tgz#b3a904a6743e9fede4148c6f3800bf2a08135bdd" + integrity sha512-lb9L7EM4I/ZRVuljLPEtUJOP+xiQVknZ4ZMpMgEp4JzNldPb27HU03hi6K1/6CoIuit/Zm/LQXySErFeXxDprw== + dependencies: + mkdirp-infer-owner "^2.0.0" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= +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= + collect-v8-coverage@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" @@ -3229,6 +4171,14 @@ colorette@^1.2.1, colorette@^1.2.2: resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== +columnify@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" + integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= + dependencies: + strip-ansi "^3.0.0" + wcwidth "^1.0.0" + combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -3266,6 +4216,14 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= +compare-func@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/compare-func/-/compare-func-2.0.0.tgz#fb65e75edbddfd2e568554e8b5b05fff7a51fcb3" + integrity sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA== + dependencies: + array-ify "^1.0.0" + dot-prop "^5.1.0" + component-emitter@^1.2.1, component-emitter@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -3296,6 +4254,24 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= +concat-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-2.0.0.tgz#414cf5af790a48c60ab9be4527d56d5e41133cb1" + integrity sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^3.0.2" + typedarray "^0.0.6" + +config-chain@^1.1.12: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + configstore@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/configstore/-/configstore-5.0.1.tgz#d365021b5df4b98cdd187d6a3b0e3f6a7cc5ed96" @@ -3313,6 +4289,11 @@ connect-history-api-fallback@^1.6.0: resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz#8b32089359308d111115d81cad3fceab888f97bc" integrity sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg== +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= + content-disposition@0.5.3: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" @@ -3325,6 +4306,91 @@ content-type@~1.0.4: resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== +conventional-changelog-angular@^5.0.12: + version "5.0.12" + resolved "https://registry.yarnpkg.com/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9" + integrity sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw== + dependencies: + compare-func "^2.0.0" + q "^1.5.1" + +conventional-changelog-core@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/conventional-changelog-core/-/conventional-changelog-core-4.2.2.tgz#f0897df6d53b5d63dec36b9442bd45354f8b3ce5" + integrity sha512-7pDpRUiobQDNkwHyJG7k9f6maPo9tfPzkSWbRq97GGiZqisElhnvUZSvyQH20ogfOjntB5aadvv6NNcKL1sReg== + dependencies: + add-stream "^1.0.0" + conventional-changelog-writer "^4.0.18" + conventional-commits-parser "^3.2.0" + dateformat "^3.0.0" + get-pkg-repo "^1.0.0" + git-raw-commits "^2.0.8" + git-remote-origin-url "^2.0.0" + git-semver-tags "^4.1.1" + lodash "^4.17.15" + normalize-package-data "^3.0.0" + q "^1.5.1" + read-pkg "^3.0.0" + read-pkg-up "^3.0.0" + shelljs "^0.8.3" + through2 "^4.0.0" + +conventional-changelog-preset-loader@^2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz#14a855abbffd59027fd602581f1f34d9862ea44c" + integrity sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g== + +conventional-changelog-writer@^4.0.18: + version "4.1.0" + resolved "https://registry.yarnpkg.com/conventional-changelog-writer/-/conventional-changelog-writer-4.1.0.tgz#1ca7880b75aa28695ad33312a1f2366f4b12659f" + integrity sha512-WwKcUp7WyXYGQmkLsX4QmU42AZ1lqlvRW9mqoyiQzdD+rJWbTepdWoKJuwXTS+yq79XKnQNa93/roViPQrAQgw== + dependencies: + compare-func "^2.0.0" + conventional-commits-filter "^2.0.7" + dateformat "^3.0.0" + handlebars "^4.7.6" + json-stringify-safe "^5.0.1" + lodash "^4.17.15" + meow "^8.0.0" + semver "^6.0.0" + split "^1.0.0" + through2 "^4.0.0" + +conventional-commits-filter@^2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz#f8d9b4f182fce00c9af7139da49365b136c8a0b3" + integrity sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA== + dependencies: + lodash.ismatch "^4.4.0" + modify-values "^1.0.0" + +conventional-commits-parser@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/conventional-commits-parser/-/conventional-commits-parser-3.2.1.tgz#ba44f0b3b6588da2ee9fd8da508ebff50d116ce2" + integrity sha512-OG9kQtmMZBJD/32NEw5IhN5+HnBqVjy03eC+I71I0oQRFA5rOgA4OtPOYG7mz1GkCfCNxn3gKIX8EiHJYuf1cA== + dependencies: + JSONStream "^1.0.4" + is-text-path "^1.0.1" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" + trim-off-newlines "^1.0.0" + +conventional-recommended-bump@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz#cfa623285d1de554012f2ffde70d9c8a22231f55" + integrity sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw== + dependencies: + concat-stream "^2.0.0" + conventional-changelog-preset-loader "^2.3.4" + conventional-commits-filter "^2.0.7" + conventional-commits-parser "^3.2.0" + git-raw-commits "^2.0.8" + git-semver-tags "^4.1.1" + meow "^8.0.0" + q "^1.5.1" + convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" @@ -3633,6 +4699,11 @@ currently-unhandled@^0.4.1: dependencies: array-find-index "^1.0.1" +dargs@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-7.0.0.tgz#04015c41de0bcb69ec84050f3d9be0caf8d6d5cc" + integrity sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg== + dashdash@^1.12.0: version "1.14.1" resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" @@ -3654,6 +4725,11 @@ date-fns@2.21.3: resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.21.3.tgz#8f5f6889d7a96bbcc1f0ea50239b397a83357f9b" integrity sha512-HeYdzCaFflc1i4tGbj7JKMjM4cKGYoyxwcIIkHzNgCkX8xXDNJDZXgDDVchIWpN4eQc3lH37WarduXFZJOtxfw== +dateformat@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" + integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q== + dateformat@~1.0.4-1.2.3: version "1.0.12" resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" @@ -3669,7 +4745,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0: dependencies: ms "2.0.0" -debug@4.3.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: +debug@4, debug@4.3.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== @@ -3683,12 +4759,20 @@ debug@^3.1.1, debug@^3.2.6: dependencies: ms "^2.1.1" -debuglog@^1.0.0: +debuglog@^1.0.0, debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= -decamelize@^1.1.2, decamelize@^1.2.0: +decamelize-keys@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" + integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= + dependencies: + decamelize "^1.1.0" + map-obj "^1.0.0" + +decamelize@^1.1.0, decamelize@^1.1.2, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -3717,6 +4801,11 @@ decompress-response@^6.0.0: dependencies: mimic-response "^3.1.0" +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + deep-equal@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" @@ -3816,12 +4905,17 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + 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: +depd@^1.1.2, depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= @@ -3844,6 +4938,16 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +detect-indent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" + integrity sha1-OHHMCmoALow+Wzz38zYmRnXwa50= + +detect-indent@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-6.0.0.tgz#0abd0f549f69fc6659a254fe96786186b6f528fd" + integrity sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -3862,6 +4966,14 @@ detect-port-alt@1.1.6: address "^1.0.1" debug "^2.6.0" +dezalgo@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.3.tgz#7f742de066fc748bc8db820569dddce49bf0d456" + integrity sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY= + dependencies: + asap "^2.0.0" + wrappy "1" + diff-sequences@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" @@ -4011,13 +5123,20 @@ dot-case@^3.0.4: no-case "^3.0.4" tslib "^2.0.3" -dot-prop@^5.2.0: +dot-prop@^5.1.0, dot-prop@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-5.3.0.tgz#90ccce708cd9cd82cc4dc8c3ddd9abdd55b20e88" integrity sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q== dependencies: is-obj "^2.0.0" +dot-prop@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/dot-prop/-/dot-prop-6.0.1.tgz#fc26b3cf142b9e59b74dbd39ed66ce620c681083" + integrity sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA== + dependencies: + is-obj "^2.0.0" + duplexer3@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" @@ -4085,6 +5204,13 @@ encodeurl@~1.0.2: resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k= +encoding@^0.1.12: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + end-of-stream@^1.1.0: version "1.4.4" resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" @@ -4117,11 +5243,21 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -envinfo@^7.7.3: +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +envinfo@^7.7.3, envinfo@^7.7.4: version "7.8.1" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + errno@^0.1.3: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" @@ -4419,7 +5555,7 @@ etag@~1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= -eventemitter3@^4.0.0: +eventemitter3@^4.0.0, eventemitter3@^4.0.4: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== @@ -4765,6 +5901,13 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" +find-up@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -4903,7 +6046,7 @@ fresh@0.5.2: resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac= -fs-extra@^9.0.0: +fs-extra@^9.0.0, fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -4913,6 +6056,20 @@ fs-extra@^9.0.0: jsonfile "^6.0.1" universalify "^2.0.0" +fs-minipass@^1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + +fs-minipass@^2.0.0, fs-minipass@^2.1.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-monkey@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3" @@ -4946,12 +6103,26 @@ functional-red-black-tree@^1.0.1: resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + gensync@^1.0.0-beta.2: version "1.0.0-beta.2" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1: +get-caller-file@^2.0.1, 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== @@ -4970,6 +6141,17 @@ get-package-type@^0.1.0: resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== +get-pkg-repo@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz#c73b489c06d80cc5536c2c853f9e05232056972d" + integrity sha1-xztInAbYDMVTbCyFP54FIyBWly0= + dependencies: + hosted-git-info "^2.1.4" + meow "^3.3.0" + normalize-package-data "^2.3.0" + parse-github-repo-url "^1.3.0" + through2 "^2.0.0" + get-port@^5.0.0, get-port@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" @@ -5011,6 +6193,33 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +git-raw-commits@^2.0.8: + version "2.0.10" + resolved "https://registry.yarnpkg.com/git-raw-commits/-/git-raw-commits-2.0.10.tgz#e2255ed9563b1c9c3ea6bd05806410290297bbc1" + integrity sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ== + dependencies: + dargs "^7.0.0" + lodash "^4.17.15" + meow "^8.0.0" + split2 "^3.0.0" + through2 "^4.0.0" + +git-remote-origin-url@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz#5282659dae2107145a11126112ad3216ec5fa65f" + integrity sha1-UoJlna4hBxRaERJhEq0yFuxfpl8= + dependencies: + gitconfiglocal "^1.0.0" + pify "^2.3.0" + +git-semver-tags@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/git-semver-tags/-/git-semver-tags-4.1.1.tgz#63191bcd809b0ec3e151ba4751c16c444e5b5780" + integrity sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA== + dependencies: + meow "^8.0.0" + semver "^6.0.0" + git-up@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/git-up/-/git-up-4.0.2.tgz#10c3d731051b366dc19d3df454bfca3f77913a7c" @@ -5019,13 +6228,20 @@ git-up@^4.0.0: is-ssh "^1.3.0" parse-url "^5.0.0" -git-url-parse@11.4.4: +git-url-parse@11.4.4, git-url-parse@^11.4.4: version "11.4.4" resolved "https://registry.yarnpkg.com/git-url-parse/-/git-url-parse-11.4.4.tgz#5d747debc2469c17bc385719f7d0427802d83d77" integrity sha512-Y4o9o7vQngQDIU9IjyCmRJBin5iYjI5u9ZITnddRZpD7dcCFQj2sL2XuMNbLRE4b4B/4ENPsp2Q8P44fjAZ0Pw== dependencies: git-up "^4.0.0" +gitconfiglocal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz#41d045f3851a5ea88f03f24ca1c6178114464b9b" + integrity sha1-QdBF84UaXqiPA/JMocYXgRRGS5s= + dependencies: + ini "^1.3.2" + glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" @@ -5034,7 +6250,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: +glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.1, glob-parent@~5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -5112,7 +6328,7 @@ globby@11.0.1: merge2 "^1.3.0" slash "^3.0.0" -globby@11.0.3, globby@^11.0.1: +globby@11.0.3, globby@^11.0.1, globby@^11.0.2: version "11.0.3" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.3.tgz#9b1f0cb523e171dd1ad8c7b2a9fb4b644b9593cb" integrity sha512-ffdmosjA807y7+lA1NM0jELARVmYul/715xiILEjo3hBLPTcirgQNnXECn5g3mtR8TOLCVbkfua1Hpen25/Xcg== @@ -5169,7 +6385,7 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4: +graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== @@ -5192,7 +6408,7 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== -handlebars@^4.7.3: +handlebars@^4.7.3, handlebars@^4.7.6: version "4.7.7" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== @@ -5217,6 +6433,11 @@ har-validator@~5.1.3: ajv "^6.12.3" har-schema "^2.0.0" +hard-rejection@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" + integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== + has-ansi@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" @@ -5244,6 +6465,11 @@ has-symbols@^1.0.1, has-symbols@^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, has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -5326,6 +6552,13 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== +hosted-git-info@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" + integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg== + dependencies: + lru-cache "^6.0.0" + hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" @@ -5399,7 +6632,7 @@ htmlparser2@^3.10.1: inherits "^2.0.1" readable-stream "^3.1.1" -http-cache-semantics@^4.0.0: +http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.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== @@ -5446,6 +6679,15 @@ http-parser-js@>=0.5.1: resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.3.tgz#01d2709c79d41698bb01d4decc5e9da4e4a033d9" integrity sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg== +http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + http-proxy-middleware@0.19.1: version "0.19.1" resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz#183c7dc4aa1479150306498c210cdaf96080a43a" @@ -5482,6 +6724,14 @@ http2-wrapper@^1.0.0-beta.5.2: quick-lru "^5.1.1" resolve-alpn "^1.0.0" +https-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" + integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== + dependencies: + agent-base "6" + debug "4" + human-signals@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" @@ -5492,6 +6742,13 @@ 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== +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0= + dependencies: + ms "^2.0.0" + iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -5499,6 +6756,13 @@ iconv-lite@0.4.24, iconv-lite@^0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +iconv-lite@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.2.tgz#ce13d1875b0c3a674bd6a04b7f76b01b1b6ded01" + integrity sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + icss-utils@^5.0.0, icss-utils@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" @@ -5509,6 +6773,13 @@ ieee754@^1.1.13: resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== +ignore-walk@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.4.tgz#c9a09f69b7c7b479a5d74ac1a3c0d4236d2a6335" + integrity sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ== + dependencies: + minimatch "^3.0.4" + ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -5589,6 +6860,11 @@ indexes-of@^1.0.1: resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= +infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -5612,11 +6888,25 @@ ini@2.0.0: resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5" integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA== -ini@^1.3.5, ini@~1.3.0: +ini@^1.3.2, ini@^1.3.4, ini@^1.3.5, 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== +init-package-json@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/init-package-json/-/init-package-json-2.0.3.tgz#c8ae4f2a4ad353bcbc089e5ffe98a8f1a314e8fd" + integrity sha512-tk/gAgbMMxR6fn1MgMaM1HpU1ryAmBWWitnxG5OhuNXeX0cbpbgV5jA4AIpQJVNoyOfOevTtO6WX+rPs+EFqaQ== + dependencies: + glob "^7.1.1" + npm-package-arg "^8.1.2" + promzard "^0.3.0" + read "~1.0.1" + read-package-json "^3.0.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "^3.0.0" + inquirer@8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.0.0.tgz#957a46db1abcf0fdd2ab82deb7470e90afc7d0ac" @@ -5636,6 +6926,25 @@ inquirer@8.0.0: strip-ansi "^6.0.0" through "^2.3.6" +inquirer@^7.3.3: + version "7.3.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.19" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.6.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + internal-ip@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-4.3.0.tgz#845452baad9d2ca3b69c635a137acb9a0dad0907" @@ -5868,6 +7177,13 @@ is-finite@^1.0.0: resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== +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" @@ -5910,6 +7226,11 @@ is-interactive@^1.0.0: resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU= + is-nan@^1.3.0: version "1.3.2" resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" @@ -5974,6 +7295,16 @@ is-path-inside@^3.0.2: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-obj@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + 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" @@ -6038,6 +7369,13 @@ is-symbol@^1.0.2, is-symbol@^1.0.3: dependencies: has-symbols "^1.0.1" +is-text-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-text-path/-/is-text-path-1.0.1.tgz#4e1aa0fb51bfbcb3e92688001397202c1775b66e" + integrity sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4= + dependencies: + text-extensions "^1.0.0" + is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -6601,7 +7939,7 @@ json-buffer@3.0.1: resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== -json-parse-better-errors@^1.0.2: +json-parse-better-errors@^1.0.1, json-parse-better-errors@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== @@ -6631,7 +7969,7 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stringify-safe@~5.0.1: +json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= @@ -6664,6 +8002,11 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +jsonparse@^1.2.0, jsonparse@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA= + jsprim@^1.2.2: version "1.4.1" resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" @@ -6720,7 +8063,7 @@ kind-of@^5.0.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.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== @@ -6742,6 +8085,30 @@ latest-version@^5.1.0: dependencies: package-json "^6.3.0" +lerna@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/lerna/-/lerna-4.0.0.tgz#b139d685d50ea0ca1be87713a7c2f44a5b678e9e" + integrity sha512-DD/i1znurfOmNJb0OBw66NmNqiM8kF6uIrzrJ0wGE3VNdzeOhz9ziWLYiRaZDGGwgbcjOo6eIfcx9O5Qynz+kg== + dependencies: + "@lerna/add" "4.0.0" + "@lerna/bootstrap" "4.0.0" + "@lerna/changed" "4.0.0" + "@lerna/clean" "4.0.0" + "@lerna/cli" "4.0.0" + "@lerna/create" "4.0.0" + "@lerna/diff" "4.0.0" + "@lerna/exec" "4.0.0" + "@lerna/import" "4.0.0" + "@lerna/info" "4.0.0" + "@lerna/init" "4.0.0" + "@lerna/link" "4.0.0" + "@lerna/list" "4.0.0" + "@lerna/publish" "4.0.0" + "@lerna/run" "4.0.0" + "@lerna/version" "4.0.0" + import-local "^3.0.2" + npmlog "^4.1.2" + leven@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" @@ -6763,6 +8130,27 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +libnpmaccess@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/libnpmaccess/-/libnpmaccess-4.0.2.tgz#781832fb7ccb867b26343a75a85ad9c43e50406e" + integrity sha512-avXtJibZuGap0/qADDYqb9zdpgzVu/yG5+tl2sTRa7MCkDNv2ZlGwCYI0r6/+tmqXPj0iB9fKexHz426vB326w== + dependencies: + aproba "^2.0.0" + minipass "^3.1.1" + npm-package-arg "^8.1.2" + npm-registry-fetch "^10.0.0" + +libnpmpublish@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/libnpmpublish/-/libnpmpublish-4.0.1.tgz#08ca2cbb5d7f6be1ce4f3f9c49b3822682bcf166" + integrity sha512-hZCrZ8v4G9YH3DxpIyBdob25ijD5v5LNzRbwsej4pPDopjdcLLj1Widl+BUeFa7D0ble1JYL4F3owjLJqiA8yA== + dependencies: + normalize-package-data "^3.0.2" + npm-package-arg "^8.1.2" + npm-registry-fetch "^10.0.0" + semver "^7.1.3" + ssri "^8.0.1" + lines-and-columns@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" @@ -6779,6 +8167,26 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +load-json-file@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-6.2.0.tgz#5c7770b42cafa97074ca2848707c61662f4251a1" + integrity sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ== + dependencies: + graceful-fs "^4.1.15" + parse-json "^5.0.0" + strip-bom "^4.0.0" + type-fest "^0.6.0" + loader-runner@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" @@ -6802,6 +8210,14 @@ loader-utils@^1.4.0: emojis-list "^3.0.0" json5 "^1.0.1" +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -6824,6 +8240,11 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + lodash.clonedeep@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" @@ -6844,6 +8265,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.ismatch@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz#756cb5150ca3ba6f11085a78849645f188f85f37" + integrity sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc= + lodash.memoize@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" @@ -6854,6 +8280,21 @@ lodash.merge@^4.6.0: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== +lodash.template@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.truncate@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" @@ -6939,6 +8380,14 @@ macos-release@^2.2.0: resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.4.1.tgz#64033d0ec6a5e6375155a74b1a1eba8e509820ac" integrity sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg== +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + 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" @@ -6951,6 +8400,27 @@ make-error@1.x, make-error@^1.1.1: resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== +make-fetch-happen@^8.0.9: + version "8.0.14" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz#aaba73ae0ab5586ad8eaa68bd83332669393e222" + integrity sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ== + dependencies: + agentkeepalive "^4.1.3" + cacache "^15.0.5" + http-cache-semantics "^4.1.0" + http-proxy-agent "^4.0.1" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^6.0.0" + minipass "^3.1.3" + minipass-collect "^1.0.2" + minipass-fetch "^1.3.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + promise-retry "^2.0.1" + socks-proxy-agent "^5.0.0" + ssri "^8.0.0" + makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -6968,6 +8438,11 @@ map-obj@^1.0.0, map-obj@^1.0.1: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= +map-obj@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.2.1.tgz#e4ea399dbc979ae735c83c863dd31bdf364277b7" + integrity sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ== + map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -7016,6 +8491,23 @@ meow@^3.3.0: redent "^1.0.0" trim-newlines "^1.0.0" +meow@^8.0.0: + version "8.1.2" + resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897" + integrity sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q== + dependencies: + "@types/minimist" "^1.2.0" + camelcase-keys "^6.2.2" + decamelize-keys "^1.1.0" + hard-rejection "^2.1.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.0" + read-pkg-up "^7.0.1" + redent "^3.0.0" + trim-newlines "^3.0.0" + type-fest "^0.18.0" + yargs-parser "^20.2.3" + merge-descriptors@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" @@ -7105,6 +8597,11 @@ mimic-response@^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== +min-indent@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" + integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== + mini-create-react-context@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz#072171561bfdc922da08a60c2197a497cc2d1d5e" @@ -7134,11 +8631,97 @@ minimatch@3.0.4, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" +minimist-options@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== + dependencies: + arrify "^1.0.1" + is-plain-obj "^1.1.0" + kind-of "^6.0.3" + minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-fetch@^1.3.0, minipass-fetch@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-1.3.3.tgz#34c7cea038c817a8658461bf35174551dce17a0a" + integrity sha512-akCrLDWfbdAWkMLBxJEeWTdNsjML+dt5YgOI4gJ53vuO0vrmYQkUPxa6j6V65s9CcePIr2SSWqjT2EcrNseryQ== + dependencies: + minipass "^3.1.0" + minipass-sized "^1.0.3" + minizlib "^2.0.0" + optionalDependencies: + encoding "^0.1.12" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-json-stream@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz#7edbb92588fbfc2ff1db2fc10397acb7b6b44aa7" + integrity sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg== + dependencies: + jsonparse "^1.3.1" + minipass "^3.0.0" + +minipass-pipeline@^1.2.2, minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.0, minipass@^3.1.1, minipass@^3.1.3: + 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@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + +minizlib@^2.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" @@ -7147,18 +8730,32 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@1.x, mkdirp@^1.0.4: +mkdirp-infer-owner@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/mkdirp-infer-owner/-/mkdirp-infer-owner-2.0.0.tgz#55d3b368e7d89065c38f32fd38e638f0ab61d316" + integrity sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw== + dependencies: + chownr "^2.0.0" + infer-owner "^1.0.4" + mkdirp "^1.0.3" + +mkdirp@1.x, mkdirp@^1.0.3, mkdirp@^1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -mkdirp@^0.5.1, mkdirp@^0.5.5: +mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.5: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== dependencies: minimist "^1.2.5" +modify-values@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/modify-values/-/modify-values-1.0.1.tgz#b3939fa605546474e3e3e3c63d64bd43b4ee6022" + integrity sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw== + moment-timezone@^0.5.31: version "0.5.33" resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.33.tgz#b252fd6bb57f341c9b59a5ab61a8e51a73bbd22c" @@ -7186,7 +8783,7 @@ ms@2.1.2: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.1.1: +ms@^2.0.0, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -7204,7 +8801,18 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" -mute-stream@0.0.8: +multimatch@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-5.0.0.tgz#932b800963cea7a31a033328fa1e0c3a1874dbe6" + integrity sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA== + dependencies: + "@types/minimatch" "^3.0.3" + array-differ "^3.0.0" + array-union "^2.1.0" + arrify "^2.0.1" + minimatch "^3.0.4" + +mute-stream@0.0.8, mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== @@ -7281,6 +8889,39 @@ node-forge@^0.10.0: resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-0.10.0.tgz#32dea2afb3e9926f02ee5ce8794902691a676bf3" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== +node-gyp@^5.0.2: + version "5.1.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-5.1.1.tgz#eb915f7b631c937d282e33aed44cb7a025f62a3e" + integrity sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw== + dependencies: + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.2" + mkdirp "^0.5.1" + nopt "^4.0.1" + npmlog "^4.1.2" + request "^2.88.0" + rimraf "^2.6.3" + semver "^5.7.1" + tar "^4.4.12" + which "^1.3.1" + +node-gyp@^7.1.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-7.1.2.tgz#21a810aebb187120251c3bcec979af1587b188ae" + integrity sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ== + dependencies: + env-paths "^2.2.0" + glob "^7.1.4" + graceful-fs "^4.2.3" + nopt "^5.0.0" + npmlog "^4.1.2" + request "^2.88.2" + rimraf "^3.0.2" + semver "^7.3.2" + tar "^6.0.2" + which "^2.0.2" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -7308,7 +8949,22 @@ node-releases@^1.1.61, node-releases@^1.1.71: resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" integrity sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg== -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: +nopt@^4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== + dependencies: + abbrev "1" + osenv "^0.1.4" + +nopt@^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-package-data@^2.0.0, normalize-package-data@^2.3.0, normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== @@ -7318,6 +8974,16 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package- semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-package-data@^3.0.0, normalize-package-data@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.2.tgz#cae5c410ae2434f9a6c1baa65d5bc3b9366c8699" + integrity sha512-6CdZocmfGaKnIHPVFhJJZ3GuR8SsLKvDANFp47Jmy51aKIr8akjAWTSxtpI+MBgBFdSMRyo4hMpDlT6dTffgZg== + dependencies: + hosted-git-info "^4.0.1" + resolve "^1.20.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" + normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -7330,20 +8996,109 @@ 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-range@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" - integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha1-LRDAa9/TEuqXd2laTShDlFa3WUI= + +normalize-url@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" + integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== + +normalize-url@^4.1.0, normalize-url@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" + integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== + +npm-bundled@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-install-checks@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-4.0.0.tgz#a37facc763a2fde0497ef2c6d0ac7c3fbe00d7b4" + integrity sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w== + dependencies: + semver "^7.1.1" + +npm-lifecycle@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz#9882d3642b8c82c815782a12e6a1bfeed0026309" + integrity sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g== + dependencies: + byline "^5.0.0" + graceful-fs "^4.1.15" + node-gyp "^5.0.2" + resolve-from "^4.0.0" + slide "^1.1.6" + uid-number "0.0.6" + umask "^1.1.0" + which "^1.3.1" + +npm-normalize-package-bin@^1.0.0, npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +npm-package-arg@^8.0.0, npm-package-arg@^8.0.1, npm-package-arg@^8.1.0, npm-package-arg@^8.1.2: + version "8.1.2" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-8.1.2.tgz#b868016ae7de5619e729993fbd8d11dc3c52ab62" + integrity sha512-6Eem455JsSMJY6Kpd3EyWE+n5hC+g9bSyHr9K9U2zqZb7+02+hObQ2c0+8iDk/mNF+8r1MhY44WypKJAkySIYA== + dependencies: + hosted-git-info "^4.0.1" + semver "^7.3.4" + validate-npm-package-name "^3.0.0" -normalize-url@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-3.3.0.tgz#b2e1c4dc4f7c6d57743df733a4f5978d18650559" - integrity sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg== +npm-packlist@^2.1.4: + version "2.2.2" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-2.2.2.tgz#076b97293fa620f632833186a7a8f65aaa6148c8" + integrity sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg== + dependencies: + glob "^7.1.6" + ignore-walk "^3.0.3" + npm-bundled "^1.1.1" + npm-normalize-package-bin "^1.0.1" + +npm-pick-manifest@^6.0.0, npm-pick-manifest@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz#7b5484ca2c908565f43b7f27644f36bb816f5148" + integrity sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA== + dependencies: + npm-install-checks "^4.0.0" + npm-normalize-package-bin "^1.0.1" + npm-package-arg "^8.1.2" + semver "^7.3.4" -normalize-url@^4.1.0, normalize-url@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.0.tgz#453354087e6ca96957bd8f5baf753f5982142129" - integrity sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ== +npm-registry-fetch@^10.0.0: + version "10.1.1" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-10.1.1.tgz#97bc7a0fca5e8f76cc5162185b8de8caa8bea639" + integrity sha512-F6a3l+ffCQ7hvvN16YG5bpm1rPZntCg66PLHDQ1apWJPOCUVHoKnL2w5fqEaTVhp42dmossTyXeR7hTGirfXrg== + dependencies: + lru-cache "^6.0.0" + make-fetch-happen "^8.0.9" + minipass "^3.1.3" + minipass-fetch "^1.3.0" + minipass-json-stream "^1.0.1" + minizlib "^2.0.0" + npm-package-arg "^8.0.0" + +npm-registry-fetch@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz#86f3feb4ce00313bc0b8f1f8f69daae6face1661" + integrity sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA== + dependencies: + "@npmcli/ci-detect" "^1.0.0" + lru-cache "^6.0.0" + make-fetch-happen "^8.0.9" + minipass "^3.1.3" + minipass-fetch "^1.3.0" + minipass-json-stream "^1.0.1" + minizlib "^2.0.0" + npm-package-arg "^8.0.0" npm-run-path@^2.0.0: version "2.0.2" @@ -7359,6 +9114,16 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: 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@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" @@ -7378,6 +9143,11 @@ num2fraction@^1.2.2: resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= +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= + nwsapi@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" @@ -7388,7 +9158,7 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -object-assign@^4.0.1, object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -7457,7 +9227,7 @@ object.fromentries@^2.0.4: es-abstract "^1.18.0-next.2" has "^1.0.3" -object.getownpropertydescriptors@^2.1.1: +object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.1: version "2.1.2" resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz#1bd63aeacf0d5d2d2f31b5e393b03a7c601a23f7" integrity sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ== @@ -7575,6 +9345,11 @@ original@^1.0.0: dependencies: url-parse "^1.4.3" +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + os-name@4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/os-name/-/os-name-4.0.0.tgz#6c05c09c41c15848ea74658d12c9606f0f286599" @@ -7583,11 +9358,19 @@ os-name@4.0.0: macos-release "^2.2.0" windows-release "^4.0.0" -os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + p-cancelable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-1.1.0.tgz#d078d15a3af409220c886f1d9a0ca2e441ab26cc" @@ -7608,6 +9391,13 @@ p-finally@^1.0.0: resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + p-limit@^2.0.0, p-limit@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" @@ -7622,6 +9412,13 @@ p-limit@^3.0.2, p-limit@^3.1.0: dependencies: yocto-queue "^0.1.0" +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -7643,11 +9440,41 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" +p-map-series@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-2.1.0.tgz#7560d4c452d9da0c07e692fdbfe6e2c81a2a91f2" + integrity sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q== + 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@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-pipe@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-3.1.0.tgz#48b57c922aa2e1af6a6404cb7c6bf0eb9cc8e60e" + integrity sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw== + +p-queue@^6.6.2: + version "6.6.2" + resolved "https://registry.yarnpkg.com/p-queue/-/p-queue-6.6.2.tgz#2068a9dcf8e67dd0ec3e7a2bcb76810faa85e426" + integrity sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ== + dependencies: + eventemitter3 "^4.0.4" + p-timeout "^3.2.0" + +p-reduce@^2.0.0, p-reduce@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-2.1.0.tgz#09408da49507c6c274faa31f28df334bc712b64a" + integrity sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw== + p-retry@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-3.0.1.tgz#316b4c8893e2c8dc1cfa891f406c4b422bebf328" @@ -7662,11 +9489,23 @@ p-timeout@^3.2.0: dependencies: p-finally "^1.0.0" +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + 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== +p-waterfall@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/p-waterfall/-/p-waterfall-2.1.1.tgz#63153a774f472ccdc4eb281cdb2967fcf158b2ee" + integrity sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw== + dependencies: + p-reduce "^2.0.0" + package-json@^6.3.0: version "6.5.0" resolved "https://registry.yarnpkg.com/package-json/-/package-json-6.5.0.tgz#6feedaca35e75725876d0b0e64974697fed145b0" @@ -7677,6 +9516,31 @@ package-json@^6.3.0: registry-url "^5.0.0" semver "^6.2.0" +pacote@^11.2.6: + version "11.3.3" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-11.3.3.tgz#d7d6091464f77c09691699df2ded13ab906b3e68" + integrity sha512-GQxBX+UcVZrrJRYMK2HoG+gPeSUX/rQhnbPkkGrCYa4n2F/bgClFPaMm0nsdnYrxnmUy85uMHoFXZ0jTD0drew== + dependencies: + "@npmcli/git" "^2.0.1" + "@npmcli/installed-package-contents" "^1.0.6" + "@npmcli/promise-spawn" "^1.2.0" + "@npmcli/run-script" "^1.8.2" + cacache "^15.0.5" + chownr "^2.0.0" + fs-minipass "^2.1.0" + infer-owner "^1.0.4" + minipass "^3.1.3" + mkdirp "^1.0.3" + npm-package-arg "^8.0.1" + npm-packlist "^2.1.4" + npm-pick-manifest "^6.0.0" + npm-registry-fetch "^10.0.0" + promise-retry "^2.0.1" + read-package-json-fast "^2.0.1" + rimraf "^3.0.2" + ssri "^8.0.1" + tar "^6.1.0" + param-case@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" @@ -7692,6 +9556,11 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-github-repo-url@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz#9e7d8bb252a6cb6ba42595060b7bf6df3dbc1f50" + integrity sha1-nn2LslKmy2ukJZUGC3v23z28H1A= + parse-github-url@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-1.0.2.tgz#242d3b65cbcdda14bb50439e3242acf6971db395" @@ -7714,6 +9583,14 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + parse-path@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf" @@ -7825,6 +9702,13 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" +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" + path-type@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" @@ -7840,16 +9724,26 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== -pify@^2.0.0: +pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= +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== +pify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== + pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -8558,6 +10452,19 @@ progress@^2.0.0: resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha1-mEcocL8igTL8vdhoEputEsPAKeM= + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + promise.prototype.finally@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/promise.prototype.finally/-/promise.prototype.finally-3.1.2.tgz#b8af89160c9c673cefe3b4c4435b53cfd0287067" @@ -8583,6 +10490,13 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.5" +promzard@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/promzard/-/promzard-0.3.0.tgz#26a5d6ee8c7dee4cb12208305acfb93ba382a9ee" + integrity sha1-JqXW7ox97kyxIggwWs+5O6OCqe4= + dependencies: + read "1" + prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" @@ -8592,6 +10506,11 @@ prop-types@^15.6.2, prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" +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= + protocols@^1.1.0, protocols@^1.4.0: version "1.4.8" resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" @@ -8640,6 +10559,11 @@ pupa@^2.1.1: dependencies: escape-goat "^2.0.0" +q@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= + qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" @@ -8687,6 +10611,11 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +quick-lru@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" + integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== + quick-lru@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-5.1.1.tgz#366493e6b3e42a3a6885e2e99d18f80fb7a8c932" @@ -8827,6 +10756,48 @@ react@17.0.2: loose-envify "^1.1.0" object-assign "^4.1.1" +read-cmd-shim@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-cmd-shim/-/read-cmd-shim-2.0.0.tgz#4a50a71d6f0965364938e9038476f7eede3928d9" + integrity sha512-HJpV9bQpkl6KwjxlJcBoqu9Ba0PQg8TqSNIOrulGt54a0uup0HtevreFHzYzkm0lpnleRdNBzXznKrgxglEHQw== + +read-package-json-fast@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.2.tgz#2dcb24d9e8dd50fb322042c8c35a954e6cc7ac9e" + integrity sha512-5fyFUyO9B799foVk4n6ylcoAktG/FbE3jwRKxvwaeSrIunaoMc0u81dzXxjeAFKOce7O5KncdfwpGvvs6r5PsQ== + dependencies: + json-parse-even-better-errors "^2.3.0" + npm-normalize-package-bin "^1.0.1" + +read-package-json@^2.0.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a" + integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA== + dependencies: + glob "^7.1.1" + json-parse-even-better-errors "^2.3.0" + normalize-package-data "^2.0.0" + npm-normalize-package-bin "^1.0.0" + +read-package-json@^3.0.0, read-package-json@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-3.0.1.tgz#c7108f0b9390257b08c21e3004d2404c806744b9" + integrity sha512-aLcPqxovhJTVJcsnROuuzQvv6oziQx4zd3JvG0vGCL5MjTONUc4uJ90zCBC6R7W7oUKBNoR/F8pkyfVwlbxqng== + dependencies: + glob "^7.1.1" + json-parse-even-better-errors "^2.3.0" + normalize-package-data "^3.0.0" + npm-normalize-package-bin "^1.0.0" + +read-package-tree@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/read-package-tree/-/read-package-tree-5.3.1.tgz#a32cb64c7f31eb8a6f31ef06f9cedf74068fe636" + integrity sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw== + dependencies: + read-package-json "^2.0.0" + readdir-scoped-modules "^1.0.0" + util-promisify "^2.1.0" + read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -8835,6 +10806,14 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" + integrity sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc= + dependencies: + find-up "^2.0.0" + read-pkg "^3.0.0" + read-pkg-up@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" @@ -8853,6 +10832,15 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + read-pkg@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" @@ -8863,7 +10851,23 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -readable-stream@^2.0.1, readable-stream@^2.0.2: +read@1, read@~1.0.1: + version "1.0.7" + resolved "https://registry.yarnpkg.com/read/-/read-1.0.7.tgz#b3da19bd052431a97671d44a42634adf710b40c4" + integrity sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ= + dependencies: + mute-stream "~0.0.4" + +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.0.2, readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@~2.3.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== @@ -8876,14 +10880,15 @@ readable-stream@^2.0.1, readable-stream@^2.0.2: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== +readdir-scoped-modules@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" + integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" + debuglog "^1.0.1" + dezalgo "^1.0.0" + graceful-fs "^4.1.2" + once "^1.3.0" readdirp@^2.2.1: version "2.2.1" @@ -8930,6 +10935,14 @@ redent@^1.0.0: indent-string "^2.1.0" strip-indent "^1.0.1" +redent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" + integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== + dependencies: + indent-string "^4.0.0" + strip-indent "^3.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" @@ -9125,7 +11138,7 @@ request-promise-native@^1.0.9: stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.88.2: +request@^2.88.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -9220,7 +11233,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.0.0, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.18.1, resolve@^1.9.0: +resolve@^1.0.0, resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.18.1, resolve@^1.20.0, 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== @@ -9314,7 +11327,7 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rxjs@^6.5.4, rxjs@^6.6.6: +rxjs@^6.5.4, rxjs@^6.6.0, rxjs@^6.6.6: version "6.6.7" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== @@ -9338,7 +11351,7 @@ safe-regex@^1.1.0: dependencies: ret "~0.1.10" -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== @@ -9428,7 +11441,7 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" -"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0: +"semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0, semver@^5.7.1: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -9438,7 +11451,7 @@ semver@7.0.0: resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== -semver@7.3.5, semver@7.x, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: +semver@7.3.5, semver@7.x, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== @@ -9499,7 +11512,7 @@ serve-static@1.14.1: parseurl "~1.3.3" send "0.17.1" -set-blocking@^2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -9560,7 +11573,7 @@ shell-quote@1.7.2: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== -shelljs@0.8.4: +shelljs@0.8.4, shelljs@^0.8.3: version "0.8.4" resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.4.tgz#de7684feeb767f8716b326078a8a00875890e3c2" integrity sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ== @@ -9614,6 +11627,16 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" +slide@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" + integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= + +smart-buffer@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" + integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -9665,6 +11688,37 @@ sockjs@^0.3.21: uuid "^3.4.0" websocket-driver "^0.7.4" +socks-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.0.tgz#7c0f364e7b1cf4a7a437e71253bed72e9004be60" + integrity sha512-lEpa1zsWCChxiynk+lCycKuC502RxDWLKJZoIhnxrWNjLSDGYRFflHA1/228VkRcnv9TIb8w98derGbpKxJRgA== + dependencies: + agent-base "6" + debug "4" + socks "^2.3.3" + +socks@^2.3.3: + version "2.6.1" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.1.tgz#989e6534a07cf337deb1b1c94aaa44296520d30e" + integrity sha512-kLQ9N5ucj8uIcxrDwjm0Jsqk06xdpBjGNQtpXy4Q8/QY2k+fY7nZH8CARy+hkbG+SGAovmzzuauCpBlb8FrnBA== + dependencies: + ip "^1.1.5" + smart-buffer "^4.1.0" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + dependencies: + is-plain-obj "^1.0.0" + +sort-keys@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-4.2.0.tgz#6b7638cee42c506fff8c1cecde7376d21315be18" + integrity sha512-aUYIEU/UviqPgc8mHR6IW1EGxkAXpeRETYcrzg8cLAvUPZcpAlleSXHV2mY7G12GphSH6Gzv+4MMVSSkbdteHg== + dependencies: + is-plain-obj "^2.0.0" + source-list-map@^2.0.0, source-list-map@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -9770,6 +11824,20 @@ split-string@^3.0.1, split-string@^3.0.2: dependencies: extend-shallow "^3.0.0" +split2@^3.0.0: + 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" + +split@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== + dependencies: + through "2" + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -9790,6 +11858,13 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" +ssri@^8.0.0, ssri@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-8.0.1.tgz#638e4e439e2ffbd2cd289776d5ca457c4f51a2af" + integrity sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ== + dependencies: + minipass "^3.1.1" + stable@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" @@ -9843,6 +11918,23 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2": + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + string-width@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -9918,6 +12010,13 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" @@ -9959,6 +12058,13 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" +strip-indent@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" + integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== + dependencies: + min-indent "^1.0.0" + strip-json-comments@^2.0.0, 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" @@ -9969,6 +12075,15 @@ strip-json-comments@^3.1.0, strip-json-comments@^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== +strong-log-transformer@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz#0f5ed78d325e0421ac6f90f7f10e691d6ae3ae10" + integrity sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA== + dependencies: + duplexer "^0.1.1" + minimist "^1.2.0" + through "^2.3.4" + style-loader@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-2.0.0.tgz#9669602fd4690740eaaec137799a03addbbc393c" @@ -10087,6 +12202,47 @@ tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== +tar@^4.4.12: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.8.6" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + +tar@^6.0.2, 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" + +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/temp-dir/-/temp-dir-1.0.0.tgz#0a7c0ea26d3a39afa7e0ebea9c1fc0bc4daa011d" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= + +temp-write@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/temp-write/-/temp-write-4.0.0.tgz#cd2e0825fc826ae72d201dc26eef3bf7e6fc9320" + integrity sha512-HIeWmj77uOOHb0QX7siN3OtwV3CTntquin6TNVg6SHOqCP3hYKmox90eeFOGaY1MqJ9WYDDjkyZrW6qS5AWpbw== + dependencies: + graceful-fs "^4.1.15" + is-stream "^2.0.0" + make-dir "^3.0.0" + temp-dir "^1.0.0" + uuid "^3.3.2" + terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -10134,6 +12290,11 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" +text-extensions@^1.0.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/text-extensions/-/text-extensions-1.9.0.tgz#1853e45fee39c945ce6f6c36b2d659b5aabc2a26" + integrity sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ== + text-table@0.2.0, text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -10144,7 +12305,22 @@ throat@^5.0.0: resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== -through@^2.3.6: +through2@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through2@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== + dependencies: + readable-stream "3" + +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -10262,6 +12438,16 @@ trim-newlines@^1.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= +trim-newlines@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.0.tgz#79726304a6a898aa8373427298d54c2ee8b1cb30" + integrity sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA== + +trim-off-newlines@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz#9f9ba9d9efa8764c387698bcbfeb2c848f11adb3" + integrity sha1-n5up2e+odkw4dpi8v+sshI8RrbM= + ts-jest@^26.5.6: version "26.5.6" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.5.6.tgz#c32e0746425274e1dfe333f43cd3c800e014ec35" @@ -10365,6 +12551,11 @@ type-detect@4.0.8: resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== +type-fest@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== + type-fest@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" @@ -10375,6 +12566,11 @@ type-fest@^0.21.3: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== +type-fest@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.4.1.tgz#8bdf77743385d8a4f13ba95f610f5ccd68c728f8" + integrity sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw== + type-fest@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" @@ -10400,6 +12596,11 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + typescript@^3.9.3: version "3.9.9" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.9.tgz#e69905c54bc0681d0518bd4d587cc6f2d0b1a674" @@ -10415,6 +12616,16 @@ uglify-js@^3.1.4: resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.4.tgz#592588bb9f47ae03b24916e2471218d914955574" integrity sha512-kv7fCkIXyQIilD5/yQy8O+uagsYIOt5cZvs890W40/e/rvjMSzJw81o9Bg0tkURxzZBROtDQhW2LFjOGoK3RZw== +uid-number@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" + integrity sha1-DqEOgDXo61uOREnwbaHHMGY7qoE= + +umask@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/umask/-/umask-1.1.0.tgz#f29cebf01df517912bb58ff9c4e50fde8e33320d" + integrity sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0= + unbox-primitive@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.1.tgz#085e215625ec3162574dc8859abee78a59b14471" @@ -10468,6 +12679,20 @@ uniqs@^2.0.0: resolved "https://registry.yarnpkg.com/uniqs/-/uniqs-2.0.0.tgz#ffede4b36b25290696e6e165d4a59edb998e6b02" integrity sha1-/+3ks2slKQaW5uFl1KWe25mOawI= +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + unique-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" @@ -10508,6 +12733,11 @@ upath@^1.1.1: resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== +upath@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/upath/-/upath-2.0.1.tgz#50c73dea68d6f6b990f51d279ce6081665d61a8b" + integrity sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w== + update-notifier@5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/update-notifier/-/update-notifier-5.1.0.tgz#4ab0d7c7f36a231dd7316cf7729313f0214d9ad9" @@ -10578,6 +12808,13 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= +util-promisify@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/util-promisify/-/util-promisify-2.1.0.tgz#3c2236476c4d32c5ff3c47002add7c13b9a82a53" + integrity sha1-PCI2R2xNMsX/PEcAKt18E7moKlM= + dependencies: + object.getownpropertydescriptors "^2.0.3" + util.promisify@^1.0.1: version "1.1.1" resolved "https://registry.yarnpkg.com/util.promisify/-/util.promisify-1.1.1.tgz#77832f57ced2c9478174149cae9b96e9918cd54b" @@ -10623,7 +12860,7 @@ v8-to-istanbul@^7.0.0: convert-source-map "^1.6.0" source-map "^0.7.3" -validate-npm-package-license@^3.0.1: +validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== @@ -10631,6 +12868,13 @@ validate-npm-package-license@^3.0.1: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +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" + value-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c" @@ -10703,7 +12947,7 @@ wbuf@^1.1.0, wbuf@^1.7.3: dependencies: minimalistic-assert "^1.0.0" -wcwidth@^1.0.1: +wcwidth@^1.0.0, wcwidth@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= @@ -10876,7 +13120,7 @@ whatwg-mimetype@^2.3.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== -whatwg-url@^8.0.0, whatwg-url@^8.5.0: +whatwg-url@^8.0.0, whatwg-url@^8.4.0, whatwg-url@^8.5.0: version "8.5.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.5.0.tgz#7752b8464fc0903fec89aa9846fc9efe07351fd3" integrity sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg== @@ -10915,6 +13159,13 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + widest-line@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" @@ -10983,7 +13234,16 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^3.0.0: +write-file-atomic@^2.4.2: + version "2.4.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-2.4.3.tgz#1fd2e9ae1df3e75b8d8c367443c692d4ca81f481" + integrity sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ== + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + signal-exit "^3.0.2" + +write-file-atomic@^3.0.0, write-file-atomic@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== @@ -10993,6 +13253,39 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" +write-json-file@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-3.2.0.tgz#65bbdc9ecd8a1458e15952770ccbadfcff5fe62a" + integrity sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ== + dependencies: + detect-indent "^5.0.0" + graceful-fs "^4.1.15" + make-dir "^2.1.0" + pify "^4.0.1" + sort-keys "^2.0.0" + write-file-atomic "^2.4.2" + +write-json-file@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/write-json-file/-/write-json-file-4.3.0.tgz#908493d6fd23225344af324016e4ca8f702dd12d" + integrity sha512-PxiShnxf0IlnQuMYOPPhPkhExoCQuTUNPOa/2JWCYTmBquU9njyyDuwRKN26IZBlp4yn1nt+Agh2HOOBl+55HQ== + dependencies: + detect-indent "^6.0.0" + graceful-fs "^4.1.15" + is-plain-obj "^2.0.0" + make-dir "^3.0.0" + sort-keys "^4.0.0" + write-file-atomic "^3.0.0" + +write-pkg@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/write-pkg/-/write-pkg-4.0.0.tgz#675cc04ef6c11faacbbc7771b24c0abbf2a20039" + integrity sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA== + dependencies: + sort-keys "^2.0.0" + type-fest "^0.4.1" + write-json-file "^3.2.0" + ws@^6.2.1: version "6.2.1" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.1.tgz#442fdf0a47ed64f59b6a5d8ff130f4748ed524fb" @@ -11020,7 +13313,7 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== -xtend@^4.0.0: +xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== @@ -11030,6 +13323,16 @@ y18n@^4.0.0: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== +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@^3.0.0, yallist@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" @@ -11040,7 +13343,12 @@ yaml@1.10.2, yaml@^1.10.0, yaml@^1.7.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@20.2.7, yargs-parser@20.x: +yargs-parser@20.2.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@20.2.7, yargs-parser@20.x, yargs-parser@^20.2.2, yargs-parser@^20.2.3: version "20.2.7" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== @@ -11094,6 +13402,19 @@ yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + 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" + yn@3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"