diff --git a/.eslintignore b/.eslintignore index 61469e7a..bed7dfa3 100644 --- a/.eslintignore +++ b/.eslintignore @@ -2,3 +2,4 @@ /dist /tsconfig.src.tsbuildinfo /tsconfig.test.tsbuildinfo +/bin diff --git a/.eslintrc.js b/.eslintrc.cjs similarity index 77% rename from .eslintrc.js rename to .eslintrc.cjs index 5a32ef7d..434b8aac 100644 --- a/.eslintrc.js +++ b/.eslintrc.cjs @@ -21,7 +21,7 @@ module.exports = { overrides: [ // for typescript { - files: ['*.ts', '*.tsx'], + files: ['*.ts', '*.tsx', '*.cts', '*.mts'], parserOptions: { project: ['./tsconfig.src.json', './tsconfig.test.json'], }, @@ -32,11 +32,14 @@ module.exports = { '@typescript-eslint/no-unsafe-return': 'off', // 煩すぎるので off '@typescript-eslint/no-unsafe-argument': 'off', + // disable because this rule do not support ESM in TypeScript. + // ref: https://github.com/import-js/eslint-plugin-import/issues/2170 + 'import/no-unresolved': 'off', }, }, // for test { - files: ['test/**/*.{ts,tsx}'], + files: ['test/**/*.{ts,tsx,cts,mts}'], env: { jest: true, }, diff --git a/.vscode/settings.json b/.vscode/settings.json index 042380ab..8a32527e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -13,5 +13,9 @@ // あまりカジュアルに起動時に処理を実行したくない、という狙いがある。 // *.ts ファイルが変更されたら jest のテストが自動実行がされる点は変わらないので、 // これで開発体験が損なわれることはないはず。 - "jest.autoRun": { "watch": true } + "jest.autoRun": { + "watch": true + }, + // Use nightly version tsserver + "typescript.tsdk": "node_modules/typescript/lib" } diff --git a/bin/eslint-interactive b/bin/eslint-interactive.js similarity index 79% rename from bin/eslint-interactive rename to bin/eslint-interactive.js index 5528c273..5bb864f0 100755 --- a/bin/eslint-interactive +++ b/bin/eslint-interactive.js @@ -1,6 +1,6 @@ #!/usr/bin/env -S node -r source-map-support/register -const { run } = require('../dist'); +import { run } from '../dist/index.js'; run({ argv: process.argv, diff --git a/fixtures/package.json b/fixtures/package.json new file mode 100644 index 00000000..5bbefffb --- /dev/null +++ b/fixtures/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/jest.config.js b/jest.config.mjs similarity index 63% rename from jest.config.js rename to jest.config.mjs index 68f004ee..f35a502e 100644 --- a/jest.config.js +++ b/jest.config.mjs @@ -2,21 +2,28 @@ /** @typedef {import('ts-jest/dist/types')} */ /** @type {import('@jest/types').Config.InitialOptions} */ -module.exports = { +// eslint-disable-next-line import/no-default-export +export default { displayName: 'test', - preset: 'ts-jest', + preset: 'ts-jest/presets/default-esm', testMatch: ['/test/**/*.test.ts?(x)'], // Since fixtures-tmp are rewritten during testing, if they are in the watch target, the test will be retrying infinitely. watchPathIgnorePatterns: ['/fixtures-tmp/'], // ESLint v8 では `pkg.exports` を利用したモジュールに依存しているが、jest は `pkg.exports` を解釈できないため、 // そのままだと jest がコケてしまう。そこで `moduleNameMapper` を使って無理やりモジュール名を解決している。 moduleNameMapper: { - '@eslint/eslintrc/universal': '@eslint/eslintrc/dist/eslintrc-universal.cjs', + // Map `./**/xxx.js` to `./**/xxx` (for ESM) + '^(\\.{1,2}/.*)\\.js$': '$1', }, - collectCoverageFrom: ['/src/**/*.{ts,tsx}', '!**/*.d.ts'], + // for ESM + resolver: '/test/test-util/jest/resolver.cjs', + // do not transform `import` statements (for ESM) + transform: {}, + collectCoverageFrom: ['/src/**/*.{js,jsx,cjs,mjs,ts,tsx,cts,mts}', '!**/*.d.ts'], globals: { 'ts-jest': { tsconfig: 'tsconfig.test.json', + useESM: true, }, }, }; diff --git a/package.json b/package.json index ec7e8930..45120c92 100644 --- a/package.json +++ b/package.json @@ -6,23 +6,24 @@ "author": "mizdra ", "license": "MIT", "private": false, + "type": "module", "scripts": { "build": "tsc -p tsconfig.src.json", - "dev": "tsc-watch -p tsconfig.src.json --onSuccess 'bin/eslint-interactive fixtures --rulesdir fixtures/rules --ext .js,.jsx,.mjs'", + "dev": "tsc-watch -p tsconfig.src.json --onSuccess 'bin/eslint-interactive.js fixtures --rulesdir fixtures/rules --ext .js,.jsx,.mjs'", "lint": "run-s -c lint:*", "lint:tsc": "run-s -c lint:tsc:*", "lint:tsc:src": "tsc -p tsconfig.src.json --noEmit", "lint:tsc:test": "tsc -p tsconfig.test.json --noEmit", "lint:eslint": "eslint --ignore-pattern '/fixtures' .", "lint:prettier": "prettier --check .", - "test": "jest --colors" + "test": "NODE_OPTIONS=--experimental-vm-modules jest --colors" }, "prettier": "@mizdra/prettier-config-mizdra", "renovate": "github>mizdra/renovate-config-mizdra", "packageManager": "yarn@1.22.15", "devDependencies": { - "@jest/types": "^27.1.0", - "@mizdra/eslint-config-mizdra": "^1.0.0", + "@jest/types": "^27.4.2", + "@mizdra/eslint-config-mizdra": "^1.1.0", "@mizdra/prettier-config-mizdra": "^0.4.0", "@types/cli-table": "^0.3.0", "@types/eslint": "^8.2.0", @@ -34,21 +35,22 @@ "@types/yargs": "^16.0.4", "@typescript-eslint/eslint-plugin": "^5.2.0", "@typescript-eslint/parser": "^5.2.0", + "enhanced-resolve": "^5.8.3", "eslint": "^8.1.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-import": "^2.25.2", - "jest": "^27.1.0", + "jest": "^27.4.5", "jest-mock-process": "^1.4.1", "npm-run-all": "^4.1.5", "prettier": "2.4.1", - "strip-ansi": "^6.0.0", - "ts-jest": "^27.0.5", + "strip-ansi": "^7.0.1", + "ts-jest": "^27.1.2", "tsc-watch": "^4.2.9", - "typescript": "^4.1.2" + "typescript": "^4.6.0-dev.20211228" }, "dependencies": { - "boxen": "^5.1.2", - "chalk": "^4.1.2", + "boxen": "^6.2.1", + "chalk": "^5.0.0", "cli-table": "^0.3.11", "comlink": "^4.3.1", "enquirer": "^2.3.6", @@ -56,23 +58,23 @@ "estraverse": "^5.3.0", "is-installed-globally": "^0.4.0", "node-pager": "^0.3.6", - "ora": "^5.1.0", + "ora": "^6.0.1", "source-map-support": "^0.5.20", - "terminal-link": "^2.1.1", + "terminal-link": "^3.0.0", "yargs": "^16.2.0" }, "peerDependencies": { "eslint": "^7.0.0 || ^8.0.0" }, "engines": { - "node": ">=14.0" + "node": "^14.13.1 || >=16.0.0" }, "publishConfig": { "access": "public", "registry": "https://registry.npmjs.org/" }, "bin": { - "eslint-interactive": "bin/eslint-interactive" + "eslint-interactive": "bin/eslint-interactive.js" }, "keywords": [ "eslint" diff --git a/src/actions/apply-suggestions.ts b/src/actions/apply-suggestions.ts index d8d54304..a729a907 100644 --- a/src/actions/apply-suggestions.ts +++ b/src/actions/apply-suggestions.ts @@ -4,13 +4,13 @@ import chalk from 'chalk'; import { Remote } from 'comlink'; import { ESLint } from 'eslint'; import ora from 'ora'; -import { promptToInputReuseFilterScript } from '../cli/prompt'; -import { SerializableCore } from '../core-worker'; +import { promptToInputReuseFilterScript } from '../cli/prompt.js'; +import { SerializableCore } from '../core-worker.js'; import { editFileWithEditor, generateExampleFilterScriptFilePath, generateFilterScriptFilePath, -} from '../util/filter-script'; +} from '../util/filter-script.js'; export async function doApplySuggestionsAction( core: Remote, diff --git a/src/actions/disable-per-file.ts b/src/actions/disable-per-file.ts index bda5d600..7db7dab7 100644 --- a/src/actions/disable-per-file.ts +++ b/src/actions/disable-per-file.ts @@ -2,8 +2,8 @@ import chalk from 'chalk'; import { Remote } from 'comlink'; import { ESLint } from 'eslint'; import ora from 'ora'; -import { promptToInputDescription } from '../cli/prompt'; -import { SerializableCore } from '../core-worker'; +import { promptToInputDescription } from '../cli/prompt.js'; +import { SerializableCore } from '../core-worker.js'; export async function doDisablePerFileAction( core: Remote, diff --git a/src/actions/disable-per-line.ts b/src/actions/disable-per-line.ts index 4d81f44f..50c9f1a3 100644 --- a/src/actions/disable-per-line.ts +++ b/src/actions/disable-per-line.ts @@ -2,8 +2,8 @@ import chalk from 'chalk'; import { Remote } from 'comlink'; import { ESLint } from 'eslint'; import ora from 'ora'; -import { promptToInputDescription } from '../cli/prompt'; -import { SerializableCore } from '../core-worker'; +import { promptToInputDescription } from '../cli/prompt.js'; +import { SerializableCore } from '../core-worker.js'; export async function doDisablePerLineAction( core: Remote, diff --git a/src/actions/fix.ts b/src/actions/fix.ts index f860d371..cd72d88e 100644 --- a/src/actions/fix.ts +++ b/src/actions/fix.ts @@ -1,7 +1,7 @@ import chalk from 'chalk'; import { Remote } from 'comlink'; import ora from 'ora'; -import { SerializableCore } from '../core-worker'; +import { SerializableCore } from '../core-worker.js'; export async function doFixAction(core: Remote, selectedRuleIds: string[]) { const fixingSpinner = ora('Fixing...').start(); diff --git a/src/actions/make-fixable-and-fix.ts b/src/actions/make-fixable-and-fix.ts index 84d1461e..3096945f 100644 --- a/src/actions/make-fixable-and-fix.ts +++ b/src/actions/make-fixable-and-fix.ts @@ -4,13 +4,13 @@ import chalk from 'chalk'; import { Remote } from 'comlink'; import { ESLint } from 'eslint'; import ora from 'ora'; -import { promptToInputReuseScript } from '../cli/prompt'; -import { SerializableCore } from '../core-worker'; +import { promptToInputReuseScript } from '../cli/prompt.js'; +import { SerializableCore } from '../core-worker.js'; import { editFileWithEditor, generateExampleFixableMakerScriptFilePath, generateFixableMakerScriptFilePath, -} from '../util/filter-script'; +} from '../util/filter-script.js'; export async function doMakeFixableAndFixAction( core: Remote, diff --git a/src/actions/print-details-of-results.ts b/src/actions/print-details-of-results.ts index b4fc43e7..0787df2c 100644 --- a/src/actions/print-details-of-results.ts +++ b/src/actions/print-details-of-results.ts @@ -1,7 +1,7 @@ import { Remote } from 'comlink'; import { ESLint } from 'eslint'; -import { promptToInputDisplayMode } from '../cli/prompt'; -import { SerializableCore } from '../core-worker'; +import { promptToInputDisplayMode } from '../cli/prompt.js'; +import { SerializableCore } from '../core-worker.js'; export async function doPrintDetailsOfResultsAction( core: Remote, diff --git a/src/cli/parse-argv.ts b/src/cli/parse-argv.ts index 01dea065..4cd019a1 100644 --- a/src/cli/parse-argv.ts +++ b/src/cli/parse-argv.ts @@ -1,5 +1,5 @@ import yargs from 'yargs'; -import { Config } from '../types'; +import { Config } from '../types.js'; /** Parse argv into the config object of eslint-interactive */ export function parseArgv(argv: string[]): Config { diff --git a/src/cli/prompt.ts b/src/cli/prompt.ts index 8474ee25..bcaff4ef 100644 --- a/src/cli/prompt.ts +++ b/src/cli/prompt.ts @@ -1,7 +1,9 @@ /* istanbul ignore file */ -import { prompt } from 'enquirer'; -import { Action, DisplayMode } from '../types'; +import enquirer from 'enquirer'; +import { Action, DisplayMode } from '../types.js'; + +const { prompt } = enquirer; // When combined with worker, for some reason the enquirer grabs the SIGINT and the process continues to survive. // Therefore, the process is explicitly terminated. diff --git a/src/core-worker.ts b/src/core-worker.ts index b137a3af..77535d05 100644 --- a/src/core-worker.ts +++ b/src/core-worker.ts @@ -1,11 +1,11 @@ import { parentPort } from 'worker_threads'; import { expose } from 'comlink'; -import nodeEndpoint from 'comlink/dist/umd/node-adapter'; +import nodeEndpoint from 'comlink/dist/esm/node-adapter.mjs'; import { ESLint } from 'eslint'; -import { Core } from './core'; -import { SuggestionFilter } from './transforms/apply-suggestions'; -import { FixableMaker } from './transforms/make-fixable-and-fix'; -import { Config } from './types'; +import { Core } from './core.js'; +import { SuggestionFilter } from './transforms/apply-suggestions.js'; +import { FixableMaker } from './transforms/make-fixable-and-fix.js'; +import { Config } from './types.js'; /** * @file This is a wrapper module for using the Core API with comlink. @@ -61,5 +61,5 @@ export class SerializableCore { return this.core.makeFixableAndFix(results, ruleIds, fixableMaker); } } - -expose(SerializableCore, nodeEndpoint(parentPort)); +// eslint-disable-next-line @typescript-eslint/no-explicit-any +expose(SerializableCore, (nodeEndpoint as any)(parentPort)); diff --git a/src/core.ts b/src/core.ts index 84dbc35e..62f0958a 100644 --- a/src/core.ts +++ b/src/core.ts @@ -2,12 +2,12 @@ import { tmpdir } from 'os'; import { join } from 'path'; import { ESLint } from 'eslint'; import pager from 'node-pager'; -import { format } from './formatter'; -import transformRule, { TransformRuleOption } from './rules/transform'; -import { SuggestionFilter } from './transforms/apply-suggestions'; -import { FixableMaker } from './transforms/make-fixable-and-fix'; -import { Config, DisplayMode, Transform } from './types'; -import { filterResultsByRuleId, scanUsedPluginsFromResults } from './util/eslint'; +import { format } from './formatter/index.js'; +import transformRule, { TransformRuleOption } from './rules/transform.js'; +import { SuggestionFilter } from './transforms/apply-suggestions.js'; +import { FixableMaker } from './transforms/make-fixable-and-fix.js'; +import { Config, DisplayMode, Transform } from './types.js'; +import { filterResultsByRuleId, scanUsedPluginsFromResults } from './util/eslint.js'; /** * The core of eslint-interactive. diff --git a/src/formatter/colors.ts b/src/formatter/colors.ts index 5a4febbb..4bf52590 100644 --- a/src/formatter/colors.ts +++ b/src/formatter/colors.ts @@ -1,7 +1,5 @@ /* istanbul ignore file */ -import { Color } from 'chalk'; - -export const FAILED_COLOR: typeof Color = 'redBright'; -export const ERROR_COLOR: typeof Color = 'red'; -export const WARNING_COLOR: typeof Color = 'yellow'; +export const FAILED_COLOR = 'redBright' as const; +export const ERROR_COLOR = 'red' as const; +export const WARNING_COLOR = 'yellow' as const; diff --git a/src/formatter/format-by-files.ts b/src/formatter/format-by-files.ts index c51d6eb6..d2daa7d7 100644 --- a/src/formatter/format-by-files.ts +++ b/src/formatter/format-by-files.ts @@ -1,6 +1,6 @@ import chalk from 'chalk'; import { ESLint } from 'eslint'; -import { ERROR_COLOR, FAILED_COLOR, WARNING_COLOR } from './colors'; +import { ERROR_COLOR, FAILED_COLOR, WARNING_COLOR } from './colors.js'; function pluralize(word: string, count: number): string { return count > 1 ? `${word}s` : word; diff --git a/src/formatter/format-by-rules.ts b/src/formatter/format-by-rules.ts index e3d885b4..40c18e31 100644 --- a/src/formatter/format-by-rules.ts +++ b/src/formatter/format-by-rules.ts @@ -1,9 +1,10 @@ import chalk from 'chalk'; -import Table from 'cli-table'; +// eslint-disable-next-line @typescript-eslint/no-require-imports +import Table = require('cli-table'); import { ESLint } from 'eslint'; // import terminalLink from 'terminal-link'; -import { ERROR_COLOR } from './colors'; -import { takeRuleStatistics } from './take-rule-statistics'; +import { ERROR_COLOR } from './colors.js'; +import { takeRuleStatistics } from './take-rule-statistics.js'; function numCell(num: number): string { return num > 0 ? chalk[ERROR_COLOR].bold(num) : num.toString(); diff --git a/src/formatter/index.ts b/src/formatter/index.ts index 8b2a334d..71f38460 100644 --- a/src/formatter/index.ts +++ b/src/formatter/index.ts @@ -1,6 +1,6 @@ import { ESLint } from 'eslint'; -import { formatByFiles } from './format-by-files'; -import { formatByRules } from './format-by-rules'; +import { formatByFiles } from './format-by-files.js'; +import { formatByRules } from './format-by-rules.js'; export const format: ESLint.Formatter['format'] = (results, data) => { return formatByFiles(results) + '\n' + formatByRules(results, data); diff --git a/src/formatter/take-rule-statistics.ts b/src/formatter/take-rule-statistics.ts index f5572139..411de60b 100644 --- a/src/formatter/take-rule-statistics.ts +++ b/src/formatter/take-rule-statistics.ts @@ -1,6 +1,6 @@ import { ESLint, Linter } from 'eslint'; -import { RuleStatistic } from '../types'; -import { groupBy } from '../util/array'; +import { RuleStatistic } from '../types.js'; +import { groupBy } from '../util/array.js'; /** 指定されたルールのエラー/警告の件数などの統計を取る */ function takeRuleStatistic(ruleId: string, messages: Linter.LintMessage[]): RuleStatistic { diff --git a/src/index.ts b/src/index.ts index 93133d39..c2b4b046 100755 --- a/src/index.ts +++ b/src/index.ts @@ -1,16 +1,18 @@ -import { join } from 'path'; +import { dirname, join } from 'path'; +import { fileURLToPath } from 'url'; import { Worker } from 'worker_threads'; import { wrap } from 'comlink'; -import nodeEndpoint from 'comlink/dist/umd/node-adapter'; -import isInstalledGlobally from 'is-installed-globally'; -import { warn } from './cli/log'; -import { parseArgv } from './cli/parse-argv'; -import { SerializableCore } from './core-worker'; -import { lint } from './scenes/lint'; -import { selectAction } from './scenes/select-action'; -import { selectRuleIds } from './scenes/select-rule-ids'; -import { selectToContinue } from './scenes/select-to-continue'; -import { NextScene } from './types'; +import nodeEndpoint from 'comlink/dist/esm/node-adapter.mjs'; +// eslint-disable-next-line @typescript-eslint/no-require-imports +import isInstalledGlobally = require('is-installed-globally'); +import { warn } from './cli/log.js'; +import { parseArgv } from './cli/parse-argv.js'; +import { SerializableCore } from './core-worker.js'; +import { lint } from './scenes/lint.js'; +import { selectAction } from './scenes/select-action.js'; +import { selectRuleIds } from './scenes/select-rule-ids.js'; +import { selectToContinue } from './scenes/select-to-continue.js'; +import { NextScene } from './types.js'; export type Options = { argv: string[]; @@ -31,8 +33,9 @@ export async function run(options: Options) { // Directly executing the Core API will hog the main thread and halt the spinner. // So we wrap it with comlink and run it on the Worker. - const worker = new Worker(join(__dirname, 'core-worker.js')); - const ProxiedCore = wrap(nodeEndpoint(worker)); + const worker = new Worker(join(dirname(fileURLToPath(import.meta.url)), 'core-worker.js')); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const ProxiedCore = wrap((nodeEndpoint as any)(worker)); const core = await new ProxiedCore(config); let nextScene: NextScene = { name: 'lint' }; diff --git a/src/rules/transform.ts b/src/rules/transform.ts index 4a1bfaea..86281a77 100644 --- a/src/rules/transform.ts +++ b/src/rules/transform.ts @@ -1,9 +1,9 @@ import { ESLint, Rule } from 'eslint'; -import { createTransformToApplySuggestions } from '../transforms/apply-suggestions'; -import { createTransformToDisablePerFile } from '../transforms/disable-per-file'; -import { createTransformToDisablePerLine } from '../transforms/disable-per-line'; -import { createTransformToMakeFixableAndFix } from '../transforms/make-fixable-and-fix'; -import { Transform, TransformContext } from '../types'; +import { createTransformToApplySuggestions } from '../transforms/apply-suggestions.js'; +import { createTransformToDisablePerFile } from '../transforms/disable-per-file.js'; +import { createTransformToDisablePerLine } from '../transforms/disable-per-line.js'; +import { createTransformToMakeFixableAndFix } from '../transforms/make-fixable-and-fix.js'; +import { Transform, TransformContext } from '../types.js'; /** * @file The rule to do the transform. @@ -100,6 +100,5 @@ const rule: Rule.RuleModule = { }, }; -module.exports = rule; // for ESLint's Node.js API // eslint-disable-next-line import/no-default-export -export default rule; // for test +export default rule; diff --git a/src/scenes/lint.ts b/src/scenes/lint.ts index d57df036..33e13f3e 100644 --- a/src/scenes/lint.ts +++ b/src/scenes/lint.ts @@ -1,11 +1,11 @@ import chalk from 'chalk'; import { Remote } from 'comlink'; import ora from 'ora'; -import { warn } from '../cli/log'; -import { SerializableCore } from '../core-worker'; -import { NextScene } from '../types'; -import { unique } from '../util/array'; -import { notEmpty } from '../util/type-check'; +import { warn } from '../cli/log.js'; +import { SerializableCore } from '../core-worker.js'; +import { NextScene } from '../types.js'; +import { unique } from '../util/array.js'; +import { notEmpty } from '../util/type-check.js'; /** * Run the scene to lint. diff --git a/src/scenes/select-action.ts b/src/scenes/select-action.ts index b6437165..ffac95c3 100644 --- a/src/scenes/select-action.ts +++ b/src/scenes/select-action.ts @@ -1,15 +1,15 @@ import { Remote } from 'comlink'; import { ESLint } from 'eslint'; -import { doApplySuggestionsAction } from '../actions/apply-suggestions'; -import { doDisablePerFileAction } from '../actions/disable-per-file'; -import { doDisablePerLineAction } from '../actions/disable-per-line'; -import { doFixAction } from '../actions/fix'; -import { doMakeFixableAndFixAction } from '../actions/make-fixable-and-fix'; -import { doPrintDetailsOfResultsAction } from '../actions/print-details-of-results'; -import { promptToInputAction } from '../cli/prompt'; -import { SerializableCore } from '../core-worker'; -import { NextScene } from '../types'; -import { unreachable } from '../util/type-check'; +import { doApplySuggestionsAction } from '../actions/apply-suggestions.js'; +import { doDisablePerFileAction } from '../actions/disable-per-file.js'; +import { doDisablePerLineAction } from '../actions/disable-per-line.js'; +import { doFixAction } from '../actions/fix.js'; +import { doMakeFixableAndFixAction } from '../actions/make-fixable-and-fix.js'; +import { doPrintDetailsOfResultsAction } from '../actions/print-details-of-results.js'; +import { promptToInputAction } from '../cli/prompt.js'; +import { SerializableCore } from '../core-worker.js'; +import { NextScene } from '../types.js'; +import { unreachable } from '../util/type-check.js'; export type SelectActionArgs = { /** The lint results of the project */ diff --git a/src/scenes/select-rule-ids.ts b/src/scenes/select-rule-ids.ts index 608380d0..def350ca 100644 --- a/src/scenes/select-rule-ids.ts +++ b/src/scenes/select-rule-ids.ts @@ -1,9 +1,9 @@ import { Remote } from 'comlink'; import { ESLint } from 'eslint'; -import { promptToInputRuleIds } from '../cli/prompt'; -import { SerializableCore } from '../core-worker'; -import { NextScene } from '../types'; -import { selectAction } from './select-action'; +import { promptToInputRuleIds } from '../cli/prompt.js'; +import { SerializableCore } from '../core-worker.js'; +import { NextScene } from '../types.js'; +import { selectAction } from './select-action.js'; export type SelectRuleIdsArgs = { /** The lint results of the project */ diff --git a/src/scenes/select-to-continue.ts b/src/scenes/select-to-continue.ts index 6511b7e5..58c6d3f3 100644 --- a/src/scenes/select-to-continue.ts +++ b/src/scenes/select-to-continue.ts @@ -1,5 +1,5 @@ -import { promptToInputContinue } from '../cli/prompt'; -import { NextScene } from '../types'; +import { promptToInputContinue } from '../cli/prompt.js'; +import { NextScene } from '../types.js'; /** * Run the scene where a user select to continue running the program or not. diff --git a/src/transforms/apply-suggestions.ts b/src/transforms/apply-suggestions.ts index a1156af5..1d68fb24 100644 --- a/src/transforms/apply-suggestions.ts +++ b/src/transforms/apply-suggestions.ts @@ -1,5 +1,5 @@ import { Linter, Rule } from 'eslint'; -import { TransformContext } from '../types'; +import { TransformContext } from '../types.js'; export type SuggestionFilter = ( suggestions: Linter.LintSuggestion[], diff --git a/src/transforms/disable-per-file.ts b/src/transforms/disable-per-file.ts index 2dd39797..ec7f4bcc 100644 --- a/src/transforms/disable-per-file.ts +++ b/src/transforms/disable-per-file.ts @@ -1,15 +1,15 @@ import { Rule } from 'eslint'; import type { Comment } from 'estree'; -import { TransformContext } from '../types'; -import { unique } from '../util/array'; +import { TransformContext } from '../types.js'; +import { unique } from '../util/array.js'; import { DisableComment, findShebang, mergeRuleIdsAndDescription, parseDisableComment, toCommentText, -} from '../util/eslint'; -import { notEmpty } from '../util/type-check'; +} from '../util/eslint.js'; +import { notEmpty } from '../util/type-check.js'; export type TransformToDisablePerFileArgs = { description?: string; diff --git a/src/transforms/disable-per-line.ts b/src/transforms/disable-per-line.ts index e458f9a5..aee3b854 100644 --- a/src/transforms/disable-per-line.ts +++ b/src/transforms/disable-per-line.ts @@ -1,9 +1,9 @@ import { Linter, Rule } from 'eslint'; import type { Comment } from 'estree'; -import { TransformContext } from '../types'; -import { groupBy, unique } from '../util/array'; -import { DisableComment, mergeRuleIdsAndDescription, parseDisableComment, toCommentText } from '../util/eslint'; -import { notEmpty } from '../util/type-check'; +import { TransformContext } from '../types.js'; +import { groupBy, unique } from '../util/array.js'; +import { DisableComment, mergeRuleIdsAndDescription, parseDisableComment, toCommentText } from '../util/eslint.js'; +import { notEmpty } from '../util/type-check.js'; export type TransformToDisablePerLineArgs = { description?: string; diff --git a/src/transforms/make-fixable-and-fix.ts b/src/transforms/make-fixable-and-fix.ts index 03a4b934..03ff13ac 100644 --- a/src/transforms/make-fixable-and-fix.ts +++ b/src/transforms/make-fixable-and-fix.ts @@ -1,8 +1,8 @@ import { Linter, Rule, SourceCode } from 'eslint'; import { traverse } from 'estraverse'; import type { Node } from 'estree'; -import { TransformContext } from '../types'; -import { unreachable } from '../util/type-check'; +import { TransformContext } from '../types.js'; +import { unreachable } from '../util/type-check.js'; export type FixableMaker = (message: Linter.LintMessage, node: Node | null) => Rule.Fix | null | undefined; diff --git a/src/types.ts b/src/types.ts index cbaed174..9205c080 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,10 +1,10 @@ import { Linter, Rule, SourceCode } from 'eslint'; -import { SelectActionArgs } from './scenes/select-action'; -import { SelectRuleIdsArgs } from './scenes/select-rule-ids'; -import { TransformToApplySuggestionsArgs } from './transforms/apply-suggestions'; -import { TransformToDisablePerFileArgs } from './transforms/disable-per-file'; -import { TransformToDisablePerLineArgs } from './transforms/disable-per-line'; -import { TransformToMakeFixableAndFixArgs } from './transforms/make-fixable-and-fix'; +import { SelectActionArgs } from './scenes/select-action.js'; +import { SelectRuleIdsArgs } from './scenes/select-rule-ids.js'; +import { TransformToApplySuggestionsArgs } from './transforms/apply-suggestions.js'; +import { TransformToDisablePerFileArgs } from './transforms/disable-per-file.js'; +import { TransformToDisablePerLineArgs } from './transforms/disable-per-line.js'; +import { TransformToMakeFixableAndFixArgs } from './transforms/make-fixable-and-fix.js'; /** * The type that indicates what to do with the problems of selected rules. diff --git a/src/util/eslint.ts b/src/util/eslint.ts index 2123bc9f..6516aac9 100644 --- a/src/util/eslint.ts +++ b/src/util/eslint.ts @@ -1,7 +1,7 @@ import { AST, ESLint } from 'eslint'; import type { Comment } from 'estree'; -import { unique } from './array'; -import { notEmpty } from './type-check'; +import { unique } from './array.js'; +import { notEmpty } from './type-check.js'; const COMMENT_RE = /^\s*(?
eslint-disable|eslint-disable-next-line)\s+(?[@a-z0-9\-_$/]*(?:\s*,\s*[@a-z0-9\-_$/]*)*(?:\s*,)?)(?:\s+--\s+(?.*\S))?\s*$/u; diff --git a/src/util/filter-script.ts b/src/util/filter-script.ts index 0119d7f0..5aedfdda 100644 --- a/src/util/filter-script.ts +++ b/src/util/filter-script.ts @@ -2,6 +2,7 @@ import { exec as execOriginal } from 'child_process'; import { mkdir, appendFile, readFile, access } from 'fs/promises'; import { tmpdir } from 'os'; import { dirname, join } from 'path'; +import { fileURLToPath } from 'url'; import { promisify } from 'util'; const exec = promisify(execOriginal); @@ -36,9 +37,9 @@ export function generateFixableMakerScriptFilePath(ruleIds: string[]): string { } export function generateExampleFilterScriptFilePath(): string { - return join(__dirname, '..', '..', 'static', 'example-filter-script.js'); + return join(dirname(fileURLToPath(import.meta.url)), '..', '..', 'static', 'example-filter-script.js'); } export function generateExampleFixableMakerScriptFilePath(): string { - return join(__dirname, '..', '..', 'static', 'example-fixable-maker-script.js'); + return join(dirname(fileURLToPath(import.meta.url)), '..', '..', 'static', 'example-fixable-maker-script.js'); } diff --git a/test/cli/parse-argv.test.ts b/test/cli/parse-argv.test.ts index c86efe17..71ba72a8 100644 --- a/test/cli/parse-argv.test.ts +++ b/test/cli/parse-argv.test.ts @@ -1,4 +1,4 @@ -import { parseArgv } from '../../src/cli/parse-argv'; +import { parseArgv } from '../../src/cli/parse-argv.js'; const baseArgs = ['node', 'eslint-interactive']; diff --git a/test/core.test.ts b/test/core.test.ts index c1a609a0..8d5c9e4b 100644 --- a/test/core.test.ts +++ b/test/core.test.ts @@ -1,11 +1,13 @@ import { exec } from 'child_process'; -import { join } from 'path'; +import { dirname, join } from 'path'; +import { fileURLToPath } from 'url'; import { promisify } from 'util'; import { ESLint } from 'eslint'; import { mockConsoleLog } from 'jest-mock-process'; -import { Core } from '../src/core'; +import { Core } from '../src/core.js'; const execPromise = promisify(exec); +const cwd = join(dirname(fileURLToPath(import.meta.url)), '..'); /** * Returns a string containing the stitched together contents of the file modified by transform. @@ -13,7 +15,7 @@ const execPromise = promisify(exec); */ async function getSnapshotOfChangedFiles(): Promise { const { stdout } = await execPromise(`diff -qr fixtures fixtures-tmp | cut -d " " -f 4 | xargs tail -n +1`, { - cwd: join(__dirname, '..'), + cwd, }); return stdout.toString(); } @@ -32,11 +34,11 @@ function normalize(results: ESLint.LintResult[]): ESLint.LintResult[] { } beforeEach(async () => { - await execPromise(`rm -rf fixtures-tmp && cp -r fixtures fixtures-tmp`, { cwd: join(__dirname, '..') }); + await execPromise(`rm -rf fixtures-tmp && cp -r fixtures fixtures-tmp`, { cwd }); }); afterEach(async () => { - await execPromise(`rm -rf fixtures-tmp`, { cwd: join(__dirname, '..') }); + await execPromise(`rm -rf fixtures-tmp`, { cwd }); }); describe('Core', () => { @@ -45,7 +47,7 @@ describe('Core', () => { rulePaths: ['fixtures-tmp/rules'], extensions: ['.js', '.jsx', '.mjs'], formatterName: 'codeframe', - cwd: join(__dirname, '..'), + cwd, }); test('lint', async () => { const results = await core.lint(); diff --git a/test/formatter/format-by-files.test.ts b/test/formatter/format-by-files.test.ts index 7c34cf37..a957299b 100644 --- a/test/formatter/format-by-files.test.ts +++ b/test/formatter/format-by-files.test.ts @@ -1,7 +1,7 @@ import { ESLint } from 'eslint'; import stripAnsi from 'strip-ansi'; -import { formatByFiles } from '../../src/formatter/format-by-files'; -import { fakeLintResult, fakeLintMessage } from '../test-util/eslint'; +import { formatByFiles } from '../../src/formatter/format-by-files.js'; +import { fakeLintResult, fakeLintMessage } from '../test-util/eslint.js'; describe('formatByFiles', () => { test('outputs formatted text', () => { diff --git a/test/formatter/format-by-rules.test.ts b/test/formatter/format-by-rules.test.ts index eb5dee8e..0b944a3f 100644 --- a/test/formatter/format-by-rules.test.ts +++ b/test/formatter/format-by-rules.test.ts @@ -1,8 +1,8 @@ /* eslint-disable no-irregular-whitespace */ import { ESLint } from 'eslint'; import stripAnsi from 'strip-ansi'; -import { formatByRules } from '../../src/formatter/format-by-rules'; -import { fakeLintResult, fakeLintMessage, fakeFix, fakeSuggestions } from '../test-util/eslint'; +import { formatByRules } from '../../src/formatter/format-by-rules.js'; +import { fakeLintResult, fakeLintMessage, fakeFix, fakeSuggestions } from '../test-util/eslint.js'; describe('formatByRules', () => { test('outputs formatted text', () => { diff --git a/test/formatter/index.test.ts b/test/formatter/index.test.ts index dcbe8aeb..b72f9ea0 100644 --- a/test/formatter/index.test.ts +++ b/test/formatter/index.test.ts @@ -1,22 +1,6 @@ -const mockFormatByFiles = jest.fn(() => 'formatByFiles'); -const mockFormatByRules = jest.fn(() => 'formatByRules'); - import { ESLint } from 'eslint'; -import { format } from '../../src/formatter'; -import { fakeLintResult, fakeLintMessage } from '../test-util/eslint'; - -jest.mock('../../src/formatter/format-by-files', () => { - return { - ...jest.requireActual('../../src/formatter/format-by-files'), - formatByFiles: mockFormatByFiles, - }; -}); -jest.mock('../../src/formatter/format-by-rules', () => { - return { - ...jest.requireActual('../../src/formatter/format-by-rules'), - formatByRules: mockFormatByRules, - }; -}); +import { format } from '../../src/formatter/index.js'; +import { fakeLintResult, fakeLintMessage } from '../test-util/eslint.js'; describe('format', () => { test('call `formatByFiles` and `formatByRules`', () => { @@ -28,10 +12,13 @@ describe('format', () => { const data: ESLint.LintResultData = { rulesMeta: {} }; const formattedText = format(results, data); expect(formattedText).toMatchInlineSnapshot(` -"formatByFiles -formatByRules" -`); - expect(mockFormatByFiles).toBeCalledWith(results); - expect(mockFormatByRules).toBeCalledWith(results, data); + "- 1 file (0 file passed, 1 file failed) checked. +  + ┌────────┬───────┬─────────┬────────────┬─────────────────┐ + │ Rule │ Error │ Warning │ is fixable │ has suggestions │ + ├────────┼───────┼─────────┼────────────┼─────────────────┤ + │ rule-a │ 1 │ 0 │ 0 │ 0 │ + └────────┴───────┴─────────┴────────────┴─────────────────┘" + `); }); }); diff --git a/test/formatter/take-rule-statistics.test.ts b/test/formatter/take-rule-statistics.test.ts index 81b070c8..48eaa38e 100644 --- a/test/formatter/take-rule-statistics.test.ts +++ b/test/formatter/take-rule-statistics.test.ts @@ -1,7 +1,7 @@ import { ESLint } from 'eslint'; -import { takeRuleStatistics } from '../../src/formatter/take-rule-statistics'; -import { RuleStatistic } from '../../src/types'; -import { fakeLintResult, fakeLintMessage, fakeFix, fakeSuggestions } from '../test-util/eslint'; +import { takeRuleStatistics } from '../../src/formatter/take-rule-statistics.js'; +import { RuleStatistic } from '../../src/types.js'; +import { fakeLintResult, fakeLintMessage, fakeFix, fakeSuggestions } from '../test-util/eslint.js'; describe('takeRuleStatistics', () => { test('aggregates errors and warnings for each rule', () => { diff --git a/test/test-util/jest/resolver.cjs b/test/test-util/jest/resolver.cjs new file mode 100644 index 00000000..ec5c4b41 --- /dev/null +++ b/test/test-util/jest/resolver.cjs @@ -0,0 +1,17 @@ +// ref: https://github.com/facebook/jest/issues/9771#issuecomment-974750103 +const importResolver = require('enhanced-resolve').create.sync({ + conditionNames: ['import', 'node', 'default'], + extensions: ['.js', '.json', '.node', '.ts'], +}); +const requireResolver = require('enhanced-resolve').create.sync({ + conditionNames: ['require', 'node', 'default'], + extensions: ['.js', '.json', '.node', '.ts'], +}); + +module.exports = function (request, options) { + let resolver = requireResolver; + if (options.conditions?.includes('import')) { + resolver = importResolver; + } + return resolver(options.basedir, request); +}; diff --git a/test/test-util/rules/apply-fixes.ts b/test/test-util/rules/apply-fixes.ts index 54c978c1..8e4dd4c0 100644 --- a/test/test-util/rules/apply-fixes.ts +++ b/test/test-util/rules/apply-fixes.ts @@ -56,6 +56,5 @@ const rule: Rule.RuleModule = { }, }; -module.exports = rule; // for ESLint's Node.js API // eslint-disable-next-line import/no-default-export -export default rule; // for test +export default rule; diff --git a/test/test-util/rules/prefer-addition-shorthand.ts b/test/test-util/rules/prefer-addition-shorthand.ts index c0e1d90d..a8fd068b 100644 --- a/test/test-util/rules/prefer-addition-shorthand.ts +++ b/test/test-util/rules/prefer-addition-shorthand.ts @@ -51,6 +51,5 @@ const rule: Rule.RuleModule = { }, }; -module.exports = rule; // for ESLint's Node.js API // eslint-disable-next-line import/no-default-export -export default rule; // for test +export default rule; diff --git a/test/test-util/transform-tester.ts b/test/test-util/transform-tester.ts index 732c03d1..5a7101d7 100644 --- a/test/test-util/transform-tester.ts +++ b/test/test-util/transform-tester.ts @@ -1,7 +1,7 @@ import { Linter } from 'eslint'; -import { TransformContext, TransformFunction } from '../../src/types'; -import applyFixesRule from './rules/apply-fixes'; -import preferAdditionShorthand from './rules/prefer-addition-shorthand'; +import { TransformContext, TransformFunction } from '../../src/types.js'; +import applyFixesRule from './rules/apply-fixes.js'; +import preferAdditionShorthand from './rules/prefer-addition-shorthand.js'; const DEFAULT_FILENAME = 'test.js'; diff --git a/test/transforms/apply-suggestions.test.ts b/test/transforms/apply-suggestions.test.ts index a61be819..6d5311b1 100644 --- a/test/transforms/apply-suggestions.test.ts +++ b/test/transforms/apply-suggestions.test.ts @@ -2,8 +2,8 @@ import { Linter } from 'eslint'; import { createTransformToApplySuggestions, TransformToApplySuggestionsArgs, -} from '../../src/transforms/apply-suggestions'; -import { TransformTester } from '../test-util/transform-tester'; +} from '../../src/transforms/apply-suggestions.js'; +import { TransformTester } from '../test-util/transform-tester.js'; const tester = new TransformTester( createTransformToApplySuggestions, diff --git a/test/transforms/disable-per-file.test.ts b/test/transforms/disable-per-file.test.ts index 4a16a089..471d2b63 100644 --- a/test/transforms/disable-per-file.test.ts +++ b/test/transforms/disable-per-file.test.ts @@ -1,5 +1,5 @@ -import { createTransformToDisablePerFile } from '../../src/transforms/disable-per-file'; -import { TransformTester } from '../test-util/transform-tester'; +import { createTransformToDisablePerFile } from '../../src/transforms/disable-per-file.js'; +import { TransformTester } from '../test-util/transform-tester.js'; const tester = new TransformTester( createTransformToDisablePerFile, diff --git a/test/transforms/disable-per-line.test.ts b/test/transforms/disable-per-line.test.ts index 206175da..088dcaf9 100644 --- a/test/transforms/disable-per-line.test.ts +++ b/test/transforms/disable-per-line.test.ts @@ -1,5 +1,5 @@ -import { createTransformToDisablePerLine } from '../../src/transforms/disable-per-line'; -import { TransformTester } from '../test-util/transform-tester'; +import { createTransformToDisablePerLine } from '../../src/transforms/disable-per-line.js'; +import { TransformTester } from '../test-util/transform-tester.js'; const tester = new TransformTester( createTransformToDisablePerLine, diff --git a/test/transforms/make-fixable-and-fix.test.ts b/test/transforms/make-fixable-and-fix.test.ts index 39493f50..db4d2589 100644 --- a/test/transforms/make-fixable-and-fix.test.ts +++ b/test/transforms/make-fixable-and-fix.test.ts @@ -1,8 +1,8 @@ import { createTransformToMakeFixableAndFix, TransformToMakeFixableAndFixArgs, -} from '../../src/transforms/make-fixable-and-fix'; -import { TransformTester } from '../test-util/transform-tester'; +} from '../../src/transforms/make-fixable-and-fix.js'; +import { TransformTester } from '../test-util/transform-tester.js'; const tester = new TransformTester( createTransformToMakeFixableAndFix, diff --git a/test/util/array.test.ts b/test/util/array.test.ts index 03765a7f..bc6b2b24 100644 --- a/test/util/array.test.ts +++ b/test/util/array.test.ts @@ -1,4 +1,4 @@ -import { groupBy, unique } from '../../src/util/array'; +import { groupBy, unique } from '../../src/util/array.js'; test('unique', () => { expect(unique([0, 1, 1, 2, 1])).toStrictEqual([0, 1, 2]); diff --git a/test/util/eslint.test.ts b/test/util/eslint.test.ts index a7ffbaf6..f01ea57c 100644 --- a/test/util/eslint.test.ts +++ b/test/util/eslint.test.ts @@ -6,8 +6,8 @@ import { mergeRuleIdsAndDescription, findShebang, filterResultsByRuleId, -} from '../../src/util/eslint'; -import { fakeLintMessage, fakeLintResult } from '../test-util/eslint'; +} from '../../src/util/eslint.js'; +import { fakeLintMessage, fakeLintResult } from '../test-util/eslint.js'; const range: [number, number] = [0, 1]; diff --git a/test/util/type-check.test.ts b/test/util/type-check.test.ts index c380f4d1..fe9e4a41 100644 --- a/test/util/type-check.test.ts +++ b/test/util/type-check.test.ts @@ -1,4 +1,4 @@ -import { notEmpty } from '../../src/util/type-check'; +import { notEmpty } from '../../src/util/type-check.js'; test('notEmpty', () => { expect(notEmpty('')).toStrictEqual(true); diff --git a/tsconfig.base.json b/tsconfig.base.json index 1094b065..3e80f2a3 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -13,11 +13,21 @@ "incremental": true, // ビルド結果をキャッシュするように /* Module Options */ - // "module": "esnext", // 継承先で上書きする - "esModuleInterop": true, // CommonJS モジュールを `import _ from 'commonjs'` で import できるように + "module": "node12", + "moduleResolution": "node12", + "esModuleInterop": false, // `"module": "node12"` との相性が悪いので off にする "resolveJsonModule": true, // import した json の型を推論するように - "moduleResolution": "node", // `node` にしないと `resolveJsonModule` が使えない "forceConsistentCasingInFileNames": true, // 大文字小文字を区別しない環境 (win) でも unix と同じように区別する + // 🤯🤯🤯 THIS IS SUPER HACK!!! 🤯🤯🤯 + // - comlink provides an ESM module (ex. `comlink/dist/esm/node-adapter.mjs`) + // - Of course, comlink also provide type definitions (ex. `comlink/dist/esm/node-adapter.d.ts`) + // - However, the corresponding type definition for `xxx.mjs` is `xxx.d.mts` in `"module": "node12"` mode + // - Therefore, importing the ESM module causes compilation errors + // - So, use `paths` option to force `xxx.mjs` to be mapped to `xxx.d.ts`. + "baseUrl": ".", + "paths": { + "comlink/dist/esm/node-adapter.mjs": ["./node_modules/comlink/dist/esm/node-adapter.js"] + }, /* Additional Features */ // "jsx": "react", diff --git a/tsconfig.src.json b/tsconfig.src.json index 3124f512..472d4c95 100644 --- a/tsconfig.src.json +++ b/tsconfig.src.json @@ -6,8 +6,6 @@ "outDir": "./dist/", // Compatible for Node.js v12 (ref: https://github.com/microsoft/TypeScript/wiki/Node-Target-Mapping) "target": "ES2019", - "lib": ["ES2019"], - /* Module Options */ - "module": "CommonJS" + "lib": ["ES2019"] } } diff --git a/tsconfig.test.json b/tsconfig.test.json index b9e8a0af..f918c2ac 100644 --- a/tsconfig.test.json +++ b/tsconfig.test.json @@ -7,8 +7,6 @@ // "rootDir": "./test", // Compatible for Node.js v12 (ref: https://github.com/microsoft/TypeScript/wiki/Node-Target-Mapping) "target": "ES2019", - "lib": ["ES2019"], - /* Module Options */ - "module": "CommonJS" + "lib": ["ES2019"] } } diff --git a/yarn.lock b/yarn.lock index 9d660a83..90d649c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -354,94 +354,94 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^27.1.0": - version "27.1.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.1.0.tgz#de13b603cb1d389b50c0dc6296e86e112381e43c" - integrity sha512-+Vl+xmLwAXLNlqT61gmHEixeRbS4L8MUzAjtpBCOPWH+izNI/dR16IeXjkXJdRtIVWVSf9DO1gdp67B1XorZhQ== +"@jest/console@^27.4.2": + version "27.4.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.4.2.tgz#7a95612d38c007ddb528ee446fe5e5e785e685ce" + integrity sha512-xknHThRsPB/To1FUbi6pCe43y58qFC03zfb6R7fDb/FfC7k2R3i1l+izRBJf8DI46KhYGRaF14Eo9A3qbBoixg== dependencies: - "@jest/types" "^27.1.0" + "@jest/types" "^27.4.2" "@types/node" "*" chalk "^4.0.0" - jest-message-util "^27.1.0" - jest-util "^27.1.0" + jest-message-util "^27.4.2" + jest-util "^27.4.2" slash "^3.0.0" -"@jest/core@^27.1.0": - version "27.1.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.1.0.tgz#622220f18032f5869e579cecbe744527238648bf" - integrity sha512-3l9qmoknrlCFKfGdrmiQiPne+pUR4ALhKwFTYyOeKw6egfDwJkO21RJ1xf41rN8ZNFLg5W+w6+P4fUqq4EMRWA== +"@jest/core@^27.4.5": + version "27.4.5" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.4.5.tgz#cae2dc34259782f4866c6606c3b480cce920ed4c" + integrity sha512-3tm/Pevmi8bDsgvo73nX8p/WPng6KWlCyScW10FPEoN1HU4pwI83tJ3TsFvi1FfzsjwUlMNEPowgb/rPau/LTQ== dependencies: - "@jest/console" "^27.1.0" - "@jest/reporters" "^27.1.0" - "@jest/test-result" "^27.1.0" - "@jest/transform" "^27.1.0" - "@jest/types" "^27.1.0" + "@jest/console" "^27.4.2" + "@jest/reporters" "^27.4.5" + "@jest/test-result" "^27.4.2" + "@jest/transform" "^27.4.5" + "@jest/types" "^27.4.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" emittery "^0.8.1" exit "^0.1.2" graceful-fs "^4.2.4" - jest-changed-files "^27.1.0" - jest-config "^27.1.0" - jest-haste-map "^27.1.0" - jest-message-util "^27.1.0" - jest-regex-util "^27.0.6" - jest-resolve "^27.1.0" - jest-resolve-dependencies "^27.1.0" - jest-runner "^27.1.0" - jest-runtime "^27.1.0" - jest-snapshot "^27.1.0" - jest-util "^27.1.0" - jest-validate "^27.1.0" - jest-watcher "^27.1.0" + jest-changed-files "^27.4.2" + jest-config "^27.4.5" + jest-haste-map "^27.4.5" + jest-message-util "^27.4.2" + jest-regex-util "^27.4.0" + jest-resolve "^27.4.5" + jest-resolve-dependencies "^27.4.5" + jest-runner "^27.4.5" + jest-runtime "^27.4.5" + jest-snapshot "^27.4.5" + jest-util "^27.4.2" + jest-validate "^27.4.2" + jest-watcher "^27.4.2" micromatch "^4.0.4" - p-each-series "^2.1.0" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^27.1.0": - version "27.1.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.1.0.tgz#c7224a67004759ec203d8fa44e8bc0db93f66c44" - integrity sha512-wRp50aAMY2w1U2jP1G32d6FUVBNYqmk8WaGkiIEisU48qyDV0WPtw3IBLnl7orBeggveommAkuijY+RzVnNDOQ== +"@jest/environment@^27.4.4": + version "27.4.4" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.4.4.tgz#66ebebc79673d84aad29d2bb70a8c51e6c29bb4d" + integrity sha512-q+niMx7cJgt/t/b6dzLOh4W8Ef/8VyKG7hxASK39jakijJzbFBGpptx3RXz13FFV7OishQ9lTbv+dQ5K3EhfDQ== dependencies: - "@jest/fake-timers" "^27.1.0" - "@jest/types" "^27.1.0" + "@jest/fake-timers" "^27.4.2" + "@jest/types" "^27.4.2" "@types/node" "*" - jest-mock "^27.1.0" + jest-mock "^27.4.2" -"@jest/fake-timers@^27.1.0": - version "27.1.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.1.0.tgz#c0b343d8a16af17eab2cb6862e319947c0ea2abe" - integrity sha512-22Zyn8il8DzpS+30jJNVbTlm7vAtnfy1aYvNeOEHloMlGy1PCYLHa4PWlSws0hvNsMM5bON6GISjkLoQUV3oMA== +"@jest/fake-timers@^27.4.2": + version "27.4.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.4.2.tgz#d217f86c3ba2027bf29e0b731fd0cb761a72d093" + integrity sha512-f/Xpzn5YQk5adtqBgvw1V6bF8Nx3hY0OIRRpCvWcfPl0EAjdqWPdhH3t/3XpiWZqtjIEHDyMKP9ajpva1l4Zmg== dependencies: - "@jest/types" "^27.1.0" - "@sinonjs/fake-timers" "^7.0.2" + "@jest/types" "^27.4.2" + "@sinonjs/fake-timers" "^8.0.1" "@types/node" "*" - jest-message-util "^27.1.0" - jest-mock "^27.1.0" - jest-util "^27.1.0" + jest-message-util "^27.4.2" + jest-mock "^27.4.2" + jest-util "^27.4.2" -"@jest/globals@^27.1.0": - version "27.1.0" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.1.0.tgz#e093a49c718dd678a782c197757775534c88d3f2" - integrity sha512-73vLV4aNHAlAgjk0/QcSIzzCZSqVIPbmFROJJv9D3QUR7BI4f517gVdJpSrCHxuRH3VZFhe0yGG/tmttlMll9g== +"@jest/globals@^27.4.4": + version "27.4.4" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.4.4.tgz#fe501a80c23ea2dab585c42be2a519bb5e38530d" + integrity sha512-bqpqQhW30BOreXM8bA8t8JbOQzsq/WnPTnBl+It3UxAD9J8yxEAaBEylHx1dtBapAr/UBk8GidXbzmqnee8tYQ== dependencies: - "@jest/environment" "^27.1.0" - "@jest/types" "^27.1.0" - expect "^27.1.0" + "@jest/environment" "^27.4.4" + "@jest/types" "^27.4.2" + expect "^27.4.2" -"@jest/reporters@^27.1.0": - version "27.1.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.1.0.tgz#02ed1e6601552c2f6447378533f77aad002781d4" - integrity sha512-5T/zlPkN2HnK3Sboeg64L5eC8iiaZueLpttdktWTJsvALEtP2YMkC5BQxwjRWQACG9SwDmz+XjjkoxXUDMDgdw== +"@jest/reporters@^27.4.5": + version "27.4.5" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.4.5.tgz#e229acca48d18ea39e805540c1c322b075ae63ad" + integrity sha512-3orsG4vi8zXuBqEoy2LbnC1kuvkg1KQUgqNxmxpQgIOQEPeV0onvZu+qDQnEoX8qTQErtqn/xzcnbpeTuOLSiA== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.1.0" - "@jest/test-result" "^27.1.0" - "@jest/transform" "^27.1.0" - "@jest/types" "^27.1.0" + "@jest/console" "^27.4.2" + "@jest/test-result" "^27.4.2" + "@jest/transform" "^27.4.5" + "@jest/types" "^27.4.2" + "@types/node" "*" chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" @@ -452,60 +452,60 @@ istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" - jest-haste-map "^27.1.0" - jest-resolve "^27.1.0" - jest-util "^27.1.0" - jest-worker "^27.1.0" + jest-haste-map "^27.4.5" + jest-resolve "^27.4.5" + jest-util "^27.4.2" + jest-worker "^27.4.5" slash "^3.0.0" source-map "^0.6.0" string-length "^4.0.1" terminal-link "^2.0.0" - v8-to-istanbul "^8.0.0" + v8-to-istanbul "^8.1.0" -"@jest/source-map@^27.0.6": - version "27.0.6" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.0.6.tgz#be9e9b93565d49b0548b86e232092491fb60551f" - integrity sha512-Fek4mi5KQrqmlY07T23JRi0e7Z9bXTOOD86V/uS0EIW4PClvPDqZOyFlLpNJheS6QI0FNX1CgmPjtJ4EA/2M+g== +"@jest/source-map@^27.4.0": + version "27.4.0" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.4.0.tgz#2f0385d0d884fb3e2554e8f71f8fa957af9a74b6" + integrity sha512-Ntjx9jzP26Bvhbm93z/AKcPRj/9wrkI88/gK60glXDx1q+IeI0rf7Lw2c89Ch6ofonB0On/iRDreQuQ6te9pgQ== dependencies: callsites "^3.0.0" graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^27.1.0": - version "27.1.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.1.0.tgz#9345ae5f97f6a5287af9ebd54716cd84331d42e8" - integrity sha512-Aoz00gpDL528ODLghat3QSy6UBTD5EmmpjrhZZMK/v1Q2/rRRqTGnFxHuEkrD4z/Py96ZdOHxIWkkCKRpmnE1A== +"@jest/test-result@^27.4.2": + version "27.4.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.4.2.tgz#05fd4a5466ec502f3eae0b39dff2b93ea4d5d9ec" + integrity sha512-kr+bCrra9jfTgxHXHa2UwoQjxvQk3Am6QbpAiJ5x/50LW8llOYrxILkqY0lZRW/hu8FXesnudbql263+EW9iNA== dependencies: - "@jest/console" "^27.1.0" - "@jest/types" "^27.1.0" + "@jest/console" "^27.4.2" + "@jest/types" "^27.4.2" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^27.1.0": - version "27.1.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.1.0.tgz#04e8b3bd735570d3d48865e74977a14dc99bff2d" - integrity sha512-lnCWawDr6Z1DAAK9l25o3AjmKGgcutq1iIbp+hC10s/HxnB8ZkUsYq1FzjOoxxZ5hW+1+AthBtvS4x9yno3V1A== +"@jest/test-sequencer@^27.4.5": + version "27.4.5" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.4.5.tgz#1d7e026844d343b60d2ca7fd82c579a17b445d7d" + integrity sha512-n5woIn/1v+FT+9hniymHPARA9upYUmfi5Pw9ewVwXCDlK4F5/Gkees9v8vdjGdAIJ2MPHLHodiajLpZZanWzEQ== dependencies: - "@jest/test-result" "^27.1.0" + "@jest/test-result" "^27.4.2" graceful-fs "^4.2.4" - jest-haste-map "^27.1.0" - jest-runtime "^27.1.0" + jest-haste-map "^27.4.5" + jest-runtime "^27.4.5" -"@jest/transform@^27.1.0": - version "27.1.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.1.0.tgz#962e385517e3d1f62827fa39c305edcc3ca8544b" - integrity sha512-ZRGCA2ZEVJ00ubrhkTG87kyLbN6n55g1Ilq0X9nJb5bX3MhMp3O6M7KG+LvYu+nZRqG5cXsQnJEdZbdpTAV8pQ== +"@jest/transform@^27.4.5": + version "27.4.5" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.4.5.tgz#3dfe2e3680cd4aa27356172bf25617ab5b94f195" + integrity sha512-PuMet2UlZtlGzwc6L+aZmR3I7CEBpqadO03pU40l2RNY2fFJ191b9/ITB44LNOhVtsyykx0OZvj0PCyuLm7Eew== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^27.1.0" + "@jest/types" "^27.4.2" babel-plugin-istanbul "^6.0.0" chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" graceful-fs "^4.2.4" - jest-haste-map "^27.1.0" - jest-regex-util "^27.0.6" - jest-util "^27.1.0" + jest-haste-map "^27.4.5" + jest-regex-util "^27.4.0" + jest-util "^27.4.2" micromatch "^4.0.4" pirates "^4.0.1" slash "^3.0.0" @@ -523,10 +523,21 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" -"@mizdra/eslint-config-mizdra@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@mizdra/eslint-config-mizdra/-/eslint-config-mizdra-1.0.0.tgz#9382ff72510aecc4cb6ac19f6e8d30a773cd0a11" - integrity sha512-9E769NQJTWy/zJcDCtrj3RqsSCFcCd2cE6746+S7IcUzPZSYiDgN3rDniR6PBE74dfqZmOA8iZRYQHSDbKKpKA== +"@jest/types@^27.4.2": + version "27.4.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.4.2.tgz#96536ebd34da6392c2b7c7737d693885b5dd44a5" + integrity sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg== + dependencies: + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^16.0.0" + chalk "^4.0.0" + +"@mizdra/eslint-config-mizdra@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@mizdra/eslint-config-mizdra/-/eslint-config-mizdra-1.1.0.tgz#ad87ad48be4ffc96c4999a78b46af8d730b1d27a" + integrity sha512-P0X1VLYUTm3ne1NWA1Cepyi3aztqx2ZdStcq1f9bUltpQhY1tppMPES8zWGRJI5OEhod9rlhgozrWd17TvP+1w== "@mizdra/prettier-config-mizdra@^0.4.0": version "0.4.0" @@ -561,10 +572,10 @@ dependencies: type-detect "4.0.8" -"@sinonjs/fake-timers@^7.0.2": - version "7.1.2" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz#2524eae70c4910edccf99b2f4e6efc5894aff7b5" - integrity sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg== +"@sinonjs/fake-timers@^8.0.1": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz#3fdc2b6cb58935b21bfb8d1625eb1300484316e7" + integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg== dependencies: "@sinonjs/commons" "^1.7.0" @@ -829,7 +840,7 @@ ajv@^6.10.0, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-align@^3.0.0: +ansi-align@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== @@ -848,11 +859,23 @@ ansi-escapes@^4.2.1: dependencies: type-fest "^0.11.0" +ansi-escapes@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-5.0.0.tgz#b6a0caf0eef0c41af190e9a749e0c00ec04bb2a6" + integrity sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA== + dependencies: + type-fest "^1.0.2" + ansi-regex@^5.0.0, ansi-regex@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== +ansi-regex@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.0.1.tgz#3183e38fae9a65d7cb5e53945cd5897d0260a06a" + integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA== + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -872,6 +895,11 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== +ansi-styles@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.1.0.tgz#87313c102b8118abd57371afab34618bf7350ed3" + integrity sha512-VbqNsoz55SYGczauuup0MFUyXNQviSpFTj1RQtFzmQLk18qbVSpTFFGMT293rmDaQuKCT6InmbuEyUne4mTuxQ== + anymatch@^3.0.3: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" @@ -922,16 +950,16 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -babel-jest@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.1.0.tgz#e96ca04554fd32274439869e2b6d24de9d91bc4e" - integrity sha512-6NrdqzaYemALGCuR97QkC/FkFIEBWP5pw5TMJoUHZTVXyOgocujp6A0JE2V6gE0HtqAAv6VKU/nI+OCR1Z4gHA== +babel-jest@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.4.5.tgz#d38bd0be8ea71d8b97853a5fc9f76deeb095c709" + integrity sha512-3uuUTjXbgtODmSv/DXO9nZfD52IyC2OYTFaXGRzL0kpykzroaquCrD5+lZNafTvZlnNqZHt5pb0M08qVBZnsnA== dependencies: - "@jest/transform" "^27.1.0" - "@jest/types" "^27.1.0" + "@jest/transform" "^27.4.5" + "@jest/types" "^27.4.2" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^27.0.6" + babel-preset-jest "^27.4.0" chalk "^4.0.0" graceful-fs "^4.2.4" slash "^3.0.0" @@ -947,10 +975,10 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.0.6.tgz#f7c6b3d764af21cb4a2a1ab6870117dbde15b456" - integrity sha512-CewFeM9Vv2gM7Yr9n5eyyLVPRSiBnk6lKZRjgwYnGKSl9M14TMn2vkN02wTF04OGuSDLEzlWiMzvjXuW9mB6Gw== +babel-plugin-jest-hoist@^27.4.0: + version "27.4.0" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.4.0.tgz#d7831fc0f93573788d80dee7e682482da4c730d6" + integrity sha512-Jcu7qS4OX5kTWBc45Hz7BMmgXuJqRnhatqpUhnzGC3OBYpOmf2tv6jFNwZpwM7wU7MUuv2r9IPS/ZlYOuburVw== dependencies: "@babel/template" "^7.3.3" "@babel/types" "^7.3.3" @@ -975,12 +1003,12 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.0.6.tgz#909ef08e9f24a4679768be2f60a3df0856843f9d" - integrity sha512-WObA0/Biw2LrVVwZkF/2GqbOdzhKD6Fkdwhoy9ASIrOWr/zodcSpQh72JOkEn6NWyjmnPDjNSqaGN4KnpKzhXw== +babel-preset-jest@^27.4.0: + version "27.4.0" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.4.0.tgz#70d0e676a282ccb200fbabd7f415db5fdf393bca" + integrity sha512-NK4jGYpnBvNxcGo7/ZpZJr51jCGT+3bwwpVIDY2oNfTxJJldRtB4VAcYdgp1loDE50ODuTu+yBjpMAswv5tlpg== dependencies: - babel-plugin-jest-hoist "^27.0.6" + babel-plugin-jest-hoist "^27.4.0" babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: @@ -988,19 +1016,33 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -boxen@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" - integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bl@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-5.0.0.tgz#6928804a41e9da9034868e1c50ca88f21f57aea2" + integrity sha512-8vxFNZ0pflFfi0WXA3WQXlj6CaMEwsmh63I1CNp0q+wWv8sD0ARx1KovSQd0l2GkwrMIOyedq0EF1FxI+RCZLQ== + dependencies: + buffer "^6.0.3" + inherits "^2.0.4" + readable-stream "^3.4.0" + +boxen@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-6.2.1.tgz#b098a2278b2cd2845deef2dff2efc38d329b434d" + integrity sha512-H4PEsJXfFI/Pt8sjDWbHlQPx4zL/bvSQjcilJmaulGt5mLDorHOHpmdXAJcBcmru7PhYSp/cDMWRko4ZUMFkSw== dependencies: - ansi-align "^3.0.0" + ansi-align "^3.0.1" camelcase "^6.2.0" - chalk "^4.1.0" - cli-boxes "^2.2.1" - string-width "^4.2.2" - type-fest "^0.20.2" - widest-line "^3.1.0" - wrap-ansi "^7.0.0" + chalk "^4.1.2" + cli-boxes "^3.0.0" + string-width "^5.0.1" + type-fest "^2.5.0" + widest-line "^4.0.1" + wrap-ansi "^8.0.1" brace-expansion@^1.1.7: version "1.1.11" @@ -1052,6 +1094,14 @@ buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== +buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -1089,7 +1139,7 @@ chalk@^2.0.0, chalk@^2.4.1: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^4.0.0, chalk@^4.1.0: +chalk@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== @@ -1105,6 +1155,11 @@ chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" +chalk@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.0.0.tgz#bd96c6bb8e02b96e08c0c3ee2a9d90e050c7b832" + integrity sha512-/duVOqst+luxCQRKEo4bNxinsOQtMP80ZYm7mMqzuh5PociNL0PvmHFvREJ9ueYL2TxlHjBcmLCdmocx9Vg+IQ== + char-regex@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" @@ -1115,27 +1170,32 @@ ci-info@^3.1.1: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.2.0.tgz#2876cb948a498797b5236f0095bc057d0dca38b6" integrity sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A== +ci-info@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.0.tgz#b4ed1fb6818dea4803a55c623041f9165d2066b2" + integrity sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw== + cjs-module-lexer@^1.0.0: version "1.2.2" resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40" integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA== -cli-boxes@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== +cli-boxes@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-3.0.0.tgz#71a10c716feeba005e4504f36329ef0b17cf3145" + integrity sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g== -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== +cli-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" + integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== dependencies: - restore-cursor "^3.1.0" + restore-cursor "^4.0.0" -cli-spinners@^2.4.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047" - integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ== +cli-spinners@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== cli-table@^0.3.11: version "0.3.11" @@ -1342,6 +1402,11 @@ diff-sequences@^27.0.6: resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.0.6.tgz#3305cb2e55a033924054695cc66019fd7f8e5723" integrity sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ== +diff-sequences@^27.4.0: + version "27.4.0" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.4.0.tgz#d783920ad8d06ec718a060d00196dfef25b132a5" + integrity sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww== + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -1390,6 +1455,19 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +enhanced-resolve@^5.8.3: + version "5.8.3" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.8.3.tgz#6d552d465cce0423f5b3d718511ea53826a7b2f0" + integrity sha512-EGAbGvH7j7Xt2nc0E7D99La1OiEs8LnyimkRgwExpUMScN6O+3x9tIWs7PLQZVNx4YD+00skHXPXi1yQHpAmZA== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + enquirer@^2.3.5, enquirer@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -1678,17 +1756,17 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= -expect@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.1.0.tgz#380de0abb3a8f2299c4c6c66bbe930483b5dba9b" - integrity sha512-9kJngV5hOJgkFil4F/uXm3hVBubUK2nERVfvqNNwxxuW8ZOUwSTTSysgfzckYtv/LBzj/LJXbiAF7okHCXgdug== +expect@^27.4.2: + version "27.4.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-27.4.2.tgz#4429b0f7e307771d176de9bdf23229b101db6ef6" + integrity sha512-BjAXIDC6ZOW+WBFNg96J22D27Nq5ohn+oGcuP2rtOtcjuxNoV9McpQ60PcQWhdFOSBIQdR72e+4HdnbZTFSTyg== dependencies: - "@jest/types" "^27.1.0" + "@jest/types" "^27.4.2" ansi-styles "^5.0.0" - jest-get-type "^27.0.6" - jest-matcher-utils "^27.1.0" - jest-message-util "^27.1.0" - jest-regex-util "^27.0.6" + jest-get-type "^27.4.0" + jest-matcher-utils "^27.4.2" + jest-message-util "^27.4.2" + jest-regex-util "^27.4.0" fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" @@ -1986,6 +2064,11 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -2025,7 +2108,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2: +inherits@2, inherits@^2.0.3, inherits@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2098,6 +2181,11 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== +is-fullwidth-code-point@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz#fae3167c729e7463f8461ce512b080a49268aa88" + integrity sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ== + is-generator-fn@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" @@ -2118,10 +2206,10 @@ is-installed-globally@^0.4.0: global-dirs "^3.0.0" is-path-inside "^3.0.2" -is-interactive@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" - integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== +is-interactive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-2.0.0.tgz#40c57614593826da1100ade6059778d597f16e90" + integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ== is-negative-zero@^2.0.1: version "2.0.1" @@ -2187,6 +2275,11 @@ is-typedarray@^1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-unicode-supported@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.1.0.tgz#9127b71f9fa82f52ca5c20e982e7bec0ee31ee1e" + integrity sha512-lDcxivp8TJpLG75/DpatAqNzOpDPSpED8XNtrpBHTdQ2InQ1PbW78jhwSxyxhhu+xbVSast2X38bwj8atwoUQA== + is-weakref@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.1.tgz#842dba4ec17fa9ac9850df2d6efbc1737274f2a2" @@ -2240,86 +2333,87 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.1.0.tgz#42da6ea00f06274172745729d55f42b60a9dffe0" - integrity sha512-eRcb13TfQw0xiV2E98EmiEgs9a5uaBIqJChyl0G7jR9fCIvGjXovnDS6Zbku3joij4tXYcSK4SE1AXqOlUxjWg== +jest-changed-files@^27.4.2: + version "27.4.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.4.2.tgz#da2547ea47c6e6a5f6ed336151bd2075736eb4a5" + integrity sha512-/9x8MjekuzUQoPjDHbBiXbNEBauhrPU2ct7m8TfCg69ywt1y/N+yYwGh3gCpnqUS3klYWDU/lSNgv+JhoD2k1A== dependencies: - "@jest/types" "^27.1.0" + "@jest/types" "^27.4.2" execa "^5.0.0" throat "^6.0.1" -jest-circus@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.1.0.tgz#24c280c90a625ea57da20ee231d25b1621979a57" - integrity sha512-6FWtHs3nZyZlMBhRf1wvAC5CirnflbGJAY1xssSAnERLiiXQRH+wY2ptBVtXjX4gz4AA2EwRV57b038LmifRbA== +jest-circus@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.4.5.tgz#70bfb78e0200cab9b84747bf274debacaa538467" + integrity sha512-eTNWa9wsvBwPykhMMShheafbwyakcdHZaEYh5iRrQ0PFJxkDP/e3U/FvzGuKWu2WpwUA3C3hPlfpuzvOdTVqnw== dependencies: - "@jest/environment" "^27.1.0" - "@jest/test-result" "^27.1.0" - "@jest/types" "^27.1.0" + "@jest/environment" "^27.4.4" + "@jest/test-result" "^27.4.2" + "@jest/types" "^27.4.2" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" dedent "^0.7.0" - expect "^27.1.0" + expect "^27.4.2" is-generator-fn "^2.0.0" - jest-each "^27.1.0" - jest-matcher-utils "^27.1.0" - jest-message-util "^27.1.0" - jest-runtime "^27.1.0" - jest-snapshot "^27.1.0" - jest-util "^27.1.0" - pretty-format "^27.1.0" + jest-each "^27.4.2" + jest-matcher-utils "^27.4.2" + jest-message-util "^27.4.2" + jest-runtime "^27.4.5" + jest-snapshot "^27.4.5" + jest-util "^27.4.2" + pretty-format "^27.4.2" slash "^3.0.0" stack-utils "^2.0.3" throat "^6.0.1" -jest-cli@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.1.0.tgz#118438e4d11cf6fb66cb2b2eb5778817eab3daeb" - integrity sha512-h6zPUOUu+6oLDrXz0yOWY2YXvBLk8gQinx4HbZ7SF4V3HzasQf+ncoIbKENUMwXyf54/6dBkYXvXJos+gOHYZw== +jest-cli@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.4.5.tgz#8708f54c28d13681f3255ec9026a2b15b03d41e8" + integrity sha512-hrky3DSgE0u7sQxaCL7bdebEPHx5QzYmrGuUjaPLmPE8jx5adtvGuOlRspvMoVLTTDOHRnZDoRLYJuA+VCI7Hg== dependencies: - "@jest/core" "^27.1.0" - "@jest/test-result" "^27.1.0" - "@jest/types" "^27.1.0" + "@jest/core" "^27.4.5" + "@jest/test-result" "^27.4.2" + "@jest/types" "^27.4.2" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.4" import-local "^3.0.2" - jest-config "^27.1.0" - jest-util "^27.1.0" - jest-validate "^27.1.0" + jest-config "^27.4.5" + jest-util "^27.4.2" + jest-validate "^27.4.2" prompts "^2.0.1" - yargs "^16.0.3" + yargs "^16.2.0" -jest-config@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.1.0.tgz#e6826e2baaa34c07c3839af86466870e339d9ada" - integrity sha512-GMo7f76vMYUA3b3xOdlcKeKQhKcBIgurjERO2hojo0eLkKPGcw7fyIoanH+m6KOP2bLad+fGnF8aWOJYxzNPeg== +jest-config@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.4.5.tgz#77ed7f2ba7bcfd7d740ade711d0d13512e08a59e" + integrity sha512-t+STVJtPt+fpqQ8GBw850NtSQbnDOw/UzdPfzDaHQ48/AylQlW7LHj3dH+ndxhC1UxJ0Q3qkq7IH+nM1skwTwA== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^27.1.0" - "@jest/types" "^27.1.0" - babel-jest "^27.1.0" + "@jest/test-sequencer" "^27.4.5" + "@jest/types" "^27.4.2" + babel-jest "^27.4.5" chalk "^4.0.0" + ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.1" graceful-fs "^4.2.4" - is-ci "^3.0.0" - jest-circus "^27.1.0" - jest-environment-jsdom "^27.1.0" - jest-environment-node "^27.1.0" - jest-get-type "^27.0.6" - jest-jasmine2 "^27.1.0" - jest-regex-util "^27.0.6" - jest-resolve "^27.1.0" - jest-runner "^27.1.0" - jest-util "^27.1.0" - jest-validate "^27.1.0" + jest-circus "^27.4.5" + jest-environment-jsdom "^27.4.4" + jest-environment-node "^27.4.4" + jest-get-type "^27.4.0" + jest-jasmine2 "^27.4.5" + jest-regex-util "^27.4.0" + jest-resolve "^27.4.5" + jest-runner "^27.4.5" + jest-util "^27.4.2" + jest-validate "^27.4.2" micromatch "^4.0.4" - pretty-format "^27.1.0" + pretty-format "^27.4.2" + slash "^3.0.0" -jest-diff@^27.0.0, jest-diff@^27.1.0: +jest-diff@^27.0.0: version "27.1.0" resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.1.0.tgz#c7033f25add95e2218f3c7f4c3d7b634ab6b3cd2" integrity sha512-rjfopEYl58g/SZTsQFmspBODvMSytL16I+cirnScWTLkQVXYVZfxm78DFfdIIXc05RCYuGjxJqrdyG4PIFzcJg== @@ -2329,128 +2423,143 @@ jest-diff@^27.0.0, jest-diff@^27.1.0: jest-get-type "^27.0.6" pretty-format "^27.1.0" -jest-docblock@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.0.6.tgz#cc78266acf7fe693ca462cbbda0ea4e639e4e5f3" - integrity sha512-Fid6dPcjwepTFraz0YxIMCi7dejjJ/KL9FBjPYhBp4Sv1Y9PdhImlKZqYU555BlN4TQKaTc+F2Av1z+anVyGkA== +jest-diff@^27.4.2: + version "27.4.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.4.2.tgz#786b2a5211d854f848e2dcc1e324448e9481f36f" + integrity sha512-ujc9ToyUZDh9KcqvQDkk/gkbf6zSaeEg9AiBxtttXW59H/AcqEYp1ciXAtJp+jXWva5nAf/ePtSsgWwE5mqp4Q== dependencies: - detect-newline "^3.0.0" + chalk "^4.0.0" + diff-sequences "^27.4.0" + jest-get-type "^27.4.0" + pretty-format "^27.4.2" -jest-each@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.1.0.tgz#36ac75f7aeecb3b8da2a8e617ccb30a446df408c" - integrity sha512-K/cNvQlmDqQMRHF8CaQ0XPzCfjP5HMJc2bIJglrIqI9fjwpNqITle63IWE+wq4p+3v+iBgh7Wq0IdGpLx5xjDg== +jest-docblock@^27.4.0: + version "27.4.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.4.0.tgz#06c78035ca93cbbb84faf8fce64deae79a59f69f" + integrity sha512-7TBazUdCKGV7svZ+gh7C8esAnweJoG+SvcF6Cjqj4l17zA2q1cMwx2JObSioubk317H+cjcHgP+7fTs60paulg== dependencies: - "@jest/types" "^27.1.0" - chalk "^4.0.0" - jest-get-type "^27.0.6" - jest-util "^27.1.0" - pretty-format "^27.1.0" + detect-newline "^3.0.0" -jest-environment-jsdom@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.1.0.tgz#5fb3eb8a67e02e6cc623640388d5f90e33075f18" - integrity sha512-JbwOcOxh/HOtsj56ljeXQCUJr3ivnaIlM45F5NBezFLVYdT91N5UofB1ux2B1CATsQiudcHdgTaeuqGXJqjJYQ== +jest-each@^27.4.2: + version "27.4.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.4.2.tgz#19364c82a692d0d26557642098d1f4619c9ee7d3" + integrity sha512-53V2MNyW28CTruB3lXaHNk6PkiIFuzdOC9gR3C6j8YE/ACfrPnz+slB0s17AgU1TtxNzLuHyvNlLJ+8QYw9nBg== dependencies: - "@jest/environment" "^27.1.0" - "@jest/fake-timers" "^27.1.0" - "@jest/types" "^27.1.0" + "@jest/types" "^27.4.2" + chalk "^4.0.0" + jest-get-type "^27.4.0" + jest-util "^27.4.2" + pretty-format "^27.4.2" + +jest-environment-jsdom@^27.4.4: + version "27.4.4" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.4.4.tgz#94f738e99514d7a880e8ed8e03e3a321d43b49db" + integrity sha512-cYR3ndNfHBqQgFvS1RL7dNqSvD//K56j/q1s2ygNHcfTCAp12zfIromO1w3COmXrxS8hWAh7+CmZmGCIoqGcGA== + dependencies: + "@jest/environment" "^27.4.4" + "@jest/fake-timers" "^27.4.2" + "@jest/types" "^27.4.2" "@types/node" "*" - jest-mock "^27.1.0" - jest-util "^27.1.0" + jest-mock "^27.4.2" + jest-util "^27.4.2" jsdom "^16.6.0" -jest-environment-node@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.1.0.tgz#feea6b765f1fd4582284d4f1007df2b0a8d15b7f" - integrity sha512-JIyJ8H3wVyM4YCXp7njbjs0dIT87yhGlrXCXhDKNIg1OjurXr6X38yocnnbXvvNyqVTqSI4M9l+YfPKueqL1lw== +jest-environment-node@^27.4.4: + version "27.4.4" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.4.4.tgz#42fe5e3b224cb69b99811ebf6f5eaa5a59618514" + integrity sha512-D+v3lbJ2GjQTQR23TK0kY3vFVmSeea05giInI41HHOaJnAwOnmUHTZgUaZL+VxUB43pIzoa7PMwWtCVlIUoVoA== dependencies: - "@jest/environment" "^27.1.0" - "@jest/fake-timers" "^27.1.0" - "@jest/types" "^27.1.0" + "@jest/environment" "^27.4.4" + "@jest/fake-timers" "^27.4.2" + "@jest/types" "^27.4.2" "@types/node" "*" - jest-mock "^27.1.0" - jest-util "^27.1.0" + jest-mock "^27.4.2" + jest-util "^27.4.2" jest-get-type@^27.0.6: version "27.0.6" resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.0.6.tgz#0eb5c7f755854279ce9b68a9f1a4122f69047cfe" integrity sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg== -jest-haste-map@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.1.0.tgz#a39f456823bd6a74e3c86ad25f6fa870428326bf" - integrity sha512-7mz6LopSe+eA6cTFMf10OfLLqRoIPvmMyz5/OnSXnHO7hB0aDP1iIeLWCXzAcYU5eIJVpHr12Bk9yyq2fTW9vg== +jest-get-type@^27.4.0: + version "27.4.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.4.0.tgz#7503d2663fffa431638337b3998d39c5e928e9b5" + integrity sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ== + +jest-haste-map@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.4.5.tgz#c2921224a59223f91e03ec15703905978ef0cc1a" + integrity sha512-oJm1b5qhhPs78K24EDGifWS0dELYxnoBiDhatT/FThgB9yxqUm5F6li3Pv+Q+apMBmmPNzOBnZ7ZxWMB1Leq1Q== dependencies: - "@jest/types" "^27.1.0" + "@jest/types" "^27.4.2" "@types/graceful-fs" "^4.1.2" "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" graceful-fs "^4.2.4" - jest-regex-util "^27.0.6" - jest-serializer "^27.0.6" - jest-util "^27.1.0" - jest-worker "^27.1.0" + jest-regex-util "^27.4.0" + jest-serializer "^27.4.0" + jest-util "^27.4.2" + jest-worker "^27.4.5" micromatch "^4.0.4" walker "^1.0.7" optionalDependencies: fsevents "^2.3.2" -jest-jasmine2@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.1.0.tgz#324a3de0b2ee20d238b2b5b844acc4571331a206" - integrity sha512-Z/NIt0wBDg3przOW2FCWtYjMn3Ip68t0SL60agD/e67jlhTyV3PIF8IzT9ecwqFbeuUSO2OT8WeJgHcalDGFzQ== +jest-jasmine2@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.4.5.tgz#ff79d11561679ff6c89715b0cd6b1e8c0dfbc6dc" + integrity sha512-oUnvwhJDj2LhOiUB1kdnJjkx8C5PwgUZQb9urF77mELH9DGR4e2GqpWQKBOYXWs5+uTN9BGDqRz3Aeg5Wts7aw== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^27.1.0" - "@jest/source-map" "^27.0.6" - "@jest/test-result" "^27.1.0" - "@jest/types" "^27.1.0" + "@jest/environment" "^27.4.4" + "@jest/source-map" "^27.4.0" + "@jest/test-result" "^27.4.2" + "@jest/types" "^27.4.2" "@types/node" "*" chalk "^4.0.0" co "^4.6.0" - expect "^27.1.0" + expect "^27.4.2" is-generator-fn "^2.0.0" - jest-each "^27.1.0" - jest-matcher-utils "^27.1.0" - jest-message-util "^27.1.0" - jest-runtime "^27.1.0" - jest-snapshot "^27.1.0" - jest-util "^27.1.0" - pretty-format "^27.1.0" + jest-each "^27.4.2" + jest-matcher-utils "^27.4.2" + jest-message-util "^27.4.2" + jest-runtime "^27.4.5" + jest-snapshot "^27.4.5" + jest-util "^27.4.2" + pretty-format "^27.4.2" throat "^6.0.1" -jest-leak-detector@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.1.0.tgz#fe7eb633c851e06280ec4dd248067fe232c00a79" - integrity sha512-oHvSkz1E80VyeTKBvZNnw576qU+cVqRXUD3/wKXh1zpaki47Qty2xeHg2HKie9Hqcd2l4XwircgNOWb/NiGqdA== +jest-leak-detector@^27.4.2: + version "27.4.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.4.2.tgz#7fc3120893a7a911c553f3f2bdff9faa4454abbb" + integrity sha512-ml0KvFYZllzPBJWDei3mDzUhyp/M4ubKebX++fPaudpe8OsxUE+m+P6ciVLboQsrzOCWDjE20/eXew9QMx/VGw== dependencies: - jest-get-type "^27.0.6" - pretty-format "^27.1.0" + jest-get-type "^27.4.0" + pretty-format "^27.4.2" -jest-matcher-utils@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.1.0.tgz#68afda0885db1f0b9472ce98dc4c535080785301" - integrity sha512-VmAudus2P6Yt/JVBRdTPFhUzlIN8DYJd+et5Rd9QDsO/Z82Z4iwGjo43U8Z+PTiz8CBvKvlb6Fh3oKy39hykkQ== +jest-matcher-utils@^27.4.2: + version "27.4.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.4.2.tgz#d17c5038607978a255e0a9a5c32c24e984b6c60b" + integrity sha512-jyP28er3RRtMv+fmYC/PKG8wvAmfGcSNproVTW2Y0P/OY7/hWUOmsPfxN1jOhM+0u2xU984u2yEagGivz9OBGQ== dependencies: chalk "^4.0.0" - jest-diff "^27.1.0" - jest-get-type "^27.0.6" - pretty-format "^27.1.0" + jest-diff "^27.4.2" + jest-get-type "^27.4.0" + pretty-format "^27.4.2" -jest-message-util@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.1.0.tgz#e77692c84945d1d10ef00afdfd3d2c20bd8fb468" - integrity sha512-Eck8NFnJ5Sg36R9XguD65cf2D5+McC+NF5GIdEninoabcuoOfWrID5qJhufq5FB0DRKoiyxB61hS7MKoMD0trQ== +jest-message-util@^27.4.2: + version "27.4.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.4.2.tgz#07f3f1bf207d69cf798ce830cc57f1a849f99388" + integrity sha512-OMRqRNd9E0DkBLZpFtZkAGYOXl6ZpoMtQJWTAREJKDOFa0M6ptB7L67tp+cszMBkvSgKOhNtQp2Vbcz3ZZKo/w== dependencies: "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.1.0" + "@jest/types" "^27.4.2" "@types/stack-utils" "^2.0.0" chalk "^4.0.0" graceful-fs "^4.2.4" micromatch "^4.0.4" - pretty-format "^27.1.0" + pretty-format "^27.4.2" slash "^3.0.0" stack-utils "^2.0.3" @@ -2459,12 +2568,12 @@ jest-mock-process@^1.4.1: resolved "https://registry.yarnpkg.com/jest-mock-process/-/jest-mock-process-1.4.1.tgz#0aa1df70f4e3b4799b4f81e82fdc1c383a7b6cdf" integrity sha512-ZZUKRlEBizutngoO4KngzN30YoeAYP3nnwimk4cpi9WqLxQUf6SlAPK5p1D9usEpxDS3Uif2MIez3Bq0vGYR+g== -jest-mock@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.1.0.tgz#7ca6e4d09375c071661642d1c14c4711f3ab4b4f" - integrity sha512-iT3/Yhu7DwAg/0HvvLCqLvrTKTRMyJlrrfJYWzuLSf9RCAxBoIXN3HoymZxMnYsC3eD8ewGbUa9jUknwBenx2w== +jest-mock@^27.4.2: + version "27.4.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.4.2.tgz#184ff197a25491bfe4570c286daa5d62eb760b88" + integrity sha512-PDDPuyhoukk20JrQKeofK12hqtSka7mWH0QQuxSNgrdiPsrnYYLS6wbzu/HDlxZRzji5ylLRULeuI/vmZZDrYA== dependencies: - "@jest/types" "^27.1.0" + "@jest/types" "^27.4.2" "@types/node" "*" jest-pnp-resolver@^1.2.2: @@ -2472,77 +2581,76 @@ jest-pnp-resolver@^1.2.2: resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== -jest-regex-util@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.0.6.tgz#02e112082935ae949ce5d13b2675db3d8c87d9c5" - integrity sha512-SUhPzBsGa1IKm8hx2F4NfTGGp+r7BXJ4CulsZ1k2kI+mGLG+lxGrs76veN2LF/aUdGosJBzKgXmNCw+BzFqBDQ== +jest-regex-util@^27.4.0: + version "27.4.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.4.0.tgz#e4c45b52653128843d07ad94aec34393ea14fbca" + integrity sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg== -jest-resolve-dependencies@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.1.0.tgz#d32ea4a2c82f76410f6157d0ec6cde24fbff2317" - integrity sha512-Kq5XuDAELuBnrERrjFYEzu/A+i2W7l9HnPWqZEeKGEQ7m1R+6ndMbdXCVCx29Se1qwLZLgvoXwinB3SPIaitMQ== +jest-resolve-dependencies@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.5.tgz#9398af854bdb12d6a9e5a8a536ee401f889a3ecf" + integrity sha512-elEVvkvRK51y037NshtEkEnukMBWvlPzZHiL847OrIljJ8yIsujD2GXRPqDXC4rEVKbcdsy7W0FxoZb4WmEs7w== dependencies: - "@jest/types" "^27.1.0" - jest-regex-util "^27.0.6" - jest-snapshot "^27.1.0" + "@jest/types" "^27.4.2" + jest-regex-util "^27.4.0" + jest-snapshot "^27.4.5" -jest-resolve@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.1.0.tgz#bb22303c9e240cccdda28562e3c6fbcc6a23ac86" - integrity sha512-TXvzrLyPg0vLOwcWX38ZGYeEztSEmW+cQQKqc4HKDUwun31wsBXwotRlUz4/AYU/Fq4GhbMd/ileIWZEtcdmIA== +jest-resolve@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.4.5.tgz#8dc44f5065fb8d58944c20f932cb7b9fe9760cca" + integrity sha512-xU3z1BuOz/hUhVUL+918KqUgK+skqOuUsAi7A+iwoUldK6/+PW+utK8l8cxIWT9AW7IAhGNXjSAh1UYmjULZZw== dependencies: - "@jest/types" "^27.1.0" + "@jest/types" "^27.4.2" chalk "^4.0.0" - escalade "^3.1.1" graceful-fs "^4.2.4" - jest-haste-map "^27.1.0" + jest-haste-map "^27.4.5" jest-pnp-resolver "^1.2.2" - jest-util "^27.1.0" - jest-validate "^27.1.0" + jest-util "^27.4.2" + jest-validate "^27.4.2" resolve "^1.20.0" + resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.1.0.tgz#1b28d114fb3b67407b8354c9385d47395e8ff83f" - integrity sha512-ZWPKr9M5w5gDplz1KsJ6iRmQaDT/yyAFLf18fKbb/+BLWsR1sCNC2wMT0H7pP3gDcBz0qZ6aJraSYUNAGSJGaw== +jest-runner@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.4.5.tgz#daba2ba71c8f34137dc7ac45616add35370a681e" + integrity sha512-/irauncTfmY1WkTaRQGRWcyQLzK1g98GYG/8QvIPviHgO1Fqz1JYeEIsSfF+9mc/UTA6S+IIHFgKyvUrtiBIZg== dependencies: - "@jest/console" "^27.1.0" - "@jest/environment" "^27.1.0" - "@jest/test-result" "^27.1.0" - "@jest/transform" "^27.1.0" - "@jest/types" "^27.1.0" + "@jest/console" "^27.4.2" + "@jest/environment" "^27.4.4" + "@jest/test-result" "^27.4.2" + "@jest/transform" "^27.4.5" + "@jest/types" "^27.4.2" "@types/node" "*" chalk "^4.0.0" emittery "^0.8.1" exit "^0.1.2" graceful-fs "^4.2.4" - jest-docblock "^27.0.6" - jest-environment-jsdom "^27.1.0" - jest-environment-node "^27.1.0" - jest-haste-map "^27.1.0" - jest-leak-detector "^27.1.0" - jest-message-util "^27.1.0" - jest-resolve "^27.1.0" - jest-runtime "^27.1.0" - jest-util "^27.1.0" - jest-worker "^27.1.0" + jest-docblock "^27.4.0" + jest-environment-jsdom "^27.4.4" + jest-environment-node "^27.4.4" + jest-haste-map "^27.4.5" + jest-leak-detector "^27.4.2" + jest-message-util "^27.4.2" + jest-resolve "^27.4.5" + jest-runtime "^27.4.5" + jest-util "^27.4.2" + jest-worker "^27.4.5" source-map-support "^0.5.6" throat "^6.0.1" -jest-runtime@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.1.0.tgz#1a98d984ffebc16a0b4f9eaad8ab47c00a750cf5" - integrity sha512-okiR2cpGjY0RkWmUGGado6ETpFOi9oG3yV0CioYdoktkVxy5Hv0WRLWnJFuArSYS8cHMCNcceUUMGiIfgxCO9A== - dependencies: - "@jest/console" "^27.1.0" - "@jest/environment" "^27.1.0" - "@jest/fake-timers" "^27.1.0" - "@jest/globals" "^27.1.0" - "@jest/source-map" "^27.0.6" - "@jest/test-result" "^27.1.0" - "@jest/transform" "^27.1.0" - "@jest/types" "^27.1.0" +jest-runtime@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.4.5.tgz#97703ad2a1799d4f50ab59049bd21a9ceaed2813" + integrity sha512-CIYqwuJQXHQtPd/idgrx4zgJ6iCb6uBjQq1RSAGQrw2S8XifDmoM1Ot8NRd80ooAm+ZNdHVwsktIMGlA1F1FAQ== + dependencies: + "@jest/console" "^27.4.2" + "@jest/environment" "^27.4.4" + "@jest/globals" "^27.4.4" + "@jest/source-map" "^27.4.0" + "@jest/test-result" "^27.4.2" + "@jest/transform" "^27.4.5" + "@jest/types" "^27.4.2" "@types/yargs" "^16.0.0" chalk "^4.0.0" cjs-module-lexer "^1.0.0" @@ -2551,30 +2659,30 @@ jest-runtime@^27.1.0: exit "^0.1.2" glob "^7.1.3" graceful-fs "^4.2.4" - jest-haste-map "^27.1.0" - jest-message-util "^27.1.0" - jest-mock "^27.1.0" - jest-regex-util "^27.0.6" - jest-resolve "^27.1.0" - jest-snapshot "^27.1.0" - jest-util "^27.1.0" - jest-validate "^27.1.0" + jest-haste-map "^27.4.5" + jest-message-util "^27.4.2" + jest-mock "^27.4.2" + jest-regex-util "^27.4.0" + jest-resolve "^27.4.5" + jest-snapshot "^27.4.5" + jest-util "^27.4.2" + jest-validate "^27.4.2" slash "^3.0.0" strip-bom "^4.0.0" - yargs "^16.0.3" + yargs "^16.2.0" -jest-serializer@^27.0.6: - version "27.0.6" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.0.6.tgz#93a6c74e0132b81a2d54623251c46c498bb5bec1" - integrity sha512-PtGdVK9EGC7dsaziskfqaAPib6wTViY3G8E5wz9tLVPhHyiDNTZn/xjZ4khAw+09QkoOVpn7vF5nPSN6dtBexA== +jest-serializer@^27.4.0: + version "27.4.0" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.4.0.tgz#34866586e1cae2388b7d12ffa2c7819edef5958a" + integrity sha512-RDhpcn5f1JYTX2pvJAGDcnsNTnsV9bjYPU8xcV+xPwOXnUPOQwf4ZEuiU6G9H1UztH+OapMgu/ckEVwO87PwnQ== dependencies: "@types/node" "*" graceful-fs "^4.2.4" -jest-snapshot@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.1.0.tgz#2a063ab90064017a7e9302528be7eaea6da12d17" - integrity sha512-eaeUBoEjuuRwmiRI51oTldUsKOohB1F6fPqWKKILuDi/CStxzp2IWekVUXbuHHoz5ik33ioJhshiHpgPFbYgcA== +jest-snapshot@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.4.5.tgz#2ea909b20aac0fe62504bc161331f730b8a7ecc7" + integrity sha512-eCi/iM1YJFrJWiT9de4+RpWWWBqsHiYxFG9V9o/n0WXs6GpW4lUt4FAHAgFPTLPqCUVzrMQmSmTZSgQzwqR7IQ== dependencies: "@babel/core" "^7.7.2" "@babel/generator" "^7.7.2" @@ -2582,26 +2690,26 @@ jest-snapshot@^27.1.0: "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.0.0" - "@jest/transform" "^27.1.0" - "@jest/types" "^27.1.0" + "@jest/transform" "^27.4.5" + "@jest/types" "^27.4.2" "@types/babel__traverse" "^7.0.4" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^27.1.0" + expect "^27.4.2" graceful-fs "^4.2.4" - jest-diff "^27.1.0" - jest-get-type "^27.0.6" - jest-haste-map "^27.1.0" - jest-matcher-utils "^27.1.0" - jest-message-util "^27.1.0" - jest-resolve "^27.1.0" - jest-util "^27.1.0" + jest-diff "^27.4.2" + jest-get-type "^27.4.0" + jest-haste-map "^27.4.5" + jest-matcher-utils "^27.4.2" + jest-message-util "^27.4.2" + jest-resolve "^27.4.5" + jest-util "^27.4.2" natural-compare "^1.4.0" - pretty-format "^27.1.0" + pretty-format "^27.4.2" semver "^7.3.2" -jest-util@^27.0.0, jest-util@^27.1.0: +jest-util@^27.0.0: version "27.1.0" resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.1.0.tgz#06a53777a8cb7e4940ca8e20bf9c67dd65d9bd68" integrity sha512-edSLD2OneYDKC6gZM1yc+wY/877s/fuJNoM1k3sOEpzFyeptSmke3SLnk1dDHk9CgTA+58mnfx3ew3J11Kes/w== @@ -2613,48 +2721,60 @@ jest-util@^27.0.0, jest-util@^27.1.0: is-ci "^3.0.0" picomatch "^2.2.3" -jest-validate@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.1.0.tgz#d9e82024c5e3f5cef52a600cfc456793a84c0998" - integrity sha512-QiJ+4XuSuMsfPi9zvdO//IrSRSlG6ybJhOpuqYSsuuaABaNT84h0IoD6vvQhThBOKT+DIKvl5sTM0l6is9+SRA== +jest-util@^27.4.2: + version "27.4.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.4.2.tgz#ed95b05b1adfd761e2cda47e0144c6a58e05a621" + integrity sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA== dependencies: - "@jest/types" "^27.1.0" + "@jest/types" "^27.4.2" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.4" + picomatch "^2.2.3" + +jest-validate@^27.4.2: + version "27.4.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.4.2.tgz#eecfcc1b1c9429aa007da08a2bae4e32a81bbbc3" + integrity sha512-hWYsSUej+Fs8ZhOm5vhWzwSLmVaPAxRy+Mr+z5MzeaHm9AxUpXdoVMEW4R86y5gOobVfBsMFLk4Rb+QkiEpx1A== + dependencies: + "@jest/types" "^27.4.2" camelcase "^6.2.0" chalk "^4.0.0" - jest-get-type "^27.0.6" + jest-get-type "^27.4.0" leven "^3.1.0" - pretty-format "^27.1.0" + pretty-format "^27.4.2" -jest-watcher@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.1.0.tgz#2511fcddb0e969a400f3d1daa74265f93f13ce93" - integrity sha512-ivaWTrA46aHWdgPDgPypSHiNQjyKnLBpUIHeBaGg11U+pDzZpkffGlcB1l1a014phmG0mHgkOHtOgiqJQM6yKQ== +jest-watcher@^27.4.2: + version "27.4.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.4.2.tgz#c9037edfd80354c9fe90de4b6f8b6e2b8e736744" + integrity sha512-NJvMVyyBeXfDezhWzUOCOYZrUmkSCiatpjpm+nFUid74OZEHk6aMLrZAukIiFDwdbqp6mTM6Ui1w4oc+8EobQg== dependencies: - "@jest/test-result" "^27.1.0" - "@jest/types" "^27.1.0" + "@jest/test-result" "^27.4.2" + "@jest/types" "^27.4.2" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - jest-util "^27.1.0" + jest-util "^27.4.2" string-length "^4.0.1" -jest-worker@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.1.0.tgz#65f4a88e37148ed984ba8ca8492d6b376938c0aa" - integrity sha512-mO4PHb2QWLn9yRXGp7rkvXLAYuxwhq1ZYUo0LoDhg8wqvv4QizP1ZWEJOeolgbEgAWZLIEU0wsku8J+lGWfBhg== +jest-worker@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.4.5.tgz#d696e3e46ae0f24cff3fa7195ffba22889262242" + integrity sha512-f2s8kEdy15cv9r7q4KkzGXvlY0JTcmCbMHZBfSQDwW77REr45IDWwd0lksDFeVHH2jJ5pqb90T77XscrjeGzzg== dependencies: "@types/node" "*" merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^27.1.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.1.0.tgz#eaab62dfdc02d8b7c814cd27b8d2d92bc46d3d69" - integrity sha512-pSQDVwRSwb109Ss13lcMtdfS9r8/w2Zz8+mTUA9VORD66GflCdl8nUFCqM96geOD2EBwWCNURrNAfQsLIDNBdg== +jest@^27.4.5: + version "27.4.5" + resolved "https://registry.yarnpkg.com/jest/-/jest-27.4.5.tgz#66e45acba44137fac26be9d3cc5bb031e136dc0f" + integrity sha512-uT5MiVN3Jppt314kidCk47MYIRilJjA/l2mxwiuzzxGUeJIvA8/pDaJOAX5KWvjAo7SCydcW0/4WEtgbLMiJkg== dependencies: - "@jest/core" "^27.1.0" + "@jest/core" "^27.4.5" import-local "^3.0.2" - jest-cli "^27.1.0" + jest-cli "^27.4.5" js-tokens@^4.0.0: version "4.0.0" @@ -2794,22 +2914,28 @@ 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" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash@4.x, lodash@^4.7.0: +lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== -log-symbols@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" - integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== +log-symbols@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-5.1.0.tgz#a20e3b9a5f53fac6aeb8e2bb22c07cf2c8f16d93" + integrity sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA== dependencies: - chalk "^4.0.0" + chalk "^5.0.0" + is-unicode-supported "^1.1.0" lru-cache@^6.0.0: version "6.0.0" @@ -2909,11 +3035,6 @@ ms@^2.1.1: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -mute-stream@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" - integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -3060,25 +3181,21 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" -ora@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.1.0.tgz#b188cf8cd2d4d9b13fd25383bc3e5cba352c94f8" - integrity sha512-9tXIMPvjZ7hPTbk8DFq1f7Kow/HU/pQYB60JbNq+QnGwcyhWVZaQ4hM9zQDEsPxw/muLpgiHSaumUZxCAmod/w== - dependencies: - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.4.0" - is-interactive "^1.0.0" - log-symbols "^4.0.0" - mute-stream "0.0.8" - strip-ansi "^6.0.0" +ora@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-6.0.1.tgz#68caa9fd6c485a40d6f46c50a3940fa3df99c7f3" + integrity sha512-TDdKkKHdWE6jo/6pIa5U5AWcSVfpNRFJ8sdRJpioGNVPLAzZzHs/N+QhUfF7ZbyoC+rnDuNTKzeDJUbAza9g4g== + dependencies: + bl "^5.0.0" + chalk "^4.1.2" + cli-cursor "^4.0.0" + cli-spinners "^2.6.0" + is-interactive "^2.0.0" + is-unicode-supported "^1.1.0" + log-symbols "^5.0.0" + strip-ansi "^7.0.1" wcwidth "^1.0.1" -p-each-series@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" - integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== - p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -3247,6 +3364,16 @@ pretty-format@^27.0.0, pretty-format@^27.1.0: ansi-styles "^5.0.0" react-is "^17.0.1" +pretty-format@^27.4.2: + version "27.4.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.4.2.tgz#e4ce92ad66c3888423d332b40477c87d1dac1fb8" + integrity sha512-p0wNtJ9oLuvgOQDEIZ9zQjZffK7KtyR6Si0jnXULIDwrlNF8Cuir3AZP0hHv0jmKuNN/edOnbMjnzd4uTcmWiw== + dependencies: + "@jest/types" "^27.4.2" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" @@ -3291,6 +3418,15 @@ read-pkg@^3.0.0: normalize-package-data "^2.3.2" path-type "^3.0.0" +readable-stream@^3.4.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + regexpp@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" @@ -3318,6 +3454,11 @@ resolve-from@^5.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== +resolve.exports@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9" + integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ== + resolve@^1.10.0, resolve@^1.20.0: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" @@ -3326,10 +3467,10 @@ resolve@^1.10.0, resolve@^1.20.0: is-core-module "^2.2.0" path-parse "^1.0.6" -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== +restore-cursor@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" + integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== dependencies: onetime "^5.1.0" signal-exit "^3.0.2" @@ -3356,6 +3497,11 @@ safe-buffer@~5.1.1: resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" @@ -3526,15 +3672,6 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -string-width@^4.0.0, string-width@^4.2.2: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" @@ -3544,6 +3681,15 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string-width@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.0.1.tgz#0d8158335a6cfd8eb95da9b6b262ce314a036ffd" + integrity sha512-5ohWO/M4//8lErlUUtrFy3b11GtNOuMOU0ysKCDXFcfXuuvUXu95akgj/i8ofmaGdN0hCqyl6uu9i8dS/mQp5g== + dependencies: + emoji-regex "^9.2.2" + is-fullwidth-code-point "^4.0.0" + strip-ansi "^7.0.1" + string.prototype.padend@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz#dc08f57a8010dc5c153550318f67e13adbb72ac3" @@ -3568,13 +3714,27 @@ string.prototype.trimstart@^1.0.4: call-bind "^1.0.2" define-properties "^1.1.3" -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +strip-ansi@^6.0.0: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" +strip-ansi@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.0.1.tgz#61740a08ce36b61e50e65653f07060d000975fb2" + integrity sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw== + dependencies: + ansi-regex "^6.0.1" + strip-bom@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" @@ -3624,12 +3784,25 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" +supports-hyperlinks@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" + integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + symbol-tree@^3.2.4: version "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== -terminal-link@*, terminal-link@^2.0.0, terminal-link@^2.1.1: +tapable@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" + integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== + +terminal-link@*, terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== @@ -3637,6 +3810,14 @@ terminal-link@*, terminal-link@^2.0.0, terminal-link@^2.1.1: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" +terminal-link@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-3.0.0.tgz#91c82a66b52fc1684123297ce384429faf72ac5c" + integrity sha512-flFL3m4wuixmf6IfhFJd1YPiLiMuxEc8uHRM1buzIeZPm22Au2pDqBJQgdo7n1WfPU1ONFGv7YDwpFBmHGF6lg== + dependencies: + ansi-escapes "^5.0.0" + supports-hyperlinks "^2.2.0" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -3701,16 +3882,16 @@ tr46@^2.1.0: dependencies: punycode "^2.1.1" -ts-jest@^27.0.5: - version "27.0.5" - resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.0.5.tgz#0b0604e2271167ec43c12a69770f0bb65ad1b750" - integrity sha512-lIJApzfTaSSbtlksfFNHkWOzLJuuSm4faFAfo5kvzOiRAuoN4/eKxVJ2zEAho8aecE04qX6K1pAzfH5QHL1/8w== +ts-jest@^27.1.2: + version "27.1.2" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-27.1.2.tgz#5991d6eb3fd8e1a8d4b8f6de3ec0a3cc567f3151" + integrity sha512-eSOiJOWq6Hhs6Khzk5wKC5sgWIXgXqOCiIl1+3lfnearu58Hj4QpE5tUhQcA3xtZrELbcvAGCsd6HB8OsaVaTA== dependencies: bs-logger "0.x" fast-json-stable-stringify "2.x" jest-util "^27.0.0" json5 "2.x" - lodash "4.x" + lodash.memoize "4.x" make-error "1.x" semver "7.x" yargs-parser "20.x" @@ -3777,6 +3958,16 @@ type-fest@^0.20.2: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== +type-fest@^1.0.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-1.4.0.tgz#e9fb813fe3bf1744ec359d55d1affefa76f14be1" + integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA== + +type-fest@^2.5.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-2.8.0.tgz#39d7c9f9c508df8d6ce1cf5a966b0e6568dcc50d" + integrity sha512-O+V9pAshf9C6loGaH0idwsmugI2LxVNR7DtS40gVo2EXZVYFgz9OuNtOhgHLdHdapOEWNdvz9Ob/eeuaWwwlxA== + 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" @@ -3784,10 +3975,10 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.1.2.tgz#6369ef22516fe5e10304aae5a5c4862db55380e9" - integrity sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ== +typescript@^4.6.0-dev.20211228: + version "4.6.0-dev.20211228" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.0-dev.20211228.tgz#9cc728e1cc8e2f5bf34388468e1c2f6bb28af87a" + integrity sha512-B3scJtks0tt91ndCYNmUIfVwlcuc+mqIkdEflownoPDj7KwqYgyu10rIYPoTztnxlDvpPoNygI9o4AmS5Des6A== unbox-primitive@^1.0.1: version "1.0.1" @@ -3811,15 +4002,20 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + v8-compile-cache@^2.0.3: version "2.2.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== -v8-to-istanbul@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.0.0.tgz#4229f2a99e367f3f018fa1d5c2b8ec684667c69c" - integrity sha512-LkmXi8UUNxnCC+JlH7/fsfsKr5AU110l+SYGJimWNkWhxbN5EyeOtm1MJ0hhvqMMOhGwBj1Fp70Yv9i+hX0QAg== +v8-to-istanbul@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz#0aeb763894f1a0a1676adf8a8b7612a38902446c" + integrity sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" @@ -3917,12 +4113,12 @@ which@^2.0.1: dependencies: isexe "^2.0.0" -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== +widest-line@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-4.0.1.tgz#a0fc673aaba1ea6f0a0d35b3c2795c9a9cc2ebf2" + integrity sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig== dependencies: - string-width "^4.0.0" + string-width "^5.0.1" word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" @@ -3938,6 +4134,15 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.0.1.tgz#2101e861777fec527d0ea90c57c6b03aac56a5b3" + integrity sha512-QFF+ufAqhoYHvoHdajT/Po7KoXVBPXS2bgjIam5isfWJPfIOnQZ50JtUiVvCv/sjgacf3yRrt2ZKUZ/V4itN4g== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -3983,7 +4188,7 @@ yargs-parser@20.x, yargs-parser@^20.2.2: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs@^16.0.3, yargs@^16.2.0: +yargs@^16.2.0: version "16.2.0" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==