From abdf65922372389c6a2940712a8a31e30edc762d Mon Sep 17 00:00:00 2001 From: Pankaj Patel Date: Mon, 2 May 2022 10:06:40 +0200 Subject: [PATCH] Ts-codebase (#82) * install-ts * TS-rewrite * rearrage-table-insertion * ci-testing-filters * yml-in-filters * rename-stat.file-to-stat.path * cleanup-ci-filters * coverage-codeclimate * fix-covrage-script * fix-covrage-script * fix-covrage-node-version * fix-covrage-node-version * fix-covrage-node-version * coverage-reporter-settings * release-script-fixes * release-script-artefacts * release-script-artefacts-fixes * changedir-in-publish-workflow * changedir-in-publish-workflow * changedir-in-publish-workflow * changedir-in-publish-workflow * changedir-in-publish-workflow * remove-gpr-publish * dependency-upgrades * remove-unnecessary-files-from-bundle * ready-for-1.0.0 --- .codeclimate.yml | 2 +- .eslintignore | 1 + .eslintrc.json | 9 +- .github/workflows/publish.yml | 41 +- .github/workflows/tests.yml | 29 +- .gitignore | 2 + .npmignore | 15 + .vscode/settings.json | 6 + cli.js | 146 ---- index.d.ts | 46 ++ jest.config.js | 8 + package.json | 39 +- rollup.config.js | 26 + src/constants.js | 79 -- src/constants.ts | 104 +++ ...rStatus.spec.js => colorForStatus.spec.ts} | 4 +- .../{colorForStatus.js => colorForStatus.ts} | 13 +- ...actness.spec.js => getCompactness.spec.ts} | 4 +- .../{getCompactness.js => getCompactness.ts} | 10 +- .../{getHelp.spec.js => getHelp.spec.ts} | 2 +- src/functions/{getHelp.js => getHelp.ts} | 10 +- src/functions/gitCheck.js | 15 - src/functions/gitCheck.ts | 12 + src/functions/index.js | 18 - src/functions/index.ts | 7 + src/functions/initTable.js | 34 - src/functions/initTable.ts | 40 + src/functions/isGit.js | 12 - src/functions/isGit.spec.ts | 18 + src/functions/isGit.ts | 9 + src/functions/prettyPath.js | 10 - ...{prettyPath.spec.js => prettyPath.spec.ts} | 2 +- src/functions/prettyPath.ts | 6 + src/functions/processDirectory.js | 48 -- src/functions/processDirectory.ts | 40 + src/functions/pushToTable.ts | 32 + src/functions/spinner.js | 17 - src/functions/spinner.ts | 12 + src/index.ts | 130 +++ tsconfig.json | 40 + yarn.lock | 748 +++++++++++++++--- 41 files changed, 1281 insertions(+), 565 deletions(-) create mode 100644 .npmignore create mode 100644 .vscode/settings.json delete mode 100755 cli.js create mode 100644 index.d.ts create mode 100644 jest.config.js create mode 100644 rollup.config.js delete mode 100644 src/constants.js create mode 100644 src/constants.ts rename src/functions/{colorForStatus.spec.js => colorForStatus.spec.ts} (53%) rename src/functions/{colorForStatus.js => colorForStatus.ts} (51%) rename src/functions/{getCompactness.spec.js => getCompactness.spec.ts} (93%) rename src/functions/{getCompactness.js => getCompactness.ts} (70%) rename src/functions/{getHelp.spec.js => getHelp.spec.ts} (75%) rename src/functions/{getHelp.js => getHelp.ts} (53%) delete mode 100644 src/functions/gitCheck.js create mode 100644 src/functions/gitCheck.ts delete mode 100644 src/functions/index.js create mode 100644 src/functions/index.ts delete mode 100644 src/functions/initTable.js create mode 100644 src/functions/initTable.ts delete mode 100644 src/functions/isGit.js create mode 100644 src/functions/isGit.spec.ts create mode 100644 src/functions/isGit.ts delete mode 100644 src/functions/prettyPath.js rename src/functions/{prettyPath.spec.js => prettyPath.spec.ts} (87%) create mode 100644 src/functions/prettyPath.ts delete mode 100644 src/functions/processDirectory.js create mode 100644 src/functions/processDirectory.ts create mode 100644 src/functions/pushToTable.ts delete mode 100644 src/functions/spinner.js create mode 100644 src/functions/spinner.ts create mode 100644 src/index.ts create mode 100644 tsconfig.json diff --git a/.codeclimate.yml b/.codeclimate.yml index 3299a251..ec5aa30c 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -15,4 +15,4 @@ ratings: paths: - "**.js" - "**.module" -exclude_paths: [] +exclude_paths: [ '**/*.spec.ts' ] diff --git a/.eslintignore b/.eslintignore index 96212a35..0d14a789 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1 +1,2 @@ **/*{.,-}min.js +dist diff --git a/.eslintrc.json b/.eslintrc.json index e7a031d3..48dae23f 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,14 +1,15 @@ { + "parser": "@typescript-eslint/parser", "parserOptions": { - "ecmaVersion": 2017 + "ecmaVersion": 2018, + "sourceType": "module" }, - "env": { "es6": true }, - "plugins": ["prettier"], + "plugins": ["@typescript-eslint", "prettier"], "rules": { "prettier/prettier": "error" }, - "extends": ["plugin:prettier/recommended"] + "extends": ["plugin:@typescript-eslint/recommended", "plugin:prettier/recommended"] } diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a9a3a02c..48cdc30d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -8,26 +8,41 @@ on: types: [created] jobs: - publish-npm: + setup: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 with: - node-version: 12 - registry-url: https://registry.npmjs.org/ - - run: npm publish + node-version: 14 + - name: node_modules cache + id: node-modules-cache + uses: actions/cache@v2 env: - NODE_AUTH_TOKEN: ${{secrets.npm_token}} + cache-name: node-modules-yarn + cache-fingerprint: ${{ env.node-version }}-${{ hashFiles('yarn.lock') }} + with: + path: node_modules + key: ${{ runner.os }}-${{ env.cache-name }}-${{ env.cache-fingerprint }} + restore-keys: ${{ runner.os }}-${{ env.cache-name }} - publish-gpr: + - name: Yarn install + # called at most once for the workflow by the "setup" job + if: steps.node-modules-cache.outputs.cache-hit != 'true' + run: yarn install --prefer-offline --frozen-lockfile + + publish-npm: + needs: [ setup ] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v1 + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 with: - node-version: 12 - registry-url: https://npm.pkg.github.com/ + node-version: 14 + registry-url: https://registry.npmjs.org/ + - run: npm i -g yarn + - run: yarn install --prefer-offline --frozen-lockfile + - run: yarn build - run: npm publish env: - NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}} + NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index fc1e5483..505dc80b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -7,16 +7,14 @@ on: branches: [ master ] jobs: - build: - + test: + name: test runs-on: ubuntu-latest - strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] - node-version: [12.x, 14.x, 16.x] + node-version: [14.x, 16.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - steps: - uses: actions/checkout@v3 - name: Use Node.js ${{ matrix.node-version }} @@ -27,3 +25,24 @@ jobs: - run: npm i -g yarn - run: yarn install - run: yarn test + + coverage: + needs: [ test ] + name: coverage + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: '14' + - run: npm install -g yarn + - run: yarn install + - run: yarn build + - uses: paambaati/codeclimate-action@v3.0.0 + env: + CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} + with: + coverageCommand: yarn run test:coverage + coverageLocations: | + ${{github.workspace}}/coverage/*.lcov:lcov + diff --git a/.gitignore b/.gitignore index d42b6616..89304ffa 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,5 @@ jspm_packages # Optional REPL history .node_repl_history .DS_Store +dist +stats diff --git a/.npmignore b/.npmignore new file mode 100644 index 00000000..fb94c694 --- /dev/null +++ b/.npmignore @@ -0,0 +1,15 @@ +!dist +.github +.husky +.vscode +stats +src +.codeclimate.yml +.editorconfig +.eslintignore +.eslintrc.json +.gitignore +.prettier* +rollup.config.js +tsconfig.json +jest.config.js diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..b52a9d2d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "cSpell.words": [ + "gitonly", + "typecheck" + ] +} diff --git a/cli.js b/cli.js deleted file mode 100755 index 8064e66f..00000000 --- a/cli.js +++ /dev/null @@ -1,146 +0,0 @@ -#!/usr/bin/env node - -const fs = require('fs/promises'); -const path = require('path'); -const chalk = require('chalk'); -const UpdateNotifier = require('update-notifier'); - -const argv = require('minimist')(process.argv.slice(2)); - -const pkg = require('./package'); -const C = require('./src/constants'); -const { - getHelp, - prettyPath, - stopSpinner, - startSpinner, - colorForStatus, - processDirectory, -} = require('./src/functions'); - -const { initTable } = require('./src/functions/initTable'); -const { getCompactness } = require('./src/functions/getCompactness'); - -const printLine = console.log; -const showGitOnly = argv.gitonly || argv.g; -const shouldShowHelp = argv.help || argv.h; -const shouldShowVersion = argv.version || argv.v; -const dirs = argv._.length ? argv._ : [process.cwd()]; -const debug = Boolean(argv.debug) ? printLine : C.NOOP; - -let table = null; -let statuses = []; -let compact = false; - -UpdateNotifier({ - pkg: pkg, - updateCheckInterval: C.updateInterval * C.daysMultiplier, -}).notify(); - -process.on('uncaughtException', (err) => { - printLine(`Caught exception: ${err}`); - process.exit(); -}); - -if (shouldShowVersion) { - printLine(pkg.version); - process.exit(); -} - -if (shouldShowHelp) { - printLine(getHelp()); - process.exit(); -} - -function insert(pathString, status) { - let directoryName = prettyPath(pathString); - status.directory = directoryName; - statuses.push(status); - - let methodName = colorForStatus(status); - - if (!((argv.attention || argv.a) && methodName === 'grey')) { - table.push( - C.columnsOrder.map((key) => - key === 'directory' - ? directoryName - : checkAndGetEmptyString(status, key, methodName) - ) - ); - } -} - -function checkAndGetEmptyString(status, key, methodName) { - return chalk[methodName](status[key] || '-'); -} - -function simpleStatus(status) { - //simple comma and newline separated output for machine readability - let str = []; - for (let i = 0; i < C.simple.length; i++) { - str.push(status[C.simple[i]]); - } - return str.join(','); -} - -const simple = (statuses) => statuses.map((status) => simpleStatus(status)); - -const finish = (compactness) => () => { - process.stdout.clearLine(); // clear current text - process.stdout.cursorTo(0); // move cursor to beginning of line - - if (argv.sort) { - table.sort((a, b) => a[0] - b[0]); - } - - if (argv.simple || argv.s) { - printLine(simple(statuses).join('\n')); - } else { - printLine( - chalk.supportsColor - ? table.toString() - : chalk.stripColor(table.toString()) - ); - } - if (compactness !== C.COMPACTNESS_LEVELS.NONE) { - let str = []; - Object.keys(C.headers).map(function (key) { - let header = C.headers[key]; - str.push(chalk.cyan(header.short) + ': ' + header.long); - }); - if (compactness !== C.COMPACTNESS_LEVELS.HIGH) { - printLine(str.join(', ') + '\n'); - } - } -}; - -const listRepos = (_dirs) => { - const spinner = startSpinner(); - const compactness = getCompactness(argv); - - table = initTable(compactness); - const [cwd] = _dirs; - printLine(chalk.green(cwd)); - - fs.readdir(cwd) - .then((files) => files.map((file) => path.resolve(cwd, file))) - .then((files) => - Promise.all( - files.map((file) => - fs.stat(file).then((stat) => ({ file, stat }), printLine) - ) - ) - ) - .then((statuses) => - processDirectory(statuses, { debug, insert, C, showGitOnly }) - ) - .then((statuses) => { - stopSpinner(spinner); - return finish(compactness)(statuses); - }) - .catch((err) => { - throw err; - }); -}; - -listRepos(dirs); diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 00000000..c1e7a63d --- /dev/null +++ b/index.d.ts @@ -0,0 +1,46 @@ +declare module 'git-state'; + +type TableHeaderType = 'long' | 'short'; + +type TableHeader = + | 'displayPath' + | 'branch' + | 'ahead' + | 'dirty' + | 'untracked' + | 'stashes'; + +type Stat = { + path: string; + stat: FileSystem.Stats | null; +}; + +type GitStatus = { + branch: string; + issues: string; + untracked: string; + ahead: string; + stashes: string; + dirty: string; +}; + +interface ExtendedGitStatus extends GitStatus { + git: boolean; + path: string; + displayPath: string; +} + +interface InsertFn { + (path: string, gitStatus: GitStatus): void; +} + +interface DebugFn { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (...args: any[]): void; +} + +type Options = { + debug: DebugFn; + insert: InsertFn; + showGitOnly: boolean; +}; diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 00000000..423baca4 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,8 @@ +/** @type {import('ts-jest/dist/types').InitialOptionsTsJest} */ + +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + rootDir: '.', + coverageReporters: [['lcov']], +}; diff --git a/package.json b/package.json index 98d8b1c8..4fcbfdc7 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,22 @@ { "name": "list-repos", - "version": "0.8.0", + "version": "1.0.0", "description": "List all the repos, their HEADs and clean status in the Current Directory or the Supplied Directory", - "main": "cli.js", + "main": "dist/index.cjs", + "type": "commonjs", + "engines": { + "node": ">=14.0.0" + }, "scripts": { "test": "jest", + "test:watch": "jest --watch", + "test:coverage": "jest --coverage", + "build": "rollup --config", + "typecheck": "tsc --noEmit --checkJs false", "prepare": "husky install", - "pre-commit": "npm test && lint-staged" + "pre-commit": "yarn test && lint-staged && yarn run typecheck && yarn build" }, + "types": "./index.d.ts", "repository": { "type": "git", "url": "git+https://github.com/pankajpatel/list-repos.git" @@ -17,7 +26,7 @@ "cli" ], "bin": { - "list-repos": "cli.js" + "list-repos": "dist/index.cjs" }, "author": "Pankaj Patel ", "license": "MIT", @@ -26,21 +35,39 @@ }, "homepage": "https://github.com/pankajpatel/list-repos#readme", "dependencies": { + "@rollup/plugin-json": "^4.1.0", + "@rollup/plugin-typescript": "^8.3.2", "chalk": "~4.1.2", "cli-spinner": "^0.2.5", "cli-table": "^0.3.4", "git-state": "^4.1.0", "minimist": "^1.2.0", + "type-fest": "^2.12.2", + "typescript": "^4.6.3", "update-notifier": "^5.1.0" }, "devDependencies": { - "eslint": "^8.6.0", + "@rollup/plugin-node-resolve": "^13.2.1", + "@types/cli-spinner": "^0.2.1", + "@types/cli-table": "^0.3.0", + "@types/jest": "^27.4.1", + "@types/minimist": "^1.2.2", + "@types/update-notifier": "^5.1.0", + "@typescript-eslint/eslint-plugin": "^5.20.0", + "@typescript-eslint/parser": "^5.20.0", + "eslint": "^8.14.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-prettier": "^4.0.0", "husky": "^7.0.0", "jest": "^27.4.5", "lint-staged": "^12.3.8", - "prettier": "2.6.2" + "prettier": "2.6.2", + "rollup": "^2.70.2", + "rollup-plugin-build-statistics": "^0.0.19", + "rollup-plugin-delete": "^2.0.0", + "rollup-plugin-preserve-shebang": "^1.0.1", + "rollup-plugin-shebang": "^0.1.5", + "ts-jest": "^27.1.4" }, "lint-staged": { "*.js": [ diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 00000000..8299ee9c --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,26 @@ +import del from 'rollup-plugin-delete'; +import json from '@rollup/plugin-json'; +import typescript from '@rollup/plugin-typescript'; +import shebang from 'rollup-plugin-preserve-shebang'; +import statistics from 'rollup-plugin-build-statistics'; + +export default { + input: 'src/index.ts', + output: { + file: 'dist/index.cjs', + format: 'cjs', + }, + plugins: [ + statistics({ + projectName: 'list-repos', + }), + del({ + targets: 'dist/*', + }), + shebang(), + typescript({ + tsconfig: 'tsconfig.json', + }), + json(), + ], +}; diff --git a/src/constants.js b/src/constants.js deleted file mode 100644 index 3ab061fb..00000000 --- a/src/constants.js +++ /dev/null @@ -1,79 +0,0 @@ -const optionsText = ` -The path defaults to the current directory if not specified. - -Options: - --help, -h show this help - --version, -v show version - --compact, -c output compact table - --compact=s, -c=s output compact table with short headers - with headers described in bottom of table - --compact=so, -c=so output compact table with short headers - and no description of headers - --gitonly, -g output only git repositories - --attention, -a output only dirs which requires attention - also includes non git dirs, use -g to omit them - --simple, -s make the output more simple for easy grepping - -`; - -const NOOP = () => {}; - -const COMPACTNESS_LEVELS = { - NONE: 'NONE', - LOW: 'LOW', - MEDIUM: 'MEDIUM', - HIGH: 'HIGH', -}; - -module.exports = { - defaultHeaderColor: 'cyan', - updateInterval: 2, //days only - daysMultiplier: 1000 * 60 * 60 * 24, - columnsOrder: [ - 'directory', - 'branch', - 'ahead', - 'dirty', - 'untracked', - 'stashes', - ], - headers: { - directory: { - long: 'Directory', - short: 'DIR', - }, - branch: { - long: 'Branch', - short: 'B', - }, - ahead: { - long: 'Ahead', - short: 'A', - }, - dirty: { - long: 'Dirty', - short: 'D', - }, - untracked: { - long: 'Untracked', - short: 'U', - }, - stashes: { - long: 'Stashes', - short: 'S', - }, - }, - simple: ['directory', 'branch', 'ahead', 'dirty', 'untracked', 'stashes'], - emptyGitStatus: { - branch: '-', - issues: '-', - git: false, - untracked: '-', - ahead: '-', - stashes: '-', - dirty: '-', - }, - optionsText: optionsText, - COMPACTNESS_LEVELS, - NOOP, -}; diff --git a/src/constants.ts b/src/constants.ts new file mode 100644 index 00000000..aaf9d1f5 --- /dev/null +++ b/src/constants.ts @@ -0,0 +1,104 @@ +import { ForegroundColor } from 'chalk'; + +export const optionsText = ` +The path defaults to the current directory if not specified. + +Options: + --help, -h show this help + --version, -v show version + --compact, -c output compact table + --compact=s, -c=s output compact table with short headers + with headers described in bottom of table + --compact=so, -c=so output compact table with short headers + and no description of headers + --gitonly, -g output only git repositories + --attention, -a output only dirs which requires attention + also includes non git dirs, use -g to omit them + --simple, -s make the output more simple for easy grepping + +`; + +// eslint-disable-next-line @typescript-eslint/no-empty-function +export const NOOP = () => {}; + +export const COMPACTNESS_LEVELS = { + NONE: 'NONE', + LOW: 'LOW', + MEDIUM: 'MEDIUM', + HIGH: 'HIGH', +}; + +const HEADERS: Record> = { + displayPath: { + long: 'Directory', + short: 'DIR', + }, + branch: { + long: 'Branch', + short: 'B', + }, + ahead: { + long: 'Ahead', + short: 'A', + }, + dirty: { + long: 'Dirty', + short: 'D', + }, + untracked: { + long: 'Untracked', + short: 'U', + }, + stashes: { + long: 'Stashes', + short: 'S', + }, +}; + +export const SORT_DIRECTIONS: Record = { + ASC: 'ASC', + DESC: 'DESC', +}; + +export const SORT_FUNCTIONS: Record< + keyof typeof SORT_DIRECTIONS, + (a: string, b: string) => number +> = { + ASC: (a: string, b: string) => Number(a[0]) - Number(b[0]), + DESC: (a: string, b: string) => Number(b[0]) - Number(a[0]), +}; + +export default { + defaultHeaderColor: 'cyan' as typeof ForegroundColor, + updateInterval: 2, //days only + daysMultiplier: 1000 * 60 * 60 * 24, + columnsOrder: [ + 'displayPath', + 'branch', + 'ahead', + 'dirty', + 'untracked', + 'stashes', + ] as Array, + headers: HEADERS, + simple: [ + 'displayPath', + 'branch', + 'ahead', + 'dirty', + 'untracked', + 'stashes', + ] as Array, + emptyGitStatus: { + branch: '-', + issues: '-', + git: false, + untracked: '-', + ahead: '-', + stashes: '-', + dirty: '-', + }, + optionsText: optionsText, + COMPACTNESS_LEVELS, + NOOP, +}; diff --git a/src/functions/colorForStatus.spec.js b/src/functions/colorForStatus.spec.ts similarity index 53% rename from src/functions/colorForStatus.spec.js rename to src/functions/colorForStatus.spec.ts index 89a7c48b..b52aacdc 100644 --- a/src/functions/colorForStatus.spec.js +++ b/src/functions/colorForStatus.spec.ts @@ -1,8 +1,8 @@ -const { colorForStatus, COLORS } = require('./colorForStatus'); +import { colorForStatus, COLORS } from './colorForStatus'; describe('colorForStatus()', () => { it('should return default color', () => { - const color = colorForStatus({}); + const color = colorForStatus({} as GitStatus); expect(color).toBe(COLORS.GREY); }); }); diff --git a/src/functions/colorForStatus.js b/src/functions/colorForStatus.ts similarity index 51% rename from src/functions/colorForStatus.js rename to src/functions/colorForStatus.ts index 2fdeb298..24612b9a 100644 --- a/src/functions/colorForStatus.js +++ b/src/functions/colorForStatus.ts @@ -1,18 +1,17 @@ -const COLORS = { +import { ForegroundColor } from 'chalk'; + +export const COLORS: Record = { RED: 'red', GREEN: 'green', YELLOW: 'yellow', GREY: 'grey', }; -const colorForStatus = (state) => { +export const colorForStatus = ( + state: GitStatus | ExtendedGitStatus +): typeof ForegroundColor => { if (state.dirty) return COLORS.RED; if (state.ahead) return COLORS.GREEN; if (state.untracked) return COLORS.YELLOW; return COLORS.GREY; }; - -module.exports = { - colorForStatus: colorForStatus, - COLORS: COLORS, -}; diff --git a/src/functions/getCompactness.spec.js b/src/functions/getCompactness.spec.ts similarity index 93% rename from src/functions/getCompactness.spec.js rename to src/functions/getCompactness.spec.ts index a80b647a..4130cbd5 100644 --- a/src/functions/getCompactness.spec.js +++ b/src/functions/getCompactness.spec.ts @@ -1,5 +1,5 @@ -const constants = require('../constants'); -const { getCompactness } = require('./getCompactness'); +import constants from '../constants'; +import { getCompactness } from './getCompactness'; describe('getCompactness()', () => { describe('-c', () => { diff --git a/src/functions/getCompactness.js b/src/functions/getCompactness.ts similarity index 70% rename from src/functions/getCompactness.js rename to src/functions/getCompactness.ts index 7838ed17..c4e23a8b 100644 --- a/src/functions/getCompactness.js +++ b/src/functions/getCompactness.ts @@ -1,6 +1,8 @@ -const C = require('../constants'); +import C from '../constants'; -const getCompactness = (cliArgs = argv) => { +export const getCompactness = ( + cliArgs: Record +) => { const compact = cliArgs.compact || cliArgs.c; switch (compact) { @@ -14,7 +16,3 @@ const getCompactness = (cliArgs = argv) => { return C.COMPACTNESS_LEVELS.NONE; } }; - -module.exports = { - getCompactness, -}; diff --git a/src/functions/getHelp.spec.js b/src/functions/getHelp.spec.ts similarity index 75% rename from src/functions/getHelp.spec.js rename to src/functions/getHelp.spec.ts index 505259ab..de22aaae 100644 --- a/src/functions/getHelp.spec.js +++ b/src/functions/getHelp.spec.ts @@ -1,4 +1,4 @@ -const { getHelp } = require('./getHelp'); +import { getHelp } from './getHelp'; describe('getHelp()', () => { it('should run the passed printer function', () => { diff --git a/src/functions/getHelp.js b/src/functions/getHelp.ts similarity index 53% rename from src/functions/getHelp.js rename to src/functions/getHelp.ts index 19644f6b..34cbaf93 100644 --- a/src/functions/getHelp.js +++ b/src/functions/getHelp.ts @@ -1,7 +1,7 @@ -const pkg = require('../../package'); -const { optionsText } = require('../constants'); +import pkg from '../../package.json'; +import { optionsText } from '../constants'; -function getHelp() { +export function getHelp() { const lines = [ `${pkg.name} ${pkg.version}`, pkg.description, @@ -11,7 +11,3 @@ function getHelp() { ]; return lines.join('\n'); } - -module.exports = { - getHelp: getHelp, -}; diff --git a/src/functions/gitCheck.js b/src/functions/gitCheck.js deleted file mode 100644 index ba008c02..00000000 --- a/src/functions/gitCheck.js +++ /dev/null @@ -1,15 +0,0 @@ -const theGit = require('git-state'); - -const gitCheck = (p) => - new Promise((resolve, reject) => { - theGit.check(p, function (e, result) { - if (e) { - reject(e); - } - resolve(result); - }); - }); - -module.exports = { - gitCheck, -}; diff --git a/src/functions/gitCheck.ts b/src/functions/gitCheck.ts new file mode 100644 index 00000000..0c68a9a5 --- /dev/null +++ b/src/functions/gitCheck.ts @@ -0,0 +1,12 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const theGit = require('git-state'); + +export const gitCheck = (path: string): PromiseLike => + new Promise((resolve, reject) => { + theGit.check(path, function (error: unknown, result: GitStatus) { + if (error) { + reject(error); + } + resolve(result); + }); + }); diff --git a/src/functions/index.js b/src/functions/index.js deleted file mode 100644 index 9d148434..00000000 --- a/src/functions/index.js +++ /dev/null @@ -1,18 +0,0 @@ -const { isGit } = require('./isGit'); -const { getHelp } = require('./getHelp'); -const { gitCheck } = require('./gitCheck'); -const { prettyPath } = require('./prettyPath'); -const { colorForStatus } = require('./colorForStatus'); -const { startSpinner, stopSpinner } = require('./spinner'); -const { processDirectory } = require('./processDirectory'); - -module.exports = { - isGit: isGit, - getHelp: getHelp, - gitCheck: gitCheck, - prettyPath: prettyPath, - stopSpinner: stopSpinner, - startSpinner: startSpinner, - colorForStatus: colorForStatus, - processDirectory: processDirectory, -}; diff --git a/src/functions/index.ts b/src/functions/index.ts new file mode 100644 index 00000000..b04d1a02 --- /dev/null +++ b/src/functions/index.ts @@ -0,0 +1,7 @@ +export { isGit } from './isGit'; +export { getHelp } from './getHelp'; +export { gitCheck } from './gitCheck'; +export { prettyPath } from './prettyPath'; +export { colorForStatus } from './colorForStatus'; +export { startSpinner, stopSpinner } from './spinner'; +export * from './processDirectory'; diff --git a/src/functions/initTable.js b/src/functions/initTable.js deleted file mode 100644 index a2696b54..00000000 --- a/src/functions/initTable.js +++ /dev/null @@ -1,34 +0,0 @@ -const chalk = require('chalk'); -const Table = require('cli-table'); -const C = require('../constants'); - -const getTableHeader = (type, color = C.defaultHeaderColor) => { - const colorizer = chalk[color]; - return C.columnsOrder.map((key) => colorizer(C.headers[key][type])); -}; - -const initTable = (compactness) => { - const tableOpts = { - head: getTableHeader('long'), - }; - - if (compactness !== C.COMPACTNESS_LEVELS.NONE) { - tableOpts.head = - compactness !== C.COMPACTNESS_LEVELS.LOW - ? getTableHeader('short') - : tableOpts.head; - - tableOpts.chars = { - mid: '', - 'left-mid': '', - 'mid-mid': '', - 'right-mid': '', - }; - } - return new Table(tableOpts); -}; - -module.exports = { - initTable, - getTableHeader, -}; diff --git a/src/functions/initTable.ts b/src/functions/initTable.ts new file mode 100644 index 00000000..4230e0cf --- /dev/null +++ b/src/functions/initTable.ts @@ -0,0 +1,40 @@ +import chalk, { ForegroundColor } from 'chalk'; +import Table from 'cli-table'; + +import constants, { COMPACTNESS_LEVELS } from '../constants'; + +export const getTableHeader = ( + type: TableHeaderType, + color: typeof ForegroundColor = constants.defaultHeaderColor +) => + constants.columnsOrder.map((key: TableHeader) => + chalk[color](constants.headers[key][type]) + ); + +export const initTable = (compactness: string) => { + const tableOpts: Record< + string, + | string + | boolean + | undefined + | string[] + | Record + > = { + head: getTableHeader('long'), + }; + + if (compactness !== COMPACTNESS_LEVELS.NONE) { + tableOpts.head = + compactness !== COMPACTNESS_LEVELS.LOW + ? getTableHeader('short') + : tableOpts.head; + + tableOpts.chars = { + mid: '', + 'left-mid': '', + 'mid-mid': '', + 'right-mid': '', + }; + } + return new Table(tableOpts); +}; diff --git a/src/functions/isGit.js b/src/functions/isGit.js deleted file mode 100644 index ee3d6c2b..00000000 --- a/src/functions/isGit.js +++ /dev/null @@ -1,12 +0,0 @@ -const theGit = require('git-state'); - -const isGit = (p) => - new Promise((resolve) => { - theGit.isGit(p, function (result) { - resolve(result); - }); - }); - -module.exports = { - isGit, -}; diff --git a/src/functions/isGit.spec.ts b/src/functions/isGit.spec.ts new file mode 100644 index 00000000..21db189b --- /dev/null +++ b/src/functions/isGit.spec.ts @@ -0,0 +1,18 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ + +describe('isGit', () => { + afterEach(() => { + jest.clearAllMocks(); + }); + + it('should return true when lib returned true', async () => { + jest.mock('git-state', () => ({ + isGit: jest.fn((file, callback) => callback(true)), + })); + + const { isGit } = require('./isGit'); + + const response = await isGit('somePath'); + expect(response).toBe(true); + }); +}); diff --git a/src/functions/isGit.ts b/src/functions/isGit.ts new file mode 100644 index 00000000..cd5008a5 --- /dev/null +++ b/src/functions/isGit.ts @@ -0,0 +1,9 @@ +/* eslint-disable @typescript-eslint/no-var-requires */ +const theGit = require('git-state'); + +export const isGit = (path: string) => + new Promise((resolve) => { + theGit.isGit(path, function (result: boolean) { + resolve(result); + }); + }); diff --git a/src/functions/prettyPath.js b/src/functions/prettyPath.js deleted file mode 100644 index f0bd1904..00000000 --- a/src/functions/prettyPath.js +++ /dev/null @@ -1,10 +0,0 @@ -const path = require('path'); - -const prettyPath = (pathString) => { - const p = pathString.split(path.sep); - return p[p.length - 1]; -}; - -module.exports = { - prettyPath, -}; diff --git a/src/functions/prettyPath.spec.js b/src/functions/prettyPath.spec.ts similarity index 87% rename from src/functions/prettyPath.spec.js rename to src/functions/prettyPath.spec.ts index 26b868cf..e985fefc 100644 --- a/src/functions/prettyPath.spec.js +++ b/src/functions/prettyPath.spec.ts @@ -1,4 +1,4 @@ -const { prettyPath } = require('./prettyPath'); +import { prettyPath } from './prettyPath'; describe('prettyPath()', () => { it('should return last segment of path for file', () => { diff --git a/src/functions/prettyPath.ts b/src/functions/prettyPath.ts new file mode 100644 index 00000000..1c51b67f --- /dev/null +++ b/src/functions/prettyPath.ts @@ -0,0 +1,6 @@ +import path from 'path'; + +export const prettyPath = (pathString: string): string => { + const p = pathString.split(path.sep); + return p[p.length - 1]; +}; diff --git a/src/functions/processDirectory.js b/src/functions/processDirectory.js deleted file mode 100644 index bc33c507..00000000 --- a/src/functions/processDirectory.js +++ /dev/null @@ -1,48 +0,0 @@ -const { isGit } = require('./isGit'); -const { gitCheck } = require('./gitCheck'); - -const processNonGitDir = (stat, options) => - new Promise((resolve) => { - const gitStatus = options.C.emptyGitStatus; - options.debug(stat.file, gitStatus); - if (!options.showGitOnly) { - options.insert(stat.file, gitStatus); - return resolve(true); - } - return resolve(false); - }); - -const processGitDir = (stat, options) => - gitCheck(stat.file).then((gitStatus) => { - gitStatus.git = true; - options.debug(stat.file, gitStatus); - options.insert(stat.file, gitStatus); - return Promise.resolve(true); - }); - -const processDirectory = (stat, options) => { - if (!stat || !stat.file) { - return Promise.resolve(false); - } - - if (!stat.stat.isDirectory()) { - options.debug(stat.file, false); - return Promise.resolve(false); - } - - options.debug(stat.file); - - return Promise.resolve() - .catch((e) => Promise.resolve(false)) - .then(() => isGit(stat.file)) - .then((isDirGit) => - !isDirGit ? processNonGitDir(stat, options) : processGitDir(stat, options) - ); -}; - -const processDirectories = (stats, opts) => - Promise.all(stats.map((status) => processDirectory(status, opts))); - -module.exports = { - processDirectory: processDirectories, -}; diff --git a/src/functions/processDirectory.ts b/src/functions/processDirectory.ts new file mode 100644 index 00000000..82f05f6f --- /dev/null +++ b/src/functions/processDirectory.ts @@ -0,0 +1,40 @@ +import { isGit } from './isGit'; +import constants from '../constants'; +import { gitCheck } from './gitCheck'; +import { prettyPath } from './prettyPath'; + +const buildRepoState = (path: string, repoState: GitStatus | null) => ({ + path, + displayPath: prettyPath(path), + git: Boolean(repoState), + ...(repoState || constants.emptyGitStatus), +}); + +export const processNonGitDir = (stat: Stat): PromiseLike => + Promise.resolve(buildRepoState(stat.path, null)); + +export const processGitDir = (stat: Stat): PromiseLike => + gitCheck(stat.path).then( + (gitStatus: GitStatus): ExtendedGitStatus => + buildRepoState(stat.path, gitStatus) + ); + +export const processDirectory = (stat: Stat) => { + if (!stat || !stat.path || !stat.stat) { + return Promise.resolve(buildRepoState(stat?.path ?? '', null)); + } + + if (!stat.stat.isDirectory()) { + return Promise.resolve(buildRepoState(stat.path, null)); + } + + return Promise.resolve() + .catch(() => processNonGitDir(stat)) + .then(() => isGit(stat.path)) + .then((isDirGit) => + !isDirGit ? processNonGitDir(stat) : processGitDir(stat) + ); +}; + +export const processDirectories = (stats: Stat[]) => + Promise.all(stats.map((status: Stat) => processDirectory(status))); diff --git a/src/functions/pushToTable.ts b/src/functions/pushToTable.ts new file mode 100644 index 00000000..7abe103e --- /dev/null +++ b/src/functions/pushToTable.ts @@ -0,0 +1,32 @@ +import Table from 'cli-table'; +import chalk, { ForegroundColor } from 'chalk'; + +import constants from '../constants'; +import { colorForStatus } from './colorForStatus'; + +function checkAndGetEmptyString( + status: ExtendedGitStatus, + key: keyof ExtendedGitStatus, + methodName: typeof ForegroundColor +) { + return chalk[methodName](status[key] || '-'); +} + +export const pushToTable = + (table: Table, options: { showGitOnly: boolean; needsAttention: boolean }) => + (status: ExtendedGitStatus) => { + if (options.showGitOnly && !status.git) { + return; + } + const methodName = colorForStatus(status); + + if (!(options.needsAttention && methodName === 'grey')) { + table.push( + constants.columnsOrder.map((key) => + key === 'displayPath' + ? status.displayPath + : checkAndGetEmptyString(status, key, methodName) + ) + ); + } + }; diff --git a/src/functions/spinner.js b/src/functions/spinner.js deleted file mode 100644 index 599abbcf..00000000 --- a/src/functions/spinner.js +++ /dev/null @@ -1,17 +0,0 @@ -const { Spinner } = require('cli-spinner'); - -const startSpinner = () => { - const spinner = new Spinner('%s'); - spinner.setSpinnerString(18); - spinner.start(); - return spinner; -}; - -const stopSpinner = (spinner) => { - spinner.stop(); -}; - -module.exports = { - startSpinner, - stopSpinner, -}; diff --git a/src/functions/spinner.ts b/src/functions/spinner.ts new file mode 100644 index 00000000..32766b37 --- /dev/null +++ b/src/functions/spinner.ts @@ -0,0 +1,12 @@ +import { Spinner } from 'cli-spinner'; + +export const startSpinner = () => { + const spinner = new Spinner('%s'); + spinner.setSpinnerString(18); + spinner.start(); + return spinner; +}; + +export const stopSpinner = (spinner: Spinner) => { + spinner.stop(); +}; diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 00000000..2d420a22 --- /dev/null +++ b/src/index.ts @@ -0,0 +1,130 @@ +#!/usr/bin/env node + +import path from 'path'; +import chalk from 'chalk'; +import fs from 'fs/promises'; +import Table from 'cli-table'; +import minimist from 'minimist'; +import UpdateNotifier from 'update-notifier'; + +import { + getHelp, + stopSpinner, + startSpinner, + processDirectories, +} from './functions'; +import C, { SORT_DIRECTIONS, SORT_FUNCTIONS } from './constants'; +import { name, version } from '../package.json'; +import { initTable } from './functions/initTable'; +import { getCompactness } from './functions/getCompactness'; +import { pushToTable } from './functions/pushToTable'; + +const argv = minimist(process.argv.slice(2)); + +const printLine = console.log; +const showGitOnly = argv.gitonly || argv.g; +const shouldShowHelp = argv.help || argv.h; +const needsAttention = argv.attention || argv.a; +const shouldShowVersion = argv.version || argv.v; +const shouldShowSimpleOutput = argv.simple || argv.s; +const dirs = argv._.length ? argv._ : [process.cwd()]; +const shouldSort = Boolean(argv.sort); +const sortDirection: string = + shouldSort && typeof argv.sort === 'string' ? argv.sort : SORT_DIRECTIONS.ASC; +const debug = Boolean(argv.debug) ? printLine : C.NOOP; + +let table: Table; +const statuses: ExtendedGitStatus[] = []; + +UpdateNotifier({ + pkg: { name, version }, + updateCheckInterval: C.updateInterval * C.daysMultiplier, +}).notify(); + +process.on('uncaughtException', (err) => { + printLine(`Caught exception: ${err}`); + process.exit(); +}); + +if (shouldShowVersion) { + printLine(version); + process.exit(); +} + +if (shouldShowHelp) { + printLine(getHelp()); + process.exit(); +} + +function getLineForSimpleStatus(status: ExtendedGitStatus) { + //simple comma and newline separated output for machine readability + const str = []; + for (let i = 0; i < C.simple.length; i++) { + str.push(status[C.simple[i]]); + } + return str.join(','); +} + +const prepareSimpleOutput = (statuses: Array) => + statuses.map((status: ExtendedGitStatus) => getLineForSimpleStatus(status)); + +const finish = (compactness: string) => () => { + process.stdout.clearLine(0); // clear current text + process.stdout.cursorTo(0); // move cursor to beginning of line + + if (shouldSort) { + table.sort(SORT_FUNCTIONS[sortDirection]); + } + + if (shouldShowSimpleOutput) { + printLine(prepareSimpleOutput(statuses).join('\n')); + } else { + printLine(table.toString()); + } + // Table header abbreviations + if (compactness !== C.COMPACTNESS_LEVELS.NONE) { + const str: string[] = []; + Object.keys(C.headers).map((key: string) => { + const header = C.headers[key as TableHeader]; + str.push(chalk.cyan(header.short) + ': ' + header.long); + }); + if (compactness !== C.COMPACTNESS_LEVELS.HIGH) { + printLine(str.join(', ') + '\n'); + } + } +}; + +const listRepos = (_dirs: string[]) => { + const spinner = startSpinner(); + const compactness = getCompactness(argv); + + table = initTable(compactness); + const [cwd] = _dirs; + printLine(chalk.green(cwd)); + + fs.readdir(cwd) + .then((files) => files.map((file) => path.resolve(cwd, file))) + .then((files) => + Promise.all( + files.map((file) => + fs.stat(file).then( + (stat: Stat['stat']): Stat => ({ path: file, stat }), + () => ({ path: file, stat: null }) + ) + ) + ) + ) + .then((statuses: Stat[]) => processDirectories(statuses)) + .then((statuses) => { + statuses.map((status) => + pushToTable(table, { showGitOnly, needsAttention })(status) + ); + }) + .then(() => stopSpinner(spinner)) + .then(() => finish(compactness)()) + .catch((err) => { + throw err; + }); +}; + +listRepos(dirs); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..769615b4 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,40 @@ +{ + "compilerOptions": { + /* Language and Environment */ + "target": "es2015", + + /* Modules */ + "module": "esnext", + "resolveJsonModule": true, + "moduleResolution": "node", + + + /* JavaScript Support */ + "allowJs": true, + // "checkJs": true, + + /* Emit */ + "rootDir": "./", + "outDir": "./dist", + "removeComments": true, + + /* Interop Constraints */ + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + + /* Type Checking */ + "strict": true, + + /* Completeness */ + "skipLibCheck": true + }, + "compileOnSave": true, + "exclude": [ + "node_modules", + ".vscode", + ".github", + ".husky", + "dist", + "**/*.spec.ts" + ] +} diff --git a/yarn.lock b/yarn.lock index 8ef51a71..f81b224f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3,11 +3,12 @@ "@ampproject/remapping@^2.1.0": - version "2.1.2" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.1.2.tgz#4edca94973ded9630d20101cd8559cedb8d8bd34" - integrity sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg== + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== dependencies: - "@jridgewell/trace-mapping" "^0.3.0" + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.7": version "7.16.7" @@ -16,49 +17,49 @@ dependencies: "@babel/highlight" "^7.16.7" -"@babel/compat-data@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.7.tgz#078d8b833fbbcc95286613be8c716cef2b519fa2" - integrity sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ== +"@babel/compat-data@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" + integrity sha512-GZt/TCsG70Ms19gfZO1tM4CVnXsPgEPBCpJu+Qz3L0LUDsY5nZqFZglIoPC1kIYOtNBZlrnFT+klg12vFGZXrw== "@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.7.2", "@babel/core@^7.8.0": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.9.tgz#6bae81a06d95f4d0dec5bb9d74bbc1f58babdcfe" - integrity sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw== + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.10.tgz#74ef0fbf56b7dfc3f198fc2d927f4f03e12f4b05" + integrity sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA== dependencies: "@ampproject/remapping" "^2.1.0" "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.9" - "@babel/helper-compilation-targets" "^7.17.7" + "@babel/generator" "^7.17.10" + "@babel/helper-compilation-targets" "^7.17.10" "@babel/helper-module-transforms" "^7.17.7" "@babel/helpers" "^7.17.9" - "@babel/parser" "^7.17.9" + "@babel/parser" "^7.17.10" "@babel/template" "^7.16.7" - "@babel/traverse" "^7.17.9" - "@babel/types" "^7.17.0" + "@babel/traverse" "^7.17.10" + "@babel/types" "^7.17.10" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.1" semver "^6.3.0" -"@babel/generator@^7.17.9", "@babel/generator@^7.7.2": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.9.tgz#f4af9fd38fa8de143c29fce3f71852406fc1e2fc" - integrity sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ== +"@babel/generator@^7.17.10", "@babel/generator@^7.7.2": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.10.tgz#c281fa35b0c349bbe9d02916f4ae08fc85ed7189" + integrity sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg== dependencies: - "@babel/types" "^7.17.0" + "@babel/types" "^7.17.10" + "@jridgewell/gen-mapping" "^0.1.0" jsesc "^2.5.1" - source-map "^0.5.0" -"@babel/helper-compilation-targets@^7.17.7": - version "7.17.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz#a3c2924f5e5f0379b356d4cfb313d1414dc30e46" - integrity sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w== +"@babel/helper-compilation-targets@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz#09c63106d47af93cf31803db6bc49fef354e2ebe" + integrity sha512-gh3RxjWbauw/dFiU/7whjd0qN9K6nPJMqe6+Er7rOavFh0CQUSwhAE3IcTho2rywPJFxej6TUUHDkWcYI6gGqQ== dependencies: - "@babel/compat-data" "^7.17.7" + "@babel/compat-data" "^7.17.10" "@babel/helper-validator-option" "^7.16.7" - browserslist "^4.17.5" + browserslist "^4.20.2" semver "^6.3.0" "@babel/helper-environment-visitor@^7.16.7": @@ -151,10 +152,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.9": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef" - integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.16.7", "@babel/parser@^7.17.10": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78" + integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -241,9 +242,9 @@ "@babel/helper-plugin-utils" "^7.14.5" "@babel/plugin-syntax-typescript@^7.7.2": - version "7.16.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz#39c9b55ee153151990fb038651d58d3fd03f98f8" - integrity sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A== + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.10.tgz#80031e6042cad6a95ed753f672ebd23c30933195" + integrity sha512-xJefea1DWXW09pW4Tm9bjwVlPDyYA2it3fWlmEjpYz6alPvTUjL0EOzNzI/FEOyI3r4/J7uVH5UqKgl1TQ5hqQ== dependencies: "@babel/helper-plugin-utils" "^7.16.7" @@ -256,26 +257,26 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" -"@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.2": - version "7.17.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.9.tgz#1f9b207435d9ae4a8ed6998b2b82300d83c37a0d" - integrity sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw== +"@babel/traverse@^7.17.10", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9", "@babel/traverse@^7.7.2": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.10.tgz#1ee1a5ac39f4eac844e6cf855b35520e5eb6f8b5" + integrity sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw== dependencies: "@babel/code-frame" "^7.16.7" - "@babel/generator" "^7.17.9" + "@babel/generator" "^7.17.10" "@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-function-name" "^7.17.9" "@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7" - "@babel/parser" "^7.17.9" - "@babel/types" "^7.17.0" + "@babel/parser" "^7.17.10" + "@babel/types" "^7.17.10" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" - integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== +"@babel/types@^7.0.0", "@babel/types@^7.16.7", "@babel/types@^7.17.0", "@babel/types@^7.17.10", "@babel/types@^7.3.0", "@babel/types@^7.3.3": + version "7.17.10" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4" + integrity sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A== dependencies: "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" @@ -285,10 +286,10 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@eslint/eslintrc@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.1.tgz#8b5e1c49f4077235516bc9ec7d41378c0f69b8c6" - integrity sha512-bxvbYnBPN1Gibwyp6NrpnFzA3YtRL3BBAyEAFVIpNTm2Rn4Vy87GA5M4aSn3InRrlsbX5N0GW7XIx+U4SAEKdQ== +"@eslint/eslintrc@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.2.tgz#4989b9e8c0216747ee7cca314ae73791bb281aae" + integrity sha512-lTVWHs7O2hjBFZunXTZYnYqtB9GakA1lnxIf+gKq2nY5gxkkNi/lQvveW6t8gFdOHTg6nG50Xs95PrLqVpcaLg== dependencies: ajv "^6.12.4" debug "^4.3.2" @@ -499,24 +500,94 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/resolve-uri@^3.0.3": - version "3.0.5" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz#68eb521368db76d040a6315cdb24bf2483037b9c" - integrity sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew== + version "3.0.6" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.0.6.tgz#4ac237f4dabc8dd93330386907b97591801f7352" + integrity sha512-R7xHtBSNm+9SyvpJkdQl+qrM3Hm2fea3Ef197M3mUug+v+yR+Rhfbs7PBtcBUVnIWJ4JcAdjvij+c8hXS9p5aw== + +"@jridgewell/set-array@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.0.tgz#1179863356ac8fbea64a5a4bcde93a4871012c01" + integrity sha512-SfJxIxNVYLTsKwzB3MoOQ1yxf4w/E6MdkvTgrgAt1bfxjSrLUoHMKrDOykwN14q65waezZIdqDneUIPh4/sKxg== "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.11" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz#771a1d8d744eeb71b6adb35808e1a6c7b9b8c8ec" integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== -"@jridgewell/trace-mapping@^0.3.0": - version "0.3.4" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" - integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== +"@jridgewell/trace-mapping@^0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== dependencies: "@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/sourcemap-codec" "^1.4.10" +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@rollup/plugin-json@^4.1.0": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" + integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + +"@rollup/plugin-node-resolve@^13.2.1": + version "13.2.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.2.1.tgz#cdee815cf02c180ff0a42536ca67a8f67e299f84" + integrity sha512-btX7kzGvp1JwShQI9V6IM841YKNPYjKCvUbNrQ2EcVYbULtUd/GH6wZ/qdqH13j9pOHBER+EZXNN2L8RSJhVRA== + dependencies: + "@rollup/pluginutils" "^3.1.0" + "@types/resolve" "1.17.1" + builtin-modules "^3.1.0" + deepmerge "^4.2.2" + is-module "^1.0.0" + resolve "^1.19.0" + +"@rollup/plugin-typescript@^8.3.2": + version "8.3.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-8.3.2.tgz#e1b719e2ed3e752bbc092001656c48378f2d15f0" + integrity sha512-MtgyR5LNHZr3GyN0tM7gNO9D0CS+Y+vflS4v/PHmrX17JCkHUYKvQ5jN5o3cz1YKllM3duXUqu3yOHwMPUxhDg== + dependencies: + "@rollup/pluginutils" "^3.1.0" + resolve "^1.17.0" + +"@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" @@ -575,12 +646,42 @@ "@babel/types" "^7.0.0" "@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": - version "7.17.0" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.0.tgz#7a9b80f712fe2052bc20da153ff1e552404d8e4b" - integrity sha512-r8aveDbd+rzGP+ykSdF3oPuTVRWRfbBiHl0rVDM2yNEmSMXfkObQLV46b4RnCv3Lra51OlfnZhkkFaDl2MIRaA== + version "7.17.1" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.17.1.tgz#1a0e73e8c28c7e832656db372b779bfd2ef37314" + integrity sha512-kVzjari1s2YVi77D3w1yuvohV2idweYXMCDzqBiVNN63TcDWrIlTVOYpqVrvbbyOE/IyzBoTKF0fdnLPEORFxA== dependencies: "@babel/types" "^7.3.0" +"@types/cli-spinner@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/@types/cli-spinner/-/cli-spinner-0.2.1.tgz#d41515446773b40693ad5dd23ed74ea897a58278" + integrity sha512-bsdlZy3LThi9QbsK0GXm5s/e3F6HAJi1tMsIanm9trtoStSlV3gzir9JpfOK40gERMNIVevDTpG5NzSGnYs3QA== + dependencies: + "@types/node" "*" + +"@types/cli-table@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@types/cli-table/-/cli-table-0.3.0.tgz#f1857156bf5fd115c6a2db260ba0be1f8fc5671c" + integrity sha512-QnZUISJJXyhyD6L1e5QwXDV/A5i2W1/gl6D6YMc8u0ncPepbv/B4w3S+izVvtAg60m6h+JP09+Y/0zF2mojlFQ== + +"@types/configstore@*": + version "5.0.1" + resolved "https://registry.yarnpkg.com/@types/configstore/-/configstore-5.0.1.tgz#7be34d28ce29a408c98e717ada0488664eaf6173" + integrity sha512-c/QCznvk7bLKGhHETj29rqKufui3jaAxjBhK4R2zUrMG5UG0qTwfWYxBoUbH8JCyDjdCWMIxPJ7/Fdz1UcAnWg== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/glob@^7.1.1": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + "@types/graceful-fs@^4.1.2": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" @@ -607,21 +708,59 @@ dependencies: "@types/istanbul-lib-report" "*" +"@types/jest@^27.4.1": + version "27.4.1" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.4.1.tgz#185cbe2926eaaf9662d340cc02e548ce9e11ab6d" + integrity sha512-23iPJADSmicDVrWk+HT58LMJtzLAnB2AgIzplQuq/bSrGaxCrlvRFjGbXmamnnk/mAmCdLStiGqggu28ocUyiw== + dependencies: + jest-matcher-utils "^27.0.0" + pretty-format "^27.0.0" + +"@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/minimatch@*": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" + integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== + +"@types/minimist@^1.2.2": + version "1.2.2" + resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" + integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== + "@types/node@*": - version "17.0.24" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.24.tgz#20ba1bf69c1b4ab405c7a01e950c4f446b05029f" - integrity sha512-aveCYRQbgTH9Pssp1voEP7HiuWlD2jW2BO56w+bVrJn04i61yh6mRfoKO6hEYQD9vF+W8Chkwc6j1M36uPkx4g== + version "17.0.31" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.31.tgz#a5bb84ecfa27eec5e1c802c6bbf8139bdb163a5d" + integrity sha512-AR0x5HbXGqkEx9CadRH3EBYx/VkiUgZIhP4wvPn/+5KIsgpNoyFaRlVe0Zlx9gRtg8fA06a9tskE2MSN7TcG4Q== "@types/prettier@^2.1.5": version "2.6.0" resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.6.0.tgz#efcbd41937f9ae7434c714ab698604822d890759" integrity sha512-G/AdOadiZhnJp0jXCaBQU449W2h716OW/EoXeYkCytxKL06X1WCXB4DZpp8TpZ8eyIJVS1cw4lrlkkSYU21cDw== +"@types/resolve@1.17.1": + version "1.17.1" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" + integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== + dependencies: + "@types/node" "*" + "@types/stack-utils@^2.0.0": version "2.0.1" resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c" integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw== +"@types/update-notifier@^5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@types/update-notifier/-/update-notifier-5.1.0.tgz#52ed6a2e9851fd6f1c88e93c85e8a0e1d5500fda" + integrity sha512-aGY5pH1Q/DcToKXl4MCj1c0uDUB+zSVFDRCI7Q7js5sguzBTqJV/5kJA2awofbtWYF3xnon1TYdZYnFditRPtQ== + dependencies: + "@types/configstore" "*" + boxen "^4.2.0" + "@types/yargs-parser@*": version "21.0.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" @@ -634,10 +773,90 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin@^5.20.0": + version "5.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.21.0.tgz#bfc22e0191e6404ab1192973b3b4ea0461c1e878" + integrity sha512-fTU85q8v5ZLpoZEyn/u1S2qrFOhi33Edo2CZ0+q1gDaWWm0JuPh3bgOyU8lM0edIEYgKLDkPFiZX2MOupgjlyg== + dependencies: + "@typescript-eslint/scope-manager" "5.21.0" + "@typescript-eslint/type-utils" "5.21.0" + "@typescript-eslint/utils" "5.21.0" + debug "^4.3.2" + functional-red-black-tree "^1.0.1" + ignore "^5.1.8" + regexpp "^3.2.0" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.20.0": + version "5.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.21.0.tgz#6cb72673dbf3e1905b9c432175a3c86cdaf2071f" + integrity sha512-8RUwTO77hstXUr3pZoWZbRQUxXcSXafZ8/5gpnQCfXvgmP9gpNlRGlWzvfbEQ14TLjmtU8eGnONkff8U2ui2Eg== + dependencies: + "@typescript-eslint/scope-manager" "5.21.0" + "@typescript-eslint/types" "5.21.0" + "@typescript-eslint/typescript-estree" "5.21.0" + debug "^4.3.2" + +"@typescript-eslint/scope-manager@5.21.0": + version "5.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.21.0.tgz#a4b7ed1618f09f95e3d17d1c0ff7a341dac7862e" + integrity sha512-XTX0g0IhvzcH/e3393SvjRCfYQxgxtYzL3UREteUneo72EFlt7UNoiYnikUtmGVobTbhUDByhJ4xRBNe+34kOQ== + dependencies: + "@typescript-eslint/types" "5.21.0" + "@typescript-eslint/visitor-keys" "5.21.0" + +"@typescript-eslint/type-utils@5.21.0": + version "5.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.21.0.tgz#ff89668786ad596d904c21b215e5285da1b6262e" + integrity sha512-MxmLZj0tkGlkcZCSE17ORaHl8Th3JQwBzyXL/uvC6sNmu128LsgjTX0NIzy+wdH2J7Pd02GN8FaoudJntFvSOw== + dependencies: + "@typescript-eslint/utils" "5.21.0" + debug "^4.3.2" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.21.0": + version "5.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.21.0.tgz#8cdb9253c0dfce3f2ab655b9d36c03f72e684017" + integrity sha512-XnOOo5Wc2cBlq8Lh5WNvAgHzpjnEzxn4CJBwGkcau7b/tZ556qrWXQz4DJyChYg8JZAD06kczrdgFPpEQZfDsA== + +"@typescript-eslint/typescript-estree@5.21.0": + version "5.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.21.0.tgz#9f0c233e28be2540eaed3df050f0d54fb5aa52de" + integrity sha512-Y8Y2T2FNvm08qlcoSMoNchh9y2Uj3QmjtwNMdRQkcFG7Muz//wfJBGBxh8R7HAGQFpgYpdHqUpEoPQk+q9Kjfg== + dependencies: + "@typescript-eslint/types" "5.21.0" + "@typescript-eslint/visitor-keys" "5.21.0" + debug "^4.3.2" + globby "^11.0.4" + is-glob "^4.0.3" + semver "^7.3.5" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.21.0": + version "5.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.21.0.tgz#51d7886a6f0575e23706e5548c7e87bce42d7c18" + integrity sha512-q/emogbND9wry7zxy7VYri+7ydawo2HDZhRZ5k6yggIvXa7PvBbAAZ4PFH/oZLem72ezC4Pr63rJvDK/sTlL8Q== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.21.0" + "@typescript-eslint/types" "5.21.0" + "@typescript-eslint/typescript-estree" "5.21.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/visitor-keys@5.21.0": + version "5.21.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.21.0.tgz#453fb3662409abaf2f8b1f65d515699c888dd8ae" + integrity sha512-SX8jNN+iHqAF0riZQMkm7e8+POXa/fXw5cxL+gjpyP+FI+JVNhii53EmQgDAfDcBpFekYSlO0fGytMQwRiMQCA== + dependencies: + "@typescript-eslint/types" "5.21.0" + eslint-visitor-keys "^3.0.0" + 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== + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== acorn-globals@^6.0.0: version "6.0.0" @@ -663,9 +882,9 @@ acorn@^7.1.1: integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.2.4, acorn@^8.7.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.0.tgz#90951fde0f8f09df93549481e5fc141445b791cf" - integrity sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ== + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== after-all-results@^2.0.0: version "2.0.0" @@ -765,6 +984,11 @@ argparse@^2.0.1: resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + astral-regex@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" @@ -841,6 +1065,20 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +boxen@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" + integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^5.3.1" + chalk "^3.0.0" + cli-boxes "^2.2.0" + string-width "^4.1.0" + term-size "^2.1.0" + type-fest "^0.8.1" + widest-line "^3.1.0" + boxen@^5.0.0: version "5.1.2" resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" @@ -875,17 +1113,24 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.17.5: - version "4.20.2" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.2.tgz#567b41508757ecd904dab4d1c646c612cd3d4f88" - integrity sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA== +browserslist@^4.20.2: + version "4.20.3" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.20.3.tgz#eb7572f49ec430e054f56d52ff0ebe9be915f8bf" + integrity sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg== dependencies: - caniuse-lite "^1.0.30001317" - electron-to-chromium "^1.4.84" + caniuse-lite "^1.0.30001332" + electron-to-chromium "^1.4.118" escalade "^3.1.1" - node-releases "^2.0.2" + node-releases "^2.0.3" picocolors "^1.0.0" +bs-logger@0.x: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -898,6 +1143,11 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== +builtin-modules@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" + integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== + cacheable-request@^6.0.0: version "6.1.0" resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-6.1.0.tgz#20ffb8bd162ba4be11e9567d823db651052ca912" @@ -926,10 +1176,10 @@ camelcase@^6.2.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== -caniuse-lite@^1.0.30001317: - version "1.0.30001332" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz#39476d3aa8d83ea76359c70302eafdd4a1d727dd" - integrity sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw== +caniuse-lite@^1.0.30001332: + version "1.0.30001335" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001335.tgz#899254a0b70579e5a957c32dced79f0727c61f2a" + integrity sha512-ddP1Tgm7z2iIxu6QTtbZUv6HJxSaV/PZeSrWFZtbY4JZ69tOeNhBCl3HyRQgeNZKE5AOn1kpV7fhljigy0Ty3w== chalk@^2.0.0: version "2.4.2" @@ -940,6 +1190,14 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + chalk@^4.0.0, chalk@^4.1.0, chalk@~4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -973,7 +1231,7 @@ clean-stack@^2.0.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: +cli-boxes@^2.2.0, cli-boxes@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== @@ -1193,6 +1451,20 @@ defer-to-connect@^1.0.1: resolved "https://registry.yarnpkg.com/defer-to-connect/-/defer-to-connect-1.1.3.tgz#331ae050c08dcf789f8c83a7b81f0ed94f4ac591" integrity sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ== +del@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/del/-/del-5.1.0.tgz#d9487c94e367410e6eff2925ee58c0c84a75b3a7" + integrity sha512-wH9xOVHnczo9jN2IW68BabcecVPxacIA3g/7z6vhSU/4stOKQzeCRK0yD0A24WiAAUJmmVpWqrERcTxnLo3AnA== + dependencies: + globby "^10.0.1" + graceful-fs "^4.2.2" + is-glob "^4.0.1" + is-path-cwd "^2.2.0" + is-path-inside "^3.0.1" + p-map "^3.0.0" + rimraf "^3.0.0" + slash "^3.0.0" + delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" @@ -1208,6 +1480,13 @@ diff-sequences@^27.5.1: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -1239,10 +1518,10 @@ eastasianwidth@^0.2.0: resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== -electron-to-chromium@^1.4.84: - version "1.4.111" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.111.tgz#897613f6504f3f17c9381c7499a635b413e4df4e" - integrity sha512-/s3+fwhKf1YK4k7btOImOzCQLpUjS6MaPf0ODTNuT4eTM1Bg4itBpLkydhOzJmpmH6Z9eXFyuuK5czsmzRzwtw== +electron-to-chromium@^1.4.118: + version "1.4.129" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.129.tgz#c675793885721beefff99da50f57c6525c2cd238" + integrity sha512-GgtN6bsDtHdtXJtlMYZWGB/uOyjZWjmRDumXTas7dGBaB9zUyCjzHet1DY2KhyHN8R0GLbzZWqm4efeddqqyRQ== emittery@^0.8.1: version "0.8.1" @@ -1322,6 +1601,14 @@ eslint-plugin-prettier@^4.0.0: dependencies: prettier-linter-helpers "^1.0.0" +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + eslint-scope@^7.1.1: version "7.1.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" @@ -1342,17 +1629,17 @@ eslint-visitor-keys@^2.0.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== -eslint-visitor-keys@^3.3.0: +eslint-visitor-keys@^3.0.0, eslint-visitor-keys@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^8.6.0: - version "8.13.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.13.0.tgz#6fcea43b6811e655410f5626cfcf328016badcd7" - integrity sha512-D+Xei61eInqauAyTJ6C0q6x9mx7kTUC1KZ0m0LSEexR0V+e94K12LmWX076ZIsldwfQ2RONdaJe0re0TRGQbRQ== +eslint@^8.14.0: + version "8.14.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.14.0.tgz#62741f159d9eb4a79695b28ec4989fcdec623239" + integrity sha512-3/CE4aJX7LNEiE3i6FeodHmI/38GZtWCsAtsymScmzYapx8q1nVVb+eLcLSzATmCPXw5pT4TqVs1E0OmxAd9tw== dependencies: - "@eslint/eslintrc" "^1.2.1" + "@eslint/eslintrc" "^1.2.2" "@humanwhocodes/config-array" "^0.9.2" ajv "^6.10.0" chalk "^4.0.0" @@ -1416,11 +1703,21 @@ esrecurse@^4.3.0: dependencies: estraverse "^5.2.0" +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + estraverse@^5.1.0, estraverse@^5.2.0: version "5.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -1466,7 +1763,18 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== -fast-json-stable-stringify@^2.0.0: +fast-glob@^3.0.3, fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== @@ -1476,6 +1784,13 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + fb-watchman@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" @@ -1532,7 +1847,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= -fsevents@^2.3.2: +fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -1588,6 +1903,13 @@ git-state@^4.1.0: dependencies: after-all-results "^2.0.0" +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + glob-parent@^6.0.1: version "6.0.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" @@ -1626,6 +1948,32 @@ globals@^13.6.0, globals@^13.9.0: dependencies: type-fest "^0.20.2" +globby@^10.0.1: + version "10.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + +globby@^11.0.4: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + got@^9.6.0: version "9.6.0" resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" @@ -1643,7 +1991,7 @@ got@^9.6.0: to-readable-stream "^1.0.0" url-parse-lax "^3.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.2.9: +graceful-fs@^4.1.2, graceful-fs@^4.2.2, graceful-fs@^4.2.9: version "4.2.10" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== @@ -1721,7 +2069,7 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" -ignore@^5.2.0: +ignore@^5.1.1, ignore@^5.1.8, ignore@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== @@ -1793,9 +2141,9 @@ is-ci@^2.0.0: ci-info "^2.0.0" is-core-module@^2.8.1: - version "2.8.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" - integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== dependencies: has "^1.0.3" @@ -1819,7 +2167,7 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== -is-glob@^4.0.0, is-glob@^4.0.3: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== @@ -1834,6 +2182,11 @@ is-installed-globally@^0.4.0: global-dirs "^3.0.0" is-path-inside "^3.0.2" +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + is-npm@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/is-npm/-/is-npm-5.0.0.tgz#43e8d65cc56e1b67f8d47262cf667099193f45a8" @@ -1849,7 +2202,12 @@ is-obj@^2.0.0: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-2.0.0.tgz#473fb05d973705e3fd9620545018ca8e22ef4982" integrity sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w== -is-path-inside@^3.0.2: +is-path-cwd@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" + integrity sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ== + +is-path-inside@^3.0.1, is-path-inside@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== @@ -1885,9 +2243,9 @@ istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz#7b49198b657b27a730b8e9cb601f1e1bff24c59a" - integrity sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q== + version "5.2.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" + integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== dependencies: "@babel/core" "^7.12.3" "@babel/parser" "^7.14.7" @@ -2112,7 +2470,7 @@ jest-leak-detector@^27.5.1: jest-get-type "^27.5.1" pretty-format "^27.5.1" -jest-matcher-utils@^27.5.1: +jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== @@ -2271,7 +2629,7 @@ jest-snapshot@^27.5.1: pretty-format "^27.5.1" semver "^7.3.2" -jest-util@^27.5.1: +jest-util@^27.0.0, jest-util@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== @@ -2404,7 +2762,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= -json5@^2.2.1: +json5@2.x, json5@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== @@ -2460,9 +2818,9 @@ lines-and-columns@^1.1.6: integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== lint-staged@^12.3.8: - version "12.3.8" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.3.8.tgz#ee3fe2e16c9d76f99d8348072900b017d6d76901" - integrity sha512-0+UpNaqIwKRSGAFOCcpuYNIv/j5QGVC+xUVvmSdxHO+IfIGoHbFLo3XcPmV/LLnsVj5EAncNHVtlITSoY5qWGQ== + version "12.4.1" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-12.4.1.tgz#63fa27bfc8a33515f6902f63f6670864f1fb233c" + integrity sha512-PTXgzpflrQ+pODQTG116QNB+Q6uUTDg5B5HqGvNhoQSGt8Qy+MA/6zSnR8n38+sxP5TapzeQGTvoKni0KRS8Vg== dependencies: cli-truncate "^3.1.0" colorette "^2.0.16" @@ -2500,6 +2858,11 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +lodash.memoize@4.x: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4= + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -2537,6 +2900,13 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + make-dir@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -2544,6 +2914,11 @@ make-dir@^3.0.0: dependencies: semver "^6.0.0" +make-error@1.x: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + makeerror@1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" @@ -2556,6 +2931,11 @@ merge-stream@^2.0.0: resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== +merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + micromatch@^4.0.4: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" @@ -2613,10 +2993,10 @@ node-int64@^0.4.0: resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= -node-releases@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.3.tgz#225ee7488e4a5e636da8da52854844f9d716ca96" - integrity sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw== +node-releases@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.4.tgz#f38252370c43854dc48aa431c766c6c398f40476" + integrity sha512-gbMzqQtTtDz/00jQzZ21PQzdI9PyLYqUSvD0p3naOhX4odFji0ZxYdnVwPTxmSwkmxhcFImpozceidSG+AgoPQ== normalize-path@^3.0.0: version "3.0.0" @@ -2702,6 +3082,13 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + p-map@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" @@ -2766,12 +3153,17 @@ path-parse@^1.0.7: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: +picomatch@^2.0.4, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== @@ -2820,7 +3212,7 @@ prettier@2.6.2: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== -pretty-format@^27.5.1: +pretty-format@^27.0.0, pretty-format@^27.5.1: version "27.5.1" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== @@ -2862,6 +3254,11 @@ pupa@^2.1.1: dependencies: escape-goat "^2.0.0" +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + rc@^1.2.8: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" @@ -2923,7 +3320,7 @@ resolve.exports@^1.1.0: resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== -resolve@^1.20.0: +resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0: version "1.22.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== @@ -2947,6 +3344,11 @@ restore-cursor@^3.1.0: onetime "^5.1.0" signal-exit "^3.0.2" +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + rfdc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b" @@ -2959,6 +3361,44 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +rollup-plugin-build-statistics@^0.0.19: + version "0.0.19" + resolved "https://registry.yarnpkg.com/rollup-plugin-build-statistics/-/rollup-plugin-build-statistics-0.0.19.tgz#69601bedd5435b0279225554c948275207afec11" + integrity sha512-gEiiS99X0WN3zgBhe4B5MYzh68ApnjoyUPONb7CDrBqpyQTqfu8I9xPHf4M/bIRBjkD9Cyv14j91G7vjVgqJeg== + +rollup-plugin-delete@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-delete/-/rollup-plugin-delete-2.0.0.tgz#262acf80660d48c3b167fb0baabd0c3ab985c153" + integrity sha512-/VpLMtDy+8wwRlDANuYmDa9ss/knGsAgrDhM+tEwB1npHwNu4DYNmDfUL55csse/GHs9Q+SMT/rw9uiaZ3pnzA== + dependencies: + del "^5.1.0" + +rollup-plugin-preserve-shebang@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-preserve-shebang/-/rollup-plugin-preserve-shebang-1.0.1.tgz#17109cdb4ed12c3cac9379b802182427cdbee5a1" + integrity sha512-gk7ExGBqvUinhgrvldKHkAKXXwRkWMXMZymNkrtn50uBgHITlhRjhnKmbNGwAIc4Bzgl3yLv7/8Fhi/XeHhFKg== + dependencies: + magic-string "^0.25.7" + +rollup-plugin-shebang@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/rollup-plugin-shebang/-/rollup-plugin-shebang-0.1.5.tgz#a15c9fed2d6c369f668a66a311b99c2023a6e0e4" + integrity sha512-7rtj//+Y0b4ha71PNCIk1GJjjcyZUZtPZe4l4YguUsrZrp5ukc/tbw5N1CTglbLojICrL/oJT9xDnjKQrXX1ZQ== + +rollup@^2.70.2: + version "2.71.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.71.1.tgz#82b259af7733dfd1224a8171013aaaad02971a22" + integrity sha512-lMZk3XfUBGjrrZQpvPSoXcZSfKcJ2Bgn+Z0L1MoW2V8Wh7BVM+LOBJTPo16yul2MwL59cXedzW1ruq3rCjSRgw== + optionalDependencies: + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + rxjs@^7.5.5: version "7.5.5" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.5.tgz#2ebad89af0f560f460ad5cc4213219e1f7dd4e9f" @@ -2990,18 +3430,18 @@ semver-diff@^3.1.1: dependencies: semver "^6.3.0" -semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.2, semver@^7.3.4: +semver@7.x, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5: version "7.3.7" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== dependencies: lru-cache "^6.0.0" +semver@^6.0.0, semver@^6.2.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -3063,11 +3503,6 @@ source-map-support@^0.5.6: buffer-from "^1.0.0" source-map "^0.6.0" -source-map@^0.5.0: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -3078,6 +3513,11 @@ source-map@^0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -3199,6 +3639,11 @@ symbol-tree@^3.2.4: resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +term-size@^2.1.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" + integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== + terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -3269,10 +3714,36 @@ tr46@^2.1.0: dependencies: punycode "^2.1.1" +ts-jest@^27.1.4: + version "27.1.4" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.4.tgz#84d42cf0f4e7157a52e7c64b1492c46330943e00" + integrity sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ== + dependencies: + bs-logger "0.x" + fast-json-stable-stringify "2.x" + jest-util "^27.0.0" + json5 "2.x" + lodash.memoize "4.x" + make-error "1.x" + semver "7.x" + yargs-parser "20.x" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + tslib@^2.1.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" type-check@^0.4.0, type-check@~0.4.0: version "0.4.0" @@ -3303,6 +3774,16 @@ 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.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +type-fest@^2.12.2: + version "2.12.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.12.2.tgz#80a53614e6b9b475eb9077472fb7498dc7aa51d0" + integrity sha512-qt6ylCGpLjZ7AaODxbpyBZSs9fCI9SkL3Z9q2oxMBQhs/uyY+VD8jHA8ULCGmWQJlBgqvO3EJeAngOHD8zQCrQ== + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -3310,6 +3791,11 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" +typescript@^4.6.3: + version "4.6.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" + integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== + unique-string@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/unique-string/-/unique-string-2.0.0.tgz#39c6451f81afb2749de2b233e3f7c5e8843bd89d" @@ -3509,7 +3995,7 @@ yaml@^1.10.2: resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== -yargs-parser@^20.2.2: +yargs-parser@20.x, yargs-parser@^20.2.2: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==