diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 4adaf3af..00000000 --- a/.babelrc +++ /dev/null @@ -1,32 +0,0 @@ -{ - //https://babeljs.io/docs/en/assumptions - "assumptions": { - "noDocumentAll": true - }, - "presets": [ - [ - "@babel/preset-env", - { - "useBuiltIns": "usage", - // must match package.json - "corejs": "3.24", - "targets": { - // https://hub.docker.com/layers/node/library/node/lts-alpine - "node": "current" - } - } - ], - "@babel/preset-typescript" - ], - "plugins": [ - [ - "module-resolver", - { - "alias": { - "~src": "./src", - "~test": "./test" - } - } - ] - ] -} diff --git a/.eslintignore b/.eslintignore deleted file mode 100644 index 4185b5ae..00000000 --- a/.eslintignore +++ /dev/null @@ -1,10 +0,0 @@ -bin/* -dist/* -docs/* -node_modules/* -production_node_modules/* -test/fixtures/* -tmp/* -jest.config.js - -/scripts diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index c4911075..00000000 --- a/.eslintrc +++ /dev/null @@ -1,72 +0,0 @@ -{ - "root": true, - "parser": "@typescript-eslint/parser", - "parserOptions": { - "project": "./tsconfig.json", - "ecmaVersion": 2018, - "sourceType": "module", - "ecmaFeatures": { - "modules": true - } - }, - "env": { - "es6": true, - "node": true - }, - "plugins": ["import", "@typescript-eslint"], - "extends": [ - "eslint:recommended", - "plugin:@typescript-eslint/eslint-recommended", - "plugin:@typescript-eslint/recommended", - "prettier", - "plugin:import/errors", - "plugin:import/warnings", - "plugin:import/typescript" - ], - "rules": { - "@typescript-eslint/explicit-function-return-type": [ - "warn", - { - "allowExpressions": false, - "allowTypedFunctionExpressions": true, - "allowHigherOrderFunctions": true - } - ], - "@typescript-eslint/explicit-member-accessibility": [ - "warn", - { - "accessibility": "no-public", - "overrides": { - "accessors": "explicit", - "constructors": "no-public", - "methods": "explicit", - "properties": "explicit", - "parameterProperties": "off" - } - } - ], - "@typescript-eslint/no-non-null-assertion": "off", - "@typescript-eslint/no-parameter-properties": [ - "warn", - { - "allows": [ - "private", - "protected", - "public", - "private readonly", - "protected readonly", - "public readonly" - ] - } - ], - "@typescript-eslint/no-unused-vars": "off", - "@typescript-eslint/no-use-before-define": [ - "error", - { - "functions": false, - "typedefs": false - } - ], - "import/no-unresolved": "off" - } -} diff --git a/.gitignore b/.gitignore index 962ec964..9b5efe90 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,11 @@ analysis.json analysis.out analysis.md tmp + +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/sdks +!.yarn/versions \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index d7207a46..34118313 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,24 @@ { - "typescript.tsdk": "node_modules\\typescript\\lib" + "typescript.tsdk": "node_modules\\typescript\\lib", + "cSpell.words": [ + "analyse", + "Annalyns", + "approvable", + "appuser", + "autoloading", + "elyses", + "exercism", + "gigasecond", + "markdownify", + "OPTIMISE", + "Optimised", + "Outputable", + "quasis", + "recognises", + "REPRESENTER", + "spawnable", + "templatable", + "TSES", + "whomst" + ] } \ No newline at end of file diff --git a/.yarn/patches/@exercism-babel-preset-typescript-npm-0.7.0-2bbb0ae462.patch b/.yarn/patches/@exercism-babel-preset-typescript-npm-0.7.0-2bbb0ae462.patch new file mode 100644 index 00000000..5682b62c --- /dev/null +++ b/.yarn/patches/@exercism-babel-preset-typescript-npm-0.7.0-2bbb0ae462.patch @@ -0,0 +1,12 @@ +diff --git a/index.cjs b/index.cjs +index 09b2b05459a1bab29283e5a1f4b5887b87bcc7a0..9f22f7c8f439c20348bcb67afb50117aa9689ef3 100644 +--- a/index.cjs ++++ b/index.cjs +@@ -7,6 +7,7 @@ module.exports = function (_api, opts = {}) { + targets: { + node: 'current', + }, ++ modules: false, + useBuiltIns: 'usage', + corejs: opts['corejs'] || '3.43', + }, diff --git a/.yarn/patches/@exercism-babel-preset-typescript-patch-c49badc33d.patch b/.yarn/patches/@exercism-babel-preset-typescript-patch-c49badc33d.patch new file mode 100644 index 00000000..5fc5ccbe --- /dev/null +++ b/.yarn/patches/@exercism-babel-preset-typescript-patch-c49badc33d.patch @@ -0,0 +1,18 @@ +diff --git a/index.cjs b/index.cjs +index 9f22f7c8f439c20348bcb67afb50117aa9689ef3..a20b57a8a28236df5cb2a92ea5b0e8e77065f1a1 100644 +--- a/index.cjs ++++ b/index.cjs +@@ -12,7 +12,12 @@ module.exports = function (_api, opts = {}) { + corejs: opts['corejs'] || '3.43', + }, + ], +- require('@babel/preset-typescript'), ++ [ ++ require('@babel/preset-typescript'), ++ { ++ "rewriteImportExtensions": true ++ } ++ ] + ], + plugins: [], + }; diff --git a/.yarnrc.yml b/.yarnrc.yml new file mode 100644 index 00000000..3186f3f0 --- /dev/null +++ b/.yarnrc.yml @@ -0,0 +1 @@ +nodeLinker: node-modules diff --git a/babel.config.cjs b/babel.config.cjs new file mode 100644 index 00000000..48db9e77 --- /dev/null +++ b/babel.config.cjs @@ -0,0 +1,14 @@ +module.exports = { + presets: [['@exercism/babel-preset-typescript', { corejs: '3.43' }]], + plugins: [ + [ + 'module-resolver', + { + alias: { + '~src': './src', + '~test': './test', + }, + }, + ], + ], +} diff --git a/docs/snapshot-tests.md b/docs/snapshot-tests.md index 7239924f..0453649c 100644 --- a/docs/snapshot-tests.md +++ b/docs/snapshot-tests.md @@ -23,7 +23,7 @@ is better, but too many is not good) fixture numbers to be tested. ```typescript import { SlugAnalyzer } from '~src/analyzers//' -import { makeTestGenerator } from '~test/helpers/snapshot' +import { makeTestGenerator } from '~test/helpers/snapshot.js' const snapshotTestsGenerator = makeTestGenerator( '', diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 00000000..06fbe466 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,20 @@ +// @ts-check + +import config from '@exercism/eslint-config-tooling' + +export default [ + ...config, + { + ignores: [ + '.appends/**/*', + '.github/**/*', + '.vscode/**/*', + 'bin/**/*', + 'dist/**/*', + 'test/fixtures/**/*', + 'test_exercises/**/*', + 'babel.config.js', + 'jest.runner.config.js', + ], + }, +] diff --git a/jest.config.js b/jest.config.cjs similarity index 77% rename from jest.config.js rename to jest.config.cjs index 07c5bdda..6f86aa79 100644 --- a/jest.config.js +++ b/jest.config.cjs @@ -6,11 +6,12 @@ module.exports = { moduleNameMapper: { '^~src/(.*)$': '/src/$1', '^~test/(.*)$': '/test/$1', + '(.+)\\.js': '$1', }, testMatch: [ - '**/__tests__/**/*.[jt]s?(x)', - '**/test/**/*.[jt]s?(x)', - '**/?(*.)+(spec|test).[jt]s?(x)', + '**/__tests__/**/*.[jt]s', + '**/test/**/*.[jt]s', + '**/?(*.)+(spec|test).[jt]s', ], testPathIgnorePatterns: [ '/(?:production_)?node_modules/', @@ -22,4 +23,5 @@ module.exports = { transform: { '^.+\\.[jt]sx?$': 'babel-jest', }, + extensionsToTreatAsEsm: ['.ts'], } diff --git a/package.json b/package.json index 3bab7f78..f630b0f1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@exercism/javascript-analyzer", - "version": "0.22.0", + "version": "1.0.0", "description": "Exercism analyzer for javascript", "repository": "https://github.com/exercism/javascript-analyzer", "author": "Derk-Jan Karrenbeld ", @@ -16,6 +16,7 @@ "javascript-analyzer": "./bin/run.sh", "javascript-analyzer-remote": "./bin/run.sh" }, + "type": "module", "scripts": { "analyze": "./bin/analyze.sh", "analyze:bat": "./bin/analyze.bat", @@ -29,38 +30,31 @@ "lint": "yarn eslint . --ext ts,js,tsx,jsx,mjs", "test": "yarn build && yarn test:bare", "test:e2e": "yarn build && node scripts/e2e", - "test:bare": "jest" + "test:bare": "yarn node --experimental-vm-modules --experimental-specifier-resolution=node $(yarn bin jest)" }, "devDependencies": { - "@babel/cli": "~7.18.10", - "@babel/core": "~7.18.10", - "@babel/node": "~7.18.10", - "@babel/preset-env": "~7.18.10", - "@babel/preset-typescript": "~7.18.6", - "@tsconfig/recommended": "^1.0.1", - "@types/jest": "^27.5.2", - "@types/node": "^16.11.47", - "@types/yargs": "^17.0.10", - "@typescript-eslint/eslint-plugin": "^5.32.0", - "babel-jest": "^27.5.1", - "babel-plugin-module-resolver": "^4.1.0", - "core-js": "^3.24.1", - "eslint": "^8.21.0", - "eslint-config-prettier": "^8.5.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jest": "^26.7.0", - "jest": "^27.5.1", - "prettier": "^2.7.1", - "rimraf": "^3.0.2", - "shelljs": "^0.8.5" + "@babel/cli": "^7.27.2", + "@exercism/babel-preset-typescript": "patch:@exercism/babel-preset-typescript@patch%3A@exercism/babel-preset-typescript@npm%253A0.7.0%23~/.yarn/patches/@exercism-babel-preset-typescript-npm-0.7.0-2bbb0ae462.patch%3A%3Aversion=0.7.0&hash=a38e01#~/.yarn/patches/@exercism-babel-preset-typescript-patch-c49badc33d.patch", + "@exercism/eslint-config-tooling": "^0.9.0", + "@tsconfig/recommended": "^1.0.8", + "@types/node": "^22.15.31", + "@types/yargs": "^17.0.33", + "babel-jest": "^30.0.0", + "babel-plugin-module-resolver": "^5.0.2", + "core-js": "^3.43.0", + "eslint": "^9.28.0", + "jest": "^30.0.0", + "prettier": "^3.5.3", + "rimraf": "^6.0.1", + "shelljs": "^0.10.0" }, "dependencies": { - "@exercism/static-analysis": "^0.12.0", - "@typescript-eslint/parser": "^5.32.0", - "@typescript-eslint/typescript-estree": "^5.32.0", - "@typescript-eslint/visitor-keys": "^5.32.0", - "typescript": "^4.7.4", - "yargs": "^17.5.1" + "@exercism/static-analysis": "^0.14.0", + "@typescript-eslint/parser": "^8.34.0", + "@typescript-eslint/typescript-estree": "^8.34.0", + "@typescript-eslint/visitor-keys": "^8.34.0", + "typescript": "^5.8.3", + "yargs": "^18.0.0" }, - "resolutions": {} + "packageManager": "yarn@4.9.1+sha512.f95ce356460e05be48d66401c1ae64ef84d163dd689964962c6888a9810865e39097a5e9de748876c2e0bf89b232d583c33982773e9903ae7a76257270986538" } diff --git a/scripts/e2e b/scripts/e2e index 779cb673..2c989987 100755 --- a/scripts/e2e +++ b/scripts/e2e @@ -1,14 +1,18 @@ #!/usr/bin/env node -const shelljs = require('shelljs') -const path = require('path') +import shelljs from 'shelljs' +import { resolve, join } from 'path' -const root = path.resolve(__dirname, '..') -const binRoot = path.resolve(root, 'bin') -const fixtureRoot = path.resolve(root, 'test', 'fixtures') -const tmp = path.join(shelljs.tempdir(), 'javascript-analyzer') +const { tempdir, mkdir, cat, exec, rm, exit } = shelljs -shelljs.mkdir('-p', tmp) +const __dirname = import.meta.dirname + +const root = resolve(__dirname, '..') +const binRoot = resolve(root, 'bin') +const fixtureRoot = resolve(root, 'test', 'fixtures') +const tmp = join(tempdir(), 'javascript-analyzer') + +mkdir('-p', tmp) const TESTS = [ { @@ -55,22 +59,16 @@ const TESTS = [ ] TESTS.forEach(({ input, expected }) => { - const out = path.join(tmp, input.file) + const out = join(tmp, input.file) - shelljs - .cat(path.join(fixtureRoot, input.slug, input.fixture, input.file)) - .to(out) + cat(join(fixtureRoot, input.slug, input.fixture, input.file)).to(out) - shelljs.exec( - `node ${path.join(root, 'dist', 'analyze.js')} ${input.slug} ${tmp} ${tmp}` - ) + exec(`node ${join(root, 'dist', 'analyze.js')} ${input.slug} ${tmp} ${tmp}`) - const result = JSON.parse( - shelljs.cat(path.join(tmp, 'analysis.json')).toString() - ) + const result = JSON.parse(cat(join(tmp, 'analysis.json')).toString()) - shelljs.rm(out) - shelljs.rm(path.join(tmp, 'analysis.json')) + rm(out) + rm(join(tmp, 'analysis.json')) console.log(`Testing ${input.slug} (fixture ${input.fixture})`) @@ -80,9 +78,9 @@ TESTS.forEach(({ input, expected }) => { result ) - shelljs.exit(-1) + exit(-1) } }) console.log('All e2e tests passed') -shelljs.exit(0) +exit(0) diff --git a/src/analyze.ts b/src/analyze.ts index 8d82772f..03dee2f0 100644 --- a/src/analyze.ts +++ b/src/analyze.ts @@ -8,9 +8,9 @@ // exercise analyzer with the ~/test/ input directory and turning on debug and // console logging. -import { find } from './analyzers/Autoload' -import { Bootstrap } from './utils/bootstrap' -import { run } from './utils/runner' +import { find } from './analyzers/Autoload.js' +import { Bootstrap } from './utils/bootstrap.js' +import { run } from './utils/runner.js' // const { exercise, options, input, logger } = Bootstrap.call() @@ -27,9 +27,6 @@ logger.log( // so it can be instantiated here. This allows us to add new analyzers without // needing to update a bookkeeping construct // -const AnalyzerClass = find(exercise) -const analyzer = new AnalyzerClass() - // The runner uses the execution options to determine what should happen with // the output. For example the --dry flag will make sure there is nothing // written to a file. @@ -37,6 +34,9 @@ const analyzer = new AnalyzerClass() // The basis for the runner is calling analyzer.run(input) -- the output is then // logged and/or written to a file. // -run(analyzer, input, options) +find(exercise) + // eslint-disable-next-line @typescript-eslint/naming-convention + .then((AnalyzerClass) => new AnalyzerClass()) + .then((analyzer) => run(analyzer, input, options)) .then(() => process.exit(0)) - .catch((err) => logger.fatal(err.toString())) + .catch((err: unknown) => logger.fatal(String(err))) diff --git a/src/analyzers/AnalyzerImpl.ts b/src/analyzers/AnalyzerImpl.ts index 719ea12b..cefe726b 100644 --- a/src/analyzers/AnalyzerImpl.ts +++ b/src/analyzers/AnalyzerImpl.ts @@ -1,7 +1,7 @@ import type { Input } from '@exercism/static-analysis' -import { getProcessLogger, Logger } from '@exercism/static-analysis' -import type { Analyzer, Comment, Output } from '~src/interface' -import { AnalyzerOutput } from '~src/output/AnalyzerOutput' +import { getProcessLogger, type Logger } from '@exercism/static-analysis' +import type { Analyzer, Comment, Output } from '~src/interface.d.js' +import { AnalyzerOutput } from '~src/output/AnalyzerOutput.js' class EarlyFinalization extends Error { constructor() { @@ -47,7 +47,7 @@ export abstract class AnalyzerImpl implements Analyzer { await this.execute(input).catch((err): void | never => { if (err instanceof EarlyFinalization) { - this.logger.log(`=> early finialization (${this.output.summary})`) + this.logger.log(`=> early finalization (${this.output.summary})`) } else { throw err } diff --git a/src/analyzers/Autoload.ts b/src/analyzers/Autoload.ts index 7304bfb7..5d2153e3 100644 --- a/src/analyzers/Autoload.ts +++ b/src/analyzers/Autoload.ts @@ -1,29 +1,42 @@ import { getProcessLogger } from '@exercism/static-analysis' import path from 'path' -import type { Analyzer, Exercise } from '~src/interface' +import type { Analyzer, Exercise } from '~src/interface.d.js' + +// eslint-disable-next-line @typescript-eslint/naming-convention +const __dirname = import.meta.dirname type AnalyzerConstructor = new () => Analyzer /** * Find an analyzer for a specific exercise * - * @param exercise The exericse + * @param exercise The exercise * @returns the Analyzer constructor */ -export function find(exercise: Readonly): AnalyzerConstructor { - const file = autoload(exercise) +export async function find( + exercise: Readonly +): Promise { + const file: unknown = await autoload(exercise) + + if (typeof file !== 'object' || !file || !('default' in file)) { + throw new Error(`Expected ${exercise.slug} to be autoloaded`) + } // By default, load the default export const key = file['default'] instanceof Function ? 'default' - : Object.keys(file).find((key): boolean => file[key] instanceof Function) + : Object.keys(file).find( + (key): boolean => + (file as Record)[key] instanceof + Function + ) if (key === undefined) { throw new Error(`No Analyzer found in './${exercise.slug}`) } - const analyzer = file[key] + const analyzer = (file as Record)[key] getProcessLogger().log(`=> analyzer: ${analyzer.name}`) return analyzer } @@ -31,18 +44,21 @@ export function find(exercise: Readonly): AnalyzerConstructor { class RequireError extends Error { constructor( public readonly modulePath: string, - public readonly inner: unknown + public readonly inner: Error ) { super('Failed to require ' + modulePath) Error.captureStackTrace(this, this.constructor) } } -function autoload(exercise: Readonly): ReturnType { - // explicit path (no extension) +async function autoload( + exercise: Readonly +): Promise> { const modulePaths = [ - path.join(__dirname, 'practice', exercise.slug, 'index'), - path.join(__dirname, 'concept', exercise.slug, 'index'), + path.join(__dirname, 'practice', exercise.slug, 'index.js'), + path.join(__dirname, 'concept', exercise.slug, 'index.js'), + `file://${path.join(__dirname, 'practice', exercise.slug, 'index.js')}`, + `file://${path.join(__dirname, 'concept', exercise.slug, 'index.js')}`, ] // These exercises can also defer to the exemplar analyzer only @@ -69,16 +85,21 @@ function autoload(exercise: Readonly): ReturnType { 'vehicle-purchase', ].includes(exercise.slug) ) { - modulePaths.push(path.join(__dirname, 'concept', '__exemplar', 'index')) + modulePaths.push(path.join(__dirname, 'concept', '__exemplar', 'index.js')) + modulePaths.push( + `file://${path.join(__dirname, 'concept', '__exemplar', 'index.js')}` + ) } - const results = modulePaths.map((modulePath) => { - try { - return require(modulePath) - } catch (err) { - return new RequireError(modulePath, err) - } - }) + const results = await Promise.all( + modulePaths.map(async (modulePath) => { + try { + return (await import(modulePath)) as unknown + } catch (err) { + return new RequireError(modulePath, err as Error) + } + }) + ) if (results.every((result) => result instanceof RequireError)) { const slug = exercise.slug @@ -95,7 +116,7 @@ function autoload(exercise: Readonly): ReturnType { Original errors: - `.trimLeft() + `.trimStart() ) logger.fatal( diff --git a/src/analyzers/IsolatedAnalyzerImpl.ts b/src/analyzers/IsolatedAnalyzerImpl.ts index aab9f114..0450369f 100644 --- a/src/analyzers/IsolatedAnalyzerImpl.ts +++ b/src/analyzers/IsolatedAnalyzerImpl.ts @@ -1,7 +1,6 @@ -import type { Input } from '@exercism/static-analysis' +import type { Input, Logger } from '@exercism/static-analysis' import { getProcessLogger, - Logger, NoSourceError, ParserError, } from '@exercism/static-analysis' @@ -10,13 +9,13 @@ import type { ExecutionOptions, Output, WritableOutput, -} from '~src/interface' +} from '~src/interface.d.js' import { EarlyFinalization, IsolatedAnalyzerOutput, -} from '~src/output/IsolatedAnalyzerOutput' -import { makeNoSourceOutput } from '~src/output/makeNoSourceOutput' -import { makeParseErrorOutput } from '~src/output/makeParseErrorOutput' +} from '~src/output/IsolatedAnalyzerOutput.js' +import { makeNoSourceOutput } from '~src/output/makeNoSourceOutput.js' +import { makeParseErrorOutput } from '~src/output/makeParseErrorOutput.js' export abstract class IsolatedAnalyzerImpl implements Analyzer { protected readonly logger: Logger @@ -32,7 +31,7 @@ export abstract class IsolatedAnalyzerImpl implements Analyzer { * Runs the analyzer * * This is defined as a property instead of a method, so that it can not be - * overriddden in a subclass. Subclasses should override @see execute instead. + * overridden in a subclass. Subclasses should override @see execute instead. * * @returns The promise that resolves the analyzer output. * @@ -61,7 +60,7 @@ export abstract class IsolatedAnalyzerImpl implements Analyzer { // The isolated analyzer output can use exceptions as control flow. // This block here explicitly accepts this. if (err instanceof EarlyFinalization) { - this.logger.log(`=> early finalization (${output.summary || '-'})`) + this.logger.log(`=> early finalization (${output.summary ?? '-'})`) } else { throw err } diff --git a/src/analyzers/PublicApi.ts b/src/analyzers/PublicApi.ts index ece26dcf..1a7bf96e 100644 --- a/src/analyzers/PublicApi.ts +++ b/src/analyzers/PublicApi.ts @@ -1,5 +1,5 @@ -import { ExtractedFunction, traverse } from '@exercism/static-analysis' -import { parameterName } from './utils/extract_parameter' +import { type ExtractedFunction, traverse } from '@exercism/static-analysis' +import { parameterName } from './utils/extract_parameter.js' export class PublicApi { public readonly parameter: string diff --git a/src/analyzers/SourceImpl.ts b/src/analyzers/SourceImpl.ts index 03a68ac5..5127b2d7 100644 --- a/src/analyzers/SourceImpl.ts +++ b/src/analyzers/SourceImpl.ts @@ -1,5 +1,8 @@ import { extractSource } from '@exercism/static-analysis' -import { AST_NODE_TYPES, TSESTree } from '@typescript-eslint/typescript-estree' +import { + AST_NODE_TYPES, + type TSESTree, +} from '@typescript-eslint/typescript-estree' type NodeWithLocation = TSESTree.Node & { range?: TSESTree.Range @@ -7,7 +10,7 @@ type NodeWithLocation = TSESTree.Node & { } interface Source { - get(node: NodeWithLocation): string + get: (node: NodeWithLocation) => string } class SourceImpl implements Source { @@ -41,7 +44,9 @@ class SourceImpl implements Source { case AST_NODE_TYPES.VariableDeclaration: { const first = node.declarations[0].init return this.get(node).replace( + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing (first && this.get(first)) || '...', + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing (first && this.getOuter(first)) || '...' ) } diff --git a/src/analyzers/concept/__exemplar/ExemplarSolution.ts b/src/analyzers/concept/__exemplar/ExemplarSolution.ts index 0c14bac2..5dff1476 100644 --- a/src/analyzers/concept/__exemplar/ExemplarSolution.ts +++ b/src/analyzers/concept/__exemplar/ExemplarSolution.ts @@ -1,31 +1,26 @@ -import { - AstParser, - extractExports, - extractFunctions, -} from '@exercism/static-analysis' -import { TSESTree } from '@typescript-eslint/typescript-estree' -import { readFileSync } from 'fs' -import path from 'path' -import { Source } from '../../SourceImpl' +import { AstParser } from '@exercism/static-analysis' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import { readFileSync } from 'node:fs' +import { Source } from '../../SourceImpl.js' +import { exemplarPath } from '~src/analyzers/utils/config.js' export class ExemplarSolution { private readonly source: Source private exemplar!: Source - constructor(public readonly program: TSESTree.Program, source: string) { + constructor( + public readonly program: TSESTree.Program, + source: string + ) { this.source = new Source(source) - const functions = extractFunctions(program) - const exports = extractExports(program) + // const functions = extractFunctions(program) + // const exports = extractExports(program) } public readExemplar(directory: string): void { - const configPath = path.join(directory, '.meta', 'config.json') - const config = JSON.parse(readFileSync(configPath).toString()) - - const exemplarPath = path.join(directory, config.files.exemplar[0]) - this.exemplar = new Source(readFileSync(exemplarPath).toString()) + this.exemplar = new Source(readFileSync(exemplarPath(directory)).toString()) } public get isExemplar(): boolean { diff --git a/src/analyzers/concept/__exemplar/index.ts b/src/analyzers/concept/__exemplar/index.ts index f16f0fe7..7cd5198f 100644 --- a/src/analyzers/concept/__exemplar/index.ts +++ b/src/analyzers/concept/__exemplar/index.ts @@ -1,18 +1,18 @@ +import type { Input } from '@exercism/static-analysis' import { AstParser, - Input, NoExportError, NoMethodError, } from '@exercism/static-analysis' -import { TSESTree } from '@typescript-eslint/typescript-estree' -import { ExecutionOptions, WritableOutput } from '~src/interface' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import { IsolatedAnalyzerImpl } from '~src/analyzers/IsolatedAnalyzerImpl.js' import { EXEMPLAR_SOLUTION, NO_METHOD, NO_NAMED_EXPORT, -} from '../../../comments/shared' -import { IsolatedAnalyzerImpl } from '../../IsolatedAnalyzerImpl' -import { ExemplarSolution } from './ExemplarSolution' +} from '~src/comments/shared.js' +import type { ExecutionOptions, WritableOutput } from '~src/interface.d.js' +import { ExemplarSolution } from './ExemplarSolution.js' type Program = TSESTree.Program @@ -46,11 +46,13 @@ export class ExemplarAnalyzer extends IsolatedAnalyzerImpl { return new ExemplarSolution(program, source) } catch (error) { if (error instanceof NoMethodError) { + // eslint-disable-next-line @typescript-eslint/naming-convention output.add(NO_METHOD({ 'method.name': error.method })) output.finish() } if (error instanceof NoExportError) { + // eslint-disable-next-line @typescript-eslint/naming-convention output.add(NO_NAMED_EXPORT({ 'export.name': error.namedExport })) output.finish() } diff --git a/src/analyzers/concept/annalyns-infiltration/AnnalynsInfiltrationSolution.ts b/src/analyzers/concept/annalyns-infiltration/AnnalynsInfiltrationSolution.ts index a6d53900..7654162d 100644 --- a/src/analyzers/concept/annalyns-infiltration/AnnalynsInfiltrationSolution.ts +++ b/src/analyzers/concept/annalyns-infiltration/AnnalynsInfiltrationSolution.ts @@ -1,6 +1,6 @@ +import type { ExtractedFunction } from '@exercism/static-analysis' import { AstParser, - ExtractedFunction, extractExports, extractFunctions, findFirst, @@ -13,13 +13,14 @@ import { guardReturnBlockStatement, guardUnaryExpression, } from '@exercism/static-analysis' -import { TSESTree, AST_NODE_TYPES } from '@typescript-eslint/typescript-estree' -import { readFileSync } from 'fs' -import path from 'path' -import { Source } from '~src/analyzers/SourceImpl' -import { assertPublicApi } from '~src/asserts/assert_public_api' -import { PublicApi } from '../../PublicApi' -import { parameterName } from '../../utils/extract_parameter' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import { AST_NODE_TYPES } from '@typescript-eslint/typescript-estree' +import { readFileSync } from 'node:fs' +import { Source } from '~src/analyzers/SourceImpl.js' +import { assertPublicApi } from '~src/asserts/assert_public_api.js' +import { PublicApi } from '../../PublicApi.js' +import { parameterName } from '../../utils/extract_parameter.js' +import { exemplarPath } from '~src/analyzers/utils/config.js' export const CAN_EXECUTE_FAST_ATTACK = 'canExecuteFastAttack' export const CAN_SPY = 'canSpy' @@ -53,9 +54,8 @@ class FastAttack extends PublicApi { } public get hasConditional(): boolean { - return !!findFirstOfType( - this.implementation.body, - AST_NODE_TYPES.IfStatement + return Boolean( + findFirstOfType(this.implementation.body, AST_NODE_TYPES.IfStatement) ) } @@ -75,7 +75,9 @@ class FastAttack extends PublicApi { this.implementation.body, AST_NODE_TYPES.CallExpression ) - return !!callExpression && guardCallExpression(callExpression, 'Boolean') + return ( + Boolean(callExpression) && guardCallExpression(callExpression!, 'Boolean') + ) } } @@ -116,9 +118,8 @@ class Spy extends PublicApi { } public get hasConditional(): boolean { - return !!findFirstOfType( - this.implementation.body, - AST_NODE_TYPES.IfStatement + return Boolean( + findFirstOfType(this.implementation.body, AST_NODE_TYPES.IfStatement) ) } @@ -134,10 +135,12 @@ class Spy extends PublicApi { } public get hasBitwise(): boolean { - return !!findFirst( - this.implementation.body, - (node): node is TSESTree.Node => - guardBinaryExpression(node, '&') || guardBinaryExpression(node, '|') + return Boolean( + findFirst( + this.implementation.body, + (node): node is TSESTree.Node => + guardBinaryExpression(node, '&') || guardBinaryExpression(node, '|') + ) ) } @@ -146,7 +149,9 @@ class Spy extends PublicApi { this.implementation.body, AST_NODE_TYPES.CallExpression ) - return !!callExpression && guardCallExpression(callExpression, 'Boolean') + return ( + Boolean(callExpression) && guardCallExpression(callExpression!, 'Boolean') + ) } } @@ -198,9 +203,8 @@ class SignalPrisoner extends PublicApi { } public get hasConditional(): boolean { - return !!findFirstOfType( - this.implementation.body, - AST_NODE_TYPES.IfStatement + return Boolean( + findFirstOfType(this.implementation.body, AST_NODE_TYPES.IfStatement) ) } @@ -216,10 +220,12 @@ class SignalPrisoner extends PublicApi { } public get hasBitwise(): boolean { - return !!findFirst( - this.implementation.body, - (node): node is TSESTree.Node => - guardBinaryExpression(node, '&') || guardBinaryExpression(node, '|') + return Boolean( + findFirst( + this.implementation.body, + (node): node is TSESTree.Node => + guardBinaryExpression(node, '&') || guardBinaryExpression(node, '|') + ) ) } @@ -228,7 +234,9 @@ class SignalPrisoner extends PublicApi { this.implementation.body, AST_NODE_TYPES.CallExpression ) - return !!callExpression && guardCallExpression(callExpression, 'Boolean') + return ( + Boolean(callExpression) && guardCallExpression(callExpression!, 'Boolean') + ) } } @@ -477,10 +485,12 @@ class FreePrisoner extends PublicApi { } public get hasBitwise(): boolean { - return !!findFirst( - this.implementation.body, - (node): node is TSESTree.Node => - guardBinaryExpression(node, '&') || guardBinaryExpression(node, '|') + return Boolean( + findFirst( + this.implementation.body, + (node): node is TSESTree.Node => + guardBinaryExpression(node, '&') || guardBinaryExpression(node, '|') + ) ) } @@ -489,7 +499,9 @@ class FreePrisoner extends PublicApi { this.implementation.body, AST_NODE_TYPES.CallExpression ) - return !!callExpression && guardCallExpression(callExpression, 'Boolean') + return ( + Boolean(callExpression) && guardCallExpression(callExpression!, 'Boolean') + ) } } @@ -503,7 +515,10 @@ export class AnnalynsInfiltrationSolution { private exemplar!: Source - constructor(public readonly program: TSESTree.Program, source: string) { + constructor( + public readonly program: TSESTree.Program, + source: string + ) { this.source = new Source(source) const functions = extractFunctions(program) @@ -568,11 +583,7 @@ export class AnnalynsInfiltrationSolution { } public readExemplar(directory: string): void { - const configPath = path.join(directory, '.meta', 'config.json') - const config = JSON.parse(readFileSync(configPath).toString()) - - const exemplarPath = path.join(directory, config.files.exemplar[0]) - this.exemplar = new Source(readFileSync(exemplarPath).toString()) + this.exemplar = new Source(readFileSync(exemplarPath(directory)).toString()) } public get isExemplar(): boolean { diff --git a/src/analyzers/concept/annalyns-infiltration/index.ts b/src/analyzers/concept/annalyns-infiltration/index.ts index a7837114..147f19b4 100644 --- a/src/analyzers/concept/annalyns-infiltration/index.ts +++ b/src/analyzers/concept/annalyns-infiltration/index.ts @@ -1,19 +1,19 @@ +import type { Input } from '@exercism/static-analysis' import { AstParser, - Input, NoExportError, NoMethodError, } from '@exercism/static-analysis' import type { TSESTree } from '@typescript-eslint/typescript-estree' -import { CommentType, factory } from '../../../comments/comment' +import { CommentType, factory } from '~src/comments/comment.js' import { EXEMPLAR_SOLUTION, NO_METHOD, NO_NAMED_EXPORT, -} from '../../../comments/shared' -import { ExecutionOptions, WritableOutput } from '../../../interface' -import { IsolatedAnalyzerImpl } from '../../IsolatedAnalyzerImpl' -import { AnnalynsInfiltrationSolution } from './AnnalynsInfiltrationSolution' +} from '~src/comments/shared.js' +import type { ExecutionOptions, WritableOutput } from '~src/interface.d.js' +import { IsolatedAnalyzerImpl } from '~src/analyzers/IsolatedAnalyzerImpl.js' +import { AnnalynsInfiltrationSolution } from './AnnalynsInfiltrationSolution.js' export const MUST_NOT_USE_LITERALS = factory` Remove all unnecessary literals. @@ -61,7 +61,7 @@ export const MUST_NOT_USE_BITWISE = factory` Use logical operators instead of bitwise operators. Whilst there is nothing wrong with using bitwise operators (such as \`|\` and - \`&\`), this exercise wants you to explore logical boolean operators (such + \`&\`), this exercise wants you to explore logical boolean operators (such as \`||\` and \`&&\`). Different exercises are devoted to bitwise operators. `( 'javascript.annalyns-infiltration.must_not_use_bitwise', @@ -140,11 +140,13 @@ export class AnnalynsInfiltrationAnalyzer extends IsolatedAnalyzerImpl { return new AnnalynsInfiltrationSolution(program, source) } catch (error) { if (error instanceof NoMethodError) { + // eslint-disable-next-line @typescript-eslint/naming-convention output.add(NO_METHOD({ 'method.name': error.method })) output.finish() } if (error instanceof NoExportError) { + // eslint-disable-next-line @typescript-eslint/naming-convention output.add(NO_NAMED_EXPORT({ 'export.name': error.namedExport })) output.finish() } diff --git a/src/analyzers/concept/elyses-analytic-enchantments/ElysesAnalyticEnchantmentsSolution.ts b/src/analyzers/concept/elyses-analytic-enchantments/ElysesAnalyticEnchantmentsSolution.ts index 280c0df9..70257f06 100644 --- a/src/analyzers/concept/elyses-analytic-enchantments/ElysesAnalyticEnchantmentsSolution.ts +++ b/src/analyzers/concept/elyses-analytic-enchantments/ElysesAnalyticEnchantmentsSolution.ts @@ -1,19 +1,22 @@ +import type { + ExtractedFunction, + SpecificPropertyCall, +} from '@exercism/static-analysis' import { AstParser, - ExtractedFunction, extractExports, extractFunctions, findAll, findFirst, guardCallExpression, - SpecificPropertyCall, } from '@exercism/static-analysis' -import { AST_NODE_TYPES, TSESTree } from '@typescript-eslint/typescript-estree' -import { readFileSync } from 'fs' -import path from 'path' -import { Source } from '~src/analyzers/SourceImpl' -import { assertPublicApi } from '~src/asserts/assert_public_api' -import { PublicApi } from '../../PublicApi' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import { AST_NODE_TYPES } from '@typescript-eslint/typescript-estree' +import { readFileSync } from 'node:fs' +import { Source } from '~src/analyzers/SourceImpl.js' +import { assertPublicApi } from '~src/asserts/assert_public_api.js' +import { PublicApi } from '../../PublicApi.js' +import { exemplarPath } from '~src/analyzers/utils/config.js' export const GET_CARD_POSITION = 'getCardPosition' export const DOES_STACK_INCLUDE_CARD = 'doesStackIncludeCard' @@ -282,7 +285,10 @@ export class ElysesAnalyticEnchantmentsSolution { private exemplar!: Source - constructor(public readonly program: TSESTree.Program, source: string) { + constructor( + public readonly program: TSESTree.Program, + source: string + ) { this.source = new Source(source) const functions = extractFunctions(program) @@ -309,11 +315,7 @@ export class ElysesAnalyticEnchantmentsSolution { } public readExemplar(directory: string): void { - const configPath = path.join(directory, '.meta', 'config.json') - const config = JSON.parse(readFileSync(configPath).toString()) - - const exemplarPath = path.join(directory, config.files.exemplar[0]) - this.exemplar = new Source(readFileSync(exemplarPath).toString()) + this.exemplar = new Source(readFileSync(exemplarPath(directory)).toString()) } public get isExemplar(): boolean { diff --git a/src/analyzers/concept/elyses-analytic-enchantments/index.ts b/src/analyzers/concept/elyses-analytic-enchantments/index.ts index 93c5aaf7..58504d09 100644 --- a/src/analyzers/concept/elyses-analytic-enchantments/index.ts +++ b/src/analyzers/concept/elyses-analytic-enchantments/index.ts @@ -1,20 +1,20 @@ +import type { Input } from '@exercism/static-analysis' import { AstParser, - Input, NoExportError, NoMethodError, } from '@exercism/static-analysis' -import { TSESTree } from '@typescript-eslint/typescript-estree' -import { CommentType, factory } from '../../../comments/comment' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import { CommentType, factory } from '~src/comments/comment.js' import { EXEMPLAR_SOLUTION, FUNCTION_NOT_OPTIMAL, NO_METHOD, NO_NAMED_EXPORT, PREFER_BUILT_IN_METHOD, -} from '../../../comments/shared' -import { WritableOutput, ExecutionOptions } from '../../../interface' -import { IsolatedAnalyzerImpl } from '../../IsolatedAnalyzerImpl' +} from '~src/comments/shared.js' +import type { WritableOutput, ExecutionOptions } from '~src/interface.d.js' +import { IsolatedAnalyzerImpl } from '~src/analyzers/IsolatedAnalyzerImpl.js' import { DOES_STACK_INCLUDE_CARD, DOES_STACK_INCLUDE_ODD_CARD, @@ -23,7 +23,7 @@ import { GET_FIRST_EVEN_CARD_POSITION, GET_FIRST_ODD_CARD, IS_EACH_CARD_EVEN, -} from './ElysesAnalyticEnchantmentsSolution' +} from './ElysesAnalyticEnchantmentsSolution.js' type Program = TSESTree.Program @@ -77,11 +77,13 @@ export class ElysesAnalyticEnchantmentsAnalyzer extends IsolatedAnalyzerImpl { return new ElysesAnalyticEnchantmentsSolution(program, source) } catch (error) { if (error instanceof NoMethodError) { + // eslint-disable-next-line @typescript-eslint/naming-convention output.add(NO_METHOD({ 'method.name': error.method })) output.finish() } if (error instanceof NoExportError) { + // eslint-disable-next-line @typescript-eslint/naming-convention output.add(NO_NAMED_EXPORT({ 'export.name': error.namedExport })) } diff --git a/src/analyzers/concept/freelancer-rates/FreelancerRatesSolution.ts b/src/analyzers/concept/freelancer-rates/FreelancerRatesSolution.ts index aabd72c7..b6ca5a52 100644 --- a/src/analyzers/concept/freelancer-rates/FreelancerRatesSolution.ts +++ b/src/analyzers/concept/freelancer-rates/FreelancerRatesSolution.ts @@ -1,16 +1,16 @@ +import type { ExtractedFunction } from '@exercism/static-analysis' import { AstParser, - ExtractedFunction, extractExports, extractFunctions, } from '@exercism/static-analysis' -import { TSESTree } from '@typescript-eslint/typescript-estree' -import { readFileSync } from 'fs' -import path from 'path' -import { Source } from '~src/analyzers/SourceImpl' -import { assertPublicApi } from '~src/asserts/assert_public_api' -import { PublicApi } from '../../PublicApi' -import { parameterName } from '../../utils/extract_parameter' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import { readFileSync } from 'node:fs' +import { Source } from '~src/analyzers/SourceImpl.js' +import { exemplarPath } from '~src/analyzers/utils/config.js' +import { assertPublicApi } from '~src/asserts/assert_public_api.js' +import { PublicApi } from '../../PublicApi.js' +import { parameterName } from '../../utils/extract_parameter.js' export const DAY_RATE = 'dayRate' export const MONTH_RATE = 'priceWithMonthlyDiscount' @@ -70,7 +70,10 @@ export class FreelancerRatesSolution { private exemplar!: Source - constructor(public readonly program: TSESTree.Program, source: string) { + constructor( + public readonly program: TSESTree.Program, + source: string + ) { this.source = new Source(source) const functions = extractFunctions(program) @@ -88,11 +91,7 @@ export class FreelancerRatesSolution { } public readExemplar(directory: string): void { - const configPath = path.join(directory, '.meta', 'config.json') - const config = JSON.parse(readFileSync(configPath).toString()) - - const exemplarPath = path.join(directory, config.files.exemplar[0]) - this.exemplar = new Source(readFileSync(exemplarPath).toString()) + this.exemplar = new Source(readFileSync(exemplarPath(directory)).toString()) } public get isExemplar(): boolean { diff --git a/src/analyzers/concept/freelancer-rates/index.ts b/src/analyzers/concept/freelancer-rates/index.ts index 10906d92..a420f449 100644 --- a/src/analyzers/concept/freelancer-rates/index.ts +++ b/src/analyzers/concept/freelancer-rates/index.ts @@ -1,6 +1,6 @@ +import type { Input } from '@exercism/static-analysis' import { AstParser, - Input, NoExportError, NoMethodError, } from '@exercism/static-analysis' @@ -9,10 +9,10 @@ import { EXEMPLAR_SOLUTION, NO_METHOD, NO_NAMED_EXPORT, -} from '../../../comments/shared' -import { ExecutionOptions, WritableOutput } from '../../../interface' -import { IsolatedAnalyzerImpl } from '../../IsolatedAnalyzerImpl' -import { FreelancerRatesSolution } from './FreelancerRatesSolution' +} from '~src/comments/shared.js' +import type { ExecutionOptions, WritableOutput } from '~src/interface.d.js' +import { IsolatedAnalyzerImpl } from '~src/analyzers/IsolatedAnalyzerImpl.js' +import { FreelancerRatesSolution } from './FreelancerRatesSolution.js' type Program = TSESTree.Program @@ -46,11 +46,13 @@ export class FreelancerRatesAnalyzer extends IsolatedAnalyzerImpl { return new FreelancerRatesSolution(program, source) } catch (error) { if (error instanceof NoMethodError) { + // eslint-disable-next-line @typescript-eslint/naming-convention output.add(NO_METHOD({ 'method.name': error.method })) output.finish() } if (error instanceof NoExportError) { + // eslint-disable-next-line @typescript-eslint/naming-convention output.add(NO_NAMED_EXPORT({ 'export.name': error.namedExport })) output.finish() } diff --git a/src/analyzers/concept/lasagna/LasagnaSolution.ts b/src/analyzers/concept/lasagna/LasagnaSolution.ts index ea421ac3..c1d468ae 100644 --- a/src/analyzers/concept/lasagna/LasagnaSolution.ts +++ b/src/analyzers/concept/lasagna/LasagnaSolution.ts @@ -1,6 +1,13 @@ +import type { + ExtractedFunction, + Identifier, + IdentifierWithName, + ProgramConstant, + ProgramConstants, + SpecificFunctionCall, +} from '@exercism/static-analysis' import { AstParser, - ExtractedFunction, extractExports, extractFunctions, findFirst, @@ -9,20 +16,16 @@ import { guardCallExpression, guardIdentifier, guardLiteral, - Identifier, - IdentifierWithName, - ProgramConstant, - ProgramConstants, - SpecificFunctionCall, traverse, } from '@exercism/static-analysis' -import { AST_NODE_TYPES, TSESTree } from '@typescript-eslint/typescript-estree' -import { readFileSync } from 'fs' -import path from 'path' -import { assertPublicApi } from '../../../asserts/assert_public_api' -import { assertPublicConstant } from '../../../asserts/assert_public_constant' -import { Source } from '../../SourceImpl' -import { parameterName } from '../../utils/extract_parameter' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import { AST_NODE_TYPES } from '@typescript-eslint/typescript-estree' +import { readFileSync } from 'node:fs' +import { exemplarPath } from '~src/analyzers/utils/config.js' +import { assertPublicApi } from '~src/asserts/assert_public_api.js' +import { assertPublicConstant } from '~src/asserts/assert_public_constant.js' +import { Source } from '../../SourceImpl.js' +import { parameterName } from '../../utils/extract_parameter.js' export const REMAINING_MINUTES_IN_OVEN = 'remainingMinutesInOven' export const PREPARATION_TIME_IN_MINUTES = 'preparationTimeInMinutes' @@ -157,18 +160,20 @@ class TotalTimeInMinutes { } public get hasCallToPreparationTime(): boolean { - return !!findFirst( - this.implementation.body, - ( - node - ): node is SpecificFunctionCall => - guardCallExpression(node, PREPARATION_TIME_IN_MINUTES) + return Boolean( + findFirst( + this.implementation.body, + ( + node + ): node is SpecificFunctionCall => + guardCallExpression(node, PREPARATION_TIME_IN_MINUTES) + ) ) } } class PreparationTimeInMinutes { - private numberOfLayers: string + private readonly numberOfLayers: string constructor( private readonly implementation: ExtractedFunction, @@ -191,13 +196,12 @@ class PreparationTimeInMinutes { public get predefinedConstantName(): string { return ( ( - this.constants.find( - (constant) => - !!( - guardIdentifier(constant.id) && + this.constants.find((constant) => + Boolean( + guardIdentifier(constant.id) && constant.init && guardLiteral(constant.init, 2) - ) + ) )?.id as Identifier )?.name ?? 'PREPARATION_MINUTES_PER_LAYER' ) @@ -308,7 +312,10 @@ export class LasagnaSolution { private exemplar!: Source - constructor(public readonly program: TSESTree.Program, source: string) { + constructor( + public readonly program: TSESTree.Program, + source: string + ) { this.source = new Source(source) const functions = extractFunctions(program) @@ -340,11 +347,7 @@ export class LasagnaSolution { * @param directory base directory to this solution */ public readExemplar(directory: string): void { - const configPath = path.join(directory, '.meta', 'config.json') - const config = JSON.parse(readFileSync(configPath).toString()) - - const exemplarPath = path.join(directory, config.files.exemplar[0]) - this.exemplar = new Source(readFileSync(exemplarPath).toString()) + this.exemplar = new Source(readFileSync(exemplarPath(directory)).toString()) } /** diff --git a/src/analyzers/concept/lasagna/index.ts b/src/analyzers/concept/lasagna/index.ts index 949107fa..a251f9f5 100644 --- a/src/analyzers/concept/lasagna/index.ts +++ b/src/analyzers/concept/lasagna/index.ts @@ -1,12 +1,12 @@ +import type { Input } from '@exercism/static-analysis' import { AstParser, - Input, NoExportError, NoMethodError, } from '@exercism/static-analysis' -import { TSESTree } from '@typescript-eslint/typescript-estree' -import { ExecutionOptions, WritableOutput } from '~src/interface' -import { CommentType, factory } from '../../../comments/comment' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import { IsolatedAnalyzerImpl } from '~src/analyzers/IsolatedAnalyzerImpl.js' +import { CommentType, factory } from '~src/comments/comment.js' import { EXEMPLAR_SOLUTION, FUNCTION_NOT_OPTIMAL, @@ -14,15 +14,15 @@ import { NO_NAMED_EXPORT, PREFER_CONST_OVER_LET_AND_VAR, REPLACE_MAGIC_WITH_IDENTIFIER, -} from '../../../comments/shared' -import { IsolatedAnalyzerImpl } from '../../IsolatedAnalyzerImpl' +} from '~src/comments/shared.js' +import type { ExecutionOptions, WritableOutput } from '~src/interface.d.js' import { EXPECTED_MINUTES_IN_OVEN, LasagnaSolution, PREPARATION_TIME_IN_MINUTES, REMAINING_MINUTES_IN_OVEN, TOTAL_TIME_IN_MINUTES, -} from './LasagnaSolution' +} from './LasagnaSolution.js' type Program = TSESTree.Program @@ -145,11 +145,13 @@ export class LasagnaAnalyzer extends IsolatedAnalyzerImpl { return new LasagnaSolution(program, source) } catch (error) { if (error instanceof NoMethodError) { + // eslint-disable-next-line @typescript-eslint/naming-convention output.add(NO_METHOD({ 'method.name': error.method })) output.finish() } if (error instanceof NoExportError) { + // eslint-disable-next-line @typescript-eslint/naming-convention output.add(NO_NAMED_EXPORT({ 'export.name': error.namedExport })) output.finish() } diff --git a/src/analyzers/concept/poetry-club-door-policy/index.ts b/src/analyzers/concept/poetry-club-door-policy/index.ts index a65d949d..70419a24 100644 --- a/src/analyzers/concept/poetry-club-door-policy/index.ts +++ b/src/analyzers/concept/poetry-club-door-policy/index.ts @@ -1,4 +1,4 @@ -import { ExemplarAnalyzer } from '../__exemplar' +import { ExemplarAnalyzer } from '../__exemplar/index.js' export class PoetryClubDoorPolicyAnalyzer extends ExemplarAnalyzer { // TODO: implement actual analyzer diff --git a/src/analyzers/concept/vehicle-purchase/VehiclePurchaseSolution.ts b/src/analyzers/concept/vehicle-purchase/VehiclePurchaseSolution.ts index 41805c2d..c4edc632 100644 --- a/src/analyzers/concept/vehicle-purchase/VehiclePurchaseSolution.ts +++ b/src/analyzers/concept/vehicle-purchase/VehiclePurchaseSolution.ts @@ -1,19 +1,19 @@ +import type { ExtractedFunction } from '@exercism/static-analysis' import { AstParser, - ExtractedFunction, extractExports, extractFunctions, findAll, findFirst, findFirstOfType, - TemplateLiteral, } from '@exercism/static-analysis' -import { AST_NODE_TYPES, TSESTree } from '@typescript-eslint/typescript-estree' -import { readFileSync } from 'fs' -import path from 'path' -import { Source } from '~src/analyzers/SourceImpl' -import { assertPublicApi } from '~src/asserts/assert_public_api' -import { PublicApi } from '../../PublicApi' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import { AST_NODE_TYPES } from '@typescript-eslint/typescript-estree' +import { readFileSync } from 'node:fs' +import { Source } from '~src/analyzers/SourceImpl.js' +import { exemplarPath } from '~src/analyzers/utils/config.js' +import { assertPublicApi } from '~src/asserts/assert_public_api.js' +import { PublicApi } from '../../PublicApi.js' type IfStatement = TSESTree.IfStatement @@ -31,9 +31,8 @@ class NeedsLicense extends PublicApi { } public get hasConditional(): boolean { - return !!findFirstOfType( - this.implementation.body, - AST_NODE_TYPES.IfStatement + return Boolean( + findFirstOfType(this.implementation.body, AST_NODE_TYPES.IfStatement) ) } } @@ -145,7 +144,10 @@ export class VehiclePurchaseSolution { private exemplar!: Source - constructor(public readonly program: TSESTree.Program, source: string) { + constructor( + public readonly program: TSESTree.Program, + source: string + ) { this.source = new Source(source) const functions = extractFunctions(program) @@ -163,11 +165,7 @@ export class VehiclePurchaseSolution { } public readExemplar(directory: string): void { - const configPath = path.join(directory, '.meta', 'config.json') - const config = JSON.parse(readFileSync(configPath).toString()) - - const exemplarPath = path.join(directory, config.files.exemplar[0]) - this.exemplar = new Source(readFileSync(exemplarPath).toString()) + this.exemplar = new Source(readFileSync(exemplarPath(directory)).toString()) } public get isExemplar(): boolean { diff --git a/src/analyzers/concept/vehicle-purchase/index.ts b/src/analyzers/concept/vehicle-purchase/index.ts index 438975ee..deec76a0 100644 --- a/src/analyzers/concept/vehicle-purchase/index.ts +++ b/src/analyzers/concept/vehicle-purchase/index.ts @@ -1,25 +1,23 @@ +import type { Input } from '@exercism/static-analysis' import { AstParser, - Input, NoExportError, NoMethodError, } from '@exercism/static-analysis' -import { TSESTree } from '@typescript-eslint/typescript-estree' -import { CommentType, factory } from '../../../comments/comment' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import { IsolatedAnalyzerImpl } from '~src/analyzers/IsolatedAnalyzerImpl.js' +import { CommentType, factory } from '~src/comments/comment.js' import { EXEMPLAR_SOLUTION, - FUNCTION_NOT_OPTIMAL, NO_METHOD, NO_NAMED_EXPORT, -} from '../../../comments/shared' -import { WritableOutput, ExecutionOptions } from '../../../interface' -import { IsolatedAnalyzerImpl } from '../../IsolatedAnalyzerImpl' +} from '~src/comments/shared.js' +import type { ExecutionOptions, WritableOutput } from '~src/interface.d.js' import { CALCULATE_RESELL_PRICE, CHOOSE_VEHICLE, - NEEDS_LICENSE, VehiclePurchaseSolution, -} from './VehiclePurchaseSolution' +} from './VehiclePurchaseSolution.js' type Program = TSESTree.Program const UNNECESSARY_IF_STATEMENT = factory` @@ -108,11 +106,13 @@ export class VehiclePurchaseAnalyzer extends IsolatedAnalyzerImpl { return new VehiclePurchaseSolution(program, source) } catch (error: unknown) { if (error instanceof NoMethodError) { + // eslint-disable-next-line @typescript-eslint/naming-convention output.add(NO_METHOD({ 'method.name': error.method })) output.finish() } if (error instanceof NoExportError) { + // eslint-disable-next-line @typescript-eslint/naming-convention output.add(NO_NAMED_EXPORT({ 'export.name': error.namedExport })) } diff --git a/src/analyzers/practice/gigasecond/GigasecondSolution.ts b/src/analyzers/practice/gigasecond/GigasecondSolution.ts index bce89385..e5354cdd 100644 --- a/src/analyzers/practice/gigasecond/GigasecondSolution.ts +++ b/src/analyzers/practice/gigasecond/GigasecondSolution.ts @@ -1,6 +1,9 @@ -import { +import type { ExtractedExport, ExtractedFunction, + ProgramConstants, +} from '@exercism/static-analysis' +import { ExtractedVariable, extractExports, extractFunctions, @@ -13,14 +16,14 @@ import { guardIdentifier, guardLiteral, isNewExpression, - ProgramConstants, } from '@exercism/static-analysis' -import { AST_NODE_TYPES, TSESTree } from '@typescript-eslint/typescript-estree' -import { Source } from '~src/analyzers/SourceImpl' -import { parameterName } from '~src/analyzers/utils/extract_parameter' -import { assertNamedExport } from '~src/asserts/assert_named_export' -import { assertNamedFunction } from '~src/asserts/assert_named_function' -import { extractSignature } from '~src/extracts/extract_declaration' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import { AST_NODE_TYPES } from '@typescript-eslint/typescript-estree' +import { Source } from '~src/analyzers/SourceImpl.js' +import { parameterName } from '~src/analyzers/utils/extract_parameter.js' +import { assertNamedExport } from '~src/asserts/assert_named_export.js' +import { assertNamedFunction } from '~src/asserts/assert_named_function.js' +import { extractSignature } from '~src/extracts/extract_declaration.js' type Node = TSESTree.Node type Program = TSESTree.Program @@ -35,8 +38,6 @@ type LargeNumberComprehension = | TSESTree.Literal | TSESTree.VariableDeclarator -type MainExport = ReturnType[number] - const EXPECTED_METHOD = 'gigasecond' const EXPECTED_EXPORT = 'gigasecond' @@ -45,7 +46,7 @@ class Constant { private _memoized: { [key: string]: string | number | boolean } constructor(private readonly constant: Readonly) { - this.name = constant.name || '' + this.name = constant.name ?? '' this._memoized = {} } @@ -65,7 +66,7 @@ class Constant { } if ('isOptimisedExpression' in this._memoized) { - return !!this._memoized['isOptimisedComprehension'] + return Boolean(this._memoized['isOptimisedComprehension']) } return (this._memoized['isOptimisedComprehension'] = @@ -80,7 +81,7 @@ class Constant { } if ('isLargeNumberLiteral' in this._memoized) { - return !!this._memoized['isLargeNumberLiteral'] + return Boolean(this._memoized['isLargeNumberLiteral']) } return (this._memoized['isLargeNumberLiteral'] = isLargeNumberLiteral(init)) @@ -88,7 +89,7 @@ class Constant { public isOptimal(): boolean { if ('isOptimal' in this._memoized) { - return !!this._memoized['isOptimal'] + return Boolean(this._memoized['isOptimal']) } const result = this.isOfKindConst && this.isOptimisedExpression @@ -105,7 +106,7 @@ class Entry { private readonly body: Node constructor(method: Readonly, source: Readonly) { - this.name = method.name || EXPECTED_METHOD + this.name = method.name ?? EXPECTED_METHOD this.params = method.params this.body = method.body @@ -125,19 +126,19 @@ class Entry { } public get hasDateParse(): boolean { - return !!findMemberCall(this.body, 'Date', 'parse') + return Boolean(findMemberCall(this.body, 'Date', 'parse')) } public get hasDateValueOnInput(): boolean { - return !!findMemberCall(this.body, this.parameterName, 'valueOf') + return Boolean(findMemberCall(this.body, this.parameterName, 'valueOf')) } public get hasGetSecondsOnInput(): boolean { - return !!findMemberCall(this.body, this.parameterName, 'getSeconds') + return Boolean(findMemberCall(this.body, this.parameterName, 'getSeconds')) } public get hasSetSecondsOnInput(): boolean { - return !!findMemberCall(this.body, this.parameterName, 'setSeconds') + return Boolean(findMemberCall(this.body, this.parameterName, 'setSeconds')) } public get parameterType(): Parameter['type'] { @@ -226,7 +227,7 @@ class Entry { if ( comprehension && - comprehension.type == AST_NODE_TYPES.VariableDeclarator + comprehension.type === AST_NODE_TYPES.VariableDeclarator ) { // Don't care about the kind because _there is no constant_. In that sense // it will not take into account the kind of the constant here. @@ -261,9 +262,9 @@ class Entry { : guardIdentifier(expression.right, constant.name) && expression.right logger.log( - `=> identifier: ${!!identifier}, expression: ${!!callExpression}` + `=> identifier: ${Boolean(identifier)}, expression: ${Boolean(callExpression)}` ) - return !!(callExpression && identifier) + return Boolean(callExpression && identifier) } // In this case the constant is just not extracted into the top-level, but @@ -271,21 +272,26 @@ class Entry { const comprehensionInExpression = expression.left === comprehension || expression.right === comprehension - return !!(callExpression && comprehensionInExpression) + return Boolean(callExpression && comprehensionInExpression) } } export class GigasecondSolution { public readonly source: Source - private mainMethod: Entry - private mainExport: ExtractedExport - private fileConstants: ProgramConstants - private mainConstant: Constant | undefined - private largeNumberComprehension: LargeNumberComprehension | undefined - private largeNumberLiteral: LargeNumberComprehension | undefined - - constructor(public readonly program: Program, source: string) { + private readonly mainMethod: Entry + private readonly mainExport: ExtractedExport + private readonly fileConstants: ProgramConstants + private readonly mainConstant: Constant | undefined + private readonly largeNumberComprehension: + | LargeNumberComprehension + | undefined + private readonly largeNumberLiteral: LargeNumberComprehension | undefined + + constructor( + public readonly program: Program, + source: string + ) { this.source = new Source(source) const functions = extractFunctions(program) @@ -317,7 +323,7 @@ export class GigasecondSolution { guardIdentifier(value.id) && (value.id.name.toUpperCase().includes('GIGASECOND') || value.id.name.toUpperCase().includes('MS')) - ) || this.fileConstants[0] + ) ?? this.fileConstants[0] this.mainConstant = (expectedConstant && @@ -381,10 +387,10 @@ export class GigasecondSolution { public get hasInlineExport(): boolean { // export function gigasecond - // => no specififers + // => no specifiers // // export { gigasecond } - // => yes specififers + // => yes specifiers // return this.mainExport.exportKind === 'value' } @@ -416,7 +422,7 @@ function findNumberComprehension( default: return false } - }) as LargeNumberComprehension | undefined + }) } function isOptimisedComprehension(expression: Expression): boolean { @@ -540,7 +546,7 @@ function findNumberLiteral( default: return false } - }) as LargeNumberComprehension | undefined + }) } function isLargeNumberLiteral(node: TSESTree.Node): boolean { diff --git a/src/analyzers/practice/gigasecond/index.ts b/src/analyzers/practice/gigasecond/index.ts index 6d44175a..bc4c1470 100644 --- a/src/analyzers/practice/gigasecond/index.ts +++ b/src/analyzers/practice/gigasecond/index.ts @@ -1,22 +1,24 @@ +/* eslint-disable @typescript-eslint/naming-convention */ +import type { Input } from '@exercism/static-analysis' import { AstParser, guardIdentifier, - Input, NoExportError, NoMethodError, } from '@exercism/static-analysis' -import { AST_NODE_TYPES, TSESTree } from '@typescript-eslint/typescript-estree' -import { IsolatedAnalyzerImpl } from '~src/analyzers/IsolatedAnalyzerImpl' -import { CommentType, factory } from '~src/comments/comment' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import { AST_NODE_TYPES } from '@typescript-eslint/typescript-estree' +import { IsolatedAnalyzerImpl } from '~src/analyzers/IsolatedAnalyzerImpl.js' +import { CommentType, factory } from '~src/comments/comment.js' import { NO_METHOD, NO_NAMED_EXPORT, NO_PARAMETER, PREFER_CONST_OVER_LET_AND_VAR, UNEXPECTED_PARAMETER, -} from '~src/comments/shared' -import type { WritableOutput } from '~src/interface' -import { GigasecondSolution } from './GigasecondSolution' +} from '~src/comments/shared.js' +import type { WritableOutput } from '~src/interface.d.js' +import { GigasecondSolution } from './GigasecondSolution.js' const TIP_EXPORT_INLINE = factory<'method.signature'>` Did you know that you can export functions, classes and constants directly @@ -309,7 +311,7 @@ export class GigasecondAnalyzer extends IsolatedAnalyzerImpl { 'GIGASECOND_IN_MS', value: (comprehension.init && - solution.source.get(comprehension.init)) || + solution.source.get(comprehension.init)) ?? '...', }) ) diff --git a/src/analyzers/practice/resistor-color-duo/ResistorColorDuoSolution.ts b/src/analyzers/practice/resistor-color-duo/ResistorColorDuoSolution.ts index ab2bfc3a..e0cd868e 100644 --- a/src/analyzers/practice/resistor-color-duo/ResistorColorDuoSolution.ts +++ b/src/analyzers/practice/resistor-color-duo/ResistorColorDuoSolution.ts @@ -1,9 +1,17 @@ -import { +import type { ExtractedExport, ExtractedFunction, + Logger, + ProgramConstants, + SpecificFunctionCall, + SpecificObjectPropertyCall, + SpecificPropertyCall, +} from '@exercism/static-analysis' +import { ExtractedVariable, extractExports, extractFunctions, + extractVariables, findAll, findFirst, findTopLevelConstants, @@ -14,21 +22,16 @@ import { guardLiteral, guardMemberExpression, guardTemplateLiteral, - Logger, - ProgramConstants, - SpecificFunctionCall, - SpecificObjectPropertyCall, - SpecificPropertyCall, } from '@exercism/static-analysis' import type { TSESTree } from '@typescript-eslint/typescript-estree' import { AST_NODE_TYPES } from '@typescript-eslint/typescript-estree' -import { Source } from '~src/analyzers/SourceImpl' -import { parameterName } from '~src/analyzers/utils/extract_parameter' -import { assertNamedExport } from '~src/asserts/assert_named_export' -import { assertNamedFunction } from '~src/asserts/assert_named_function' -import { extractSignature } from '~src/extracts/extract_declaration' -import { extractNamedFunction } from '~src/extracts/extract_named_function' -import { guardLiteralCaseInsensitive } from '../../utils/guard_literal_case_insensitive' +import { Source } from '~src/analyzers/SourceImpl.js' +import { parameterName } from '~src/analyzers/utils/extract_parameter.js' +import { assertNamedExport } from '~src/asserts/assert_named_export.js' +import { assertNamedFunction } from '~src/asserts/assert_named_function.js' +import { extractSignature } from '~src/extracts/extract_declaration.js' +import { extractNamedFunction } from '~src/extracts/extract_named_function.js' +import { guardLiteralCaseInsensitive } from '../../utils/guard_literal_case_insensitive.js' type Node = TSESTree.Node type Program = TSESTree.Program @@ -36,9 +39,6 @@ type Parameter = TSESTree.Parameter type Expression = TSESTree.Expression type CallExpression = TSESTree.CallExpression type TemplateLiteral = TSESTree.TemplateLiteral -type Statement = TSESTree.Statement - -type MainExport = ReturnType[number] const EXPECTED_METHOD = 'decodedValue' const EXPECTED_EXPORT = 'decodedValue' @@ -89,7 +89,7 @@ class Constant { private readonly constant: Readonly, source: Source ) { - this.name = constant.name || '' + this.name = constant.name ?? '' this.signature = source.getOuter(constant.node) } @@ -102,14 +102,12 @@ class Constant { } public get isOptimalArray(): boolean { - const init = this.constant.init as Expression + const init = this.constant.init! if (!init) { return false } - init.type - const literals = [ 'black', 'brown', @@ -126,7 +124,7 @@ class Constant { if (init.type === AST_NODE_TYPES.ArrayExpression) { // Each literal needs to be present, and needs to be present exactly in this order return init.elements.every((value, index): boolean => - guardLiteral(value, literals[index]) + Boolean(value && guardLiteral(value, literals[index])) ) } @@ -156,7 +154,7 @@ class Constant { if (init.type === AST_NODE_TYPES.ArrayExpression) { // Each literal needs to be present, and needs to be present exactly in this order return init.elements.every((value, index): boolean => - guardLiteralCaseInsensitive(value, literals[index]) + Boolean(value && guardLiteralCaseInsensitive(value, literals[index])) ) } @@ -181,7 +179,7 @@ class Constant { public isOptimalObject( node: ExtractedVariable | undefined = this.constant ): boolean { - if (!node || !node.init) { + if (!node?.init) { return false } @@ -214,7 +212,7 @@ class Constant { public isNonOptimalObject( node: ExtractedVariable | undefined = this.constant ): boolean { - if (!node || !node.init) { + if (!node?.init) { return false } @@ -298,7 +296,7 @@ class Constant { ) }) ) { - return this.constant.name || undefined + return this.constant.name ?? undefined } return undefined @@ -339,7 +337,7 @@ class Entry { private lastIssue_: Issue constructor(method: Readonly, source: Readonly) { - this.name = method.name || EXPECTED_METHOD + this.name = method.name ?? EXPECTED_METHOD this.params = method.params this.body = method.body @@ -365,12 +363,12 @@ class Entry { public get hasOptimalParameter(): boolean { const [param] = this.params return ( - !!param && + Boolean(param) && param.type === AST_NODE_TYPES.ArrayPattern && param.elements.length === 2 && - !!param.elements[0] && + Boolean(param.elements[0]) && guardIdentifier(param.elements[0]) && - !!param.elements[1] && + Boolean(param.elements[1]) && guardIdentifier(param.elements[1]) ) } @@ -467,7 +465,7 @@ class Entry { template.quasis.length === 3 && template.quasis.every((quasi) => quasi.value.cooked === '') && template.expressions.length === 2 && - template.expressions[0].type === template.expressions[1].type) || + template.expressions[0].type === template.expressions[1].type) ?? false ) } @@ -480,6 +478,18 @@ class Entry { return parameterName(this.params[0]) } + public get nameOfConstantDefinedInBody(): string | null { + const localConstants = extractVariables(this.body).filter( + (constant) => + constant.init?.type === AST_NODE_TYPES.ArrayExpression || + constant.init?.type === AST_NODE_TYPES.ObjectExpression + ) + if (localConstants.length) { + return localConstants[0].name ?? 'COLORS' + } + return null + } + public isOptimal( constant: Readonly | undefined, program: Program @@ -508,6 +518,11 @@ class Entry { } } + if (!constant && Boolean(this.nameOfConstantDefinedInBody)) { + logger.log('~> found a constant that was not declared at the top level') + return false + } + if (this.hasOneMap) { logger.log('~> is a map solution') return this.isOptimalMapSolution(logger, this.body, constant, program) @@ -638,7 +653,7 @@ class Entry { // if (helperMethodName) { const helperDeclaration = - extractNamedFunction(helperMethodName, program) || + extractNamedFunction(helperMethodName, program) ?? extractNamedFunction(helperMethodName, body) if (!helperDeclaration) { logger.log(`~> could not find helper ${helperMethodName}`) @@ -682,7 +697,7 @@ class Entry { firstMap.arguments[0]) || (firstMap.arguments[0].type === AST_NODE_TYPES.FunctionExpression && - firstMap.arguments[0]))) || + firstMap.arguments[0]))) ?? undefined if ( @@ -707,7 +722,7 @@ class Entry { call.arguments.length === 1 && guardIdentifier(call.arguments[0], name) ) { - delete extraneousCalls[i] + extraneousCalls.splice(i, 1) helperMethodName = call.callee.name } } @@ -719,7 +734,7 @@ class Entry { } const helperDeclaration = - extractNamedFunction(helperMethodName, program) || + extractNamedFunction(helperMethodName, program) ?? extractNamedFunction(helperMethodName, body) if (!helperDeclaration) { logger.log(`~> could not find helper ${helperMethodName}`) @@ -805,7 +820,7 @@ class Entry { ): boolean { logger.log( `~> reduce optimal check is not implemented: ${body.type} (${ - constant && constant.name + constant?.name })` ) // colors.slice(0, 2).reduce((acc, color) => acc * 10 + colorCode(code), 0) @@ -850,13 +865,15 @@ class Entry { ) { const [tens, ones] = param.elements - const tensName = (tens && guardIdentifier(tens) && tens.name) || undefined - const onesName = (ones && guardIdentifier(ones) && ones.name) || undefined + const tensName = (tens && guardIdentifier(tens) && tens.name) ?? undefined + const onesName = (ones && guardIdentifier(ones) && ones.name) ?? undefined isTensValue = + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing (tensName && ((node): boolean => guardIdentifier(node, tensName))) || undefined isOnesValue = + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing (onesName && ((node): boolean => guardIdentifier(node, onesName))) || undefined @@ -910,7 +927,7 @@ class Entry { } const helperDeclaration = - extractNamedFunction(helperMethodName, program) || + extractNamedFunction(helperMethodName, program) ?? extractNamedFunction(helperMethodName, body) if (!helperDeclaration) { logger.log(`~> could not find helper ${helperMethodName}`) @@ -1116,12 +1133,15 @@ class Entry { export class ResistorColorDuoSolution { public readonly source: Source - private mainMethod: Entry - private mainExport: ExtractedExport - private fileConstants: ProgramConstants - private mainConstant: Constant | undefined + private readonly mainMethod: Entry + private readonly mainExport: ExtractedExport + private readonly fileConstants: ProgramConstants + private readonly mainConstant: Constant | undefined - constructor(public readonly program: Program, source: string) { + constructor( + public readonly program: Program, + source: string + ) { this.source = new Source(source) const functions = extractFunctions(program) @@ -1148,7 +1168,7 @@ export class ResistorColorDuoSolution { const expectedConstant = this.fileConstants.find((constant) => guardIdentifier(constant.id, PROBABLE_CONSTANT) - ) || + ) ?? // Or find the first array or object assignment this.fileConstants.find( (constant) => @@ -1156,7 +1176,7 @@ export class ResistorColorDuoSolution { [ AST_NODE_TYPES.ArrayExpression, AST_NODE_TYPES.ObjectExpression, - ].indexOf(constant.init.type) !== -1 + ].includes(constant.init.type) ) this.mainConstant = @@ -1169,7 +1189,7 @@ export class ResistorColorDuoSolution { expectedConstant.init ), this.source - )) || + )) ?? undefined } @@ -1181,6 +1201,10 @@ export class ResistorColorDuoSolution { return this.fileConstants.length === 1 } + public get shouldExtractTopLevelConstant(): boolean { + return !this.mainConstant && Boolean(this.entry.nameOfConstantDefinedInBody) + } + public get hasOptimalEntry(): boolean { return this.entry.isOptimal(this.mainConstant, this.program) } diff --git a/src/analyzers/practice/resistor-color-duo/index.ts b/src/analyzers/practice/resistor-color-duo/index.ts index f2356a1b..8769eab4 100644 --- a/src/analyzers/practice/resistor-color-duo/index.ts +++ b/src/analyzers/practice/resistor-color-duo/index.ts @@ -1,20 +1,19 @@ +import type { Input } from '@exercism/static-analysis' import { AstParser, - getProcessLogger, - Input, NoExportError, NoMethodError, } from '@exercism/static-analysis' -import { TSESTree } from '@typescript-eslint/typescript-estree' -import { IsolatedAnalyzerImpl } from '~src/analyzers/IsolatedAnalyzerImpl' -import { CommentType, factory } from '~src/comments/comment' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import { IsolatedAnalyzerImpl } from '~src/analyzers/IsolatedAnalyzerImpl.js' +import { CommentType, factory } from '~src/comments/comment.js' import { NO_METHOD, NO_NAMED_EXPORT, NO_PARAMETER, UNEXPECTED_PARAMETER, -} from '~src/comments/shared' -import { WritableOutput } from '~src/interface' +} from '~src/comments/shared.js' +import type { WritableOutput } from '~src/interface.d.js' import { HelperCallNotFound, HelperNotOptimal, @@ -22,7 +21,7 @@ import { MissingExpectedCall, ResistorColorDuoSolution, UnexpectedCallFound, -} from './ResistorColorDuoSolution' +} from './ResistorColorDuoSolution.js' const TIP_EXPORT_INLINE = factory<'method.signature'>` Did you know that you can export functions, classes and constants directly @@ -120,6 +119,23 @@ const ISSUE_UNEXPECTED_CALL = factory<'unexpected' | 'expected'>` CommentType.Actionable ) +const PREFER_EXTRACTED_TOP_LEVEL_CONSTANT = factory< + 'value' | 'name' | 'method.signature' +>` +📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const ${'name'} = ${'value'} + +export ${'method.signature'} +\`\`\` +`( + 'javascript.resistor-color-duo.prefer_extracted_top_level_constant', + CommentType.Actionable +) + type Program = TSESTree.Program export class ResistorColorDuoAnalyzer extends IsolatedAnalyzerImpl { @@ -158,10 +174,12 @@ export class ResistorColorDuoAnalyzer extends IsolatedAnalyzerImpl { return new ResistorColorDuoSolution(program, source) } catch (error) { if (error instanceof NoMethodError) { + // eslint-disable-next-line @typescript-eslint/naming-convention output.disapprove(NO_METHOD({ 'method.name': error.method })) } if (error instanceof NoExportError) { + // eslint-disable-next-line @typescript-eslint/naming-convention output.disapprove(NO_NAMED_EXPORT({ 'export.name': error.namedExport })) } @@ -176,6 +194,7 @@ export class ResistorColorDuoAnalyzer extends IsolatedAnalyzerImpl { // If there is no parameter then this solution won't pass the tests. // if (!entry.hasAtLeastOneParameter) { + // eslint-disable-next-line @typescript-eslint/naming-convention output.disapprove(NO_PARAMETER({ 'function.name': entry.name })) } @@ -241,6 +260,7 @@ export class ResistorColorDuoAnalyzer extends IsolatedAnalyzerImpl { if (lastIssue instanceof HelperNotOptimal) { // output.add(BETA_COMMENTARY_PREFIX()) output.disapprove( + // eslint-disable-next-line @typescript-eslint/naming-convention ISSUE_OPTIMISE_HELPER({ 'method.name': lastIssue.helperName }) ) } else if (lastIssue instanceof HelperCallNotFound) { @@ -249,6 +269,7 @@ export class ResistorColorDuoAnalyzer extends IsolatedAnalyzerImpl { } else if (lastIssue instanceof MethodNotFound) { // output.add(BETA_COMMENTARY_PREFIX()) output.disapprove( + // eslint-disable-next-line @typescript-eslint/naming-convention ISSUE_METHOD_NOT_FOUND({ 'method.name': lastIssue.methodName }) ) } else if (lastIssue instanceof UnexpectedCallFound) { @@ -262,7 +283,9 @@ export class ResistorColorDuoAnalyzer extends IsolatedAnalyzerImpl { // output.add(BETA_COMMENTARY_PREFIX()) output.add( ISSUE_EXPECTED_CALL({ + // eslint-disable-next-line @typescript-eslint/naming-convention 'method.name': lastIssue.methodName, + // eslint-disable-next-line @typescript-eslint/naming-convention 'expected.reason': lastIssue.reason, }) ) @@ -287,6 +310,17 @@ export class ResistorColorDuoAnalyzer extends IsolatedAnalyzerImpl { solution: ResistorColorDuoSolution, output: WritableOutput ): void | never { + if (solution.shouldExtractTopLevelConstant) { + output.add( + PREFER_EXTRACTED_TOP_LEVEL_CONSTANT({ + name: String(solution.entry.nameOfConstantDefinedInBody), + value: '...', + // eslint-disable-next-line @typescript-eslint/naming-convention + 'method.signature': solution.entry.signature, + }) + ) + } + if (solution || output) { return } @@ -347,6 +381,7 @@ export class ResistorColorDuoAnalyzer extends IsolatedAnalyzerImpl { // export { gigasecond } output.add( TIP_EXPORT_INLINE({ + // eslint-disable-next-line @typescript-eslint/naming-convention 'method.signature': solution.entry.signature, }) ) diff --git a/src/analyzers/practice/resistor-color/ResistorColorSolution.ts b/src/analyzers/practice/resistor-color/ResistorColorSolution.ts index c0fbf836..233ecb79 100644 --- a/src/analyzers/practice/resistor-color/ResistorColorSolution.ts +++ b/src/analyzers/practice/resistor-color/ResistorColorSolution.ts @@ -1,6 +1,11 @@ -import { +import type { ExtractedExport, ExtractedFunction, + ProgramConstant, + ProgramConstants, + SpecificPropertyCall, +} from '@exercism/static-analysis' +import { extractExports, extractFunctions, findFirst, @@ -10,23 +15,18 @@ import { guardIdentifier, guardLiteral, guardMemberExpression, - ProgramConstant, - ProgramConstants, - SpecificPropertyCall, } from '@exercism/static-analysis' -import { AST_NODE_TYPES, TSESTree } from '@typescript-eslint/typescript-estree' -import { Source } from '~src/analyzers/SourceImpl' -import { parameterName } from '~src/analyzers/utils/extract_parameter' -import { assertNamedExport } from '~src/asserts/assert_named_export' -import { assertNamedFunction } from '~src/asserts/assert_named_function' -import { extractSignature } from '~src/extracts/extract_declaration' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import { AST_NODE_TYPES } from '@typescript-eslint/typescript-estree' +import { Source } from '~src/analyzers/SourceImpl.js' +import { parameterName } from '~src/analyzers/utils/extract_parameter.js' +import { assertNamedExport } from '~src/asserts/assert_named_export.js' +import { assertNamedFunction } from '~src/asserts/assert_named_function.js' +import { extractSignature } from '~src/extracts/extract_declaration.js' type Node = TSESTree.Node type Program = TSESTree.Program type Parameter = TSESTree.Parameter -type Expression = TSESTree.Expression - -type MainExport = ReturnType[number] const EXPECTED_METHOD = 'colorCode' const EXPECTED_EXPORT_METHOD = 'colorCode' @@ -78,7 +78,7 @@ class Constant { if (init.type === AST_NODE_TYPES.ArrayExpression) { // Each literal needs to be present, and needs to be present exactly in this order return init.elements.every((value, index): boolean => - guardLiteral(value, literals[index]) + Boolean(value && guardLiteral(value, literals[index])) ) } @@ -103,7 +103,7 @@ class Constant { } public isOptimalObject(node = this.constant): boolean { - if (!node || !node.init) { + if (!node?.init) { return false } @@ -185,7 +185,7 @@ class Entry { private readonly body: Node constructor(method: Readonly, source: Readonly) { - this.name = method.name || EXPECTED_METHOD + this.name = method.name ?? EXPECTED_METHOD this.params = method.params this.body = method.body @@ -357,8 +357,8 @@ class Entry { // Only looking for: // // REF_COLORS[param] - return ( - (this.params.length === 1 && + return Boolean( + this.params.length === 1 && guardIdentifier(this.params[0]) && constant.referencedSourceObjectName && guardMemberExpression( @@ -366,8 +366,7 @@ class Entry { constant.referencedSourceObjectName, this.parameterName ) && - body.computed) || - false + body.computed ) } @@ -380,15 +379,18 @@ class Entry { export class ResistorColorSolution { public readonly source: Source - private mainMethod: Entry - private mainExports: { + private readonly mainMethod: Entry + private readonly mainExports: { function: ExtractedExport constant: ExtractedExport } - private fileConstants: ProgramConstants - private mainConstant: Constant | undefined + private readonly fileConstants: ProgramConstants + private readonly mainConstant: Constant | undefined - constructor(public readonly program: Program, source: string) { + constructor( + public readonly program: Program, + source: string + ) { this.source = new Source(source) const functions = extractFunctions(program) @@ -421,19 +423,19 @@ export class ResistorColorSolution { const expectedConstant = this.fileConstants.find((constant) => guardIdentifier(constant.id, EXPECTED_CONSTANT) - ) || + ) ?? // Or find the first array or object assignment this.fileConstants.find( (constant) => constant.init && - [ + ![ AST_NODE_TYPES.ArrayExpression, AST_NODE_TYPES.ObjectExpression, - ].indexOf(constant.init.type) === -1 + ].includes(constant.init.type) ) this.mainConstant = - (expectedConstant && new Constant(expectedConstant, this.source)) || + (expectedConstant && new Constant(expectedConstant, this.source)) ?? undefined } diff --git a/src/analyzers/practice/resistor-color/index.ts b/src/analyzers/practice/resistor-color/index.ts index 60707360..85b63d1b 100644 --- a/src/analyzers/practice/resistor-color/index.ts +++ b/src/analyzers/practice/resistor-color/index.ts @@ -1,20 +1,20 @@ +import type { Input } from '@exercism/static-analysis' import { AstParser, - Input, NoExportError, NoMethodError, } from '@exercism/static-analysis' -import { TSESTree } from '@typescript-eslint/typescript-estree' -import { IsolatedAnalyzerImpl } from '~src/analyzers/IsolatedAnalyzerImpl' -import { CommentType, factory } from '~src/comments/comment' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import { IsolatedAnalyzerImpl } from '~src/analyzers/IsolatedAnalyzerImpl.js' +import { CommentType, factory } from '~src/comments/comment.js' import { NO_METHOD, NO_NAMED_EXPORT, NO_PARAMETER, UNEXPECTED_PARAMETER, -} from '~src/comments/shared' -import { WritableOutput } from '~src/interface' -import { ResistorColorSolution } from './ResistorColorSolution' +} from '~src/comments/shared.js' +import type { WritableOutput } from '~src/interface.d.js' +import { ResistorColorSolution } from './ResistorColorSolution.js' const TIP_EXPORT_INLINE = factory<'method.signature' | 'constant.signature'>` Did you know that you can export functions, classes and constants directly @@ -110,10 +110,12 @@ export class ResistorColorAnalyzer extends IsolatedAnalyzerImpl { return new ResistorColorSolution(program, source) } catch (error) { if (error instanceof NoMethodError) { + // eslint-disable-next-line @typescript-eslint/naming-convention output.disapprove(NO_METHOD({ 'method.name': error.method })) } if (error instanceof NoExportError) { + // eslint-disable-next-line @typescript-eslint/naming-convention output.disapprove(NO_NAMED_EXPORT({ 'export.name': error.namedExport })) } @@ -128,6 +130,7 @@ export class ResistorColorAnalyzer extends IsolatedAnalyzerImpl { // If there is no parameter then this solution won't pass the tests. // if (!entry.hasAtLeastOneParameter) { + // eslint-disable-next-line @typescript-eslint/naming-convention output.disapprove(NO_PARAMETER({ 'function.name': entry.name })) } @@ -232,7 +235,9 @@ export class ResistorColorAnalyzer extends IsolatedAnalyzerImpl { // export { gigasecond } output.add( TIP_EXPORT_INLINE({ + // eslint-disable-next-line @typescript-eslint/naming-convention 'method.signature': solution.entry.signature, + // eslint-disable-next-line @typescript-eslint/naming-convention 'constant.signature': solution.constant.signature, }) ) diff --git a/src/analyzers/practice/two-fer/index.ts b/src/analyzers/practice/two-fer/index.ts index 6203d186..6c296890 100644 --- a/src/analyzers/practice/two-fer/index.ts +++ b/src/analyzers/practice/two-fer/index.ts @@ -1,6 +1,10 @@ +import type { + ExtractedFunction, + Input, + ParsedSource, +} from '@exercism/static-analysis' import { AstParser, - ExtractedFunction, extractExports, findAll, findFirstOfType, @@ -9,21 +13,18 @@ import { guardIdentifier, guardLiteral, guardLogicalExpression, - guardReturnBlockStatement, guardReturnStatementWithValue, guardTemplateLiteral, guardUnaryExpression, - Input, NoSourceError, - ParsedSource, ParserError, } from '@exercism/static-analysis' -import { ReturnStatement } from '@typescript-eslint/types/dist/ast-spec' -import { AST_NODE_TYPES, TSESTree } from '@typescript-eslint/typescript-estree' -import { AnalyzerImpl } from '~src/analyzers/AnalyzerImpl' -import { parameterName } from '~src/analyzers/utils/extract_parameter' -import { annotateType } from '~src/analyzers/utils/type_annotations' -import { CommentType, factory } from '~src/comments/comment' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import { AST_NODE_TYPES } from '@typescript-eslint/typescript-estree' +import { AnalyzerImpl } from '~src/analyzers/AnalyzerImpl.js' +import { parameterName } from '~src/analyzers/utils/extract_parameter.js' +import { annotateType } from '~src/analyzers/utils/type_annotations.js' +import { CommentType, factory } from '~src/comments/comment.js' import { NO_METHOD, NO_NAMED_EXPORT, @@ -32,17 +33,17 @@ import { PREFER_STRICT_EQUALITY, PREFER_TEMPLATED_STRINGS, UNEXPECTED_SPLAT_ARGS, -} from '~src/comments/shared' -import { extractNamedFunction } from '~src/extracts/extract_named_function' -import { makeNoSourceOutput } from '~src/output/makeNoSourceOutput' -import { makeParseErrorOutput } from '~src/output/makeParseErrorOutput' +} from '~src/comments/shared.js' +import { extractNamedFunction } from '~src/extracts/extract_named_function.js' +import { makeNoSourceOutput } from '~src/output/makeNoSourceOutput.js' +import { makeParseErrorOutput } from '~src/output/makeParseErrorOutput.js' type ConditionalExpression = TSESTree.ConditionalExpression type IfStatement = TSESTree.IfStatement type LogicalExpression = TSESTree.LogicalExpression -type Parameter = TSESTree.Parameter type Program = TSESTree.Program type TemplateLiteral = TSESTree.TemplateLiteral +type ReturnStatement = TSESTree.ReturnStatement /** * The factories here SHOULD be kept in sync with exercism/website-copy. Under @@ -133,11 +134,15 @@ export class TwoFerAnalyzer extends AnalyzerImpl { // report as blown up. This converts these errors to the commentary. if (err instanceof NoSourceError) { const output = makeNoSourceOutput(err) - output.comments.forEach((comment) => this.comment(comment)) + output.comments.forEach((comment) => { + this.comment(comment) + }) this.redirect() } else if (err instanceof ParserError) { const output = makeParseErrorOutput(err) - output.comments.forEach((comment) => this.comment(comment)) + output.comments.forEach((comment) => { + this.comment(comment) + }) this.redirect() } @@ -153,8 +158,10 @@ export class TwoFerAnalyzer extends AnalyzerImpl { // First we check that there is a two-fer function and that this function // is exported. if (!this.mainMethod) { + // eslint-disable-next-line @typescript-eslint/naming-convention this.comment(NO_METHOD({ 'method.name': 'twoFer' })) } else if (!exported) { + // eslint-disable-next-line @typescript-eslint/naming-convention this.comment(NO_NAMED_EXPORT({ 'export.name': 'twoFer' })) } @@ -180,12 +187,14 @@ export class TwoFerAnalyzer extends AnalyzerImpl { // // const twoFer = () => { console.log(...) } // + // eslint-disable-next-line @typescript-eslint/naming-convention this.comment(NO_VALUE_RETURNED({ 'export.name': 'twoFer' })) } else if ( !returnStatements.some((node) => guardReturnStatementWithValue(node)) ) { // In this case there isn't a single return statement that returns a // value. + // eslint-disable-next-line @typescript-eslint/naming-convention this.comment(NO_VALUE_RETURNED({ 'export.name': 'twoFer' })) } } @@ -199,6 +208,7 @@ export class TwoFerAnalyzer extends AnalyzerImpl { // If there is no parameter or it doesn't have a default value, // then this solution won't pass the tests. if (this.mainMethod.params.length === 0) { + // eslint-disable-next-line @typescript-eslint/naming-convention this.disapprove(NO_PARAMETER({ 'function.name': this.mainMethod.name })) } @@ -212,7 +222,9 @@ export class TwoFerAnalyzer extends AnalyzerImpl { this.disapprove( UNEXPECTED_SPLAT_ARGS({ + // eslint-disable-next-line @typescript-eslint/naming-convention 'splat-arg.name': splatArgName, + // eslint-disable-next-line @typescript-eslint/naming-convention 'parameter.type': splatArgType, }) ) @@ -327,6 +339,7 @@ export class TwoFerAnalyzer extends AnalyzerImpl { this.comment( OPTIMISE_EXPLICIT_DEFAULT_VALUE({ parameter, + // eslint-disable-next-line @typescript-eslint/naming-convention maybe_undefined_expression: expression.left.name, }) ) @@ -357,6 +370,7 @@ export class TwoFerAnalyzer extends AnalyzerImpl { this.comment( OPTIMISE_EXPLICIT_DEFAULT_VALUE({ parameter, + // eslint-disable-next-line @typescript-eslint/naming-convention maybe_undefined_expression: conditionalExpression.consequent.name, }) ) @@ -550,14 +564,16 @@ export class TwoFerAnalyzer extends AnalyzerImpl { // have any specifiers: // // export function gigasecond - // => no specififers + // => no specifiers // // export { gigasecond } - // => yes specififers + // => yes specifiers // - return !!extractExports(this.program).find( - (extracted) => - extracted.exported === 'twoFer' && extracted.exportKind === 'value' + return Boolean( + extractExports(this.program).find( + (extracted) => + extracted.exported === 'twoFer' && extracted.exportKind === 'value' + ) ) } @@ -573,7 +589,7 @@ export class TwoFerAnalyzer extends AnalyzerImpl { this.mainMethod.node, AST_NODE_TYPES.TemplateLiteral ) - return !!( + return Boolean( template && template.quasis.length + template.expressions.length === 3 ) } diff --git a/src/analyzers/utils/config.ts b/src/analyzers/utils/config.ts new file mode 100644 index 00000000..19aa2320 --- /dev/null +++ b/src/analyzers/utils/config.ts @@ -0,0 +1,13 @@ +import { readFileSync } from 'node:fs' +import path from 'node:path' + +export function readConfig(directory: string): object { + const configPath = path.join(directory, '.meta', 'config.json') + return JSON.parse(readFileSync(configPath).toString()) as object +} + +export function exemplarPath(directory: string): string { + const config = readConfig(directory) + // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access + return path.join(directory, (config as any).files.exemplar[0]) +} diff --git a/src/analyzers/utils/extract_main_method.ts b/src/analyzers/utils/extract_main_method.ts index 6232d55b..a257f56d 100644 --- a/src/analyzers/utils/extract_main_method.ts +++ b/src/analyzers/utils/extract_main_method.ts @@ -1,6 +1,9 @@ import { guardIdentifier } from '@exercism/static-analysis' -import { AST_NODE_TYPES, TSESTree } from '@typescript-eslint/typescript-estree' -import { extractNamedFunction } from '~src/extracts/extract_named_function' +import { + AST_NODE_TYPES, + type TSESTree, +} from '@typescript-eslint/typescript-estree' +import { extractNamedFunction } from '~src/extracts/extract_named_function.js' type Program = TSESTree.Program type Node = TSESTree.Node @@ -20,7 +23,7 @@ type AnyMainMethodNode = */ export type MainMethod< T extends string = string, - TNode extends AnyMainMethodNode = AnyMainMethodNode + TNode extends AnyMainMethodNode = AnyMainMethodNode, > = { id: Identifier & { name: T } parent: undefined | Node @@ -45,13 +48,14 @@ export function extractMainMethod( return { ...node, - parent: undefined, + parent: undefined as unknown as Program, id: node.id as Identifier & { name: T }, } } case AST_NODE_TYPES.ArrowFunctionExpression: { const { id, ...rest } = node + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions return { ...rest, id: { @@ -65,6 +69,7 @@ export function extractMainMethod( case AST_NODE_TYPES.FunctionExpression: { const { id, ...rest } = node + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions return { ...rest, id: { diff --git a/src/analyzers/utils/extract_parameter.ts b/src/analyzers/utils/extract_parameter.ts index fdf968b3..19065ebb 100644 --- a/src/analyzers/utils/extract_parameter.ts +++ b/src/analyzers/utils/extract_parameter.ts @@ -1,9 +1,10 @@ -import { AST_NODE_TYPES, TSESTree } from '@typescript-eslint/typescript-estree' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import { AST_NODE_TYPES } from '@typescript-eslint/typescript-estree' type Parameter = TSESTree.Parameter -type ObjectLiteralElementLike = TSESTree.ObjectLiteralElementLike +// type ObjectLiteralElementLike = TSESTree.ObjectLiteralElementLike type Expression = TSESTree.Expression -type PropertyName = TSESTree.PropertyName +// type PropertyName = TSESTree.PropertyName type VariableDeclarator = TSESTree.VariableDeclarator type DestructuringPattern = TSESTree.DestructuringPattern @@ -79,6 +80,7 @@ export function parameterName( } } +/* function objectLiteralElementName( element: ObjectLiteralElementLike, fallback = '' @@ -123,6 +125,7 @@ function propertyName(key: PropertyName, fallback = ''): string { return fallback } } +*/ function expressionName( element: Expression | DestructuringPattern, @@ -135,7 +138,7 @@ function expressionName( // Disabled this rule here because we _want_ the fall-through // eslint-disable-next-line no-case-declarations const result = parameterName(element, fallback) - return Array.isArray(result) ? result[0] : result + return Array.isArray(result) ? (result as string[])[0] : result // Don't know how to get the name default: diff --git a/src/analyzers/utils/guard_literal_case_insensitive.ts b/src/analyzers/utils/guard_literal_case_insensitive.ts index 5d11eac1..b19cd633 100644 --- a/src/analyzers/utils/guard_literal_case_insensitive.ts +++ b/src/analyzers/utils/guard_literal_case_insensitive.ts @@ -1,4 +1,7 @@ -import { AST_NODE_TYPES, TSESTree } from '@typescript-eslint/typescript-estree' +import { + AST_NODE_TYPES, + type TSESTree, +} from '@typescript-eslint/typescript-estree' declare type Node = TSESTree.Node export declare type Literal = TSESTree.Literal diff --git a/src/analyzers/utils/test_parameter.ts b/src/analyzers/utils/test_parameter.ts index d4900811..4fcd6034 100644 --- a/src/analyzers/utils/test_parameter.ts +++ b/src/analyzers/utils/test_parameter.ts @@ -1,4 +1,7 @@ -import { AST_NODE_TYPES, TSESTree } from '@typescript-eslint/typescript-estree' +import { + AST_NODE_TYPES, + type TSESTree, +} from '@typescript-eslint/typescript-estree' type Parameter = TSESTree.Parameter diff --git a/src/analyzers/utils/type_annotations.ts b/src/analyzers/utils/type_annotations.ts index f12a0d81..597556ff 100644 --- a/src/analyzers/utils/type_annotations.ts +++ b/src/analyzers/utils/type_annotations.ts @@ -1,5 +1,8 @@ -import { AST_NODE_TYPES, TSESTree } from '@typescript-eslint/typescript-estree' -import { parameterName } from './extract_parameter' +import { + AST_NODE_TYPES, + type TSESTree, +} from '@typescript-eslint/typescript-estree' +import { parameterName } from './extract_parameter.js' type TSTypeAnnotation = TSESTree.TSTypeAnnotation type TypeNode = TSESTree.TypeNode @@ -14,6 +17,7 @@ export function parameterType(parameter: Parameter, fallback = 'any'): string { case AST_NODE_TYPES.RestElement: // ...arg?: type return ( (parameter.typeAnnotation && + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing annotateType(parameter.typeAnnotation, fallback)) || fallback ) @@ -22,6 +26,7 @@ export function parameterType(parameter: Parameter, fallback = 'any'): string { case AST_NODE_TYPES.AssignmentPattern: { return ( (parameter.left.typeAnnotation && + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing annotateType(parameter.left.typeAnnotation, fallback)) || fallback ) @@ -61,6 +66,10 @@ export function annotateEntityName(entityName: EntityName): string { )}` } + case AST_NODE_TYPES.ThisExpression: { + return 'this' + } + default: { return entityName } @@ -80,7 +89,7 @@ function annotate(typeNode?: TypeNode, fallback = 'any'): string { return 'any' } case AST_NODE_TYPES.TSArrayType: { - return `Array<${typeNode.elementType}>` + return `Array<${typeNode.elementType.type}>` } case AST_NODE_TYPES.TSBigIntKeyword: { return 'bigint' @@ -124,9 +133,7 @@ function annotate(typeNode?: TypeNode, fallback = 'any'): string { .join(' & ') } case AST_NODE_TYPES.TSImportType: { - return `${typeNode.isTypeOf ? 'typeof ' : ''} import(${ - typeNode.parameter - })${ + return `import(...)${ typeNode.qualifier ? `.${annotateEntityName(typeNode.qualifier)}` : '' } <...>` // todo type parameters } @@ -176,9 +183,6 @@ function annotate(typeNode?: TypeNode, fallback = 'any'): string { case AST_NODE_TYPES.TSOptionalType: { return `${annotate(typeNode.typeAnnotation, fallback)}?` } - case AST_NODE_TYPES.TSParenthesizedType: { - return `(${annotate(typeNode.typeAnnotation, fallback)})` - } case AST_NODE_TYPES.TSRestType: { return `...${annotate(typeNode.typeAnnotation, fallback)}` } @@ -209,16 +213,16 @@ function annotate(typeNode?: TypeNode, fallback = 'any'): string { )}` } case AST_NODE_TYPES.TSTypePredicate: { - return `${typeNode.parameterName} is ${annotateType( + return `${typeNode.parameterName.type === AST_NODE_TYPES.TSThisType ? 'this' : typeNode.parameterName.name} is ${annotateType( typeNode.typeAnnotation, fallback )}` } case AST_NODE_TYPES.TSTypeQuery: { - return `typeof ${annotateEntityName(typeNode.exprName)}` + return `typeof ${typeNode.exprName.type === AST_NODE_TYPES.Identifier ? typeNode.exprName.name : '(...)'}` } case AST_NODE_TYPES.TSTypeReference: { - return `${typeNode.typeName}<...>` // TODO type parameters + return `${typeNode.typeName.type === AST_NODE_TYPES.ThisExpression ? 'this' : typeNode.typeName.type === AST_NODE_TYPES.Identifier ? typeNode.typeName.name : '(complex)'}<...>` // TODO type parameters } case AST_NODE_TYPES.TSUndefinedKeyword: { return 'undefined' @@ -241,6 +245,36 @@ function annotate(typeNode?: TypeNode, fallback = 'any'): string { case AST_NODE_TYPES.TSIntrinsicKeyword: { return typeNode.type } + case AST_NODE_TYPES.TSAbstractKeyword: { + return 'abstract ' + } + case AST_NODE_TYPES.TSAsyncKeyword: { + return 'async' + } + case AST_NODE_TYPES.TSDeclareKeyword: { + return 'declare' + } + case AST_NODE_TYPES.TSExportKeyword: { + return 'export' + } + case AST_NODE_TYPES.TSPrivateKeyword: { + return 'private' + } + case AST_NODE_TYPES.TSProtectedKeyword: { + return 'protected' + } + case AST_NODE_TYPES.TSPublicKeyword: { + return 'public' + } + case AST_NODE_TYPES.TSQualifiedName: { + return '(...)' // TODO + } + case AST_NODE_TYPES.TSReadonlyKeyword: { + return 'readonly' + } + case AST_NODE_TYPES.TSStaticKeyword: { + return 'static' + } default: { return typeNode } diff --git a/src/asserts/assert_named_export.ts b/src/asserts/assert_named_export.ts index 6a1ea970..6c789b86 100644 --- a/src/asserts/assert_named_export.ts +++ b/src/asserts/assert_named_export.ts @@ -1,6 +1,6 @@ -import { ExtractedExport, NoExportError } from '@exercism/static-analysis' +import { type ExtractedExport, NoExportError } from '@exercism/static-analysis' import type { TSESTree } from '@typescript-eslint/typescript-estree' -import { extractNamedExport } from '~src/extracts/extract_named_export' +import { extractNamedExport } from '~src/extracts/extract_named_export.js' type Node = TSESTree.Node @@ -19,7 +19,9 @@ export function assertNamedExport( ): ExtractedExport | never { // Find the export const fn = Array.isArray(root) - ? root.find((fn) => fn.exported === exported) + ? (root as readonly ExtractedExport[]).find( + (fn) => fn.exported === exported + ) : extractNamedExport(exported, root as Node) // Does it exist? diff --git a/src/asserts/assert_named_function.ts b/src/asserts/assert_named_function.ts index 48bcb3fd..c6b0c011 100644 --- a/src/asserts/assert_named_function.ts +++ b/src/asserts/assert_named_function.ts @@ -1,6 +1,9 @@ -import { ExtractedFunction, NoMethodError } from '@exercism/static-analysis' +import { + type ExtractedFunction, + NoMethodError, +} from '@exercism/static-analysis' import type { TSESTree } from '@typescript-eslint/typescript-estree' -import { extractNamedFunction } from '~src/extracts/extract_named_function' +import { extractNamedFunction } from '~src/extracts/extract_named_function.js' type Node = TSESTree.Node @@ -19,7 +22,7 @@ export function assertNamedFunction( ): ExtractedFunction | never { // Find the function const fn = Array.isArray(root) - ? root.find((fn) => fn.name === name) + ? (root as readonly ExtractedFunction[]).find((fn) => fn.name === name) : extractNamedFunction(name, root as Node) // Does it exist? diff --git a/src/asserts/assert_public_api.ts b/src/asserts/assert_public_api.ts index 60266e74..7951a1d1 100644 --- a/src/asserts/assert_public_api.ts +++ b/src/asserts/assert_public_api.ts @@ -1,6 +1,7 @@ -import { ExtractedExport, ExtractedFunction } from '@exercism/static-analysis' -import { assertNamedExport } from './assert_named_export' -import { assertNamedFunction } from './assert_named_function' +import type { ExtractedFunction } from '@exercism/static-analysis' +import { type ExtractedExport } from '@exercism/static-analysis' +import { assertNamedExport } from './assert_named_export.js' +import { assertNamedFunction } from './assert_named_function.js' export function assertPublicApi( exported: string, diff --git a/src/asserts/assert_public_constant.ts b/src/asserts/assert_public_constant.ts index 019bc183..a9c163ee 100644 --- a/src/asserts/assert_public_constant.ts +++ b/src/asserts/assert_public_constant.ts @@ -1,12 +1,12 @@ import { - ExtractedExport, + type ExtractedExport, findTopLevelConstants, guardIdentifier, - ProgramConstant, + type ProgramConstant, StructureError, } from '@exercism/static-analysis' -import { TSESTree } from '@typescript-eslint/typescript-estree' -import { assertNamedExport } from '../asserts/assert_named_export' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import { assertNamedExport } from '../asserts/assert_named_export.js' export class NoPublicConstantError extends StructureError { constructor(public name: string) { diff --git a/src/batch.ts b/src/batch.ts index fcb26da7..914aa208 100644 --- a/src/batch.ts +++ b/src/batch.ts @@ -1,11 +1,11 @@ import { DirectoryWithConfigInput } from '@exercism/static-analysis' -import { DirectoryInput } from '@exercism/static-analysis/dist/input/DirectoryInput' -import { readDir } from '@exercism/static-analysis/dist/utils/fs' +import { DirectoryInput } from '@exercism/static-analysis' +import { readDir } from '@exercism/static-analysis' import path from 'path' -import { find } from './analyzers/Autoload' -import type { Comment, Output } from './interface' -import { FileOutput } from './output/processor/FileOutput' -import { Bootstrap } from './utils/bootstrap' +import { find } from './analyzers/Autoload.js' +import type { Comment, Output } from './interface.d.js' +import { FileOutput } from './output/processor/FileOutput.js' +import { Bootstrap } from './utils/bootstrap.js' // The bootstrap call uses the arguments passed to the process to figure out // which exercise to target, where the input lives (directory input) and what @@ -19,25 +19,30 @@ import { Bootstrap } from './utils/bootstrap' // const { exercise, options, logger } = Bootstrap.call() -const AnalyzerClass = find(exercise) +// eslint-disable-next-line @typescript-eslint/naming-convention +const __dirname = import.meta.dirname + const FIXTURES_ROOT = path.join( options.inputDir || path.join(__dirname, '..', 'test', 'fixtures'), exercise.slug ) -console.log('Analyzer found:', AnalyzerClass) console.log('Fixtures root:', FIXTURES_ROOT) /** - * Pad the input `value` to `length` using the `padc` pad character + * Pad the input `value` to `length` using the `padChar` pad character * * @param {(string | number | bigint)} value * @param {number} [length=20] - * @param {string} [padc=' '] + * @param {string} [padChar=' '] * @returns {string} the padded string */ -function pad(value: string | number | bigint, length = 20, padc = ' '): string { - const pad = Array(length).fill(padc).join('') +function pad( + value: string | number | bigint, + length = 20, + padChar = ' ' +): string { + const pad = Array(length).fill(padChar).join('') return (pad + value).slice(-length) } @@ -86,7 +91,11 @@ function line( const rootTimeStamp = process.hrtime.bigint() logger.log(`=> start batch runner for ${exercise.slug}`) -readDir(FIXTURES_ROOT) +// eslint-disable-next-line @typescript-eslint/naming-convention +const AnalyzerClass = await find(exercise) +console.log('Analyzer found:', AnalyzerClass) + +await readDir(FIXTURES_ROOT) .then(async (fixtureDirs) => Promise.all( fixtureDirs.map(async (fixtureDir) => { @@ -140,10 +149,10 @@ readDir(FIXTURES_ROOT) .filter((value, index, self) => self.indexOf(value) === index) const status: OutputGroup = - uniques.find((value) => value === 'essential') || - uniques.find((value) => value === 'actionable') || - uniques.find((value) => value === 'informative') || - uniques.find((value) => value === 'celebratory') || + uniques.find((value) => value === 'essential') ?? + uniques.find((value) => value === 'actionable') ?? + uniques.find((value) => value === 'informative') ?? + uniques.find((value) => value === 'celebratory') ?? (comments.length === 0 ? 'none' : 'unknown') groups[status] = groups[status] || { @@ -175,7 +184,7 @@ readDir(FIXTURES_ROOT) (aggregated, status) => { const { count, comments, runtimes, fixtures } = grouped[status] - const sortedRuntimes = runtimes.sort() + const sortedRuntimes = runtimes.sort((a, b) => Number(a - b)) const totalRuntime = runtimes.reduce( (result, time): bigint => result + time, @@ -225,12 +234,10 @@ readDir(FIXTURES_ROOT) const groupKeys = Object.keys(aggregatedGroups) as OutputGroup[] const allRuntimesSorted = groupKeys - .reduce( - (runtimes, status): bigint[] => - runtimes.concat(grouped[status].runtimes), - [] as bigint[] - ) - .sort() + .reduce< + bigint[] + >((runtimes, status): bigint[] => runtimes.concat(grouped[status].runtimes), []) + .sort((a, b) => Number(a - b)) const totalCount = groupKeys.reduce( (result, status): number => result + aggregatedGroups[status].count, @@ -252,10 +259,10 @@ readDir(FIXTURES_ROOT) BigInt(0) ) - const allComments = groupKeys.reduce( + const allComments = groupKeys.reduce( (comments, status): Comment[] => comments.concat(grouped[status].comments), - [] as Comment[] + [] ) const allUniqueComments = [ ...new Set( diff --git a/src/comments/comment.ts b/src/comments/comment.ts index 6581fe9b..b6765227 100644 --- a/src/comments/comment.ts +++ b/src/comments/comment.ts @@ -1,4 +1,5 @@ -import { Comment } from '~src/interface' +/* eslint-disable @typescript-eslint/naming-convention */ +import type { Comment } from '~src/interface.d.js' type TemplateKeys = (number | string)[] type NamedTags = Record @@ -108,9 +109,7 @@ export function factory( const key = keys[i] const value = - typeof key === 'number' - ? (positionalValues[key] as string) - : dictionary[key as R] + typeof key === 'number' ? positionalValues[key] : dictionary[key as R] const tag = buildTemplateTag(key) @@ -122,8 +121,8 @@ export function factory( return new CommentImpl( // Trim the right side of the output, so that the closing statement of // the factory can be made on a new line (see example). - message.trimRight(), - template.trimRight(), + message.trimEnd(), + template.trimEnd(), // Widen the type so we don't need to make `Comment` a generic combineValues({ dictionary, positionalValues }), externalTemplate, @@ -164,8 +163,8 @@ function separateValues( Array.isArray(last) || Object.keys(last).length === 0 ) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const dictionary: NamedTags = {} as any + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions + const dictionary: NamedTags = {} as NamedTags return { dictionary, positionalValues, diff --git a/src/comments/shared.ts b/src/comments/shared.ts index 68a7b93c..c4e8f065 100644 --- a/src/comments/shared.ts +++ b/src/comments/shared.ts @@ -1,4 +1,4 @@ -import { CommentType, factory } from './comment' +import { CommentType, factory } from './comment.js' /** * The factories here SHOULD be kept in sync with exercism/website-copy. Under @@ -116,10 +116,10 @@ true for this top-level constant. (Not to be confused with _immutable values_). export const BETA_COMMENTARY_PREFIX = factory` 🧪 This solution's output contains a new format of comments that is currently in Beta. Instead of providing copyable commentary, this analyzer will give -helpful content for mentoring this soluton. +helpful content for mentoring this solution. - \`💬\` indicates **copyable content**. This can be changed to match your -tone but the overal message matches the mentoring guidelines for this track. +tone but the overall message matches the mentoring guidelines for this track. - \`⚡\` indicates **danger**. The analyzer could not do its job properly. You MUST double check if it did not make a mistake. If it DID make a mistake, please open an issue [here](https://github.com/exercism/javascript-analyzer/issues/new?assignees=&labels=%3Abug%3A+bug&template=incorrect-analysis.md&title=Incorrect+Analysis%3A+) so the analyzer can be updated. diff --git a/src/extracts/extract_declaration.ts b/src/extracts/extract_declaration.ts index 589a952a..42d82ad3 100644 --- a/src/extracts/extract_declaration.ts +++ b/src/extracts/extract_declaration.ts @@ -1,6 +1,6 @@ import { AST_NODE_TYPES } from '@typescript-eslint/typescript-estree' -import { ExtractedFunction } from '@exercism/static-analysis' -import { Source } from '~src/analyzers/SourceImpl' +import type { ExtractedFunction } from '@exercism/static-analysis' +import type { Source } from '~src/analyzers/SourceImpl.js' export function extractSignature( fn: Readonly, @@ -21,7 +21,7 @@ export function extractSignature( // This will mutate const { definition } = init to const definition = init, // leaving other items inside the object- (or array-) expression alone. if (fn.node.type === AST_NODE_TYPES.VariableDeclarator) { - return `${fn.metadata.variable?.kind || 'const'} ${source.getOuter( + return `${fn.metadata.variable?.kind ?? 'const'} ${source.getOuter( signature )} ...` } diff --git a/src/extracts/extract_named_export.ts b/src/extracts/extract_named_export.ts index 2059b850..7a1ed4e6 100644 --- a/src/extracts/extract_named_export.ts +++ b/src/extracts/extract_named_export.ts @@ -1,5 +1,6 @@ -import { TSESTree } from '@typescript-eslint/typescript-estree' -import { extractExports, ExtractedExport } from '@exercism/static-analysis' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import type { ExtractedExport } from '@exercism/static-analysis' +import { extractExports } from '@exercism/static-analysis' type Node = TSESTree.Node diff --git a/src/extracts/extract_named_function.ts b/src/extracts/extract_named_function.ts index 19f9a813..f3fe5576 100644 --- a/src/extracts/extract_named_function.ts +++ b/src/extracts/extract_named_function.ts @@ -1,5 +1,6 @@ -import { TSESTree } from '@typescript-eslint/typescript-estree' -import { extractFunctions, ExtractedFunction } from '@exercism/static-analysis' +import type { TSESTree } from '@typescript-eslint/typescript-estree' +import type { ExtractedFunction } from '@exercism/static-analysis' +import { extractFunctions } from '@exercism/static-analysis' type Node = TSESTree.Node diff --git a/src/interface.d.ts b/src/interface.d.ts index 707b7b38..4b296abe 100644 --- a/src/interface.d.ts +++ b/src/interface.d.ts @@ -62,26 +62,26 @@ export interface Output { * @param options the execution options * @returns the output as string */ - toProcessable(options: Readonly): Promise + toProcessable: (options: Readonly) => Promise } export interface WritableOutput extends Output { /** * @deprecated use {WritableOutput#add} + {WritableOutput#finish} */ - approve(comment?: Comment): never + approve: (comment?: Comment) => never /** * @deprecated use {WritableOutput#add} + {WritableOutput#finish} */ - disapprove(comment?: Comment): never + disapprove: (comment?: Comment) => never /** * @deprecated use {WritableOutput#add} + {WritableOutput#finish} */ - redirect(comment?: Comment): never + redirect: (comment?: Comment) => never - add(comment: Comment): void + add: (comment: Comment) => void - finish(summary?: string): never + finish: (summary?: string) => never hasCommentary: boolean commentCount: number @@ -95,13 +95,13 @@ export interface OutputProcessor { } export interface Analyzer { - run(input: Input, options: ExecutionOptions): Promise + run: (input: Input, options: ExecutionOptions) => Promise } export interface Runner { - call( + call: ( analyzer: Analyzer, input: Input, options: Readonly - ): Promise + ) => Promise } diff --git a/src/markdownify.ts b/src/markdownify.ts index 30f01c73..91e3e7aa 100644 --- a/src/markdownify.ts +++ b/src/markdownify.ts @@ -1,8 +1,11 @@ import { readFile } from '@exercism/static-analysis' import { spawnSync } from 'child_process' import path from 'path' -import { Output } from './interface' -import { Bootstrap } from './utils/bootstrap' +import type { Output } from './interface.d.js' +import { Bootstrap } from './utils/bootstrap.js' + +// eslint-disable-next-line @typescript-eslint/naming-convention +const __dirname = import.meta.dirname // The bootstrap call uses the arguments passed to the process to figure out // which exercise to target, where the input lives (directory input) and what @@ -19,13 +22,12 @@ logger.log('=> DEBUG mode is on') readFile(path.join(options.inputDir, 'analysis.json')) .then( - (jsonString: Buffer | string): Pick => + (jsonString: Buffer | string): Pick => + // eslint-disable-next-line @typescript-eslint/no-unsafe-return JSON.parse(jsonString.toString()) ) - .then((output: Pick): void => { - logger.log( - `=> Got ${output.status} with ${output.comments.length} comments` - ) + .then((output: Pick): void => { + logger.log(`=> Got ${output.comments.length} comments`) const spawned = spawnSync( 'ruby', [ @@ -48,7 +50,10 @@ readFile(path.join(options.inputDir, 'analysis.json')) } ) - spawned.error && logger.log(spawned.error.toString()) + if (spawned.error) { + logger.log(spawned.error.toString()) + } + if (spawned.output) { const [, out, err] = spawned.output if (out) { @@ -60,4 +65,4 @@ readFile(path.join(options.inputDir, 'analysis.json')) } } }) - .catch((err): void => logger.error(err)) + .catch((err: unknown): void => void logger.error(String(err))) diff --git a/src/output/AnalyzerOutput.ts b/src/output/AnalyzerOutput.ts index ede305ee..bc6953a2 100644 --- a/src/output/AnalyzerOutput.ts +++ b/src/output/AnalyzerOutput.ts @@ -1,29 +1,4 @@ -import type { Comment, ExecutionOptions, Output } from '~src/interface' - -enum SolutionStatus { - /** - * This is the default situation and should be used when there is any - * uncertainty. - * - * @deprecated don't return any status or use an {Essential} comment. - * */ - Redirect = 'refer_to_mentor', - /** - * To be used when a solution matches pre-known optimal solutions or when a - * solution can be approved but with a known improvement. - * - * @deprecated don't return any status or use a {Celebratory} comment. - * */ - Approve = 'approve', - /** - * To be used when a solution can be disapproved as suboptimal and a comment - * is provided. - * - * @deprecated replace with one or more comments with {Essential} or an - * {Actionable} type. - **/ - Disapprove = 'disapprove', -} +import type { Comment, ExecutionOptions, Output } from '~src/interface.js' /** * The interface for the analyzer output is described [here][doc]. @@ -50,7 +25,7 @@ export class AnalyzerOutput implements Output { } /** - * Mark the solution as dissapproved + * Mark the solution as disapproved * @deprecated add an {actionable} or {essential} comment instead */ public disapprove(): void { @@ -77,6 +52,7 @@ export class AnalyzerOutput implements Output { } public freeze(summary?: string): void { + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing this.summary = summary || this.summary Object.freeze(this) diff --git a/src/output/IsolatedAnalyzerOutput.ts b/src/output/IsolatedAnalyzerOutput.ts index 056877d6..34d527d5 100644 --- a/src/output/IsolatedAnalyzerOutput.ts +++ b/src/output/IsolatedAnalyzerOutput.ts @@ -1,5 +1,5 @@ -import type { Comment, WritableOutput } from '~src/interface' -import { AnalyzerOutput } from './AnalyzerOutput' +import type { Comment, WritableOutput } from '~src/interface.js' +import { AnalyzerOutput } from './AnalyzerOutput.js' export class EarlyFinalization extends Error { constructor() { @@ -18,16 +18,20 @@ export class IsolatedAnalyzerOutput * @deprecated add a {celebratory} or {informative} comment instead */ public approve(comment?: Comment): never { - comment && this.add(comment) + if (comment) { + this.add(comment) + } return this.freeze() } /** - * Mark the solution as dissapproved + * Mark the solution as disapproved * @deprecated add an {actionable} or {essential} comment instead */ public disapprove(comment?: Comment): never { - comment && this.add(comment) + if (comment) { + this.add(comment) + } return this.freeze() } @@ -36,7 +40,9 @@ export class IsolatedAnalyzerOutput * @deprecated do nothing, or add an {actionable} or {essential} comment instead */ public redirect(comment?: Comment): never { - comment && this.add(comment) + if (comment) { + this.add(comment) + } return this.freeze() } @@ -45,6 +51,7 @@ export class IsolatedAnalyzerOutput } public freeze(summary?: string): never { + // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing this.summary = summary || this.summary super.freeze() diff --git a/src/output/makeNoSourceOutput.ts b/src/output/makeNoSourceOutput.ts index 71bddf7d..26c3c71d 100644 --- a/src/output/makeNoSourceOutput.ts +++ b/src/output/makeNoSourceOutput.ts @@ -1,7 +1,7 @@ import type { NoSourceError } from '@exercism/static-analysis' -import { ERROR_CAPTURED_NO_SOURCE } from '~src/comments/shared' -import type { Output } from '~src/interface' -import { AnalyzerOutput } from './AnalyzerOutput' +import { ERROR_CAPTURED_NO_SOURCE } from '~src/comments/shared.js' +import type { Output } from '~src/interface.d.js' +import { AnalyzerOutput } from './AnalyzerOutput.js' /** * Makes a generic output based on a NoSourceError diff --git a/src/output/makeParseErrorOutput.ts b/src/output/makeParseErrorOutput.ts index 47f1bec3..f793e8f6 100644 --- a/src/output/makeParseErrorOutput.ts +++ b/src/output/makeParseErrorOutput.ts @@ -1,8 +1,8 @@ import type { ParserError } from '@exercism/static-analysis' -import { Source } from '~src/analyzers/SourceImpl' -import { PARSE_ERROR } from '~src/comments/shared' -import type { Output } from '~src/interface' -import { AnalyzerOutput } from './AnalyzerOutput' +import { Source } from '~src/analyzers/SourceImpl.js' +import { PARSE_ERROR } from '~src/comments/shared.js' +import type { Output } from '~src/interface.d.js' +import { AnalyzerOutput } from './AnalyzerOutput.js' /** * Makes a generic output, based on a ParserError @@ -15,7 +15,7 @@ export function makeParseErrorOutput(err: ParserError): Output { const output = new AnalyzerOutput() const { message, ...details } = err.original - const source = new Source(err.source || '') + const source = new Source(err.source ?? '') const startLine = details.lineNumber - 2 const endLine = details.lineNumber + 3 /* last line might be empty */ diff --git a/src/output/processor/FileOutput.ts b/src/output/processor/FileOutput.ts index 9c0471d9..a707bdc5 100644 --- a/src/output/processor/FileOutput.ts +++ b/src/output/processor/FileOutput.ts @@ -1,10 +1,11 @@ import { getProcessLogger, writeFile } from '@exercism/static-analysis' -import path from 'path' +import path from 'node:path' -import { ExecutionOptions, OutputProcessor } from '~src/interface' +import type { ExecutionOptions, OutputProcessor } from '~src/interface.js' type FileOutputOptions = Pick +// eslint-disable-next-line @typescript-eslint/naming-convention export const FileOutput: OutputProcessor = async ( previous: Promise, options: FileOutputOptions diff --git a/src/output/processor/LogOutput.ts b/src/output/processor/LogOutput.ts index 14d5ae52..05ad6521 100644 --- a/src/output/processor/LogOutput.ts +++ b/src/output/processor/LogOutput.ts @@ -1,6 +1,7 @@ import { getProcessLogger } from '@exercism/static-analysis' -import type { OutputProcessor } from '~src/interface' +import type { OutputProcessor } from '~src/interface.js' +// eslint-disable-next-line @typescript-eslint/naming-convention export const LogOutput: OutputProcessor = async ( previous: Promise ): Promise => { diff --git a/src/output/processor/PassThroughOutput.ts b/src/output/processor/PassThroughOutput.ts index 5951c16b..3748cb79 100644 --- a/src/output/processor/PassThroughOutput.ts +++ b/src/output/processor/PassThroughOutput.ts @@ -1,5 +1,6 @@ -import { OutputProcessor } from '~src/interface' +import type { OutputProcessor } from '~src/interface.js' +// eslint-disable-next-line @typescript-eslint/naming-convention export const PassThroughOutput: OutputProcessor = async ( previous: Promise ): Promise => { diff --git a/src/remote-analyze.ts b/src/remote-analyze.ts index 2d6cd98a..467b0a69 100644 --- a/src/remote-analyze.ts +++ b/src/remote-analyze.ts @@ -1,12 +1,12 @@ -import { registerExceptionHandler } from '@exercism/static-analysis/dist/errors/handler' import { Logger, + registerExceptionHandler, setProcessLogger, -} from '@exercism/static-analysis/dist/utils/logger' -import { spawn, spawnSync } from 'child_process' -import fs from 'fs' -import path from 'path' -import { ExecutionOptionsImpl } from './utils/execution_options' +} from '@exercism/static-analysis' +import { spawn, spawnSync } from 'node:child_process' +import fs from 'node:fs' +import path from 'node:path' +import { ExecutionOptionsImpl } from './utils/execution_options.js' // The calls below uses the arguments passed to the process to figure out // which exercise to target, where the input lives (url/solution id) and what @@ -35,13 +35,13 @@ const input = options.inputDir.trim() let uuid = undefined if (input.startsWith('https://exercism.io/')) { uuid = input.split('/').reverse()[0] - if (uuid.length != 32) { + if (uuid.length !== 32) { process.stderr.write( `Expected a UUID (length 32), got '${uuid}' (len: ${uuid.length})` ) process.exit(-2) } -} else if (input.length == 32) { +} else if (input.length === 32) { uuid = input } else if (fs.existsSync(input)) { logger.error('=> input seems to be local') @@ -70,7 +70,7 @@ if (downloadResult.error) { } const [, downloadOut] = downloadResult.output -const localPath = downloadOut.toString().trim() +const localPath = String(downloadOut).trim() // Capture CLI tool issues (reported but not true) if (!fs.existsSync(localPath)) { @@ -101,14 +101,14 @@ const analyzeProcess = spawn( { cwd: process.cwd(), env: process.env } ) -analyzeProcess.stderr.on('data', (data) => { - logger.error(data.toString().trim()) +analyzeProcess.stderr.on('data', (data: unknown) => { + logger.error(String(data).trim()) }) -analyzeProcess.stdout.on('data', (data) => { - logger.log(data.toString().trim()) +analyzeProcess.stdout.on('data', (data: unknown) => { + logger.log(String(data).trim()) }) analyzeProcess.on('close', (code) => { - process.exit(code || undefined) + process.exit(code ?? undefined) }) diff --git a/src/stats.ts b/src/stats.ts index 10c31e7b..ab611ba5 100644 --- a/src/stats.ts +++ b/src/stats.ts @@ -1,8 +1,8 @@ -import { AstParser } from '@exercism/static-analysis/dist/AstParser' -import { DirectoryInput } from '@exercism/static-analysis/dist/input/DirectoryInput' -import { readDir } from '@exercism/static-analysis/dist/utils/fs' -import path from 'path' -import { Bootstrap } from './utils/bootstrap' +import { AstParser } from '@exercism/static-analysis' +import { DirectoryInput } from '@exercism/static-analysis' +import { readDir } from '@exercism/static-analysis' +import path from 'node:path' +import { Bootstrap } from './utils/bootstrap.js' // The bootstrap call uses the arguments passed to the process to figure out // which exercise to target, where the input lives (directory input) and what @@ -27,7 +27,7 @@ function pad(value: string | number, pad = ' '): string { logger.log(`=> start statistics collection for ${exercise.slug}`) -readDir(FIXTURES_ROOT) +await readDir(FIXTURES_ROOT) .then(async (fixtureDirs) => Promise.all( fixtureDirs.map(async (fixtureDir) => { @@ -43,7 +43,8 @@ readDir(FIXTURES_ROOT) const [{ program: root }] = results return JSON.stringify(root) - } catch ({ message, ...other }) { + } catch (reason) { + const { message, ...other } = reason as Error logger.error( `=> skipping ~${path.relative( path.dirname(FIXTURES_ROOT), @@ -68,10 +69,10 @@ readDir(FIXTURES_ROOT) valid: realTrees.length, total: trees.length, unique: Object.keys( - realTrees.reduce((counts, tree) => { + realTrees.reduce<{ [tree: string]: number }>((counts, tree) => { counts[tree] = (counts[tree] || 0) + 1 return counts - }, {} as { [tree: string]: number }) + }, {}) ).length, } diff --git a/src/utils/bootstrap.ts b/src/utils/bootstrap.ts index 530c2cad..f5eb5071 100644 --- a/src/utils/bootstrap.ts +++ b/src/utils/bootstrap.ts @@ -1,14 +1,14 @@ +import type { Input } from '@exercism/static-analysis' import { DirectoryInput, - Input, + DirectoryWithConfigInput, Logger, registerExceptionHandler, setProcessLogger, - DirectoryWithConfigInput, } from '@exercism/static-analysis' -import { ExerciseImpl } from '~src/ExerciseImpl' -import { ExecutionOptions, Exercise } from '~src/interface' -import { ExecutionOptionsImpl } from './execution_options' +import { ExerciseImpl } from '~src/ExerciseImpl.js' +import type { ExecutionOptions, Exercise } from '~src/interface.d.js' +import { ExecutionOptionsImpl } from './execution_options.js' export interface BootstrapResult { exercise: Exercise diff --git a/src/utils/execution_options.ts b/src/utils/execution_options.ts index acf9f617..1ef7f459 100644 --- a/src/utils/execution_options.ts +++ b/src/utils/execution_options.ts @@ -1,5 +1,6 @@ import yargs from 'yargs' -import type { ExecutionOptions } from '~src/interface' +import type { ExecutionOptions } from '~src/interface.d.js' +import { hideBin } from 'yargs/helpers' export class ExecutionOptionsImpl implements ExecutionOptions { public debug!: boolean @@ -16,7 +17,7 @@ export class ExecutionOptionsImpl implements ExecutionOptions { } public static create(): ExecutionOptions { - const args = yargs + const args = yargs(hideBin(process.argv)) .usage('Usage: $0 [options]') .example( '$0 two-fer ~/javascript/two-fer/128/', @@ -30,7 +31,7 @@ export class ExecutionOptionsImpl implements ExecutionOptions { .describe('c', 'If given, outputs to the console') .describe( 'o', - 'Path relative to the input dir where the analyzis results are stored' + 'Path relative to the input dir where the analysis results are stored' ) .describe( 'noTemplates', @@ -50,9 +51,11 @@ export class ExecutionOptionsImpl implements ExecutionOptions { .default('o', './analysis.json') .default('dry', false) .help('h') - .alias('h', 'help').argv + .alias('h', 'help') + .parse() + + const { d, c, o, dry, p, noTemplates, _ } = args as never - const { d, c, o, dry, p, noTemplates, _ } = args return new ExecutionOptionsImpl({ debug: d, console: c, diff --git a/src/utils/runner.ts b/src/utils/runner.ts index 34bea3f7..696f7c7c 100644 --- a/src/utils/runner.ts +++ b/src/utils/runner.ts @@ -4,10 +4,10 @@ import type { ExecutionOptions, Output, OutputProcessor, -} from '~src/interface' -import { FileOutput } from '~src/output/processor/FileOutput' -import { LogOutput } from '~src/output/processor/LogOutput' -import { PassThroughOutput } from '~src/output/processor/PassThroughOutput' +} from '~src/interface.js' +import { FileOutput } from '~src/output/processor/FileOutput.js' +import { LogOutput } from '~src/output/processor/LogOutput.js' +import { PassThroughOutput } from '~src/output/processor/PassThroughOutput.js' /** * Run a specific analyzer, given a set of execution options diff --git a/src/web.ts b/src/web.ts index f48f2ce0..8476db80 100644 --- a/src/web.ts +++ b/src/web.ts @@ -1,19 +1,19 @@ -import { reportException } from '@exercism/static-analysis/dist/errors/handler' -import { InlineInput } from '@exercism/static-analysis/dist/input/InlineInput' -import type { Input } from '@exercism/static-analysis/dist/input/Input' +import type { Input } from '@exercism/static-analysis' import { + InlineInput, Logger, + reportException, setProcessLogger as setGlobalLogger, -} from '@exercism/static-analysis/dist/utils/logger' -import { ExerciseImpl } from './ExerciseImpl' +} from '@exercism/static-analysis' +import { ExerciseImpl } from './ExerciseImpl.js' import type { Analyzer, ExecutionOptions, Exercise, Output, OutputProcessor, -} from './interface' -import { LogOutput } from './output/processor/LogOutput' +} from './interface.js' +import { LogOutput } from './output/processor/LogOutput.js' /** * Run a specific analyzer, given a set of execution options diff --git a/test/.eslintrc b/test/.eslintrc deleted file mode 100644 index 83fe3eeb..00000000 --- a/test/.eslintrc +++ /dev/null @@ -1,17 +0,0 @@ -{ - "parser": "@typescript-eslint/parser", - "parserOptions": { - "project": "./test/tsconfig.eslint.json", - "ecmaVersion": 2018, - "sourceType": "module", - "ecmaFeatures": { - "modules": true - } - }, - "env": { - "es6": true, - "node": true, - "jest": true - }, - "extends": ["../.eslintrc"] -} diff --git a/test/__mocks__/fs.ts b/test/__mocks__/fs.ts index af4ac3b3..174fdfcb 100644 --- a/test/__mocks__/fs.ts +++ b/test/__mocks__/fs.ts @@ -1,30 +1,36 @@ -import path from 'path' -import { - BaseEncodingOptions, +import { jest } from '@jest/globals' +import path from 'node:path' +import type { + ObjectEncodingOptions as BaseEncodingOptions, Dirent, Mode, OpenMode, PathLike, Stats, -} from 'fs' -import type { promises } from 'fs' +} from 'node:fs' +import type { promises } from 'node:fs' type FileHandle = promises.FileHandle const fs = jest.createMockFromModule('fs') as Omit< typeof import('fs'), never > & { + // eslint-disable-next-line @typescript-eslint/naming-convention __setMockFiles: typeof __setMockFiles + // eslint-disable-next-line @typescript-eslint/naming-convention __getWrittenFiles: typeof __getWrittenFiles } +// eslint-disable-next-line @typescript-eslint/consistent-type-assertions fs.promises = {} as typeof fs.promises // This is a custom function that our tests can use during setup to specify // what the files on the "mock" filesystem should look like when any of the // `fs` APIs are used. +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment let mockFiles: { [dir: string]: { [file: string]: string } } = Object.create(null) +// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment let writtenFiles: { [dir: string]: { [file: string]: string } } = Object.create(null) @@ -59,8 +65,11 @@ class CanOnlyWriteUnmockedFiles extends Error { } } +// eslint-disable-next-line @typescript-eslint/naming-convention function __setMockFiles(newMockFiles: { [path: string]: string }): void { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment mockFiles = Object.create(null) + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment writtenFiles = Object.create(null) for (const fullPath in newMockFiles) { @@ -76,7 +85,9 @@ function __setMockFiles(newMockFiles: { [path: string]: string }): void { } } +// eslint-disable-next-line @typescript-eslint/naming-convention function __getWrittenFiles(): typeof writtenFiles { + // eslint-disable-next-line @typescript-eslint/no-unsafe-return return JSON.parse(JSON.stringify(writtenFiles)) } @@ -177,6 +188,7 @@ function readFile( async function readFile( filePath: PathLike | FileHandle ): Promise { + // eslint-disable-next-line @typescript-eslint/no-base-to-string const key = path.normalize(filePath.toString()) const dir = path.dirname(key) const file = path.basename(key) @@ -214,6 +226,7 @@ async function writeFile( filePath: PathLike | FileHandle, data: string | Uint8Array ): Promise { + // eslint-disable-next-line @typescript-eslint/no-base-to-string const key = path.normalize(filePath.toString()) const dir = path.dirname(key) const file = path.basename(key) @@ -244,6 +257,7 @@ async function stat(filePath: PathLike): Promise { key in mockFiles || (dir in mockFiles && file in mockFiles[dir]) if (exists) { + // eslint-disable-next-line @typescript-eslint/consistent-type-assertions return {} as Stats } @@ -253,9 +267,13 @@ async function stat(filePath: PathLike): Promise { fs.__getWrittenFiles = __getWrittenFiles fs.__setMockFiles = __setMockFiles -fs.promises.readdir = readdir -fs.promises.readFile = readFile -fs.promises.writeFile = writeFile -fs.promises.stat = stat +// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment +fs.promises.readdir = readdir as any +// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment +fs.promises.readFile = readFile as any +// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment +fs.promises.writeFile = writeFile as any +// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment +fs.promises.stat = stat as any export default fs diff --git a/test/analyzers/__exemplar/exemplar.ts b/test/analyzers/__exemplar/exemplar.ts index 19e7993f..e68ad03e 100644 --- a/test/analyzers/__exemplar/exemplar.ts +++ b/test/analyzers/__exemplar/exemplar.ts @@ -1,8 +1,13 @@ +import { describe, it, expect } from '@jest/globals' import { DirectoryWithConfigInput } from '@exercism/static-analysis' -import path from 'path' -import { ExemplarAnalyzer } from '~src/analyzers/concept/__exemplar' -import { EXEMPLAR_SOLUTION } from '~src/comments/shared' -import { makeAnalyze, makeOptions } from '~test/helpers/smoke' +import path from 'node:path' +import { ExemplarAnalyzer } from '~src/analyzers/concept/__exemplar/index.js' +import { EXEMPLAR_SOLUTION } from '~src/comments/shared.js' +import { makeAnalyze, makeOptions } from '~test/helpers/smoke.js' + +// eslint-disable-next-line @typescript-eslint/naming-convention +const __dirname = import.meta.dirname + ;[ 'amusement-park', 'bird-watcher', diff --git a/test/analyzers/annalyns-infiltration/exemplar.ts b/test/analyzers/annalyns-infiltration/exemplar.ts index 4d4d1b0e..8bd9d420 100644 --- a/test/analyzers/annalyns-infiltration/exemplar.ts +++ b/test/analyzers/annalyns-infiltration/exemplar.ts @@ -1,8 +1,12 @@ +import { describe, it, expect } from '@jest/globals' import { DirectoryWithConfigInput } from '@exercism/static-analysis' -import path from 'path' -import { AnnalynsInfiltrationAnalyzer } from '~src/analyzers/concept/annalyns-infiltration' -import { EXEMPLAR_SOLUTION } from '~src/comments/shared' -import { makeAnalyze, makeOptions } from '~test/helpers/smoke' +import path from 'node:path' +import { AnnalynsInfiltrationAnalyzer } from '~src/analyzers/concept/annalyns-infiltration/index.js' +import { EXEMPLAR_SOLUTION } from '~src/comments/shared.js' +import { makeAnalyze, makeOptions } from '~test/helpers/smoke.js' + +// eslint-disable-next-line @typescript-eslint/naming-convention +const __dirname = import.meta.dirname const inputDir = path.join( __dirname, @@ -26,7 +30,7 @@ const analyze = makeAnalyze( ) describe('When running analysis on annalyns-infiltration', () => { - it('recognises the exemplar solution', async () => { + it('recognizes the exemplar solution', async () => { const input = new DirectoryWithConfigInput(inputDir) const [solution] = await input.read() diff --git a/test/analyzers/elyses-analytic-enchantments/exemplar.ts b/test/analyzers/elyses-analytic-enchantments/exemplar.ts index 535f895e..9d3ec609 100644 --- a/test/analyzers/elyses-analytic-enchantments/exemplar.ts +++ b/test/analyzers/elyses-analytic-enchantments/exemplar.ts @@ -1,8 +1,12 @@ +import { describe, it, expect } from '@jest/globals' import { DirectoryWithConfigInput } from '@exercism/static-analysis' -import path from 'path' -import { ElysesAnalyticEnchantmentsAnalyzer } from '~src/analyzers/concept/elyses-analytic-enchantments' -import { EXEMPLAR_SOLUTION } from '~src/comments/shared' -import { makeAnalyze, makeOptions } from '~test/helpers/smoke' +import path from 'node:path' +import { ElysesAnalyticEnchantmentsAnalyzer } from '~src/analyzers/concept/elyses-analytic-enchantments/index.js' +import { EXEMPLAR_SOLUTION } from '~src/comments/shared.js' +import { makeAnalyze, makeOptions } from '~test/helpers/smoke.js' + +// eslint-disable-next-line @typescript-eslint/naming-convention +const __dirname = import.meta.dirname const inputDir = path.join( __dirname, diff --git a/test/analyzers/freelancer-rates/exemplar.ts b/test/analyzers/freelancer-rates/exemplar.ts index a71fccbc..6146046a 100644 --- a/test/analyzers/freelancer-rates/exemplar.ts +++ b/test/analyzers/freelancer-rates/exemplar.ts @@ -1,8 +1,12 @@ +import { describe, it, expect } from '@jest/globals' import { DirectoryWithConfigInput } from '@exercism/static-analysis' -import path from 'path' -import { FreelancerRatesAnalyzer } from '~src/analyzers/concept/freelancer-rates' -import { EXEMPLAR_SOLUTION } from '~src/comments/shared' -import { makeAnalyze, makeOptions } from '~test/helpers/smoke' +import path from 'node:path' +import { FreelancerRatesAnalyzer } from '~src/analyzers/concept/freelancer-rates/index.js' +import { EXEMPLAR_SOLUTION } from '~src/comments/shared.js' +import { makeAnalyze, makeOptions } from '~test/helpers/smoke.js' + +// eslint-disable-next-line @typescript-eslint/naming-convention +const __dirname = import.meta.dirname const inputDir = path.join( __dirname, @@ -26,7 +30,7 @@ const analyze = makeAnalyze( ) describe('When running analysis on freelancer-rates', () => { - it('recognises the exemplar solution', async () => { + it('recognizes the exemplar solution', async () => { const input = new DirectoryWithConfigInput(inputDir) const [solution] = await input.read() diff --git a/test/analyzers/gigasecond/__snapshots__/snapshot.ts.snap b/test/analyzers/gigasecond/__snapshots__/snapshot.ts.snap index 3159d59a..278a8129 100644 --- a/test/analyzers/gigasecond/__snapshots__/snapshot.ts.snap +++ b/test/analyzers/gigasecond/__snapshots__/snapshot.ts.snap @@ -2,7 +2,7 @@ exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/11's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -22,7 +22,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -31,7 +31,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/12's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`billms = 1000000000000\` are easy to misread and difficult to @@ -41,7 +41,7 @@ comprehend. Rewrite the literal \`billms = 1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "billms = 1000000000000", }, }, @@ -52,13 +52,13 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/14's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_method", "message": "No function called \`gigasecond\`. The tests won't pass without it.", "template": "No function called \`%{method.name}\`. The tests won't pass without it.", "type": "essential", - "variables": Object { + "variables": { "method.name": "gigasecond", }, }, @@ -69,7 +69,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/15's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -91,7 +91,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e12", }, @@ -109,7 +109,7 @@ inline? export %{method.signature} \`\`\`", "type": "informative", - "variables": Object { + "variables": { "method.signature": "function gigasecond(entryDate) ...", }, }, @@ -120,7 +120,7 @@ export %{method.signature} exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/17's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -142,7 +142,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e12", }, @@ -156,7 +156,7 @@ work with strings only, and not _intended_ to be used like this.", as \`Date.parse(%{parameter.name})\` is not a good candidate. It's supposed to work with strings only, and not _intended_ to be used like this.", "type": "essential", - "variables": Object { + "variables": { "parameter.name": "date", }, }, @@ -167,7 +167,7 @@ work with strings only, and not _intended_ to be used like this.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/18's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -177,7 +177,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -188,7 +188,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/20's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000*1000000000\` are easy to misread and difficult to @@ -198,7 +198,7 @@ comprehend. Rewrite the literal \`1000*1000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000*1000000000", }, }, @@ -209,7 +209,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/21's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -219,7 +219,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -230,7 +230,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/23's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000*1000*1000\` are easy to misread and difficult to @@ -240,7 +240,7 @@ comprehend. Rewrite the literal \`1000*1000*1000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000*1000*1000", }, }, @@ -251,7 +251,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/24's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -271,7 +271,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -280,7 +280,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/26's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -302,7 +302,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1000 * (10 ** 9)", }, @@ -322,7 +322,7 @@ They are functionally equivalent, but \`valueOf\` is marked as follows: > This method is usually called internally by JavaScript and not explicitly in > code.", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -331,7 +331,7 @@ They are functionally equivalent, but \`valueOf\` is marked as follows: exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/27's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -353,7 +353,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "(10 ** 9) * 1000", }, @@ -371,7 +371,7 @@ inline? export %{method.signature} \`\`\`", "type": "informative", - "variables": Object { + "variables": { "method.signature": "const gigasecond = date => ...", }, }, @@ -382,7 +382,7 @@ export %{method.signature} exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/31's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -404,7 +404,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1E12", }, @@ -416,14 +416,14 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/34's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/38's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -445,7 +445,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10 ** 12", }, @@ -457,7 +457,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/40's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -479,7 +479,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e9 * 1e3", }, @@ -491,7 +491,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/45's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -513,7 +513,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10**12", }, @@ -525,7 +525,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/46's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.prefer_const_over_let_and_var", "message": "Instead of \`var GIGASECOND\`, consider using \`const\`. @@ -537,7 +537,7 @@ true for this top-level constant. (Not to be confused with _immutable values_)." \`const\` is a signal that the identifier won't be reassigned, which SHOULD be true for this top-level constant. (Not to be confused with _immutable values_).", "type": "informative", - "variables": Object { + "variables": { "kind": "var", "name": "GIGASECOND", }, @@ -549,7 +549,7 @@ true for this top-level constant. (Not to be confused with _immutable values_)." exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/50's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -571,7 +571,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 12)", }, @@ -583,7 +583,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/101's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -605,7 +605,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10 ** 12", }, @@ -617,7 +617,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/103's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -639,7 +639,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 12)", }, @@ -651,7 +651,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/106's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -661,7 +661,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -672,7 +672,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/107's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -682,7 +682,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -693,7 +693,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/109's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -703,7 +703,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -714,7 +714,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/110's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -736,7 +736,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10,12)", }, @@ -748,7 +748,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/111's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.dont_use_date_value", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -764,7 +764,7 @@ They are functionally equivalent, but \`valueOf\` is marked as follows: > This method is usually called internally by JavaScript and not explicitly in > code.", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -773,13 +773,13 @@ They are functionally equivalent, but \`valueOf\` is marked as follows: exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/113's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_method", "message": "No function called \`gigasecond\`. The tests won't pass without it.", "template": "No function called \`%{method.name}\`. The tests won't pass without it.", "type": "essential", - "variables": Object { + "variables": { "method.name": "gigasecond", }, }, @@ -790,7 +790,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/114's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -800,7 +800,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -811,7 +811,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/115's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -821,7 +821,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -832,7 +832,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/118's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000 * 1000\` are easy to misread and difficult to @@ -842,7 +842,7 @@ comprehend. Rewrite the literal \`1000000000 * 1000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000 * 1000", }, }, @@ -853,13 +853,13 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/119's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_method", "message": "No function called \`gigasecond\`. The tests won't pass without it.", "template": "No function called \`%{method.name}\`. The tests won't pass without it.", "type": "essential", - "variables": Object { + "variables": { "method.name": "gigasecond", }, }, @@ -870,7 +870,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/120's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -892,7 +892,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e12", }, @@ -904,7 +904,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/122's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -914,7 +914,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -925,7 +925,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/123's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -947,7 +947,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10,12)", }, @@ -965,7 +965,7 @@ inline? export %{method.signature} \`\`\`", "type": "informative", - "variables": Object { + "variables": { "method.signature": "let gigasecond = (date) => ...", }, }, @@ -976,7 +976,7 @@ export %{method.signature} exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/125's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -998,7 +998,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10,12)", }, @@ -1010,7 +1010,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/127's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -1032,7 +1032,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 9) * 1000", }, @@ -1046,7 +1046,7 @@ work with strings only, and not _intended_ to be used like this.", as \`Date.parse(%{parameter.name})\` is not a good candidate. It's supposed to work with strings only, and not _intended_ to be used like this.", "type": "essential", - "variables": Object { + "variables": { "parameter.name": "date", }, }, @@ -1057,7 +1057,7 @@ work with strings only, and not _intended_ to be used like this.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/128's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -1067,7 +1067,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -1078,7 +1078,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/130's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_extracted_top_level_constant", "message": "Instead of defining the constant _inside_ the function, consider extracting it @@ -1100,7 +1100,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGA_SECOND", "value": "1000 * Math.pow(10, 9)", }, @@ -1112,7 +1112,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/133's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -1132,7 +1132,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1141,7 +1141,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/134's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -1163,7 +1163,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "(10 ** 9) * 1000", }, @@ -1177,7 +1177,7 @@ work with strings only, and not _intended_ to be used like this.", as \`Date.parse(%{parameter.name})\` is not a good candidate. It's supposed to work with strings only, and not _intended_ to be used like this.", "type": "essential", - "variables": Object { + "variables": { "parameter.name": "time", }, }, @@ -1188,7 +1188,7 @@ work with strings only, and not _intended_ to be used like this.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/135's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -1198,7 +1198,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -1209,7 +1209,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/136's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -1229,7 +1229,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1238,7 +1238,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/137's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -1260,7 +1260,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1000 * Math.pow(10, 9)", }, @@ -1272,7 +1272,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/138's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -1294,7 +1294,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e12", }, @@ -1306,7 +1306,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/142's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -1328,7 +1328,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 12)", }, @@ -1348,7 +1348,7 @@ They are functionally equivalent, but \`valueOf\` is marked as follows: > This method is usually called internally by JavaScript and not explicitly in > code.", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1357,7 +1357,7 @@ They are functionally equivalent, but \`valueOf\` is marked as follows: exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/144's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -1367,7 +1367,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -1378,7 +1378,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/145's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -1398,7 +1398,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1407,13 +1407,13 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/148's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_method", "message": "No function called \`gigasecond\`. The tests won't pass without it.", "template": "No function called \`%{method.name}\`. The tests won't pass without it.", "type": "essential", - "variables": Object { + "variables": { "method.name": "gigasecond", }, }, @@ -1424,7 +1424,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/149's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -1434,7 +1434,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -1445,7 +1445,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/150's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -1467,7 +1467,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10 ** 9 * 1000", }, @@ -1479,7 +1479,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/151's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.dont_use_date_value", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -1495,7 +1495,7 @@ They are functionally equivalent, but \`valueOf\` is marked as follows: > This method is usually called internally by JavaScript and not explicitly in > code.", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1504,7 +1504,7 @@ They are functionally equivalent, but \`valueOf\` is marked as follows: exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/152's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000 * 1000\` are easy to misread and difficult to @@ -1514,7 +1514,7 @@ comprehend. Rewrite the literal \`1000000000 * 1000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000 * 1000", }, }, @@ -1525,7 +1525,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/153's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -1547,7 +1547,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10**12", }, @@ -1559,7 +1559,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/154's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -1569,7 +1569,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -1580,7 +1580,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/157's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -1590,7 +1590,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -1601,7 +1601,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/158's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_named_export", "message": "No [export](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export) @@ -1621,7 +1621,7 @@ Make sure \`%{export.name}\` exists and add \`export\` in front of it: export \`%{export.name}\` \`\`\`", "type": "essential", - "variables": Object { + "variables": { "export.name": "gigasecond", }, }, @@ -1632,7 +1632,7 @@ export \`%{export.name}\` exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/160's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -1654,7 +1654,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10,12)", }, @@ -1666,7 +1666,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/161's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -1688,7 +1688,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 12)", }, @@ -1700,7 +1700,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/162's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -1722,7 +1722,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e9 * 1e3", }, @@ -1734,7 +1734,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/163's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -1756,7 +1756,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e9 * 1e3", }, @@ -1768,7 +1768,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/164's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -1778,7 +1778,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -1789,7 +1789,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/165's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -1799,7 +1799,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -1810,7 +1810,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/167's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -1830,7 +1830,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1839,7 +1839,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/168's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000 * 1000000000\` are easy to misread and difficult to @@ -1849,7 +1849,7 @@ comprehend. Rewrite the literal \`1000 * 1000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000 * 1000000000", }, }, @@ -1860,7 +1860,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/170's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -1880,7 +1880,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1889,7 +1889,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/173's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -1899,7 +1899,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -1910,7 +1910,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/174's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`gSec = 1000 * 1000000000\` are easy to misread and difficult to @@ -1920,7 +1920,7 @@ comprehend. Rewrite the literal \`gSec = 1000 * 1000000000\` using \`Math.pow\` comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "gSec = 1000 * 1000000000", }, }, @@ -1931,7 +1931,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/175's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -1941,7 +1941,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -1952,7 +1952,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/176's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -1972,7 +1972,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1981,7 +1981,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/179's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -2003,7 +2003,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 12)", }, @@ -2015,7 +2015,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/180's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -2025,7 +2025,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -2036,7 +2036,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/181's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -2046,7 +2046,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -2057,7 +2057,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/182's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -2067,7 +2067,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -2078,7 +2078,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/183's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_parameter", "message": "Your function \`gigasecond\` does not have a parameter. @@ -2086,7 +2086,7 @@ The tests won't pass without it.", "template": "Your function \`%{function.name}\` does not have a parameter. The tests won't pass without it.", "type": "essential", - "variables": Object { + "variables": { "function.name": "gigasecond", }, }, @@ -2097,7 +2097,7 @@ The tests won't pass without it.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/185's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -2117,7 +2117,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2126,7 +2126,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/190's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -2136,7 +2136,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -2147,7 +2147,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/192's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.dont_use_date_value", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -2163,7 +2163,7 @@ They are functionally equivalent, but \`valueOf\` is marked as follows: > This method is usually called internally by JavaScript and not explicitly in > code.", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2172,7 +2172,7 @@ They are functionally equivalent, but \`valueOf\` is marked as follows: exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/193's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -2194,7 +2194,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e9 * 1e3", }, @@ -2206,13 +2206,13 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/194's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_method", "message": "No function called \`gigasecond\`. The tests won't pass without it.", "template": "No function called \`%{method.name}\`. The tests won't pass without it.", "type": "essential", - "variables": Object { + "variables": { "method.name": "gigasecond", }, }, @@ -2223,7 +2223,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/195's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_extracted_top_level_constant", "message": "Instead of defining the constant _inside_ the function, consider extracting it @@ -2245,7 +2245,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "gigasecondsInJs", "value": "(10 ** 9) * 1000", }, @@ -2257,7 +2257,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/196's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -2267,7 +2267,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -2278,7 +2278,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/197's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -2298,7 +2298,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2307,7 +2307,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/198's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -2317,7 +2317,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -2328,7 +2328,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/199's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -2338,7 +2338,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -2349,7 +2349,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/201's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -2371,7 +2371,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10**12", }, @@ -2391,7 +2391,7 @@ They are functionally equivalent, but \`valueOf\` is marked as follows: > This method is usually called internally by JavaScript and not explicitly in > code.", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2400,7 +2400,7 @@ They are functionally equivalent, but \`valueOf\` is marked as follows: exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/202's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -2410,7 +2410,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -2421,7 +2421,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/203's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.dont_use_get_seconds", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -2435,7 +2435,7 @@ the \`seconds\` component of the \`Date\`. In general, [Unix/UTC time](https://e is preferred when dealing with dates, as it is not affected by _interpretation_ or locale (such as timezones).", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2444,7 +2444,7 @@ or locale (such as timezones).", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/204's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -2464,7 +2464,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2473,7 +2473,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/206's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -2495,7 +2495,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10**12", }, @@ -2507,7 +2507,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/207's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -2517,7 +2517,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -2528,7 +2528,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/208's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -2548,7 +2548,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2557,13 +2557,13 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/214's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_method", "message": "No function called \`gigasecond\`. The tests won't pass without it.", "template": "No function called \`%{method.name}\`. The tests won't pass without it.", "type": "essential", - "variables": Object { + "variables": { "method.name": "gigasecond", }, }, @@ -2574,7 +2574,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/218's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -2594,7 +2594,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2603,7 +2603,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/219's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -2613,7 +2613,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -2624,7 +2624,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/220's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -2646,7 +2646,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 9) * 1000", }, @@ -2658,7 +2658,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/224's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -2680,7 +2680,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e12", }, @@ -2700,7 +2700,7 @@ They are functionally equivalent, but \`valueOf\` is marked as follows: > This method is usually called internally by JavaScript and not explicitly in > code.", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2709,7 +2709,7 @@ They are functionally equivalent, but \`valueOf\` is marked as follows: exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/225's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -2729,7 +2729,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2738,7 +2738,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/227's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -2748,7 +2748,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -2759,7 +2759,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/228's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -2779,7 +2779,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2788,7 +2788,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/229's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -2810,7 +2810,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10,12)", }, @@ -2822,7 +2822,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/230's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -2844,7 +2844,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10 ** 12", }, @@ -2864,7 +2864,7 @@ They are functionally equivalent, but \`valueOf\` is marked as follows: > This method is usually called internally by JavaScript and not explicitly in > code.", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2873,7 +2873,7 @@ They are functionally equivalent, but \`valueOf\` is marked as follows: exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/233's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -2895,7 +2895,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e12", }, @@ -2907,7 +2907,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/234's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -2929,7 +2929,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 12)", }, @@ -2941,7 +2941,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/235's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -2961,7 +2961,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2970,7 +2970,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/236's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -2980,7 +2980,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -2991,7 +2991,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/237's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -3001,7 +3001,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -3012,7 +3012,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/239's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.dont_use_get_seconds", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -3026,7 +3026,7 @@ the \`seconds\` component of the \`Date\`. In general, [Unix/UTC time](https://e is preferred when dealing with dates, as it is not affected by _interpretation_ or locale (such as timezones).", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3035,7 +3035,7 @@ or locale (such as timezones).", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/241's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.dont_use_get_seconds", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -3049,7 +3049,7 @@ the \`seconds\` component of the \`Date\`. In general, [Unix/UTC time](https://e is preferred when dealing with dates, as it is not affected by _interpretation_ or locale (such as timezones).", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3058,7 +3058,7 @@ or locale (such as timezones).", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/242's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -3080,7 +3080,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 9) * 1000", }, @@ -3092,7 +3092,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/245's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000*1000\` are easy to misread and difficult to @@ -3102,7 +3102,7 @@ comprehend. Rewrite the literal \`1000000000*1000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000*1000", }, }, @@ -3113,7 +3113,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/250's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -3135,7 +3135,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 12)", }, @@ -3153,7 +3153,7 @@ inline? export %{method.signature} \`\`\`", "type": "informative", - "variables": Object { + "variables": { "method.signature": "function gigasecond(bornDate) ...", }, }, @@ -3164,7 +3164,7 @@ export %{method.signature} exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/252's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -3184,7 +3184,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3193,7 +3193,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/253's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -3215,7 +3215,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10 ** 12", }, @@ -3227,7 +3227,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/254's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -3249,7 +3249,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 12)", }, @@ -3263,7 +3263,7 @@ work with strings only, and not _intended_ to be used like this.", as \`Date.parse(%{parameter.name})\` is not a good candidate. It's supposed to work with strings only, and not _intended_ to be used like this.", "type": "essential", - "variables": Object { + "variables": { "parameter.name": "date", }, }, @@ -3274,7 +3274,7 @@ work with strings only, and not _intended_ to be used like this.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/258's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000 * 1000\` are easy to misread and difficult to @@ -3284,7 +3284,7 @@ comprehend. Rewrite the literal \`1000000000 * 1000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000 * 1000", }, }, @@ -3295,7 +3295,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/259's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000 * 1000\` are easy to misread and difficult to @@ -3305,7 +3305,7 @@ comprehend. Rewrite the literal \`1000000000 * 1000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000 * 1000", }, }, @@ -3316,7 +3316,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/260's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -3326,7 +3326,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -3337,13 +3337,13 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/261's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_method", "message": "No function called \`gigasecond\`. The tests won't pass without it.", "template": "No function called \`%{method.name}\`. The tests won't pass without it.", "type": "essential", - "variables": Object { + "variables": { "method.name": "gigasecond", }, }, @@ -3354,7 +3354,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/264's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -3376,7 +3376,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e12", }, @@ -3388,7 +3388,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/265's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -3408,7 +3408,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3417,7 +3417,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/266's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000 * 1000\` are easy to misread and difficult to @@ -3427,7 +3427,7 @@ comprehend. Rewrite the literal \`1000000000 * 1000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000 * 1000", }, }, @@ -3438,7 +3438,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/267's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -3448,7 +3448,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -3459,7 +3459,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/268's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -3469,7 +3469,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -3480,7 +3480,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/269's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -3502,7 +3502,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 12)", }, @@ -3516,7 +3516,7 @@ work with strings only, and not _intended_ to be used like this.", as \`Date.parse(%{parameter.name})\` is not a good candidate. It's supposed to work with strings only, and not _intended_ to be used like this.", "type": "essential", - "variables": Object { + "variables": { "parameter.name": "birthdate", }, }, @@ -3527,13 +3527,13 @@ work with strings only, and not _intended_ to be used like this.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/270's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_method", "message": "No function called \`gigasecond\`. The tests won't pass without it.", "template": "No function called \`%{method.name}\`. The tests won't pass without it.", "type": "essential", - "variables": Object { + "variables": { "method.name": "gigasecond", }, }, @@ -3544,7 +3544,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/271's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.dont_use_get_seconds", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -3558,7 +3558,7 @@ the \`seconds\` component of the \`Date\`. In general, [Unix/UTC time](https://e is preferred when dealing with dates, as it is not affected by _interpretation_ or locale (such as timezones).", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3567,7 +3567,7 @@ or locale (such as timezones).", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/272's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -3587,7 +3587,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3596,7 +3596,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/273's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -3606,7 +3606,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -3617,7 +3617,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/274's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -3639,7 +3639,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "(10**9)*1000", }, @@ -3651,7 +3651,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/277's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_named_export", "message": "No [export](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export) @@ -3671,7 +3671,7 @@ Make sure \`%{export.name}\` exists and add \`export\` in front of it: export \`%{export.name}\` \`\`\`", "type": "essential", - "variables": Object { + "variables": { "export.name": "gigasecond", }, }, @@ -3682,13 +3682,13 @@ export \`%{export.name}\` exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/278's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_method", "message": "No function called \`gigasecond\`. The tests won't pass without it.", "template": "No function called \`%{method.name}\`. The tests won't pass without it.", "type": "essential", - "variables": Object { + "variables": { "method.name": "gigasecond", }, }, @@ -3699,7 +3699,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/279's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.dont_use_date_parse", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime), @@ -3709,7 +3709,7 @@ work with strings only, and not _intended_ to be used like this.", as \`Date.parse(%{parameter.name})\` is not a good candidate. It's supposed to work with strings only, and not _intended_ to be used like this.", "type": "essential", - "variables": Object { + "variables": { "parameter.name": "utcDate", }, }, @@ -3720,7 +3720,7 @@ work with strings only, and not _intended_ to be used like this.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/280's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -3740,7 +3740,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3749,7 +3749,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/281's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_number_comprehension", "message": "Large numbers like \`1000000000000\` are easy to misread and difficult to @@ -3759,7 +3759,7 @@ comprehend. Rewrite the literal \`1000000000000\` using \`Math.pow\` or comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or \`10 ** n\` to make it more readable and lower the cognitive complexity.", "type": "actionable", - "variables": Object { + "variables": { "literal": "1000000000000", }, }, @@ -3770,7 +3770,7 @@ comprehend. Rewrite the literal \`%{literal}\` using \`Math.pow\` or exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/283's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -3790,7 +3790,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3799,7 +3799,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/284's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -3821,7 +3821,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 12)", }, @@ -3833,7 +3833,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/285's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -3855,7 +3855,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "(10 ** 9) * 1000", }, @@ -3867,7 +3867,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/286's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_extracted_top_level_constant", "message": "Instead of defining the constant _inside_ the function, consider extracting it @@ -3889,7 +3889,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "gs", "value": "Math.pow(10, 12)", }, @@ -3903,7 +3903,7 @@ work with strings only, and not _intended_ to be used like this.", as \`Date.parse(%{parameter.name})\` is not a good candidate. It's supposed to work with strings only, and not _intended_ to be used like this.", "type": "essential", - "variables": Object { + "variables": { "parameter.name": "input", }, }, @@ -3914,7 +3914,7 @@ work with strings only, and not _intended_ to be used like this.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/288's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_side_effect_free_date", "message": "Use [\`Date#getTime\`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTime) @@ -3934,7 +3934,7 @@ also means that there are no unintended side-effects. Futhermore, \`setSeconds\` only works because it _rolls over_, but it wasn't meant to be used like this. Its function is to set the \`seconds\` component of a \`Date\`.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3943,7 +3943,7 @@ Its function is to set the \`seconds\` component of a \`Date\`.", exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/290's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -3965,7 +3965,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10**12", }, @@ -3977,7 +3977,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/291's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -3999,7 +3999,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "(10 ** 9) * 1000", }, @@ -4011,7 +4011,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/297's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4033,7 +4033,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "(10 ** 9) * 1000", }, @@ -4045,7 +4045,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/307's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4067,7 +4067,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e12", }, @@ -4079,7 +4079,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/311's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4101,7 +4101,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10,12)", }, @@ -4113,7 +4113,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/345's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4135,7 +4135,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10**12", }, @@ -4147,7 +4147,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/352's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4169,7 +4169,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e9 * 1000", }, @@ -4187,7 +4187,7 @@ inline? export %{method.signature} \`\`\`", "type": "informative", - "variables": Object { + "variables": { "method.signature": "const gigasecond = birth => ...", }, }, @@ -4198,7 +4198,7 @@ export %{method.signature} exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/353's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4220,7 +4220,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10 ** 9 * 1000", }, @@ -4232,7 +4232,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/374's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4254,7 +4254,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 9) * 1000", }, @@ -4266,7 +4266,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/375's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4288,7 +4288,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "(10 ** 9) * 1000", }, @@ -4300,14 +4300,14 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/377's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/392's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4329,7 +4329,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1E12", }, @@ -4341,7 +4341,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/394's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4363,7 +4363,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10 ** 9 * 1000", }, @@ -4375,7 +4375,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/398's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4397,7 +4397,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e12", }, @@ -4409,7 +4409,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/404's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4431,7 +4431,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10 ** 12", }, @@ -4443,7 +4443,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/410's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4465,7 +4465,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e12", }, @@ -4477,7 +4477,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/414's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4499,7 +4499,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 12)", }, @@ -4511,7 +4511,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/421's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4533,7 +4533,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e12", }, @@ -4545,7 +4545,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/425's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4567,7 +4567,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10,9)*1000", }, @@ -4579,7 +4579,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/428's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4601,7 +4601,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10,12)", }, @@ -4613,7 +4613,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/429's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4635,7 +4635,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10,12)", }, @@ -4647,7 +4647,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/433's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4669,7 +4669,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e12", }, @@ -4681,7 +4681,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/434's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4703,7 +4703,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10 ** 12", }, @@ -4715,14 +4715,14 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/448's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/450's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4744,7 +4744,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10 ** 12", }, @@ -4756,7 +4756,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/454's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4778,7 +4778,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 12)", }, @@ -4790,14 +4790,14 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/462's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/463's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4819,7 +4819,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 12)", }, @@ -4831,7 +4831,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/464's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4853,7 +4853,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10 ** 12", }, @@ -4865,7 +4865,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/465's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4887,7 +4887,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10**12", }, @@ -4899,7 +4899,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/468's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4921,7 +4921,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 12)", }, @@ -4933,7 +4933,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/470's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4955,7 +4955,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10 ** 12", }, @@ -4967,7 +4967,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/471's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -4989,7 +4989,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "10**9 * 1000", }, @@ -5001,7 +5001,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/474's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -5023,7 +5023,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1000 * 10 ** 9", }, @@ -5041,7 +5041,7 @@ inline? export %{method.signature} \`\`\`", "type": "informative", - "variables": Object { + "variables": { "method.signature": "const gigasecond = (birthdate) => ...", }, }, @@ -5052,7 +5052,7 @@ export %{method.signature} exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/475's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -5074,7 +5074,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e12", }, @@ -5086,7 +5086,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/476's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -5108,7 +5108,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e9 * 1000", }, @@ -5120,7 +5120,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/483's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -5142,7 +5142,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 12)", }, @@ -5154,7 +5154,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/487's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -5176,7 +5176,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e12", }, @@ -5188,7 +5188,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/490's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -5210,7 +5210,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "1e12", }, @@ -5222,7 +5222,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/491's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_extracted_top_level_constant", "message": "Instead of defining the constant _inside_ the function, consider extracting it @@ -5244,7 +5244,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "billionSeconds", "value": "10**12", }, @@ -5256,7 +5256,7 @@ export const gigasecond = (...) exports[`When running analysis on gigasecond fixtures and expecting matches gigasecond/499's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.gigasecond.prefer_top_level_constant", "message": "Your solution current has a magic number, or rather a magic expression. Consider @@ -5278,7 +5278,7 @@ const %{name} = %{value} export const gigasecond = (...) \`\`\`", "type": "actionable", - "variables": Object { + "variables": { "name": "GIGASECOND_IN_MS", "value": "Math.pow(10, 9)*1000", }, diff --git a/test/analyzers/gigasecond/smoke.ts b/test/analyzers/gigasecond/smoke.ts index 0752c71d..57142782 100644 --- a/test/analyzers/gigasecond/smoke.ts +++ b/test/analyzers/gigasecond/smoke.ts @@ -1,5 +1,6 @@ -import { GigasecondAnalyzer } from '~src/analyzers/practice/gigasecond' -import { makeAnalyze } from '~test/helpers/smoke' +import { describe, it, expect } from '@jest/globals' +import { GigasecondAnalyzer } from '~src/analyzers/practice/gigasecond/index.js' +import { makeAnalyze } from '~test/helpers/smoke.js' const analyze = makeAnalyze(() => new GigasecondAnalyzer()) diff --git a/test/analyzers/gigasecond/snapshot.ts b/test/analyzers/gigasecond/snapshot.ts index 7b519bac..ea18a5d3 100644 --- a/test/analyzers/gigasecond/snapshot.ts +++ b/test/analyzers/gigasecond/snapshot.ts @@ -1,5 +1,6 @@ -import { GigasecondAnalyzer } from '~src/analyzers/practice/gigasecond' -import { makeTestGenerator } from '~test/helpers/snapshot' +import { describe } from '@jest/globals' +import { GigasecondAnalyzer } from '~src/analyzers/practice/gigasecond/index.js' +import { makeTestGenerator } from '~test/helpers/snapshot.js' const snapshotTestsGenerator = makeTestGenerator( 'gigasecond', diff --git a/test/analyzers/lasagna/exemplar.ts b/test/analyzers/lasagna/exemplar.ts index 553b6503..5f9cc075 100644 --- a/test/analyzers/lasagna/exemplar.ts +++ b/test/analyzers/lasagna/exemplar.ts @@ -1,8 +1,12 @@ +import { describe, it, expect } from '@jest/globals' import { DirectoryWithConfigInput } from '@exercism/static-analysis' -import path from 'path' -import { LasagnaAnalyzer } from '~src/analyzers/concept/lasagna' -import { EXEMPLAR_SOLUTION } from '~src/comments/shared' -import { makeAnalyze, makeOptions } from '~test/helpers/smoke' +import path from 'node:path' +import { LasagnaAnalyzer } from '~src/analyzers/concept/lasagna/index.js' +import { EXEMPLAR_SOLUTION } from '~src/comments/shared.js' +import { makeAnalyze, makeOptions } from '~test/helpers/smoke.js' + +// eslint-disable-next-line @typescript-eslint/naming-convention +const __dirname = import.meta.dirname const inputDir = path.join( __dirname, @@ -26,7 +30,7 @@ const analyze = makeAnalyze( ) describe('When running analysis on lasagna', () => { - it('recognises the exemplar solution', async () => { + it('recognizes the exemplar solution', async () => { const input = new DirectoryWithConfigInput(inputDir) const [solution] = await input.read() diff --git a/test/analyzers/lasagna/not-using-constant.ts b/test/analyzers/lasagna/not-using-constant.ts index b591e000..76456a9f 100644 --- a/test/analyzers/lasagna/not-using-constant.ts +++ b/test/analyzers/lasagna/not-using-constant.ts @@ -1,11 +1,12 @@ +import { describe, it, expect } from '@jest/globals' import { DirectoryWithConfigInput } from '@exercism/static-analysis' -import path from 'path' -import { LasagnaAnalyzer } from '~src/analyzers/concept/lasagna' -import { - EXEMPLAR_SOLUTION, - REPLACE_MAGIC_WITH_IDENTIFIER, -} from '~src/comments/shared' -import { makeAnalyze, makeOptions } from '~test/helpers/smoke' +import path from 'node:path' +import { LasagnaAnalyzer } from '~src/analyzers/concept/lasagna/index.js' +import { REPLACE_MAGIC_WITH_IDENTIFIER } from '~src/comments/shared.js' +import { makeAnalyze, makeOptions } from '~test/helpers/smoke.js' + +// eslint-disable-next-line @typescript-eslint/naming-convention +const __dirname = import.meta.dirname const inputDir = path.join( __dirname, @@ -28,22 +29,19 @@ const analyze = makeAnalyze( }) ) -describe( - ['When analyzing fixtures', 'lasagna', 'not-using-constant'].join('/'), - () => { - it('recognises not using the predefined constant', async () => { - const input = new DirectoryWithConfigInput(inputDir) +describe('When analyzing fixtures/lasagna/not-using-constant', () => { + it('recognizes not using the predefined constant', async () => { + const input = new DirectoryWithConfigInput(inputDir) - const [solution] = await input.read() - const output = await analyze(solution) + const [solution] = await input.read() + const output = await analyze(solution) - expect(output.comments.length).toBeGreaterThanOrEqual(1) - const comment = output.comments.find( - (comment) => - comment.externalTemplate === - REPLACE_MAGIC_WITH_IDENTIFIER().externalTemplate - ) - expect(comment).not.toBeUndefined() - }) - } -) + expect(output.comments.length).toBeGreaterThanOrEqual(1) + const comment = output.comments.find( + (comment) => + comment.externalTemplate === + REPLACE_MAGIC_WITH_IDENTIFIER().externalTemplate + ) + expect(comment).not.toBeUndefined() + }) +}) diff --git a/test/analyzers/lasagna/not-using-earlier-function.ts b/test/analyzers/lasagna/not-using-earlier-function.ts index e96d7463..5dcbb085 100644 --- a/test/analyzers/lasagna/not-using-earlier-function.ts +++ b/test/analyzers/lasagna/not-using-earlier-function.ts @@ -1,14 +1,14 @@ +import { describe, it, expect } from '@jest/globals' import { DirectoryWithConfigInput } from '@exercism/static-analysis' -import path from 'path' +import path from 'node:path' import { LasagnaAnalyzer, MUST_CALL_PREPARATION_TIME_IN_MINUTES, -} from '~src/analyzers/concept/lasagna' -import { - EXEMPLAR_SOLUTION, - REPLACE_MAGIC_WITH_IDENTIFIER, -} from '~src/comments/shared' -import { makeAnalyze, makeOptions } from '~test/helpers/smoke' +} from '~src/analyzers/concept/lasagna/index.js' +import { makeAnalyze, makeOptions } from '~test/helpers/smoke.js' + +// eslint-disable-next-line @typescript-eslint/naming-convention +const __dirname = import.meta.dirname const inputDir = path.join( __dirname, @@ -31,24 +31,19 @@ const analyze = makeAnalyze( }) ) -describe( - ['When analyzing fixtures', 'lasagna', 'not-using-earlier-function'].join( - '/' - ), - () => { - it('recognises not using the earlier function', async () => { - const input = new DirectoryWithConfigInput(inputDir) +describe('When analyzing fixtures/lasagna/not-using-earlier-function', () => { + it('recognizes not using the earlier function', async () => { + const input = new DirectoryWithConfigInput(inputDir) - const [solution] = await input.read() - const output = await analyze(solution) + const [solution] = await input.read() + const output = await analyze(solution) - expect(output.comments.length).toBeGreaterThanOrEqual(1) - const comment = output.comments.find( - (comment) => - comment.externalTemplate === - MUST_CALL_PREPARATION_TIME_IN_MINUTES().externalTemplate - ) - expect(comment).not.toBeUndefined() - }) - } -) + expect(output.comments.length).toBeGreaterThanOrEqual(1) + const comment = output.comments.find( + (comment) => + comment.externalTemplate === + MUST_CALL_PREPARATION_TIME_IN_MINUTES().externalTemplate + ) + expect(comment).not.toBeUndefined() + }) +}) diff --git a/test/analyzers/poetry-club-door-analyzer/exemplar.ts b/test/analyzers/poetry-club-door-analyzer/exemplar.ts index d318fdb9..63741ace 100644 --- a/test/analyzers/poetry-club-door-analyzer/exemplar.ts +++ b/test/analyzers/poetry-club-door-analyzer/exemplar.ts @@ -1,8 +1,12 @@ +import { describe, it, expect } from '@jest/globals' import { DirectoryWithConfigInput } from '@exercism/static-analysis' -import path from 'path' -import { PoetryClubDoorPolicyAnalyzer } from '~src/analyzers/concept/poetry-club-door-policy' -import { EXEMPLAR_SOLUTION } from '~src/comments/shared' -import { makeAnalyze, makeOptions } from '~test/helpers/smoke' +import path from 'node:path' +import { PoetryClubDoorPolicyAnalyzer } from '~src/analyzers/concept/poetry-club-door-policy/index.js' +import { EXEMPLAR_SOLUTION } from '~src/comments/shared.js' +import { makeAnalyze, makeOptions } from '~test/helpers/smoke.js' + +// eslint-disable-next-line @typescript-eslint/naming-convention +const __dirname = import.meta.dirname const inputDir = path.join( __dirname, @@ -26,7 +30,7 @@ const analyze = makeAnalyze( ) describe('When running analysis on poetry-club-door-policy', () => { - it('recognises the exemplar solution', async () => { + it('recognizes the exemplar solution', async () => { const input = new DirectoryWithConfigInput(inputDir) const [solution] = await input.read() diff --git a/test/analyzers/resistor-color-duo/__snapshots__/snapshot.ts.snap b/test/analyzers/resistor-color-duo/__snapshots__/snapshot.ts.snap index e481a05c..bb2799e0 100644 --- a/test/analyzers/resistor-color-duo/__snapshots__/snapshot.ts.snap +++ b/test/analyzers/resistor-color-duo/__snapshots__/snapshot.ts.snap @@ -2,7 +2,7 @@ exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/0's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.destructuring_in_parameter", "message": "You can destructure an array directly in the parameter \`colors\`. @@ -12,7 +12,7 @@ in and replace the more cryptic numeric indexers with the named items.", This allows you to give a name to the items inside, limit how many values come in and replace the more cryptic numeric indexers with the named items.", "type": "informative", - "variables": Object { + "variables": { "parameter": "colors", }, }, @@ -23,7 +23,7 @@ in and replace the more cryptic numeric indexers with the named items.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/1's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_add_missing_call", "message": "📕 In order to limit the number of colors processed to two, expected a \`.slice(0, 2)\` call. If @@ -31,7 +31,7 @@ that reasoning applies, mentor the student to add this call.", "template": "📕 In order to %{expected.reason}, expected a \`%{method.name}\` call. If that reasoning applies, mentor the student to add this call.", "type": "actionable", - "variables": Object { + "variables": { "expected.reason": "limit the number of colors processed to two", "method.name": ".slice(0, 2)", }, @@ -55,7 +55,7 @@ has not accounted for this, they might need to update their solution. Help them find the button to update. The tests won't pass without limiting the number of colors.", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -64,19 +64,19 @@ colors.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/2's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -85,7 +85,34 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/10's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ + CommentImpl { + "externalTemplate": "javascript.resistor-color-duo.prefer_extracted_top_level_constant", + "message": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const colors = ... + +export function decodedValue(input) ... +\`\`\`", + "template": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const %{name} = %{value} + +export %{method.signature} +\`\`\`", + "type": "actionable", + "variables": { + "method.signature": "function decodedValue(input) ...", + "name": "colors", + "value": "...", + }, + }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -93,7 +120,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -102,13 +129,13 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/11's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`.forEach(...)\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": ".forEach(...)", }, }, @@ -119,7 +146,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -128,7 +155,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/12's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -137,18 +164,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -157,13 +184,13 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/13's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_method", "message": "No function called \`decodedValue\`. The tests won't pass without it.", "template": "No function called \`%{method.name}\`. The tests won't pass without it.", "type": "essential", - "variables": Object { + "variables": { "method.name": "decodedValue", }, }, @@ -174,14 +201,14 @@ IsolatedAnalyzerOutput { exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/15's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/17's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -190,18 +217,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -210,13 +237,13 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/18's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`.forEach(...)\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": ".forEach(...)", }, }, @@ -227,7 +254,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/19's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -236,18 +263,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -256,7 +283,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/20's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -265,18 +292,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -285,7 +312,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/22's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_optimise_helper", "message": "⚡ The helper method \`colorCode\` is not optimal. The helper can @@ -295,7 +322,7 @@ to retrieve their solution and/or optimise their helper.", probably be the same as the solution to \`resistor-color\`. Mentor the student to retrieve their solution and/or optimise their helper.", "type": "actionable", - "variables": Object { + "variables": { "method.name": "colorCode", }, }, @@ -306,7 +333,7 @@ to retrieve their solution and/or optimise their helper.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/23's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_add_missing_call", "message": "📕 In order to limit the number of colors processed to two, expected a \`.slice(0, 2)\` call. If @@ -314,7 +341,7 @@ that reasoning applies, mentor the student to add this call.", "template": "📕 In order to %{expected.reason}, expected a \`%{method.name}\` call. If that reasoning applies, mentor the student to add this call.", "type": "actionable", - "variables": Object { + "variables": { "expected.reason": "limit the number of colors processed to two", "method.name": ".slice(0, 2)", }, @@ -338,7 +365,7 @@ has not accounted for this, they might need to update their solution. Help them find the button to update. The tests won't pass without limiting the number of colors.", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -347,7 +374,7 @@ colors.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/24's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -355,7 +382,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -364,13 +391,13 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/25's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`for(...) { }\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": "for(...) { }", }, }, @@ -381,7 +408,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/26's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -390,18 +417,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -410,7 +437,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/27's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -418,20 +445,20 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -440,13 +467,13 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/30's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`.forEach(...)\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": ".forEach(...)", }, }, @@ -457,7 +484,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/32's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.destructuring_in_parameter", "message": "You can destructure an array directly in the parameter \`colors\`. @@ -467,7 +494,7 @@ in and replace the more cryptic numeric indexers with the named items.", This allows you to give a name to the items inside, limit how many values come in and replace the more cryptic numeric indexers with the named items.", "type": "informative", - "variables": Object { + "variables": { "parameter": "colors", }, }, @@ -478,7 +505,7 @@ in and replace the more cryptic numeric indexers with the named items.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/100's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -486,20 +513,20 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -508,7 +535,7 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/102's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.destructuring_in_parameter", "message": "You can destructure an array directly in the parameter \`colors\`. @@ -518,7 +545,7 @@ in and replace the more cryptic numeric indexers with the named items.", This allows you to give a name to the items inside, limit how many values come in and replace the more cryptic numeric indexers with the named items.", "type": "informative", - "variables": Object { + "variables": { "parameter": "colors", }, }, @@ -529,7 +556,7 @@ in and replace the more cryptic numeric indexers with the named items.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/103's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -538,18 +565,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -558,7 +585,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/104's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -567,18 +594,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -587,7 +614,34 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/105's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ + CommentImpl { + "externalTemplate": "javascript.resistor-color-duo.prefer_extracted_top_level_constant", + "message": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const COLORS = ... + +export const decodedValue = (resistorColors) => ... +\`\`\`", + "template": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const %{name} = %{value} + +export %{method.signature} +\`\`\`", + "type": "actionable", + "variables": { + "method.signature": "const decodedValue = (resistorColors) => ...", + "name": "COLORS", + "value": "...", + }, + }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -595,20 +649,20 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -617,7 +671,7 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/106's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -626,18 +680,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -646,7 +700,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/107's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -654,7 +708,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -663,7 +717,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/108's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -672,18 +726,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -692,7 +746,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/110's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -701,18 +755,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -721,7 +775,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/111's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -730,18 +784,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -750,7 +804,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/112's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -758,20 +812,20 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -780,7 +834,7 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/114's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -788,20 +842,20 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -810,7 +864,7 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/115's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -819,18 +873,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -839,7 +893,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/116's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -848,18 +902,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -868,13 +922,13 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/117's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`.forEach(...)\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": ".forEach(...)", }, }, @@ -885,7 +939,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -894,7 +948,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/118's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -903,18 +957,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -923,7 +977,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/119's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -931,7 +985,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -940,7 +994,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/120's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -949,18 +1003,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -969,7 +1023,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/121's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.destructuring_in_parameter", "message": "You can destructure an array directly in the parameter \`colors\`. @@ -979,7 +1033,7 @@ in and replace the more cryptic numeric indexers with the named items.", This allows you to give a name to the items inside, limit how many values come in and replace the more cryptic numeric indexers with the named items.", "type": "informative", - "variables": Object { + "variables": { "parameter": "colors", }, }, @@ -990,7 +1044,7 @@ in and replace the more cryptic numeric indexers with the named items.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/123's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.signature_not_optimal", "message": "📕 If you look at the tests, the function \`decodedValue\` only receives one @@ -1004,7 +1058,7 @@ parameter. Nothing more and nothing less. 📕 Remove the additional parameters from your function, as their value will always be \`undefined\` or whatever default you've assigned.", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1013,19 +1067,19 @@ always be \`undefined\` or whatever default you've assigned.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/124's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1034,7 +1088,7 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/125's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -1043,18 +1097,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1063,7 +1117,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/126's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -1071,7 +1125,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1080,7 +1134,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/127's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -1088,7 +1142,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.limit_number_of_colors", @@ -1109,7 +1163,7 @@ has not accounted for this, they might need to update their solution. Help them find the button to update. The tests won't pass without limiting the number of colors.", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1118,7 +1172,7 @@ colors.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/128's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.destructuring_in_parameter", "message": "You can destructure an array directly in the parameter \`color\`. @@ -1128,7 +1182,7 @@ in and replace the more cryptic numeric indexers with the named items.", This allows you to give a name to the items inside, limit how many values come in and replace the more cryptic numeric indexers with the named items.", "type": "informative", - "variables": Object { + "variables": { "parameter": "color", }, }, @@ -1139,13 +1193,13 @@ in and replace the more cryptic numeric indexers with the named items.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/130's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`for(...) { }\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": "for(...) { }", }, }, @@ -1156,7 +1210,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/134's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -1165,18 +1219,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1185,27 +1239,63 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/135's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { - "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", - "message": "📕 Mentor the student to add helper function and DRY-up this solution. The -solution to \`resistor-color\` can be used as helper method here. When using an -\`Array\` as colors source, in a years time, will the student recall why it's -the _index_ in that array? When using an \`Object\`, what does the value mean? -Re-using \`colorCode\` explains this in both cases. + "externalTemplate": "javascript.resistor-color-duo.prefer_extracted_top_level_constant", + "message": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", - "template": "📕 Mentor the student to add helper function and DRY-up this solution. The -solution to \`resistor-color\` can be used as helper method here. When using an -\`Array\` as colors source, in a years time, will the student recall why it's -the _index_ in that array? When using an \`Object\`, what does the value mean? -Re-using \`colorCode\` explains this in both cases. +\`\`\`javascript +const COLORS = ... + +export const decodedValue = colorArray => ... +\`\`\`", + "template": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +\`\`\`javascript +const %{name} = %{value} + +export %{method.signature} +\`\`\`", + "type": "actionable", + "variables": { + "method.signature": "const decodedValue = colorArray => ...", + "name": "COLORS", + "value": "...", + }, + }, + CommentImpl { + "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", + "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more +strict than the \`parseXXX\` family and applies in this exercise.", + "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more +strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, + }, + CommentImpl { + "externalTemplate": "javascript.resistor-color-duo.limit_number_of_colors", + "message": "💬 Limit the number of input colors that are processed. If more than two colors +are passed in, only the first two colors should be used to calculate the total +\`colorCode\` value. + +📕 (At least) one test case inputs three colors instead of two. If the student +has not accounted for this, they might need to update their solution. Help them +find the button to update. The tests won't pass without limiting the number of +colors.", + "template": "💬 Limit the number of input colors that are processed. If more than two colors +are passed in, only the first two colors should be used to calculate the total +\`colorCode\` value. + +📕 (At least) one test case inputs three colors instead of two. If the student +has not accounted for this, they might need to update their solution. Help them +find the button to update. The tests won't pass without limiting the number of +colors.", + "type": "essential", + "variables": {}, }, ], "summary": undefined, @@ -1214,7 +1304,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/136's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.signature_not_optimal", "message": "📕 If you look at the tests, the function \`decodedValue\` only receives one @@ -1228,7 +1318,7 @@ parameter. Nothing more and nothing less. 📕 Remove the additional parameters from your function, as their value will always be \`undefined\` or whatever default you've assigned.", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1237,7 +1327,7 @@ always be \`undefined\` or whatever default you've assigned.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/141's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -1245,7 +1335,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1254,7 +1344,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/142's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_parameter", "message": "Your function \`decodedValue\` does not have a parameter. @@ -1262,7 +1352,7 @@ The tests won't pass without it.", "template": "Your function \`%{function.name}\` does not have a parameter. The tests won't pass without it.", "type": "essential", - "variables": Object { + "variables": { "function.name": "decodedValue", }, }, @@ -1273,13 +1363,40 @@ The tests won't pass without it.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/143's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ + CommentImpl { + "externalTemplate": "javascript.resistor-color-duo.prefer_extracted_top_level_constant", + "message": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const CODES = ... + +export const decodedValue = (colors) => ... +\`\`\`", + "template": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const %{name} = %{value} + +export %{method.signature} +\`\`\`", + "type": "actionable", + "variables": { + "method.signature": "const decodedValue = (colors) => ...", + "name": "CODES", + "value": "...", + }, + }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`.forEach(...)\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": ".forEach(...)", }, }, @@ -1290,7 +1407,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1299,7 +1416,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/144's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -1308,18 +1425,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1328,7 +1445,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/145's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.export_inline", "message": "Did you know that you can export functions, classes and constants directly @@ -1342,7 +1459,7 @@ inline? export %{method.signature} \`\`\`", "type": "informative", - "variables": Object { + "variables": { "method.signature": "const decodedValue = colors => ...", }, }, @@ -1355,7 +1472,7 @@ in and replace the more cryptic numeric indexers with the named items.", This allows you to give a name to the items inside, limit how many values come in and replace the more cryptic numeric indexers with the named items.", "type": "informative", - "variables": Object { + "variables": { "parameter": "colors", }, }, @@ -1366,7 +1483,7 @@ in and replace the more cryptic numeric indexers with the named items.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/146's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -1375,18 +1492,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1395,7 +1512,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/147's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.signature_not_optimal", "message": "📕 If you look at the tests, the function \`decodedValue\` only receives one @@ -1409,7 +1526,7 @@ parameter. Nothing more and nothing less. 📕 Remove the additional parameters from your function, as their value will always be \`undefined\` or whatever default you've assigned.", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1418,13 +1535,13 @@ always be \`undefined\` or whatever default you've assigned.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/150's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_method", "message": "No function called \`decodedValue\`. The tests won't pass without it.", "template": "No function called \`%{method.name}\`. The tests won't pass without it.", "type": "essential", - "variables": Object { + "variables": { "method.name": "decodedValue", }, }, @@ -1435,7 +1552,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/152's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -1444,18 +1561,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1464,7 +1581,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/153's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -1473,18 +1590,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1493,7 +1610,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/154's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -1501,20 +1618,20 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1523,7 +1640,7 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/155's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -1531,20 +1648,20 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1553,13 +1670,13 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/156's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`.forEach(...)\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": ".forEach(...)", }, }, @@ -1570,7 +1687,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/159's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -1578,7 +1695,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1587,7 +1704,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/160's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.destructuring_in_parameter", "message": "You can destructure an array directly in the parameter \`resistors\`. @@ -1597,7 +1714,7 @@ in and replace the more cryptic numeric indexers with the named items.", This allows you to give a name to the items inside, limit how many values come in and replace the more cryptic numeric indexers with the named items.", "type": "informative", - "variables": Object { + "variables": { "parameter": "resistors", }, }, @@ -1608,7 +1725,7 @@ in and replace the more cryptic numeric indexers with the named items.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/161's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -1617,18 +1734,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1637,13 +1754,13 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/164's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_method", "message": "No function called \`decodedValue\`. The tests won't pass without it.", "template": "No function called \`%{method.name}\`. The tests won't pass without it.", "type": "essential", - "variables": Object { + "variables": { "method.name": "decodedValue", }, }, @@ -1654,13 +1771,13 @@ IsolatedAnalyzerOutput { exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/165's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`for(...) { }\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": "for(...) { }", }, }, @@ -1671,7 +1788,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1680,7 +1797,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/166's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -1689,18 +1806,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1709,13 +1826,13 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/168's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`.forEach(...)\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": ".forEach(...)", }, }, @@ -1726,7 +1843,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/170's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.destructuring_in_parameter", "message": "You can destructure an array directly in the parameter \`colors\`. @@ -1736,7 +1853,7 @@ in and replace the more cryptic numeric indexers with the named items.", This allows you to give a name to the items inside, limit how many values come in and replace the more cryptic numeric indexers with the named items.", "type": "informative", - "variables": Object { + "variables": { "parameter": "colors", }, }, @@ -1747,7 +1864,7 @@ in and replace the more cryptic numeric indexers with the named items.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/172's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -1755,7 +1872,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1764,7 +1881,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/174's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -1773,18 +1890,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1793,13 +1910,13 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/175's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`.forEach(...)\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": ".forEach(...)", }, }, @@ -1810,7 +1927,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1819,7 +1936,34 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/177's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ + CommentImpl { + "externalTemplate": "javascript.resistor-color-duo.prefer_extracted_top_level_constant", + "message": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const COLORS = ... + +export const decodedValue = (args) => ... +\`\`\`", + "template": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const %{name} = %{value} + +export %{method.signature} +\`\`\`", + "type": "actionable", + "variables": { + "method.signature": "const decodedValue = (args) => ...", + "name": "COLORS", + "value": "...", + }, + }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -1827,20 +1971,20 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1849,19 +1993,19 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/178's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1870,36 +2014,68 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/181's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { - "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", - "message": "📕 Mentor the student to add helper function and DRY-up this solution. The -solution to \`resistor-color\` can be used as helper method here. When using an -\`Array\` as colors source, in a years time, will the student recall why it's -the _index_ in that array? When using an \`Object\`, what does the value mean? -Re-using \`colorCode\` explains this in both cases. + "externalTemplate": "javascript.resistor-color-duo.prefer_extracted_top_level_constant", + "message": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", - "template": "📕 Mentor the student to add helper function and DRY-up this solution. The -solution to \`resistor-color\` can be used as helper method here. When using an -\`Array\` as colors source, in a years time, will the student recall why it's -the _index_ in that array? When using an \`Object\`, what does the value mean? -Re-using \`colorCode\` explains this in both cases. +\`\`\`javascript +const colorMap = ... + +export function decodedValue([first, second]) ... +\`\`\`", + "template": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +\`\`\`javascript +const %{name} = %{value} + +export %{method.signature} +\`\`\`", "type": "actionable", - "variables": Object {}, + "variables": { + "method.signature": "function decodedValue([first, second]) ...", + "name": "colorMap", + "value": "...", + }, }, ], - "summary": undefined, } `; exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/183's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ + CommentImpl { + "externalTemplate": "javascript.resistor-color-duo.prefer_extracted_top_level_constant", + "message": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const colors = ... + +export const decodedValue = ([colorOne, colorTwo]) => ... +\`\`\`", + "template": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const %{name} = %{value} + +export %{method.signature} +\`\`\`", + "type": "actionable", + "variables": { + "method.signature": "const decodedValue = ([colorOne, colorTwo]) => ...", + "name": "colors", + "value": "...", + }, + }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -1907,7 +2083,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1916,7 +2092,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/185's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -1924,7 +2100,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1933,7 +2109,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/186's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -1941,7 +2117,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1950,7 +2126,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/187's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -1959,18 +2135,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -1979,27 +2155,63 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/190's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { - "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", - "message": "📕 Mentor the student to add helper function and DRY-up this solution. The -solution to \`resistor-color\` can be used as helper method here. When using an -\`Array\` as colors source, in a years time, will the student recall why it's -the _index_ in that array? When using an \`Object\`, what does the value mean? -Re-using \`colorCode\` explains this in both cases. + "externalTemplate": "javascript.resistor-color-duo.prefer_extracted_top_level_constant", + "message": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", - "template": "📕 Mentor the student to add helper function and DRY-up this solution. The -solution to \`resistor-color\` can be used as helper method here. When using an -\`Array\` as colors source, in a years time, will the student recall why it's -the _index_ in that array? When using an \`Object\`, what does the value mean? -Re-using \`colorCode\` explains this in both cases. +\`\`\`javascript +const bandColors = ... + +export function decodedValue (colors) ... +\`\`\`", + "template": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const %{name} = %{value} -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +export %{method.signature} +\`\`\`", "type": "actionable", - "variables": Object {}, + "variables": { + "method.signature": "function decodedValue (colors) ...", + "name": "bandColors", + "value": "...", + }, + }, + CommentImpl { + "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", + "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more +strict than the \`parseXXX\` family and applies in this exercise.", + "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more +strict than the \`parseXXX\` family and applies in this exercise.", + "type": "actionable", + "variables": {}, + }, + CommentImpl { + "externalTemplate": "javascript.resistor-color-duo.limit_number_of_colors", + "message": "💬 Limit the number of input colors that are processed. If more than two colors +are passed in, only the first two colors should be used to calculate the total +\`colorCode\` value. + +📕 (At least) one test case inputs three colors instead of two. If the student +has not accounted for this, they might need to update their solution. Help them +find the button to update. The tests won't pass without limiting the number of +colors.", + "template": "💬 Limit the number of input colors that are processed. If more than two colors +are passed in, only the first two colors should be used to calculate the total +\`colorCode\` value. + +📕 (At least) one test case inputs three colors instead of two. If the student +has not accounted for this, they might need to update their solution. Help them +find the button to update. The tests won't pass without limiting the number of +colors.", + "type": "essential", + "variables": {}, }, ], "summary": undefined, @@ -2008,7 +2220,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/191's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -2017,18 +2229,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2037,7 +2249,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/192's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -2045,7 +2257,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2054,7 +2266,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/193's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_optimise_helper", "message": "⚡ The helper method \`colorCode\` is not optimal. The helper can @@ -2064,7 +2276,7 @@ to retrieve their solution and/or optimise their helper.", probably be the same as the solution to \`resistor-color\`. Mentor the student to retrieve their solution and/or optimise their helper.", "type": "actionable", - "variables": Object { + "variables": { "method.name": "colorCode", }, }, @@ -2075,7 +2287,7 @@ to retrieve their solution and/or optimise their helper.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/194's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -2084,18 +2296,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2104,13 +2316,13 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/195's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`for(...) { }\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": "for(...) { }", }, }, @@ -2121,13 +2333,13 @@ IsolatedAnalyzerOutput { exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/197's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`for(...) { }\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": "for(...) { }", }, }, @@ -2138,7 +2350,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2147,7 +2359,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/199's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -2156,18 +2368,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2176,13 +2388,13 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/200's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`for(...) { }\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": "for(...) { }", }, }, @@ -2193,7 +2405,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2202,7 +2414,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/201's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -2210,20 +2422,20 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2232,7 +2444,7 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/202's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -2241,18 +2453,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2261,7 +2473,34 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/203's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ + CommentImpl { + "externalTemplate": "javascript.resistor-color-duo.prefer_extracted_top_level_constant", + "message": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const COLORS = ... + +export function decodedValue([color1, color2]) ... +\`\`\`", + "template": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const %{name} = %{value} + +export %{method.signature} +\`\`\`", + "type": "actionable", + "variables": { + "method.signature": "function decodedValue([color1, color2]) ...", + "name": "COLORS", + "value": "...", + }, + }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -2269,7 +2508,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2278,7 +2517,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/204's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -2286,7 +2525,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2295,13 +2534,40 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/205's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ + CommentImpl { + "externalTemplate": "javascript.resistor-color-duo.prefer_extracted_top_level_constant", + "message": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const COLORS = ... + +export const decodedValue = (arr) => ... +\`\`\`", + "template": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const %{name} = %{value} + +export %{method.signature} +\`\`\`", + "type": "actionable", + "variables": { + "method.signature": "const decodedValue = (arr) => ...", + "name": "COLORS", + "value": "...", + }, + }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`for(...) { }\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": "for(...) { }", }, }, @@ -2312,7 +2578,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/206's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -2320,7 +2586,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2329,13 +2595,13 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/207's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`for(...) { }\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": "for(...) { }", }, }, @@ -2346,7 +2612,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2355,7 +2621,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/208's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -2363,7 +2629,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2372,7 +2638,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/211's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -2380,7 +2646,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2389,19 +2655,19 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/215's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2410,7 +2676,7 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/218's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -2419,18 +2685,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2439,13 +2705,13 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/220's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`for(...) { }\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": "for(...) { }", }, }, @@ -2456,7 +2722,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/221's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -2465,18 +2731,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2485,7 +2751,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/222's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -2494,18 +2760,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2514,7 +2780,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/223's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -2523,18 +2789,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2543,7 +2809,34 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/224's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ + CommentImpl { + "externalTemplate": "javascript.resistor-color-duo.prefer_extracted_top_level_constant", + "message": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const COLORS = ... + +export const decodedValue = colors => ... +\`\`\`", + "template": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const %{name} = %{value} + +export %{method.signature} +\`\`\`", + "type": "actionable", + "variables": { + "method.signature": "const decodedValue = colors => ...", + "name": "COLORS", + "value": "...", + }, + }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -2551,7 +2844,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2560,7 +2853,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/225's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -2568,7 +2861,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2577,7 +2870,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/226's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.signature_not_optimal", "message": "📕 If you look at the tests, the function \`decodedValue\` only receives one @@ -2591,7 +2884,7 @@ parameter. Nothing more and nothing less. 📕 Remove the additional parameters from your function, as their value will always be \`undefined\` or whatever default you've assigned.", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2600,7 +2893,7 @@ always be \`undefined\` or whatever default you've assigned.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/227's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -2609,18 +2902,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2629,7 +2922,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/228's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -2638,18 +2931,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2658,7 +2951,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/229's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.export_inline", "message": "Did you know that you can export functions, classes and constants directly @@ -2672,7 +2965,7 @@ inline? export %{method.signature} \`\`\`", "type": "informative", - "variables": Object { + "variables": { "method.signature": "function decodedValue(bands) ...", }, }, @@ -2685,7 +2978,7 @@ in and replace the more cryptic numeric indexers with the named items.", This allows you to give a name to the items inside, limit how many values come in and replace the more cryptic numeric indexers with the named items.", "type": "informative", - "variables": Object { + "variables": { "parameter": "bands", }, }, @@ -2696,7 +2989,7 @@ in and replace the more cryptic numeric indexers with the named items.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/230's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -2704,7 +2997,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2713,13 +3006,13 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/231's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_method", "message": "No function called \`decodedValue\`. The tests won't pass without it.", "template": "No function called \`%{method.name}\`. The tests won't pass without it.", "type": "essential", - "variables": Object { + "variables": { "method.name": "decodedValue", }, }, @@ -2730,7 +3023,34 @@ IsolatedAnalyzerOutput { exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/235's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ + CommentImpl { + "externalTemplate": "javascript.resistor-color-duo.prefer_extracted_top_level_constant", + "message": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const colors = ... + +export function decodedValue([color1, color2]) ... +\`\`\`", + "template": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const %{name} = %{value} + +export %{method.signature} +\`\`\`", + "type": "actionable", + "variables": { + "method.signature": "function decodedValue([color1, color2]) ...", + "name": "colors", + "value": "...", + }, + }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -2738,7 +3058,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2747,7 +3067,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/236's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -2756,18 +3076,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2776,13 +3096,13 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/237's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`.forEach(...)\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": ".forEach(...)", }, }, @@ -2793,7 +3113,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2802,13 +3122,13 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/238's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`.forEach(...)\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": ".forEach(...)", }, }, @@ -2819,7 +3139,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/241's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -2828,18 +3148,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2848,13 +3168,13 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/245's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`.forEach(...)\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": ".forEach(...)", }, }, @@ -2865,7 +3185,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2874,19 +3194,19 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/246's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2895,7 +3215,7 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/247's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -2904,18 +3224,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2924,7 +3244,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/248's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -2932,20 +3252,20 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2954,7 +3274,7 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/251's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -2962,7 +3282,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -2971,7 +3291,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/256's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -2979,20 +3299,20 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3001,7 +3321,7 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/257's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -3009,20 +3329,20 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3031,7 +3351,7 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/258's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -3039,20 +3359,20 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3061,7 +3381,7 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/259's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.signature_not_optimal", "message": "📕 If you look at the tests, the function \`decodedValue\` only receives one @@ -3075,7 +3395,7 @@ parameter. Nothing more and nothing less. 📕 Remove the additional parameters from your function, as their value will always be \`undefined\` or whatever default you've assigned.", "type": "essential", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3084,7 +3404,7 @@ always be \`undefined\` or whatever default you've assigned.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/260's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -3093,18 +3413,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3113,7 +3433,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/261's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -3122,18 +3442,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3142,13 +3462,40 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/263's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ + CommentImpl { + "externalTemplate": "javascript.resistor-color-duo.prefer_extracted_top_level_constant", + "message": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const resistor = ... + +export const decodedValue = (colorsArr) => ... +\`\`\`", + "template": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const %{name} = %{value} + +export %{method.signature} +\`\`\`", + "type": "actionable", + "variables": { + "method.signature": "const decodedValue = (colorsArr) => ...", + "name": "resistor", + "value": "...", + }, + }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`.forEach(...)\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": ".forEach(...)", }, }, @@ -3159,7 +3506,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3168,19 +3515,19 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/264's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3189,13 +3536,13 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/265's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_method", "message": "No function called \`decodedValue\`. The tests won't pass without it.", "template": "No function called \`%{method.name}\`. The tests won't pass without it.", "type": "essential", - "variables": Object { + "variables": { "method.name": "decodedValue", }, }, @@ -3206,7 +3553,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/266's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -3214,20 +3561,20 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3236,13 +3583,13 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/267's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`for(...) { }\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": "for(...) { }", }, }, @@ -3253,7 +3600,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/270's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -3262,18 +3609,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3282,7 +3629,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/271's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -3290,7 +3637,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3299,7 +3646,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/272's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -3308,18 +3655,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3328,13 +3675,13 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/273's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`.forEach(...)\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": ".forEach(...)", }, }, @@ -3345,7 +3692,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3354,19 +3701,19 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/274's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3375,13 +3722,13 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/275's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`.forEach(...)\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": ".forEach(...)", }, }, @@ -3392,7 +3739,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/276's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -3401,18 +3748,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3421,7 +3768,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/278's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -3429,7 +3776,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3438,27 +3785,33 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/280's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { - "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", - "message": "📕 Mentor the student to add helper function and DRY-up this solution. The -solution to \`resistor-color\` can be used as helper method here. When using an -\`Array\` as colors source, in a years time, will the student recall why it's -the _index_ in that array? When using an \`Object\`, what does the value mean? -Re-using \`colorCode\` explains this in both cases. + "externalTemplate": "javascript.resistor-color-duo.prefer_extracted_top_level_constant", + "message": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", - "template": "📕 Mentor the student to add helper function and DRY-up this solution. The -solution to \`resistor-color\` can be used as helper method here. When using an -\`Array\` as colors source, in a years time, will the student recall why it's -the _index_ in that array? When using an \`Object\`, what does the value mean? -Re-using \`colorCode\` explains this in both cases. +\`\`\`javascript +const COLORS = ... + +export const decodedValue = (colorArray) => ... +\`\`\`", + "template": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const %{name} = %{value} -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +export %{method.signature} +\`\`\`", "type": "actionable", - "variables": Object {}, + "variables": { + "method.signature": "const decodedValue = (colorArray) => ...", + "name": "COLORS", + "value": "...", + }, }, ], "summary": undefined, @@ -3467,7 +3820,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/281's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -3475,7 +3828,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3484,13 +3837,13 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/282's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`.forEach(...)\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": ".forEach(...)", }, }, @@ -3501,7 +3854,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3510,7 +3863,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/284's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -3519,18 +3872,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3539,7 +3892,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/285's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -3548,18 +3901,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3568,7 +3921,7 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/286's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -3576,20 +3929,20 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3598,13 +3951,13 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/287's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`for(...) { }\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": "for(...) { }", }, }, @@ -3615,7 +3968,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3624,13 +3977,13 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/288's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`for(...) { }\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": "for(...) { }", }, }, @@ -3641,7 +3994,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3650,7 +4003,34 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/289's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ + CommentImpl { + "externalTemplate": "javascript.resistor-color-duo.prefer_extracted_top_level_constant", + "message": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const array = ... + +export const decodedValue = (colors) => ... +\`\`\`", + "template": "📕 Instead of defining the constant _inside_ the function, consider extracting it +to the top-level. Constants, functions, and classes that are not \`export\`ed, +are not accessible from outside the file. + +\`\`\`javascript +const %{name} = %{value} + +export %{method.signature} +\`\`\`", + "type": "actionable", + "variables": { + "method.signature": "const decodedValue = (colors) => ...", + "name": "array", + "value": "...", + }, + }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -3658,7 +4038,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3667,13 +4047,13 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/290's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`for(...) { }\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": "for(...) { }", }, }, @@ -3684,7 +4064,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3693,13 +4073,13 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/293's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_method", "message": "No function called \`decodedValue\`. The tests won't pass without it.", "template": "No function called \`%{method.name}\`. The tests won't pass without it.", "type": "essential", - "variables": Object { + "variables": { "method.name": "decodedValue", }, }, @@ -3710,7 +4090,7 @@ IsolatedAnalyzerOutput { exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/296's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -3719,18 +4099,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3739,13 +4119,13 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/297's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`.forEach(...)\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": ".forEach(...)", }, }, @@ -3756,7 +4136,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3765,7 +4145,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/298's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -3773,7 +4153,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3782,7 +4162,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/299's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -3791,18 +4171,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3811,13 +4191,13 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/300's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`for(...) { }\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": "for(...) { }", }, }, @@ -3828,7 +4208,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3837,7 +4217,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/302's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.must_use_a_helper", "message": "📕 Mentor the student to add helper function and DRY-up this solution. The @@ -3846,18 +4226,18 @@ solution to \`resistor-color\` can be used as helper method here. When using an the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "template": "📕 Mentor the student to add helper function and DRY-up this solution. The solution to \`resistor-color\` can be used as helper method here. When using an \`Array\` as colors source, in a years time, will the student recall why it's the _index_ in that array? When using an \`Object\`, what does the value mean? Re-using \`colorCode\` explains this in both cases. -💬 Using a helper method is good practice, because it replaces a cryptic \\"member -call\\" with a named call, that can be documented individually.", +💬 Using a helper method is good practice, because it replaces a cryptic "member +call" with a named call, that can be documented individually.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3866,28 +4246,28 @@ call\\" with a named call, that can be documented individually.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/303's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_array_comprehensions", "message": "💬 Replace \`.forEach(...)\` with a comprehension such as \`map\`.", "template": "💬 Replace \`%{current}\` with a comprehension such as \`map\`.", "type": "actionable", - "variables": Object { + "variables": { "current": ".forEach(...)", }, }, CommentImpl { "externalTemplate": "javascript.resistor-color-duo.use_math_instead_of_type_juggling", - "message": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "message": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", - "template": "📕 The final value is currently \\"constructed\\" by placing digits in a string and + "template": "📕 The final value is currently "constructed" by placing digits in a string and then interpreting that string as a number. This form of type-juggling is not needed. Instead, a solution using one multiplication and one addition, has lower cognitive complexity.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3896,7 +4276,7 @@ lower cognitive complexity.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/304's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.prefer_number_over_parse", "message": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more @@ -3904,7 +4284,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", "template": "💬 Use \`Number(...)\` when the input is expected to be a number. It's more strict than the \`parseXXX\` family and applies in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, ], "summary": undefined, @@ -3913,7 +4293,7 @@ strict than the \`parseXXX\` family and applies in this exercise.", exports[`When running analysis on resistor-color-duo fixtures and expecting matches resistor-color-duo/311's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.resistor-color-duo.destructuring_in_parameter", "message": "You can destructure an array directly in the parameter \`ar\`. @@ -3923,7 +4303,7 @@ in and replace the more cryptic numeric indexers with the named items.", This allows you to give a name to the items inside, limit how many values come in and replace the more cryptic numeric indexers with the named items.", "type": "informative", - "variables": Object { + "variables": { "parameter": "ar", }, }, diff --git a/test/analyzers/resistor-color-duo/smoke.ts b/test/analyzers/resistor-color-duo/smoke.ts index fc5f3e76..566e654a 100644 --- a/test/analyzers/resistor-color-duo/smoke.ts +++ b/test/analyzers/resistor-color-duo/smoke.ts @@ -1,5 +1,6 @@ -import { ResistorColorDuoAnalyzer } from '~src/analyzers/practice/resistor-color-duo' -import { makeAnalyze } from '~test/helpers/smoke' +import { describe, it, expect } from '@jest/globals' +import { ResistorColorDuoAnalyzer } from '~src/analyzers/practice/resistor-color-duo/index.js' +import { makeAnalyze } from '~test/helpers/smoke.js' const analyze = makeAnalyze(() => new ResistorColorDuoAnalyzer()) diff --git a/test/analyzers/resistor-color-duo/snapshot.ts b/test/analyzers/resistor-color-duo/snapshot.ts index 47f085f7..29817828 100644 --- a/test/analyzers/resistor-color-duo/snapshot.ts +++ b/test/analyzers/resistor-color-duo/snapshot.ts @@ -1,5 +1,6 @@ -import { ResistorColorDuoAnalyzer } from '~src/analyzers/practice/resistor-color-duo' -import { makeTestGenerator } from '~test/helpers/snapshot' +import { describe } from '@jest/globals' +import { ResistorColorDuoAnalyzer } from '~src/analyzers/practice/resistor-color-duo/index.js' +import { makeTestGenerator } from '~test/helpers/snapshot.js' const snapshotTestsGenerator = makeTestGenerator( 'resistor-color-duo', diff --git a/test/analyzers/resistor-color/__snapshots__/snapshot.ts.snap b/test/analyzers/resistor-color/__snapshots__/snapshot.ts.snap index d8a61aca..a89fa5fa 100644 --- a/test/analyzers/resistor-color/__snapshots__/snapshot.ts.snap +++ b/test/analyzers/resistor-color/__snapshots__/snapshot.ts.snap @@ -2,420 +2,420 @@ exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/0's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/1's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/2's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/12's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/13's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/14's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/16's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/17's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/18's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/20's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/100's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/101's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/102's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/105's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/106's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/107's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/110's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/113's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/115's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/117's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/122's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/123's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/127's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/131's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/132's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/134's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/135's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/137's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/138's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/142's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/149's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/150's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/151's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/158's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/161's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/163's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/164's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/165's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/168's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/171's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/172's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/173's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/174's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/175's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/179's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/180's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/182's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/184's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/186's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/187's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/189's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/191's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/192's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/196's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/197's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/199's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/206's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/209's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/211's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on resistor-color fixtures and expecting matches resistor-color/212's output: output 1`] = ` IsolatedAnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; diff --git a/test/analyzers/resistor-color/smoke.ts b/test/analyzers/resistor-color/smoke.ts index f45cf470..2af6c84a 100644 --- a/test/analyzers/resistor-color/smoke.ts +++ b/test/analyzers/resistor-color/smoke.ts @@ -1,5 +1,6 @@ -import { ResistorColorAnalyzer } from '~src/analyzers/practice/resistor-color' -import { makeAnalyze } from '~test/helpers/smoke' +import { describe, it, expect } from '@jest/globals' +import { ResistorColorAnalyzer } from '~src/analyzers/practice/resistor-color/index.js' +import { makeAnalyze } from '~test/helpers/smoke.js' const analyze = makeAnalyze(() => new ResistorColorAnalyzer()) diff --git a/test/analyzers/resistor-color/snapshot.ts b/test/analyzers/resistor-color/snapshot.ts index 06d48c94..85072c7d 100644 --- a/test/analyzers/resistor-color/snapshot.ts +++ b/test/analyzers/resistor-color/snapshot.ts @@ -1,5 +1,6 @@ -import { ResistorColorAnalyzer } from '~src/analyzers/practice/resistor-color' -import { makeTestGenerator } from '~test/helpers/snapshot' +import { describe } from '@jest/globals' +import { ResistorColorAnalyzer } from '~src/analyzers/practice/resistor-color/index.js' +import { makeTestGenerator } from '~test/helpers/snapshot.js' const snapshotTestsGenerator = makeTestGenerator( 'resistor-color', diff --git a/test/analyzers/two-fer/__snapshots__/snapshot.ts.snap b/test/analyzers/two-fer/__snapshots__/snapshot.ts.snap index 07be9545..028237e3 100644 --- a/test/analyzers/two-fer/__snapshots__/snapshot.ts.snap +++ b/test/analyzers/two-fer/__snapshots__/snapshot.ts.snap @@ -2,14 +2,14 @@ exports[`When running analysis on two-fer fixtures and expecting matches two-fer/0's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/1's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", "message": "You currently use a conditional to branch in case there is no value passed into @@ -19,7 +19,7 @@ of name to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "name", }, }, @@ -30,7 +30,7 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/10's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", "message": "You currently use a conditional to branch in case there is no value passed into @@ -40,7 +40,7 @@ of name to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "name", }, }, @@ -51,13 +51,13 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/11's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_method", "message": "No function called \`twoFer\`. The tests won't pass without it.", "template": "No function called \`%{method.name}\`. The tests won't pass without it.", "type": "essential", - "variables": Object { + "variables": { "method.name": "twoFer", }, }, @@ -68,7 +68,7 @@ AnalyzerOutput { exports[`When running analysis on two-fer fixtures and expecting matches two-fer/12's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", "message": "You currently use a conditional to branch in case there is no value passed into @@ -78,7 +78,7 @@ of name to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "name", }, }, @@ -89,14 +89,14 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/70's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/100's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", "message": "You currently use a conditional to branch in case there is no value passed into @@ -106,7 +106,7 @@ of name to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "name", }, }, @@ -117,7 +117,7 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/101's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.prefer_strict_equality", "message": "In _JavaScript_, always prefer [strict (identity and non-identity) equality](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Identity) @@ -137,7 +137,7 @@ unless you explicitly want to coerce the type of one of the two operands. There are definitely cases where you'll want to use non-strict equality, but that's not the case in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", @@ -148,7 +148,7 @@ of name to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "name", }, }, @@ -159,7 +159,7 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/102's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.prefer_strict_equality", "message": "In _JavaScript_, always prefer [strict (identity and non-identity) equality](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Identity) @@ -179,7 +179,7 @@ unless you explicitly want to coerce the type of one of the two operands. There are definitely cases where you'll want to use non-strict equality, but that's not the case in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", @@ -190,7 +190,7 @@ of name to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "name", }, }, @@ -201,14 +201,14 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/103's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/104's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", "message": "You currently use a conditional to branch in case there is no value passed into @@ -218,7 +218,7 @@ of X to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "X", }, }, @@ -229,7 +229,7 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/105's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", "message": "You currently use a conditional to branch in case there is no value passed into @@ -239,7 +239,7 @@ of name to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "name", }, }, @@ -250,24 +250,24 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/106's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/107's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.two-fer.optimise_explicity_default_value", - "message": "Instead of relying on name being \\"undefined\\" when + "message": "Instead of relying on name being "undefined" when no value is passed in, you could set the default value of 'name' to 'you'.", - "template": "Instead of relying on %{maybe_undefined_expression} being \\"undefined\\" when + "template": "Instead of relying on %{maybe_undefined_expression} being "undefined" when no value is passed in, you could set the default value of '%{parameter}' to 'you'.", "type": "actionable", - "variables": Object { + "variables": { "maybe_undefined_expression": "name", "parameter": "name", }, @@ -279,14 +279,14 @@ no value is passed in, you could set the default value of '%{parameter}' to exports[`When running analysis on two-fer fixtures and expecting matches two-fer/108's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/109's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", "message": "You currently use a conditional to branch in case there is no value passed into @@ -296,7 +296,7 @@ of name to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "name", }, }, @@ -307,7 +307,7 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/110's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.prefer_strict_equality", "message": "In _JavaScript_, always prefer [strict (identity and non-identity) equality](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators#Identity) @@ -327,7 +327,7 @@ unless you explicitly want to coerce the type of one of the two operands. There are definitely cases where you'll want to use non-strict equality, but that's not the case in this exercise.", "type": "actionable", - "variables": Object {}, + "variables": {}, }, CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", @@ -338,7 +338,7 @@ of name to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "name", }, }, @@ -349,7 +349,7 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/111's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", "message": "You currently use a conditional to branch in case there is no value passed into @@ -359,7 +359,7 @@ of name to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "name", }, }, @@ -370,13 +370,13 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/112's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.general.no_method", "message": "No function called \`twoFer\`. The tests won't pass without it.", "template": "No function called \`%{method.name}\`. The tests won't pass without it.", "type": "essential", - "variables": Object { + "variables": { "method.name": "twoFer", }, }, @@ -387,13 +387,13 @@ AnalyzerOutput { exports[`When running analysis on two-fer fixtures and expecting matches two-fer/113's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/114's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", "message": "You currently use a conditional to branch in case there is no value passed into @@ -403,7 +403,7 @@ of name to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "name", }, }, @@ -414,7 +414,7 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/115's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", "message": "You currently use a conditional to branch in case there is no value passed into @@ -424,7 +424,7 @@ of name to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "name", }, }, @@ -435,7 +435,7 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/116's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", "message": "You currently use a conditional to branch in case there is no value passed into @@ -445,7 +445,7 @@ of name to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "name", }, }, @@ -456,7 +456,7 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/118's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", "message": "You currently use a conditional to branch in case there is no value passed into @@ -466,7 +466,7 @@ of name to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "name", }, }, @@ -477,14 +477,14 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/119's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/120's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", "message": "You currently use a conditional to branch in case there is no value passed into @@ -494,7 +494,7 @@ of name to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "name", }, }, @@ -505,7 +505,7 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/121's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", "message": "You currently use a conditional to branch in case there is no value passed into @@ -515,7 +515,7 @@ of name to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "name", }, }, @@ -526,14 +526,14 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/122's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/123's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", "message": "You currently use a conditional to branch in case there is no value passed into @@ -543,7 +543,7 @@ of name to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "name", }, }, @@ -554,7 +554,7 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/124's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", "message": "You currently use a conditional to branch in case there is no value passed into @@ -564,7 +564,7 @@ of name to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "name", }, }, @@ -575,101 +575,101 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/129's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/133's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/138's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/139's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/143's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/147's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/148's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/166's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/171's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/175's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/181's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/183's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/192's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/194's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/313's output: output 1`] = ` AnalyzerOutput { - "comments": Array [ + "comments": [ CommentImpl { "externalTemplate": "javascript.two-fer.optimise_default_value", "message": "You currently use a conditional to branch in case there is no value passed into @@ -679,7 +679,7 @@ of name to 'you' to avoid this conditional.", \`twoFer\`. Instead you could set the [default value](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters) of %{parameter} to 'you' to avoid this conditional.", "type": "actionable", - "variables": Object { + "variables": { "parameter": "name", }, }, @@ -690,14 +690,14 @@ of %{parameter} to 'you' to avoid this conditional.", exports[`When running analysis on two-fer fixtures and expecting matches two-fer/400's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; exports[`When running analysis on two-fer fixtures and expecting matches two-fer/493's output: output 1`] = ` AnalyzerOutput { - "comments": Array [], + "comments": [], "summary": undefined, } `; diff --git a/test/analyzers/two-fer/issue68.ts b/test/analyzers/two-fer/issue68.ts index caf60067..810568a9 100644 --- a/test/analyzers/two-fer/issue68.ts +++ b/test/analyzers/two-fer/issue68.ts @@ -1,5 +1,6 @@ -import { TwoFerAnalyzer } from '~src/analyzers/practice/two-fer' -import { makeAnalyze } from '~test/helpers/smoke' +import { describe, expect, it } from '@jest/globals' +import { TwoFerAnalyzer } from '~src/analyzers/practice/two-fer/index.js' +import { makeAnalyze } from '~test/helpers/smoke.js' const analyze = makeAnalyze(() => new TwoFerAnalyzer()) diff --git a/test/analyzers/two-fer/smoke.ts b/test/analyzers/two-fer/smoke.ts index afa7b5f4..d944ecf5 100644 --- a/test/analyzers/two-fer/smoke.ts +++ b/test/analyzers/two-fer/smoke.ts @@ -1,5 +1,6 @@ -import { TwoFerAnalyzer } from '~src/analyzers/practice/two-fer' -import { makeAnalyze } from '~test/helpers/smoke' +import { describe, it, expect } from '@jest/globals' +import { TwoFerAnalyzer } from '~src/analyzers/practice/two-fer/index.js' +import { makeAnalyze } from '~test/helpers/smoke.js' const analyze = makeAnalyze(() => new TwoFerAnalyzer()) diff --git a/test/analyzers/two-fer/snapshot.ts b/test/analyzers/two-fer/snapshot.ts index 469e0fc4..485278a1 100644 --- a/test/analyzers/two-fer/snapshot.ts +++ b/test/analyzers/two-fer/snapshot.ts @@ -1,5 +1,6 @@ -import { TwoFerAnalyzer } from '~src/analyzers/practice/two-fer' -import { makeTestGenerator } from '~test/helpers/snapshot' +import { describe } from '@jest/globals' +import { TwoFerAnalyzer } from '~src/analyzers/practice/two-fer/index.js' +import { makeTestGenerator } from '~test/helpers/snapshot.js' const snapshotTestsGenerator = makeTestGenerator( 'two-fer', diff --git a/test/analyzers/vehicle-purchase/examplar.ts b/test/analyzers/vehicle-purchase/examplar.ts index 8a9b4548..f2da3d59 100644 --- a/test/analyzers/vehicle-purchase/examplar.ts +++ b/test/analyzers/vehicle-purchase/examplar.ts @@ -1,8 +1,12 @@ +import { describe, it, expect } from '@jest/globals' import { DirectoryWithConfigInput } from '@exercism/static-analysis' -import path from 'path' -import { VehiclePurchaseAnalyzer } from '~src/analyzers/concept/vehicle-purchase' -import { EXEMPLAR_SOLUTION } from '~src/comments/shared' -import { makeAnalyze, makeOptions } from '~test/helpers/smoke' +import path from 'node:path' +import { VehiclePurchaseAnalyzer } from '~src/analyzers/concept/vehicle-purchase/index.js' +import { EXEMPLAR_SOLUTION } from '~src/comments/shared.js' +import { makeAnalyze, makeOptions } from '~test/helpers/smoke.js' + +// eslint-disable-next-line @typescript-eslint/naming-convention +const __dirname = import.meta.dirname const inputDir = path.join( __dirname, diff --git a/test/comments/parameters.ts b/test/comments/parameters.ts index 6000fd61..d9ccc8eb 100644 --- a/test/comments/parameters.ts +++ b/test/comments/parameters.ts @@ -1,4 +1,5 @@ -import { factory } from '~src/comments/comment' +import { describe, expect, it } from '@jest/globals' +import { factory } from '~src/comments/comment.js' describe(`Comment Factory (with parameters)`, () => { const templatable = factory<'foo' | 'bar'>` @@ -18,15 +19,15 @@ with some indentation }) describe('templatable factory', () => { - const parametarable = templatable('test.javascript.parameters') + const parametrizable = templatable('test.javascript.parameters') - it('generates a parametered comment factory', () => { - expect(parametarable).toBeInstanceOf(Function) + it('generates a parameterized comment factory', () => { + expect(parametrizable).toBeInstanceOf(Function) }) describe('comment generation', () => { describe('when passing no parameters', () => { - const comment = parametarable([]) + const comment = parametrizable([]) it('generates the message with template placeholders', () => { expect(comment.message).toBe( @@ -63,142 +64,150 @@ with some indentation it('has an empty set of variables if none are passed', () => { expect(comment.variables).toEqual({}) }) - }), - describe('when passing all named parameters', () => { - const comment = parametarable({ + }) + + describe('when passing all named parameters', () => { + const comment = parametrizable({ + foo: 'actual-foo', + bar: 'actual-bar', + }) + + it('generates the message', () => { + expect(comment.message).toBe( + [ + 'This is a message with parameters:', + '---', + 'foo => actual-foo.', + ' positional => [%0$s, %1$s, %2$s]', + ' bar => actual-bar', + ' foo (again) => actual-foo', + 'with some indentation', + ].join('\n') + ) + }) + + it('assigns the external template identifier', () => { + expect(comment.externalTemplate).toBe('test.javascript.parameters') + }) + + it('gives the original template with template variables', () => { + expect(comment.template).toBe( + [ + 'This is a message with parameters:', + '---', + 'foo => %{foo}.', + ' positional => [%0$s, %1$s, %2$s]', + ' bar => %{bar}', + ' foo (again) => %{foo}', + 'with some indentation', + ].join('\n') + ) + }) + + it('has the set of variables passed', () => { + expect(comment.variables).toEqual({ foo: 'actual-foo', bar: 'actual-bar', }) + }) + }) - it('generates the message', () => { - expect(comment.message).toBe( - [ - 'This is a message with parameters:', - '---', - 'foo => actual-foo.', - ' positional => [%0$s, %1$s, %2$s]', - ' bar => actual-bar', - ' foo (again) => actual-foo', - 'with some indentation', - ].join('\n') - ) - }) - - it('assigns the external template identifier', () => { - expect(comment.externalTemplate).toBe('test.javascript.parameters') - }) + describe('when passing some positional parameters', () => { + const comment = parametrizable('actual-foo', 'actual-bar') - it('gives the original template with template variables', () => { - expect(comment.template).toBe( - [ - 'This is a message with parameters:', - '---', - 'foo => %{foo}.', - ' positional => [%0$s, %1$s, %2$s]', - ' bar => %{bar}', - ' foo (again) => %{foo}', - 'with some indentation', - ].join('\n') - ) - }) + it('generates the message', () => { + expect(comment.message).toBe( + [ + 'This is a message with parameters:', + '---', + 'foo => %{foo}.', + ' positional => [actual-foo, actual-bar, %2$s]', + ' bar => %{bar}', + ' foo (again) => %{foo}', + 'with some indentation', + ].join('\n') + ) + }) - it('has the set of variables passed', () => { - expect(comment.variables).toEqual({ - foo: 'actual-foo', - bar: 'actual-bar', - }) - }) - }), - describe('when passing some positional parameters', () => { - const comment = parametarable('actual-foo', 'actual-bar') - - it('generates the message', () => { - expect(comment.message).toBe( - [ - 'This is a message with parameters:', - '---', - 'foo => %{foo}.', - ' positional => [actual-foo, actual-bar, %2$s]', - ' bar => %{bar}', - ' foo (again) => %{foo}', - 'with some indentation', - ].join('\n') - ) - }) + it('assigns the external template identifier', () => { + expect(comment.externalTemplate).toBe('test.javascript.parameters') + }) - it('assigns the external template identifier', () => { - expect(comment.externalTemplate).toBe('test.javascript.parameters') - }) + it('gives the original template with template variables', () => { + expect(comment.template).toBe( + [ + 'This is a message with parameters:', + '---', + 'foo => %{foo}.', + ' positional => [%0$s, %1$s, %2$s]', + ' bar => %{bar}', + ' foo (again) => %{foo}', + 'with some indentation', + ].join('\n') + ) + }) - it('gives the original template with template variables', () => { - expect(comment.template).toBe( - [ - 'This is a message with parameters:', - '---', - 'foo => %{foo}.', - ' positional => [%0$s, %1$s, %2$s]', - ' bar => %{bar}', - ' foo (again) => %{foo}', - 'with some indentation', - ].join('\n') - ) + it('has the array of positional parameters', () => { + expect(comment.variables).toEqual({ + // eslint-disable-next-line @typescript-eslint/naming-convention + 0: 'actual-foo', + // eslint-disable-next-line @typescript-eslint/naming-convention + 1: 'actual-bar', }) + }) + }) - it('has the array of positional parameters', () => { - expect(comment.variables).toEqual({ - 0: 'actual-foo', - 1: 'actual-bar', - }) - }) - }), - describe('when passing all parameters', () => { - const comment = parametarable(['posi-foo', 'posi-bar', 'posi-baz'], { - foo: 'name-foo', - bar: 'name-bar', - }) + describe('when passing all parameters', () => { + const comment = parametrizable(['posi-foo', 'posi-bar', 'posi-baz'], { + foo: 'name-foo', + bar: 'name-bar', + }) - it('generates the message', () => { - expect(comment.message).toBe( - [ - 'This is a message with parameters:', - '---', - 'foo => name-foo.', - ' positional => [posi-foo, posi-bar, posi-baz]', - ' bar => name-bar', - ' foo (again) => name-foo', - 'with some indentation', - ].join('\n') - ) - }) + it('generates the message', () => { + expect(comment.message).toBe( + [ + 'This is a message with parameters:', + '---', + 'foo => name-foo.', + ' positional => [posi-foo, posi-bar, posi-baz]', + ' bar => name-bar', + ' foo (again) => name-foo', + 'with some indentation', + ].join('\n') + ) + }) - it('assigns the external template identifier', () => { - expect(comment.externalTemplate).toBe('test.javascript.parameters') - }) + it('assigns the external template identifier', () => { + expect(comment.externalTemplate).toBe('test.javascript.parameters') + }) - it('gives the original template with template variables', () => { - expect(comment.template).toBe( - [ - 'This is a message with parameters:', - '---', - 'foo => %{foo}.', - ' positional => [%0$s, %1$s, %2$s]', - ' bar => %{bar}', - ' foo (again) => %{foo}', - 'with some indentation', - ].join('\n') - ) - }) + it('gives the original template with template variables', () => { + expect(comment.template).toBe( + [ + 'This is a message with parameters:', + '---', + 'foo => %{foo}.', + ' positional => [%0$s, %1$s, %2$s]', + ' bar => %{bar}', + ' foo (again) => %{foo}', + 'with some indentation', + ].join('\n') + ) + }) - it('has the array of positional parameters', () => { - expect(comment.variables).toEqual({ - 0: 'posi-foo', - 1: 'posi-bar', - 2: 'posi-baz', - foo: 'name-foo', - bar: 'name-bar', - }) + it('has the array of positional parameters', () => { + expect(comment.variables).toEqual({ + // eslint-disable-next-line @typescript-eslint/naming-convention + 0: 'posi-foo', + // eslint-disable-next-line @typescript-eslint/naming-convention + 1: 'posi-bar', + // eslint-disable-next-line @typescript-eslint/naming-convention + 2: 'posi-baz', + foo: 'name-foo', + bar: 'name-bar', }) }) + }) }) }) }) diff --git a/test/comments/simple.ts b/test/comments/simple.ts index c98c7989..3b90a5cd 100644 --- a/test/comments/simple.ts +++ b/test/comments/simple.ts @@ -1,4 +1,5 @@ -import { factory } from '~src/comments/comment' +import { describe, expect, it } from '@jest/globals' +import { factory } from '~src/comments/comment.js' describe(`Comment Factory (simple)`, () => { const templatable = factory` @@ -12,14 +13,14 @@ describe(`Comment Factory (simple)`, () => { }) describe('templatable factory', () => { - const parametarable = templatable('test.javascript.simple') + const parametrizable = templatable('test.javascript.simple') - it('generates a parametered comment factory', () => { - expect(parametarable).toBeInstanceOf(Function) + it('generates a parametrized comment factory', () => { + expect(parametrizable).toBeInstanceOf(Function) }) describe('comment generation', () => { - const comment = parametarable() + const comment = parametrizable() it('generates the message', () => { expect(comment.message).toBe('simple example') diff --git a/test/fixtures/resistor-color-duo/simbabque-1/resistor-color-duo.js b/test/fixtures/resistor-color-duo/simbabque-1/resistor-color-duo.js new file mode 100644 index 00000000..cb4be70f --- /dev/null +++ b/test/fixtures/resistor-color-duo/simbabque-1/resistor-color-duo.js @@ -0,0 +1,18 @@ +const codes = { + black: 0, + brown: 1, + red: 2, + orange: 3, + yellow: 4, + green: 5, + blue: 6, + violet: 7, + grey: 8, + white: 9 +}; +const decode = (color) => { + return codes[color]; +}; +export const decodedValue = ([first, second]) => { + return decode(first) * 10 + decode(second); +}; diff --git a/test/helpers/bootstrap.ts b/test/helpers/bootstrap.ts index 3a3331f3..d5271df3 100644 --- a/test/helpers/bootstrap.ts +++ b/test/helpers/bootstrap.ts @@ -1,8 +1,8 @@ -import { ExecutionOptionsImpl } from '~src/utils/execution_options' -import { ExerciseImpl } from '~src/ExerciseImpl' -import { BootstrapResult } from '~src/utils/bootstrap' -import { ExecutionOptions } from '~src/interface' import { Logger, setProcessLogger } from '@exercism/static-analysis' +import { ExerciseImpl } from '~src/ExerciseImpl.js' +import type { ExecutionOptions } from '~src/interface.d.js' +import type { BootstrapResult } from '~src/utils/bootstrap.js' +import { ExecutionOptionsImpl } from '~src/utils/execution_options.js' export function bootstrap({ exercise, diff --git a/test/helpers/input/FixtureInput.ts b/test/helpers/input/FixtureInput.ts index 35650b4a..3d124dab 100644 --- a/test/helpers/input/FixtureInput.ts +++ b/test/helpers/input/FixtureInput.ts @@ -1,5 +1,8 @@ import { DirectoryInput } from '@exercism/static-analysis' -import nodePath from 'path' +import nodePath from 'node:path' + +// eslint-disable-next-line @typescript-eslint/naming-convention +const __dirname = import.meta.dirname export class FixtureInput extends DirectoryInput { /** @@ -8,7 +11,10 @@ export class FixtureInput extends DirectoryInput { * @param slug the slug of the exercise * @param num the exercise index */ - constructor(slug: string, private readonly num: number) { + constructor( + slug: string, + private readonly num: number + ) { super( nodePath.join(__dirname, '..', '..', 'fixtures', slug, num.toString()), slug diff --git a/test/helpers/smoke.ts b/test/helpers/smoke.ts index 849b8306..51d5c16a 100644 --- a/test/helpers/smoke.ts +++ b/test/helpers/smoke.ts @@ -1,8 +1,8 @@ import { InlineInput } from '@exercism/static-analysis' -import { Analyzer, ExecutionOptions, Output } from '~src/interface' +import type { Analyzer, ExecutionOptions, Output } from '~src/interface.d.js' type AnalyzerFactory = () => Analyzer -type analyze = (solutionContent: string) => Promise +type AnalyzeFn = (solutionContent: string) => Promise const EMPTY_OPTIONS: Omit< ExecutionOptions, @@ -23,12 +23,13 @@ export function makeOptions( } export function makeAnalyze( + // eslint-disable-next-line @typescript-eslint/naming-convention AnalyzerFactory: AnalyzerFactory, options: Omit< ExecutionOptions, 'exercise' | 'inputDir' | 'output' > = EMPTY_OPTIONS -): analyze { +): AnalyzeFn { return async function (solutionContent: string): Promise { const analyzer = AnalyzerFactory() const input = new InlineInput([solutionContent]) diff --git a/test/helpers/snapshot.ts b/test/helpers/snapshot.ts index 2dabb7e1..b2893cfd 100644 --- a/test/helpers/snapshot.ts +++ b/test/helpers/snapshot.ts @@ -1,5 +1,6 @@ -import { Analyzer, ExecutionOptions, Output } from '~src/interface' -import { FixtureInput } from './input/FixtureInput' +import { describe, expect, it } from '@jest/globals' +import type { Analyzer, ExecutionOptions, Output } from '~src/interface.js' +import { FixtureInput } from './input/FixtureInput.js' const EMPTY_OPTIONS: ExecutionOptions = { debug: false, @@ -13,12 +14,14 @@ const EMPTY_OPTIONS: ExecutionOptions = { } type AnalyzerFactory = () => Analyzer -type generateAll = (fixtures: readonly number[]) => void +type GenerateAllFn = (fixtures: readonly number[]) => void +// eslint-disable-next-line jest/no-export export function makeTestGenerator( slug: string, + // eslint-disable-next-line @typescript-eslint/naming-convention AnalyzerFactory: AnalyzerFactory -): generateAll { +): GenerateAllFn { function analyze(fixture: number): Promise { const analyzer = AnalyzerFactory() const input = new FixtureInput(slug, fixture) @@ -26,11 +29,11 @@ export function makeTestGenerator( return analyzer.run(input, EMPTY_OPTIONS) } - return async function (fixtures: readonly number[]): Promise { + return function (fixtures: readonly number[]): void { describe(`and expecting`, () => { fixtures .slice() - .sort() + .sort((a, b) => a - b) .forEach((fixture) => { const identifier = `${slug}/${fixture}` it(`matches ${identifier}'s output`, async () => { diff --git a/test/output/AnalyzerOutput.ts b/test/output/AnalyzerOutput.ts index 0590b2e8..2c63b28f 100644 --- a/test/output/AnalyzerOutput.ts +++ b/test/output/AnalyzerOutput.ts @@ -1,5 +1,6 @@ -import { AnalyzerOutput } from '~src/output/AnalyzerOutput' -import { factory } from '~src/comments/comment' +import { describe, expect, it } from '@jest/globals' +import { factory } from '~src/comments/comment.js' +import { AnalyzerOutput } from '~src/output/AnalyzerOutput.js' const COMMENT_TEMPLATE_IDENTIFIER = 'javascript.test.output' const COMMENT = factory`something to test with`(COMMENT_TEMPLATE_IDENTIFIER) diff --git a/test/output/processor/FileOutput.ts b/test/output/processor/FileOutput.ts index 66adb6d1..950497f0 100644 --- a/test/output/processor/FileOutput.ts +++ b/test/output/processor/FileOutput.ts @@ -1,7 +1,8 @@ -import fs from 'fs' -import path from 'path' -import { ExecutionOptions } from '~src/interface' -import { FileOutput } from '~src/output/processor/FileOutput' +import { beforeEach, describe, expect, it } from '@jest/globals' +import fs from 'node:fs' +import path from 'node:path' +import type { ExecutionOptions } from '~src/interface.d.js' +import { FileOutput } from '~src/output/processor/FileOutput.js' const mockedFs = fs as unknown as MockedFs diff --git a/test/output/processor/LogOutput.ts b/test/output/processor/LogOutput.ts index 8247be02..97bd927d 100644 --- a/test/output/processor/LogOutput.ts +++ b/test/output/processor/LogOutput.ts @@ -1,17 +1,24 @@ -import { LogOutput } from '~src/output/processor/LogOutput' -import { ExecutionOptions } from '~src/interface' -import { - Logger, - LoggerInput, - setProcessLogger, -} from '@exercism/static-analysis' +import type { Logger, LoggerInput } from '@exercism/static-analysis' +import { setProcessLogger } from '@exercism/static-analysis' +import { beforeEach, describe, expect, it, jest } from '@jest/globals' +import type { ExecutionOptions } from '~src/interface.d.js' +import { LogOutput } from '~src/output/processor/LogOutput.js' const CONTENTS = `My Fine Output` -const TEST_LOGGER: Logger & { log: jest.MockInstance } = { - error: jest.fn(), - log: jest.fn(), - fatal: jest.fn(), +const TEST_LOGGER: Logger & { + log: jest.Mock<(this: LoggerInput, buffer: LoggerInput) => void> +} = { + error: jest.fn<(this: LoggerInput, buffer: LoggerInput) => void>(), + log: jest.fn<(this: LoggerInput, buffer: LoggerInput) => void>(), + fatal: + jest.fn< + ( + this: LoggerInput, + buffer: LoggerInput, + status: number | undefined + ) => never + >(), } const DEFAULT_OPTIONS: ExecutionOptions = { diff --git a/test/output/toProcessable.ts b/test/output/toProcessable.ts index 3f27deb4..7029b3a9 100644 --- a/test/output/toProcessable.ts +++ b/test/output/toProcessable.ts @@ -1,5 +1,6 @@ -import { AnalyzerOutput } from '~src/output/AnalyzerOutput' -import { CommentType, factory } from '~src/comments/comment' +import { describe, expect, it } from '@jest/globals' +import { CommentType, factory } from '~src/comments/comment.js' +import { AnalyzerOutput } from '~src/output/AnalyzerOutput.js' const COMMENT_WITHOUT_PARAMS_IDENTIFIER = 'javascript.test.output.to-processable.simple' @@ -149,7 +150,7 @@ describe('AnalyzerOutput#toProcessable', () => { }) }) - describe('with an informative comment', () => { + describe('with an celebratory comment', () => { it('generates the correct output', async () => { const output = new AnalyzerOutput() output.add(COMMENT_PARTY()) diff --git a/test/ref.d.ts b/test/ref.d.ts index 372c8948..a4f3c658 100644 --- a/test/ref.d.ts +++ b/test/ref.d.ts @@ -1,4 +1,6 @@ interface MockedFs { - __setMockFiles(files: { [path: string]: string }): void - __getWrittenFiles(): { [dir: string]: { [file: string]: string } } + // eslint-disable-next-line @typescript-eslint/naming-convention + __setMockFiles: (files: { [path: string]: string }) => void + // eslint-disable-next-line @typescript-eslint/naming-convention + __getWrittenFiles: () => { [dir: string]: { [file: string]: string } } } diff --git a/test/smoke.test.ts b/test/smoke.test.ts index f1e1e8fe..030c7fd5 100644 --- a/test/smoke.test.ts +++ b/test/smoke.test.ts @@ -1,8 +1,10 @@ -import { TwoFerAnalyzer } from '~src/analyzers/practice/two-fer' -import { run } from '~src/utils/runner' -import { find } from '~src/analyzers/Autoload' +import { describe, it, expect } from '@jest/globals' -import { bootstrap } from '~test/helpers/bootstrap' +import { TwoFerAnalyzer } from '~src/analyzers/practice/two-fer/index.js' +import { run } from '~src/utils/runner.js' +import { find } from '~src/analyzers/Autoload.js' + +import { bootstrap } from '~test/helpers/bootstrap.js' import { InlineInput } from '@exercism/static-analysis' const { options, exercise } = bootstrap({ exercise: 'two-fer' }) @@ -39,7 +41,7 @@ describe('When running analysis', () => { expect(output.comments[0].type).toBe('informative') }) - it('can dissapprove with comment', async () => { + it('can disapprove with comment', async () => { const solutionContent = ` export const twoFer = (name) => { return \`One for \${name || 'you'}, one for me.\`; @@ -56,8 +58,9 @@ describe('When running analysis', () => { }) describe('When autoloading analyzers', () => { - it('can find an analyzer based on an exercise', () => { - const ActualAnalyzer = find(exercise) + it('can find an analyzer based on an exercise', async () => { + // eslint-disable-next-line @typescript-eslint/naming-convention + const ActualAnalyzer = await find(exercise) expect(ActualAnalyzer).toBe(TwoFerAnalyzer) }) }) diff --git a/test/tsconfig.eslint.json b/test/tsconfig.eslint.json deleted file mode 100644 index ec159245..00000000 --- a/test/tsconfig.eslint.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "compilerOptions": { "strict": true }, - "include": ["../src/**/*.ts", "./**/*.ts"] -} diff --git a/tsconfig.json b/tsconfig.json index 5b114c76..b39d9128 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,11 +1,15 @@ { "extends": "@tsconfig/recommended/tsconfig.json", "compilerOptions": { - "target": "ES2016" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, - "module": "CommonJs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, + "target": "esnext" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */, + "module": "node16" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */, "isolatedModules": true /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */, - "moduleResolution": "node" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, - "noImplicitAny": true + "moduleResolution": "node16" /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */, + "strict": true, + "esModuleInterop": true, + "allowImportingTsExtensions": false, + "noEmit": true + // "rewriteRelativeImportExtensions": true }, "include": ["src"], "exclude": ["test", "node_modules"] diff --git a/yarn.lock b/yarn.lock index 60d4823e..44f79ce7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,5653 +1,7248 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@ampproject/remapping@^2.1.0": - version "2.2.0" - resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" - integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== - dependencies: - "@jridgewell/gen-mapping" "^0.1.0" - "@jridgewell/trace-mapping" "^0.3.9" - -"@babel/cli@~7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/cli/-/cli-7.18.10.tgz#4211adfc45ffa7d4f3cee6b60bb92e9fe68fe56a" - integrity sha512-dLvWH+ZDFAkd2jPBSghrsFBuXrREvFwjpDycXbmUoeochqKYe4zNSLEJYErpLg8dvxvZYe79/MkN461XCwpnGw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.8" - commander "^4.0.1" - convert-source-map "^1.1.0" - fs-readdir-recursive "^1.1.0" - glob "^7.2.0" - make-dir "^2.1.0" - slash "^2.0.0" - optionalDependencies: - "@nicolo-ribaudo/chokidar-2" "2.1.8-no-fsevents.3" - chokidar "^3.4.0" - -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": - version "7.5.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.5.5.tgz#bc0782f6d69f7b7d49531219699b988f669a8f9d" - integrity sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw== - dependencies: - "@babel/highlight" "^7.0.0" - -"@babel/code-frame@^7.10.4": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" - integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== - dependencies: - "@babel/highlight" "^7.10.4" - -"@babel/code-frame@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== - dependencies: - "@babel/highlight" "^7.12.13" - -"@babel/code-frame@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" - integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/code-frame@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" - integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== - dependencies: - "@babel/highlight" "^7.18.6" - -"@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" - integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== - dependencies: - "@babel/highlight" "^7.24.2" - picocolors "^1.0.0" - -"@babel/compat-data@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" - integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== - -"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.18.8.tgz#2483f565faca607b8535590e84e7de323f27764d" - integrity sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ== - -"@babel/core@^7.1.0": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.7.5.tgz#ae1323cd035b5160293307f50647e83f8ba62f7e" - integrity sha512-M42+ScN4+1S9iB6f+TL7QBpoQETxbclx+KNoKJABghnKYE+fMzSGqst0BZJc8CpI625bwPwYgUyRvxZ+0mZzpw== - dependencies: - "@babel/code-frame" "^7.5.5" - "@babel/generator" "^7.7.4" - "@babel/helpers" "^7.7.4" - "@babel/parser" "^7.7.5" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" - convert-source-map "^1.7.0" - debug "^4.1.0" - json5 "^2.1.0" - lodash "^4.17.13" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/core@^7.12.3", "@babel/core@^7.8.0", "@babel/core@~7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.10.tgz#39ad504991d77f1f3da91be0b8b949a5bc466fb8" - integrity sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw== - dependencies: - "@ampproject/remapping" "^2.1.0" - "@babel/code-frame" "^7.18.6" - "@babel/generator" "^7.18.10" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helpers" "^7.18.9" - "@babel/parser" "^7.18.10" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.10" - "@babel/types" "^7.18.10" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.2.1" - semver "^6.3.0" - -"@babel/core@^7.7.2": - version "7.15.5" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.5.tgz#f8ed9ace730722544609f90c9bb49162dc3bf5b9" - integrity sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.15.4" - "@babel/helper-compilation-targets" "^7.15.4" - "@babel/helper-module-transforms" "^7.15.4" - "@babel/helpers" "^7.15.4" - "@babel/parser" "^7.15.5" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/generator@^7.15.4", "@babel/generator@^7.7.2": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.4.tgz#85acb159a267ca6324f9793986991ee2022a05b0" - integrity sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw== - dependencies: - "@babel/types" "^7.15.4" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/generator@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.10.tgz#794f328bfabdcbaf0ebf9bf91b5b57b61fa77a2a" - integrity sha512-0+sW7e3HjQbiHbj1NeU/vN8ornohYlacAfZIaXhdoGweQqgcNy69COVciYYqEXJ/v+9OBA7Frxm4CVAuNqKeNA== - dependencies: - "@babel/types" "^7.18.10" - "@jridgewell/gen-mapping" "^0.3.2" - jsesc "^2.5.1" - -"@babel/generator@^7.24.1": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.4.tgz#1fc55532b88adf952025d5d2d1e71f946cb1c498" - integrity sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw== - dependencies: - "@babel/types" "^7.24.0" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" - -"@babel/generator@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.7.4.tgz#db651e2840ca9aa66f327dcec1dc5f5fa9611369" - integrity sha512-m5qo2WgdOJeyYngKImbkyQrnUN1mPceaG5BV+G0E3gWsa4l/jCSryWJdM2x8OuGAOyh+3d5pVYfZWCiNFtynxg== - dependencies: - "@babel/types" "^7.7.4" - jsesc "^2.5.1" - lodash "^4.17.13" - source-map "^0.5.0" - -"@babel/helper-annotate-as-pure@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" - integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-annotate-as-pure@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.8.3.tgz#60bc0bc657f63a0924ff9a4b4a0b24a13cf4deee" - integrity sha512-6o+mJrZBxOoEX77Ezv9zwW7WV8DdluouRKNY/IR5u/YTMuKHgugHOzYWlYvYLpLA9nPsQCAAASpCIbjI9Mv+Uw== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-builder-binary-assignment-operator-visitor@^7.18.6": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz#acd4edfd7a566d1d51ea975dff38fd52906981bb" - integrity sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw== - dependencies: - "@babel/helper-explode-assignable-expression" "^7.18.6" - "@babel/types" "^7.18.9" - -"@babel/helper-compilation-targets@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz#cf6d94f30fbefc139123e27dd6b02f65aeedb7b9" - integrity sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ== - dependencies: - "@babel/compat-data" "^7.15.0" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" - semver "^6.3.0" - -"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz#69e64f57b524cde3e5ff6cc5a9f4a387ee5563bf" - integrity sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg== - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-validator-option" "^7.18.6" - browserslist "^4.20.2" - semver "^6.3.0" - -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz#d802ee16a64a9e824fcbf0a2ffc92f19d58550ce" - integrity sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - -"@babel/helper-create-regexp-features-plugin@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz#3e35f4e04acbbf25f1b3534a657610a000543d3c" - integrity sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - regexpu-core "^5.1.0" - -"@babel/helper-create-regexp-features-plugin@^7.8.3", "@babel/helper-create-regexp-features-plugin@^7.8.8": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.8.tgz#5d84180b588f560b7864efaeea89243e58312087" - integrity sha512-LYVPdwkrQEiX9+1R29Ld/wTrmQu1SSKYnuOk3g0CkcZMA1p0gsNxJFj/3gBdaJ7Cg0Fnek5z0DsMULePP7Lrqg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.8.3" - "@babel/helper-regex" "^7.8.3" - regexpu-core "^4.7.0" - -"@babel/helper-define-polyfill-provider@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz#bd10d0aca18e8ce012755395b05a79f45eca5073" - integrity sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg== - dependencies: - "@babel/helper-compilation-targets" "^7.17.7" - "@babel/helper-plugin-utils" "^7.16.7" - debug "^4.1.1" - lodash.debounce "^4.0.8" - resolve "^1.14.2" - semver "^6.1.2" - -"@babel/helper-environment-visitor@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" - integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== - -"@babel/helper-environment-visitor@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" - integrity sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA== - -"@babel/helper-explode-assignable-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz#41f8228ef0a6f1a036b8dfdfec7ce94f9a6bc096" - integrity sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-function-name@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" - integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== - dependencies: - "@babel/template" "^7.18.6" - "@babel/types" "^7.18.9" - -"@babel/helper-function-name@^7.23.0": - version "7.23.0" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" - integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== - dependencies: - "@babel/template" "^7.22.15" - "@babel/types" "^7.23.0" - -"@babel/helper-hoist-variables@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" - integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz#c01a007dac05c085914e8fb652b339db50d823bb" - integrity sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-member-expression-to-functions@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz#bfd34dc9bba9824a4658b0317ec2fd571a51e6ef" - integrity sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-member-expression-to-functions@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz#1531661e8375af843ad37ac692c132841e2fd815" - integrity sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg== - dependencies: - "@babel/types" "^7.18.9" - -"@babel/helper-module-imports@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz#e18007d230632dea19b47853b984476e7b4e103f" - integrity sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-module-imports@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz#1e3ebdbbd08aad1437b428c50204db13c5a3ca6e" - integrity sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-module-transforms@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz#962cc629a7f7f9a082dd62d0307fa75fe8788d7c" - integrity sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw== - dependencies: - "@babel/helper-module-imports" "^7.15.4" - "@babel/helper-replace-supers" "^7.15.4" - "@babel/helper-simple-access" "^7.15.4" - "@babel/helper-split-export-declaration" "^7.15.4" - "@babel/helper-validator-identifier" "^7.14.9" - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-module-transforms@^7.18.6", "@babel/helper-module-transforms@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz#5a1079c005135ed627442df31a42887e80fcb712" - integrity sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - "@babel/helper-split-export-declaration" "^7.18.6" - "@babel/helper-validator-identifier" "^7.18.6" - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-optimise-call-expression@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz#f310a5121a3b9cc52d9ab19122bd729822dee171" - integrity sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-optimise-call-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz#9369aa943ee7da47edab2cb4e838acf09d290ffe" - integrity sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-plugin-utils@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" - integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== - -"@babel/helper-plugin-utils@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" - integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== - -"@babel/helper-plugin-utils@^7.12.13": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz#806526ce125aed03373bc416a828321e3a6a33af" - integrity sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ== - -"@babel/helper-plugin-utils@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" - integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== - -"@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz#4b8aea3b069d8cb8a72cdfe28ddf5ceca695ef2f" - integrity sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w== - -"@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" - integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== - -"@babel/helper-regex@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.8.3.tgz#139772607d51b93f23effe72105b319d2a4c6965" - integrity sha512-BWt0QtYv/cg/NecOAZMdcn/waj/5P26DR4mVLXfFtDokSR6fyuG0Pj+e2FqtSME+MqED1khnSMulkmGl8qWiUQ== - dependencies: - lodash "^4.17.13" - -"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz#997458a0e3357080e54e1d79ec347f8a8cd28519" - integrity sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-wrap-function" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-replace-supers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz#52a8ab26ba918c7f6dee28628b07071ac7b7347a" - integrity sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.15.4" - "@babel/helper-optimise-call-expression" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helper-replace-supers@^7.18.6", "@babel/helper-replace-supers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz#1092e002feca980fbbb0bd4d51b74a65c6a500e6" - integrity sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-member-expression-to-functions" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helper-simple-access@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz#ac368905abf1de8e9781434b635d8f8674bcc13b" - integrity sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-simple-access@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz#d6d8f51f4ac2978068df934b569f08f29788c7ea" - integrity sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-skip-transparent-expression-wrappers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz#778d87b3a758d90b471e7b9918f34a9a02eb5818" - integrity sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw== - dependencies: - "@babel/types" "^7.18.9" - -"@babel/helper-split-export-declaration@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz#aecab92dcdbef6a10aa3b62ab204b085f776e257" - integrity sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw== - dependencies: - "@babel/types" "^7.15.4" - -"@babel/helper-split-export-declaration@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" - integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== - dependencies: - "@babel/types" "^7.18.6" - -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== - dependencies: - "@babel/types" "^7.22.5" - -"@babel/helper-string-parser@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" - integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== - -"@babel/helper-string-parser@^7.23.4": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" - integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== - -"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== - -"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" - integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== - -"@babel/helper-validator-identifier@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" - integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== - -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== - -"@babel/helper-validator-identifier@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" - integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== - -"@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== - -"@babel/helper-validator-option@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" - integrity sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw== - -"@babel/helper-wrap-function@^7.18.9": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.18.10.tgz#a7fcd3ab9b1be4c9b52cf7d7fdc1e88c2ce93396" - integrity sha512-95NLBP59VWdfK2lyLKe6eTMq9xg+yWKzxzxbJ1wcYNi1Auz200+83fMDADjRxBvc2QQor5zja2yTQzXGhk2GtQ== - dependencies: - "@babel/helper-function-name" "^7.18.9" - "@babel/template" "^7.18.10" - "@babel/traverse" "^7.18.10" - "@babel/types" "^7.18.10" - -"@babel/helpers@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.15.4.tgz#5f40f02050a3027121a3cf48d497c05c555eaf43" - integrity sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ== - dependencies: - "@babel/template" "^7.15.4" - "@babel/traverse" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/helpers@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.18.9.tgz#4bef3b893f253a1eced04516824ede94dcfe7ff9" - integrity sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ== - dependencies: - "@babel/template" "^7.18.6" - "@babel/traverse" "^7.18.9" - "@babel/types" "^7.18.9" - -"@babel/helpers@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.7.4.tgz#62c215b9e6c712dadc15a9a0dcab76c92a940302" - integrity sha512-ak5NGZGJ6LV85Q1Zc9gn2n+ayXOizryhjSUBTdu5ih1tlVCJeuQENzc4ItyCVhINVXvIT/ZQ4mheGIsfBkpskg== - dependencies: - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" - "@babel/types" "^7.7.4" - -"@babel/highlight@^7.0.0": - version "7.5.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" - integrity sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ== - dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^4.0.0" - -"@babel/highlight@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" - integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== - dependencies: - "@babel/helper-validator-identifier" "^7.10.4" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.12.13": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.13.8.tgz#10b2dac78526424dfc1f47650d0e415dfd9dc481" - integrity sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" - integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== - dependencies: - "@babel/helper-validator-identifier" "^7.18.6" - chalk "^2.0.0" - js-tokens "^4.0.0" - -"@babel/highlight@^7.24.2": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" - integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== - dependencies: - "@babel/helper-validator-identifier" "^7.22.20" - chalk "^2.4.2" - js-tokens "^4.0.0" - picocolors "^1.0.0" - -"@babel/node@~7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/node/-/node-7.18.10.tgz#ab2be57785346b5bf0721c3d17572402419d9d8a" - integrity sha512-VbqzK6QXfQVi4Bpk6J7XqHXKFNbG2j3rdIdx68+/14GDU7jXDOSyUU/cwqCM1fDwCdxp37pNV/ToSCXsNChcyA== - dependencies: - "@babel/register" "^7.18.9" - commander "^4.0.1" - core-js "^3.22.1" - node-environment-flags "^1.0.5" - regenerator-runtime "^0.13.4" - v8flags "^3.1.1" - -"@babel/parser@^7.1.0", "@babel/parser@^7.7.4", "@babel/parser@^7.7.5": - version "7.7.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.5.tgz#cbf45321619ac12d83363fcf9c94bb67fa646d71" - integrity sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig== - -"@babel/parser@^7.12.7": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" - integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== - -"@babel/parser@^7.14.7", "@babel/parser@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.10.tgz#94b5f8522356e69e8277276adf67ed280c90ecc1" - integrity sha512-TYk3OA0HKL6qNryUayb5UUEhM/rkOQozIBEA5ITXh5DWrSp0TlUQXMyZmnWxG/DizSWBeeQ0Zbc5z8UGaaqoeg== - -"@babel/parser@^7.15.4", "@babel/parser@^7.15.5": - version "7.15.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.5.tgz#d33a58ca69facc05b26adfe4abebfed56c1c2dac" - integrity sha512-2hQstc6I7T6tQsWzlboMh3SgMRPaS4H6H7cPQsJkdzTzEGqQrpLDsE2BGASU5sBPoEQyHzeqU6C8uKbFeEk6sg== - -"@babel/parser@^7.24.0", "@babel/parser@^7.24.1": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.4.tgz#234487a110d89ad5a3ed4a8a566c36b9453e8c88" - integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg== - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" - integrity sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz#a11af19aa373d68d561f08e0a57242350ed0ec50" - integrity sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - -"@babel/plugin-proposal-async-generator-functions@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz#85ea478c98b0095c3e4102bff3b67d306ed24952" - integrity sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew== - dependencies: - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-remap-async-to-generator" "^7.18.9" - "@babel/plugin-syntax-async-generators" "^7.8.4" - -"@babel/plugin-proposal-class-properties@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" - integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-class-static-block@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz#8aa81d403ab72d3962fc06c26e222dacfc9b9020" - integrity sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - -"@babel/plugin-proposal-dynamic-import@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" - integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - -"@babel/plugin-proposal-export-namespace-from@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" - integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - -"@babel/plugin-proposal-json-strings@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" - integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - -"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz#8148cbb350483bf6220af06fa6db3690e14b2e23" - integrity sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - -"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" - integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - -"@babel/plugin-proposal-numeric-separator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" - integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - -"@babel/plugin-proposal-object-rest-spread@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz#f9434f6beb2c8cae9dfcf97d2a5941bbbf9ad4e7" - integrity sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q== - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.18.8" - -"@babel/plugin-proposal-optional-catch-binding@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" - integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - -"@babel/plugin-proposal-optional-chaining@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz#e8e8fe0723f2563960e4bf5e9690933691915993" - integrity sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-proposal-private-methods@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" - integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-private-property-in-object@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz#a64137b232f0aca3733a67eb1a144c192389c503" - integrity sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-create-class-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - -"@babel/plugin-proposal-unicode-property-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" - integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-proposal-unicode-property-regex@^7.4.4": - version "7.8.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.8.8.tgz#ee3a95e90cdc04fe8cd92ec3279fa017d68a0d1d" - integrity sha512-EVhjVsMpbhLw9ZfHWSx2iy13Q8Z/eg8e8ccVWt23sWQK5l1UdkoLJPN5w69UA4uITGBnEZD2JOe4QOHycYKv8A== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.8" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-async-generators@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" - integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-bigint@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" - integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-class-properties@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" - integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== - dependencies: - "@babel/helper-plugin-utils" "^7.12.13" - -"@babel/plugin-syntax-class-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz#6cb933a8872c8d359bfde69bbeaae5162fd1e8f7" - integrity sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" - integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-import-assertions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz#cd6190500a4fa2fe31990a963ffab4b63e4505e4" - integrity sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-import-meta@^7.8.3": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" - integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-json-strings@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" - integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" - integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.8.3.tgz#3995d7d7ffff432f6ddc742b47e730c054599897" - integrity sha512-Zpg2Sgc++37kuFl6ppq2Q7Awc6E6AIW671x5PY8E/f7MCIyPPGK/EoeZXvvY3P42exZ3Q4/t3YOzP/HiN79jDg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" - integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-numeric-separator@^7.10.4": - version "7.10.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" - integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== - dependencies: - "@babel/helper-plugin-utils" "^7.10.4" - -"@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" - integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-catch-binding@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" - integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-optional-chaining@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" - integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== - dependencies: - "@babel/helper-plugin-utils" "^7.8.0" - -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" - integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.8.3.tgz#3acdece695e6b13aaf57fc291d1a800950c71391" - integrity sha512-kwj1j9lL/6Wd0hROD3b/OZZ7MSrZLqqn9RAZ5+cYYsflQ9HZBIKCUkr3+uL1MEJ1NePiUbf98jjiMQSv0NMR9g== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-typescript@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.18.6.tgz#1c09cd25795c7c2b8a4ba9ae49394576d4133285" - integrity sha512-mAWAuq4rvOepWCBid55JuRNvpTNf2UGVgoz4JV0fXEKolsVZDzsa4NqCef758WZJj/GDu0gVGItjKFiClTAmZA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-syntax-typescript@^7.7.2": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz#b82c6ce471b165b5ce420cf92914d6fb46225716" - integrity sha512-u6OXzDaIXjEstBRRoBCQ/uKQKlbuaeE5in0RvWdA4pN6AhqxTIwUsnHPU1CFZA/amYObMsuWhYfRl3Ch90HD0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-transform-arrow-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz#19063fcf8771ec7b31d742339dac62433d0611fe" - integrity sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-async-to-generator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" - integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== - dependencies: - "@babel/helper-module-imports" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-remap-async-to-generator" "^7.18.6" - -"@babel/plugin-transform-block-scoped-functions@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz#9187bf4ba302635b9d70d986ad70f038726216a8" - integrity sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-block-scoping@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz#f9b7e018ac3f373c81452d6ada8bd5a18928926d" - integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-classes@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz#90818efc5b9746879b869d5ce83eb2aa48bbc3da" - integrity sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g== - dependencies: - "@babel/helper-annotate-as-pure" "^7.18.6" - "@babel/helper-environment-visitor" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-optimise-call-expression" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-replace-supers" "^7.18.9" - "@babel/helper-split-export-declaration" "^7.18.6" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz#2357a8224d402dad623caf6259b611e56aec746e" - integrity sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-destructuring@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz#68906549c021cb231bee1db21d3b5b095f8ee292" - integrity sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-dotall-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz#b286b3e7aae6c7b861e45bed0a2fafd6b1a4fef8" - integrity sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-dotall-regex@^7.4.4": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.8.3.tgz#c3c6ec5ee6125c6993c5cbca20dc8621a9ea7a6e" - integrity sha512-kLs1j9Nn4MQoBYdRXH6AeaXMbEJFaFu/v1nQkvib6QzTj8MZI5OQzqmD83/2jEM1z0DLilra5aWO5YpyC0ALIw== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.8.3" - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-transform-duplicate-keys@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz#687f15ee3cdad6d85191eb2a372c4528eaa0ae0e" - integrity sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-exponentiation-operator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz#421c705f4521888c65e91fdd1af951bfefd4dacd" - integrity sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw== - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-for-of@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz#6ef8a50b244eb6a0bdbad0c7c61877e4e30097c1" - integrity sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-function-name@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz#cc354f8234e62968946c61a46d6365440fc764e0" - integrity sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ== - dependencies: - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-function-name" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-literals@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz#72796fdbef80e56fba3c6a699d54f0de557444bc" - integrity sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-member-expression-literals@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz#ac9fdc1a118620ac49b7e7a5d2dc177a1bfee88e" - integrity sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-modules-amd@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz#8c91f8c5115d2202f277549848874027d7172d21" - integrity sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg== - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-commonjs@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz#afd243afba166cca69892e24a8fd8c9f2ca87883" - integrity sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q== - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-simple-access" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-systemjs@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz#545df284a7ac6a05125e3e405e536c5853099a06" - integrity sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A== - dependencies: - "@babel/helper-hoist-variables" "^7.18.6" - "@babel/helper-module-transforms" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-validator-identifier" "^7.18.6" - babel-plugin-dynamic-import-node "^2.3.3" - -"@babel/plugin-transform-modules-umd@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz#81d3832d6034b75b54e62821ba58f28ed0aab4b9" - integrity sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ== - dependencies: - "@babel/helper-module-transforms" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz#c89bfbc7cc6805d692f3a49bc5fc1b630007246d" - integrity sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-new-target@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz#d128f376ae200477f37c4ddfcc722a8a1b3246a8" - integrity sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-object-super@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz#fb3c6ccdd15939b6ff7939944b51971ddc35912c" - integrity sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-replace-supers" "^7.18.6" - -"@babel/plugin-transform-parameters@^7.18.8": - version "7.18.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz#ee9f1a0ce6d78af58d0956a9378ea3427cccb48a" - integrity sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-property-literals@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz#e22498903a483448e94e032e9bbb9c5ccbfc93a3" - integrity sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-regenerator@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz#585c66cb84d4b4bf72519a34cfce761b8676ca73" - integrity sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - regenerator-transform "^0.15.0" - -"@babel/plugin-transform-reserved-words@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz#b1abd8ebf8edaa5f7fe6bbb8d2133d23b6a6f76a" - integrity sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-shorthand-properties@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz#6d6df7983d67b195289be24909e3f12a8f664dc9" - integrity sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-spread@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz#6ea7a6297740f381c540ac56caf75b05b74fb664" - integrity sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.18.9" - -"@babel/plugin-transform-sticky-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz#c6706eb2b1524028e317720339583ad0f444adcc" - integrity sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/plugin-transform-template-literals@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz#04ec6f10acdaa81846689d63fae117dd9c243a5e" - integrity sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-typeof-symbol@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz#c8cea68263e45addcd6afc9091429f80925762c0" - integrity sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-typescript@^7.18.6": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.18.10.tgz#b23401b32f1f079396bcaed01667a54ebe4f9f85" - integrity sha512-j2HQCJuMbi88QftIb5zlRu3c7PU+sXNnscqsrjqegoGiCgXR569pEdben9vly5QHKL2ilYkfnSwu64zsZo/VYQ== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/plugin-syntax-typescript" "^7.18.6" - -"@babel/plugin-transform-unicode-escapes@^7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz#1ecfb0eda83d09bbcb77c09970c2dd55832aa246" - integrity sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.9" - -"@babel/plugin-transform-unicode-regex@^7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz#194317225d8c201bbae103364ffe9e2cea36cdca" - integrity sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.18.6" - "@babel/helper-plugin-utils" "^7.18.6" - -"@babel/preset-env@~7.18.10": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.10.tgz#83b8dfe70d7eea1aae5a10635ab0a5fe60dfc0f4" - integrity sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA== - dependencies: - "@babel/compat-data" "^7.18.8" - "@babel/helper-compilation-targets" "^7.18.9" - "@babel/helper-plugin-utils" "^7.18.9" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-async-generator-functions" "^7.18.10" - "@babel/plugin-proposal-class-properties" "^7.18.6" - "@babel/plugin-proposal-class-static-block" "^7.18.6" - "@babel/plugin-proposal-dynamic-import" "^7.18.6" - "@babel/plugin-proposal-export-namespace-from" "^7.18.9" - "@babel/plugin-proposal-json-strings" "^7.18.6" - "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" - "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" - "@babel/plugin-proposal-numeric-separator" "^7.18.6" - "@babel/plugin-proposal-object-rest-spread" "^7.18.9" - "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" - "@babel/plugin-proposal-optional-chaining" "^7.18.9" - "@babel/plugin-proposal-private-methods" "^7.18.6" - "@babel/plugin-proposal-private-property-in-object" "^7.18.6" - "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.18.6" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" - "@babel/plugin-transform-arrow-functions" "^7.18.6" - "@babel/plugin-transform-async-to-generator" "^7.18.6" - "@babel/plugin-transform-block-scoped-functions" "^7.18.6" - "@babel/plugin-transform-block-scoping" "^7.18.9" - "@babel/plugin-transform-classes" "^7.18.9" - "@babel/plugin-transform-computed-properties" "^7.18.9" - "@babel/plugin-transform-destructuring" "^7.18.9" - "@babel/plugin-transform-dotall-regex" "^7.18.6" - "@babel/plugin-transform-duplicate-keys" "^7.18.9" - "@babel/plugin-transform-exponentiation-operator" "^7.18.6" - "@babel/plugin-transform-for-of" "^7.18.8" - "@babel/plugin-transform-function-name" "^7.18.9" - "@babel/plugin-transform-literals" "^7.18.9" - "@babel/plugin-transform-member-expression-literals" "^7.18.6" - "@babel/plugin-transform-modules-amd" "^7.18.6" - "@babel/plugin-transform-modules-commonjs" "^7.18.6" - "@babel/plugin-transform-modules-systemjs" "^7.18.9" - "@babel/plugin-transform-modules-umd" "^7.18.6" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" - "@babel/plugin-transform-new-target" "^7.18.6" - "@babel/plugin-transform-object-super" "^7.18.6" - "@babel/plugin-transform-parameters" "^7.18.8" - "@babel/plugin-transform-property-literals" "^7.18.6" - "@babel/plugin-transform-regenerator" "^7.18.6" - "@babel/plugin-transform-reserved-words" "^7.18.6" - "@babel/plugin-transform-shorthand-properties" "^7.18.6" - "@babel/plugin-transform-spread" "^7.18.9" - "@babel/plugin-transform-sticky-regex" "^7.18.6" - "@babel/plugin-transform-template-literals" "^7.18.9" - "@babel/plugin-transform-typeof-symbol" "^7.18.9" - "@babel/plugin-transform-unicode-escapes" "^7.18.10" - "@babel/plugin-transform-unicode-regex" "^7.18.6" - "@babel/preset-modules" "^0.1.5" - "@babel/types" "^7.18.10" - babel-plugin-polyfill-corejs2 "^0.3.2" - babel-plugin-polyfill-corejs3 "^0.5.3" - babel-plugin-polyfill-regenerator "^0.4.0" - core-js-compat "^3.22.1" - semver "^6.3.0" - -"@babel/preset-modules@^0.1.5": - version "0.1.5" - resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.5.tgz#ef939d6e7f268827e1841638dc6ff95515e115d9" - integrity sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" - "@babel/plugin-transform-dotall-regex" "^7.4.4" - "@babel/types" "^7.4.4" - esutils "^2.0.2" - -"@babel/preset-typescript@~7.18.6": - version "7.18.6" - resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.18.6.tgz#ce64be3e63eddc44240c6358daefac17b3186399" - integrity sha512-s9ik86kXBAnD760aybBucdpnLsAt0jK1xqJn2juOn9lkOvSHV60os5hxoVJsPzMQxvnUJFAlkont2DvvaYEBtQ== - dependencies: - "@babel/helper-plugin-utils" "^7.18.6" - "@babel/helper-validator-option" "^7.18.6" - "@babel/plugin-transform-typescript" "^7.18.6" - -"@babel/register@^7.18.9": - version "7.18.9" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.18.9.tgz#1888b24bc28d5cc41c412feb015e9ff6b96e439c" - integrity sha512-ZlbnXDcNYHMR25ITwwNKT88JiaukkdVj/nG7r3wnuXkOTHc60Uy05PwMCPre0hSkY68E6zK3xz+vUJSP2jWmcw== - dependencies: - clone-deep "^4.0.1" - find-cache-dir "^2.0.0" - make-dir "^2.1.0" - pirates "^4.0.5" - source-map-support "^0.5.16" - -"@babel/runtime@^7.8.4": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" - integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== - dependencies: - regenerator-runtime "^0.13.4" - -"@babel/template@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.15.4.tgz#51898d35dcf3faa670c4ee6afcfd517ee139f194" - integrity sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.15.4" - "@babel/types" "^7.15.4" - -"@babel/template@^7.18.10", "@babel/template@^7.18.6": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" - integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== - dependencies: - "@babel/code-frame" "^7.18.6" - "@babel/parser" "^7.18.10" - "@babel/types" "^7.18.10" - -"@babel/template@^7.22.15": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" - integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== - dependencies: - "@babel/code-frame" "^7.23.5" - "@babel/parser" "^7.24.0" - "@babel/types" "^7.24.0" - -"@babel/template@^7.3.3": - version "7.12.7" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" - integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== - dependencies: - "@babel/code-frame" "^7.10.4" - "@babel/parser" "^7.12.7" - "@babel/types" "^7.12.7" - -"@babel/template@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.7.4.tgz#428a7d9eecffe27deac0a98e23bf8e3675d2a77b" - integrity sha512-qUzihgVPguAzXCK7WXw8pqs6cEwi54s3E+HrejlkuWO6ivMKx9hZl3Y2fSXp9i5HgyWmj7RKP+ulaYnKM4yYxw== - dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/parser" "^7.7.4" - "@babel/types" "^7.7.4" - -"@babel/traverse@^7.15.4", "@babel/traverse@^7.18.10", "@babel/traverse@^7.18.9", "@babel/traverse@^7.7.2", "@babel/traverse@^7.7.4": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" - integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== - dependencies: - "@babel/code-frame" "^7.24.1" - "@babel/generator" "^7.24.1" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.24.1" - "@babel/types" "^7.24.0" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.7.4": - version "7.7.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.7.4.tgz#516570d539e44ddf308c07569c258ff94fde9193" - integrity sha512-cz5Ji23KCi4T+YIE/BolWosrJuSmoZeN1EFnRtBwF+KKLi8GG/Z2c2hOJJeCXPk4mwk4QFvTmwIodJowXgttRA== - dependencies: - esutils "^2.0.2" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@babel/types@^7.12.7", "@babel/types@^7.3.3": - version "7.12.12" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" - integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - lodash "^4.17.19" - to-fast-properties "^2.0.0" - -"@babel/types@^7.15.4": - version "7.15.4" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.4.tgz#74eeb86dbd6748d2741396557b9860e57fce0a0d" - integrity sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw== - dependencies: - "@babel/helper-validator-identifier" "^7.14.9" - to-fast-properties "^2.0.0" - -"@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.18.9": - version "7.18.10" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.10.tgz#4908e81b6b339ca7c6b7a555a5fc29446f26dde6" - integrity sha512-MJvnbEiiNkpjo+LknnmRrqbY1GPUUggjv+wQVjetM/AONoupqRALB7I6jGqNUAZsKcRIEu2J6FRFvsczljjsaQ== - dependencies: - "@babel/helper-string-parser" "^7.18.10" - "@babel/helper-validator-identifier" "^7.18.6" - to-fast-properties "^2.0.0" - -"@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" - integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== - dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" - to-fast-properties "^2.0.0" - -"@babel/types@^7.4.4", "@babel/types@^7.8.3": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.5.tgz#89231f82915a8a566a703b3b20133f73da6b9444" - integrity sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg== - dependencies: - "@babel/helper-validator-identifier" "^7.9.5" - lodash "^4.17.13" - to-fast-properties "^2.0.0" - -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== - -"@eslint/eslintrc@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.3.0.tgz#29f92c30bb3e771e4a2048c95fa6855392dfac4f" - integrity sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.3.2" - globals "^13.15.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@exercism/static-analysis@^0.12.0": - version "0.12.0" - resolved "https://registry.yarnpkg.com/@exercism/static-analysis/-/static-analysis-0.12.0.tgz#05cac2d3379bda318d5a014ade2ce59095aeaa38" - integrity sha512-SMzVabTnp3YMpvZzpruZouFz5ocHSq5vHd84Gs0auYidwvHZRRen9ae7MjeYOEmUM7FCysIZtDlvSvGEsfumlA== - -"@humanwhocodes/config-array@^0.10.4": - version "0.10.4" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.10.4.tgz#01e7366e57d2ad104feea63e72248f22015c520c" - integrity sha512-mXAIHxZT3Vcpg83opl1wGlVZ9xydbfZO3r5YfRSH6Gpp2J/PfdBP0wbDa2sO6/qRbcalpoevVyW6A/fI6LfeMw== - dependencies: - "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.4" - -"@humanwhocodes/gitignore-to-minimatch@^1.0.2": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz#316b0a63b91c10e53f242efb4ace5c3b34e8728d" - integrity sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA== - -"@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== - -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" - integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.2" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" - integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== - -"@jest/console@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-27.5.1.tgz#260fe7239602fe5130a94f1aa386eff54b014bba" - integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^27.5.1" - jest-util "^27.5.1" - slash "^3.0.0" - -"@jest/core@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-27.5.1.tgz#267ac5f704e09dc52de2922cbf3af9edcd64b626" - integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ== - dependencies: - "@jest/console" "^27.5.1" - "@jest/reporters" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.8.1" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^27.5.1" - jest-config "^27.5.1" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-resolve-dependencies "^27.5.1" - jest-runner "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - jest-watcher "^27.5.1" - micromatch "^4.0.4" - rimraf "^3.0.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/environment@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-27.5.1.tgz#d7425820511fe7158abbecc010140c3fd3be9c74" - integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA== - dependencies: - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - -"@jest/fake-timers@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-27.5.1.tgz#76979745ce0579c8a94a4678af7a748eda8ada74" - integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ== - dependencies: - "@jest/types" "^27.5.1" - "@sinonjs/fake-timers" "^8.0.1" - "@types/node" "*" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-util "^27.5.1" - -"@jest/globals@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-27.5.1.tgz#7ac06ce57ab966566c7963431cef458434601b2b" - integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/types" "^27.5.1" - expect "^27.5.1" - -"@jest/reporters@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-27.5.1.tgz#ceda7be96170b03c923c37987b64015812ffec04" - integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.2" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^5.1.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-haste-map "^27.5.1" - jest-resolve "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - slash "^3.0.0" - source-map "^0.6.0" - string-length "^4.0.1" - terminal-link "^2.0.0" - v8-to-istanbul "^8.1.0" - -"@jest/source-map@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-27.5.1.tgz#6608391e465add4205eae073b55e7f279e04e8cf" - integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg== - dependencies: - callsites "^3.0.0" - graceful-fs "^4.2.9" - source-map "^0.6.0" - -"@jest/test-result@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-27.5.1.tgz#56a6585fa80f7cdab72b8c5fc2e871d03832f5bb" - integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag== - dependencies: - "@jest/console" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz#4057e0e9cea4439e544c6353c6affe58d095745b" - integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ== - dependencies: - "@jest/test-result" "^27.5.1" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-runtime "^27.5.1" - -"@jest/transform@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-27.5.1.tgz#6c3501dcc00c4c08915f292a600ece5ecfe1f409" - integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw== - dependencies: - "@babel/core" "^7.1.0" - "@jest/types" "^27.5.1" - babel-plugin-istanbul "^6.1.1" - chalk "^4.0.0" - convert-source-map "^1.4.0" - fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-regex-util "^27.5.1" - jest-util "^27.5.1" - micromatch "^4.0.4" - pirates "^4.0.4" - slash "^3.0.0" - source-map "^0.6.1" - write-file-atomic "^3.0.0" - -"@jest/types@^27.1.0": - version "27.1.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.1.0.tgz#674a40325eab23c857ebc0689e7e191a3c5b10cc" - integrity sha512-pRP5cLIzN7I7Vp6mHKRSaZD7YpBTK7hawx5si8trMKqk4+WOdK8NEKOTO2G8PKWD1HbKMVckVB6/XHh/olhf2g== - 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" - -"@jest/types@^27.5.1": - version "27.5.1" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-27.5.1.tgz#3c79ec4a8ba61c170bf937bcf9e98a9df175ec80" - integrity sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw== - 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" - -"@jridgewell/gen-mapping@^0.1.0": - version "0.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" - integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== - dependencies: - "@jridgewell/set-array" "^1.0.0" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@jridgewell/gen-mapping@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" - -"@jridgewell/gen-mapping@^0.3.5": - version "0.3.5" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" - integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== - dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.0.3": - version "3.1.0" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78" - integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w== - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/set-array@^1.0.0", "@jridgewell/set-array@^1.0.1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" - integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== - -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/sourcemap-codec@^1.4.10": - version "1.4.14" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" - integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw== - -"@jridgewell/sourcemap-codec@^1.4.14": - version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" - integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== - -"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": - version "0.3.25" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@jridgewell/trace-mapping@^0.3.8", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.14" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed" - integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ== - dependencies: - "@jridgewell/resolve-uri" "^3.0.3" - "@jridgewell/sourcemap-codec" "^1.4.10" - -"@nicolo-ribaudo/chokidar-2@2.1.8-no-fsevents.3": - version "2.1.8-no-fsevents.3" - resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz#323d72dd25103d0c4fbdce89dadf574a787b1f9b" - integrity sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ== - -"@nodelib/fs.scandir@2.1.4": - version "2.1.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz#d4b3549a5db5de2683e0c1071ab4f140904bbf69" - integrity sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA== - dependencies: - "@nodelib/fs.stat" "2.0.4" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.4", "@nodelib/fs.stat@^2.0.2": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz#a3f2dd61bab43b8db8fa108a121cfffe4c676655" - integrity sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz#cce9396b30aa5afe9e3756608f5831adcb53d063" - integrity sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow== - dependencies: - "@nodelib/fs.scandir" "2.1.4" - fastq "^1.6.0" - -"@sinonjs/commons@^1.7.0": - version "1.7.2" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.2.tgz#505f55c74e0272b43f6c52d81946bed7058fc0e2" - integrity sha512-+DUO6pnp3udV/v2VfUWgaY5BIE1IfT7lLfeDzPVeMT1XKkaAp9LgSI9x5RtrFQoZ9Oi0PgXQQHPaoKu7dCjVxw== - dependencies: - type-detect "4.0.8" - -"@sinonjs/fake-timers@^8.0.1": - version "8.0.1" - resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-8.0.1.tgz#1c1c9a91419f804e59ae8df316a07dd1c3a76b94" - integrity sha512-AU7kwFxreVd6OAXcAFlKSmZquiRUU0FvYm44k1Y1QbK7Co4m0aqfGMhjykIeQp/H6rcl+nFmj0zfdUcGVs9Dew== - dependencies: - "@sinonjs/commons" "^1.7.0" - -"@tootallnate/once@1": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" - integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== - -"@tsconfig/recommended@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@tsconfig/recommended/-/recommended-1.0.1.tgz#7619bad397e06ead1c5182926c944e0ca6177f52" - integrity sha512-2xN+iGTbPBEzGSnVp/Hd64vKJCJWxsi9gfs88x4PPMyEjHJoA3o5BY9r5OLPHIZU2pAQxkSAsJFqn6itClP8mQ== - -"@types/babel__core@^7.0.0": - version "7.1.12" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" - integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__core@^7.1.14": - version "7.1.15" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.15.tgz#2ccfb1ad55a02c83f8e0ad327cbc332f55eb1024" - integrity sha512-bxlMKPDbY8x5h6HBwVzEOk2C8fb6SLfYQ5Jw3uBYuYF1lfWk/kbLd81la82vrIkBb0l+JdmrZaDikPrNxpS/Ew== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.1" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" - integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" - integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.8" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.8.tgz#479a4ee3e291a403a1096106013ec22cf9b64012" - integrity sha512-yGeB2dHEdvxjP0y4UbRtQaSkXJ9649fYCmIdRoul5kfAoGCwxuCbMhag0k3RPfnuh9kPGm8x89btcfDEXdVWGw== - dependencies: - "@babel/types" "^7.3.0" - -"@types/babel__traverse@^7.0.4": - version "7.11.0" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.0.tgz#b9a1efa635201ba9bc850323a8793ee2d36c04a0" - integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg== - dependencies: - "@babel/types" "^7.3.0" - -"@types/color-name@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" - integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== - -"@types/graceful-fs@^4.1.2": - version "4.1.4" - resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.4.tgz#4ff9f641a7c6d1a3508ff88bc3141b152772e753" - integrity sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg== - dependencies: - "@types/node" "*" - -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" - integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== - -"@types/istanbul-lib-report@*": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz#e5471e7fa33c61358dd38426189c037a58433b8c" - integrity sha512-3BUTyMzbZa2DtDI2BkERNC6jJw2Mr2Y0oGI7mRxYNBPxppbtEK1F66u3bKwU2g+wxwWI7PAoRpJnOY1grJqzHg== - dependencies: - "@types/istanbul-lib-coverage" "*" - -"@types/istanbul-reports@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" - integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== - dependencies: - "@types/istanbul-lib-report" "*" - -"@types/jest@^27.5.2": - version "27.5.2" - resolved "https://registry.yarnpkg.com/@types/jest/-/jest-27.5.2.tgz#ec49d29d926500ffb9fd22b84262e862049c026c" - integrity sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA== - dependencies: - jest-matcher-utils "^27.0.0" - pretty-format "^27.0.0" - -"@types/json-schema@^7.0.9": - version "7.0.11" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" - integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== - -"@types/json5@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" - integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= - -"@types/node@*": - version "14.14.19" - resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.19.tgz#5135176a8330b88ece4e9ab1fdcfc0a545b4bab4" - integrity sha512-4nhBPStMK04rruRVtVc6cDqhu7S9GZai0fpXgPXrFpcPX6Xul8xnrjSdGB4KPBVYG/R5+fXWdCM8qBoiULWGPQ== - -"@types/node@^16.11.47": - version "16.11.47" - resolved "https://registry.yarnpkg.com/@types/node/-/node-16.11.47.tgz#efa9e3e0f72e7aa6a138055dace7437a83d9f91c" - integrity sha512-fpP+jk2zJ4VW66+wAMFoBJlx1bxmBKx4DUFf68UHgdGCOuyUTDlLWqsaNPJh7xhNDykyJ9eIzAygilP/4WoN8g== - -"@types/prettier@^2.1.5": - version "2.3.2" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.3.2.tgz#fc8c2825e4ed2142473b4a81064e6e081463d1b3" - integrity sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog== - -"@types/stack-utils@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" - integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== - -"@types/yargs-parser@*": - version "13.1.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-13.1.0.tgz#c563aa192f39350a1d18da36c5a8da382bbd8228" - integrity sha512-gCubfBUZ6KxzoibJ+SCUc/57Ms1jz5NjHe4+dI2krNmU5zCPAphyLJYyTOg06ueIyfj+SaCUqmzun7ImlxDcKg== - -"@types/yargs@^16.0.0": - version "16.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-16.0.4.tgz#26aad98dd2c2a38e421086ea9ad42b9e51642977" - integrity sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw== - dependencies: - "@types/yargs-parser" "*" - -"@types/yargs@^17.0.10": - version "17.0.10" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.10.tgz#591522fce85d8739bca7b8bb90d048e4478d186a" - integrity sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA== - dependencies: - "@types/yargs-parser" "*" - -"@typescript-eslint/eslint-plugin@^5.32.0": - version "5.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.32.0.tgz#e27e38cffa4a61226327c874a7be965e9a861624" - integrity sha512-CHLuz5Uz7bHP2WgVlvoZGhf0BvFakBJKAD/43Ty0emn4wXWv5k01ND0C0fHcl/Im8Td2y/7h44E9pca9qAu2ew== - dependencies: - "@typescript-eslint/scope-manager" "5.32.0" - "@typescript-eslint/type-utils" "5.32.0" - "@typescript-eslint/utils" "5.32.0" - debug "^4.3.4" - functional-red-black-tree "^1.0.1" - ignore "^5.2.0" - regexpp "^3.2.0" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/parser@^5.32.0": - version "5.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.32.0.tgz#1de243443bc6186fb153b9e395b842e46877ca5d" - integrity sha512-IxRtsehdGV9GFQ35IGm5oKKR2OGcazUoiNBxhRV160iF9FoyuXxjY+rIqs1gfnd+4eL98OjeGnMpE7RF/NBb3A== - dependencies: - "@typescript-eslint/scope-manager" "5.32.0" - "@typescript-eslint/types" "5.32.0" - "@typescript-eslint/typescript-estree" "5.32.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.32.0": - version "5.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.32.0.tgz#763386e963a8def470580cc36cf9228864190b95" - integrity sha512-KyAE+tUON0D7tNz92p1uetRqVJiiAkeluvwvZOqBmW9z2XApmk5WSMV9FrzOroAcVxJZB3GfUwVKr98Dr/OjOg== - dependencies: - "@typescript-eslint/types" "5.32.0" - "@typescript-eslint/visitor-keys" "5.32.0" - -"@typescript-eslint/type-utils@5.32.0": - version "5.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.32.0.tgz#45a14506fe3fb908600b4cef2f70778f7b5cdc79" - integrity sha512-0gSsIhFDduBz3QcHJIp3qRCvVYbqzHg8D6bHFsDMrm0rURYDj+skBK2zmYebdCp+4nrd9VWd13egvhYFJj/wZg== - dependencies: - "@typescript-eslint/utils" "5.32.0" - debug "^4.3.4" - tsutils "^3.21.0" - -"@typescript-eslint/types@5.32.0": - version "5.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.32.0.tgz#484273021eeeae87ddb288f39586ef5efeb6dcd8" - integrity sha512-EBUKs68DOcT/EjGfzywp+f8wG9Zw6gj6BjWu7KV/IYllqKJFPlZlLSYw/PTvVyiRw50t6wVbgv4p9uE2h6sZrQ== - -"@typescript-eslint/typescript-estree@5.32.0", "@typescript-eslint/typescript-estree@^5.32.0": - version "5.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.32.0.tgz#282943f34babf07a4afa7b0ff347a8e7b6030d12" - integrity sha512-ZVAUkvPk3ITGtCLU5J4atCw9RTxK+SRc6hXqLtllC2sGSeMFWN+YwbiJR9CFrSFJ3w4SJfcWtDwNb/DmUIHdhg== - dependencies: - "@typescript-eslint/types" "5.32.0" - "@typescript-eslint/visitor-keys" "5.32.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/utils@5.32.0", "@typescript-eslint/utils@^5.10.0": - version "5.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.32.0.tgz#eccb6b672b94516f1afc6508d05173c45924840c" - integrity sha512-W7lYIAI5Zlc5K082dGR27Fczjb3Q57ECcXefKU/f0ajM5ToM0P+N9NmJWip8GmGu/g6QISNT+K6KYB+iSHjXCQ== - dependencies: - "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.32.0" - "@typescript-eslint/types" "5.32.0" - "@typescript-eslint/typescript-estree" "5.32.0" - eslint-scope "^5.1.1" - eslint-utils "^3.0.0" - -"@typescript-eslint/visitor-keys@5.32.0", "@typescript-eslint/visitor-keys@^5.32.0": - version "5.32.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.32.0.tgz#b9715d0b11fdb5dd10fd0c42ff13987470525394" - integrity sha512-S54xOHZgfThiZ38/ZGTgB2rqx51CMJ5MCfVT2IplK4Q7hgzGfe0nLzLCcenDnc/cSjP568hdeKfeDcBgqNHD/g== - dependencies: - "@typescript-eslint/types" "5.32.0" - eslint-visitor-keys "^3.3.0" - -abab@^2.0.3, abab@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" - integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== - -acorn-globals@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" - integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== - dependencies: - acorn "^7.1.1" - acorn-walk "^7.1.1" - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn-walk@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" - integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== - -acorn@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" - integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== - -acorn@^8.2.4: - version "8.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.4.1.tgz#56c36251fc7cabc7096adc18f05afe814321a28c" - integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== - -acorn@^8.8.0: - version "8.8.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8" - integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -ajv@^6.10.0, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-escapes@^4.2.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" - integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg== - dependencies: - type-fest "^0.8.1" - -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-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.0.tgz#5681f0dcf7ae5880a7841d8831c4724ed9cc0172" - integrity sha512-7kFQgnEaMdRtwf6uSfUnVr9gSGC7faurn+J/Mv90/W+iTtN0405/nLdopfMWwchyxhbGYl6TC4Sccn9TUkGAgg== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - -ansi-styles@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" - integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== - dependencies: - "@types/color-name" "^1.1.1" - color-convert "^2.0.1" - -ansi-styles@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" - integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== - -anymatch@^3.0.3, anymatch@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" - integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -array-includes@^3.1.4: - version "3.1.5" - resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.5.tgz#2c320010db8d31031fd2a5f6b3bbd4b1aad31bdb" - integrity sha512-iSDYZMMyTPkiFasVqfuAQnWAYcvO/SeBSCGKePoEthjp4LEMTe4uLc7b025o4jAZpHhihh8xPo99TNWUWWkGDQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - get-intrinsic "^1.1.1" - is-string "^1.0.7" - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -array.prototype.flat@^1.2.5: - version "1.3.0" - resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.0.tgz#0b0c1567bf57b38b56b4c97b8aa72ab45e4adc7b" - integrity sha512-12IUEkHsAhA4DY5s0FPgNXIdc8VRSqD9Zp78a5au9abH/SOBrsp082JOWFNTjkMozh8mqcdiKuaLGhPeYztxSw== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.2" - es-shim-unscopables "^1.0.0" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= - -babel-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-27.5.1.tgz#a1bf8d61928edfefd21da27eb86a695bfd691444" - integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg== - dependencies: - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^27.5.1" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - -babel-plugin-dynamic-import-node@^2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" - integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== - dependencies: - object.assign "^4.1.0" - -babel-plugin-istanbul@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" - integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== - dependencies: - "@babel/helper-plugin-utils" "^7.0.0" - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-instrument "^5.0.4" - test-exclude "^6.0.0" - -babel-plugin-jest-hoist@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz#9be98ecf28c331eb9f5df9c72d6f89deb8181c2e" - integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.0.0" - "@types/babel__traverse" "^7.0.6" - -babel-plugin-module-resolver@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/babel-plugin-module-resolver/-/babel-plugin-module-resolver-4.1.0.tgz#22a4f32f7441727ec1fbf4967b863e1e3e9f33e2" - integrity sha512-MlX10UDheRr3lb3P0WcaIdtCSRlxdQsB1sBqL7W0raF070bGl1HQQq5K3T2vf2XAYie+ww+5AKC/WrkjRO2knA== - dependencies: - find-babel-config "^1.2.0" - glob "^7.1.6" - pkg-up "^3.1.0" - reselect "^4.0.0" - resolve "^1.13.1" - -babel-plugin-polyfill-corejs2@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz#e4c31d4c89b56f3cf85b92558954c66b54bd972d" - integrity sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q== - dependencies: - "@babel/compat-data" "^7.17.7" - "@babel/helper-define-polyfill-provider" "^0.3.2" - semver "^6.1.1" - -babel-plugin-polyfill-corejs3@^0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" - integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" - core-js-compat "^3.21.0" - -babel-plugin-polyfill-regenerator@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz#8f51809b6d5883e07e71548d75966ff7635527fe" - integrity sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw== - dependencies: - "@babel/helper-define-polyfill-provider" "^0.3.2" - -babel-preset-current-node-syntax@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" - integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== - dependencies: - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-bigint" "^7.8.3" - "@babel/plugin-syntax-class-properties" "^7.8.3" - "@babel/plugin-syntax-import-meta" "^7.8.3" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.8.3" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-top-level-await" "^7.8.3" - -babel-preset-jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz#91f10f58034cb7989cb4f962b69fa6eef6a6bc81" - integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag== - dependencies: - babel-plugin-jest-hoist "^27.5.1" - babel-preset-current-node-syntax "^1.0.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -browser-process-hrtime@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" - integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== - -browserslist@^4.16.6: - version "4.16.8" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.8.tgz#cb868b0b554f137ba6e33de0ecff2eda403c4fb0" - integrity sha512-sc2m9ohR/49sWEbPj14ZSSZqp+kbi16aLao42Hmn3Z8FpjuMaq2xCA2l4zl9ITfyzvnvyE0hcg62YkIGKxgaNQ== - dependencies: - caniuse-lite "^1.0.30001251" - colorette "^1.3.0" - electron-to-chromium "^1.3.811" - escalade "^3.1.1" - node-releases "^1.1.75" - -browserslist@^4.20.2, browserslist@^4.21.3: - version "4.21.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a" - integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ== - dependencies: - caniuse-lite "^1.0.30001370" - electron-to-chromium "^1.4.202" - node-releases "^2.0.6" - update-browserslist-db "^1.0.5" - -bser@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" - integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== - dependencies: - node-int64 "^0.4.0" - -buffer-from@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" - integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== - -call-bind@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.0.tgz#24127054bb3f9bdcb4b1fb82418186072f77b8ce" - integrity sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^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" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== - dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -camelcase@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" - integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== - -caniuse-lite@^1.0.30001251: - version "1.0.30001254" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001254.tgz#974d45e8b7f6e3b63d4b1435e97752717612d4b9" - integrity sha512-GxeHOvR0LFMYPmFGA+NiTOt9uwYDxB3h154tW2yBYwfz2EMX3i1IBgr6gmJGfU0K8KQsqPa5XqLD8zVdP5lUzA== - -caniuse-lite@^1.0.30001370: - version "1.0.30001373" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001373.tgz#2dc3bc3bfcb5d5a929bec11300883040d7b4b4be" - integrity sha512-pJYArGHrPp3TUqQzFYRmP/lwJlj8RCbVe3Gd3eJQkAV8SAC6b19XS9BjMvRdvaS8RMkaTN8ZhoHP6S1y8zzwEQ== - -chalk@^2.0.0, chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^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== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - -chokidar@^3.4.0: - version "3.5.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== - dependencies: - anymatch "~3.1.1" - braces "~3.0.2" - glob-parent "~5.1.0" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.5.0" - optionalDependencies: - fsevents "~2.3.1" - -ci-info@^3.2.0: - version "3.3.2" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.3.2.tgz#6d2967ffa407466481c6c90b6e16b3098f080128" - integrity sha512-xmDt/QIAdeZ9+nfdPsaBCpMvHNLFiLdjj59qjqn+6iPe6YmHGQ35sBnQ8uslRBXFmXkiZQOJRjvQeoGppoTjjg== - -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== - -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== - dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= - -collect-v8-coverage@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" - integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorette@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.3.0.tgz#ff45d2f0edb244069d3b772adeb04fed38d0a0af" - integrity sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -commander@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== - dependencies: - safe-buffer "~5.1.1" - -core-js-compat@^3.21.0, core-js-compat@^3.22.1: - version "3.24.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.24.1.tgz#d1af84a17e18dfdd401ee39da9996f9a7ba887de" - integrity sha512-XhdNAGeRnTpp8xbD+sR/HFDK9CbeeeqXT6TuofXh3urqEevzkWmLRgrVoykodsw8okqo2pu1BOmuCKrHx63zdw== - dependencies: - browserslist "^4.21.3" - semver "7.0.0" - -core-js@^3.22.1, core-js@^3.24.1: - version "3.24.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.24.1.tgz#cf7724d41724154010a6576b7b57d94c5d66e64f" - integrity sha512-0QTBSYSUZ6Gq21utGzkfITDylE8jWC9Ne1D2MrhvlsZBI1x39OdDIVbzSqtgMndIy6BlHxBXpMGqzZmnztg2rg== - -cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cssom@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" - integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== - -cssom@~0.3.6: - version "0.3.8" - resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" - integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== - -cssstyle@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" - integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== - dependencies: - cssom "~0.3.6" - -data-urls@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" - integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== - dependencies: - abab "^2.0.3" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.0.0" - -debug@4: - version "4.3.2" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" - integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== - dependencies: - ms "2.1.2" - -debug@^2.6.9: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -debug@^3.2.7: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0, debug@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" - integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== - dependencies: - ms "^2.1.1" - -debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -decimal.js@^10.2.1: - version "10.3.1" - resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" - integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= - -deep-is@^0.1.3, deep-is@~0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -deepmerge@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" - integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== - -define-properties@^1.1.2, define-properties@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" - integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== - dependencies: - object-keys "^1.0.12" - -define-properties@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.4.tgz#0b14d7bd7fbeb2f3572c3a7eda80ea5d57fb05b1" - integrity sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA== - dependencies: - has-property-descriptors "^1.0.0" - object-keys "^1.1.1" - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= - -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - -diff-sequences@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" - integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" - integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== - dependencies: - esutils "^2.0.2" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -domexception@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" - integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== - dependencies: - webidl-conversions "^5.0.0" - -electron-to-chromium@^1.3.811: - version "1.3.830" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.830.tgz#40e3144204f8ca11b2cebec83cf14c20d3499236" - integrity sha512-gBN7wNAxV5vl1430dG+XRcQhD4pIeYeak6p6rjdCtlz5wWNwDad8jwvphe5oi1chL5MV6RNRikfffBBiFuj+rQ== - -electron-to-chromium@^1.4.202: - version "1.4.209" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.209.tgz#18ec3a0773fb3e39fc0a5c9373b2e7c72df584af" - integrity sha512-SfWI9G/e3rxGIUalHbUCH9yEsTpO+72y+cD1Sw0tYtuTrdOPaFAgZKXM1crWVJwTNmj6KIPbbx0NIoV8a2cFJw== - -emittery@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.8.1.tgz#bb23cc86d03b30aa75a7f734819dee2e1ba70860" - integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es-abstract@^1.18.0-next.1: - version "1.18.0-next.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.1.tgz#6e3a0a4bda717e5023ab3b8e90bec36108d22c68" - integrity sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA== - dependencies: - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - is-callable "^1.2.2" - is-negative-zero "^2.0.0" - is-regex "^1.1.1" - object-inspect "^1.8.0" - object-keys "^1.1.1" - object.assign "^4.1.1" - string.prototype.trimend "^1.0.1" - string.prototype.trimstart "^1.0.1" - -es-abstract@^1.19.0, es-abstract@^1.19.1, es-abstract@^1.19.2, es-abstract@^1.19.5: - version "1.20.1" - resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.20.1.tgz#027292cd6ef44bd12b1913b828116f54787d1814" - integrity sha512-WEm2oBhfoI2sImeM4OF2zE2V3BYdSF+KnSi9Sidz51fQHd7+JuF8Xgcj9/0o+OWeIeIS/MiuNnlruQrJf16GQA== - dependencies: - call-bind "^1.0.2" - es-to-primitive "^1.2.1" - function-bind "^1.1.1" - function.prototype.name "^1.1.5" - get-intrinsic "^1.1.1" - get-symbol-description "^1.0.0" - has "^1.0.3" - has-property-descriptors "^1.0.0" - has-symbols "^1.0.3" - internal-slot "^1.0.3" - is-callable "^1.2.4" - is-negative-zero "^2.0.2" - is-regex "^1.1.4" - is-shared-array-buffer "^1.0.2" - is-string "^1.0.7" - is-weakref "^1.0.2" - object-inspect "^1.12.0" - object-keys "^1.1.1" - object.assign "^4.1.2" - regexp.prototype.flags "^1.4.3" - string.prototype.trimend "^1.0.5" - string.prototype.trimstart "^1.0.5" - unbox-primitive "^1.0.2" - -es-shim-unscopables@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz#702e632193201e3edf8713635d083d378e510241" - integrity sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w== - dependencies: - has "^1.0.3" - -es-to-primitive@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" - integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== - dependencies: - is-callable "^1.1.4" - is-date-object "^1.0.1" - is-symbol "^1.0.2" - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -escodegen@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" - integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== - dependencies: - esprima "^4.0.1" - estraverse "^5.2.0" - esutils "^2.0.2" - optionator "^0.8.1" - optionalDependencies: - source-map "~0.6.1" - -eslint-config-prettier@^8.5.0: - version "8.5.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" - integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== - -eslint-import-resolver-node@^0.3.6: - version "0.3.6" - resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz#4048b958395da89668252001dbd9eca6b83bacbd" - integrity sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw== - dependencies: - debug "^3.2.7" - resolve "^1.20.0" - -eslint-module-utils@^2.7.3: - version "2.7.3" - resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.7.3.tgz#ad7e3a10552fdd0642e1e55292781bd6e34876ee" - integrity sha512-088JEC7O3lDZM9xGe0RerkOMd0EjFl+Yvd1jPWIkMT5u3H9+HC34mWWPnqPrN13gieT9pBOO+Qt07Nb/6TresQ== - dependencies: - debug "^3.2.7" - find-up "^2.1.0" - -eslint-plugin-import@^2.26.0: - version "2.26.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz#f812dc47be4f2b72b478a021605a59fc6fe8b88b" - integrity sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA== - dependencies: - array-includes "^3.1.4" - array.prototype.flat "^1.2.5" - debug "^2.6.9" - doctrine "^2.1.0" - eslint-import-resolver-node "^0.3.6" - eslint-module-utils "^2.7.3" - has "^1.0.3" - is-core-module "^2.8.1" - is-glob "^4.0.3" - minimatch "^3.1.2" - object.values "^1.1.5" - resolve "^1.22.0" - tsconfig-paths "^3.14.1" - -eslint-plugin-jest@^26.7.0: - version "26.7.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jest/-/eslint-plugin-jest-26.7.0.tgz#41d405ac9143e1284a3401282db47ed459436778" - integrity sha512-/YNitdfG3o3cC6juZziAdkk6nfJt01jXVfj4AgaYVLs7bupHzRDL5K+eipdzhDXtQsiqaX1TzfwSuRlEgeln1A== - dependencies: - "@typescript-eslint/utils" "^5.10.0" - -eslint-scope@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" - integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== - -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint@^8.21.0: - version "8.21.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.21.0.tgz#1940a68d7e0573cef6f50037addee295ff9be9ef" - integrity sha512-/XJ1+Qurf1T9G2M5IHrsjp+xrGT73RZf23xA1z5wB1ZzzEAWSZKvRwhWxTFp1rvkvCfwcvAUNAP31bhKTTGfDA== - dependencies: - "@eslint/eslintrc" "^1.3.0" - "@humanwhocodes/config-array" "^0.10.4" - "@humanwhocodes/gitignore-to-minimatch" "^1.0.2" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.3.3" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - functional-red-black-tree "^1.0.1" - glob-parent "^6.0.1" - globals "^13.15.0" - globby "^11.1.0" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - v8-compile-cache "^2.0.3" - -espree@^9.3.2, espree@^9.3.3: - version "9.3.3" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.3.tgz#2dd37c4162bb05f433ad3c1a52ddf8a49dc08e9d" - integrity sha512-ORs1Rt/uQTqUKjDdGCyrtYxbazf5umATSf/K4qxjmZHORR6HJk+2s/2Pqe+Kk49HHINC/xNIrGfgh8sZcll0ng== - dependencies: - acorn "^8.8.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" - -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -execa@^5.0.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" - integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expect@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-27.5.1.tgz#83ce59f1e5bdf5f9d2b94b61d2050db48f3fef74" - integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw== - dependencies: - "@jest/types" "^27.5.1" - jest-get-type "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.2.9: - version "3.2.11" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" - integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= - -fastq@^1.6.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.0.tgz#74dbefccade964932cdf500473ef302719c652bb" - integrity sha512-NL2Qc5L3iQEsyYzweq7qfgy5OtXCmGzGvhElGEd/SoFWEMOEczNh5s5ocaF01HDetxz+p8ecjNPA6cZxxIHmzA== - dependencies: - reusify "^1.0.4" - -fb-watchman@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.1.tgz#fc84fb39d2709cf3ff6d743706157bb5708a8a85" - integrity sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg== - dependencies: - bser "2.1.1" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -find-babel-config@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/find-babel-config/-/find-babel-config-1.2.0.tgz#a9b7b317eb5b9860cda9d54740a8c8337a2283a2" - integrity sha512-jB2CHJeqy6a820ssiqwrKMeyC6nNdmrcgkKWJWmpoxpE8RKciYJXCcXRq1h2AzCo5I5BJeN2tkGEO3hLTuePRA== - dependencies: - json5 "^0.5.1" - path-exists "^3.0.0" - -find-cache-dir@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" - integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ== - dependencies: - commondir "^1.0.1" - make-dir "^2.0.0" - pkg-dir "^3.0.0" - -find-up@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" - integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= - dependencies: - locate-path "^2.0.0" - -find-up@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" - integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== - dependencies: - locate-path "^3.0.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.0.tgz#a5d06b4a8b01e3a63771daa5cb7a1903e2e57067" - integrity sha512-tW+UkmtNg/jv9CSofAKvgVcO7c2URjhTdW1ZTkcAritblu8tajiYy7YisnIflEwtKssCtOxpnBRoCB7iap0/TA== - -form-data@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.1.tgz#ebd53791b78356a99af9a300d4282c4d5eb9755f" - integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - mime-types "^2.1.12" - -fs-readdir-recursive@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" - integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@^2.3.2, fsevents@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function.prototype.name@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.5.tgz#cce0505fe1ffb80503e6f9e46cc64e46a12a9621" - integrity sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.0" - functions-have-names "^1.2.2" - -functional-red-black-tree@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" - integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= - -functions-have-names@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" - integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-intrinsic@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" - integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" - integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== - dependencies: - function-bind "^1.1.1" - has "^1.0.3" - has-symbols "^1.0.1" - -get-stream@^6.0.0: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-symbol-description@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.0.0.tgz#7fdb81c900101fbd564dd5f1a30af5aadc1e58d6" - integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== - dependencies: - call-bind "^1.0.2" - get-intrinsic "^1.1.1" - -glob-parent@^5.1.2, glob-parent@~5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.1: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.2.0: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.15.0: - version "13.17.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.17.0.tgz#902eb1e680a41da93945adbdcb5a9f361ba69bd4" - integrity sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw== - dependencies: - type-fest "^0.20.2" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - -graceful-fs@^4.2.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - -has-bigints@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" - integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== - -has-bigints@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.2.tgz#0871bd3e3d51626f6ca0966668ba35d5602d6eaa" - integrity sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== - dependencies: - get-intrinsic "^1.1.1" - -has-symbols@^1.0.0, has-symbols@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" - integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== - -has-symbols@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" - integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== - -has-symbols@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" - integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== - -has-tostringtag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.0.tgz#7e133818a7d394734f941e73c3d3f9291e658b25" - integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== - dependencies: - has-symbols "^1.0.2" - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - -html-encoding-sniffer@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" - integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== - dependencies: - whatwg-encoding "^1.0.5" - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -http-proxy-agent@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" - integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== - dependencies: - "@tootallnate/once" "1" - agent-base "6" - debug "4" - -https-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" - integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== - dependencies: - agent-base "6" - debug "4" - -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -ignore@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" - integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== - -import-fresh@^3.0.0: - version "3.2.1" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" - integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -import-local@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" - integrity sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA== - dependencies: - pkg-dir "^4.2.0" - resolve-cwd "^3.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -internal-slot@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.0.3.tgz#7347e307deeea2faac2ac6205d4bc7d34967f59c" - integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== - dependencies: - get-intrinsic "^1.1.0" - has "^1.0.3" - side-channel "^1.0.4" - -interpret@^1.0.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" - integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-bigint@^1.0.1: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" - integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== - dependencies: - has-bigints "^1.0.1" - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-boolean-object@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" - integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-callable@^1.1.4, is-callable@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" - integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== - -is-callable@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" - integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== - -is-core-module@^2.1.0, is-core-module@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" - integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== - dependencies: - has "^1.0.3" - -is-core-module@^2.8.1, is-core-module@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" - integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== - dependencies: - has "^1.0.3" - -is-date-object@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" - integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-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" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - -is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-negative-zero@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" - integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== - -is-negative-zero@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" - integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== - -is-number-object@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" - integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== - dependencies: - has-tostringtag "^1.0.0" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-potential-custom-element-name@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" - integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== - -is-regex@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" - integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== - dependencies: - has-symbols "^1.0.1" - -is-regex@^1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" - integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== - dependencies: - call-bind "^1.0.2" - has-tostringtag "^1.0.0" - -is-shared-array-buffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz#8f259c573b60b6a32d4058a1a07430c0a7344c79" - integrity sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA== - dependencies: - call-bind "^1.0.2" - -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - -is-string@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" - integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== - -is-string@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" - integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== - dependencies: - has-tostringtag "^1.0.0" - -is-symbol@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" - integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== - dependencies: - has-symbols "^1.0.1" - -is-symbol@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" - integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== - dependencies: - has-symbols "^1.0.2" - -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-weakref@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.0.2.tgz#9529f383a9338205e89765e0392efc2f100f06f2" - integrity sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ== - dependencies: - call-bind "^1.0.2" - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== - -istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== - -istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz#31d18bdd127f825dd02ea7bfdfd906f8ab840e9f" - integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A== - dependencies: - "@babel/core" "^7.12.3" - "@babel/parser" "^7.14.7" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.2.0" - semver "^6.3.0" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.1.3: - version "3.1.5" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.5.tgz#cc9a6ab25cb25659810e4785ed9d9fb742578bae" - integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jest-changed-files@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-27.5.1.tgz#a348aed00ec9bf671cc58a66fcbe7c3dfd6a68f5" - integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw== - dependencies: - "@jest/types" "^27.5.1" - execa "^5.0.0" - throat "^6.0.1" - -jest-circus@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-27.5.1.tgz#37a5a4459b7bf4406e53d637b49d22c65d125ecc" - integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^0.7.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - slash "^3.0.0" - stack-utils "^2.0.3" - throat "^6.0.1" - -jest-cli@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-27.5.1.tgz#278794a6e6458ea8029547e6c6cbf673bd30b145" - integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw== - dependencies: - "@jest/core" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - import-local "^3.0.2" - jest-config "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - prompts "^2.0.1" - yargs "^16.2.0" - -jest-config@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-27.5.1.tgz#5c387de33dca3f99ad6357ddeccd91bf3a0e4a41" - integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA== - dependencies: - "@babel/core" "^7.8.0" - "@jest/test-sequencer" "^27.5.1" - "@jest/types" "^27.5.1" - babel-jest "^27.5.1" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.1" - graceful-fs "^4.2.9" - jest-circus "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-get-type "^27.5.1" - jest-jasmine2 "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runner "^27.5.1" - jest-util "^27.5.1" - jest-validate "^27.5.1" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^27.5.1" - slash "^3.0.0" - strip-json-comments "^3.1.1" - -jest-diff@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" - integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== - dependencies: - chalk "^4.0.0" - diff-sequences "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-docblock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-27.5.1.tgz#14092f364a42c6108d42c33c8cf30e058e25f6c0" - integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ== - dependencies: - detect-newline "^3.0.0" - -jest-each@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-27.5.1.tgz#5bc87016f45ed9507fed6e4702a5b468a5b2c44e" - integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ== - dependencies: - "@jest/types" "^27.5.1" - chalk "^4.0.0" - jest-get-type "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - -jest-environment-jsdom@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz#ea9ccd1fc610209655a77898f86b2b559516a546" - integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - jsdom "^16.6.0" - -jest-environment-node@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-27.5.1.tgz#dedc2cfe52fab6b8f5714b4808aefa85357a365e" - integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - jest-mock "^27.5.1" - jest-util "^27.5.1" - -jest-get-type@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" - integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== - -jest-haste-map@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-27.5.1.tgz#9fd8bd7e7b4fa502d9c6164c5640512b4e811e7f" - integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng== - dependencies: - "@jest/types" "^27.5.1" - "@types/graceful-fs" "^4.1.2" - "@types/node" "*" - anymatch "^3.0.3" - fb-watchman "^2.0.0" - graceful-fs "^4.2.9" - jest-regex-util "^27.5.1" - jest-serializer "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - micromatch "^4.0.4" - walker "^1.0.7" - optionalDependencies: - fsevents "^2.3.2" - -jest-jasmine2@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz#a037b0034ef49a9f3d71c4375a796f3b230d1ac4" - integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - expect "^27.5.1" - is-generator-fn "^2.0.0" - jest-each "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-runtime "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - pretty-format "^27.5.1" - throat "^6.0.1" - -jest-leak-detector@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz#6ec9d54c3579dd6e3e66d70e3498adf80fde3fb8" - integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ== - dependencies: - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-matcher-utils@^27.0.0, jest-matcher-utils@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" - integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== - dependencies: - chalk "^4.0.0" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - pretty-format "^27.5.1" - -jest-message-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-27.5.1.tgz#bdda72806da10d9ed6425e12afff38cd1458b6cf" - integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g== - dependencies: - "@babel/code-frame" "^7.12.13" - "@jest/types" "^27.5.1" - "@types/stack-utils" "^2.0.0" - chalk "^4.0.0" - graceful-fs "^4.2.9" - micromatch "^4.0.4" - pretty-format "^27.5.1" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-mock@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-27.5.1.tgz#19948336d49ef4d9c52021d34ac7b5f36ff967d6" - integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - -jest-pnp-resolver@^1.2.2: - version "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.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-27.5.1.tgz#4da143f7e9fd1e542d4aa69617b38e4a78365b95" - integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg== - -jest-resolve-dependencies@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz#d811ecc8305e731cc86dd79741ee98fed06f1da8" - integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg== - dependencies: - "@jest/types" "^27.5.1" - jest-regex-util "^27.5.1" - jest-snapshot "^27.5.1" - -jest-resolve@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-27.5.1.tgz#a2f1c5a0796ec18fe9eb1536ac3814c23617b384" - integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw== - dependencies: - "@jest/types" "^27.5.1" - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-pnp-resolver "^1.2.2" - jest-util "^27.5.1" - jest-validate "^27.5.1" - resolve "^1.20.0" - resolve.exports "^1.1.0" - slash "^3.0.0" - -jest-runner@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-27.5.1.tgz#071b27c1fa30d90540805c5645a0ec167c7b62e5" - integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ== - dependencies: - "@jest/console" "^27.5.1" - "@jest/environment" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.8.1" - graceful-fs "^4.2.9" - jest-docblock "^27.5.1" - jest-environment-jsdom "^27.5.1" - jest-environment-node "^27.5.1" - jest-haste-map "^27.5.1" - jest-leak-detector "^27.5.1" - jest-message-util "^27.5.1" - jest-resolve "^27.5.1" - jest-runtime "^27.5.1" - jest-util "^27.5.1" - jest-worker "^27.5.1" - source-map-support "^0.5.6" - throat "^6.0.1" - -jest-runtime@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-27.5.1.tgz#4896003d7a334f7e8e4a53ba93fb9bcd3db0a1af" - integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A== - dependencies: - "@jest/environment" "^27.5.1" - "@jest/fake-timers" "^27.5.1" - "@jest/globals" "^27.5.1" - "@jest/source-map" "^27.5.1" - "@jest/test-result" "^27.5.1" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - execa "^5.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^27.5.1" - jest-message-util "^27.5.1" - jest-mock "^27.5.1" - jest-regex-util "^27.5.1" - jest-resolve "^27.5.1" - jest-snapshot "^27.5.1" - jest-util "^27.5.1" - slash "^3.0.0" - strip-bom "^4.0.0" - -jest-serializer@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-27.5.1.tgz#81438410a30ea66fd57ff730835123dea1fb1f64" - integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w== - dependencies: - "@types/node" "*" - graceful-fs "^4.2.9" - -jest-snapshot@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-27.5.1.tgz#b668d50d23d38054a51b42c4039cab59ae6eb6a1" - integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA== - dependencies: - "@babel/core" "^7.7.2" - "@babel/generator" "^7.7.2" - "@babel/plugin-syntax-typescript" "^7.7.2" - "@babel/traverse" "^7.7.2" - "@babel/types" "^7.0.0" - "@jest/transform" "^27.5.1" - "@jest/types" "^27.5.1" - "@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.5.1" - graceful-fs "^4.2.9" - jest-diff "^27.5.1" - jest-get-type "^27.5.1" - jest-haste-map "^27.5.1" - jest-matcher-utils "^27.5.1" - jest-message-util "^27.5.1" - jest-util "^27.5.1" - natural-compare "^1.4.0" - pretty-format "^27.5.1" - semver "^7.3.2" - -jest-util@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-27.5.1.tgz#3ba9771e8e31a0b85da48fe0b0891fb86c01c2f9" - integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw== - dependencies: - "@jest/types" "^27.5.1" - "@types/node" "*" - chalk "^4.0.0" - ci-info "^3.2.0" - graceful-fs "^4.2.9" - picomatch "^2.2.3" - -jest-validate@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-27.5.1.tgz#9197d54dc0bdb52260b8db40b46ae668e04df067" - integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ== - dependencies: - "@jest/types" "^27.5.1" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^27.5.1" - leven "^3.1.0" - pretty-format "^27.5.1" - -jest-watcher@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-27.5.1.tgz#71bd85fb9bde3a2c2ec4dc353437971c43c642a2" - integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw== - dependencies: - "@jest/test-result" "^27.5.1" - "@jest/types" "^27.5.1" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - jest-util "^27.5.1" - string-length "^4.0.1" - -jest-worker@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" - integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== - dependencies: - "@types/node" "*" - merge-stream "^2.0.0" - supports-color "^8.0.0" - -jest@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-27.5.1.tgz#dadf33ba70a779be7a6fc33015843b51494f63fc" - integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ== - dependencies: - "@jest/core" "^27.5.1" - import-local "^3.0.2" - jest-cli "^27.5.1" - -js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -jsdom@^16.6.0: - version "16.7.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.7.0.tgz#918ae71965424b197c819f8183a754e18977b710" - integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw== - dependencies: - abab "^2.0.5" - acorn "^8.2.4" - acorn-globals "^6.0.0" - cssom "^0.4.4" - cssstyle "^2.3.0" - data-urls "^2.0.0" - decimal.js "^10.2.1" - domexception "^2.0.1" - escodegen "^2.0.0" - form-data "^3.0.0" - html-encoding-sniffer "^2.0.1" - http-proxy-agent "^4.0.1" - https-proxy-agent "^5.0.0" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.0" - parse5 "6.0.1" - saxes "^5.0.1" - symbol-tree "^3.2.4" - tough-cookie "^4.0.0" - w3c-hr-time "^1.0.2" - w3c-xmlserializer "^2.0.0" - webidl-conversions "^6.1.0" - whatwg-encoding "^1.0.5" - whatwg-mimetype "^2.3.0" - whatwg-url "^8.5.0" - ws "^7.4.6" - xml-name-validator "^3.0.0" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -jsesc@~0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" - integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json5@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - -json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== - dependencies: - minimist "^1.2.0" - -json5@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.1.tgz#81b6cb04e9ba496f1c7005d07b4368a2638f90b6" - integrity sha512-l+3HXD0GEI3huGq1njuqtzYK8OYJyXMkOLtQ53pjWh89tvWS2h6l+1zMkYWqlb57+SiQodKZyvMEFb2X+KrFhQ== - dependencies: - minimist "^1.2.0" - -json5@^2.1.2: - version "2.1.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" - integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== - dependencies: - minimist "^1.2.5" - -json5@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c" - integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA== - -kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== - -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -levn@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" - integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= - dependencies: - prelude-ls "~1.1.2" - type-check "~0.3.2" - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -locate-path@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" - integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= - dependencies: - p-locate "^2.0.0" - path-exists "^3.0.0" - -locate-path@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" - integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== - dependencies: - p-locate "^3.0.0" - path-exists "^3.0.0" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.debounce@^4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" - integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= - -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.sortby@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" - integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= - -lodash@^4.17.13, lodash@^4.17.19, lodash@^4.7.0: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -make-dir@^2.0.0, make-dir@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" - integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== - dependencies: - pify "^4.0.1" - semver "^5.6.0" - -make-dir@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" - integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== - dependencies: - semver "^6.0.0" - -makeerror@1.0.x: - version "1.0.11" - resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" - integrity sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw= - dependencies: - tmpl "1.0.x" - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -mime-db@1.42.0: - version "1.42.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" - integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== - -mime-types@^2.1.12: - version "2.1.25" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437" - integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg== - dependencies: - mime-db "1.42.0" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -ms@2.1.2, ms@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -node-environment-flags@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/node-environment-flags/-/node-environment-flags-1.0.6.tgz#a30ac13621f6f7d674260a54dede048c3982c088" - integrity sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw== - dependencies: - object.getownpropertydescriptors "^2.0.3" - semver "^5.7.0" - -node-int64@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" - integrity sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs= - -node-releases@^1.1.75: - version "1.1.75" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.75.tgz#6dd8c876b9897a1b8e5a02de26afa79bb54ebbfe" - integrity sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw== - -node-releases@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503" - integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-run-path@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" - integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== - dependencies: - path-key "^3.0.0" - -nwsapi@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" - integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== - -object-inspect@^1.12.0: - version "1.12.2" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea" - integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ== - -object-inspect@^1.8.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" - integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== - -object-inspect@^1.9.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.11.0.tgz#9dceb146cedd4148a0d9e51ab88d34cf509922b1" - integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== - -object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" - integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== - -object.assign@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" - integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== - dependencies: - define-properties "^1.1.2" - function-bind "^1.1.1" - has-symbols "^1.0.0" - object-keys "^1.0.11" - -object.assign@^4.1.1, object.assign@^4.1.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" - integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - has-symbols "^1.0.1" - object-keys "^1.1.1" - -object.getownpropertydescriptors@^2.0.3: - version "2.1.1" - resolved "https://registry.yarnpkg.com/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.1.tgz#0dfda8d108074d9c563e80490c883b6661091544" - integrity sha512-6DtXgZ/lIZ9hqx4GtZETobXLR/ZLaa0aqV0kzbn80Rf8Z2e/XFnhA0I7p07N2wH8bBBltr2xQPi6sbKWAY2Eng== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.1" - -object.values@^1.1.5: - version "1.1.5" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.5.tgz#959f63e3ce9ef108720333082131e4a459b716ac" - integrity sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.19.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -optionator@^0.8.1: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== - dependencies: - deep-is "~0.1.3" - fast-levenshtein "~2.0.6" - levn "~0.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -p-limit@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" - integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== - dependencies: - p-try "^1.0.0" - -p-limit@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" - integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" - integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= - dependencies: - p-limit "^1.1.0" - -p-locate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" - integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== - dependencies: - p-limit "^2.0.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-try@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" - integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-json@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - -parse5@6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" - integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== - -path-exists@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" - integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^3.0.0, path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6, path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picocolors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" - integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== - -picomatch@^2.0.4, picomatch@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" - integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== - -picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - -pify@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" - integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== - -pirates@^4.0.4, pirates@^4.0.5: - version "4.0.5" - resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.5.tgz#feec352ea5c3268fb23a37c702ab1699f35a5f3b" - integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ== - -pkg-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" - integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw== - dependencies: - find-up "^3.0.0" - -pkg-dir@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -pkg-up@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" - integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA== - dependencies: - find-up "^3.0.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prelude-ls@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" - integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= - -prettier@^2.7.1: - version "2.7.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.7.1.tgz#e235806850d057f97bb08368a4f7d899f7760c64" - integrity sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g== - -pretty-format@^27.0.0: - version "27.1.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.1.0.tgz#022f3fdb19121e0a2612f3cff8d724431461b9ca" - integrity sha512-4aGaud3w3rxAO6OXmK3fwBFQ0bctIOG3/if+jYEFGNGIs0EvuidQm3bZ9mlP2/t9epLNC/12czabfy7TZNSwVA== - dependencies: - "@jest/types" "^27.1.0" - ansi-regex "^5.0.0" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -pretty-format@^27.5.1: - version "27.5.1" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" - integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== - dependencies: - ansi-regex "^5.0.1" - ansi-styles "^5.0.0" - react-is "^17.0.1" - -prompts@^2.0.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.0.tgz#a444e968fa4cc7e86689a74050685ac8006c4cc4" - integrity sha512-NfbbPPg/74fT7wk2XYQ7hAIp9zJyZp5Fu19iRbORqqy1BhtrkZ0fPafBU+7bmn8ie69DpT0R6QpJIN2oisYjJg== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.3" - -psl@^1.1.33: - version "1.8.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" - integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== - -punycode@^2.1.0, punycode@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -querystringify@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" - integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== - -react-is@^17.0.1: - version "17.0.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" - integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== - -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== - dependencies: - picomatch "^2.2.1" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= - dependencies: - resolve "^1.1.6" - -regenerate-unicode-properties@^10.0.1: - version "10.0.1" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz#7f442732aa7934a3740c779bb9b3340dccc1fb56" - integrity sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw== - dependencies: - regenerate "^1.4.2" - -regenerate-unicode-properties@^8.2.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" - integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== - dependencies: - regenerate "^1.4.0" - -regenerate@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" - integrity sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg== - -regenerate@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" - integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== - -regenerator-runtime@^0.13.4: - version "0.13.5" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" - integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== - -regenerator-transform@^0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.0.tgz#cbd9ead5d77fae1a48d957cf889ad0586adb6537" - integrity sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg== - dependencies: - "@babel/runtime" "^7.8.4" - -regexp.prototype.flags@^1.4.3: - version "1.4.3" - resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz#87cab30f80f66660181a3bb7bf5981a872b367ac" - integrity sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - functions-have-names "^1.2.2" - -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -regexpu-core@^4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" - integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^8.2.0" - regjsgen "^0.5.1" - regjsparser "^0.6.4" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.2.0" - -regexpu-core@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-5.1.0.tgz#2f8504c3fd0ebe11215783a41541e21c79942c6d" - integrity sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA== - dependencies: - regenerate "^1.4.2" - regenerate-unicode-properties "^10.0.1" - regjsgen "^0.6.0" - regjsparser "^0.8.2" - unicode-match-property-ecmascript "^2.0.0" - unicode-match-property-value-ecmascript "^2.0.0" - -regjsgen@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" - integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== - -regjsgen@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.6.0.tgz#83414c5354afd7d6627b16af5f10f41c4e71808d" - integrity sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA== - -regjsparser@^0.6.4: - version "0.6.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" - integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== - dependencies: - jsesc "~0.5.0" - -regjsparser@^0.8.2: - version "0.8.4" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.8.4.tgz#8a14285ffcc5de78c5b95d62bbf413b6bc132d5f" - integrity sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA== - dependencies: - jsesc "~0.5.0" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -reselect@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.0.0.tgz#f2529830e5d3d0e021408b246a206ef4ea4437f7" - integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== - -resolve-cwd@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" - integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== - dependencies: - resolve-from "^5.0.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve.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.1.6, resolve@^1.14.2, resolve@^1.20.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -resolve@^1.13.1: - version "1.19.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" - integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== - dependencies: - is-core-module "^2.1.0" - path-parse "^1.0.6" - -resolve@^1.22.0: - version "1.22.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" - integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== - dependencies: - is-core-module "^2.9.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -resolve@^1.3.2: - version "1.13.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16" - integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w== - dependencies: - path-parse "^1.0.6" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -run-parallel@^1.1.9: - version "1.1.10" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.1.10.tgz#60a51b2ae836636c81377df16cb107351bcd13ef" - integrity sha512-zb/1OuZ6flOlH6tQyMPUrE3x3Ulxjlo9WIVXR4yVYi4H9UXQaeIsPbLn2R3O3vQCnDKkAl2qHiuocKKX4Tz/Sw== - -safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -saxes@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" - integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== - dependencies: - xmlchars "^2.2.0" - -semver@7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" - integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== - -semver@^5.4.1, semver@^5.6.0, semver@^5.7.0: - version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" - integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== - -semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0: - version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" - integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== - -semver@^7.3.2, semver@^7.3.7: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shelljs@^0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" - integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== - dependencies: - glob "^7.0.0" - interpret "^1.0.0" - rechoir "^0.6.2" - -side-channel@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" - integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== - dependencies: - call-bind "^1.0.0" - get-intrinsic "^1.0.2" - object-inspect "^1.9.0" - -signal-exit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= - -signal-exit@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" - integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== - -sisteransi@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.4.tgz#386713f1ef688c7c0304dc4c0632898941cad2e3" - integrity sha512-/ekMoM4NJ59ivGSfKapeG+FWtrmWvA1p6FBZwXrqojw90vJu8lBmrTxCMuBCydKtkaUe2zt4PlxeTKpjwMbyig== - -slash@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44" - integrity sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -source-map-support@^0.5.16: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map-support@^0.5.6: - version "0.5.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.5.0: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3: - version "0.7.3" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" - integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -stack-utils@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" - integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== - dependencies: - escape-string-regexp "^2.0.0" - -string-length@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" - integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - -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" - integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string-width@^4.2.3: - 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.prototype.trimend@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" - integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - -string.prototype.trimend@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.5.tgz#914a65baaab25fbdd4ee291ca7dde57e869cb8d0" - integrity sha512-I7RGvmjV4pJ7O3kdf+LXFpVfdNOxtCW/2C8f6jNiW4+PQchwxkCDzlk1/7p+Wl4bqFIZeF47qAHXLuHHWKAxog== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - -string.prototype.trimstart@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" - integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== - dependencies: - call-bind "^1.0.0" - define-properties "^1.1.3" - -string.prototype.trimstart@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.5.tgz#5466d93ba58cfa2134839f81d7f42437e8c01fef" - integrity sha512-THx16TJCGlsN0o6dl2o6ncWUsdgnLRSA23rRE5pyGBw/mLr3Ej/R2LaqCtgP8VNMGZsvMWnf9ooZPyY2bHvUFg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.4" - es-abstract "^1.19.5" - -strip-ansi@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" - integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== - dependencies: - ansi-regex "^5.0.0" - -strip-ansi@^6.0.1: - 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-bom@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" - integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-final-newline@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" - integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.0.0: - version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.1.0.tgz#f663df252af5f37c5d49bbd7eeefa9e0b9e59e47" - integrity sha512-zoE5/e+dnEijk6ASB6/qrK+oYdm2do1hjoLWrqUC/8WEIW1gbxFcKuBof7sW8ArN6e+AYvsE8HBGiVRWL/F5CA== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -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@^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== - dependencies: - ansi-escapes "^4.2.1" - supports-hyperlinks "^2.0.0" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= - -throat@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" - integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== - -tmpl@1.0.x: - version "1.0.5" - resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" - integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -tough-cookie@^4.0.0: - version "4.1.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf" - integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw== - dependencies: - psl "^1.1.33" - punycode "^2.1.1" - universalify "^0.2.0" - url-parse "^1.5.3" - -tr46@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" - integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== - dependencies: - punycode "^2.1.1" - -tr46@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.1.0.tgz#fa87aa81ca5d5941da8cbf1f9b749dc969a4e240" - integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw== - dependencies: - punycode "^2.1.1" - -tsconfig-paths@^3.14.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a" - integrity sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ== - dependencies: - "@types/json5" "^0.0.29" - json5 "^1.0.1" - minimist "^1.2.6" - strip-bom "^3.0.0" - -tslib@^1.8.1: - version "1.10.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" - integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-check@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" - integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= - dependencies: - prelude-ls "~1.1.2" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.20.2: - version "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@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -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" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -typescript@^4.7.4: - version "4.7.4" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" - integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== - -unbox-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.0.2.tgz#29032021057d5e6cdbd08c5129c226dff8ed6f9e" - integrity sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw== - dependencies: - call-bind "^1.0.2" - has-bigints "^1.0.2" - has-symbols "^1.0.3" - which-boxed-primitive "^1.0.2" - -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== - -unicode-canonical-property-names-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz#301acdc525631670d39f6146e0e77ff6bbdebddc" - integrity sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ== - -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" - integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== - dependencies: - unicode-canonical-property-names-ecmascript "^2.0.0" - unicode-property-aliases-ecmascript "^2.0.0" - -unicode-match-property-value-ecmascript@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" - integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== - -unicode-match-property-value-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz#1a01aa57247c14c568b89775a54938788189a714" - integrity sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw== - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" - integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== - -unicode-property-aliases-ecmascript@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz#0a36cb9a585c4f6abd51ad1deddb285c165297c8" - integrity sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ== - -universalify@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" - integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== - -update-browserslist-db@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38" - integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q== - dependencies: - escalade "^3.1.1" - picocolors "^1.0.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -url-parse@^1.5.3: - version "1.5.10" - resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" - integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== - dependencies: - querystringify "^2.1.1" - requires-port "^1.0.0" - -v8-compile-cache@^2.0.3: - version "2.1.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" - integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== - -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" - source-map "^0.7.3" - -v8flags@^3.1.1: - version "3.2.0" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.2.0.tgz#b243e3b4dfd731fa774e7492128109a0fe66d656" - integrity sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg== - dependencies: - homedir-polyfill "^1.0.1" - -w3c-hr-time@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" - integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== - dependencies: - browser-process-hrtime "^1.0.0" - -w3c-xmlserializer@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" - integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== - dependencies: - xml-name-validator "^3.0.0" - -walker@^1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" - integrity sha1-L3+bj9ENZ3JisYqITijRlhjgKPs= - dependencies: - makeerror "1.0.x" - -webidl-conversions@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" - integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== - -webidl-conversions@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" - integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== - -whatwg-encoding@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" - integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== - dependencies: - iconv-lite "0.4.24" - -whatwg-mimetype@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" - integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== - -whatwg-url@^8.0.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" - integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== - dependencies: - lodash.sortby "^4.7.0" - tr46 "^2.0.2" - webidl-conversions "^6.1.0" - -whatwg-url@^8.5.0: - version "8.7.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.7.0.tgz#656a78e510ff8f3937bc0bcbe9f5c0ac35941b77" - integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg== - dependencies: - lodash "^4.7.0" - tr46 "^2.1.0" - webidl-conversions "^6.1.0" - -which-boxed-primitive@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz#13757bc89b209b049fe5d86430e21cf40a89a8e6" - integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== - dependencies: - is-bigint "^1.0.1" - is-boolean-object "^1.1.0" - is-number-object "^1.0.4" - is-string "^1.0.5" - is-symbol "^1.0.3" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@^1.2.3, word-wrap@~1.2.3: - version "1.2.4" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.4.tgz#cb4b50ec9aca570abd1f52f33cd45b6c61739a9f" - integrity sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA== - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^7.4.6: - version "7.5.10" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" - integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== - -xml-name-validator@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" - integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== - -xmlchars@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" - integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== - -y18n@^5.0.5: - version "5.0.5" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" - integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@^20.2.2: - version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - -yargs-parser@^21.0.0: - version "21.0.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.0.1.tgz#0267f286c877a4f0f728fceb6f8a3e4cb95c6e35" - integrity sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg== - -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - -yargs@^17.5.1: - version "17.5.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" - integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.3" - y18n "^5.0.5" - yargs-parser "^21.0.0" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== +# This file is generated by running "yarn install" inside your project. +# Manual changes might be lost - proceed with caution! + +__metadata: + version: 8 + cacheKey: 10c0 + +"@ampproject/remapping@npm:^2.2.0": + version: 2.3.0 + resolution: "@ampproject/remapping@npm:2.3.0" + dependencies: + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/81d63cca5443e0f0c72ae18b544cc28c7c0ec2cea46e7cb888bb0e0f411a1191d0d6b7af798d54e30777d8d1488b2ec0732aac2be342d3d7d3ffd271c6f489ed + languageName: node + linkType: hard + +"@babel/cli@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/cli@npm:7.27.2" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.25" + "@nicolo-ribaudo/chokidar-2": "npm:2.1.8-no-fsevents.3" + chokidar: "npm:^3.6.0" + commander: "npm:^6.2.0" + convert-source-map: "npm:^2.0.0" + fs-readdir-recursive: "npm:^1.1.0" + glob: "npm:^7.2.0" + make-dir: "npm:^2.1.0" + slash: "npm:^2.0.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + dependenciesMeta: + "@nicolo-ribaudo/chokidar-2": + optional: true + chokidar: + optional: true + bin: + babel: ./bin/babel.js + babel-external-helpers: ./bin/babel-external-helpers.js + checksum: 10c0/9a93b19249b54114deacfcbd47d36d2bad6be0e4b775df30bcde62666a83ab6048566400c8c3b7f532c758f697951874c9e4ea91ef4d7e53841e4a7b2e085a54 + languageName: node + linkType: hard + +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/code-frame@npm:7.27.1" + dependencies: + "@babel/helper-validator-identifier": "npm:^7.27.1" + js-tokens: "npm:^4.0.0" + picocolors: "npm:^1.1.1" + checksum: 10c0/5dd9a18baa5fce4741ba729acc3a3272c49c25cb8736c4b18e113099520e7ef7b545a4096a26d600e4416157e63e87d66db46aa3fbf0a5f2286da2705c12da00 + languageName: node + linkType: hard + +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.27.2": + version: 7.27.5 + resolution: "@babel/compat-data@npm:7.27.5" + checksum: 10c0/da2751fcd0b58eea958f2b2f7ff7d6de1280712b709fa1ad054b73dc7d31f589e353bb50479b9dc96007935f3ed3cada68ac5b45ce93086b7122ddc32e60dc00 + languageName: node + linkType: hard + +"@babel/core@npm:^7.23.9, @babel/core@npm:^7.27.4": + version: 7.27.4 + resolution: "@babel/core@npm:7.27.4" + dependencies: + "@ampproject/remapping": "npm:^2.2.0" + "@babel/code-frame": "npm:^7.27.1" + "@babel/generator": "npm:^7.27.3" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-module-transforms": "npm:^7.27.3" + "@babel/helpers": "npm:^7.27.4" + "@babel/parser": "npm:^7.27.4" + "@babel/template": "npm:^7.27.2" + "@babel/traverse": "npm:^7.27.4" + "@babel/types": "npm:^7.27.3" + convert-source-map: "npm:^2.0.0" + debug: "npm:^4.1.0" + gensync: "npm:^1.0.0-beta.2" + json5: "npm:^2.2.3" + semver: "npm:^6.3.1" + checksum: 10c0/d2d17b106a8d91d3eda754bb3f26b53a12eb7646df73c2b2d2e9b08d90529186bc69e3823f70a96ec6e5719dc2372fb54e14ad499da47ceeb172d2f7008787b5 + languageName: node + linkType: hard + +"@babel/generator@npm:^7.27.3, @babel/generator@npm:^7.27.5": + version: 7.27.5 + resolution: "@babel/generator@npm:7.27.5" + dependencies: + "@babel/parser": "npm:^7.27.5" + "@babel/types": "npm:^7.27.3" + "@jridgewell/gen-mapping": "npm:^0.3.5" + "@jridgewell/trace-mapping": "npm:^0.3.25" + jsesc: "npm:^3.0.2" + checksum: 10c0/8f649ef4cd81765c832bb11de4d6064b035ffebdecde668ba7abee68a7b0bce5c9feabb5dc5bb8aeba5bd9e5c2afa3899d852d2bd9ca77a711ba8c8379f416f0 + languageName: node + linkType: hard + +"@babel/helper-annotate-as-pure@npm:^7.27.1": + version: 7.27.3 + resolution: "@babel/helper-annotate-as-pure@npm:7.27.3" + dependencies: + "@babel/types": "npm:^7.27.3" + checksum: 10c0/94996ce0a05b7229f956033e6dcd69393db2b0886d0db6aff41e704390402b8cdcca11f61449cb4f86cfd9e61b5ad3a73e4fa661eeed7846b125bd1c33dbc633 + languageName: node + linkType: hard + +"@babel/helper-compilation-targets@npm:^7.22.6, @babel/helper-compilation-targets@npm:^7.27.1, @babel/helper-compilation-targets@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/helper-compilation-targets@npm:7.27.2" + dependencies: + "@babel/compat-data": "npm:^7.27.2" + "@babel/helper-validator-option": "npm:^7.27.1" + browserslist: "npm:^4.24.0" + lru-cache: "npm:^5.1.1" + semver: "npm:^6.3.1" + checksum: 10c0/f338fa00dcfea931804a7c55d1a1c81b6f0a09787e528ec580d5c21b3ecb3913f6cb0f361368973ce953b824d910d3ac3e8a8ee15192710d3563826447193ad1 + languageName: node + linkType: hard + +"@babel/helper-create-class-features-plugin@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-create-class-features-plugin@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-member-expression-to-functions": "npm:^7.27.1" + "@babel/helper-optimise-call-expression": "npm:^7.27.1" + "@babel/helper-replace-supers": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/4ee199671d6b9bdd4988aa2eea4bdced9a73abfc831d81b00c7634f49a8fc271b3ceda01c067af58018eb720c6151322015d463abea7072a368ee13f35adbb4c + languageName: node + linkType: hard + +"@babel/helper-create-regexp-features-plugin@npm:^7.18.6, @babel/helper-create-regexp-features-plugin@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-create-regexp-features-plugin@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + regexpu-core: "npm:^6.2.0" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/591fe8bd3bb39679cc49588889b83bd628d8c4b99c55bafa81e80b1e605a348b64da955e3fd891c4ba3f36fd015367ba2eadea22af6a7de1610fbb5bcc2d3df0 + languageName: node + linkType: hard + +"@babel/helper-define-polyfill-provider@npm:^0.6.3, @babel/helper-define-polyfill-provider@npm:^0.6.4": + version: 0.6.4 + resolution: "@babel/helper-define-polyfill-provider@npm:0.6.4" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.22.6" + "@babel/helper-plugin-utils": "npm:^7.22.5" + debug: "npm:^4.1.1" + lodash.debounce: "npm:^4.0.8" + resolve: "npm:^1.14.2" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/b74f2b46e233a178618d19432bdae16e0137d0a603497ee901155e083c4a61f26fe01d79fb95d5f4c22131ade9d958d8f587088d412cca1302633587f070919d + languageName: node + linkType: hard + +"@babel/helper-member-expression-to-functions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-member-expression-to-functions@npm:7.27.1" + dependencies: + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/5762ad009b6a3d8b0e6e79ff6011b3b8fdda0fefad56cfa8bfbe6aa02d5a8a8a9680a45748fe3ac47e735a03d2d88c0a676e3f9f59f20ae9fadcc8d51ccd5a53 + languageName: node + linkType: hard + +"@babel/helper-module-imports@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-module-imports@npm:7.27.1" + dependencies: + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/e00aace096e4e29290ff8648455c2bc4ed982f0d61dbf2db1b5e750b9b98f318bf5788d75a4f974c151bd318fd549e81dbcab595f46b14b81c12eda3023f51e8 + languageName: node + linkType: hard + +"@babel/helper-module-transforms@npm:^7.27.1, @babel/helper-module-transforms@npm:^7.27.3": + version: 7.27.3 + resolution: "@babel/helper-module-transforms@npm:7.27.3" + dependencies: + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.3" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/fccb4f512a13b4c069af51e1b56b20f54024bcf1591e31e978a30f3502567f34f90a80da6a19a6148c249216292a8074a0121f9e52602510ef0f32dbce95ca01 + languageName: node + linkType: hard + +"@babel/helper-optimise-call-expression@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-optimise-call-expression@npm:7.27.1" + dependencies: + "@babel/types": "npm:^7.27.1" + checksum: 10c0/6b861e7fcf6031b9c9fc2de3cd6c005e94a459d6caf3621d93346b52774925800ca29d4f64595a5ceacf4d161eb0d27649ae385110ed69491d9776686fa488e6 + languageName: node + linkType: hard + +"@babel/helper-plugin-utils@npm:^7.0.0, @babel/helper-plugin-utils@npm:^7.10.4, @babel/helper-plugin-utils@npm:^7.12.13, @babel/helper-plugin-utils@npm:^7.14.5, @babel/helper-plugin-utils@npm:^7.18.6, @babel/helper-plugin-utils@npm:^7.22.5, @babel/helper-plugin-utils@npm:^7.27.1, @babel/helper-plugin-utils@npm:^7.8.0": + version: 7.27.1 + resolution: "@babel/helper-plugin-utils@npm:7.27.1" + checksum: 10c0/94cf22c81a0c11a09b197b41ab488d416ff62254ce13c57e62912c85700dc2e99e555225787a4099ff6bae7a1812d622c80fbaeda824b79baa10a6c5ac4cf69b + languageName: node + linkType: hard + +"@babel/helper-remap-async-to-generator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-remap-async-to-generator@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-wrap-function": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/5ba6258f4bb57c7c9fa76b55f416b2d18c867b48c1af4f9f2f7cd7cc933fe6da7514811d08ceb4972f1493be46f4b69c40282b811d1397403febae13c2ec57b5 + languageName: node + linkType: hard + +"@babel/helper-replace-supers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-replace-supers@npm:7.27.1" + dependencies: + "@babel/helper-member-expression-to-functions": "npm:^7.27.1" + "@babel/helper-optimise-call-expression": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/4f2eaaf5fcc196580221a7ccd0f8873447b5d52745ad4096418f6101a1d2e712e9f93722c9a32bc9769a1dc197e001f60d6f5438d4dfde4b9c6a9e4df719354c + languageName: node + linkType: hard + +"@babel/helper-skip-transparent-expression-wrappers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-skip-transparent-expression-wrappers@npm:7.27.1" + dependencies: + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/f625013bcdea422c470223a2614e90d2c1cc9d832e97f32ca1b4f82b34bb4aa67c3904cb4b116375d3b5b753acfb3951ed50835a1e832e7225295c7b0c24dff7 + languageName: node + linkType: hard + +"@babel/helper-string-parser@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-string-parser@npm:7.27.1" + checksum: 10c0/8bda3448e07b5583727c103560bcf9c4c24b3c1051a4c516d4050ef69df37bb9a4734a585fe12725b8c2763de0a265aa1e909b485a4e3270b7cfd3e4dbe4b602 + languageName: node + linkType: hard + +"@babel/helper-validator-identifier@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-identifier@npm:7.27.1" + checksum: 10c0/c558f11c4871d526498e49d07a84752d1800bf72ac0d3dad100309a2eaba24efbf56ea59af5137ff15e3a00280ebe588560534b0e894a4750f8b1411d8f78b84 + languageName: node + linkType: hard + +"@babel/helper-validator-option@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-option@npm:7.27.1" + checksum: 10c0/6fec5f006eba40001a20f26b1ef5dbbda377b7b68c8ad518c05baa9af3f396e780bdfded24c4eef95d14bb7b8fd56192a6ed38d5d439b97d10efc5f1a191d148 + languageName: node + linkType: hard + +"@babel/helper-wrap-function@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-wrap-function@npm:7.27.1" + dependencies: + "@babel/template": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/c472f75c0951bc657ab0a117538c7c116566ae7579ed47ac3f572c42dc78bd6f1e18f52ebe80d38300c991c3fcaa06979e2f8864ee919369dabd59072288de30 + languageName: node + linkType: hard + +"@babel/helpers@npm:^7.27.4": + version: 7.27.6 + resolution: "@babel/helpers@npm:7.27.6" + dependencies: + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.27.6" + checksum: 10c0/448bac96ef8b0f21f2294a826df9de6bf4026fd023f8a6bb6c782fe3e61946801ca24381490b8e58d861fee75cd695a1882921afbf1f53b0275ee68c938bd6d3 + languageName: node + linkType: hard + +"@babel/node@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/node@npm:7.27.1" + dependencies: + "@babel/register": "npm:^7.27.1" + commander: "npm:^6.2.0" + core-js: "npm:^3.30.2" + node-environment-flags: "npm:^1.0.5" + regenerator-runtime: "npm:^0.14.0" + v8flags: "npm:^3.1.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + bin: + babel-node: ./bin/babel-node.js + checksum: 10c0/348f05b30e85c14072ff2110f39977954c7028e9d935d42d2e62c29269c4d306631b0e17c88e605ddb585e99eeda8d6ab2b2e1fa83ae3ec0774b570aeeda0eb2 + languageName: node + linkType: hard + +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.27.2, @babel/parser@npm:^7.27.4, @babel/parser@npm:^7.27.5": + version: 7.27.5 + resolution: "@babel/parser@npm:7.27.5" + dependencies: + "@babel/types": "npm:^7.27.3" + bin: + parser: ./bin/babel-parser.js + checksum: 10c0/f7faaebf21cc1f25d9ca8ac02c447ed38ef3460ea95be7ea760916dcf529476340d72a5a6010c6641d9ed9d12ad827c8424840277ec2295c5b082ba0f291220a + languageName: node + linkType: hard + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-firefox-class-in-computed-class-key@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/7dfffa978ae1cd179641a7c4b4ad688c6828c2c58ec96b118c2fb10bc3715223de6b88bff1ebff67056bb5fccc568ae773e3b83c592a1b843423319f80c99ebd + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-safari-class-field-initializer-scope@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/2cd7a55a856e5e59bbd9484247c092a41e0d9f966778e7019da324d9e0928892d26afc4fbb2ac3d76a3c5a631cd3cf0d72dd2653b44f634f6c663b9e6f80aacd + languageName: node + linkType: hard + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/cf29835498c4a25bd470908528919729a0799b2ec94e89004929a5532c94a5e4b1a49bc5d6673a22e5afe05d08465873e14ee3b28c42eb3db489cdf5ca47c680 + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + "@babel/plugin-transform-optional-chaining": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.13.0 + checksum: 10c0/eddcd056f76e198868cbff883eb148acfade8f0890973ab545295df0c08e39573a72e65372bcc0b0bfadba1b043fe1aea6b0907d0b4889453ac154c404194ebc + languageName: node + linkType: hard + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/b94e6c3fc019e988b1499490829c327a1067b4ddea8ad402f6d0554793c9124148c2125338c723661b6dff040951abc1f092afbf3f2d234319cd580b68e52445 + languageName: node + linkType: hard + +"@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2": + version: 7.21.0-placeholder-for-preset-env.2 + resolution: "@babel/plugin-proposal-private-property-in-object@npm:7.21.0-placeholder-for-preset-env.2" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e605e0070da087f6c35579499e65801179a521b6842c15181a1e305c04fded2393f11c1efd09b087be7f8b083d1b75e8f3efcbc1292b4f60d3369e14812cff63 + languageName: node + linkType: hard + +"@babel/plugin-syntax-async-generators@npm:^7.8.4": + version: 7.8.4 + resolution: "@babel/plugin-syntax-async-generators@npm:7.8.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d13efb282838481348c71073b6be6245b35d4f2f964a8f71e4174f235009f929ef7613df25f8d2338e2d3e44bc4265a9f8638c6aaa136d7a61fe95985f9725c8 + languageName: node + linkType: hard + +"@babel/plugin-syntax-bigint@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-bigint@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/686891b81af2bc74c39013655da368a480f17dd237bf9fbc32048e5865cb706d5a8f65438030da535b332b1d6b22feba336da8fa931f663b6b34e13147d12dde + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-properties@npm:^7.12.13": + version: 7.12.13 + resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.12.13" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/95168fa186416195280b1264fb18afcdcdcea780b3515537b766cb90de6ce042d42dd6a204a39002f794ae5845b02afb0fd4861a3308a861204a55e68310a120 + languageName: node + linkType: hard + +"@babel/plugin-syntax-class-static-block@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-class-static-block@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4464bf9115f4a2d02ce1454411baf9cfb665af1da53709c5c56953e5e2913745b0fcce82982a00463d6facbdd93445c691024e310b91431a1e2f024b158f6371 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-assertions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/06a954ee672f7a7c44d52b6e55598da43a7064e80df219765c51c37a0692641277e90411028f7cae4f4d1dedeed084f0c453576fa421c35a81f1603c5e3e0146 + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e66f7a761b8360419bbb93ab67d87c8a97465ef4637a985ff682ce7ba6918b34b29d81190204cf908d0933058ee7b42737423cd8a999546c21b3aabad4affa9a + languageName: node + linkType: hard + +"@babel/plugin-syntax-import-meta@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-import-meta@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0b08b5e4c3128523d8e346f8cfc86824f0da2697b1be12d71af50a31aff7a56ceb873ed28779121051475010c28d6146a6bfea8518b150b71eeb4e46190172ee + languageName: node + linkType: hard + +"@babel/plugin-syntax-json-strings@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-json-strings@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e98f31b2ec406c57757d115aac81d0336e8434101c224edd9a5c93cefa53faf63eacc69f3138960c8b25401315af03df37f68d316c151c4b933136716ed6906e + languageName: node + linkType: hard + +"@babel/plugin-syntax-jsx@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-jsx@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/bc5afe6a458d5f0492c02a54ad98c5756a0c13bd6d20609aae65acd560a9e141b0876da5f358dce34ea136f271c1016df58b461184d7ae9c4321e0f98588bc84 + languageName: node + linkType: hard + +"@babel/plugin-syntax-logical-assignment-operators@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-logical-assignment-operators@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2594cfbe29411ad5bc2ad4058de7b2f6a8c5b86eda525a993959438615479e59c012c14aec979e538d60a584a1a799b60d1b8942c3b18468cb9d99b8fd34cd0b + languageName: node + linkType: hard + +"@babel/plugin-syntax-nullish-coalescing-operator@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-nullish-coalescing-operator@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2024fbb1162899094cfc81152449b12bd0cc7053c6d4bda8ac2852545c87d0a851b1b72ed9560673cbf3ef6248257262c3c04aabf73117215c1b9cc7dd2542ce + languageName: node + linkType: hard + +"@babel/plugin-syntax-numeric-separator@npm:^7.10.4": + version: 7.10.4 + resolution: "@babel/plugin-syntax-numeric-separator@npm:7.10.4" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.10.4" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c55a82b3113480942c6aa2fcbe976ff9caa74b7b1109ff4369641dfbc88d1da348aceb3c31b6ed311c84d1e7c479440b961906c735d0ab494f688bf2fd5b9bb9 + languageName: node + linkType: hard + +"@babel/plugin-syntax-object-rest-spread@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-object-rest-spread@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/ee1eab52ea6437e3101a0a7018b0da698545230015fc8ab129d292980ec6dff94d265e9e90070e8ae5fed42f08f1622c14c94552c77bcac784b37f503a82ff26 + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-catch-binding@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-catch-binding@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/27e2493ab67a8ea6d693af1287f7e9acec206d1213ff107a928e85e173741e1d594196f99fec50e9dde404b09164f39dec5864c767212154ffe1caa6af0bc5af + languageName: node + linkType: hard + +"@babel/plugin-syntax-optional-chaining@npm:^7.8.3": + version: 7.8.3 + resolution: "@babel/plugin-syntax-optional-chaining@npm:7.8.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.8.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/46edddf2faa6ebf94147b8e8540dfc60a5ab718e2de4d01b2c0bdf250a4d642c2bd47cbcbb739febcb2bf75514dbcefad3c52208787994b8d0f8822490f55e81 + languageName: node + linkType: hard + +"@babel/plugin-syntax-private-property-in-object@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-private-property-in-object@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/69822772561706c87f0a65bc92d0772cea74d6bc0911537904a676d5ff496a6d3ac4e05a166d8125fce4a16605bace141afc3611074e170a994e66e5397787f3 + languageName: node + linkType: hard + +"@babel/plugin-syntax-top-level-await@npm:^7.14.5": + version: 7.14.5 + resolution: "@babel/plugin-syntax-top-level-await@npm:7.14.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/14bf6e65d5bc1231ffa9def5f0ef30b19b51c218fcecaa78cd1bdf7939dfdf23f90336080b7f5196916368e399934ce5d581492d8292b46a2fb569d8b2da106f + languageName: node + linkType: hard + +"@babel/plugin-syntax-typescript@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-syntax-typescript@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/11589b4c89c66ef02d57bf56c6246267851ec0c361f58929327dc3e070b0dab644be625bbe7fb4c4df30c3634bfdfe31244e1f517be397d2def1487dbbe3c37d + languageName: node + linkType: hard + +"@babel/plugin-syntax-unicode-sets-regex@npm:^7.18.6": + version: 7.18.6 + resolution: "@babel/plugin-syntax-unicode-sets-regex@npm:7.18.6" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.18.6" + "@babel/helper-plugin-utils": "npm:^7.18.6" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/9144e5b02a211a4fb9a0ce91063f94fbe1004e80bde3485a0910c9f14897cf83fabd8c21267907cff25db8e224858178df0517f14333cfcf3380ad9a4139cb50 + languageName: node + linkType: hard + +"@babel/plugin-transform-arrow-functions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-arrow-functions@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/19abd7a7d11eef58c9340408a4c2594503f6c4eaea1baa7b0e5fbdda89df097e50663edb3448ad2300170b39efca98a75e5767af05cad3b0facb4944326896a3 + languageName: node + linkType: hard + +"@babel/plugin-transform-async-generator-functions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-async-generator-functions@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-remap-async-to-generator": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/772e449c69ee42a466443acefb07083bd89efb1a1d95679a4dc99ea3be9d8a3c43a2b74d2da95d7c818e9dd9e0b72bfa7c03217a1feaf108f21b7e542f0943c0 + languageName: node + linkType: hard + +"@babel/plugin-transform-async-to-generator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-async-to-generator@npm:7.27.1" + dependencies: + "@babel/helper-module-imports": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-remap-async-to-generator": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e76b1f6f9c3bbf72e17d7639406d47f09481806de4db99a8de375a0bb40957ea309b20aa705f0c25ab1d7c845e3f365af67eafa368034521151a0e352a03ef2f + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoped-functions@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-block-scoped-functions@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/3313130ba3bf0699baad0e60da1c8c3c2f0c2c0a7039cd0063e54e72e739c33f1baadfc9d8c73b3fea8c85dd7250c3964fb09c8e1fa62ba0b24a9fefe0a8dbde + languageName: node + linkType: hard + +"@babel/plugin-transform-block-scoping@npm:^7.27.1": + version: 7.27.5 + resolution: "@babel/plugin-transform-block-scoping@npm:7.27.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5c1a61f312f18d3807c4df25868161301a7bd0807092b86951fa6b9918e07ee382d58d61a204c3f9ad0b72b8f6f1d18586f8e485c355a3e959c26a070397e95e + languageName: node + linkType: hard + +"@babel/plugin-transform-class-properties@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-class-properties@npm:7.27.1" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/cc0662633c0fe6df95819fef223506ddf26c369c8d64ab21a728d9007ec866bf9436a253909819216c24a82186b6ccbc1ec94d7aaf3f82df227c7c02fa6a704b + languageName: node + linkType: hard + +"@babel/plugin-transform-class-static-block@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-class-static-block@npm:7.27.1" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.12.0 + checksum: 10c0/396997dd81fc1cf242b921e337d25089d6b9dc3596e81322ff11a6359326dc44f2f8b82dcc279c2e514cafaf8964dc7ed39e9fab4b8af1308b57387d111f6a20 + languageName: node + linkType: hard + +"@babel/plugin-transform-classes@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-classes@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-compilation-targets": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-replace-supers": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + globals: "npm:^11.1.0" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/1071f4cb1ed5deb5e6f8d0442f2293a540cac5caa5ab3c25ad0571aadcbf961f61e26d367a67894976165a543e02f3a19e40b63b909afbed6e710801a590635c + languageName: node + linkType: hard + +"@babel/plugin-transform-computed-properties@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-computed-properties@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/template": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e09a12f8c8ae0e6a6144c102956947b4ec05f6c844169121d0ec4529c2d30ad1dc59fee67736193b87a402f44552c888a519a680a31853bdb4d34788c28af3b0 + languageName: node + linkType: hard + +"@babel/plugin-transform-destructuring@npm:^7.27.1, @babel/plugin-transform-destructuring@npm:^7.27.3": + version: 7.27.3 + resolution: "@babel/plugin-transform-destructuring@npm:7.27.3" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f8ac96deef6f9a4cb1dff148dfa2a43116ca1c48434bba433964498c4ef5cef5557693b47463e64a71ffaaf10191c7fab0270844e8dbdc47dc4d120435025df5 + languageName: node + linkType: hard + +"@babel/plugin-transform-dotall-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-dotall-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f9caddfad9a551b4dabe0dcb7c040f458fbaaa7bbb44200c20198b32c8259be8e050e58d2c853fdac901a4cfe490b86aa857036d8d461b192dd010d0e242dedb + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-keys@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-duplicate-keys@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/22a822e5342b7066f83eaedc4fd9bb044ac6bc68725484690b33ba04a7104980e43ea3229de439286cb8db8e7db4a865733a3f05123ab58a10f189f03553746f + languageName: node + linkType: hard + +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-duplicate-named-capturing-groups-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/121502a252b3206913e1e990a47fea34397b4cbf7804d4cd872d45961bc45b603423f60ca87f3a3023a62528f5feb475ac1c9ec76096899ec182fcb135eba375 + languageName: node + linkType: hard + +"@babel/plugin-transform-dynamic-import@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-dynamic-import@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/8dcd3087aca134b064fc361d2cc34eec1f900f6be039b6368104afcef10bb75dea726bb18cabd046716b89b0edaa771f50189fa16bc5c5914a38cbcf166350f7 + languageName: node + linkType: hard + +"@babel/plugin-transform-exponentiation-operator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-exponentiation-operator@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/953d21e01fed76da8e08fb5094cade7bf8927c1bb79301916bec2db0593b41dbcfbca1024ad5db886b72208a93ada8f57a219525aad048cf15814eeb65cf760d + languageName: node + linkType: hard + +"@babel/plugin-transform-export-namespace-from@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-export-namespace-from@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/d7165cad11f571a54c8d9263d6c6bf2b817aff4874f747cb51e6e49efb32f2c9b37a6850cdb5e3b81e0b638141bb77dc782a6ec1a94128859fbdf7767581e07c + languageName: node + linkType: hard + +"@babel/plugin-transform-for-of@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-for-of@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4635763173a23aae24480681f2b0996b4f54a0cb2368880301a1801638242e263132d1e8adbe112ab272913d1d900ee0d6f7dea79443aef9d3325168cd88b3fb + languageName: node + linkType: hard + +"@babel/plugin-transform-function-name@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-function-name@npm:7.27.1" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5abdc7b5945fbd807269dcc6e76e52b69235056023b0b35d311e8f5dfd6c09d9f225839798998fc3b663f50cf701457ddb76517025a0d7a5474f3fe56e567a4c + languageName: node + linkType: hard + +"@babel/plugin-transform-json-strings@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-json-strings@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/2379714aca025516452a7c1afa1ca42a22b9b51a5050a653cc6198a51665ab82bdecf36106d32d731512706a1e373c5637f5ff635737319aa42f3827da2326d6 + languageName: node + linkType: hard + +"@babel/plugin-transform-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-literals@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c40dc3eb2f45a92ee476412314a40e471af51a0f51a24e91b85cef5fc59f4fe06758088f541643f07f949d2c67ee7bdce10e11c5ec56791ae09b15c3b451eeca + languageName: node + linkType: hard + +"@babel/plugin-transform-logical-assignment-operators@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-logical-assignment-operators@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5b0abc7c0d09d562bf555c646dce63a30288e5db46fd2ce809a61d064415da6efc3b2b3c59b8e4fe98accd072c89a2f7c3765b400e4bf488651735d314d9feeb + languageName: node + linkType: hard + +"@babel/plugin-transform-member-expression-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-member-expression-literals@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/0874ccebbd1c6a155e5f6b3b29729fade1221b73152567c1af1e1a7c12848004dffecbd7eded6dc463955120040ae57c17cb586b53fb5a7a27fcd88177034c30 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-amd@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-amd@npm:7.27.1" + dependencies: + "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/76e86cd278b6a3c5b8cca8dfb3428e9cd0c81a5df7096e04c783c506696b916a9561386d610a9d846ef64804640e0bd818ea47455fed0ee89b7f66c555b29537 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-commonjs@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-commonjs@npm:7.27.1" + dependencies: + "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4def972dcd23375a266ea1189115a4ff61744b2c9366fc1de648b3fab2c650faf1a94092de93a33ff18858d2e6c4dddeeee5384cb42ba0129baeab01a5cdf1e2 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-systemjs@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-systemjs@npm:7.27.1" + dependencies: + "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.27.1" + "@babel/traverse": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f16fca62d144d9cbf558e7b5f83e13bb6d0f21fdeff3024b0cecd42ffdec0b4151461da42bd0963512783ece31aafa5ffe03446b4869220ddd095b24d414e2b5 + languageName: node + linkType: hard + +"@babel/plugin-transform-modules-umd@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-modules-umd@npm:7.27.1" + dependencies: + "@babel/helper-module-transforms": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e5962a8874889da2ab1aa32eb93ec21d419c7423c766e4befb39b4bb512b9ad44b47837b6cd1c8f1065445cbbcc6dc2be10298ac6e734e5ca1059fc23698daed + languageName: node + linkType: hard + +"@babel/plugin-transform-named-capturing-groups-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-named-capturing-groups-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/8eaa8c9aee00a00f3bd8bd8b561d3f569644d98cb2cfe3026d7398aabf9b29afd62f24f142b4112fa1f572d9b0e1928291b099cde59f56d6b59f4d565e58abf2 + languageName: node + linkType: hard + +"@babel/plugin-transform-new-target@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-new-target@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/9b0581412fcc5ab1b9a2d86a0c5407bd959391f0a1e77a46953fef9f7a57f3f4020d75f71098c5f9e5dcc680a87f9fd99b3205ab12e25ef8c19eed038c1e4b28 + languageName: node + linkType: hard + +"@babel/plugin-transform-nullish-coalescing-operator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-nullish-coalescing-operator@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a435fc03aaa65c6ef8e99b2d61af0994eb5cdd4a28562d78c3b0b0228ca7e501aa255e1dff091a6996d7d3ea808eb5a65fd50ecd28dfb10687a8a1095dcadc7a + languageName: node + linkType: hard + +"@babel/plugin-transform-numeric-separator@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-numeric-separator@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b72cbebbfe46fcf319504edc1cf59f3f41c992dd6840db766367f6a1d232cd2c52143c5eaf57e0316710bee251cae94be97c6d646b5022fcd9274ccb131b470c + languageName: node + linkType: hard + +"@babel/plugin-transform-object-rest-spread@npm:^7.27.2": + version: 7.27.3 + resolution: "@babel/plugin-transform-object-rest-spread@npm:7.27.3" + dependencies: + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/plugin-transform-destructuring": "npm:^7.27.3" + "@babel/plugin-transform-parameters": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/f2d04f59f773a9480bbaabd082fecdb5fb2b6ae5e77147ae8df34a8b773b6148d0c4260d2beaa4755eb5f548a105f2069124b9cea96f9387128656cbb0730ee4 + languageName: node + linkType: hard + +"@babel/plugin-transform-object-super@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-object-super@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-replace-supers": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/efa2d092ef55105deb06d30aff4e460c57779b94861188128489b72378bf1f0ab0f06a4a4d68b9ae2a59a79719fbb2d148b9a3dca19ceff9c73b1f1a95e0527c + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-catch-binding@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-optional-catch-binding@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/807a4330f1fac08e2682d57bc82e714868fc651c8876f9a8b3a3fd8f53c129e87371f8243e712ac7dae11e090b737a2219a02fe1b6459a29e664fa073c3277bb + languageName: node + linkType: hard + +"@babel/plugin-transform-optional-chaining@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-optional-chaining@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5b18ff5124e503f0a25d6b195be7351a028b3992d6f2a91fb4037e2a2c386400d66bc1df8f6df0a94c708524f318729e81a95c41906e5a7919a06a43e573a525 + languageName: node + linkType: hard + +"@babel/plugin-transform-parameters@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-parameters@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/453a9618735eeff5551d4c7f02c250606586fe1dd210ec9f69a4f15629ace180cd944339ebff2b0f11e1a40567d83a229ba1c567620e70b2ebedea576e12196a + languageName: node + linkType: hard + +"@babel/plugin-transform-private-methods@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-private-methods@npm:7.27.1" + dependencies: + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/232bedfe9d28df215fb03cc7623bdde468b1246bdd6dc24465ff4bf9cc5f5a256ae33daea1fafa6cc59705e4d29da9024bb79baccaa5cd92811ac5db9b9244f2 + languageName: node + linkType: hard + +"@babel/plugin-transform-private-property-in-object@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-private-property-in-object@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a8c4536273ca716dcc98e74ea25ca76431528554922f184392be3ddaf1761d4aa0e06f1311577755bd1613f7054fb51d29de2ada1130f743d329170a1aa1fe56 + languageName: node + linkType: hard + +"@babel/plugin-transform-property-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-property-literals@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/15713a87edd6db620d6e66eb551b4fbfff5b8232c460c7c76cedf98efdc5cd21080c97040231e19e06594c6d7dfa66e1ab3d0951e29d5814fb25e813f6d6209c + languageName: node + linkType: hard + +"@babel/plugin-transform-regenerator@npm:^7.27.1": + version: 7.27.5 + resolution: "@babel/plugin-transform-regenerator@npm:7.27.5" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/4ace8ced76b421cd44dd9fa08bebc2f3fd76ec84e532cd1027738f411afdbc239789edd6c96dd1db412fc4a42cead5c1ac98a8aef94f35102f5de1049e64c07a + languageName: node + linkType: hard + +"@babel/plugin-transform-regexp-modifiers@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/31ae596ab56751cf43468a6c0a9d6bc3521d306d2bee9c6957cdb64bea53812ce24bd13a32f766150d62b737bca5b0650b2c62db379382fff0dccbf076055c33 + languageName: node + linkType: hard + +"@babel/plugin-transform-reserved-words@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-reserved-words@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/e1a87691cce21a644a474d7c9a8107d4486c062957be32042d40f0a3d0cc66e00a3150989655019c255ff020d2640ac16aaf544792717d586f219f3bad295567 + languageName: node + linkType: hard + +"@babel/plugin-transform-shorthand-properties@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-shorthand-properties@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/bd5544b89520a22c41a6df5ddac9039821d3334c0ef364d18b0ba9674c5071c223bcc98be5867dc3865cb10796882b7594e2c40dedaff38e1b1273913fe353e1 + languageName: node + linkType: hard + +"@babel/plugin-transform-spread@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-spread@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/b34fc58b33bd35b47d67416655c2cbc8578fbb3948b4592bc15eb6d8b4046986e25c06e3b9929460fa4ab08e9653582415e7ef8b87d265e1239251bdf5a4c162 + languageName: node + linkType: hard + +"@babel/plugin-transform-sticky-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-sticky-regex@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/5698df2d924f0b1b7bdb7ef370e83f99ed3f0964eb3b9c27d774d021bee7f6d45f9a73e2be369d90b4aff1603ce29827f8743f091789960e7669daf9c3cda850 + languageName: node + linkType: hard + +"@babel/plugin-transform-template-literals@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-template-literals@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/c90f403e42ef062b60654d1c122c70f3ec6f00c2f304b0931ebe6d0b432498ef8a5ef9266ddf00debc535f8390842207e44d3900eff1d2bab0cc1a700f03e083 + languageName: node + linkType: hard + +"@babel/plugin-transform-typeof-symbol@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-typeof-symbol@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a13c68015311fefa06a51830bc69d5badd06c881b13d5cf9ba04bf7c73e3fc6311cc889e18d9645ce2a64a79456dc9c7be88476c0b6802f62a686cb6f662ecd6 + languageName: node + linkType: hard + +"@babel/plugin-transform-typescript@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-typescript@npm:7.27.1" + dependencies: + "@babel/helper-annotate-as-pure": "npm:^7.27.1" + "@babel/helper-create-class-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers": "npm:^7.27.1" + "@babel/plugin-syntax-typescript": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/48f1db5de17a0f9fc365ff4fb046010aedc7aad813a7aa42fb73fcdab6442f9e700dde2cc0481086e01b0dae662ae4d3e965a52cde154f0f146d243a8ac68e93 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-escapes@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-escapes@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a6809e0ca69d77ee9804e0c1164e8a2dea5e40718f6dcf234aeddf7292e7414f7ee331d87f17eb6f160823a329d1d6751bd49b35b392ac4a6efc032e4d3038d8 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-property-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-property-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/a332bc3cb3eeea67c47502bc52d13a0f8abae5a7bfcb08b93a8300ddaff8d9e1238f912969494c1b494c1898c6f19687054440706700b6d12cb0b90d88beb4d0 + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/6abda1bcffb79feba6f5c691859cdbe984cc96481ea65d5af5ba97c2e843154005f0886e25006a37a2d213c0243506a06eaeafd93a040dbe1f79539016a0d17a + languageName: node + linkType: hard + +"@babel/plugin-transform-unicode-sets-regex@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/plugin-transform-unicode-sets-regex@npm:7.27.1" + dependencies: + "@babel/helper-create-regexp-features-plugin": "npm:^7.27.1" + "@babel/helper-plugin-utils": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/236645f4d0a1fba7c18dc8ffe3975933af93e478f2665650c2d91cf528cfa1587cde5cfe277e0e501fc03b5bf57638369575d6539cef478632fb93bd7d7d7178 + languageName: node + linkType: hard + +"@babel/preset-env@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/preset-env@npm:7.27.2" + dependencies: + "@babel/compat-data": "npm:^7.27.2" + "@babel/helper-compilation-targets": "npm:^7.27.2" + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-validator-option": "npm:^7.27.1" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "npm:^7.27.1" + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "npm:^7.27.1" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "npm:^7.27.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "npm:^7.27.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "npm:^7.27.1" + "@babel/plugin-proposal-private-property-in-object": "npm:7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-import-assertions": "npm:^7.27.1" + "@babel/plugin-syntax-import-attributes": "npm:^7.27.1" + "@babel/plugin-syntax-unicode-sets-regex": "npm:^7.18.6" + "@babel/plugin-transform-arrow-functions": "npm:^7.27.1" + "@babel/plugin-transform-async-generator-functions": "npm:^7.27.1" + "@babel/plugin-transform-async-to-generator": "npm:^7.27.1" + "@babel/plugin-transform-block-scoped-functions": "npm:^7.27.1" + "@babel/plugin-transform-block-scoping": "npm:^7.27.1" + "@babel/plugin-transform-class-properties": "npm:^7.27.1" + "@babel/plugin-transform-class-static-block": "npm:^7.27.1" + "@babel/plugin-transform-classes": "npm:^7.27.1" + "@babel/plugin-transform-computed-properties": "npm:^7.27.1" + "@babel/plugin-transform-destructuring": "npm:^7.27.1" + "@babel/plugin-transform-dotall-regex": "npm:^7.27.1" + "@babel/plugin-transform-duplicate-keys": "npm:^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "npm:^7.27.1" + "@babel/plugin-transform-dynamic-import": "npm:^7.27.1" + "@babel/plugin-transform-exponentiation-operator": "npm:^7.27.1" + "@babel/plugin-transform-export-namespace-from": "npm:^7.27.1" + "@babel/plugin-transform-for-of": "npm:^7.27.1" + "@babel/plugin-transform-function-name": "npm:^7.27.1" + "@babel/plugin-transform-json-strings": "npm:^7.27.1" + "@babel/plugin-transform-literals": "npm:^7.27.1" + "@babel/plugin-transform-logical-assignment-operators": "npm:^7.27.1" + "@babel/plugin-transform-member-expression-literals": "npm:^7.27.1" + "@babel/plugin-transform-modules-amd": "npm:^7.27.1" + "@babel/plugin-transform-modules-commonjs": "npm:^7.27.1" + "@babel/plugin-transform-modules-systemjs": "npm:^7.27.1" + "@babel/plugin-transform-modules-umd": "npm:^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex": "npm:^7.27.1" + "@babel/plugin-transform-new-target": "npm:^7.27.1" + "@babel/plugin-transform-nullish-coalescing-operator": "npm:^7.27.1" + "@babel/plugin-transform-numeric-separator": "npm:^7.27.1" + "@babel/plugin-transform-object-rest-spread": "npm:^7.27.2" + "@babel/plugin-transform-object-super": "npm:^7.27.1" + "@babel/plugin-transform-optional-catch-binding": "npm:^7.27.1" + "@babel/plugin-transform-optional-chaining": "npm:^7.27.1" + "@babel/plugin-transform-parameters": "npm:^7.27.1" + "@babel/plugin-transform-private-methods": "npm:^7.27.1" + "@babel/plugin-transform-private-property-in-object": "npm:^7.27.1" + "@babel/plugin-transform-property-literals": "npm:^7.27.1" + "@babel/plugin-transform-regenerator": "npm:^7.27.1" + "@babel/plugin-transform-regexp-modifiers": "npm:^7.27.1" + "@babel/plugin-transform-reserved-words": "npm:^7.27.1" + "@babel/plugin-transform-shorthand-properties": "npm:^7.27.1" + "@babel/plugin-transform-spread": "npm:^7.27.1" + "@babel/plugin-transform-sticky-regex": "npm:^7.27.1" + "@babel/plugin-transform-template-literals": "npm:^7.27.1" + "@babel/plugin-transform-typeof-symbol": "npm:^7.27.1" + "@babel/plugin-transform-unicode-escapes": "npm:^7.27.1" + "@babel/plugin-transform-unicode-property-regex": "npm:^7.27.1" + "@babel/plugin-transform-unicode-regex": "npm:^7.27.1" + "@babel/plugin-transform-unicode-sets-regex": "npm:^7.27.1" + "@babel/preset-modules": "npm:0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2: "npm:^0.4.10" + babel-plugin-polyfill-corejs3: "npm:^0.11.0" + babel-plugin-polyfill-regenerator: "npm:^0.6.1" + core-js-compat: "npm:^3.40.0" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/fd7ec310832a9ff26ed8d56bc0832cdbdb3a188e022050b74790796650649fb8373568af05b320b58b3ff922507979bad50ff95a4d504ab0081134480103504e + languageName: node + linkType: hard + +"@babel/preset-modules@npm:0.1.6-no-external-plugins": + version: 0.1.6-no-external-plugins + resolution: "@babel/preset-modules@npm:0.1.6-no-external-plugins" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@babel/types": "npm:^7.4.4" + esutils: "npm:^2.0.2" + peerDependencies: + "@babel/core": ^7.0.0-0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/9d02f70d7052446c5f3a4fb39e6b632695fb6801e46d31d7f7c5001f7c18d31d1ea8369212331ca7ad4e7877b73231f470b0d559162624128f1b80fe591409e6 + languageName: node + linkType: hard + +"@babel/preset-typescript@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/preset-typescript@npm:7.27.1" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.27.1" + "@babel/helper-validator-option": "npm:^7.27.1" + "@babel/plugin-syntax-jsx": "npm:^7.27.1" + "@babel/plugin-transform-modules-commonjs": "npm:^7.27.1" + "@babel/plugin-transform-typescript": "npm:^7.27.1" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/cba6ca793d915f8aff9fe2f13b0dfbf5fd3f2e9a17f17478ec9878e9af0d206dcfe93154b9fd353727f16c1dca7c7a3ceb4943f8d28b216235f106bc0fbbcaa3 + languageName: node + linkType: hard + +"@babel/register@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/register@npm:7.27.1" + dependencies: + clone-deep: "npm:^4.0.1" + find-cache-dir: "npm:^2.0.0" + make-dir: "npm:^2.1.0" + pirates: "npm:^4.0.6" + source-map-support: "npm:^0.5.16" + peerDependencies: + "@babel/core": ^7.0.0-0 + checksum: 10c0/9584f6c5d980aa7eb6f56f56dfc12fa01a47ab11d542908192cb455a5249d489ab24efcd5de7c1b8be0fb47cd5594e4ee5652c58ba9b857fb81e783541c6a0ff + languageName: node + linkType: hard + +"@babel/template@npm:^7.27.1, @babel/template@npm:^7.27.2": + version: 7.27.2 + resolution: "@babel/template@npm:7.27.2" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@babel/parser": "npm:^7.27.2" + "@babel/types": "npm:^7.27.1" + checksum: 10c0/ed9e9022651e463cc5f2cc21942f0e74544f1754d231add6348ff1b472985a3b3502041c0be62dc99ed2d12cfae0c51394bf827452b98a2f8769c03b87aadc81 + languageName: node + linkType: hard + +"@babel/traverse@npm:^7.27.1, @babel/traverse@npm:^7.27.3, @babel/traverse@npm:^7.27.4": + version: 7.27.4 + resolution: "@babel/traverse@npm:7.27.4" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@babel/generator": "npm:^7.27.3" + "@babel/parser": "npm:^7.27.4" + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.27.3" + debug: "npm:^4.3.1" + globals: "npm:^11.1.0" + checksum: 10c0/6de8aa2a0637a6ee6d205bf48b9e923928a02415771fdec60085ed754dcdf605e450bb3315c2552fa51c31a4662275b45d5ae4ad527ce55a7db9acebdbbbb8ed + languageName: node + linkType: hard + +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.27.1, @babel/types@npm:^7.27.3, @babel/types@npm:^7.27.6, @babel/types@npm:^7.4.4": + version: 7.27.6 + resolution: "@babel/types@npm:7.27.6" + dependencies: + "@babel/helper-string-parser": "npm:^7.27.1" + "@babel/helper-validator-identifier": "npm:^7.27.1" + checksum: 10c0/39d556be114f2a6d874ea25ad39826a9e3a0e98de0233ae6d932f6d09a4b222923a90a7274c635ed61f1ba49bbd345329226678800900ad1c8d11afabd573aaf + languageName: node + linkType: hard + +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 10c0/6b80ae4cb3db53f486da2dc63b6e190a74c8c3cca16bb2733f234a0b6a9382b09b146488ae08e2b22cf00f6c83e20f3e040a2f7894f05c045c946d6a090b1d52 + languageName: node + linkType: hard + +"@emnapi/core@npm:^1.4.3": + version: 1.4.3 + resolution: "@emnapi/core@npm:1.4.3" + dependencies: + "@emnapi/wasi-threads": "npm:1.0.2" + tslib: "npm:^2.4.0" + checksum: 10c0/e30101d16d37ef3283538a35cad60e22095aff2403fb9226a35330b932eb6740b81364d525537a94eb4fb51355e48ae9b10d779c0dd1cdcd55d71461fe4b45c7 + languageName: node + linkType: hard + +"@emnapi/runtime@npm:^1.4.3": + version: 1.4.3 + resolution: "@emnapi/runtime@npm:1.4.3" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/3b7ab72d21cb4e034f07df80165265f85f445ef3f581d1bc87b67e5239428baa00200b68a7d5e37a0425c3a78320b541b07f76c5530f6f6f95336a6294ebf30b + languageName: node + linkType: hard + +"@emnapi/wasi-threads@npm:1.0.2": + version: 1.0.2 + resolution: "@emnapi/wasi-threads@npm:1.0.2" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/f0621b1fc715221bd2d8332c0ca922617bcd77cdb3050eae50a124eb8923c54fa425d23982dc8f29d505c8798a62d1049bace8b0686098ff9dd82270e06d772e + languageName: node + linkType: hard + +"@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.7.0": + version: 4.7.0 + resolution: "@eslint-community/eslint-utils@npm:4.7.0" + dependencies: + eslint-visitor-keys: "npm:^3.4.3" + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + checksum: 10c0/c0f4f2bd73b7b7a9de74b716a664873d08ab71ab439e51befe77d61915af41a81ecec93b408778b3a7856185244c34c2c8ee28912072ec14def84ba2dec70adf + languageName: node + linkType: hard + +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.12.1": + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1" + checksum: 10c0/a03d98c246bcb9109aec2c08e4d10c8d010256538dcb3f56610191607214523d4fb1b00aa81df830b6dffb74c5fa0be03642513a289c567949d3e550ca11cdf6 + languageName: node + linkType: hard + +"@eslint/config-array@npm:^0.20.0": + version: 0.20.1 + resolution: "@eslint/config-array@npm:0.20.1" + dependencies: + "@eslint/object-schema": "npm:^2.1.6" + debug: "npm:^4.3.1" + minimatch: "npm:^3.1.2" + checksum: 10c0/709108c3925d83c2166024646829ab61ba5fa85c6568daefd32508899f46ed8dc36d7153042df6dcc7e58ad543bc93298b646575daecb5eb4e39a43d838dab42 + languageName: node + linkType: hard + +"@eslint/config-helpers@npm:^0.2.1": + version: 0.2.3 + resolution: "@eslint/config-helpers@npm:0.2.3" + checksum: 10c0/8fd36d7f33013628787947c81894807c7498b31eacf6648efa6d7c7a99aac6bf0d59a8a4d14f968ec2aeebefb76a1a7e4fd4cd556a296323d4711b3d7a7cda22 + languageName: node + linkType: hard + +"@eslint/core@npm:^0.14.0": + version: 0.14.0 + resolution: "@eslint/core@npm:0.14.0" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10c0/259f279445834ba2d2cbcc18e9d43202a4011fde22f29d5fb802181d66e0f6f0bd1f6b4b4b46663451f545d35134498231bd5e656e18d9034a457824b92b7741 + languageName: node + linkType: hard + +"@eslint/core@npm:^0.15.0": + version: 0.15.0 + resolution: "@eslint/core@npm:0.15.0" + dependencies: + "@types/json-schema": "npm:^7.0.15" + checksum: 10c0/9882c69acfe29743ce473a619d5248589c6687561afaabe8ec8d7ffed07592db16edcca3af022f33ea92fe5f6cfbe3545ee53e89292579d22a944ebaeddcf72d + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^3.3.1": + version: 3.3.1 + resolution: "@eslint/eslintrc@npm:3.3.1" + dependencies: + ajv: "npm:^6.12.4" + debug: "npm:^4.3.2" + espree: "npm:^10.0.1" + globals: "npm:^14.0.0" + ignore: "npm:^5.2.0" + import-fresh: "npm:^3.2.1" + js-yaml: "npm:^4.1.0" + minimatch: "npm:^3.1.2" + strip-json-comments: "npm:^3.1.1" + checksum: 10c0/b0e63f3bc5cce4555f791a4e487bf999173fcf27c65e1ab6e7d63634d8a43b33c3693e79f192cbff486d7df1be8ebb2bd2edc6e70ddd486cbfa84a359a3e3b41 + languageName: node + linkType: hard + +"@eslint/js@npm:9.28.0, @eslint/js@npm:^9.28.0": + version: 9.28.0 + resolution: "@eslint/js@npm:9.28.0" + checksum: 10c0/5a6759542490dd9f778993edfbc8d2f55168fd0f7336ceed20fe3870c65499d72fc0bca8d1ae00ea246b0923ea4cba2e0758a8a5507a3506ddcf41c92282abb8 + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.6": + version: 2.1.6 + resolution: "@eslint/object-schema@npm:2.1.6" + checksum: 10c0/b8cdb7edea5bc5f6a96173f8d768d3554a628327af536da2fc6967a93b040f2557114d98dbcdbf389d5a7b290985ad6a9ce5babc547f36fc1fde42e674d11a56 + languageName: node + linkType: hard + +"@eslint/plugin-kit@npm:^0.3.1": + version: 0.3.2 + resolution: "@eslint/plugin-kit@npm:0.3.2" + dependencies: + "@eslint/core": "npm:^0.15.0" + levn: "npm:^0.4.1" + checksum: 10c0/e069b0a46eb9fa595a1ac7dea4540a9daa493afba88875ee054e9117609c1c41555e779303cb4cff36cf88f603ba6eba2556a927e8ced77002828206ee17fc7e + languageName: node + linkType: hard + +"@exercism/babel-preset-typescript@npm:0.7.0": + version: 0.7.0 + resolution: "@exercism/babel-preset-typescript@npm:0.7.0" + dependencies: + "@babel/core": "npm:^7.27.4" + "@babel/node": "npm:^7.27.1" + "@babel/preset-env": "npm:^7.27.2" + "@babel/preset-typescript": "npm:^7.27.1" + core-js: "npm:~3.43.0" + checksum: 10c0/98e1c5176aa50d9c8d3168490cbc7a368310d0e311b6f741c663b066d677397761100d32dd7d01b87689e80df692fc607e56c0084fd80198e144f3a83115cddd + languageName: node + linkType: hard + +"@exercism/babel-preset-typescript@patch:@exercism/babel-preset-typescript@npm%3A0.7.0#~/.yarn/patches/@exercism-babel-preset-typescript-npm-0.7.0-2bbb0ae462.patch::version=0.7.0&hash=a38e01": + version: 0.7.0 + resolution: "@exercism/babel-preset-typescript@patch:@exercism/babel-preset-typescript@npm%3A0.7.0#~/.yarn/patches/@exercism-babel-preset-typescript-npm-0.7.0-2bbb0ae462.patch::version=0.7.0&hash=a38e01" + dependencies: + "@babel/core": "npm:^7.27.4" + "@babel/node": "npm:^7.27.1" + "@babel/preset-env": "npm:^7.27.2" + "@babel/preset-typescript": "npm:^7.27.1" + core-js: "npm:~3.43.0" + checksum: 10c0/647c5c8e3325be5b02a3fe7b3ede77a77d26cf363896d66793613b331d1607e5140c2ff3ed5c2c28120fccbc0e58dc33703a558e264c4ee0d3111fa7c96c7305 + languageName: node + linkType: hard + +"@exercism/babel-preset-typescript@patch:@exercism/babel-preset-typescript@patch%3A@exercism/babel-preset-typescript@npm%253A0.7.0%23~/.yarn/patches/@exercism-babel-preset-typescript-npm-0.7.0-2bbb0ae462.patch%3A%3Aversion=0.7.0&hash=a38e01#~/.yarn/patches/@exercism-babel-preset-typescript-patch-c49badc33d.patch": + version: 0.7.0 + resolution: "@exercism/babel-preset-typescript@patch:@exercism/babel-preset-typescript@patch%3A@exercism/babel-preset-typescript@npm%253A0.7.0%23~/.yarn/patches/@exercism-babel-preset-typescript-npm-0.7.0-2bbb0ae462.patch%3A%3Aversion=0.7.0&hash=a38e01#~/.yarn/patches/@exercism-babel-preset-typescript-patch-c49badc33d.patch::version=0.7.0&hash=0c91a7" + dependencies: + "@babel/core": "npm:^7.27.4" + "@babel/node": "npm:^7.27.1" + "@babel/preset-env": "npm:^7.27.2" + "@babel/preset-typescript": "npm:^7.27.1" + core-js: "npm:~3.43.0" + checksum: 10c0/84dcac8aedf85e11ec073989142bb3afbf0c1386b15d2fbde1b72e433304778a576d9ce1be45f3df2cf16368df0a500878312c4db55bf176aaa00288c7e471b9 + languageName: node + linkType: hard + +"@exercism/eslint-config-tooling@npm:^0.9.0": + version: 0.9.0 + resolution: "@exercism/eslint-config-tooling@npm:0.9.0" + dependencies: + "@eslint/js": "npm:^9.28.0" + eslint-config-prettier: "npm:^10.1.5" + eslint-plugin-jest: "npm:^28.13.3" + globals: "npm:^16.2.0" + typescript-eslint: "npm:^8.34.0" + peerDependencies: + "@exercism/babel-preset-typescript": ">= 0.7.0" + eslint: ">= 9.28" + typescript: ~5.7.3 + checksum: 10c0/d385a5b26d18a7f72cd836d97a62abab7c761c446f462e617e52290d55d727e506d67ae191ed19ea0b3c3dc630986eb8ac030748dc7537cd5751cde3b855e493 + languageName: node + linkType: hard + +"@exercism/javascript-analyzer@workspace:.": + version: 0.0.0-use.local + resolution: "@exercism/javascript-analyzer@workspace:." + dependencies: + "@babel/cli": "npm:^7.27.2" + "@exercism/babel-preset-typescript": "patch:@exercism/babel-preset-typescript@patch%3A@exercism/babel-preset-typescript@npm%253A0.7.0%23~/.yarn/patches/@exercism-babel-preset-typescript-npm-0.7.0-2bbb0ae462.patch%3A%3Aversion=0.7.0&hash=a38e01#~/.yarn/patches/@exercism-babel-preset-typescript-patch-c49badc33d.patch" + "@exercism/eslint-config-tooling": "npm:^0.9.0" + "@exercism/static-analysis": "npm:^0.14.0" + "@tsconfig/recommended": "npm:^1.0.8" + "@types/node": "npm:^22.15.31" + "@types/yargs": "npm:^17.0.33" + "@typescript-eslint/parser": "npm:^8.34.0" + "@typescript-eslint/typescript-estree": "npm:^8.34.0" + "@typescript-eslint/visitor-keys": "npm:^8.34.0" + babel-jest: "npm:^30.0.0" + babel-plugin-module-resolver: "npm:^5.0.2" + core-js: "npm:^3.43.0" + eslint: "npm:^9.28.0" + jest: "npm:^30.0.0" + prettier: "npm:^3.5.3" + rimraf: "npm:^6.0.1" + shelljs: "npm:^0.10.0" + typescript: "npm:^5.8.3" + yargs: "npm:^18.0.0" + bin: + javascript-analyzer: ./bin/run.sh + javascript-analyzer-remote: ./bin/run.sh + languageName: unknown + linkType: soft + +"@exercism/static-analysis@npm:^0.14.0": + version: 0.14.0 + resolution: "@exercism/static-analysis@npm:0.14.0" + peerDependencies: + "@typescript-eslint/typescript-estree": ^8.0.1 + "@typescript-eslint/visitor-keys": ^8.0.1 + checksum: 10c0/05ac009ff1f89e8790e06bb41764b967e60527573618e43df8ef7befb0b86be2b1f1159ac9855a81f37f11527dd510570a96c8e03f6c251c8e765fe5827e9f35 + languageName: node + linkType: hard + +"@humanfs/core@npm:^0.19.1": + version: 0.19.1 + resolution: "@humanfs/core@npm:0.19.1" + checksum: 10c0/aa4e0152171c07879b458d0e8a704b8c3a89a8c0541726c6b65b81e84fd8b7564b5d6c633feadc6598307d34564bd53294b533491424e8e313d7ab6c7bc5dc67 + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.6": + version: 0.16.6 + resolution: "@humanfs/node@npm:0.16.6" + dependencies: + "@humanfs/core": "npm:^0.19.1" + "@humanwhocodes/retry": "npm:^0.3.0" + checksum: 10c0/8356359c9f60108ec204cbd249ecd0356667359b2524886b357617c4a7c3b6aace0fd5a369f63747b926a762a88f8a25bc066fa1778508d110195ce7686243e1 + languageName: node + linkType: hard + +"@humanwhocodes/module-importer@npm:^1.0.1": + version: 1.0.1 + resolution: "@humanwhocodes/module-importer@npm:1.0.1" + checksum: 10c0/909b69c3b86d482c26b3359db16e46a32e0fb30bd306a3c176b8313b9e7313dba0f37f519de6aa8b0a1921349e505f259d19475e123182416a506d7f87e7f529 + languageName: node + linkType: hard + +"@humanwhocodes/retry@npm:^0.3.0": + version: 0.3.1 + resolution: "@humanwhocodes/retry@npm:0.3.1" + checksum: 10c0/f0da1282dfb45e8120480b9e2e275e2ac9bbe1cf016d046fdad8e27cc1285c45bb9e711681237944445157b430093412b4446c1ab3fc4bb037861b5904101d3b + languageName: node + linkType: hard + +"@humanwhocodes/retry@npm:^0.4.2": + version: 0.4.3 + resolution: "@humanwhocodes/retry@npm:0.4.3" + checksum: 10c0/3775bb30087d4440b3f7406d5a057777d90e4b9f435af488a4923ef249e93615fb78565a85f173a186a076c7706a81d0d57d563a2624e4de2c5c9c66c486ce42 + languageName: node + linkType: hard + +"@isaacs/balanced-match@npm:^4.0.1": + version: 4.0.1 + resolution: "@isaacs/balanced-match@npm:4.0.1" + checksum: 10c0/7da011805b259ec5c955f01cee903da72ad97c5e6f01ca96197267d3f33103d5b2f8a1af192140f3aa64526c593c8d098ae366c2b11f7f17645d12387c2fd420 + languageName: node + linkType: hard + +"@isaacs/brace-expansion@npm:^5.0.0": + version: 5.0.0 + resolution: "@isaacs/brace-expansion@npm:5.0.0" + dependencies: + "@isaacs/balanced-match": "npm:^4.0.1" + checksum: 10c0/b4d4812f4be53afc2c5b6c545001ff7a4659af68d4484804e9d514e183d20269bb81def8682c01a22b17c4d6aed14292c8494f7d2ac664e547101c1a905aa977 + languageName: node + linkType: hard + +"@isaacs/cliui@npm:^8.0.2": + version: 8.0.2 + resolution: "@isaacs/cliui@npm:8.0.2" + dependencies: + string-width: "npm:^5.1.2" + string-width-cjs: "npm:string-width@^4.2.0" + strip-ansi: "npm:^7.0.1" + strip-ansi-cjs: "npm:strip-ansi@^6.0.1" + wrap-ansi: "npm:^8.1.0" + wrap-ansi-cjs: "npm:wrap-ansi@^7.0.0" + checksum: 10c0/b1bf42535d49f11dc137f18d5e4e63a28c5569de438a221c369483731e9dac9fb797af554e8bf02b6192d1e5eba6e6402cf93900c3d0ac86391d00d04876789e + languageName: node + linkType: hard + +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" + dependencies: + minipass: "npm:^7.0.4" + checksum: 10c0/c25b6dc1598790d5b55c0947a9b7d111cfa92594db5296c3b907e2f533c033666f692a3939eadac17b1c7c40d362d0b0635dc874cbfe3e70db7c2b07cc97a5d2 + languageName: node + linkType: hard + +"@istanbuljs/load-nyc-config@npm:^1.0.0": + version: 1.1.0 + resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" + dependencies: + camelcase: "npm:^5.3.1" + find-up: "npm:^4.1.0" + get-package-type: "npm:^0.1.0" + js-yaml: "npm:^3.13.1" + resolve-from: "npm:^5.0.0" + checksum: 10c0/dd2a8b094887da5a1a2339543a4933d06db2e63cbbc2e288eb6431bd832065df0c099d091b6a67436e71b7d6bf85f01ce7c15f9253b4cbebcc3b9a496165ba42 + languageName: node + linkType: hard + +"@istanbuljs/schema@npm:^0.1.2, @istanbuljs/schema@npm:^0.1.3": + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 10c0/61c5286771676c9ca3eb2bd8a7310a9c063fb6e0e9712225c8471c582d157392c88f5353581c8c9adbe0dff98892317d2fdfc56c3499aa42e0194405206a963a + languageName: node + linkType: hard + +"@jest/console@npm:30.0.0": + version: 30.0.0 + resolution: "@jest/console@npm:30.0.0" + dependencies: + "@jest/types": "npm:30.0.0" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + jest-message-util: "npm:30.0.0" + jest-util: "npm:30.0.0" + slash: "npm:^3.0.0" + checksum: 10c0/57fc88b8b63086eaa34312f6d42b9736a85ecbecf1bb6bc5e4f6556243df4708dfa2ad7b2b4043ae7553b6131ebf54825f57d9a2caa74a151953be641acc75d0 + languageName: node + linkType: hard + +"@jest/core@npm:30.0.0": + version: 30.0.0 + resolution: "@jest/core@npm:30.0.0" + dependencies: + "@jest/console": "npm:30.0.0" + "@jest/pattern": "npm:30.0.0" + "@jest/reporters": "npm:30.0.0" + "@jest/test-result": "npm:30.0.0" + "@jest/transform": "npm:30.0.0" + "@jest/types": "npm:30.0.0" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.3.2" + chalk: "npm:^4.1.2" + ci-info: "npm:^4.2.0" + exit-x: "npm:^0.2.2" + graceful-fs: "npm:^4.2.11" + jest-changed-files: "npm:30.0.0" + jest-config: "npm:30.0.0" + jest-haste-map: "npm:30.0.0" + jest-message-util: "npm:30.0.0" + jest-regex-util: "npm:30.0.0" + jest-resolve: "npm:30.0.0" + jest-resolve-dependencies: "npm:30.0.0" + jest-runner: "npm:30.0.0" + jest-runtime: "npm:30.0.0" + jest-snapshot: "npm:30.0.0" + jest-util: "npm:30.0.0" + jest-validate: "npm:30.0.0" + jest-watcher: "npm:30.0.0" + micromatch: "npm:^4.0.8" + pretty-format: "npm:30.0.0" + slash: "npm:^3.0.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/b0894f5e9b0a9b50067f2b8ee5ce972aae48cb4b93528aa5f39616fa53cf894b6a35c8e51073ed5bccd1d92d79874917ef13f4e605bb27bd94b941d6b34c9ee0 + languageName: node + linkType: hard + +"@jest/diff-sequences@npm:30.0.0": + version: 30.0.0 + resolution: "@jest/diff-sequences@npm:30.0.0" + checksum: 10c0/40ab154efa658a29faddd7207bd3a662034ebedc0607b1438b1063cdb27dd73737b2420c01336704cb3b521a8434877126a79295abda9ae31cab1d0189e67340 + languageName: node + linkType: hard + +"@jest/environment@npm:30.0.0": + version: 30.0.0 + resolution: "@jest/environment@npm:30.0.0" + dependencies: + "@jest/fake-timers": "npm:30.0.0" + "@jest/types": "npm:30.0.0" + "@types/node": "npm:*" + jest-mock: "npm:30.0.0" + checksum: 10c0/943d59b96ef95d87827d9241bd3d336fcf6869eddab06ac5615b26322bddccd630d60ff914d50e5b5c517e7a15623e155735c08a5e58489cbc1a61390236364b + languageName: node + linkType: hard + +"@jest/expect-utils@npm:30.0.0": + version: 30.0.0 + resolution: "@jest/expect-utils@npm:30.0.0" + dependencies: + "@jest/get-type": "npm:30.0.0" + checksum: 10c0/af8004f15091fe79a273a6b0f7f775ed27f6bddde80de10ef927b1a12fd4bec1c11c8284e84fb75e1d77ef1784e0ea7afc31b5bbc7c820b57a58c23eb2d0522c + languageName: node + linkType: hard + +"@jest/expect@npm:30.0.0": + version: 30.0.0 + resolution: "@jest/expect@npm:30.0.0" + dependencies: + expect: "npm:30.0.0" + jest-snapshot: "npm:30.0.0" + checksum: 10c0/f11de81beecfe965a5c6f84da8c764330c8e8c756f7338db75bc62397b6b292f4216319801039070faf89643d9eebe87b73dd1b00bc308c7253d07ae612fab11 + languageName: node + linkType: hard + +"@jest/fake-timers@npm:30.0.0": + version: 30.0.0 + resolution: "@jest/fake-timers@npm:30.0.0" + dependencies: + "@jest/types": "npm:30.0.0" + "@sinonjs/fake-timers": "npm:^13.0.0" + "@types/node": "npm:*" + jest-message-util: "npm:30.0.0" + jest-mock: "npm:30.0.0" + jest-util: "npm:30.0.0" + checksum: 10c0/938cdb91113f9e2d5852ae4f8ad509799cdfc3f14bbe1bb0ddb1fba32e38c49876536ba3d395a5c16c8970ac45be1d2e2f4992a7ff5708e6da42ec7a76730564 + languageName: node + linkType: hard + +"@jest/get-type@npm:30.0.0": + version: 30.0.0 + resolution: "@jest/get-type@npm:30.0.0" + checksum: 10c0/1e455fe8f04e0dab5964b80b9ab3a8f2b34015f4c3590b57a911f6e563eeffe8368fc0ebd33eb6ef374c66fd804595528dca9a36cdc5f742357a6d940bba4b49 + languageName: node + linkType: hard + +"@jest/globals@npm:30.0.0": + version: 30.0.0 + resolution: "@jest/globals@npm:30.0.0" + dependencies: + "@jest/environment": "npm:30.0.0" + "@jest/expect": "npm:30.0.0" + "@jest/types": "npm:30.0.0" + jest-mock: "npm:30.0.0" + checksum: 10c0/3dd1244e3115d0f0aa61f4850324e5f85d5117bd09458d09c1dca34989d16d46d8c0b7e6ac9b128cc9c3dab38cdd5a1145c0786b7fb2eb644e854e7da23bab06 + languageName: node + linkType: hard + +"@jest/pattern@npm:30.0.0": + version: 30.0.0 + resolution: "@jest/pattern@npm:30.0.0" + dependencies: + "@types/node": "npm:*" + jest-regex-util: "npm:30.0.0" + checksum: 10c0/9de4ba49350f36bc6c7f14e6f5df125dcbe3292faa1641e89d01e8d323491512859a7ebc7c6a4b95a235891961fe5df7fc4a993734f6465fb4666d494ad439d4 + languageName: node + linkType: hard + +"@jest/reporters@npm:30.0.0": + version: 30.0.0 + resolution: "@jest/reporters@npm:30.0.0" + dependencies: + "@bcoe/v8-coverage": "npm:^0.2.3" + "@jest/console": "npm:30.0.0" + "@jest/test-result": "npm:30.0.0" + "@jest/transform": "npm:30.0.0" + "@jest/types": "npm:30.0.0" + "@jridgewell/trace-mapping": "npm:^0.3.25" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + collect-v8-coverage: "npm:^1.0.2" + exit-x: "npm:^0.2.2" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.11" + istanbul-lib-coverage: "npm:^3.0.0" + istanbul-lib-instrument: "npm:^6.0.0" + istanbul-lib-report: "npm:^3.0.0" + istanbul-lib-source-maps: "npm:^5.0.0" + istanbul-reports: "npm:^3.1.3" + jest-message-util: "npm:30.0.0" + jest-util: "npm:30.0.0" + jest-worker: "npm:30.0.0" + slash: "npm:^3.0.0" + string-length: "npm:^4.0.2" + v8-to-istanbul: "npm:^9.0.1" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + checksum: 10c0/997699c7f41ac8a8c3dce8f5948147f8e1bb2adf64428880b949c1e755e54985987b1dda5151ba7bcba98164a1463b3125e7262ca17020dd9ad6ef2540515b81 + languageName: node + linkType: hard + +"@jest/schemas@npm:30.0.0": + version: 30.0.0 + resolution: "@jest/schemas@npm:30.0.0" + dependencies: + "@sinclair/typebox": "npm:^0.34.0" + checksum: 10c0/28f467674ca09c7deea7b21653639d4991130b69b972dc1b7ee190f8f4ff255089ad26e93333e69f11f161bbd07f16a3b45ba425177ab79f95b4f287886a7430 + languageName: node + linkType: hard + +"@jest/snapshot-utils@npm:30.0.0": + version: 30.0.0 + resolution: "@jest/snapshot-utils@npm:30.0.0" + dependencies: + "@jest/types": "npm:30.0.0" + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + natural-compare: "npm:^1.4.0" + checksum: 10c0/5a03bf72f3c690c84cdd6b4790e9321f42d76fcef6e5f17b2d8124864c4c7130e7b16b8257fec6b361bbb72baa2e0e98dba294f4f9768519b61360c5e03c5acc + languageName: node + linkType: hard + +"@jest/source-map@npm:30.0.0": + version: 30.0.0 + resolution: "@jest/source-map@npm:30.0.0" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.25" + callsites: "npm:^3.1.0" + graceful-fs: "npm:^4.2.11" + checksum: 10c0/350ff4c40bd70249d7f1706726e2541e1b62ea525ffbfcfc07888dcab92afa06d6b34bea98d4295183b96cadfd8364096eceb2ff3225ae1dbafae7f05e6a727d + languageName: node + linkType: hard + +"@jest/test-result@npm:30.0.0": + version: 30.0.0 + resolution: "@jest/test-result@npm:30.0.0" + dependencies: + "@jest/console": "npm:30.0.0" + "@jest/types": "npm:30.0.0" + "@types/istanbul-lib-coverage": "npm:^2.0.6" + collect-v8-coverage: "npm:^1.0.2" + checksum: 10c0/33a05e57855e5b1a7b1dbb6b297c7abf30c54190a1497259f45025a8e33945d7206ac84102ec73de5466e14872f6c852ff9c38e5772356e900bafd403b90e67f + languageName: node + linkType: hard + +"@jest/test-sequencer@npm:30.0.0": + version: 30.0.0 + resolution: "@jest/test-sequencer@npm:30.0.0" + dependencies: + "@jest/test-result": "npm:30.0.0" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.0.0" + slash: "npm:^3.0.0" + checksum: 10c0/b2ccc5cfb4742cc336b3c780f36cf041705d7ea9a0a76230878d517f09d93309a4b77695079cacec3e01198a414fb712e8a3d0ecf1c644664c8bee44e14c341e + languageName: node + linkType: hard + +"@jest/transform@npm:30.0.0": + version: 30.0.0 + resolution: "@jest/transform@npm:30.0.0" + dependencies: + "@babel/core": "npm:^7.27.4" + "@jest/types": "npm:30.0.0" + "@jridgewell/trace-mapping": "npm:^0.3.25" + babel-plugin-istanbul: "npm:^7.0.0" + chalk: "npm:^4.1.2" + convert-source-map: "npm:^2.0.0" + fast-json-stable-stringify: "npm:^2.1.0" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.0.0" + jest-regex-util: "npm:30.0.0" + jest-util: "npm:30.0.0" + micromatch: "npm:^4.0.8" + pirates: "npm:^4.0.7" + slash: "npm:^3.0.0" + write-file-atomic: "npm:^5.0.1" + checksum: 10c0/7452a5bc991a26d39feb1b06e33114664af52ed4b004e786aa5fabc75f0e270d53c80b424fa720905ab6fe59062f8e68740b5122bed72354cc6e33a177948cfc + languageName: node + linkType: hard + +"@jest/types@npm:30.0.0": + version: 30.0.0 + resolution: "@jest/types@npm:30.0.0" + dependencies: + "@jest/pattern": "npm:30.0.0" + "@jest/schemas": "npm:30.0.0" + "@types/istanbul-lib-coverage": "npm:^2.0.6" + "@types/istanbul-reports": "npm:^3.0.4" + "@types/node": "npm:*" + "@types/yargs": "npm:^17.0.33" + chalk: "npm:^4.1.2" + checksum: 10c0/f34f5aff00680c408a2b35e70b486d157a6c1f8006efda31ca4b2f94f727ce1875dbd09edb89b444de8f8184f5009bc0c9509ab7685485bd13337745d8f4def7 + languageName: node + linkType: hard + +"@jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.8 + resolution: "@jridgewell/gen-mapping@npm:0.3.8" + dependencies: + "@jridgewell/set-array": "npm:^1.2.1" + "@jridgewell/sourcemap-codec": "npm:^1.4.10" + "@jridgewell/trace-mapping": "npm:^0.3.24" + checksum: 10c0/c668feaf86c501d7c804904a61c23c67447b2137b813b9ce03eca82cb9d65ac7006d766c218685d76e3d72828279b6ee26c347aa1119dab23fbaf36aed51585a + languageName: node + linkType: hard + +"@jridgewell/resolve-uri@npm:^3.1.0": + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 10c0/d502e6fb516b35032331406d4e962c21fe77cdf1cbdb49c6142bcbd9e30507094b18972778a6e27cbad756209cfe34b1a27729e6fa08a2eb92b33943f680cf1e + languageName: node + linkType: hard + +"@jridgewell/set-array@npm:^1.2.1": + version: 1.2.1 + resolution: "@jridgewell/set-array@npm:1.2.1" + checksum: 10c0/2a5aa7b4b5c3464c895c802d8ae3f3d2b92fcbe84ad12f8d0bfbb1f5ad006717e7577ee1fd2eac00c088abe486c7adb27976f45d2941ff6b0b92b2c3302c60f4 + languageName: node + linkType: hard + +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": + version: 1.5.0 + resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" + checksum: 10c0/2eb864f276eb1096c3c11da3e9bb518f6d9fc0023c78344cdc037abadc725172c70314bdb360f2d4b7bffec7f5d657ce006816bc5d4ecb35e61b66132db00c18 + languageName: node + linkType: hard + +"@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": + version: 0.3.25 + resolution: "@jridgewell/trace-mapping@npm:0.3.25" + dependencies: + "@jridgewell/resolve-uri": "npm:^3.1.0" + "@jridgewell/sourcemap-codec": "npm:^1.4.14" + checksum: 10c0/3d1ce6ebc69df9682a5a8896b414c6537e428a1d68b02fcc8363b04284a8ca0df04d0ee3013132252ab14f2527bc13bea6526a912ecb5658f0e39fd2860b4df4 + languageName: node + linkType: hard + +"@napi-rs/wasm-runtime@npm:^0.2.11": + version: 0.2.11 + resolution: "@napi-rs/wasm-runtime@npm:0.2.11" + dependencies: + "@emnapi/core": "npm:^1.4.3" + "@emnapi/runtime": "npm:^1.4.3" + "@tybys/wasm-util": "npm:^0.9.0" + checksum: 10c0/049bd14c58b99fbe0967b95e9921c5503df196b59be22948d2155f17652eb305cff6728efd8685338b855da7e476dd2551fbe3a313fc2d810938f0717478441e + languageName: node + linkType: hard + +"@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3": + version: 2.1.8-no-fsevents.3 + resolution: "@nicolo-ribaudo/chokidar-2@npm:2.1.8-no-fsevents.3" + checksum: 10c0/27dcabaa0c9a29b3a60217bd3fff87a22cb43ed77863da570c6828e4d0b8f1c6ee52582cd3d439275a2b1f2051005e648ed866b981f2a03b61c645b7e4806ba7 + languageName: node + linkType: hard + +"@nodelib/fs.scandir@npm:2.1.5": + version: 2.1.5 + resolution: "@nodelib/fs.scandir@npm:2.1.5" + dependencies: + "@nodelib/fs.stat": "npm:2.0.5" + run-parallel: "npm:^1.1.9" + checksum: 10c0/732c3b6d1b1e967440e65f284bd06e5821fedf10a1bea9ed2bb75956ea1f30e08c44d3def9d6a230666574edbaf136f8cfd319c14fd1f87c66e6a44449afb2eb + languageName: node + linkType: hard + +"@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": + version: 2.0.5 + resolution: "@nodelib/fs.stat@npm:2.0.5" + checksum: 10c0/88dafe5e3e29a388b07264680dc996c17f4bda48d163a9d4f5c1112979f0ce8ec72aa7116122c350b4e7976bc5566dc3ddb579be1ceaacc727872eb4ed93926d + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:^1.2.3": + version: 1.2.8 + resolution: "@nodelib/fs.walk@npm:1.2.8" + dependencies: + "@nodelib/fs.scandir": "npm:2.1.5" + fastq: "npm:^1.6.0" + checksum: 10c0/db9de047c3bb9b51f9335a7bb46f4fcfb6829fb628318c12115fbaf7d369bfce71c15b103d1fc3b464812d936220ee9bc1c8f762d032c9f6be9acc99249095b1 + languageName: node + linkType: hard + +"@npmcli/agent@npm:^3.0.0": + version: 3.0.0 + resolution: "@npmcli/agent@npm:3.0.0" + dependencies: + agent-base: "npm:^7.1.0" + http-proxy-agent: "npm:^7.0.0" + https-proxy-agent: "npm:^7.0.1" + lru-cache: "npm:^10.0.1" + socks-proxy-agent: "npm:^8.0.3" + checksum: 10c0/efe37b982f30740ee77696a80c196912c274ecd2cb243bc6ae7053a50c733ce0f6c09fda085145f33ecf453be19654acca74b69e81eaad4c90f00ccffe2f9271 + languageName: node + linkType: hard + +"@npmcli/fs@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/fs@npm:4.0.0" + dependencies: + semver: "npm:^7.3.5" + checksum: 10c0/c90935d5ce670c87b6b14fab04a965a3b8137e585f8b2a6257263bd7f97756dd736cb165bb470e5156a9e718ecd99413dccc54b1138c1a46d6ec7cf325982fe5 + languageName: node + linkType: hard + +"@pkgjs/parseargs@npm:^0.11.0": + version: 0.11.0 + resolution: "@pkgjs/parseargs@npm:0.11.0" + checksum: 10c0/5bd7576bb1b38a47a7fc7b51ac9f38748e772beebc56200450c4a817d712232b8f1d3ef70532c80840243c657d491cf6a6be1e3a214cff907645819fdc34aadd + languageName: node + linkType: hard + +"@pkgr/core@npm:^0.2.4": + version: 0.2.7 + resolution: "@pkgr/core@npm:0.2.7" + checksum: 10c0/951f5ebf2feb6e9dbc202d937f1a364d60f2bf0e3e53594251bcc1d9d2ed0df0a919c49ba162a9499fce73cf46ebe4d7959a8dfbac03511dbe79b69f5fedb804 + languageName: node + linkType: hard + +"@sinclair/typebox@npm:^0.34.0": + version: 0.34.33 + resolution: "@sinclair/typebox@npm:0.34.33" + checksum: 10c0/88ab4f7afc7514d576602dce5c892462a89f9082d77dde0e8e21342b3a5c8891ddfc51a65e7dbd5b3f5cbd8f5cb76aded0c0edcfcfb5730f189c2819de9583a7 + languageName: node + linkType: hard + +"@sinonjs/commons@npm:^3.0.1": + version: 3.0.1 + resolution: "@sinonjs/commons@npm:3.0.1" + dependencies: + type-detect: "npm:4.0.8" + checksum: 10c0/1227a7b5bd6c6f9584274db996d7f8cee2c8c350534b9d0141fc662eaf1f292ea0ae3ed19e5e5271c8fd390d27e492ca2803acd31a1978be2cdc6be0da711403 + languageName: node + linkType: hard + +"@sinonjs/fake-timers@npm:^13.0.0": + version: 13.0.5 + resolution: "@sinonjs/fake-timers@npm:13.0.5" + dependencies: + "@sinonjs/commons": "npm:^3.0.1" + checksum: 10c0/a707476efd523d2138ef6bba916c83c4a377a8372ef04fad87499458af9f01afc58f4f245c5fd062793d6d70587309330c6f96947b5bd5697961c18004dc3e26 + languageName: node + linkType: hard + +"@tsconfig/recommended@npm:^1.0.8": + version: 1.0.8 + resolution: "@tsconfig/recommended@npm:1.0.8" + checksum: 10c0/bd6517e3f69cf96108ab8b7d2ee70a7e64ee457bb72326524acdef6e2219813b298654e9aa57ce2f8899901c9b8fd66388b036b9ca0aa062952a83adb59bec17 + languageName: node + linkType: hard + +"@tybys/wasm-util@npm:^0.9.0": + version: 0.9.0 + resolution: "@tybys/wasm-util@npm:0.9.0" + dependencies: + tslib: "npm:^2.4.0" + checksum: 10c0/f9fde5c554455019f33af6c8215f1a1435028803dc2a2825b077d812bed4209a1a64444a4ca0ce2ea7e1175c8d88e2f9173a36a33c199e8a5c671aa31de8242d + languageName: node + linkType: hard + +"@types/babel__core@npm:^7.20.5": + version: 7.20.5 + resolution: "@types/babel__core@npm:7.20.5" + dependencies: + "@babel/parser": "npm:^7.20.7" + "@babel/types": "npm:^7.20.7" + "@types/babel__generator": "npm:*" + "@types/babel__template": "npm:*" + "@types/babel__traverse": "npm:*" + checksum: 10c0/bdee3bb69951e833a4b811b8ee9356b69a61ed5b7a23e1a081ec9249769117fa83aaaf023bb06562a038eb5845155ff663e2d5c75dd95c1d5ccc91db012868ff + languageName: node + linkType: hard + +"@types/babel__generator@npm:*": + version: 7.27.0 + resolution: "@types/babel__generator@npm:7.27.0" + dependencies: + "@babel/types": "npm:^7.0.0" + checksum: 10c0/9f9e959a8792df208a9d048092fda7e1858bddc95c6314857a8211a99e20e6830bdeb572e3587ae8be5429e37f2a96fcf222a9f53ad232f5537764c9e13a2bbd + languageName: node + linkType: hard + +"@types/babel__template@npm:*": + version: 7.4.4 + resolution: "@types/babel__template@npm:7.4.4" + dependencies: + "@babel/parser": "npm:^7.1.0" + "@babel/types": "npm:^7.0.0" + checksum: 10c0/cc84f6c6ab1eab1427e90dd2b76ccee65ce940b778a9a67be2c8c39e1994e6f5bbc8efa309f6cea8dc6754994524cd4d2896558df76d92e7a1f46ecffee7112b + languageName: node + linkType: hard + +"@types/babel__traverse@npm:*": + version: 7.20.7 + resolution: "@types/babel__traverse@npm:7.20.7" + dependencies: + "@babel/types": "npm:^7.20.7" + checksum: 10c0/5386f0af44f8746b063b87418f06129a814e16bb2686965a575e9d7376b360b088b89177778d8c426012abc43dd1a2d8ec3218bfc382280c898682746ce2ffbd + languageName: node + linkType: hard + +"@types/estree@npm:^1.0.6": + version: 1.0.8 + resolution: "@types/estree@npm:1.0.8" + checksum: 10c0/39d34d1afaa338ab9763f37ad6066e3f349444f9052b9676a7cc0252ef9485a41c6d81c9c4e0d26e9077993354edf25efc853f3224dd4b447175ef62bdcc86a5 + languageName: node + linkType: hard + +"@types/istanbul-lib-coverage@npm:*, @types/istanbul-lib-coverage@npm:^2.0.1, @types/istanbul-lib-coverage@npm:^2.0.6": + version: 2.0.6 + resolution: "@types/istanbul-lib-coverage@npm:2.0.6" + checksum: 10c0/3948088654f3eeb45363f1db158354fb013b362dba2a5c2c18c559484d5eb9f6fd85b23d66c0a7c2fcfab7308d0a585b14dadaca6cc8bf89ebfdc7f8f5102fb7 + languageName: node + linkType: hard + +"@types/istanbul-lib-report@npm:*": + version: 3.0.3 + resolution: "@types/istanbul-lib-report@npm:3.0.3" + dependencies: + "@types/istanbul-lib-coverage": "npm:*" + checksum: 10c0/247e477bbc1a77248f3c6de5dadaae85ff86ac2d76c5fc6ab1776f54512a745ff2a5f791d22b942e3990ddbd40f3ef5289317c4fca5741bedfaa4f01df89051c + languageName: node + linkType: hard + +"@types/istanbul-reports@npm:^3.0.4": + version: 3.0.4 + resolution: "@types/istanbul-reports@npm:3.0.4" + dependencies: + "@types/istanbul-lib-report": "npm:*" + checksum: 10c0/1647fd402aced5b6edac87274af14ebd6b3a85447ef9ad11853a70fd92a98d35f81a5d3ea9fcb5dbb5834e800c6e35b64475e33fcae6bfa9acc70d61497c54ee + languageName: node + linkType: hard + +"@types/json-schema@npm:^7.0.15": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 10c0/a996a745e6c5d60292f36731dd41341339d4eeed8180bb09226e5c8d23759067692b1d88e5d91d72ee83dfc00d3aca8e7bd43ea120516c17922cbcb7c3e252db + languageName: node + linkType: hard + +"@types/node@npm:*": + version: 24.0.1 + resolution: "@types/node@npm:24.0.1" + dependencies: + undici-types: "npm:~7.8.0" + checksum: 10c0/91cd50d1ac32a2172cbc67b65c78391fbd469b24743e3665427aa60bebaf4620cb9ac2e91c09a8081a78d08855c00faca659c287c1725ce8ca5e80ece3a20520 + languageName: node + linkType: hard + +"@types/node@npm:^22.15.31": + version: 22.15.31 + resolution: "@types/node@npm:22.15.31" + dependencies: + undici-types: "npm:~6.21.0" + checksum: 10c0/ef7d5dc890da41cfd554d35ab8998bc18be9e3a0caa642e720599ac4410a94a4879766e52b3c9cafa06c66b7b8aebdc51f322cf67df23a6489927890196a316d + languageName: node + linkType: hard + +"@types/stack-utils@npm:^2.0.3": + version: 2.0.3 + resolution: "@types/stack-utils@npm:2.0.3" + checksum: 10c0/1f4658385ae936330581bcb8aa3a066df03867d90281cdf89cc356d404bd6579be0f11902304e1f775d92df22c6dd761d4451c804b0a4fba973e06211e9bd77c + languageName: node + linkType: hard + +"@types/yargs-parser@npm:*": + version: 21.0.3 + resolution: "@types/yargs-parser@npm:21.0.3" + checksum: 10c0/e71c3bd9d0b73ca82e10bee2064c384ab70f61034bbfb78e74f5206283fc16a6d85267b606b5c22cb2a3338373586786fed595b2009825d6a9115afba36560a0 + languageName: node + linkType: hard + +"@types/yargs@npm:^17.0.33": + version: 17.0.33 + resolution: "@types/yargs@npm:17.0.33" + dependencies: + "@types/yargs-parser": "npm:*" + checksum: 10c0/d16937d7ac30dff697801c3d6f235be2166df42e4a88bf730fa6dc09201de3727c0a9500c59a672122313341de5f24e45ee0ff579c08ce91928e519090b7906b + languageName: node + linkType: hard + +"@typescript-eslint/eslint-plugin@npm:8.34.0": + version: 8.34.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.34.0" + dependencies: + "@eslint-community/regexpp": "npm:^4.10.0" + "@typescript-eslint/scope-manager": "npm:8.34.0" + "@typescript-eslint/type-utils": "npm:8.34.0" + "@typescript-eslint/utils": "npm:8.34.0" + "@typescript-eslint/visitor-keys": "npm:8.34.0" + graphemer: "npm:^1.4.0" + ignore: "npm:^7.0.0" + natural-compare: "npm:^1.4.0" + ts-api-utils: "npm:^2.1.0" + peerDependencies: + "@typescript-eslint/parser": ^8.34.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/905a05d15f4b0367838ec445f9890321d87470198bf7a589278fc0f38c82cf3ccc1efce4acd3c9c94ee6149d5579ef58606fb7c50f4db50c830de65af8c27c6d + languageName: node + linkType: hard + +"@typescript-eslint/parser@npm:8.34.0, @typescript-eslint/parser@npm:^8.34.0": + version: 8.34.0 + resolution: "@typescript-eslint/parser@npm:8.34.0" + dependencies: + "@typescript-eslint/scope-manager": "npm:8.34.0" + "@typescript-eslint/types": "npm:8.34.0" + "@typescript-eslint/typescript-estree": "npm:8.34.0" + "@typescript-eslint/visitor-keys": "npm:8.34.0" + debug: "npm:^4.3.4" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/a829be00ea3455c1e50983c8b44476fbfc9329d019764e407c4d591a95dbd168f83f13e309751242bb4fdc02f89cb51ca5cdc912a12b10f69eebcb1c46dcc39b + languageName: node + linkType: hard + +"@typescript-eslint/project-service@npm:8.34.0": + version: 8.34.0 + resolution: "@typescript-eslint/project-service@npm:8.34.0" + dependencies: + "@typescript-eslint/tsconfig-utils": "npm:^8.34.0" + "@typescript-eslint/types": "npm:^8.34.0" + debug: "npm:^4.3.4" + peerDependencies: + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/88e64b8daf7db9603277fcbeb9e585e70ec6d6e34fa10d4b60f421e48081cc7c1f6acb01e1ee9dd95e10c0601f164c1defbfe6c9d1edc9822089bb72dbb0fc80 + languageName: node + linkType: hard + +"@typescript-eslint/scope-manager@npm:8.34.0": + version: 8.34.0 + resolution: "@typescript-eslint/scope-manager@npm:8.34.0" + dependencies: + "@typescript-eslint/types": "npm:8.34.0" + "@typescript-eslint/visitor-keys": "npm:8.34.0" + checksum: 10c0/35af36bddc4c227cb0bac42192c40b38179ced30866b6aac642781e21c3f3b1c72051eb4f685d7c99517c3296dd6ba83dd8360e4072e8dcf604aae266eece1b4 + languageName: node + linkType: hard + +"@typescript-eslint/tsconfig-utils@npm:8.34.0, @typescript-eslint/tsconfig-utils@npm:^8.34.0": + version: 8.34.0 + resolution: "@typescript-eslint/tsconfig-utils@npm:8.34.0" + peerDependencies: + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/98246f89d169d3feb453a6a8552c51d10225cb00c4ff1501549b7846e564ad0e218b644cd94ce779dceed07dcb9035c53fd32186b4c0223b7b2a1f7295b120c3 + languageName: node + linkType: hard + +"@typescript-eslint/type-utils@npm:8.34.0": + version: 8.34.0 + resolution: "@typescript-eslint/type-utils@npm:8.34.0" + dependencies: + "@typescript-eslint/typescript-estree": "npm:8.34.0" + "@typescript-eslint/utils": "npm:8.34.0" + debug: "npm:^4.3.4" + ts-api-utils: "npm:^2.1.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/7c25d7f4186411190142390467160e81384d400cfb21183d8a305991c723da0a74e5528cdce30b5f2cb6d9d2f6af7c0981c20c18b45fc084b35632429270ae80 + languageName: node + linkType: hard + +"@typescript-eslint/types@npm:8.34.0, @typescript-eslint/types@npm:^8.34.0": + version: 8.34.0 + resolution: "@typescript-eslint/types@npm:8.34.0" + checksum: 10c0/5d32b2ac03e4cbc1ac1777a53ee83d6d7887a783363bab4f0a6f7550a9e9df0254971cdf71e13b988e2215f2939e7592404856b8acb086ec63c4479c0225c742 + languageName: node + linkType: hard + +"@typescript-eslint/typescript-estree@npm:8.34.0, @typescript-eslint/typescript-estree@npm:^8.34.0": + version: 8.34.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.34.0" + dependencies: + "@typescript-eslint/project-service": "npm:8.34.0" + "@typescript-eslint/tsconfig-utils": "npm:8.34.0" + "@typescript-eslint/types": "npm:8.34.0" + "@typescript-eslint/visitor-keys": "npm:8.34.0" + debug: "npm:^4.3.4" + fast-glob: "npm:^3.3.2" + is-glob: "npm:^4.0.3" + minimatch: "npm:^9.0.4" + semver: "npm:^7.6.0" + ts-api-utils: "npm:^2.1.0" + peerDependencies: + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/e678982b0009e895aee2b4ccc55bb9ea5473a32e846a97c63d0c6a978c72e1a29e506e6a5f9dda45e9b7803e6c3e3abcdf4c316af1c59146abef4e10e0e94129 + languageName: node + linkType: hard + +"@typescript-eslint/utils@npm:8.34.0, @typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0": + version: 8.34.0 + resolution: "@typescript-eslint/utils@npm:8.34.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.7.0" + "@typescript-eslint/scope-manager": "npm:8.34.0" + "@typescript-eslint/types": "npm:8.34.0" + "@typescript-eslint/typescript-estree": "npm:8.34.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/d759cf6f1b1b23d7d8ab922345e7b68b7c829f4bad841164312cfa3a3e8e818b962dd0d96c1aca7fd7c10248d56538d9714df5f3cfec9f159ca0a139feac60b9 + languageName: node + linkType: hard + +"@typescript-eslint/visitor-keys@npm:8.34.0, @typescript-eslint/visitor-keys@npm:^8.34.0": + version: 8.34.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.34.0" + dependencies: + "@typescript-eslint/types": "npm:8.34.0" + eslint-visitor-keys: "npm:^4.2.0" + checksum: 10c0/d50997e921a178589913d08ffe14d02eba40666c90bdc0c9751f2b87ce500598f64027e2d866dfc975647b2f8b907158503d0722d6b1976c8f1cf5dd8e1d6d69 + languageName: node + linkType: hard + +"@ungap/structured-clone@npm:^1.3.0": + version: 1.3.0 + resolution: "@ungap/structured-clone@npm:1.3.0" + checksum: 10c0/0fc3097c2540ada1fc340ee56d58d96b5b536a2a0dab6e3ec17d4bfc8c4c86db345f61a375a8185f9da96f01c69678f836a2b57eeaa9e4b8eeafd26428e57b0a + languageName: node + linkType: hard + +"@unrs/resolver-binding-android-arm-eabi@npm:1.9.0": + version: 1.9.0 + resolution: "@unrs/resolver-binding-android-arm-eabi@npm:1.9.0" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-android-arm64@npm:1.9.0": + version: 1.9.0 + resolution: "@unrs/resolver-binding-android-arm64@npm:1.9.0" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-arm64@npm:1.9.0": + version: 1.9.0 + resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.9.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-x64@npm:1.9.0": + version: 1.9.0 + resolution: "@unrs/resolver-binding-darwin-x64@npm:1.9.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-freebsd-x64@npm:1.9.0": + version: 1.9.0 + resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.9.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.9.0": + version: 1.9.0 + resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.9.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.9.0": + version: 1.9.0 + resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.9.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-gnu@npm:1.9.0": + version: 1.9.0 + resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.9.0" + conditions: os=linux & cpu=arm64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-musl@npm:1.9.0": + version: 1.9.0 + resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.9.0" + conditions: os=linux & cpu=arm64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.9.0": + version: 1.9.0 + resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.9.0" + conditions: os=linux & cpu=ppc64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.9.0": + version: 1.9.0 + resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.9.0" + conditions: os=linux & cpu=riscv64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-musl@npm:1.9.0": + version: 1.9.0 + resolution: "@unrs/resolver-binding-linux-riscv64-musl@npm:1.9.0" + conditions: os=linux & cpu=riscv64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-s390x-gnu@npm:1.9.0": + version: 1.9.0 + resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.9.0" + conditions: os=linux & cpu=s390x & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-gnu@npm:1.9.0": + version: 1.9.0 + resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.9.0" + conditions: os=linux & cpu=x64 & libc=glibc + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-musl@npm:1.9.0": + version: 1.9.0 + resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.9.0" + conditions: os=linux & cpu=x64 & libc=musl + languageName: node + linkType: hard + +"@unrs/resolver-binding-wasm32-wasi@npm:1.9.0": + version: 1.9.0 + resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.9.0" + dependencies: + "@napi-rs/wasm-runtime": "npm:^0.2.11" + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-arm64-msvc@npm:1.9.0": + version: 1.9.0 + resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.9.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-ia32-msvc@npm:1.9.0": + version: 1.9.0 + resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.9.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-x64-msvc@npm:1.9.0": + version: 1.9.0 + resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.9.0" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + +"abbrev@npm:^3.0.0": + version: 3.0.1 + resolution: "abbrev@npm:3.0.1" + checksum: 10c0/21ba8f574ea57a3106d6d35623f2c4a9111d9ee3e9a5be47baed46ec2457d2eac46e07a5c4a60186f88cb98abbe3e24f2d4cca70bc2b12f1692523e2209a9ccf + languageName: node + linkType: hard + +"acorn-jsx@npm:^5.3.2": + version: 5.3.2 + resolution: "acorn-jsx@npm:5.3.2" + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + checksum: 10c0/4c54868fbef3b8d58927d5e33f0a4de35f59012fe7b12cf9dfbb345fb8f46607709e1c4431be869a23fb63c151033d84c4198fa9f79385cec34fcb1dd53974c1 + languageName: node + linkType: hard + +"acorn@npm:^8.15.0": + version: 8.15.0 + resolution: "acorn@npm:8.15.0" + bin: + acorn: bin/acorn + checksum: 10c0/dec73ff59b7d6628a01eebaece7f2bdb8bb62b9b5926dcad0f8931f2b8b79c2be21f6c68ac095592adb5adb15831a3635d9343e6a91d028bbe85d564875ec3ec + languageName: node + linkType: hard + +"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": + version: 7.1.3 + resolution: "agent-base@npm:7.1.3" + checksum: 10c0/6192b580c5b1d8fb399b9c62bf8343d76654c2dd62afcb9a52b2cf44a8b6ace1e3b704d3fe3547d91555c857d3df02603341ff2cb961b9cfe2b12f9f3c38ee11 + languageName: node + linkType: hard + +"ajv@npm:^6.12.4": + version: 6.12.6 + resolution: "ajv@npm:6.12.6" + dependencies: + fast-deep-equal: "npm:^3.1.1" + fast-json-stable-stringify: "npm:^2.0.0" + json-schema-traverse: "npm:^0.4.1" + uri-js: "npm:^4.2.2" + checksum: 10c0/41e23642cbe545889245b9d2a45854ebba51cda6c778ebced9649420d9205f2efb39cb43dbc41e358409223b1ea43303ae4839db682c848b891e4811da1a5a71 + languageName: node + linkType: hard + +"ansi-escapes@npm:^4.3.2": + version: 4.3.2 + resolution: "ansi-escapes@npm:4.3.2" + dependencies: + type-fest: "npm:^0.21.3" + checksum: 10c0/da917be01871525a3dfcf925ae2977bc59e8c513d4423368645634bf5d4ceba5401574eb705c1e92b79f7292af5a656f78c5725a4b0e1cec97c4b413705c1d50 + languageName: node + linkType: hard + +"ansi-regex@npm:^5.0.1": + version: 5.0.1 + resolution: "ansi-regex@npm:5.0.1" + checksum: 10c0/9a64bb8627b434ba9327b60c027742e5d17ac69277960d041898596271d992d4d52ba7267a63ca10232e29f6107fc8a835f6ce8d719b88c5f8493f8254813737 + languageName: node + linkType: hard + +"ansi-regex@npm:^6.0.1": + version: 6.1.0 + resolution: "ansi-regex@npm:6.1.0" + checksum: 10c0/a91daeddd54746338478eef88af3439a7edf30f8e23196e2d6ed182da9add559c601266dbef01c2efa46a958ad6f1f8b176799657616c702b5b02e799e7fd8dc + languageName: node + linkType: hard + +"ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": + version: 4.3.0 + resolution: "ansi-styles@npm:4.3.0" + dependencies: + color-convert: "npm:^2.0.1" + checksum: 10c0/895a23929da416f2bd3de7e9cb4eabd340949328ab85ddd6e484a637d8f6820d485f53933446f5291c3b760cbc488beb8e88573dd0f9c7daf83dccc8fe81b041 + languageName: node + linkType: hard + +"ansi-styles@npm:^5.2.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: 10c0/9c4ca80eb3c2fb7b33841c210d2f20807f40865d27008d7c3f707b7f95cab7d67462a565e2388ac3285b71cb3d9bb2173de8da37c57692a362885ec34d6e27df + languageName: node + linkType: hard + +"ansi-styles@npm:^6.1.0, ansi-styles@npm:^6.2.1": + version: 6.2.1 + resolution: "ansi-styles@npm:6.2.1" + checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c + languageName: node + linkType: hard + +"anymatch@npm:^3.1.3, anymatch@npm:~3.1.2": + version: 3.1.3 + resolution: "anymatch@npm:3.1.3" + dependencies: + normalize-path: "npm:^3.0.0" + picomatch: "npm:^2.0.4" + checksum: 10c0/57b06ae984bc32a0d22592c87384cd88fe4511b1dd7581497831c56d41939c8a001b28e7b853e1450f2bf61992dfcaa8ae2d0d161a0a90c4fb631ef07098fbac + languageName: node + linkType: hard + +"argparse@npm:^1.0.7": + version: 1.0.10 + resolution: "argparse@npm:1.0.10" + dependencies: + sprintf-js: "npm:~1.0.2" + checksum: 10c0/b2972c5c23c63df66bca144dbc65d180efa74f25f8fd9b7d9a0a6c88ae839db32df3d54770dcb6460cf840d232b60695d1a6b1053f599d84e73f7437087712de + languageName: node + linkType: hard + +"argparse@npm:^2.0.1": + version: 2.0.1 + resolution: "argparse@npm:2.0.1" + checksum: 10c0/c5640c2d89045371c7cedd6a70212a04e360fd34d6edeae32f6952c63949e3525ea77dbec0289d8213a99bbaeab5abfa860b5c12cf88a2e6cf8106e90dd27a7e + languageName: node + linkType: hard + +"array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "array-buffer-byte-length@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + is-array-buffer: "npm:^3.0.5" + checksum: 10c0/74e1d2d996941c7a1badda9cabb7caab8c449db9086407cad8a1b71d2604cc8abf105db8ca4e02c04579ec58b7be40279ddb09aea4784832984485499f48432d + languageName: node + linkType: hard + +"array.prototype.reduce@npm:^1.0.6": + version: 1.0.8 + resolution: "array.prototype.reduce@npm:1.0.8" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.9" + es-array-method-boxes-properly: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" + is-string: "npm:^1.1.1" + checksum: 10c0/0a4635f468e9161f51c4a87f80057b8b3c27b0ccc3e40ad7ea77cd1e147f1119f46977b0452f3fa325f543126200f2caf8c1390bd5303edf90d9c1dcd7d5a8a0 + languageName: node + linkType: hard + +"arraybuffer.prototype.slice@npm:^1.0.4": + version: 1.0.4 + resolution: "arraybuffer.prototype.slice@npm:1.0.4" + dependencies: + array-buffer-byte-length: "npm:^1.0.1" + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + is-array-buffer: "npm:^3.0.4" + checksum: 10c0/2f2459caa06ae0f7f615003f9104b01f6435cc803e11bd2a655107d52a1781dc040532dc44d93026b694cc18793993246237423e13a5337e86b43ed604932c06 + languageName: node + linkType: hard + +"async-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-function@npm:1.0.0" + checksum: 10c0/669a32c2cb7e45091330c680e92eaeb791bc1d4132d827591e499cd1f776ff5a873e77e5f92d0ce795a8d60f10761dec9ddfe7225a5de680f5d357f67b1aac73 + languageName: node + linkType: hard + +"available-typed-arrays@npm:^1.0.7": + version: 1.0.7 + resolution: "available-typed-arrays@npm:1.0.7" + dependencies: + possible-typed-array-names: "npm:^1.0.0" + checksum: 10c0/d07226ef4f87daa01bd0fe80f8f310982e345f372926da2e5296aecc25c41cab440916bbaa4c5e1034b453af3392f67df5961124e4b586df1e99793a1374bdb2 + languageName: node + linkType: hard + +"babel-jest@npm:30.0.0, babel-jest@npm:^30.0.0": + version: 30.0.0 + resolution: "babel-jest@npm:30.0.0" + dependencies: + "@jest/transform": "npm:30.0.0" + "@types/babel__core": "npm:^7.20.5" + babel-plugin-istanbul: "npm:^7.0.0" + babel-preset-jest: "npm:30.0.0" + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + slash: "npm:^3.0.0" + peerDependencies: + "@babel/core": ^7.11.0 + checksum: 10c0/8a0e1406ccac162851e53b613d2f3851ec6354254155aa656dc83a3fdf7e73914587fadc3819be681b2316e4a5b7775ab1be6ff3b3c6d3f86d0432950cb64937 + languageName: node + linkType: hard + +"babel-plugin-istanbul@npm:^7.0.0": + version: 7.0.0 + resolution: "babel-plugin-istanbul@npm:7.0.0" + dependencies: + "@babel/helper-plugin-utils": "npm:^7.0.0" + "@istanbuljs/load-nyc-config": "npm:^1.0.0" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-instrument: "npm:^6.0.2" + test-exclude: "npm:^6.0.0" + checksum: 10c0/79c37bd59ea9bcb16218e874993621e24048776fac7ee72eabe78f0909200851bdb93b32f6eba5b463206f15a1ee7ad40a725af8447952321ae1fdf14e740fe9 + languageName: node + linkType: hard + +"babel-plugin-jest-hoist@npm:30.0.0": + version: 30.0.0 + resolution: "babel-plugin-jest-hoist@npm:30.0.0" + dependencies: + "@babel/template": "npm:^7.27.2" + "@babel/types": "npm:^7.27.3" + "@types/babel__core": "npm:^7.20.5" + checksum: 10c0/558f7cf3c6b16861e95d3f8fe946ccbb4c6d4d49f75d7f2dd798596a6342213b2d9206e8e757c26f3c697ff11e41426e93efcaa42206db76b9264a80ee6236d4 + languageName: node + linkType: hard + +"babel-plugin-module-resolver@npm:^5.0.2": + version: 5.0.2 + resolution: "babel-plugin-module-resolver@npm:5.0.2" + dependencies: + find-babel-config: "npm:^2.1.1" + glob: "npm:^9.3.3" + pkg-up: "npm:^3.1.0" + reselect: "npm:^4.1.7" + resolve: "npm:^1.22.8" + checksum: 10c0/ccbb9e673c4219f68937349267521becb72be292cf30bf70b861c3e709d24fbfa589da0bf6c100a0def799d38199299171cb6eac3fb00b1ea740373e2c1fe54c + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs2@npm:^0.4.10": + version: 0.4.13 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.13" + dependencies: + "@babel/compat-data": "npm:^7.22.6" + "@babel/helper-define-polyfill-provider": "npm:^0.6.4" + semver: "npm:^6.3.1" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/b4a54561606d388e6f9499f39f03171af4be7f9ce2355e737135e40afa7086cf6790fdd706c2e59f488c8fa1f76123d28783708e07ddc84647dca8ed8fb98e06 + languageName: node + linkType: hard + +"babel-plugin-polyfill-corejs3@npm:^0.11.0": + version: 0.11.1 + resolution: "babel-plugin-polyfill-corejs3@npm:0.11.1" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.6.3" + core-js-compat: "npm:^3.40.0" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/025f754b6296d84b20200aff63a3c1acdd85e8c621781f2bd27fe2512d0060526192d02329326947c6b29c27cf475fbcfaaff8c51eab1d2bfc7b79086bb64229 + languageName: node + linkType: hard + +"babel-plugin-polyfill-regenerator@npm:^0.6.1": + version: 0.6.4 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.4" + dependencies: + "@babel/helper-define-polyfill-provider": "npm:^0.6.4" + peerDependencies: + "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 + checksum: 10c0/ebaaf9e4e53201c02f496d3f686d815e94177b3e55b35f11223b99c60d197a29f907a2e87bbcccced8b7aff22a807fccc1adaf04722864a8e1862c8845ab830a + languageName: node + linkType: hard + +"babel-preset-current-node-syntax@npm:^1.1.0": + version: 1.1.0 + resolution: "babel-preset-current-node-syntax@npm:1.1.0" + dependencies: + "@babel/plugin-syntax-async-generators": "npm:^7.8.4" + "@babel/plugin-syntax-bigint": "npm:^7.8.3" + "@babel/plugin-syntax-class-properties": "npm:^7.12.13" + "@babel/plugin-syntax-class-static-block": "npm:^7.14.5" + "@babel/plugin-syntax-import-attributes": "npm:^7.24.7" + "@babel/plugin-syntax-import-meta": "npm:^7.10.4" + "@babel/plugin-syntax-json-strings": "npm:^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators": "npm:^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator": "npm:^7.8.3" + "@babel/plugin-syntax-numeric-separator": "npm:^7.10.4" + "@babel/plugin-syntax-object-rest-spread": "npm:^7.8.3" + "@babel/plugin-syntax-optional-catch-binding": "npm:^7.8.3" + "@babel/plugin-syntax-optional-chaining": "npm:^7.8.3" + "@babel/plugin-syntax-private-property-in-object": "npm:^7.14.5" + "@babel/plugin-syntax-top-level-await": "npm:^7.14.5" + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 10c0/0b838d4412e3322cb4436f246e24e9c00bebcedfd8f00a2f51489db683bd35406bbd55a700759c28d26959c6e03f84dd6a1426f576f440267c1d7a73c5717281 + languageName: node + linkType: hard + +"babel-preset-jest@npm:30.0.0": + version: 30.0.0 + resolution: "babel-preset-jest@npm:30.0.0" + dependencies: + babel-plugin-jest-hoist: "npm:30.0.0" + babel-preset-current-node-syntax: "npm:^1.1.0" + peerDependencies: + "@babel/core": ^7.11.0 + checksum: 10c0/d60475573ef195f730e464f587e732b38b7abd1903072cb78b32090e1eae97064ebdb06f6969dc9c2350545629a965ba268ff5f77b255c572467dd8bfce2bf42 + languageName: node + linkType: hard + +"balanced-match@npm:^1.0.0": + version: 1.0.2 + resolution: "balanced-match@npm:1.0.2" + checksum: 10c0/9308baf0a7e4838a82bbfd11e01b1cb0f0cf2893bc1676c27c2a8c0e70cbae1c59120c3268517a8ae7fb6376b4639ef81ca22582611dbee4ed28df945134aaee + languageName: node + linkType: hard + +"binary-extensions@npm:^2.0.0": + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: 10c0/75a59cafc10fb12a11d510e77110c6c7ae3f4ca22463d52487709ca7f18f69d886aa387557cc9864fbdb10153d0bdb4caacabf11541f55e89ed6e18d12ece2b5 + languageName: node + linkType: hard + +"brace-expansion@npm:^1.1.7": + version: 1.1.12 + resolution: "brace-expansion@npm:1.1.12" + dependencies: + balanced-match: "npm:^1.0.0" + concat-map: "npm:0.0.1" + checksum: 10c0/975fecac2bb7758c062c20d0b3b6288c7cc895219ee25f0a64a9de662dbac981ff0b6e89909c3897c1f84fa353113a721923afdec5f8b2350255b097f12b1f73 + languageName: node + linkType: hard + +"brace-expansion@npm:^2.0.1": + version: 2.0.2 + resolution: "brace-expansion@npm:2.0.2" + dependencies: + balanced-match: "npm:^1.0.0" + checksum: 10c0/6d117a4c793488af86b83172deb6af143e94c17bc53b0b3cec259733923b4ca84679d506ac261f4ba3c7ed37c46018e2ff442f9ce453af8643ecd64f4a54e6cf + languageName: node + linkType: hard + +"braces@npm:^3.0.3, braces@npm:~3.0.2": + version: 3.0.3 + resolution: "braces@npm:3.0.3" + dependencies: + fill-range: "npm:^7.1.1" + checksum: 10c0/7c6dfd30c338d2997ba77500539227b9d1f85e388a5f43220865201e407e076783d0881f2d297b9f80951b4c957fcf0b51c1d2d24227631643c3f7c284b0aa04 + languageName: node + linkType: hard + +"browserslist@npm:^4.24.0, browserslist@npm:^4.25.0": + version: 4.25.0 + resolution: "browserslist@npm:4.25.0" + dependencies: + caniuse-lite: "npm:^1.0.30001718" + electron-to-chromium: "npm:^1.5.160" + node-releases: "npm:^2.0.19" + update-browserslist-db: "npm:^1.1.3" + bin: + browserslist: cli.js + checksum: 10c0/cc16c55b4468b18684a0e1ca303592b38635b1155d6724f172407192737a2f405b8030d87a05813729592793445b3d15e737b0055f901cdecccb29b1e580a1c5 + languageName: node + linkType: hard + +"bser@npm:2.1.1": + version: 2.1.1 + resolution: "bser@npm:2.1.1" + dependencies: + node-int64: "npm:^0.4.0" + checksum: 10c0/24d8dfb7b6d457d73f32744e678a60cc553e4ec0e9e1a01cf614b44d85c3c87e188d3cc78ef0442ce5032ee6818de20a0162ba1074725c0d08908f62ea979227 + languageName: node + linkType: hard + +"buffer-from@npm:^1.0.0": + version: 1.1.2 + resolution: "buffer-from@npm:1.1.2" + checksum: 10c0/124fff9d66d691a86d3b062eff4663fe437a9d9ee4b47b1b9e97f5a5d14f6d5399345db80f796827be7c95e70a8e765dd404b7c3ff3b3324f98e9b0c8826cc34 + languageName: node + linkType: hard + +"cacache@npm:^19.0.1": + version: 19.0.1 + resolution: "cacache@npm:19.0.1" + dependencies: + "@npmcli/fs": "npm:^4.0.0" + fs-minipass: "npm:^3.0.0" + glob: "npm:^10.2.2" + lru-cache: "npm:^10.0.1" + minipass: "npm:^7.0.3" + minipass-collect: "npm:^2.0.1" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + p-map: "npm:^7.0.2" + ssri: "npm:^12.0.0" + tar: "npm:^7.4.3" + unique-filename: "npm:^4.0.0" + checksum: 10c0/01f2134e1bd7d3ab68be851df96c8d63b492b1853b67f2eecb2c37bb682d37cb70bb858a16f2f0554d3c0071be6dfe21456a1ff6fa4b7eed996570d6a25ffe9c + languageName: node + linkType: hard + +"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind-apply-helpers@npm:1.0.2" + dependencies: + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + checksum: 10c0/47bd9901d57b857590431243fea704ff18078b16890a6b3e021e12d279bbf211d039155e27d7566b374d49ee1f8189344bac9833dec7a20cdec370506361c938 + languageName: node + linkType: hard + +"call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": + version: 1.0.8 + resolution: "call-bind@npm:1.0.8" + dependencies: + call-bind-apply-helpers: "npm:^1.0.0" + es-define-property: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.4" + set-function-length: "npm:^1.2.2" + checksum: 10c0/a13819be0681d915144467741b69875ae5f4eba8961eb0bf322aab63ec87f8250eb6d6b0dcbb2e1349876412a56129ca338592b3829ef4343527f5f18a0752d4 + languageName: node + linkType: hard + +"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3, call-bound@npm:^1.0.4": + version: 1.0.4 + resolution: "call-bound@npm:1.0.4" + dependencies: + call-bind-apply-helpers: "npm:^1.0.2" + get-intrinsic: "npm:^1.3.0" + checksum: 10c0/f4796a6a0941e71c766aea672f63b72bc61234c4f4964dc6d7606e3664c307e7d77845328a8f3359ce39ddb377fed67318f9ee203dea1d47e46165dcf2917644 + languageName: node + linkType: hard + +"callsites@npm:^3.0.0, callsites@npm:^3.1.0": + version: 3.1.0 + resolution: "callsites@npm:3.1.0" + checksum: 10c0/fff92277400eb06c3079f9e74f3af120db9f8ea03bad0e84d9aede54bbe2d44a56cccb5f6cf12211f93f52306df87077ecec5b712794c5a9b5dac6d615a3f301 + languageName: node + linkType: hard + +"camelcase@npm:^5.3.1": + version: 5.3.1 + resolution: "camelcase@npm:5.3.1" + checksum: 10c0/92ff9b443bfe8abb15f2b1513ca182d16126359ad4f955ebc83dc4ddcc4ef3fdd2c078bc223f2673dc223488e75c99b16cc4d056624374b799e6a1555cf61b23 + languageName: node + linkType: hard + +"camelcase@npm:^6.3.0": + version: 6.3.0 + resolution: "camelcase@npm:6.3.0" + checksum: 10c0/0d701658219bd3116d12da3eab31acddb3f9440790c0792e0d398f0a520a6a4058018e546862b6fba89d7ae990efaeb97da71e1913e9ebf5a8b5621a3d55c710 + languageName: node + linkType: hard + +"caniuse-lite@npm:^1.0.30001718": + version: 1.0.30001722 + resolution: "caniuse-lite@npm:1.0.30001722" + checksum: 10c0/a1e344c392e0b138f0b215525108877d725665217a5e8e7504897e30379a5a9b858bc44799ccc0e19f4a64bf1e05c15b4a58eb1c9032293f894aa24e8d9f470f + languageName: node + linkType: hard + +"chalk@npm:^4.0.0, chalk@npm:^4.1.2": + version: 4.1.2 + resolution: "chalk@npm:4.1.2" + dependencies: + ansi-styles: "npm:^4.1.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/4a3fef5cc34975c898ffe77141450f679721df9dde00f6c304353fa9c8b571929123b26a0e4617bde5018977eb655b31970c297b91b63ee83bb82aeb04666880 + languageName: node + linkType: hard + +"char-regex@npm:^1.0.2": + version: 1.0.2 + resolution: "char-regex@npm:1.0.2" + checksum: 10c0/57a09a86371331e0be35d9083ba429e86c4f4648ecbe27455dbfb343037c16ee6fdc7f6b61f433a57cc5ded5561d71c56a150e018f40c2ffb7bc93a26dae341e + languageName: node + linkType: hard + +"chokidar@npm:^3.6.0": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" + dependencies: + anymatch: "npm:~3.1.2" + braces: "npm:~3.0.2" + fsevents: "npm:~2.3.2" + glob-parent: "npm:~5.1.2" + is-binary-path: "npm:~2.1.0" + is-glob: "npm:~4.0.1" + normalize-path: "npm:~3.0.0" + readdirp: "npm:~3.6.0" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/8361dcd013f2ddbe260eacb1f3cb2f2c6f2b0ad118708a343a5ed8158941a39cb8fb1d272e0f389712e74ee90ce8ba864eece9e0e62b9705cb468a2f6d917462 + languageName: node + linkType: hard + +"chownr@npm:^3.0.0": + version: 3.0.0 + resolution: "chownr@npm:3.0.0" + checksum: 10c0/43925b87700f7e3893296c8e9c56cc58f926411cce3a6e5898136daaf08f08b9a8eb76d37d3267e707d0dcc17aed2e2ebdf5848c0c3ce95cf910a919935c1b10 + languageName: node + linkType: hard + +"ci-info@npm:^4.2.0": + version: 4.2.0 + resolution: "ci-info@npm:4.2.0" + checksum: 10c0/37a2f4b6a213a5cf835890eb0241f0d5b022f6cfefde58a69e9af8e3a0e71e06d6ad7754b0d4efb9cd2613e58a7a33996d71b56b0d04242722e86666f3f3d058 + languageName: node + linkType: hard + +"cjs-module-lexer@npm:^2.1.0": + version: 2.1.0 + resolution: "cjs-module-lexer@npm:2.1.0" + checksum: 10c0/91cf28686dc3948e4a06dfa03a2fccb14b7a97471ffe7ae0124f62060ddf2de28e8e997f60007babe6e122b1b06a47c01a1b72cc015f185824d9cac3ccfa5533 + languageName: node + linkType: hard + +"cliui@npm:^8.0.1": + version: 8.0.1 + resolution: "cliui@npm:8.0.1" + dependencies: + string-width: "npm:^4.2.0" + strip-ansi: "npm:^6.0.1" + wrap-ansi: "npm:^7.0.0" + checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5 + languageName: node + linkType: hard + +"cliui@npm:^9.0.1": + version: 9.0.1 + resolution: "cliui@npm:9.0.1" + dependencies: + string-width: "npm:^7.2.0" + strip-ansi: "npm:^7.1.0" + wrap-ansi: "npm:^9.0.0" + checksum: 10c0/13441832e9efe7c7a76bd2b8e683555c478d461a9f249dc5db9b17fe8d4b47fa9277b503914b90bd00e4a151abb6b9b02b2288972ffe2e5e3ca40bcb1c2330d3 + languageName: node + linkType: hard + +"clone-deep@npm:^4.0.1": + version: 4.0.1 + resolution: "clone-deep@npm:4.0.1" + dependencies: + is-plain-object: "npm:^2.0.4" + kind-of: "npm:^6.0.2" + shallow-clone: "npm:^3.0.0" + checksum: 10c0/637753615aa24adf0f2d505947a1bb75e63964309034a1cf56ba4b1f30af155201edd38d26ffe26911adaae267a3c138b344a4947d39f5fc1b6d6108125aa758 + languageName: node + linkType: hard + +"co@npm:^4.6.0": + version: 4.6.0 + resolution: "co@npm:4.6.0" + checksum: 10c0/c0e85ea0ca8bf0a50cbdca82efc5af0301240ca88ebe3644a6ffb8ffe911f34d40f8fbcf8f1d52c5ddd66706abd4d3bfcd64259f1e8e2371d4f47573b0dc8c28 + languageName: node + linkType: hard + +"collect-v8-coverage@npm:^1.0.2": + version: 1.0.2 + resolution: "collect-v8-coverage@npm:1.0.2" + checksum: 10c0/ed7008e2e8b6852c5483b444a3ae6e976e088d4335a85aa0a9db2861c5f1d31bd2d7ff97a60469b3388deeba661a619753afbe201279fb159b4b9548ab8269a1 + languageName: node + linkType: hard + +"color-convert@npm:^2.0.1": + version: 2.0.1 + resolution: "color-convert@npm:2.0.1" + dependencies: + color-name: "npm:~1.1.4" + checksum: 10c0/37e1150172f2e311fe1b2df62c6293a342ee7380da7b9cfdba67ea539909afbd74da27033208d01d6d5cfc65ee7868a22e18d7e7648e004425441c0f8a15a7d7 + languageName: node + linkType: hard + +"color-name@npm:~1.1.4": + version: 1.1.4 + resolution: "color-name@npm:1.1.4" + checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 + languageName: node + linkType: hard + +"commander@npm:^6.2.0": + version: 6.2.1 + resolution: "commander@npm:6.2.1" + checksum: 10c0/85748abd9d18c8bc88febed58b98f66b7c591d9b5017cad459565761d7b29ca13b7783ea2ee5ce84bf235897333706c4ce29adf1ce15c8252780e7000e2ce9ea + languageName: node + linkType: hard + +"commondir@npm:^1.0.1": + version: 1.0.1 + resolution: "commondir@npm:1.0.1" + checksum: 10c0/33a124960e471c25ee19280c9ce31ccc19574b566dc514fe4f4ca4c34fa8b0b57cf437671f5de380e11353ea9426213fca17687dd2ef03134fea2dbc53809fd6 + languageName: node + linkType: hard + +"concat-map@npm:0.0.1": + version: 0.0.1 + resolution: "concat-map@npm:0.0.1" + checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f + languageName: node + linkType: hard + +"convert-source-map@npm:^2.0.0": + version: 2.0.0 + resolution: "convert-source-map@npm:2.0.0" + checksum: 10c0/8f2f7a27a1a011cc6cc88cc4da2d7d0cfa5ee0369508baae3d98c260bb3ac520691464e5bbe4ae7cdf09860c1d69ecc6f70c63c6e7c7f7e3f18ec08484dc7d9b + languageName: node + linkType: hard + +"core-js-compat@npm:^3.40.0": + version: 3.43.0 + resolution: "core-js-compat@npm:3.43.0" + dependencies: + browserslist: "npm:^4.25.0" + checksum: 10c0/923804c16faf91bacb747a697640a907cb2a3e63078d467a75eb7ea4187d62d36347a94e5826d1b36739012e81a2ea435922cc8bd8e228fa68efaf00a9ce94af + languageName: node + linkType: hard + +"core-js@npm:^3.30.2, core-js@npm:^3.43.0, core-js@npm:~3.43.0": + version: 3.43.0 + resolution: "core-js@npm:3.43.0" + checksum: 10c0/9d4ad66296e60380777de51d019b5c3e6cce023b7999750a5094f9a4b0ea53bf3600beb4ef11c56548f2c8791d43d4056e270d1cf55ba87273011aa7d4597871 + languageName: node + linkType: hard + +"cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" + dependencies: + path-key: "npm:^3.1.0" + shebang-command: "npm:^2.0.0" + which: "npm:^2.0.1" + checksum: 10c0/053ea8b2135caff68a9e81470e845613e374e7309a47731e81639de3eaeb90c3d01af0e0b44d2ab9d50b43467223b88567dfeb3262db942dc063b9976718ffc1 + languageName: node + linkType: hard + +"data-view-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-buffer@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.2" + checksum: 10c0/7986d40fc7979e9e6241f85db8d17060dd9a71bd53c894fa29d126061715e322a4cd47a00b0b8c710394854183d4120462b980b8554012acc1c0fa49df7ad38c + languageName: node + linkType: hard + +"data-view-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-byte-length@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.2" + checksum: 10c0/f8a4534b5c69384d95ac18137d381f18a5cfae1f0fc1df0ef6feef51ef0d568606d970b69e02ea186c6c0f0eac77fe4e6ad96fec2569cc86c3afcc7475068c55 + languageName: node + linkType: hard + +"data-view-byte-offset@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-offset@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + is-data-view: "npm:^1.0.1" + checksum: 10c0/fa7aa40078025b7810dcffc16df02c480573b7b53ef1205aa6a61533011005c1890e5ba17018c692ce7c900212b547262d33279fde801ad9843edc0863bf78c4 + languageName: node + linkType: hard + +"debug@npm:4, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": + version: 4.4.1 + resolution: "debug@npm:4.4.1" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10c0/d2b44bc1afd912b49bb7ebb0d50a860dc93a4dd7d946e8de94abc957bb63726b7dd5aa48c18c2386c379ec024c46692e15ed3ed97d481729f929201e671fcd55 + languageName: node + linkType: hard + +"dedent@npm:^1.6.0": + version: 1.6.0 + resolution: "dedent@npm:1.6.0" + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + checksum: 10c0/671b8f5e390dd2a560862c4511dd6d2638e71911486f78cb32116551f8f2aa6fcaf50579ffffb2f866d46b5b80fd72470659ca5760ede8f967619ef7df79e8a5 + languageName: node + linkType: hard + +"deep-is@npm:^0.1.3": + version: 0.1.4 + resolution: "deep-is@npm:0.1.4" + checksum: 10c0/7f0ee496e0dff14a573dc6127f14c95061b448b87b995fc96c017ce0a1e66af1675e73f1d6064407975bc4ea6ab679497a29fff7b5b9c4e99cb10797c1ad0b4c + languageName: node + linkType: hard + +"deepmerge@npm:^4.3.1": + version: 4.3.1 + resolution: "deepmerge@npm:4.3.1" + checksum: 10c0/e53481aaf1aa2c4082b5342be6b6d8ad9dfe387bc92ce197a66dea08bd4265904a087e75e464f14d1347cf2ac8afe1e4c16b266e0561cc5df29382d3c5f80044 + languageName: node + linkType: hard + +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": + version: 1.1.4 + resolution: "define-data-property@npm:1.1.4" + dependencies: + es-define-property: "npm:^1.0.0" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.0.1" + checksum: 10c0/dea0606d1483eb9db8d930d4eac62ca0fa16738b0b3e07046cddfacf7d8c868bbe13fa0cb263eb91c7d0d527960dc3f2f2471a69ed7816210307f6744fe62e37 + languageName: node + linkType: hard + +"define-properties@npm:^1.2.1": + version: 1.2.1 + resolution: "define-properties@npm:1.2.1" + dependencies: + define-data-property: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/88a152319ffe1396ccc6ded510a3896e77efac7a1bfbaa174a7b00414a1747377e0bb525d303794a47cf30e805c2ec84e575758512c6e44a993076d29fd4e6c3 + languageName: node + linkType: hard + +"detect-newline@npm:^3.1.0": + version: 3.1.0 + resolution: "detect-newline@npm:3.1.0" + checksum: 10c0/c38cfc8eeb9fda09febb44bcd85e467c970d4e3bf526095394e5a4f18bc26dd0cf6b22c69c1fa9969261521c593836db335c2795218f6d781a512aea2fb8209d + languageName: node + linkType: hard + +"dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + gopd: "npm:^1.2.0" + checksum: 10c0/199f2a0c1c16593ca0a145dbf76a962f8033ce3129f01284d48c45ed4e14fea9bbacd7b3610b6cdc33486cef20385ac054948fefc6272fcce645c09468f93031 + languageName: node + linkType: hard + +"eastasianwidth@npm:^0.2.0": + version: 0.2.0 + resolution: "eastasianwidth@npm:0.2.0" + checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39 + languageName: node + linkType: hard + +"electron-to-chromium@npm:^1.5.160": + version: 1.5.167 + resolution: "electron-to-chromium@npm:1.5.167" + checksum: 10c0/eba07d2d8ae99e1e29f1af380d005c378f71608617ca904cbe4e2b5b72b102b46c5687bdbef855e2214876729655661b2c20248cce425d54c8d40f0785cb998a + languageName: node + linkType: hard + +"emittery@npm:^0.13.1": + version: 0.13.1 + resolution: "emittery@npm:0.13.1" + checksum: 10c0/1573d0ae29ab34661b6c63251ff8f5facd24ccf6a823f19417ae8ba8c88ea450325788c67f16c99edec8de4b52ce93a10fe441ece389fd156e88ee7dab9bfa35 + languageName: node + linkType: hard + +"emoji-regex@npm:^10.3.0": + version: 10.4.0 + resolution: "emoji-regex@npm:10.4.0" + checksum: 10c0/a3fcedfc58bfcce21a05a5f36a529d81e88d602100145fcca3dc6f795e3c8acc4fc18fe773fbf9b6d6e9371205edb3afa2668ec3473fa2aa7fd47d2a9d46482d + languageName: node + linkType: hard + +"emoji-regex@npm:^8.0.0": + version: 8.0.0 + resolution: "emoji-regex@npm:8.0.0" + checksum: 10c0/b6053ad39951c4cf338f9092d7bfba448cdfd46fe6a2a034700b149ac9ffbc137e361cbd3c442297f86bed2e5f7576c1b54cc0a6bf8ef5106cc62f496af35010 + languageName: node + linkType: hard + +"emoji-regex@npm:^9.2.2": + version: 9.2.2 + resolution: "emoji-regex@npm:9.2.2" + checksum: 10c0/af014e759a72064cf66e6e694a7fc6b0ed3d8db680427b021a89727689671cefe9d04151b2cad51dbaf85d5ba790d061cd167f1cf32eb7b281f6368b3c181639 + languageName: node + linkType: hard + +"encoding@npm:^0.1.13": + version: 0.1.13 + resolution: "encoding@npm:0.1.13" + dependencies: + iconv-lite: "npm:^0.6.2" + checksum: 10c0/36d938712ff00fe1f4bac88b43bcffb5930c1efa57bbcdca9d67e1d9d6c57cfb1200fb01efe0f3109b2ce99b231f90779532814a81370a1bd3274a0f58585039 + languageName: node + linkType: hard + +"env-paths@npm:^2.2.0": + version: 2.2.1 + resolution: "env-paths@npm:2.2.1" + checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4 + languageName: node + linkType: hard + +"err-code@npm:^2.0.2": + version: 2.0.3 + resolution: "err-code@npm:2.0.3" + checksum: 10c0/b642f7b4dd4a376e954947550a3065a9ece6733ab8e51ad80db727aaae0817c2e99b02a97a3d6cecc648a97848305e728289cf312d09af395403a90c9d4d8a66 + languageName: node + linkType: hard + +"error-ex@npm:^1.3.1": + version: 1.3.2 + resolution: "error-ex@npm:1.3.2" + dependencies: + is-arrayish: "npm:^0.2.1" + checksum: 10c0/ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce + languageName: node + linkType: hard + +"es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.9": + version: 1.24.0 + resolution: "es-abstract@npm:1.24.0" + dependencies: + array-buffer-byte-length: "npm:^1.0.2" + arraybuffer.prototype.slice: "npm:^1.0.4" + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + data-view-buffer: "npm:^1.0.2" + data-view-byte-length: "npm:^1.0.2" + data-view-byte-offset: "npm:^1.0.1" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" + es-set-tostringtag: "npm:^2.1.0" + es-to-primitive: "npm:^1.3.0" + function.prototype.name: "npm:^1.1.8" + get-intrinsic: "npm:^1.3.0" + get-proto: "npm:^1.0.1" + get-symbol-description: "npm:^1.1.0" + globalthis: "npm:^1.0.4" + gopd: "npm:^1.2.0" + has-property-descriptors: "npm:^1.0.2" + has-proto: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + internal-slot: "npm:^1.1.0" + is-array-buffer: "npm:^3.0.5" + is-callable: "npm:^1.2.7" + is-data-view: "npm:^1.0.2" + is-negative-zero: "npm:^2.0.3" + is-regex: "npm:^1.2.1" + is-set: "npm:^2.0.3" + is-shared-array-buffer: "npm:^1.0.4" + is-string: "npm:^1.1.1" + is-typed-array: "npm:^1.1.15" + is-weakref: "npm:^1.1.1" + math-intrinsics: "npm:^1.1.0" + object-inspect: "npm:^1.13.4" + object-keys: "npm:^1.1.1" + object.assign: "npm:^4.1.7" + own-keys: "npm:^1.0.1" + regexp.prototype.flags: "npm:^1.5.4" + safe-array-concat: "npm:^1.1.3" + safe-push-apply: "npm:^1.0.0" + safe-regex-test: "npm:^1.1.0" + set-proto: "npm:^1.0.0" + stop-iteration-iterator: "npm:^1.1.0" + string.prototype.trim: "npm:^1.2.10" + string.prototype.trimend: "npm:^1.0.9" + string.prototype.trimstart: "npm:^1.0.8" + typed-array-buffer: "npm:^1.0.3" + typed-array-byte-length: "npm:^1.0.3" + typed-array-byte-offset: "npm:^1.0.4" + typed-array-length: "npm:^1.0.7" + unbox-primitive: "npm:^1.1.0" + which-typed-array: "npm:^1.1.19" + checksum: 10c0/b256e897be32df5d382786ce8cce29a1dd8c97efbab77a26609bd70f2ed29fbcfc7a31758cb07488d532e7ccccdfca76c1118f2afe5a424cdc05ca007867c318 + languageName: node + linkType: hard + +"es-array-method-boxes-properly@npm:^1.0.0": + version: 1.0.0 + resolution: "es-array-method-boxes-properly@npm:1.0.0" + checksum: 10c0/4b7617d3fbd460d6f051f684ceca6cf7e88e6724671d9480388d3ecdd72119ddaa46ca31f2c69c5426a82e4b3091c1e81867c71dcdc453565cd90005ff2c382d + languageName: node + linkType: hard + +"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 10c0/3f54eb49c16c18707949ff25a1456728c883e81259f045003499efba399c08bad00deebf65cccde8c0e07908c1a225c9d472b7107e558f2a48e28d530e34527c + languageName: node + linkType: hard + +"es-errors@npm:^1.3.0": + version: 1.3.0 + resolution: "es-errors@npm:1.3.0" + checksum: 10c0/0a61325670072f98d8ae3b914edab3559b6caa980f08054a3b872052640d91da01d38df55df797fcc916389d77fc92b8d5906cf028f4db46d7e3003abecbca85 + languageName: node + linkType: hard + +"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": + version: 1.1.1 + resolution: "es-object-atoms@npm:1.1.1" + dependencies: + es-errors: "npm:^1.3.0" + checksum: 10c0/65364812ca4daf48eb76e2a3b7a89b3f6a2e62a1c420766ce9f692665a29d94fe41fe88b65f24106f449859549711e4b40d9fb8002d862dfd7eb1c512d10be0c + languageName: node + linkType: hard + +"es-set-tostringtag@npm:^2.1.0": + version: 2.1.0 + resolution: "es-set-tostringtag@npm:2.1.0" + dependencies: + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10c0/ef2ca9ce49afe3931cb32e35da4dcb6d86ab02592cfc2ce3e49ced199d9d0bb5085fc7e73e06312213765f5efa47cc1df553a6a5154584b21448e9fb8355b1af + languageName: node + linkType: hard + +"es-to-primitive@npm:^1.3.0": + version: 1.3.0 + resolution: "es-to-primitive@npm:1.3.0" + dependencies: + is-callable: "npm:^1.2.7" + is-date-object: "npm:^1.0.5" + is-symbol: "npm:^1.0.4" + checksum: 10c0/c7e87467abb0b438639baa8139f701a06537d2b9bc758f23e8622c3b42fd0fdb5bde0f535686119e446dd9d5e4c0f238af4e14960f4771877cf818d023f6730b + languageName: node + linkType: hard + +"escalade@npm:^3.1.1, escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 10c0/ced4dd3a78e15897ed3be74e635110bbf3b08877b0a41be50dcb325ee0e0b5f65fc2d50e9845194d7c4633f327e2e1c6cce00a71b617c5673df0374201d67f65 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^2.0.0": + version: 2.0.0 + resolution: "escape-string-regexp@npm:2.0.0" + checksum: 10c0/2530479fe8db57eace5e8646c9c2a9c80fa279614986d16dcc6bcaceb63ae77f05a851ba6c43756d816c61d7f4534baf56e3c705e3e0d884818a46808811c507 + languageName: node + linkType: hard + +"escape-string-regexp@npm:^4.0.0": + version: 4.0.0 + resolution: "escape-string-regexp@npm:4.0.0" + checksum: 10c0/9497d4dd307d845bd7f75180d8188bb17ea8c151c1edbf6b6717c100e104d629dc2dfb687686181b0f4b7d732c7dfdc4d5e7a8ff72de1b0ca283a75bbb3a9cd9 + languageName: node + linkType: hard + +"eslint-config-prettier@npm:^10.1.5": + version: 10.1.5 + resolution: "eslint-config-prettier@npm:10.1.5" + peerDependencies: + eslint: ">=7.0.0" + bin: + eslint-config-prettier: bin/cli.js + checksum: 10c0/5486255428e4577e8064b40f27db299faf7312b8e43d7b4bc913a6426e6c0f5950cd519cad81ae24e9aecb4002c502bc665c02e3b52efde57af2debcf27dd6e0 + languageName: node + linkType: hard + +"eslint-plugin-jest@npm:^28.13.3": + version: 28.13.3 + resolution: "eslint-plugin-jest@npm:28.13.3" + dependencies: + "@typescript-eslint/utils": "npm:^6.0.0 || ^7.0.0 || ^8.0.0" + peerDependencies: + "@typescript-eslint/eslint-plugin": ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 + jest: "*" + peerDependenciesMeta: + "@typescript-eslint/eslint-plugin": + optional: true + jest: + optional: true + checksum: 10c0/ad461c2009ff69212b7962cb642f0815982ea3ae8a8ae4c65e73642bf8990d496707e2a9fb8e38fe067fa1d86da5eb1dc126975398de311c6e0d8211df6309f8 + languageName: node + linkType: hard + +"eslint-scope@npm:^8.3.0": + version: 8.4.0 + resolution: "eslint-scope@npm:8.4.0" + dependencies: + esrecurse: "npm:^4.3.0" + estraverse: "npm:^5.2.0" + checksum: 10c0/407f6c600204d0f3705bd557f81bd0189e69cd7996f408f8971ab5779c0af733d1af2f1412066b40ee1588b085874fc37a2333986c6521669cdbdd36ca5058e0 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^3.4.3": + version: 3.4.3 + resolution: "eslint-visitor-keys@npm:3.4.3" + checksum: 10c0/92708e882c0a5ffd88c23c0b404ac1628cf20104a108c745f240a13c332a11aac54f49a22d5762efbffc18ecbc9a580d1b7ad034bf5f3cc3307e5cbff2ec9820 + languageName: node + linkType: hard + +"eslint-visitor-keys@npm:^4.2.0, eslint-visitor-keys@npm:^4.2.1": + version: 4.2.1 + resolution: "eslint-visitor-keys@npm:4.2.1" + checksum: 10c0/fcd43999199d6740db26c58dbe0c2594623e31ca307e616ac05153c9272f12f1364f5a0b1917a8e962268fdecc6f3622c1c2908b4fcc2e047a106fe6de69dc43 + languageName: node + linkType: hard + +"eslint@npm:^9.28.0": + version: 9.28.0 + resolution: "eslint@npm:9.28.0" + dependencies: + "@eslint-community/eslint-utils": "npm:^4.2.0" + "@eslint-community/regexpp": "npm:^4.12.1" + "@eslint/config-array": "npm:^0.20.0" + "@eslint/config-helpers": "npm:^0.2.1" + "@eslint/core": "npm:^0.14.0" + "@eslint/eslintrc": "npm:^3.3.1" + "@eslint/js": "npm:9.28.0" + "@eslint/plugin-kit": "npm:^0.3.1" + "@humanfs/node": "npm:^0.16.6" + "@humanwhocodes/module-importer": "npm:^1.0.1" + "@humanwhocodes/retry": "npm:^0.4.2" + "@types/estree": "npm:^1.0.6" + "@types/json-schema": "npm:^7.0.15" + ajv: "npm:^6.12.4" + chalk: "npm:^4.0.0" + cross-spawn: "npm:^7.0.6" + debug: "npm:^4.3.2" + escape-string-regexp: "npm:^4.0.0" + eslint-scope: "npm:^8.3.0" + eslint-visitor-keys: "npm:^4.2.0" + espree: "npm:^10.3.0" + esquery: "npm:^1.5.0" + esutils: "npm:^2.0.2" + fast-deep-equal: "npm:^3.1.3" + file-entry-cache: "npm:^8.0.0" + find-up: "npm:^5.0.0" + glob-parent: "npm:^6.0.2" + ignore: "npm:^5.2.0" + imurmurhash: "npm:^0.1.4" + is-glob: "npm:^4.0.0" + json-stable-stringify-without-jsonify: "npm:^1.0.1" + lodash.merge: "npm:^4.6.2" + minimatch: "npm:^3.1.2" + natural-compare: "npm:^1.4.0" + optionator: "npm:^0.9.3" + peerDependencies: + jiti: "*" + peerDependenciesMeta: + jiti: + optional: true + bin: + eslint: bin/eslint.js + checksum: 10c0/513ea7e69d88a0905d4ed35cef3a8f31ebce7ca9f2cdbda3474495c63ad6831d52357aad65094be7a144d6e51850980ced7d25efb807e8ab06a427241f7cd730 + languageName: node + linkType: hard + +"espree@npm:^10.0.1, espree@npm:^10.3.0": + version: 10.4.0 + resolution: "espree@npm:10.4.0" + dependencies: + acorn: "npm:^8.15.0" + acorn-jsx: "npm:^5.3.2" + eslint-visitor-keys: "npm:^4.2.1" + checksum: 10c0/c63fe06131c26c8157b4083313cb02a9a54720a08e21543300e55288c40e06c3fc284bdecf108d3a1372c5934a0a88644c98714f38b6ae8ed272b40d9ea08d6b + languageName: node + linkType: hard + +"esprima@npm:^4.0.0": + version: 4.0.1 + resolution: "esprima@npm:4.0.1" + bin: + esparse: ./bin/esparse.js + esvalidate: ./bin/esvalidate.js + checksum: 10c0/ad4bab9ead0808cf56501750fd9d3fb276f6b105f987707d059005d57e182d18a7c9ec7f3a01794ebddcca676773e42ca48a32d67a250c9d35e009ca613caba3 + languageName: node + linkType: hard + +"esquery@npm:^1.5.0": + version: 1.6.0 + resolution: "esquery@npm:1.6.0" + dependencies: + estraverse: "npm:^5.1.0" + checksum: 10c0/cb9065ec605f9da7a76ca6dadb0619dfb611e37a81e318732977d90fab50a256b95fee2d925fba7c2f3f0523aa16f91587246693bc09bc34d5a59575fe6e93d2 + languageName: node + linkType: hard + +"esrecurse@npm:^4.3.0": + version: 4.3.0 + resolution: "esrecurse@npm:4.3.0" + dependencies: + estraverse: "npm:^5.2.0" + checksum: 10c0/81a37116d1408ded88ada45b9fb16dbd26fba3aadc369ce50fcaf82a0bac12772ebd7b24cd7b91fc66786bf2c1ac7b5f196bc990a473efff972f5cb338877cf5 + languageName: node + linkType: hard + +"estraverse@npm:^5.1.0, estraverse@npm:^5.2.0": + version: 5.3.0 + resolution: "estraverse@npm:5.3.0" + checksum: 10c0/1ff9447b96263dec95d6d67431c5e0771eb9776427421260a3e2f0fdd5d6bd4f8e37a7338f5ad2880c9f143450c9b1e4fc2069060724570a49cf9cf0312bd107 + languageName: node + linkType: hard + +"esutils@npm:^2.0.2": + version: 2.0.3 + resolution: "esutils@npm:2.0.3" + checksum: 10c0/9a2fe69a41bfdade834ba7c42de4723c97ec776e40656919c62cbd13607c45e127a003f05f724a1ea55e5029a4cf2de444b13009f2af71271e42d93a637137c7 + languageName: node + linkType: hard + +"execa@npm:^5.1.1": + version: 5.1.1 + resolution: "execa@npm:5.1.1" + dependencies: + cross-spawn: "npm:^7.0.3" + get-stream: "npm:^6.0.0" + human-signals: "npm:^2.1.0" + is-stream: "npm:^2.0.0" + merge-stream: "npm:^2.0.0" + npm-run-path: "npm:^4.0.1" + onetime: "npm:^5.1.2" + signal-exit: "npm:^3.0.3" + strip-final-newline: "npm:^2.0.0" + checksum: 10c0/c8e615235e8de4c5addf2fa4c3da3e3aa59ce975a3e83533b4f6a71750fb816a2e79610dc5f1799b6e28976c9ae86747a36a606655bf8cb414a74d8d507b304f + languageName: node + linkType: hard + +"exit-x@npm:^0.2.2": + version: 0.2.2 + resolution: "exit-x@npm:0.2.2" + checksum: 10c0/212a7a095ca5540e9581f1ef2d1d6a40df7a6027c8cc96e78ce1d16b86d1a88326d4a0eff8dff2b5ec1e68bb0c1edd5d0dfdde87df1869bf7514d4bc6a5cbd72 + languageName: node + linkType: hard + +"expect@npm:30.0.0": + version: 30.0.0 + resolution: "expect@npm:30.0.0" + dependencies: + "@jest/expect-utils": "npm:30.0.0" + "@jest/get-type": "npm:30.0.0" + jest-matcher-utils: "npm:30.0.0" + jest-message-util: "npm:30.0.0" + jest-mock: "npm:30.0.0" + jest-util: "npm:30.0.0" + checksum: 10c0/b3d5ceaaa7d3a3fd4ca779cd0f73f8bf55420b981f766aa290909852de19ef62fc3991fd85b4d6b56b7751422797de6e45c651eaeb3aef38c2185ef394c14fee + languageName: node + linkType: hard + +"exponential-backoff@npm:^3.1.1": + version: 3.1.2 + resolution: "exponential-backoff@npm:3.1.2" + checksum: 10c0/d9d3e1eafa21b78464297df91f1776f7fbaa3d5e3f7f0995648ca5b89c069d17055033817348d9f4a43d1c20b0eab84f75af6991751e839df53e4dfd6f22e844 + languageName: node + linkType: hard + +"fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": + version: 3.1.3 + resolution: "fast-deep-equal@npm:3.1.3" + checksum: 10c0/40dedc862eb8992c54579c66d914635afbec43350afbbe991235fdcb4e3a8d5af1b23ae7e79bef7d4882d0ecee06c3197488026998fb19f72dc95acff1d1b1d0 + languageName: node + linkType: hard + +"fast-glob@npm:^3.3.2": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3" + dependencies: + "@nodelib/fs.stat": "npm:^2.0.2" + "@nodelib/fs.walk": "npm:^1.2.3" + glob-parent: "npm:^5.1.2" + merge2: "npm:^1.3.0" + micromatch: "npm:^4.0.8" + checksum: 10c0/f6aaa141d0d3384cf73cbcdfc52f475ed293f6d5b65bfc5def368b09163a9f7e5ec2b3014d80f733c405f58e470ee0cc451c2937685045cddcdeaa24199c43fe + languageName: node + linkType: hard + +"fast-json-stable-stringify@npm:^2.0.0, fast-json-stable-stringify@npm:^2.1.0": + version: 2.1.0 + resolution: "fast-json-stable-stringify@npm:2.1.0" + checksum: 10c0/7f081eb0b8a64e0057b3bb03f974b3ef00135fbf36c1c710895cd9300f13c94ba809bb3a81cf4e1b03f6e5285610a61abbd7602d0652de423144dfee5a389c9b + languageName: node + linkType: hard + +"fast-levenshtein@npm:^2.0.6": + version: 2.0.6 + resolution: "fast-levenshtein@npm:2.0.6" + checksum: 10c0/111972b37338bcb88f7d9e2c5907862c280ebf4234433b95bc611e518d192ccb2d38119c4ac86e26b668d75f7f3894f4ff5c4982899afced7ca78633b08287c4 + languageName: node + linkType: hard + +"fastq@npm:^1.6.0": + version: 1.19.1 + resolution: "fastq@npm:1.19.1" + dependencies: + reusify: "npm:^1.0.4" + checksum: 10c0/ebc6e50ac7048daaeb8e64522a1ea7a26e92b3cee5cd1c7f2316cdca81ba543aa40a136b53891446ea5c3a67ec215fbaca87ad405f102dd97012f62916905630 + languageName: node + linkType: hard + +"fb-watchman@npm:^2.0.2": + version: 2.0.2 + resolution: "fb-watchman@npm:2.0.2" + dependencies: + bser: "npm:2.1.1" + checksum: 10c0/feae89ac148adb8f6ae8ccd87632e62b13563e6fb114cacb5265c51f585b17e2e268084519fb2edd133872f1d47a18e6bfd7e5e08625c0d41b93149694187581 + languageName: node + linkType: hard + +"fdir@npm:^6.4.4": + version: 6.4.6 + resolution: "fdir@npm:6.4.6" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: 10c0/45b559cff889934ebb8bc498351e5acba40750ada7e7d6bde197768d2fa67c149be8ae7f8ff34d03f4e1eb20f2764116e56440aaa2f6689e9a4aa7ef06acafe9 + languageName: node + linkType: hard + +"file-entry-cache@npm:^8.0.0": + version: 8.0.0 + resolution: "file-entry-cache@npm:8.0.0" + dependencies: + flat-cache: "npm:^4.0.0" + checksum: 10c0/9e2b5938b1cd9b6d7e3612bdc533afd4ac17b2fc646569e9a8abbf2eb48e5eb8e316bc38815a3ef6a1b456f4107f0d0f055a614ca613e75db6bf9ff4d72c1638 + languageName: node + linkType: hard + +"fill-range@npm:^7.1.1": + version: 7.1.1 + resolution: "fill-range@npm:7.1.1" + dependencies: + to-regex-range: "npm:^5.0.1" + checksum: 10c0/b75b691bbe065472f38824f694c2f7449d7f5004aa950426a2c28f0306c60db9b880c0b0e4ed819997ffb882d1da02cfcfc819bddc94d71627f5269682edf018 + languageName: node + linkType: hard + +"find-babel-config@npm:^2.1.1": + version: 2.1.2 + resolution: "find-babel-config@npm:2.1.2" + dependencies: + json5: "npm:^2.2.3" + checksum: 10c0/c9151b23d636378eae11aa761b0af41d5f67d5479e3ebfca7b0ec7feef91723f14242d243342783b89e6c51fc5b4120086eacf5d8a1a335cf7bae4b0ac89f493 + languageName: node + linkType: hard + +"find-cache-dir@npm:^2.0.0": + version: 2.1.0 + resolution: "find-cache-dir@npm:2.1.0" + dependencies: + commondir: "npm:^1.0.1" + make-dir: "npm:^2.0.0" + pkg-dir: "npm:^3.0.0" + checksum: 10c0/556117fd0af14eb88fb69250f4bba9e905e7c355c6136dff0e161b9cbd1f5285f761b778565a278da73a130f42eccc723d7ad4c002ae547ed1d698d39779dabb + languageName: node + linkType: hard + +"find-up@npm:^3.0.0": + version: 3.0.0 + resolution: "find-up@npm:3.0.0" + dependencies: + locate-path: "npm:^3.0.0" + checksum: 10c0/2c2e7d0a26db858e2f624f39038c74739e38306dee42b45f404f770db357947be9d0d587f1cac72d20c114deb38aa57316e879eb0a78b17b46da7dab0a3bd6e3 + languageName: node + linkType: hard + +"find-up@npm:^4.0.0, find-up@npm:^4.1.0": + version: 4.1.0 + resolution: "find-up@npm:4.1.0" + dependencies: + locate-path: "npm:^5.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1 + languageName: node + linkType: hard + +"find-up@npm:^5.0.0": + version: 5.0.0 + resolution: "find-up@npm:5.0.0" + dependencies: + locate-path: "npm:^6.0.0" + path-exists: "npm:^4.0.0" + checksum: 10c0/062c5a83a9c02f53cdd6d175a37ecf8f87ea5bbff1fdfb828f04bfa021441bc7583e8ebc0872a4c1baab96221fb8a8a275a19809fb93fbc40bd69ec35634069a + languageName: node + linkType: hard + +"flat-cache@npm:^4.0.0": + version: 4.0.1 + resolution: "flat-cache@npm:4.0.1" + dependencies: + flatted: "npm:^3.2.9" + keyv: "npm:^4.5.4" + checksum: 10c0/2c59d93e9faa2523e4fda6b4ada749bed432cfa28c8e251f33b25795e426a1c6dbada777afb1f74fcfff33934fdbdea921ee738fcc33e71adc9d6eca984a1cfc + languageName: node + linkType: hard + +"flatted@npm:^3.2.9": + version: 3.3.3 + resolution: "flatted@npm:3.3.3" + checksum: 10c0/e957a1c6b0254aa15b8cce8533e24165abd98fadc98575db082b786b5da1b7d72062b81bfdcd1da2f4d46b6ed93bec2434e62333e9b4261d79ef2e75a10dd538 + languageName: node + linkType: hard + +"for-each@npm:^0.3.3, for-each@npm:^0.3.5": + version: 0.3.5 + resolution: "for-each@npm:0.3.5" + dependencies: + is-callable: "npm:^1.2.7" + checksum: 10c0/0e0b50f6a843a282637d43674d1fb278dda1dd85f4f99b640024cfb10b85058aac0cc781bf689d5fe50b4b7f638e91e548560723a4e76e04fe96ae35ef039cee + languageName: node + linkType: hard + +"foreground-child@npm:^3.1.0, foreground-child@npm:^3.3.1": + version: 3.3.1 + resolution: "foreground-child@npm:3.3.1" + dependencies: + cross-spawn: "npm:^7.0.6" + signal-exit: "npm:^4.0.1" + checksum: 10c0/8986e4af2430896e65bc2788d6679067294d6aee9545daefc84923a0a4b399ad9c7a3ea7bd8c0b2b80fdf4a92de4c69df3f628233ff3224260e9c1541a9e9ed3 + languageName: node + linkType: hard + +"fs-minipass@npm:^3.0.0": + version: 3.0.3 + resolution: "fs-minipass@npm:3.0.3" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/63e80da2ff9b621e2cb1596abcb9207f1cf82b968b116ccd7b959e3323144cce7fb141462200971c38bbf2ecca51695069db45265705bed09a7cd93ae5b89f94 + languageName: node + linkType: hard + +"fs-readdir-recursive@npm:^1.1.0": + version: 1.1.0 + resolution: "fs-readdir-recursive@npm:1.1.0" + checksum: 10c0/7e190393952143e674b6d1ad4abcafa1b5d3e337fcc21b0cb051079a7140a54617a7df193d562ef9faf21bd7b2148a38601b3d5c16261fa76f278d88dc69989c + languageName: node + linkType: hard + +"fs.realpath@npm:^1.0.0": + version: 1.0.0 + resolution: "fs.realpath@npm:1.0.0" + checksum: 10c0/444cf1291d997165dfd4c0d58b69f0e4782bfd9149fd72faa4fe299e68e0e93d6db941660b37dd29153bf7186672ececa3b50b7e7249477b03fdf850f287c948 + languageName: node + linkType: hard + +"fsevents@npm:^2.3.3, fsevents@npm:~2.3.2": + version: 2.3.3 + resolution: "fsevents@npm:2.3.3" + dependencies: + node-gyp: "npm:latest" + checksum: 10c0/a1f0c44595123ed717febbc478aa952e47adfc28e2092be66b8ab1635147254ca6cfe1df792a8997f22716d4cbafc73309899ff7bfac2ac3ad8cf2e4ecc3ec60 + conditions: os=darwin + languageName: node + linkType: hard + +"fsevents@patch:fsevents@npm%3A^2.3.3#optional!builtin, fsevents@patch:fsevents@npm%3A~2.3.2#optional!builtin": + version: 2.3.3 + resolution: "fsevents@patch:fsevents@npm%3A2.3.3#optional!builtin::version=2.3.3&hash=df0bf1" + dependencies: + node-gyp: "npm:latest" + conditions: os=darwin + languageName: node + linkType: hard + +"function-bind@npm:^1.1.2": + version: 1.1.2 + resolution: "function-bind@npm:1.1.2" + checksum: 10c0/d8680ee1e5fcd4c197e4ac33b2b4dce03c71f4d91717292785703db200f5c21f977c568d28061226f9b5900cbcd2c84463646134fd5337e7925e0942bc3f46d5 + languageName: node + linkType: hard + +"function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8": + version: 1.1.8 + resolution: "function.prototype.name@npm:1.1.8" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + functions-have-names: "npm:^1.2.3" + hasown: "npm:^2.0.2" + is-callable: "npm:^1.2.7" + checksum: 10c0/e920a2ab52663005f3cbe7ee3373e3c71c1fb5558b0b0548648cdf3e51961085032458e26c71ff1a8c8c20e7ee7caeb03d43a5d1fa8610c459333323a2e71253 + languageName: node + linkType: hard + +"functions-have-names@npm:^1.2.3": + version: 1.2.3 + resolution: "functions-have-names@npm:1.2.3" + checksum: 10c0/33e77fd29bddc2d9bb78ab3eb854c165909201f88c75faa8272e35899e2d35a8a642a15e7420ef945e1f64a9670d6aa3ec744106b2aa42be68ca5114025954ca + languageName: node + linkType: hard + +"gensync@npm:^1.0.0-beta.2": + version: 1.0.0-beta.2 + resolution: "gensync@npm:1.0.0-beta.2" + checksum: 10c0/782aba6cba65b1bb5af3b095d96249d20edbe8df32dbf4696fd49be2583faf676173bf4809386588828e4dd76a3354fcbeb577bab1c833ccd9fc4577f26103f8 + languageName: node + linkType: hard + +"get-caller-file@npm:^2.0.5": + version: 2.0.5 + resolution: "get-caller-file@npm:2.0.5" + checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde + languageName: node + linkType: hard + +"get-east-asian-width@npm:^1.0.0": + version: 1.3.0 + resolution: "get-east-asian-width@npm:1.3.0" + checksum: 10c0/1a049ba697e0f9a4d5514c4623781c5246982bdb61082da6b5ae6c33d838e52ce6726407df285cdbb27ec1908b333cf2820989bd3e986e37bb20979437fdf34b + languageName: node + linkType: hard + +"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0": + version: 1.3.0 + resolution: "get-intrinsic@npm:1.3.0" + dependencies: + call-bind-apply-helpers: "npm:^1.0.2" + es-define-property: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.1.1" + function-bind: "npm:^1.1.2" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-symbols: "npm:^1.1.0" + hasown: "npm:^2.0.2" + math-intrinsics: "npm:^1.1.0" + checksum: 10c0/52c81808af9a8130f581e6a6a83e1ba4a9f703359e7a438d1369a5267a25412322f03dcbd7c549edaef0b6214a0630a28511d7df0130c93cfd380f4fa0b5b66a + languageName: node + linkType: hard + +"get-package-type@npm:^0.1.0": + version: 0.1.0 + resolution: "get-package-type@npm:0.1.0" + checksum: 10c0/e34cdf447fdf1902a1f6d5af737eaadf606d2ee3518287abde8910e04159368c268568174b2e71102b87b26c2020486f126bfca9c4fb1ceb986ff99b52ecd1be + languageName: node + linkType: hard + +"get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" + dependencies: + dunder-proto: "npm:^1.0.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/9224acb44603c5526955e83510b9da41baf6ae73f7398875fba50edc5e944223a89c4a72b070fcd78beb5f7bdda58ecb6294adc28f7acfc0da05f76a2399643c + languageName: node + linkType: hard + +"get-stream@npm:^6.0.0": + version: 6.0.1 + resolution: "get-stream@npm:6.0.1" + checksum: 10c0/49825d57d3fd6964228e6200a58169464b8e8970489b3acdc24906c782fb7f01f9f56f8e6653c4a50713771d6658f7cfe051e5eb8c12e334138c9c918b296341 + languageName: node + linkType: hard + +"get-symbol-description@npm:^1.1.0": + version: 1.1.0 + resolution: "get-symbol-description@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/d6a7d6afca375779a4b307738c9e80dbf7afc0bdbe5948768d54ab9653c865523d8920e670991a925936eb524b7cb6a6361d199a760b21d0ca7620194455aa4b + languageName: node + linkType: hard + +"glob-parent@npm:^5.1.2, glob-parent@npm:~5.1.2": + version: 5.1.2 + resolution: "glob-parent@npm:5.1.2" + dependencies: + is-glob: "npm:^4.0.1" + checksum: 10c0/cab87638e2112bee3f839ef5f6e0765057163d39c66be8ec1602f3823da4692297ad4e972de876ea17c44d652978638d2fd583c6713d0eb6591706825020c9ee + languageName: node + linkType: hard + +"glob-parent@npm:^6.0.2": + version: 6.0.2 + resolution: "glob-parent@npm:6.0.2" + dependencies: + is-glob: "npm:^4.0.3" + checksum: 10c0/317034d88654730230b3f43bb7ad4f7c90257a426e872ea0bf157473ac61c99bf5d205fad8f0185f989be8d2fa6d3c7dce1645d99d545b6ea9089c39f838e7f8 + languageName: node + linkType: hard + +"glob@npm:^10.2.2, glob@npm:^10.3.10": + version: 10.4.5 + resolution: "glob@npm:10.4.5" + dependencies: + foreground-child: "npm:^3.1.0" + jackspeak: "npm:^3.1.2" + minimatch: "npm:^9.0.4" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^1.11.1" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/19a9759ea77b8e3ca0a43c2f07ecddc2ad46216b786bb8f993c445aee80d345925a21e5280c7b7c6c59e860a0154b84e4b2b60321fea92cd3c56b4a7489f160e + languageName: node + linkType: hard + +"glob@npm:^11.0.0": + version: 11.0.3 + resolution: "glob@npm:11.0.3" + dependencies: + foreground-child: "npm:^3.3.1" + jackspeak: "npm:^4.1.1" + minimatch: "npm:^10.0.3" + minipass: "npm:^7.1.2" + package-json-from-dist: "npm:^1.0.0" + path-scurry: "npm:^2.0.0" + bin: + glob: dist/esm/bin.mjs + checksum: 10c0/7d24457549ec2903920dfa3d8e76850e7c02aa709122f0164b240c712f5455c0b457e6f2a1eee39344c6148e39895be8094ae8cfef7ccc3296ed30bce250c661 + languageName: node + linkType: hard + +"glob@npm:^7.1.4, glob@npm:^7.2.0": + version: 7.2.3 + resolution: "glob@npm:7.2.3" + dependencies: + fs.realpath: "npm:^1.0.0" + inflight: "npm:^1.0.4" + inherits: "npm:2" + minimatch: "npm:^3.1.1" + once: "npm:^1.3.0" + path-is-absolute: "npm:^1.0.0" + checksum: 10c0/65676153e2b0c9095100fe7f25a778bf45608eeb32c6048cf307f579649bcc30353277b3b898a3792602c65764e5baa4f643714dfbdfd64ea271d210c7a425fe + languageName: node + linkType: hard + +"glob@npm:^9.3.3": + version: 9.3.5 + resolution: "glob@npm:9.3.5" + dependencies: + fs.realpath: "npm:^1.0.0" + minimatch: "npm:^8.0.2" + minipass: "npm:^4.2.4" + path-scurry: "npm:^1.6.1" + checksum: 10c0/2f6c2b9ee019ee21dc258ae97a88719614591e4c979cb4580b1b9df6f0f778a3cb38b4bdaf18dfa584637ea10f89a3c5f2533a5e449cf8741514ad18b0951f2e + languageName: node + linkType: hard + +"globals@npm:^11.1.0": + version: 11.12.0 + resolution: "globals@npm:11.12.0" + checksum: 10c0/758f9f258e7b19226bd8d4af5d3b0dcf7038780fb23d82e6f98932c44e239f884847f1766e8fa9cc5635ccb3204f7fa7314d4408dd4002a5e8ea827b4018f0a1 + languageName: node + linkType: hard + +"globals@npm:^14.0.0": + version: 14.0.0 + resolution: "globals@npm:14.0.0" + checksum: 10c0/b96ff42620c9231ad468d4c58ff42afee7777ee1c963013ff8aabe095a451d0ceeb8dcd8ef4cbd64d2538cef45f787a78ba3a9574f4a634438963e334471302d + languageName: node + linkType: hard + +"globals@npm:^16.2.0": + version: 16.2.0 + resolution: "globals@npm:16.2.0" + checksum: 10c0/c2b3ea163faa6f8a38076b471b12f4bda891f7df7f7d2e8294fb4801d735a51a73431bf4c1696c5bf5dbca5e0a0db894698acfcbd3068730c6b12eef185dea25 + languageName: node + linkType: hard + +"globalthis@npm:^1.0.4": + version: 1.0.4 + resolution: "globalthis@npm:1.0.4" + dependencies: + define-properties: "npm:^1.2.1" + gopd: "npm:^1.0.1" + checksum: 10c0/9d156f313af79d80b1566b93e19285f481c591ad6d0d319b4be5e03750d004dde40a39a0f26f7e635f9007a3600802f53ecd85a759b86f109e80a5f705e01846 + languageName: node + linkType: hard + +"gopd@npm:^1.0.1, gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: 10c0/50fff1e04ba2b7737c097358534eacadad1e68d24cccee3272e04e007bed008e68d2614f3987788428fd192a5ae3889d08fb2331417e4fc4a9ab366b2043cead + languageName: node + linkType: hard + +"graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.6": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: 10c0/386d011a553e02bc594ac2ca0bd6d9e4c22d7fa8cfbfc448a6d148c59ea881b092db9dbe3547ae4b88e55f1b01f7c4a2ecc53b310c042793e63aa44cf6c257f2 + languageName: node + linkType: hard + +"graphemer@npm:^1.4.0": + version: 1.4.0 + resolution: "graphemer@npm:1.4.0" + checksum: 10c0/e951259d8cd2e0d196c72ec711add7115d42eb9a8146c8eeda5b8d3ac91e5dd816b9cd68920726d9fd4490368e7ed86e9c423f40db87e2d8dfafa00fa17c3a31 + languageName: node + linkType: hard + +"has-bigints@npm:^1.0.2": + version: 1.1.0 + resolution: "has-bigints@npm:1.1.0" + checksum: 10c0/2de0cdc4a1ccf7a1e75ffede1876994525ac03cc6f5ae7392d3415dd475cd9eee5bceec63669ab61aa997ff6cceebb50ef75561c7002bed8988de2b9d1b40788 + languageName: node + linkType: hard + +"has-flag@npm:^4.0.0": + version: 4.0.0 + resolution: "has-flag@npm:4.0.0" + checksum: 10c0/2e789c61b7888d66993e14e8331449e525ef42aac53c627cc53d1c3334e768bcb6abdc4f5f0de1478a25beec6f0bd62c7549058b7ac53e924040d4f301f02fd1 + languageName: node + linkType: hard + +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": + version: 1.0.2 + resolution: "has-property-descriptors@npm:1.0.2" + dependencies: + es-define-property: "npm:^1.0.0" + checksum: 10c0/253c1f59e80bb476cf0dde8ff5284505d90c3bdb762983c3514d36414290475fe3fd6f574929d84de2a8eec00d35cf07cb6776205ff32efd7c50719125f00236 + languageName: node + linkType: hard + +"has-proto@npm:^1.2.0": + version: 1.2.0 + resolution: "has-proto@npm:1.2.0" + dependencies: + dunder-proto: "npm:^1.0.0" + checksum: 10c0/46538dddab297ec2f43923c3d35237df45d8c55a6fc1067031e04c13ed8a9a8f94954460632fd4da84c31a1721eefee16d901cbb1ae9602bab93bb6e08f93b95 + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: 10c0/dde0a734b17ae51e84b10986e651c664379018d10b91b6b0e9b293eddb32f0f069688c841fb40f19e9611546130153e0a2a48fd7f512891fb000ddfa36f5a20e + languageName: node + linkType: hard + +"has-tostringtag@npm:^1.0.2": + version: 1.0.2 + resolution: "has-tostringtag@npm:1.0.2" + dependencies: + has-symbols: "npm:^1.0.3" + checksum: 10c0/a8b166462192bafe3d9b6e420a1d581d93dd867adb61be223a17a8d6dad147aa77a8be32c961bb2f27b3ef893cae8d36f564ab651f5e9b7938ae86f74027c48c + languageName: node + linkType: hard + +"hasown@npm:^2.0.2": + version: 2.0.2 + resolution: "hasown@npm:2.0.2" + dependencies: + function-bind: "npm:^1.1.2" + checksum: 10c0/3769d434703b8ac66b209a4cca0737519925bbdb61dd887f93a16372b14694c63ff4e797686d87c90f08168e81082248b9b028bad60d4da9e0d1148766f56eb9 + languageName: node + linkType: hard + +"homedir-polyfill@npm:^1.0.1": + version: 1.0.3 + resolution: "homedir-polyfill@npm:1.0.3" + dependencies: + parse-passwd: "npm:^1.0.0" + checksum: 10c0/3c099844f94b8b438f124bd5698bdcfef32b2d455115fb8050d7148e7f7b95fc89ba9922586c491f0e1cdebf437b1053c84ecddb8d596e109e9ac69c5b4a9e27 + languageName: node + linkType: hard + +"html-escaper@npm:^2.0.0": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: 10c0/208e8a12de1a6569edbb14544f4567e6ce8ecc30b9394fcaa4e7bb1e60c12a7c9a1ed27e31290817157e8626f3a4f29e76c8747030822eb84a6abb15c255f0a0 + languageName: node + linkType: hard + +"http-cache-semantics@npm:^4.1.1": + version: 4.2.0 + resolution: "http-cache-semantics@npm:4.2.0" + checksum: 10c0/45b66a945cf13ec2d1f29432277201313babf4a01d9e52f44b31ca923434083afeca03f18417f599c9ab3d0e7b618ceb21257542338b57c54b710463b4a53e37 + languageName: node + linkType: hard + +"http-proxy-agent@npm:^7.0.0": + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" + dependencies: + agent-base: "npm:^7.1.0" + debug: "npm:^4.3.4" + checksum: 10c0/4207b06a4580fb85dd6dff521f0abf6db517489e70863dca1a0291daa7f2d3d2d6015a57bd702af068ea5cf9f1f6ff72314f5f5b4228d299c0904135d2aef921 + languageName: node + linkType: hard + +"https-proxy-agent@npm:^7.0.1": + version: 7.0.6 + resolution: "https-proxy-agent@npm:7.0.6" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:4" + checksum: 10c0/f729219bc735edb621fa30e6e84e60ee5d00802b8247aac0d7b79b0bd6d4b3294737a337b93b86a0bd9e68099d031858a39260c976dc14cdbba238ba1f8779ac + languageName: node + linkType: hard + +"human-signals@npm:^2.1.0": + version: 2.1.0 + resolution: "human-signals@npm:2.1.0" + checksum: 10c0/695edb3edfcfe9c8b52a76926cd31b36978782062c0ed9b1192b36bebc75c4c87c82e178dfcb0ed0fc27ca59d434198aac0bd0be18f5781ded775604db22304a + languageName: node + linkType: hard + +"iconv-lite@npm:^0.6.2": + version: 0.6.3 + resolution: "iconv-lite@npm:0.6.3" + dependencies: + safer-buffer: "npm:>= 2.1.2 < 3.0.0" + checksum: 10c0/98102bc66b33fcf5ac044099d1257ba0b7ad5e3ccd3221f34dd508ab4070edff183276221684e1e0555b145fce0850c9f7d2b60a9fcac50fbb4ea0d6e845a3b1 + languageName: node + linkType: hard + +"ignore@npm:^5.2.0": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 10c0/f9f652c957983634ded1e7f02da3b559a0d4cc210fca3792cb67f1b153623c9c42efdc1c4121af171e295444459fc4a9201101fb041b1104a3c000bccb188337 + languageName: node + linkType: hard + +"ignore@npm:^7.0.0": + version: 7.0.5 + resolution: "ignore@npm:7.0.5" + checksum: 10c0/ae00db89fe873064a093b8999fe4cc284b13ef2a178636211842cceb650b9c3e390d3339191acb145d81ed5379d2074840cf0c33a20bdbd6f32821f79eb4ad5d + languageName: node + linkType: hard + +"import-fresh@npm:^3.2.1": + version: 3.3.1 + resolution: "import-fresh@npm:3.3.1" + dependencies: + parent-module: "npm:^1.0.0" + resolve-from: "npm:^4.0.0" + checksum: 10c0/bf8cc494872fef783249709385ae883b447e3eb09db0ebd15dcead7d9afe7224dad7bd7591c6b73b0b19b3c0f9640eb8ee884f01cfaf2887ab995b0b36a0cbec + languageName: node + linkType: hard + +"import-local@npm:^3.2.0": + version: 3.2.0 + resolution: "import-local@npm:3.2.0" + dependencies: + pkg-dir: "npm:^4.2.0" + resolve-cwd: "npm:^3.0.0" + bin: + import-local-fixture: fixtures/cli.js + checksum: 10c0/94cd6367a672b7e0cb026970c85b76902d2710a64896fa6de93bd5c571dd03b228c5759308959de205083e3b1c61e799f019c9e36ee8e9c523b993e1057f0433 + languageName: node + linkType: hard + +"imurmurhash@npm:^0.1.4": + version: 0.1.4 + resolution: "imurmurhash@npm:0.1.4" + checksum: 10c0/8b51313850dd33605c6c9d3fd9638b714f4c4c40250cff658209f30d40da60f78992fb2df5dabee4acf589a6a82bbc79ad5486550754bd9ec4e3fc0d4a57d6a6 + languageName: node + linkType: hard + +"inflight@npm:^1.0.4": + version: 1.0.6 + resolution: "inflight@npm:1.0.6" + dependencies: + once: "npm:^1.3.0" + wrappy: "npm:1" + checksum: 10c0/7faca22584600a9dc5b9fca2cd5feb7135ac8c935449837b315676b4c90aa4f391ec4f42240178244b5a34e8bede1948627fda392ca3191522fc46b34e985ab2 + languageName: node + linkType: hard + +"inherits@npm:2": + version: 2.0.4 + resolution: "inherits@npm:2.0.4" + checksum: 10c0/4e531f648b29039fb7426fb94075e6545faa1eb9fe83c29f0b6d9e7263aceb4289d2d4557db0d428188eeb449cc7c5e77b0a0b2c4e248ff2a65933a0dee49ef2 + languageName: node + linkType: hard + +"internal-slot@npm:^1.1.0": + version: 1.1.0 + resolution: "internal-slot@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + hasown: "npm:^2.0.2" + side-channel: "npm:^1.1.0" + checksum: 10c0/03966f5e259b009a9bf1a78d60da920df198af4318ec004f57b8aef1dd3fe377fbc8cce63a96e8c810010302654de89f9e19de1cd8ad0061d15be28a695465c7 + languageName: node + linkType: hard + +"ip-address@npm:^9.0.5": + version: 9.0.5 + resolution: "ip-address@npm:9.0.5" + dependencies: + jsbn: "npm:1.1.0" + sprintf-js: "npm:^1.1.3" + checksum: 10c0/331cd07fafcb3b24100613e4b53e1a2b4feab11e671e655d46dc09ee233da5011284d09ca40c4ecbdfe1d0004f462958675c224a804259f2f78d2465a87824bc + languageName: node + linkType: hard + +"is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5": + version: 3.0.5 + resolution: "is-array-buffer@npm:3.0.5" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/c5c9f25606e86dbb12e756694afbbff64bc8b348d1bc989324c037e1068695131930199d6ad381952715dad3a9569333817f0b1a72ce5af7f883ce802e49c83d + languageName: node + linkType: hard + +"is-arrayish@npm:^0.2.1": + version: 0.2.1 + resolution: "is-arrayish@npm:0.2.1" + checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729 + languageName: node + linkType: hard + +"is-async-function@npm:^2.0.0": + version: 2.1.1 + resolution: "is-async-function@npm:2.1.1" + dependencies: + async-function: "npm:^1.0.0" + call-bound: "npm:^1.0.3" + get-proto: "npm:^1.0.1" + has-tostringtag: "npm:^1.0.2" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/d70c236a5e82de6fc4d44368ffd0c2fee2b088b893511ce21e679da275a5ecc6015ff59a7d7e1bdd7ca39f71a8dbdd253cf8cce5c6b3c91cdd5b42b5ce677298 + languageName: node + linkType: hard + +"is-bigint@npm:^1.1.0": + version: 1.1.0 + resolution: "is-bigint@npm:1.1.0" + dependencies: + has-bigints: "npm:^1.0.2" + checksum: 10c0/f4f4b905ceb195be90a6ea7f34323bf1c18e3793f18922e3e9a73c684c29eeeeff5175605c3a3a74cc38185fe27758f07efba3dbae812e5c5afbc0d2316b40e4 + languageName: node + linkType: hard + +"is-binary-path@npm:~2.1.0": + version: 2.1.0 + resolution: "is-binary-path@npm:2.1.0" + dependencies: + binary-extensions: "npm:^2.0.0" + checksum: 10c0/a16eaee59ae2b315ba36fad5c5dcaf8e49c3e27318f8ab8fa3cdb8772bf559c8d1ba750a589c2ccb096113bb64497084361a25960899cb6172a6925ab6123d38 + languageName: node + linkType: hard + +"is-boolean-object@npm:^1.2.1": + version: 1.2.2 + resolution: "is-boolean-object@npm:1.2.2" + dependencies: + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/36ff6baf6bd18b3130186990026f5a95c709345c39cd368468e6c1b6ab52201e9fd26d8e1f4c066357b4938b0f0401e1a5000e08257787c1a02f3a719457001e + languageName: node + linkType: hard + +"is-callable@npm:^1.2.7": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 10c0/ceebaeb9d92e8adee604076971dd6000d38d6afc40bb843ea8e45c5579b57671c3f3b50d7f04869618242c6cee08d1b67806a8cb8edaaaf7c0748b3720d6066f + languageName: node + linkType: hard + +"is-core-module@npm:^2.16.0": + version: 2.16.1 + resolution: "is-core-module@npm:2.16.1" + dependencies: + hasown: "npm:^2.0.2" + checksum: 10c0/898443c14780a577e807618aaae2b6f745c8538eca5c7bc11388a3f2dc6de82b9902bcc7eb74f07be672b11bbe82dd6a6edded44a00cb3d8f933d0459905eedd + languageName: node + linkType: hard + +"is-data-view@npm:^1.0.1, is-data-view@npm:^1.0.2": + version: 1.0.2 + resolution: "is-data-view@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.6" + is-typed-array: "npm:^1.1.13" + checksum: 10c0/ef3548a99d7e7f1370ce21006baca6d40c73e9f15c941f89f0049c79714c873d03b02dae1c64b3f861f55163ecc16da06506c5b8a1d4f16650b3d9351c380153 + languageName: node + linkType: hard + +"is-date-object@npm:^1.0.5, is-date-object@npm:^1.1.0": + version: 1.1.0 + resolution: "is-date-object@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.2" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/1a4d199c8e9e9cac5128d32e6626fa7805175af9df015620ac0d5d45854ccf348ba494679d872d37301032e35a54fc7978fba1687e8721b2139aea7870cafa2f + languageName: node + linkType: hard + +"is-extglob@npm:^2.1.1": + version: 2.1.1 + resolution: "is-extglob@npm:2.1.1" + checksum: 10c0/5487da35691fbc339700bbb2730430b07777a3c21b9ebaecb3072512dfd7b4ba78ac2381a87e8d78d20ea08affb3f1971b4af629173a6bf435ff8a4c47747912 + languageName: node + linkType: hard + +"is-finalizationregistry@npm:^1.1.0": + version: 1.1.1 + resolution: "is-finalizationregistry@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + checksum: 10c0/818dff679b64f19e228a8205a1e2d09989a98e98def3a817f889208cfcbf918d321b251aadf2c05918194803ebd2eb01b14fc9d0b2bea53d984f4137bfca5e97 + languageName: node + linkType: hard + +"is-fullwidth-code-point@npm:^3.0.0": + version: 3.0.0 + resolution: "is-fullwidth-code-point@npm:3.0.0" + checksum: 10c0/bb11d825e049f38e04c06373a8d72782eee0205bda9d908cc550ccb3c59b99d750ff9537982e01733c1c94a58e35400661f57042158ff5e8f3e90cf936daf0fc + languageName: node + linkType: hard + +"is-generator-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "is-generator-fn@npm:2.1.0" + checksum: 10c0/2957cab387997a466cd0bf5c1b6047bd21ecb32bdcfd8996b15747aa01002c1c88731802f1b3d34ac99f4f6874b626418bd118658cf39380fe5fff32a3af9c4d + languageName: node + linkType: hard + +"is-generator-function@npm:^1.0.10": + version: 1.1.0 + resolution: "is-generator-function@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.3" + get-proto: "npm:^1.0.0" + has-tostringtag: "npm:^1.0.2" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/fdfa96c8087bf36fc4cd514b474ba2ff404219a4dd4cfa6cf5426404a1eed259bdcdb98f082a71029a48d01f27733e3436ecc6690129a7ec09cb0434bee03a2a + languageName: node + linkType: hard + +"is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": + version: 4.0.3 + resolution: "is-glob@npm:4.0.3" + dependencies: + is-extglob: "npm:^2.1.1" + checksum: 10c0/17fb4014e22be3bbecea9b2e3a76e9e34ff645466be702f1693e8f1ee1adac84710d0be0bd9f967d6354036fd51ab7c2741d954d6e91dae6bb69714de92c197a + languageName: node + linkType: hard + +"is-map@npm:^2.0.3": + version: 2.0.3 + resolution: "is-map@npm:2.0.3" + checksum: 10c0/2c4d431b74e00fdda7162cd8e4b763d6f6f217edf97d4f8538b94b8702b150610e2c64961340015fe8df5b1fcee33ccd2e9b62619c4a8a3a155f8de6d6d355fc + languageName: node + linkType: hard + +"is-negative-zero@npm:^2.0.3": + version: 2.0.3 + resolution: "is-negative-zero@npm:2.0.3" + checksum: 10c0/bcdcf6b8b9714063ffcfa9929c575ac69bfdabb8f4574ff557dfc086df2836cf07e3906f5bbc4f2a5c12f8f3ba56af640c843cdfc74da8caed86c7c7d66fd08e + languageName: node + linkType: hard + +"is-number-object@npm:^1.1.1": + version: 1.1.1 + resolution: "is-number-object@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/97b451b41f25135ff021d85c436ff0100d84a039bb87ffd799cbcdbea81ef30c464ced38258cdd34f080be08fc3b076ca1f472086286d2aa43521d6ec6a79f53 + languageName: node + linkType: hard + +"is-number@npm:^7.0.0": + version: 7.0.0 + resolution: "is-number@npm:7.0.0" + checksum: 10c0/b4686d0d3053146095ccd45346461bc8e53b80aeb7671cc52a4de02dbbf7dc0d1d2a986e2fe4ae206984b4d34ef37e8b795ebc4f4295c978373e6575e295d811 + languageName: node + linkType: hard + +"is-plain-object@npm:^2.0.4": + version: 2.0.4 + resolution: "is-plain-object@npm:2.0.4" + dependencies: + isobject: "npm:^3.0.1" + checksum: 10c0/f050fdd5203d9c81e8c4df1b3ff461c4bc64e8b5ca383bcdde46131361d0a678e80bcf00b5257646f6c636197629644d53bd8e2375aea633de09a82d57e942f4 + languageName: node + linkType: hard + +"is-regex@npm:^1.2.1": + version: 1.2.1 + resolution: "is-regex@npm:1.2.1" + dependencies: + call-bound: "npm:^1.0.2" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + hasown: "npm:^2.0.2" + checksum: 10c0/1d3715d2b7889932349241680032e85d0b492cfcb045acb75ffc2c3085e8d561184f1f7e84b6f8321935b4aea39bc9c6ba74ed595b57ce4881a51dfdbc214e04 + languageName: node + linkType: hard + +"is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: 10c0/f73732e13f099b2dc879c2a12341cfc22ccaca8dd504e6edae26484bd5707a35d503fba5b4daad530a9b088ced1ae6c9d8200fd92e09b428fe14ea79ce8080b7 + languageName: node + linkType: hard + +"is-shared-array-buffer@npm:^1.0.4": + version: 1.0.4 + resolution: "is-shared-array-buffer@npm:1.0.4" + dependencies: + call-bound: "npm:^1.0.3" + checksum: 10c0/65158c2feb41ff1edd6bbd6fd8403a69861cf273ff36077982b5d4d68e1d59278c71691216a4a64632bd76d4792d4d1d2553901b6666d84ade13bba5ea7bc7db + languageName: node + linkType: hard + +"is-stream@npm:^2.0.0": + version: 2.0.1 + resolution: "is-stream@npm:2.0.1" + checksum: 10c0/7c284241313fc6efc329b8d7f08e16c0efeb6baab1b4cd0ba579eb78e5af1aa5da11e68559896a2067cd6c526bd29241dda4eb1225e627d5aa1a89a76d4635a5 + languageName: node + linkType: hard + +"is-string@npm:^1.1.1": + version: 1.1.1 + resolution: "is-string@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/2f518b4e47886bb81567faba6ffd0d8a8333cf84336e2e78bf160693972e32ad00fe84b0926491cc598dee576fdc55642c92e62d0cbe96bf36f643b6f956f94d + languageName: node + linkType: hard + +"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": + version: 1.1.1 + resolution: "is-symbol@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.2" + has-symbols: "npm:^1.1.0" + safe-regex-test: "npm:^1.1.0" + checksum: 10c0/f08f3e255c12442e833f75a9e2b84b2d4882fdfd920513cf2a4a2324f0a5b076c8fd913778e3ea5d258d5183e9d92c0cd20e04b03ab3df05316b049b2670af1e + languageName: node + linkType: hard + +"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15": + version: 1.1.15 + resolution: "is-typed-array@npm:1.1.15" + dependencies: + which-typed-array: "npm:^1.1.16" + checksum: 10c0/415511da3669e36e002820584e264997ffe277ff136643a3126cc949197e6ca3334d0f12d084e83b1994af2e9c8141275c741cf2b7da5a2ff62dd0cac26f76c4 + languageName: node + linkType: hard + +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: 10c0/443c35bb86d5e6cc5929cd9c75a4024bb0fff9586ed50b092f94e700b89c43a33b186b76dbc6d54f3d3d09ece689ab38dcdc1af6a482cbe79c0f2da0a17f1299 + languageName: node + linkType: hard + +"is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.1": + version: 1.1.1 + resolution: "is-weakref@npm:1.1.1" + dependencies: + call-bound: "npm:^1.0.3" + checksum: 10c0/8e0a9c07b0c780949a100e2cab2b5560a48ecd4c61726923c1a9b77b6ab0aa0046c9e7fb2206042296817045376dee2c8ab1dabe08c7c3dfbf195b01275a085b + languageName: node + linkType: hard + +"is-weakset@npm:^2.0.3": + version: 2.0.4 + resolution: "is-weakset@npm:2.0.4" + dependencies: + call-bound: "npm:^1.0.3" + get-intrinsic: "npm:^1.2.6" + checksum: 10c0/6491eba08acb8dc9532da23cb226b7d0192ede0b88f16199e592e4769db0a077119c1f5d2283d1e0d16d739115f70046e887e477eb0e66cd90e1bb29f28ba647 + languageName: node + linkType: hard + +"isarray@npm:^2.0.5": + version: 2.0.5 + resolution: "isarray@npm:2.0.5" + checksum: 10c0/4199f14a7a13da2177c66c31080008b7124331956f47bca57dd0b6ea9f11687aa25e565a2c7a2b519bc86988d10398e3049a1f5df13c9f6b7664154690ae79fd + languageName: node + linkType: hard + +"isexe@npm:^2.0.0": + version: 2.0.0 + resolution: "isexe@npm:2.0.0" + checksum: 10c0/228cfa503fadc2c31596ab06ed6aa82c9976eec2bfd83397e7eaf06d0ccf42cd1dfd6743bf9aeb01aebd4156d009994c5f76ea898d2832c1fe342da923ca457d + languageName: node + linkType: hard + +"isexe@npm:^3.1.1": + version: 3.1.1 + resolution: "isexe@npm:3.1.1" + checksum: 10c0/9ec257654093443eb0a528a9c8cbba9c0ca7616ccb40abd6dde7202734d96bb86e4ac0d764f0f8cd965856aacbff2f4ce23e730dc19dfb41e3b0d865ca6fdcc7 + languageName: node + linkType: hard + +"isobject@npm:^3.0.1": + version: 3.0.1 + resolution: "isobject@npm:3.0.1" + checksum: 10c0/03344f5064a82f099a0cd1a8a407f4c0d20b7b8485e8e816c39f249e9416b06c322e8dec5b842b6bb8a06de0af9cb48e7bc1b5352f0fadc2f0abac033db3d4db + languageName: node + linkType: hard + +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.0": + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 10c0/6c7ff2106769e5f592ded1fb418f9f73b4411fd5a084387a5410538332b6567cd1763ff6b6cadca9b9eb2c443cce2f7ea7d7f1b8d315f9ce58539793b1e0922b + languageName: node + linkType: hard + +"istanbul-lib-instrument@npm:^6.0.0, istanbul-lib-instrument@npm:^6.0.2": + version: 6.0.3 + resolution: "istanbul-lib-instrument@npm:6.0.3" + dependencies: + "@babel/core": "npm:^7.23.9" + "@babel/parser": "npm:^7.23.9" + "@istanbuljs/schema": "npm:^0.1.3" + istanbul-lib-coverage: "npm:^3.2.0" + semver: "npm:^7.5.4" + checksum: 10c0/a1894e060dd2a3b9f046ffdc87b44c00a35516f5e6b7baf4910369acca79e506fc5323a816f811ae23d82334b38e3ddeb8b3b331bd2c860540793b59a8689128 + languageName: node + linkType: hard + +"istanbul-lib-report@npm:^3.0.0": + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" + dependencies: + istanbul-lib-coverage: "npm:^3.0.0" + make-dir: "npm:^4.0.0" + supports-color: "npm:^7.1.0" + checksum: 10c0/84323afb14392de8b6a5714bd7e9af845cfbd56cfe71ed276cda2f5f1201aea673c7111901227ee33e68e4364e288d73861eb2ed48f6679d1e69a43b6d9b3ba7 + languageName: node + linkType: hard + +"istanbul-lib-source-maps@npm:^5.0.0": + version: 5.0.6 + resolution: "istanbul-lib-source-maps@npm:5.0.6" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.23" + debug: "npm:^4.1.1" + istanbul-lib-coverage: "npm:^3.0.0" + checksum: 10c0/ffe75d70b303a3621ee4671554f306e0831b16f39ab7f4ab52e54d356a5d33e534d97563e318f1333a6aae1d42f91ec49c76b6cd3f3fb378addcb5c81da0255f + languageName: node + linkType: hard + +"istanbul-reports@npm:^3.1.3": + version: 3.1.7 + resolution: "istanbul-reports@npm:3.1.7" + dependencies: + html-escaper: "npm:^2.0.0" + istanbul-lib-report: "npm:^3.0.0" + checksum: 10c0/a379fadf9cf8dc5dfe25568115721d4a7eb82fbd50b005a6672aff9c6989b20cc9312d7865814e0859cd8df58cbf664482e1d3604be0afde1f7fc3ccc1394a51 + languageName: node + linkType: hard + +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + "@pkgjs/parseargs": "npm:^0.11.0" + dependenciesMeta: + "@pkgjs/parseargs": + optional: true + checksum: 10c0/6acc10d139eaefdbe04d2f679e6191b3abf073f111edf10b1de5302c97ec93fffeb2fdd8681ed17f16268aa9dd4f8c588ed9d1d3bffbbfa6e8bf897cbb3149b9 + languageName: node + linkType: hard + +"jackspeak@npm:^4.1.1": + version: 4.1.1 + resolution: "jackspeak@npm:4.1.1" + dependencies: + "@isaacs/cliui": "npm:^8.0.2" + checksum: 10c0/84ec4f8e21d6514db24737d9caf65361511f75e5e424980eebca4199f400874f45e562ac20fa8aeb1dd20ca2f3f81f0788b6e9c3e64d216a5794fd6f30e0e042 + languageName: node + linkType: hard + +"jest-changed-files@npm:30.0.0": + version: 30.0.0 + resolution: "jest-changed-files@npm:30.0.0" + dependencies: + execa: "npm:^5.1.1" + jest-util: "npm:30.0.0" + p-limit: "npm:^3.1.0" + checksum: 10c0/6e0c2ec2d88ecadea815ad782f5ab554d60c5888d8009bf20b7f1e394bac1bb8702d929aa471a3fff41645ff0793f570c4cca7f07c22bd05c66a0ff2200d2442 + languageName: node + linkType: hard + +"jest-circus@npm:30.0.0": + version: 30.0.0 + resolution: "jest-circus@npm:30.0.0" + dependencies: + "@jest/environment": "npm:30.0.0" + "@jest/expect": "npm:30.0.0" + "@jest/test-result": "npm:30.0.0" + "@jest/types": "npm:30.0.0" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + co: "npm:^4.6.0" + dedent: "npm:^1.6.0" + is-generator-fn: "npm:^2.1.0" + jest-each: "npm:30.0.0" + jest-matcher-utils: "npm:30.0.0" + jest-message-util: "npm:30.0.0" + jest-runtime: "npm:30.0.0" + jest-snapshot: "npm:30.0.0" + jest-util: "npm:30.0.0" + p-limit: "npm:^3.1.0" + pretty-format: "npm:30.0.0" + pure-rand: "npm:^7.0.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.6" + checksum: 10c0/f6d6d90f184644483904d7eec19a4b47ef78f575e105e061e5645b596d19a712233e36296530a383cb44bc0b6466387132bb4fb8b39589520010907b27ebeccc + languageName: node + linkType: hard + +"jest-cli@npm:30.0.0": + version: 30.0.0 + resolution: "jest-cli@npm:30.0.0" + dependencies: + "@jest/core": "npm:30.0.0" + "@jest/test-result": "npm:30.0.0" + "@jest/types": "npm:30.0.0" + chalk: "npm:^4.1.2" + exit-x: "npm:^0.2.2" + import-local: "npm:^3.2.0" + jest-config: "npm:30.0.0" + jest-util: "npm:30.0.0" + jest-validate: "npm:30.0.0" + yargs: "npm:^17.7.2" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: ./bin/jest.js + checksum: 10c0/b5e56db010e6a52b95ed84ea255b9c979b4a73dbefdf7763dd2a42d1ba52b417eaf67d15c225890a025495e82467ac33fe5c0cb1b1e46a46a6ccdcd14db7e8d3 + languageName: node + linkType: hard + +"jest-config@npm:30.0.0": + version: 30.0.0 + resolution: "jest-config@npm:30.0.0" + dependencies: + "@babel/core": "npm:^7.27.4" + "@jest/get-type": "npm:30.0.0" + "@jest/pattern": "npm:30.0.0" + "@jest/test-sequencer": "npm:30.0.0" + "@jest/types": "npm:30.0.0" + babel-jest: "npm:30.0.0" + chalk: "npm:^4.1.2" + ci-info: "npm:^4.2.0" + deepmerge: "npm:^4.3.1" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.11" + jest-circus: "npm:30.0.0" + jest-docblock: "npm:30.0.0" + jest-environment-node: "npm:30.0.0" + jest-regex-util: "npm:30.0.0" + jest-resolve: "npm:30.0.0" + jest-runner: "npm:30.0.0" + jest-util: "npm:30.0.0" + jest-validate: "npm:30.0.0" + micromatch: "npm:^4.0.8" + parse-json: "npm:^5.2.0" + pretty-format: "npm:30.0.0" + slash: "npm:^3.0.0" + strip-json-comments: "npm:^3.1.1" + peerDependencies: + "@types/node": "*" + esbuild-register: ">=3.4.0" + ts-node: ">=9.0.0" + peerDependenciesMeta: + "@types/node": + optional: true + esbuild-register: + optional: true + ts-node: + optional: true + checksum: 10c0/55cfe9e7922221961041ae57dfebe1dca4cad58cdb8b56006f589d37f1524689fe34b3b67c1b7c136ab13b7d62125d214513605e28ee7a4e0fd6f29768887ccc + languageName: node + linkType: hard + +"jest-diff@npm:30.0.0": + version: 30.0.0 + resolution: "jest-diff@npm:30.0.0" + dependencies: + "@jest/diff-sequences": "npm:30.0.0" + "@jest/get-type": "npm:30.0.0" + chalk: "npm:^4.1.2" + pretty-format: "npm:30.0.0" + checksum: 10c0/030d99157891aa929277b070671e00610abc171efbd908591250687c1ced95f82ecb3d243f020b22bd68f73e5137a865bf70e43263eeae02058ce1525fa67296 + languageName: node + linkType: hard + +"jest-docblock@npm:30.0.0": + version: 30.0.0 + resolution: "jest-docblock@npm:30.0.0" + dependencies: + detect-newline: "npm:^3.1.0" + checksum: 10c0/1a02306b1efb524b19ef3541d590df85301e854e0ac515da3fdc9a7bb78fefe08ddc09365b34a029d34ea537402c6edc6cea0446bfc5856af0ed1d1cd6508d00 + languageName: node + linkType: hard + +"jest-each@npm:30.0.0": + version: 30.0.0 + resolution: "jest-each@npm:30.0.0" + dependencies: + "@jest/get-type": "npm:30.0.0" + "@jest/types": "npm:30.0.0" + chalk: "npm:^4.1.2" + jest-util: "npm:30.0.0" + pretty-format: "npm:30.0.0" + checksum: 10c0/9131d5efbdaf4f5f97b5363753f231e21a2ddc6141410f450dafd94c19b6e4fa2120a0749c95f3e72dc1edb40a723a971d2f016c6b75e3a484cc2d69a4ff7197 + languageName: node + linkType: hard + +"jest-environment-node@npm:30.0.0": + version: 30.0.0 + resolution: "jest-environment-node@npm:30.0.0" + dependencies: + "@jest/environment": "npm:30.0.0" + "@jest/fake-timers": "npm:30.0.0" + "@jest/types": "npm:30.0.0" + "@types/node": "npm:*" + jest-mock: "npm:30.0.0" + jest-util: "npm:30.0.0" + jest-validate: "npm:30.0.0" + checksum: 10c0/2c53e72398af89c1028b3899c0de68d7bb28c3a47b8a2b93d38bd3bbf47eda1d62f124fc28a7c4ade85fb020332c133b399cca1b48ac6be2d11525d0a0e6d23d + languageName: node + linkType: hard + +"jest-haste-map@npm:30.0.0": + version: 30.0.0 + resolution: "jest-haste-map@npm:30.0.0" + dependencies: + "@jest/types": "npm:30.0.0" + "@types/node": "npm:*" + anymatch: "npm:^3.1.3" + fb-watchman: "npm:^2.0.2" + fsevents: "npm:^2.3.3" + graceful-fs: "npm:^4.2.11" + jest-regex-util: "npm:30.0.0" + jest-util: "npm:30.0.0" + jest-worker: "npm:30.0.0" + micromatch: "npm:^4.0.8" + walker: "npm:^1.0.8" + dependenciesMeta: + fsevents: + optional: true + checksum: 10c0/8f45fa1e6d42b3e6146df7ea51da31ef39b31255769e0de9791fa11ef6a94a6a82fce4054967d5de6ccfad663ee5f782f64165b968612dd4f910bc396565ba2e + languageName: node + linkType: hard + +"jest-leak-detector@npm:30.0.0": + version: 30.0.0 + resolution: "jest-leak-detector@npm:30.0.0" + dependencies: + "@jest/get-type": "npm:30.0.0" + pretty-format: "npm:30.0.0" + checksum: 10c0/5dbf16dcaae651386d49556a657773497a555db78c033465d6767ce35db20aeae3aca4e34eb5fbf01bec733df699ed99aee56cc08d5af4c0422999e132a5c7af + languageName: node + linkType: hard + +"jest-matcher-utils@npm:30.0.0": + version: 30.0.0 + resolution: "jest-matcher-utils@npm:30.0.0" + dependencies: + "@jest/get-type": "npm:30.0.0" + chalk: "npm:^4.1.2" + jest-diff: "npm:30.0.0" + pretty-format: "npm:30.0.0" + checksum: 10c0/56869dfddf74252265a51be5a291b6c1148b5d3cb16702a2c7fd80bf3d4967d565927abaceba7ba28be13e749f0d3060e41641b0125fbefc0da0762b795069fd + languageName: node + linkType: hard + +"jest-message-util@npm:30.0.0": + version: 30.0.0 + resolution: "jest-message-util@npm:30.0.0" + dependencies: + "@babel/code-frame": "npm:^7.27.1" + "@jest/types": "npm:30.0.0" + "@types/stack-utils": "npm:^2.0.3" + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + micromatch: "npm:^4.0.8" + pretty-format: "npm:30.0.0" + slash: "npm:^3.0.0" + stack-utils: "npm:^2.0.6" + checksum: 10c0/32ddafdaeea73dcb133de4a19603759c99dc97a336c5484757e1fd490c55ad937290737ad9fb378a8fdc39d36dbacfaa498320b1c852a78d620151a53df7c138 + languageName: node + linkType: hard + +"jest-mock@npm:30.0.0": + version: 30.0.0 + resolution: "jest-mock@npm:30.0.0" + dependencies: + "@jest/types": "npm:30.0.0" + "@types/node": "npm:*" + jest-util: "npm:30.0.0" + checksum: 10c0/72c0a210ef0492c84e279f14f55f63ca14e8124e2a67047bd8b2841da1428b35b6985bfe88041e1f6fbc50980e7f03b4581009575968ed59f226840c482fa348 + languageName: node + linkType: hard + +"jest-pnp-resolver@npm:^1.2.3": + version: 1.2.3 + resolution: "jest-pnp-resolver@npm:1.2.3" + peerDependencies: + jest-resolve: "*" + peerDependenciesMeta: + jest-resolve: + optional: true + checksum: 10c0/86eec0c78449a2de733a6d3e316d49461af6a858070e113c97f75fb742a48c2396ea94150cbca44159ffd4a959f743a47a8b37a792ef6fdad2cf0a5cba973fac + languageName: node + linkType: hard + +"jest-regex-util@npm:30.0.0": + version: 30.0.0 + resolution: "jest-regex-util@npm:30.0.0" + checksum: 10c0/4cd7ba28b9bf7ef52057292afc96d8dc3df26e27dd69f8ef9e7c1c0773c834d27e65744c3e1d7206a059b0fde1b59834b42fbfc3e353e1dfcea94e84696b5f6d + languageName: node + linkType: hard + +"jest-resolve-dependencies@npm:30.0.0": + version: 30.0.0 + resolution: "jest-resolve-dependencies@npm:30.0.0" + dependencies: + jest-regex-util: "npm:30.0.0" + jest-snapshot: "npm:30.0.0" + checksum: 10c0/fb844f966aacbff7b31d6a442622417fd01a8da3a915735fd8f3951627307bef652c62e09712c7140d2aefe5a937cdd30928b63ce7a76716cc0d5682867c5596 + languageName: node + linkType: hard + +"jest-resolve@npm:30.0.0": + version: 30.0.0 + resolution: "jest-resolve@npm:30.0.0" + dependencies: + chalk: "npm:^4.1.2" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.0.0" + jest-pnp-resolver: "npm:^1.2.3" + jest-util: "npm:30.0.0" + jest-validate: "npm:30.0.0" + slash: "npm:^3.0.0" + unrs-resolver: "npm:^1.7.11" + checksum: 10c0/2973acdbd4a954032bc73ee4871bb92d2e40e524c7cf556f039a088d85810f61b867fe1c62d02e3eba82eb80566d22cd4399e89fb03aaace998097e1611893ac + languageName: node + linkType: hard + +"jest-runner@npm:30.0.0": + version: 30.0.0 + resolution: "jest-runner@npm:30.0.0" + dependencies: + "@jest/console": "npm:30.0.0" + "@jest/environment": "npm:30.0.0" + "@jest/test-result": "npm:30.0.0" + "@jest/transform": "npm:30.0.0" + "@jest/types": "npm:30.0.0" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + emittery: "npm:^0.13.1" + exit-x: "npm:^0.2.2" + graceful-fs: "npm:^4.2.11" + jest-docblock: "npm:30.0.0" + jest-environment-node: "npm:30.0.0" + jest-haste-map: "npm:30.0.0" + jest-leak-detector: "npm:30.0.0" + jest-message-util: "npm:30.0.0" + jest-resolve: "npm:30.0.0" + jest-runtime: "npm:30.0.0" + jest-util: "npm:30.0.0" + jest-watcher: "npm:30.0.0" + jest-worker: "npm:30.0.0" + p-limit: "npm:^3.1.0" + source-map-support: "npm:0.5.13" + checksum: 10c0/b6609d477d4a8e73282688cc1bb4d8fff3d0813f6f8b8ff56072b3dcfbc89908ac272fc862fbdc3bd4b6e089d2b442b6ebd160abba4deabc102eb1ee0d5a3a0a + languageName: node + linkType: hard + +"jest-runtime@npm:30.0.0": + version: 30.0.0 + resolution: "jest-runtime@npm:30.0.0" + dependencies: + "@jest/environment": "npm:30.0.0" + "@jest/fake-timers": "npm:30.0.0" + "@jest/globals": "npm:30.0.0" + "@jest/source-map": "npm:30.0.0" + "@jest/test-result": "npm:30.0.0" + "@jest/transform": "npm:30.0.0" + "@jest/types": "npm:30.0.0" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + cjs-module-lexer: "npm:^2.1.0" + collect-v8-coverage: "npm:^1.0.2" + glob: "npm:^10.3.10" + graceful-fs: "npm:^4.2.11" + jest-haste-map: "npm:30.0.0" + jest-message-util: "npm:30.0.0" + jest-mock: "npm:30.0.0" + jest-regex-util: "npm:30.0.0" + jest-resolve: "npm:30.0.0" + jest-snapshot: "npm:30.0.0" + jest-util: "npm:30.0.0" + slash: "npm:^3.0.0" + strip-bom: "npm:^4.0.0" + checksum: 10c0/73ec21368b7bcb4d1207f4b04f2edf300fe7b4890adfa4d0622c5f43041990b9e33f9deb4c44a55111c5c0d547462cde5c51f516643d76430ef3d9d0f6728617 + languageName: node + linkType: hard + +"jest-snapshot@npm:30.0.0": + version: 30.0.0 + resolution: "jest-snapshot@npm:30.0.0" + dependencies: + "@babel/core": "npm:^7.27.4" + "@babel/generator": "npm:^7.27.5" + "@babel/plugin-syntax-jsx": "npm:^7.27.1" + "@babel/plugin-syntax-typescript": "npm:^7.27.1" + "@babel/types": "npm:^7.27.3" + "@jest/expect-utils": "npm:30.0.0" + "@jest/get-type": "npm:30.0.0" + "@jest/snapshot-utils": "npm:30.0.0" + "@jest/transform": "npm:30.0.0" + "@jest/types": "npm:30.0.0" + babel-preset-current-node-syntax: "npm:^1.1.0" + chalk: "npm:^4.1.2" + expect: "npm:30.0.0" + graceful-fs: "npm:^4.2.11" + jest-diff: "npm:30.0.0" + jest-matcher-utils: "npm:30.0.0" + jest-message-util: "npm:30.0.0" + jest-util: "npm:30.0.0" + pretty-format: "npm:30.0.0" + semver: "npm:^7.7.2" + synckit: "npm:^0.11.8" + checksum: 10c0/2df3ff6de6eda3e1c192fbb33ac5468ae0366107e1f51dc3a2fa6f3f1c092bbc7fb1b3143513d22074adf960fd23757824c122a1bc26f54553d168d1e3c773ab + languageName: node + linkType: hard + +"jest-util@npm:30.0.0": + version: 30.0.0 + resolution: "jest-util@npm:30.0.0" + dependencies: + "@jest/types": "npm:30.0.0" + "@types/node": "npm:*" + chalk: "npm:^4.1.2" + ci-info: "npm:^4.2.0" + graceful-fs: "npm:^4.2.11" + picomatch: "npm:^4.0.2" + checksum: 10c0/3be06e09e64699c078ca808a5a1b5d25b6003f6b4c6c5168a8b15ad555fb204a73b013e7f20b70528976734efbcbf6397309cf1c78054077a7491dcf9ea8d9a7 + languageName: node + linkType: hard + +"jest-validate@npm:30.0.0": + version: 30.0.0 + resolution: "jest-validate@npm:30.0.0" + dependencies: + "@jest/get-type": "npm:30.0.0" + "@jest/types": "npm:30.0.0" + camelcase: "npm:^6.3.0" + chalk: "npm:^4.1.2" + leven: "npm:^3.1.0" + pretty-format: "npm:30.0.0" + checksum: 10c0/c73561360fa36e36626e07c69519e822ae6fd45de93272f176f998dad7798ada9369c047f1efaab01ac96ab1496d72c134e20075a4bf43c87b0e222bc88be8e4 + languageName: node + linkType: hard + +"jest-watcher@npm:30.0.0": + version: 30.0.0 + resolution: "jest-watcher@npm:30.0.0" + dependencies: + "@jest/test-result": "npm:30.0.0" + "@jest/types": "npm:30.0.0" + "@types/node": "npm:*" + ansi-escapes: "npm:^4.3.2" + chalk: "npm:^4.1.2" + emittery: "npm:^0.13.1" + jest-util: "npm:30.0.0" + string-length: "npm:^4.0.2" + checksum: 10c0/2ee05cbaefcb399fbbaf697125bac4ddfbcb5a37f9b2d942eb11e7328a326b3bbd30def06320096ea7d3489499a8617dcefa8d8e25948bba1a8b984ce4d5b97c + languageName: node + linkType: hard + +"jest-worker@npm:30.0.0": + version: 30.0.0 + resolution: "jest-worker@npm:30.0.0" + dependencies: + "@types/node": "npm:*" + "@ungap/structured-clone": "npm:^1.3.0" + jest-util: "npm:30.0.0" + merge-stream: "npm:^2.0.0" + supports-color: "npm:^8.1.1" + checksum: 10c0/146977e7c4648c9006d2837aa88bb7d9c057fa5cb65feb0356df60c792eaf8dfac28648169b63fb89f96626ec0fa0edaab89594b3b55724b4b31e1ff61c0108c + languageName: node + linkType: hard + +"jest@npm:^30.0.0": + version: 30.0.0 + resolution: "jest@npm:30.0.0" + dependencies: + "@jest/core": "npm:30.0.0" + "@jest/types": "npm:30.0.0" + import-local: "npm:^3.2.0" + jest-cli: "npm:30.0.0" + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true + bin: + jest: ./bin/jest.js + checksum: 10c0/2a9de9ddc9c39c3b5b2cbcb1a8c8aa90904e2c9a42aba7930ce86fba43c1b084fa9e29e66deebe8341ae33cd3dd244c175642c0bc4f50a16758bbcab80324ffe + languageName: node + linkType: hard + +"js-tokens@npm:^4.0.0": + version: 4.0.0 + resolution: "js-tokens@npm:4.0.0" + checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed + languageName: node + linkType: hard + +"js-yaml@npm:^3.13.1": + version: 3.14.1 + resolution: "js-yaml@npm:3.14.1" + dependencies: + argparse: "npm:^1.0.7" + esprima: "npm:^4.0.0" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/6746baaaeac312c4db8e75fa22331d9a04cccb7792d126ed8ce6a0bbcfef0cedaddd0c5098fade53db067c09fe00aa1c957674b4765610a8b06a5a189e46433b + languageName: node + linkType: hard + +"js-yaml@npm:^4.1.0": + version: 4.1.0 + resolution: "js-yaml@npm:4.1.0" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10c0/184a24b4eaacfce40ad9074c64fd42ac83cf74d8c8cd137718d456ced75051229e5061b8633c3366b8aada17945a7a356b337828c19da92b51ae62126575018f + languageName: node + linkType: hard + +"jsbn@npm:1.1.0": + version: 1.1.0 + resolution: "jsbn@npm:1.1.0" + checksum: 10c0/4f907fb78d7b712e11dea8c165fe0921f81a657d3443dde75359ed52eb2b5d33ce6773d97985a089f09a65edd80b11cb75c767b57ba47391fee4c969f7215c96 + languageName: node + linkType: hard + +"jsesc@npm:^3.0.2": + version: 3.1.0 + resolution: "jsesc@npm:3.1.0" + bin: + jsesc: bin/jsesc + checksum: 10c0/531779df5ec94f47e462da26b4cbf05eb88a83d9f08aac2ba04206508fc598527a153d08bd462bae82fc78b3eaa1a908e1a4a79f886e9238641c4cdefaf118b1 + languageName: node + linkType: hard + +"jsesc@npm:~3.0.2": + version: 3.0.2 + resolution: "jsesc@npm:3.0.2" + bin: + jsesc: bin/jsesc + checksum: 10c0/ef22148f9e793180b14d8a145ee6f9f60f301abf443288117b4b6c53d0ecd58354898dc506ccbb553a5f7827965cd38bc5fb726575aae93c5e8915e2de8290e1 + languageName: node + linkType: hard + +"json-buffer@npm:3.0.1": + version: 3.0.1 + resolution: "json-buffer@npm:3.0.1" + checksum: 10c0/0d1c91569d9588e7eef2b49b59851f297f3ab93c7b35c7c221e288099322be6b562767d11e4821da500f3219542b9afd2e54c5dc573107c1126ed1080f8e96d7 + languageName: node + linkType: hard + +"json-parse-even-better-errors@npm:^2.3.0": + version: 2.3.1 + resolution: "json-parse-even-better-errors@npm:2.3.1" + checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3 + languageName: node + linkType: hard + +"json-schema-traverse@npm:^0.4.1": + version: 0.4.1 + resolution: "json-schema-traverse@npm:0.4.1" + checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce + languageName: node + linkType: hard + +"json-stable-stringify-without-jsonify@npm:^1.0.1": + version: 1.0.1 + resolution: "json-stable-stringify-without-jsonify@npm:1.0.1" + checksum: 10c0/cb168b61fd4de83e58d09aaa6425ef71001bae30d260e2c57e7d09a5fd82223e2f22a042dedaab8db23b7d9ae46854b08bb1f91675a8be11c5cffebef5fb66a5 + languageName: node + linkType: hard + +"json5@npm:^2.2.3": + version: 2.2.3 + resolution: "json5@npm:2.2.3" + bin: + json5: lib/cli.js + checksum: 10c0/5a04eed94810fa55c5ea138b2f7a5c12b97c3750bc63d11e511dcecbfef758003861522a070c2272764ee0f4e3e323862f386945aeb5b85b87ee43f084ba586c + languageName: node + linkType: hard + +"keyv@npm:^4.5.4": + version: 4.5.4 + resolution: "keyv@npm:4.5.4" + dependencies: + json-buffer: "npm:3.0.1" + checksum: 10c0/aa52f3c5e18e16bb6324876bb8b59dd02acf782a4b789c7b2ae21107fab95fab3890ed448d4f8dba80ce05391eeac4bfabb4f02a20221342982f806fa2cf271e + languageName: node + linkType: hard + +"kind-of@npm:^6.0.2": + version: 6.0.3 + resolution: "kind-of@npm:6.0.3" + checksum: 10c0/61cdff9623dabf3568b6445e93e31376bee1cdb93f8ba7033d86022c2a9b1791a1d9510e026e6465ebd701a6dd2f7b0808483ad8838341ac52f003f512e0b4c4 + languageName: node + linkType: hard + +"leven@npm:^3.1.0": + version: 3.1.0 + resolution: "leven@npm:3.1.0" + checksum: 10c0/cd778ba3fbab0f4d0500b7e87d1f6e1f041507c56fdcd47e8256a3012c98aaee371d4c15e0a76e0386107af2d42e2b7466160a2d80688aaa03e66e49949f42df + languageName: node + linkType: hard + +"levn@npm:^0.4.1": + version: 0.4.1 + resolution: "levn@npm:0.4.1" + dependencies: + prelude-ls: "npm:^1.2.1" + type-check: "npm:~0.4.0" + checksum: 10c0/effb03cad7c89dfa5bd4f6989364bfc79994c2042ec5966cb9b95990e2edee5cd8969ddf42616a0373ac49fac1403437deaf6e9050fbbaa3546093a59b9ac94e + languageName: node + linkType: hard + +"lines-and-columns@npm:^1.1.6": + version: 1.2.4 + resolution: "lines-and-columns@npm:1.2.4" + checksum: 10c0/3da6ee62d4cd9f03f5dc90b4df2540fb85b352081bee77fe4bbcd12c9000ead7f35e0a38b8d09a9bb99b13223446dd8689ff3c4959807620726d788701a83d2d + languageName: node + linkType: hard + +"locate-path@npm:^3.0.0": + version: 3.0.0 + resolution: "locate-path@npm:3.0.0" + dependencies: + p-locate: "npm:^3.0.0" + path-exists: "npm:^3.0.0" + checksum: 10c0/3db394b7829a7fe2f4fbdd25d3c4689b85f003c318c5da4052c7e56eed697da8f1bce5294f685c69ff76e32cba7a33629d94396976f6d05fb7f4c755c5e2ae8b + languageName: node + linkType: hard + +"locate-path@npm:^5.0.0": + version: 5.0.0 + resolution: "locate-path@npm:5.0.0" + dependencies: + p-locate: "npm:^4.1.0" + checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59 + languageName: node + linkType: hard + +"locate-path@npm:^6.0.0": + version: 6.0.0 + resolution: "locate-path@npm:6.0.0" + dependencies: + p-locate: "npm:^5.0.0" + checksum: 10c0/d3972ab70dfe58ce620e64265f90162d247e87159b6126b01314dd67be43d50e96a50b517bce2d9452a79409c7614054c277b5232377de50416564a77ac7aad3 + languageName: node + linkType: hard + +"lodash.debounce@npm:^4.0.8": + version: 4.0.8 + resolution: "lodash.debounce@npm:4.0.8" + checksum: 10c0/762998a63e095412b6099b8290903e0a8ddcb353ac6e2e0f2d7e7d03abd4275fe3c689d88960eb90b0dde4f177554d51a690f22a343932ecbc50a5d111849987 + languageName: node + linkType: hard + +"lodash.merge@npm:^4.6.2": + version: 4.6.2 + resolution: "lodash.merge@npm:4.6.2" + checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506 + languageName: node + linkType: hard + +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 10c0/ebd04fbca961e6c1d6c0af3799adcc966a1babe798f685bb84e6599266599cd95d94630b10262f5424539bc4640107e8a33aa28585374abf561d30d16f4b39fb + languageName: node + linkType: hard + +"lru-cache@npm:^11.0.0": + version: 11.1.0 + resolution: "lru-cache@npm:11.1.0" + checksum: 10c0/85c312f7113f65fae6a62de7985348649937eb34fb3d212811acbf6704dc322a421788aca253b62838f1f07049a84cc513d88f494e373d3756514ad263670a64 + languageName: node + linkType: hard + +"lru-cache@npm:^5.1.1": + version: 5.1.1 + resolution: "lru-cache@npm:5.1.1" + dependencies: + yallist: "npm:^3.0.2" + checksum: 10c0/89b2ef2ef45f543011e38737b8a8622a2f8998cddf0e5437174ef8f1f70a8b9d14a918ab3e232cb3ba343b7abddffa667f0b59075b2b80e6b4d63c3de6127482 + languageName: node + linkType: hard + +"make-dir@npm:^2.0.0, make-dir@npm:^2.1.0": + version: 2.1.0 + resolution: "make-dir@npm:2.1.0" + dependencies: + pify: "npm:^4.0.1" + semver: "npm:^5.6.0" + checksum: 10c0/ada869944d866229819735bee5548944caef560d7a8536ecbc6536edca28c72add47cc4f6fc39c54fb25d06b58da1f8994cf7d9df7dadea047064749efc085d8 + languageName: node + linkType: hard + +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" + dependencies: + semver: "npm:^7.5.3" + checksum: 10c0/69b98a6c0b8e5c4fe9acb61608a9fbcfca1756d910f51e5dbe7a9e5cfb74fca9b8a0c8a0ffdf1294a740826c1ab4871d5bf3f62f72a3049e5eac6541ddffed68 + languageName: node + linkType: hard + +"make-fetch-happen@npm:^14.0.3": + version: 14.0.3 + resolution: "make-fetch-happen@npm:14.0.3" + dependencies: + "@npmcli/agent": "npm:^3.0.0" + cacache: "npm:^19.0.1" + http-cache-semantics: "npm:^4.1.1" + minipass: "npm:^7.0.2" + minipass-fetch: "npm:^4.0.0" + minipass-flush: "npm:^1.0.5" + minipass-pipeline: "npm:^1.2.4" + negotiator: "npm:^1.0.0" + proc-log: "npm:^5.0.0" + promise-retry: "npm:^2.0.1" + ssri: "npm:^12.0.0" + checksum: 10c0/c40efb5e5296e7feb8e37155bde8eb70bc57d731b1f7d90e35a092fde403d7697c56fb49334d92d330d6f1ca29a98142036d6480a12681133a0a1453164cb2f0 + languageName: node + linkType: hard + +"makeerror@npm:1.0.12": + version: 1.0.12 + resolution: "makeerror@npm:1.0.12" + dependencies: + tmpl: "npm:1.0.5" + checksum: 10c0/b0e6e599780ce6bab49cc413eba822f7d1f0dfebd1c103eaa3785c59e43e22c59018323cf9e1708f0ef5329e94a745d163fcbb6bff8e4c6742f9be9e86f3500c + languageName: node + linkType: hard + +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 10c0/7579ff94e899e2f76ab64491d76cf606274c874d8f2af4a442c016bd85688927fcfca157ba6bf74b08e9439dc010b248ce05b96cc7c126a354c3bae7fcb48b7f + languageName: node + linkType: hard + +"merge-stream@npm:^2.0.0": + version: 2.0.0 + resolution: "merge-stream@npm:2.0.0" + checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5 + languageName: node + linkType: hard + +"merge2@npm:^1.3.0": + version: 1.4.1 + resolution: "merge2@npm:1.4.1" + checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb + languageName: node + linkType: hard + +"micromatch@npm:^4.0.8": + version: 4.0.8 + resolution: "micromatch@npm:4.0.8" + dependencies: + braces: "npm:^3.0.3" + picomatch: "npm:^2.3.1" + checksum: 10c0/166fa6eb926b9553f32ef81f5f531d27b4ce7da60e5baf8c021d043b27a388fb95e46a8038d5045877881e673f8134122b59624d5cecbd16eb50a42e7a6b5ca8 + languageName: node + linkType: hard + +"mimic-fn@npm:^2.1.0": + version: 2.1.0 + resolution: "mimic-fn@npm:2.1.0" + checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4 + languageName: node + linkType: hard + +"minimatch@npm:^10.0.3": + version: 10.0.3 + resolution: "minimatch@npm:10.0.3" + dependencies: + "@isaacs/brace-expansion": "npm:^5.0.0" + checksum: 10c0/e43e4a905c5d70ac4cec8530ceaeccb9c544b1ba8ac45238e2a78121a01c17ff0c373346472d221872563204eabe929ad02669bb575cb1f0cc30facab369f70f + languageName: node + linkType: hard + +"minimatch@npm:^3.0.4, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2": + version: 3.1.2 + resolution: "minimatch@npm:3.1.2" + dependencies: + brace-expansion: "npm:^1.1.7" + checksum: 10c0/0262810a8fc2e72cca45d6fd86bd349eee435eb95ac6aa45c9ea2180e7ee875ef44c32b55b5973ceabe95ea12682f6e3725cbb63d7a2d1da3ae1163c8b210311 + languageName: node + linkType: hard + +"minimatch@npm:^8.0.2": + version: 8.0.4 + resolution: "minimatch@npm:8.0.4" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/a0a394c356dd5b4cb7f821720841a82fa6f07c9c562c5b716909d1b6ec5e56a7e4c4b5029da26dd256b7d2b3a3f38cbf9ddd8680e887b9b5282b09c05501c1ca + languageName: node + linkType: hard + +"minimatch@npm:^9.0.4": + version: 9.0.5 + resolution: "minimatch@npm:9.0.5" + dependencies: + brace-expansion: "npm:^2.0.1" + checksum: 10c0/de96cf5e35bdf0eab3e2c853522f98ffbe9a36c37797778d2665231ec1f20a9447a7e567cb640901f89e4daaa95ae5d70c65a9e8aa2bb0019b6facbc3c0575ed + languageName: node + linkType: hard + +"minipass-collect@npm:^2.0.1": + version: 2.0.1 + resolution: "minipass-collect@npm:2.0.1" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/5167e73f62bb74cc5019594709c77e6a742051a647fe9499abf03c71dca75515b7959d67a764bdc4f8b361cf897fbf25e2d9869ee039203ed45240f48b9aa06e + languageName: node + linkType: hard + +"minipass-fetch@npm:^4.0.0": + version: 4.0.1 + resolution: "minipass-fetch@npm:4.0.1" + dependencies: + encoding: "npm:^0.1.13" + minipass: "npm:^7.0.3" + minipass-sized: "npm:^1.0.3" + minizlib: "npm:^3.0.1" + dependenciesMeta: + encoding: + optional: true + checksum: 10c0/a3147b2efe8e078c9bf9d024a0059339c5a09c5b1dded6900a219c218cc8b1b78510b62dae556b507304af226b18c3f1aeb1d48660283602d5b6586c399eed5c + languageName: node + linkType: hard + +"minipass-flush@npm:^1.0.5": + version: 1.0.5 + resolution: "minipass-flush@npm:1.0.5" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/2a51b63feb799d2bb34669205eee7c0eaf9dce01883261a5b77410c9408aa447e478efd191b4de6fc1101e796ff5892f8443ef20d9544385819093dbb32d36bd + languageName: node + linkType: hard + +"minipass-pipeline@npm:^1.2.4": + version: 1.2.4 + resolution: "minipass-pipeline@npm:1.2.4" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/cbda57cea20b140b797505dc2cac71581a70b3247b84480c1fed5ca5ba46c25ecc25f68bfc9e6dcb1a6e9017dab5c7ada5eab73ad4f0a49d84e35093e0c643f2 + languageName: node + linkType: hard + +"minipass-sized@npm:^1.0.3": + version: 1.0.3 + resolution: "minipass-sized@npm:1.0.3" + dependencies: + minipass: "npm:^3.0.0" + checksum: 10c0/298f124753efdc745cfe0f2bdfdd81ba25b9f4e753ca4a2066eb17c821f25d48acea607dfc997633ee5bf7b6dfffb4eee4f2051eb168663f0b99fad2fa4829cb + languageName: node + linkType: hard + +"minipass@npm:^3.0.0": + version: 3.3.6 + resolution: "minipass@npm:3.3.6" + dependencies: + yallist: "npm:^4.0.0" + checksum: 10c0/a114746943afa1dbbca8249e706d1d38b85ed1298b530f5808ce51f8e9e941962e2a5ad2e00eae7dd21d8a4aae6586a66d4216d1a259385e9d0358f0c1eba16c + languageName: node + linkType: hard + +"minipass@npm:^4.2.4": + version: 4.2.8 + resolution: "minipass@npm:4.2.8" + checksum: 10c0/4ea76b030d97079f4429d6e8a8affd90baf1b6a1898977c8ccce4701c5a2ba2792e033abc6709373f25c2c4d4d95440d9d5e9464b46b7b76ca44d2ce26d939ce + languageName: node + linkType: hard + +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 10c0/b0fd20bb9fb56e5fa9a8bfac539e8915ae07430a619e4b86ff71f5fc757ef3924b23b2c4230393af1eda647ed3d75739e4e0acb250a6b1eb277cf7f8fe449557 + languageName: node + linkType: hard + +"minizlib@npm:^3.0.1": + version: 3.0.2 + resolution: "minizlib@npm:3.0.2" + dependencies: + minipass: "npm:^7.1.2" + checksum: 10c0/9f3bd35e41d40d02469cb30470c55ccc21cae0db40e08d1d0b1dff01cc8cc89a6f78e9c5d2b7c844e485ec0a8abc2238111213fdc5b2038e6d1012eacf316f78 + languageName: node + linkType: hard + +"mkdirp@npm:^3.0.1": + version: 3.0.1 + resolution: "mkdirp@npm:3.0.1" + bin: + mkdirp: dist/cjs/src/bin.js + checksum: 10c0/9f2b975e9246351f5e3a40dcfac99fcd0baa31fbfab615fe059fb11e51f10e4803c63de1f384c54d656e4db31d000e4767e9ef076a22e12a641357602e31d57d + languageName: node + linkType: hard + +"ms@npm:^2.1.3": + version: 2.1.3 + resolution: "ms@npm:2.1.3" + checksum: 10c0/d924b57e7312b3b63ad21fc5b3dc0af5e78d61a1fc7cfb5457edaf26326bf62be5307cc87ffb6862ef1c2b33b0233cdb5d4f01c4c958cc0d660948b65a287a48 + languageName: node + linkType: hard + +"napi-postinstall@npm:^0.2.2": + version: 0.2.4 + resolution: "napi-postinstall@npm:0.2.4" + bin: + napi-postinstall: lib/cli.js + checksum: 10c0/e8c357d7e27848c4af7becf2796afff245a2fc8ba176e1b133410bb1c9934a66d4bc542d0c9f04c73b0ba34ee0486b30b6cd1c62ed3aa36797d394200c9a2a8b + languageName: node + linkType: hard + +"natural-compare@npm:^1.4.0": + version: 1.4.0 + resolution: "natural-compare@npm:1.4.0" + checksum: 10c0/f5f9a7974bfb28a91afafa254b197f0f22c684d4a1731763dda960d2c8e375b36c7d690e0d9dc8fba774c537af14a7e979129bca23d88d052fbeb9466955e447 + languageName: node + linkType: hard + +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 10c0/4c559dd52669ea48e1914f9d634227c561221dd54734070791f999c52ed0ff36e437b2e07d5c1f6e32909fc625fe46491c16e4a8f0572567d4dd15c3a4fda04b + languageName: node + linkType: hard + +"node-environment-flags@npm:^1.0.5": + version: 1.0.6 + resolution: "node-environment-flags@npm:1.0.6" + dependencies: + object.getownpropertydescriptors: "npm:^2.0.3" + semver: "npm:^5.7.0" + checksum: 10c0/8be86f294f8b065a1e126e9ceb7a4b38b75eb7ec6391060e6e093ab9649e5c1fa977f2a5fe799b6ada862d65ce8259d1b7eabf2057774d641306e467d58cb96b + languageName: node + linkType: hard + +"node-gyp@npm:latest": + version: 11.2.0 + resolution: "node-gyp@npm:11.2.0" + dependencies: + env-paths: "npm:^2.2.0" + exponential-backoff: "npm:^3.1.1" + graceful-fs: "npm:^4.2.6" + make-fetch-happen: "npm:^14.0.3" + nopt: "npm:^8.0.0" + proc-log: "npm:^5.0.0" + semver: "npm:^7.3.5" + tar: "npm:^7.4.3" + tinyglobby: "npm:^0.2.12" + which: "npm:^5.0.0" + bin: + node-gyp: bin/node-gyp.js + checksum: 10c0/bd8d8c76b06be761239b0c8680f655f6a6e90b48e44d43415b11c16f7e8c15be346fba0cbf71588c7cdfb52c419d928a7d3db353afc1d952d19756237d8f10b9 + languageName: node + linkType: hard + +"node-int64@npm:^0.4.0": + version: 0.4.0 + resolution: "node-int64@npm:0.4.0" + checksum: 10c0/a6a4d8369e2f2720e9c645255ffde909c0fbd41c92ea92a5607fc17055955daac99c1ff589d421eee12a0d24e99f7bfc2aabfeb1a4c14742f6c099a51863f31a + languageName: node + linkType: hard + +"node-releases@npm:^2.0.19": + version: 2.0.19 + resolution: "node-releases@npm:2.0.19" + checksum: 10c0/52a0dbd25ccf545892670d1551690fe0facb6a471e15f2cfa1b20142a5b255b3aa254af5f59d6ecb69c2bec7390bc643c43aa63b13bf5e64b6075952e716b1aa + languageName: node + linkType: hard + +"nopt@npm:^8.0.0": + version: 8.1.0 + resolution: "nopt@npm:8.1.0" + dependencies: + abbrev: "npm:^3.0.0" + bin: + nopt: bin/nopt.js + checksum: 10c0/62e9ea70c7a3eb91d162d2c706b6606c041e4e7b547cbbb48f8b3695af457dd6479904d7ace600856bf923dd8d1ed0696f06195c8c20f02ac87c1da0e1d315ef + languageName: node + linkType: hard + +"normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": + version: 3.0.0 + resolution: "normalize-path@npm:3.0.0" + checksum: 10c0/e008c8142bcc335b5e38cf0d63cfd39d6cf2d97480af9abdbe9a439221fd4d749763bab492a8ee708ce7a194bb00c9da6d0a115018672310850489137b3da046 + languageName: node + linkType: hard + +"npm-run-path@npm:^4.0.1": + version: 4.0.1 + resolution: "npm-run-path@npm:4.0.1" + dependencies: + path-key: "npm:^3.0.0" + checksum: 10c0/6f9353a95288f8455cf64cbeb707b28826a7f29690244c1e4bb61ec573256e021b6ad6651b394eb1ccfd00d6ec50147253aba2c5fe58a57ceb111fad62c519ac + languageName: node + linkType: hard + +"object-inspect@npm:^1.13.3, object-inspect@npm:^1.13.4": + version: 1.13.4 + resolution: "object-inspect@npm:1.13.4" + checksum: 10c0/d7f8711e803b96ea3191c745d6f8056ce1f2496e530e6a19a0e92d89b0fa3c76d910c31f0aa270432db6bd3b2f85500a376a83aaba849a8d518c8845b3211692 + languageName: node + linkType: hard + +"object-keys@npm:^1.1.1": + version: 1.1.1 + resolution: "object-keys@npm:1.1.1" + checksum: 10c0/b11f7ccdbc6d406d1f186cdadb9d54738e347b2692a14439ca5ac70c225fa6db46db809711b78589866d47b25fc3e8dee0b4c722ac751e11180f9380e3d8601d + languageName: node + linkType: hard + +"object.assign@npm:^4.1.7": + version: 4.1.7 + resolution: "object.assign@npm:4.1.7" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.3" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + has-symbols: "npm:^1.1.0" + object-keys: "npm:^1.1.1" + checksum: 10c0/3b2732bd860567ea2579d1567525168de925a8d852638612846bd8082b3a1602b7b89b67b09913cbb5b9bd6e95923b2ae73580baa9d99cb4e990564e8cbf5ddc + languageName: node + linkType: hard + +"object.getownpropertydescriptors@npm:^2.0.3": + version: 2.1.8 + resolution: "object.getownpropertydescriptors@npm:2.1.8" + dependencies: + array.prototype.reduce: "npm:^1.0.6" + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.2" + es-object-atoms: "npm:^1.0.0" + gopd: "npm:^1.0.1" + safe-array-concat: "npm:^1.1.2" + checksum: 10c0/553e9562fd86637c9c169df23a56f1d810d8c9b580a6d4be11552c009f32469310c9347f3d10325abf0cd9cfe4afc521a1e903fbd24148ae7ec860e1e7c75cf3 + languageName: node + linkType: hard + +"once@npm:^1.3.0": + version: 1.4.0 + resolution: "once@npm:1.4.0" + dependencies: + wrappy: "npm:1" + checksum: 10c0/5d48aca287dfefabd756621c5dfce5c91a549a93e9fdb7b8246bc4c4790aa2ec17b34a260530474635147aeb631a2dcc8b32c613df0675f96041cbb8244517d0 + languageName: node + linkType: hard + +"onetime@npm:^5.1.2": + version: 5.1.2 + resolution: "onetime@npm:5.1.2" + dependencies: + mimic-fn: "npm:^2.1.0" + checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f + languageName: node + linkType: hard + +"optionator@npm:^0.9.3": + version: 0.9.4 + resolution: "optionator@npm:0.9.4" + dependencies: + deep-is: "npm:^0.1.3" + fast-levenshtein: "npm:^2.0.6" + levn: "npm:^0.4.1" + prelude-ls: "npm:^1.2.1" + type-check: "npm:^0.4.0" + word-wrap: "npm:^1.2.5" + checksum: 10c0/4afb687a059ee65b61df74dfe87d8d6815cd6883cb8b3d5883a910df72d0f5d029821f37025e4bccf4048873dbdb09acc6d303d27b8f76b1a80dd5a7d5334675 + languageName: node + linkType: hard + +"own-keys@npm:^1.0.1": + version: 1.0.1 + resolution: "own-keys@npm:1.0.1" + dependencies: + get-intrinsic: "npm:^1.2.6" + object-keys: "npm:^1.1.1" + safe-push-apply: "npm:^1.0.0" + checksum: 10c0/6dfeb3455bff92ec3f16a982d4e3e65676345f6902d9f5ded1d8265a6318d0200ce461956d6d1c70053c7fe9f9fe65e552faac03f8140d37ef0fdd108e67013a + languageName: node + linkType: hard + +"p-limit@npm:^2.0.0, p-limit@npm:^2.2.0": + version: 2.3.0 + resolution: "p-limit@npm:2.3.0" + dependencies: + p-try: "npm:^2.0.0" + checksum: 10c0/8da01ac53efe6a627080fafc127c873da40c18d87b3f5d5492d465bb85ec7207e153948df6b9cbaeb130be70152f874229b8242ee2be84c0794082510af97f12 + languageName: node + linkType: hard + +"p-limit@npm:^3.0.2, p-limit@npm:^3.1.0": + version: 3.1.0 + resolution: "p-limit@npm:3.1.0" + dependencies: + yocto-queue: "npm:^0.1.0" + checksum: 10c0/9db675949dbdc9c3763c89e748d0ef8bdad0afbb24d49ceaf4c46c02c77d30db4e0652ed36d0a0a7a95154335fab810d95c86153105bb73b3a90448e2bb14e1a + languageName: node + linkType: hard + +"p-locate@npm:^3.0.0": + version: 3.0.0 + resolution: "p-locate@npm:3.0.0" + dependencies: + p-limit: "npm:^2.0.0" + checksum: 10c0/7b7f06f718f19e989ce6280ed4396fb3c34dabdee0df948376483032f9d5ec22fdf7077ec942143a75827bb85b11da72016497fc10dac1106c837ed593969ee8 + languageName: node + linkType: hard + +"p-locate@npm:^4.1.0": + version: 4.1.0 + resolution: "p-locate@npm:4.1.0" + dependencies: + p-limit: "npm:^2.2.0" + checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9 + languageName: node + linkType: hard + +"p-locate@npm:^5.0.0": + version: 5.0.0 + resolution: "p-locate@npm:5.0.0" + dependencies: + p-limit: "npm:^3.0.2" + checksum: 10c0/2290d627ab7903b8b70d11d384fee714b797f6040d9278932754a6860845c4d3190603a0772a663c8cb5a7b21d1b16acb3a6487ebcafa9773094edc3dfe6009a + languageName: node + linkType: hard + +"p-map@npm:^7.0.2": + version: 7.0.3 + resolution: "p-map@npm:7.0.3" + checksum: 10c0/46091610da2b38ce47bcd1d8b4835a6fa4e832848a6682cf1652bc93915770f4617afc844c10a77d1b3e56d2472bb2d5622353fa3ead01a7f42b04fc8e744a5c + languageName: node + linkType: hard + +"p-try@npm:^2.0.0": + version: 2.2.0 + resolution: "p-try@npm:2.2.0" + checksum: 10c0/c36c19907734c904b16994e6535b02c36c2224d433e01a2f1ab777237f4d86e6289fd5fd464850491e940379d4606ed850c03e0f9ab600b0ebddb511312e177f + languageName: node + linkType: hard + +"package-json-from-dist@npm:^1.0.0": + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 10c0/62ba2785eb655fec084a257af34dbe24292ab74516d6aecef97ef72d4897310bc6898f6c85b5cd22770eaa1ce60d55a0230e150fb6a966e3ecd6c511e23d164b + languageName: node + linkType: hard + +"parent-module@npm:^1.0.0": + version: 1.0.1 + resolution: "parent-module@npm:1.0.1" + dependencies: + callsites: "npm:^3.0.0" + checksum: 10c0/c63d6e80000d4babd11978e0d3fee386ca7752a02b035fd2435960ffaa7219dc42146f07069fb65e6e8bf1caef89daf9af7535a39bddf354d78bf50d8294f556 + languageName: node + linkType: hard + +"parse-json@npm:^5.2.0": + version: 5.2.0 + resolution: "parse-json@npm:5.2.0" + dependencies: + "@babel/code-frame": "npm:^7.0.0" + error-ex: "npm:^1.3.1" + json-parse-even-better-errors: "npm:^2.3.0" + lines-and-columns: "npm:^1.1.6" + checksum: 10c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585 + languageName: node + linkType: hard + +"parse-passwd@npm:^1.0.0": + version: 1.0.0 + resolution: "parse-passwd@npm:1.0.0" + checksum: 10c0/1c05c05f95f184ab9ca604841d78e4fe3294d46b8e3641d305dcc28e930da0e14e602dbda9f3811cd48df5b0e2e27dbef7357bf0d7c40e41b18c11c3a8b8d17b + languageName: node + linkType: hard + +"path-exists@npm:^3.0.0": + version: 3.0.0 + resolution: "path-exists@npm:3.0.0" + checksum: 10c0/17d6a5664bc0a11d48e2b2127d28a0e58822c6740bde30403f08013da599182289c56518bec89407e3f31d3c2b6b296a4220bc3f867f0911fee6952208b04167 + languageName: node + linkType: hard + +"path-exists@npm:^4.0.0": + version: 4.0.0 + resolution: "path-exists@npm:4.0.0" + checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b + languageName: node + linkType: hard + +"path-is-absolute@npm:^1.0.0": + version: 1.0.1 + resolution: "path-is-absolute@npm:1.0.1" + checksum: 10c0/127da03c82172a2a50099cddbf02510c1791fc2cc5f7713ddb613a56838db1e8168b121a920079d052e0936c23005562059756d653b7c544c53185efe53be078 + languageName: node + linkType: hard + +"path-key@npm:^3.0.0, path-key@npm:^3.1.0": + version: 3.1.1 + resolution: "path-key@npm:3.1.1" + checksum: 10c0/748c43efd5a569c039d7a00a03b58eecd1d75f3999f5a28303d75f521288df4823bc057d8784eb72358b2895a05f29a070bc9f1f17d28226cc4e62494cc58c4c + languageName: node + linkType: hard + +"path-parse@npm:^1.0.7": + version: 1.0.7 + resolution: "path-parse@npm:1.0.7" + checksum: 10c0/11ce261f9d294cc7a58d6a574b7f1b935842355ec66fba3c3fd79e0f036462eaf07d0aa95bb74ff432f9afef97ce1926c720988c6a7451d8a584930ae7de86e1 + languageName: node + linkType: hard + +"path-scurry@npm:^1.11.1, path-scurry@npm:^1.6.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" + dependencies: + lru-cache: "npm:^10.2.0" + minipass: "npm:^5.0.0 || ^6.0.2 || ^7.0.0" + checksum: 10c0/32a13711a2a505616ae1cc1b5076801e453e7aae6ac40ab55b388bb91b9d0547a52f5aaceff710ea400205f18691120d4431e520afbe4266b836fadede15872d + languageName: node + linkType: hard + +"path-scurry@npm:^2.0.0": + version: 2.0.0 + resolution: "path-scurry@npm:2.0.0" + dependencies: + lru-cache: "npm:^11.0.0" + minipass: "npm:^7.1.2" + checksum: 10c0/3da4adedaa8e7ef8d6dc4f35a0ff8f05a9b4d8365f2b28047752b62d4c1ad73eec21e37b1579ef2d075920157856a3b52ae8309c480a6f1a8bbe06ff8e52b33c + languageName: node + linkType: hard + +"picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: 10c0/e2e3e8170ab9d7c7421969adaa7e1b31434f789afb9b3f115f6b96d91945041ac3ceb02e9ec6fe6510ff036bcc0bf91e69a1772edc0b707e12b19c0f2d6bcf58 + languageName: node + linkType: hard + +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.3.1": + version: 2.3.1 + resolution: "picomatch@npm:2.3.1" + checksum: 10c0/26c02b8d06f03206fc2ab8d16f19960f2ff9e81a658f831ecb656d8f17d9edc799e8364b1f4a7873e89d9702dff96204be0fa26fe4181f6843f040f819dac4be + languageName: node + linkType: hard + +"picomatch@npm:^4.0.2": + version: 4.0.2 + resolution: "picomatch@npm:4.0.2" + checksum: 10c0/7c51f3ad2bb42c776f49ebf964c644958158be30d0a510efd5a395e8d49cb5acfed5b82c0c5b365523ce18e6ab85013c9ebe574f60305892ec3fa8eee8304ccc + languageName: node + linkType: hard + +"pify@npm:^4.0.1": + version: 4.0.1 + resolution: "pify@npm:4.0.1" + checksum: 10c0/6f9d404b0d47a965437403c9b90eca8bb2536407f03de165940e62e72c8c8b75adda5516c6b9b23675a5877cc0bcac6bdfb0ef0e39414cd2476d5495da40e7cf + languageName: node + linkType: hard + +"pirates@npm:^4.0.6, pirates@npm:^4.0.7": + version: 4.0.7 + resolution: "pirates@npm:4.0.7" + checksum: 10c0/a51f108dd811beb779d58a76864bbd49e239fa40c7984cd11596c75a121a8cc789f1c8971d8bb15f0dbf9d48b76c05bb62fcbce840f89b688c0fa64b37e8478a + languageName: node + linkType: hard + +"pkg-dir@npm:^3.0.0": + version: 3.0.0 + resolution: "pkg-dir@npm:3.0.0" + dependencies: + find-up: "npm:^3.0.0" + checksum: 10c0/902a3d0c1f8ac43b1795fa1ba6ffeb37dfd53c91469e969790f6ed5e29ff2bdc50b63ba6115dc056d2efb4a040aa2446d512b3804bdafdf302f734fb3ec21847 + languageName: node + linkType: hard + +"pkg-dir@npm:^4.2.0": + version: 4.2.0 + resolution: "pkg-dir@npm:4.2.0" + dependencies: + find-up: "npm:^4.0.0" + checksum: 10c0/c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728 + languageName: node + linkType: hard + +"pkg-up@npm:^3.1.0": + version: 3.1.0 + resolution: "pkg-up@npm:3.1.0" + dependencies: + find-up: "npm:^3.0.0" + checksum: 10c0/ecb60e1f8e1f611c0bdf1a0b6a474d6dfb51185567dc6f29cdef37c8d480ecba5362e006606bb290519bbb6f49526c403fabea93c3090c20368d98bb90c999ab + languageName: node + linkType: hard + +"possible-typed-array-names@npm:^1.0.0": + version: 1.1.0 + resolution: "possible-typed-array-names@npm:1.1.0" + checksum: 10c0/c810983414142071da1d644662ce4caebce890203eb2bc7bf119f37f3fe5796226e117e6cca146b521921fa6531072674174a3325066ac66fce089a53e1e5196 + languageName: node + linkType: hard + +"prelude-ls@npm:^1.2.1": + version: 1.2.1 + resolution: "prelude-ls@npm:1.2.1" + checksum: 10c0/b00d617431e7886c520a6f498a2e14c75ec58f6d93ba48c3b639cf241b54232d90daa05d83a9e9b9fef6baa63cb7e1e4602c2372fea5bc169668401eb127d0cd + languageName: node + linkType: hard + +"prettier@npm:^3.5.3": + version: 3.5.3 + resolution: "prettier@npm:3.5.3" + bin: + prettier: bin/prettier.cjs + checksum: 10c0/3880cb90b9dc0635819ab52ff571518c35bd7f15a6e80a2054c05dbc8a3aa6e74f135519e91197de63705bcb38388ded7e7230e2178432a1468005406238b877 + languageName: node + linkType: hard + +"pretty-format@npm:30.0.0": + version: 30.0.0 + resolution: "pretty-format@npm:30.0.0" + dependencies: + "@jest/schemas": "npm:30.0.0" + ansi-styles: "npm:^5.2.0" + react-is: "npm:^18.3.1" + checksum: 10c0/a57269aff3f4c4da44880f93d42b4fdf5405ef8d3b3c535969d4a6ed1914e70ac35fccb648dc980099cd3bef9e9d73a521e59ca073e6c9e704cfb8c6f49e51bb + languageName: node + linkType: hard + +"proc-log@npm:^5.0.0": + version: 5.0.0 + resolution: "proc-log@npm:5.0.0" + checksum: 10c0/bbe5edb944b0ad63387a1d5b1911ae93e05ce8d0f60de1035b218cdcceedfe39dbd2c697853355b70f1a090f8f58fe90da487c85216bf9671f9499d1a897e9e3 + languageName: node + linkType: hard + +"promise-retry@npm:^2.0.1": + version: 2.0.1 + resolution: "promise-retry@npm:2.0.1" + dependencies: + err-code: "npm:^2.0.2" + retry: "npm:^0.12.0" + checksum: 10c0/9c7045a1a2928094b5b9b15336dcd2a7b1c052f674550df63cc3f36cd44028e5080448175b6f6ca32b642de81150f5e7b1a98b728f15cb069f2dd60ac2616b96 + languageName: node + linkType: hard + +"punycode@npm:^2.1.0": + version: 2.3.1 + resolution: "punycode@npm:2.3.1" + checksum: 10c0/14f76a8206bc3464f794fb2e3d3cc665ae416c01893ad7a02b23766eb07159144ee612ad67af5e84fa4479ccfe67678c4feb126b0485651b302babf66f04f9e9 + languageName: node + linkType: hard + +"pure-rand@npm:^7.0.0": + version: 7.0.1 + resolution: "pure-rand@npm:7.0.1" + checksum: 10c0/9cade41030f5ec95f5d55a11a71404cd6f46b69becaad892097cd7f58e2c6248cd0a933349ca7d21336ab629f1da42ffe899699b671bc4651600eaf6e57f837e + languageName: node + linkType: hard + +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: 10c0/900a93d3cdae3acd7d16f642c29a642aea32c2026446151f0778c62ac089d4b8e6c986811076e1ae180a694cedf077d453a11b58ff0a865629a4f82ab558e102 + languageName: node + linkType: hard + +"react-is@npm:^18.3.1": + version: 18.3.1 + resolution: "react-is@npm:18.3.1" + checksum: 10c0/f2f1e60010c683479e74c63f96b09fb41603527cd131a9959e2aee1e5a8b0caf270b365e5ca77d4a6b18aae659b60a86150bb3979073528877029b35aecd2072 + languageName: node + linkType: hard + +"readdirp@npm:~3.6.0": + version: 3.6.0 + resolution: "readdirp@npm:3.6.0" + dependencies: + picomatch: "npm:^2.2.1" + checksum: 10c0/6fa848cf63d1b82ab4e985f4cf72bd55b7dcfd8e0a376905804e48c3634b7e749170940ba77b32804d5fe93b3cc521aa95a8d7e7d725f830da6d93f3669ce66b + languageName: node + linkType: hard + +"reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9": + version: 1.0.10 + resolution: "reflect.getprototypeof@npm:1.0.10" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.9" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + get-intrinsic: "npm:^1.2.7" + get-proto: "npm:^1.0.1" + which-builtin-type: "npm:^1.2.1" + checksum: 10c0/7facec28c8008876f8ab98e80b7b9cb4b1e9224353fd4756dda5f2a4ab0d30fa0a5074777c6df24e1e0af463a2697513b0a11e548d99cf52f21f7bc6ba48d3ac + languageName: node + linkType: hard + +"regenerate-unicode-properties@npm:^10.2.0": + version: 10.2.0 + resolution: "regenerate-unicode-properties@npm:10.2.0" + dependencies: + regenerate: "npm:^1.4.2" + checksum: 10c0/5510785eeaf56bbfdf4e663d6753f125c08d2a372d4107bc1b756b7bf142e2ed80c2733a8b54e68fb309ba37690e66a0362699b0e21d5c1f0255dea1b00e6460 + languageName: node + linkType: hard + +"regenerate@npm:^1.4.2": + version: 1.4.2 + resolution: "regenerate@npm:1.4.2" + checksum: 10c0/f73c9eba5d398c818edc71d1c6979eaa05af7a808682749dd079f8df2a6d91a9b913db216c2c9b03e0a8ba2bba8701244a93f45211afbff691c32c7b275db1b8 + languageName: node + linkType: hard + +"regenerator-runtime@npm:^0.14.0": + version: 0.14.1 + resolution: "regenerator-runtime@npm:0.14.1" + checksum: 10c0/1b16eb2c4bceb1665c89de70dcb64126a22bc8eb958feef3cd68fe11ac6d2a4899b5cd1b80b0774c7c03591dc57d16631a7f69d2daa2ec98100e2f29f7ec4cc4 + languageName: node + linkType: hard + +"regexp.prototype.flags@npm:^1.5.4": + version: 1.5.4 + resolution: "regexp.prototype.flags@npm:1.5.4" + dependencies: + call-bind: "npm:^1.0.8" + define-properties: "npm:^1.2.1" + es-errors: "npm:^1.3.0" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + set-function-name: "npm:^2.0.2" + checksum: 10c0/83b88e6115b4af1c537f8dabf5c3744032cb875d63bc05c288b1b8c0ef37cbe55353f95d8ca817e8843806e3e150b118bc624e4279b24b4776b4198232735a77 + languageName: node + linkType: hard + +"regexpu-core@npm:^6.2.0": + version: 6.2.0 + resolution: "regexpu-core@npm:6.2.0" + dependencies: + regenerate: "npm:^1.4.2" + regenerate-unicode-properties: "npm:^10.2.0" + regjsgen: "npm:^0.8.0" + regjsparser: "npm:^0.12.0" + unicode-match-property-ecmascript: "npm:^2.0.0" + unicode-match-property-value-ecmascript: "npm:^2.1.0" + checksum: 10c0/bbcb83a854bf96ce4005ee4e4618b71c889cda72674ce6092432f0039b47890c2d0dfeb9057d08d440999d9ea03879ebbb7f26ca005ccf94390e55c348859b98 + languageName: node + linkType: hard + +"regjsgen@npm:^0.8.0": + version: 0.8.0 + resolution: "regjsgen@npm:0.8.0" + checksum: 10c0/44f526c4fdbf0b29286101a282189e4dbb303f4013cf3fea058668d96d113b9180d3d03d1e13f6d4cbde38b7728bf951aecd9dc199938c080093a9a6f0d7a6bd + languageName: node + linkType: hard + +"regjsparser@npm:^0.12.0": + version: 0.12.0 + resolution: "regjsparser@npm:0.12.0" + dependencies: + jsesc: "npm:~3.0.2" + bin: + regjsparser: bin/parser + checksum: 10c0/99d3e4e10c8c7732eb7aa843b8da2fd8b647fe144d3711b480e4647dc3bff4b1e96691ccf17f3ace24aa866a50b064236177cb25e6e4fbbb18285d99edaed83b + languageName: node + linkType: hard + +"require-directory@npm:^2.1.1": + version: 2.1.1 + resolution: "require-directory@npm:2.1.1" + checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99 + languageName: node + linkType: hard + +"reselect@npm:^4.1.7": + version: 4.1.8 + resolution: "reselect@npm:4.1.8" + checksum: 10c0/06a305a504affcbb67dd0561ddc8306b35796199c7e15b38934c80606938a021eadcf68cfd58e7bb5e17786601c37602a3362a4665c7bf0a96c1041ceee9d0b7 + languageName: node + linkType: hard + +"resolve-cwd@npm:^3.0.0": + version: 3.0.0 + resolution: "resolve-cwd@npm:3.0.0" + dependencies: + resolve-from: "npm:^5.0.0" + checksum: 10c0/e608a3ebd15356264653c32d7ecbc8fd702f94c6703ea4ac2fb81d9c359180cba0ae2e6b71faa446631ed6145454d5a56b227efc33a2d40638ac13f8beb20ee4 + languageName: node + linkType: hard + +"resolve-from@npm:^4.0.0": + version: 4.0.0 + resolution: "resolve-from@npm:4.0.0" + checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190 + languageName: node + linkType: hard + +"resolve-from@npm:^5.0.0": + version: 5.0.0 + resolution: "resolve-from@npm:5.0.0" + checksum: 10c0/b21cb7f1fb746de8107b9febab60095187781137fd803e6a59a76d421444b1531b641bba5857f5dc011974d8a5c635d61cec49e6bd3b7fc20e01f0fafc4efbf2 + languageName: node + linkType: hard + +"resolve@npm:^1.14.2, resolve@npm:^1.22.8": + version: 1.22.10 + resolution: "resolve@npm:1.22.10" + dependencies: + is-core-module: "npm:^2.16.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/8967e1f4e2cc40f79b7e080b4582b9a8c5ee36ffb46041dccb20e6461161adf69f843b43067b4a375de926a2cd669157e29a29578191def399dd5ef89a1b5203 + languageName: node + linkType: hard + +"resolve@patch:resolve@npm%3A^1.14.2#optional!builtin, resolve@patch:resolve@npm%3A^1.22.8#optional!builtin": + version: 1.22.10 + resolution: "resolve@patch:resolve@npm%3A1.22.10#optional!builtin::version=1.22.10&hash=c3c19d" + dependencies: + is-core-module: "npm:^2.16.0" + path-parse: "npm:^1.0.7" + supports-preserve-symlinks-flag: "npm:^1.0.0" + bin: + resolve: bin/resolve + checksum: 10c0/52a4e505bbfc7925ac8f4cd91fd8c4e096b6a89728b9f46861d3b405ac9a1ccf4dcbf8befb4e89a2e11370dacd0160918163885cbc669369590f2f31f4c58939 + languageName: node + linkType: hard + +"retry@npm:^0.12.0": + version: 0.12.0 + resolution: "retry@npm:0.12.0" + checksum: 10c0/59933e8501727ba13ad73ef4a04d5280b3717fd650408460c987392efe9d7be2040778ed8ebe933c5cbd63da3dcc37919c141ef8af0a54a6e4fca5a2af177bfe + languageName: node + linkType: hard + +"reusify@npm:^1.0.4": + version: 1.1.0 + resolution: "reusify@npm:1.1.0" + checksum: 10c0/4eff0d4a5f9383566c7d7ec437b671cc51b25963bd61bf127c3f3d3f68e44a026d99b8d2f1ad344afff8d278a8fe70a8ea092650a716d22287e8bef7126bb2fa + languageName: node + linkType: hard + +"rimraf@npm:^6.0.1": + version: 6.0.1 + resolution: "rimraf@npm:6.0.1" + dependencies: + glob: "npm:^11.0.0" + package-json-from-dist: "npm:^1.0.0" + bin: + rimraf: dist/esm/bin.mjs + checksum: 10c0/b30b6b072771f0d1e73b4ca5f37bb2944ee09375be9db5f558fcd3310000d29dfcfa93cf7734d75295ad5a7486dc8e40f63089ced1722a664539ffc0c3ece8c6 + languageName: node + linkType: hard + +"run-parallel@npm:^1.1.9": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: "npm:^1.2.2" + checksum: 10c0/200b5ab25b5b8b7113f9901bfe3afc347e19bb7475b267d55ad0eb86a62a46d77510cb0f232507c9e5d497ebda569a08a9867d0d14f57a82ad5564d991588b39 + languageName: node + linkType: hard + +"safe-array-concat@npm:^1.1.2, safe-array-concat@npm:^1.1.3": + version: 1.1.3 + resolution: "safe-array-concat@npm:1.1.3" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + get-intrinsic: "npm:^1.2.6" + has-symbols: "npm:^1.1.0" + isarray: "npm:^2.0.5" + checksum: 10c0/43c86ffdddc461fb17ff8a17c5324f392f4868f3c7dd2c6a5d9f5971713bc5fd755667212c80eab9567595f9a7509cc2f83e590ddaebd1bd19b780f9c79f9a8d + languageName: node + linkType: hard + +"safe-push-apply@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-push-apply@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + isarray: "npm:^2.0.5" + checksum: 10c0/831f1c9aae7436429e7862c7e46f847dfe490afac20d0ee61bae06108dbf5c745a0de3568ada30ccdd3eeb0864ca8331b2eef703abd69bfea0745b21fd320750 + languageName: node + linkType: hard + +"safe-regex-test@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex-test@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + is-regex: "npm:^1.2.1" + checksum: 10c0/f2c25281bbe5d39cddbbce7f86fca5ea9b3ce3354ea6cd7c81c31b006a5a9fff4286acc5450a3b9122c56c33eba69c56b9131ad751457b2b4a585825e6a10665 + languageName: node + linkType: hard + +"safer-buffer@npm:>= 2.1.2 < 3.0.0": + version: 2.1.2 + resolution: "safer-buffer@npm:2.1.2" + checksum: 10c0/7e3c8b2e88a1841c9671094bbaeebd94448111dd90a81a1f606f3f67708a6ec57763b3b47f06da09fc6054193e0e6709e77325415dc8422b04497a8070fa02d4 + languageName: node + linkType: hard + +"semver@npm:^5.6.0, semver@npm:^5.7.0": + version: 5.7.2 + resolution: "semver@npm:5.7.2" + bin: + semver: bin/semver + checksum: 10c0/e4cf10f86f168db772ae95d86ba65b3fd6c5967c94d97c708ccb463b778c2ee53b914cd7167620950fc07faf5a564e6efe903836639e512a1aa15fbc9667fa25 + languageName: node + linkType: hard + +"semver@npm:^6.3.1": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: 10c0/e3d79b609071caa78bcb6ce2ad81c7966a46a7431d9d58b8800cfa9cb6a63699b3899a0e4bcce36167a284578212d9ae6942b6929ba4aa5015c079a67751d42d + languageName: node + linkType: hard + +"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.7.2": + version: 7.7.2 + resolution: "semver@npm:7.7.2" + bin: + semver: bin/semver.js + checksum: 10c0/aca305edfbf2383c22571cb7714f48cadc7ac95371b4b52362fb8eeffdfbc0de0669368b82b2b15978f8848f01d7114da65697e56cd8c37b0dab8c58e543f9ea + languageName: node + linkType: hard + +"set-function-length@npm:^1.2.2": + version: 1.2.2 + resolution: "set-function-length@npm:1.2.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + function-bind: "npm:^1.1.2" + get-intrinsic: "npm:^1.2.4" + gopd: "npm:^1.0.1" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/82850e62f412a258b71e123d4ed3873fa9377c216809551192bb6769329340176f109c2eeae8c22a8d386c76739855f78e8716515c818bcaef384b51110f0f3c + languageName: node + linkType: hard + +"set-function-name@npm:^2.0.2": + version: 2.0.2 + resolution: "set-function-name@npm:2.0.2" + dependencies: + define-data-property: "npm:^1.1.4" + es-errors: "npm:^1.3.0" + functions-have-names: "npm:^1.2.3" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/fce59f90696c450a8523e754abb305e2b8c73586452619c2bad5f7bf38c7b6b4651895c9db895679c5bef9554339cf3ef1c329b66ece3eda7255785fbe299316 + languageName: node + linkType: hard + +"set-proto@npm:^1.0.0": + version: 1.0.0 + resolution: "set-proto@npm:1.0.0" + dependencies: + dunder-proto: "npm:^1.0.1" + es-errors: "npm:^1.3.0" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/ca5c3ccbba479d07c30460e367e66337cec825560b11e8ba9c5ebe13a2a0d6021ae34eddf94ff3dfe17a3104dc1f191519cb6c48378b503e5c3f36393938776a + languageName: node + linkType: hard + +"shallow-clone@npm:^3.0.0": + version: 3.0.1 + resolution: "shallow-clone@npm:3.0.1" + dependencies: + kind-of: "npm:^6.0.2" + checksum: 10c0/7bab09613a1b9f480c85a9823aebec533015579fa055ba6634aa56ba1f984380670eaf33b8217502931872aa1401c9fcadaa15f9f604d631536df475b05bcf1e + languageName: node + linkType: hard + +"shebang-command@npm:^2.0.0": + version: 2.0.0 + resolution: "shebang-command@npm:2.0.0" + dependencies: + shebang-regex: "npm:^3.0.0" + checksum: 10c0/a41692e7d89a553ef21d324a5cceb5f686d1f3c040759c50aab69688634688c5c327f26f3ecf7001ebfd78c01f3c7c0a11a7c8bfd0a8bc9f6240d4f40b224e4e + languageName: node + linkType: hard + +"shebang-regex@npm:^3.0.0": + version: 3.0.0 + resolution: "shebang-regex@npm:3.0.0" + checksum: 10c0/1dbed0726dd0e1152a92696c76c7f06084eb32a90f0528d11acd764043aacf76994b2fb30aa1291a21bd019d6699164d048286309a278855ee7bec06cf6fb690 + languageName: node + linkType: hard + +"shelljs@npm:^0.10.0": + version: 0.10.0 + resolution: "shelljs@npm:0.10.0" + dependencies: + execa: "npm:^5.1.1" + fast-glob: "npm:^3.3.2" + checksum: 10c0/3a18d524e2302fedd6e2b143bc17fd1e4583f41d19cb8ab747f8b00cfe39370044835f72adcab63a25ce004cae1605a8825afb3fa4dd5f78217b17b9ef966468 + languageName: node + linkType: hard + +"side-channel-list@npm:^1.0.0": + version: 1.0.0 + resolution: "side-channel-list@npm:1.0.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + checksum: 10c0/644f4ac893456c9490ff388bf78aea9d333d5e5bfc64cfb84be8f04bf31ddc111a8d4b83b85d7e7e8a7b845bc185a9ad02c052d20e086983cf59f0be517d9b3d + languageName: node + linkType: hard + +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + checksum: 10c0/010584e6444dd8a20b85bc926d934424bd809e1a3af941cace229f7fdcb751aada0fb7164f60c2e22292b7fa3c0ff0bce237081fd4cdbc80de1dc68e95430672 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" + dependencies: + call-bound: "npm:^1.0.2" + es-errors: "npm:^1.3.0" + get-intrinsic: "npm:^1.2.5" + object-inspect: "npm:^1.13.3" + side-channel-map: "npm:^1.0.1" + checksum: 10c0/71362709ac233e08807ccd980101c3e2d7efe849edc51455030327b059f6c4d292c237f94dc0685031dd11c07dd17a68afde235d6cf2102d949567f98ab58185 + languageName: node + linkType: hard + +"side-channel@npm:^1.1.0": + version: 1.1.0 + resolution: "side-channel@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + object-inspect: "npm:^1.13.3" + side-channel-list: "npm:^1.0.0" + side-channel-map: "npm:^1.0.1" + side-channel-weakmap: "npm:^1.0.2" + checksum: 10c0/cb20dad41eb032e6c24c0982e1e5a24963a28aa6122b4f05b3f3d6bf8ae7fd5474ef382c8f54a6a3ab86e0cac4d41a23bd64ede3970e5bfb50326ba02a7996e6 + languageName: node + linkType: hard + +"signal-exit@npm:^3.0.3": + version: 3.0.7 + resolution: "signal-exit@npm:3.0.7" + checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912 + languageName: node + linkType: hard + +"signal-exit@npm:^4.0.1": + version: 4.1.0 + resolution: "signal-exit@npm:4.1.0" + checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83 + languageName: node + linkType: hard + +"slash@npm:^2.0.0": + version: 2.0.0 + resolution: "slash@npm:2.0.0" + checksum: 10c0/f83dbd3cb62c41bb8fcbbc6bf5473f3234b97fa1d008f571710a9d3757a28c7169e1811cad1554ccb1cc531460b3d221c9a7b37f549398d9a30707f0a5af9193 + languageName: node + linkType: hard + +"slash@npm:^3.0.0": + version: 3.0.0 + resolution: "slash@npm:3.0.0" + checksum: 10c0/e18488c6a42bdfd4ac5be85b2ced3ccd0224773baae6ad42cfbb9ec74fc07f9fa8396bd35ee638084ead7a2a0818eb5e7151111544d4731ce843019dab4be47b + languageName: node + linkType: hard + +"smart-buffer@npm:^4.2.0": + version: 4.2.0 + resolution: "smart-buffer@npm:4.2.0" + checksum: 10c0/a16775323e1404dd43fabafe7460be13a471e021637bc7889468eb45ce6a6b207261f454e4e530a19500cc962c4cc5348583520843b363f4193cee5c00e1e539 + languageName: node + linkType: hard + +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.5 + resolution: "socks-proxy-agent@npm:8.0.5" + dependencies: + agent-base: "npm:^7.1.2" + debug: "npm:^4.3.4" + socks: "npm:^2.8.3" + checksum: 10c0/5d2c6cecba6821389aabf18728325730504bf9bb1d9e342e7987a5d13badd7a98838cc9a55b8ed3cb866ad37cc23e1086f09c4d72d93105ce9dfe76330e9d2a6 + languageName: node + linkType: hard + +"socks@npm:^2.8.3": + version: 2.8.5 + resolution: "socks@npm:2.8.5" + dependencies: + ip-address: "npm:^9.0.5" + smart-buffer: "npm:^4.2.0" + checksum: 10c0/e427d0eb0451cfd04e20b9156ea8c0e9b5e38a8d70f21e55c30fbe4214eda37cfc25d782c63f9adc5fbdad6d062a0f127ef2cefc9a44b6fee2b9ea5d1ed10827 + languageName: node + linkType: hard + +"source-map-support@npm:0.5.13": + version: 0.5.13 + resolution: "source-map-support@npm:0.5.13" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/137539f8c453fa0f496ea42049ab5da4569f96781f6ac8e5bfda26937be9494f4e8891f523c5f98f0e85f71b35d74127a00c46f83f6a4f54672b58d53202565e + languageName: node + linkType: hard + +"source-map-support@npm:^0.5.16": + version: 0.5.21 + resolution: "source-map-support@npm:0.5.21" + dependencies: + buffer-from: "npm:^1.0.0" + source-map: "npm:^0.6.0" + checksum: 10c0/9ee09942f415e0f721d6daad3917ec1516af746a8120bba7bb56278707a37f1eb8642bde456e98454b8a885023af81a16e646869975f06afc1a711fb90484e7d + languageName: node + linkType: hard + +"source-map@npm:^0.6.0": + version: 0.6.1 + resolution: "source-map@npm:0.6.1" + checksum: 10c0/ab55398007c5e5532957cb0beee2368529618ac0ab372d789806f5718123cc4367d57de3904b4e6a4170eb5a0b0f41373066d02ca0735a0c4d75c7d328d3e011 + languageName: node + linkType: hard + +"sprintf-js@npm:^1.1.3": + version: 1.1.3 + resolution: "sprintf-js@npm:1.1.3" + checksum: 10c0/09270dc4f30d479e666aee820eacd9e464215cdff53848b443964202bf4051490538e5dd1b42e1a65cf7296916ca17640aebf63dae9812749c7542ee5f288dec + languageName: node + linkType: hard + +"sprintf-js@npm:~1.0.2": + version: 1.0.3 + resolution: "sprintf-js@npm:1.0.3" + checksum: 10c0/ecadcfe4c771890140da5023d43e190b7566d9cf8b2d238600f31bec0fc653f328da4450eb04bd59a431771a8e9cc0e118f0aa3974b683a4981b4e07abc2a5bb + languageName: node + linkType: hard + +"ssri@npm:^12.0.0": + version: 12.0.0 + resolution: "ssri@npm:12.0.0" + dependencies: + minipass: "npm:^7.0.3" + checksum: 10c0/caddd5f544b2006e88fa6b0124d8d7b28208b83c72d7672d5ade44d794525d23b540f3396108c4eb9280dcb7c01f0bef50682f5b4b2c34291f7c5e211fd1417d + languageName: node + linkType: hard + +"stack-utils@npm:^2.0.6": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: "npm:^2.0.0" + checksum: 10c0/651c9f87667e077584bbe848acaecc6049bc71979f1e9a46c7b920cad4431c388df0f51b8ad7cfd6eed3db97a2878d0fc8b3122979439ea8bac29c61c95eec8a + languageName: node + linkType: hard + +"stop-iteration-iterator@npm:^1.1.0": + version: 1.1.0 + resolution: "stop-iteration-iterator@npm:1.1.0" + dependencies: + es-errors: "npm:^1.3.0" + internal-slot: "npm:^1.1.0" + checksum: 10c0/de4e45706bb4c0354a4b1122a2b8cc45a639e86206807ce0baf390ee9218d3ef181923fa4d2b67443367c491aa255c5fbaa64bb74648e3c5b48299928af86c09 + languageName: node + linkType: hard + +"string-length@npm:^4.0.2": + version: 4.0.2 + resolution: "string-length@npm:4.0.2" + dependencies: + char-regex: "npm:^1.0.2" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/1cd77409c3d7db7bc59406f6bcc9ef0783671dcbabb23597a1177c166906ef2ee7c8290f78cae73a8aec858768f189d2cb417797df5e15ec4eb5e16b3346340c + languageName: node + linkType: hard + +"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3": + version: 4.2.3 + resolution: "string-width@npm:4.2.3" + dependencies: + emoji-regex: "npm:^8.0.0" + is-fullwidth-code-point: "npm:^3.0.0" + strip-ansi: "npm:^6.0.1" + checksum: 10c0/1e525e92e5eae0afd7454086eed9c818ee84374bb80328fc41217ae72ff5f065ef1c9d7f72da41de40c75fa8bb3dee63d92373fd492c84260a552c636392a47b + languageName: node + linkType: hard + +"string-width@npm:^5.0.1, string-width@npm:^5.1.2": + version: 5.1.2 + resolution: "string-width@npm:5.1.2" + dependencies: + eastasianwidth: "npm:^0.2.0" + emoji-regex: "npm:^9.2.2" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/ab9c4264443d35b8b923cbdd513a089a60de339216d3b0ed3be3ba57d6880e1a192b70ae17225f764d7adbf5994e9bb8df253a944736c15a0240eff553c678ca + languageName: node + linkType: hard + +"string-width@npm:^7.0.0, string-width@npm:^7.2.0": + version: 7.2.0 + resolution: "string-width@npm:7.2.0" + dependencies: + emoji-regex: "npm:^10.3.0" + get-east-asian-width: "npm:^1.0.0" + strip-ansi: "npm:^7.1.0" + checksum: 10c0/eb0430dd43f3199c7a46dcbf7a0b34539c76fe3aa62763d0b0655acdcbdf360b3f66f3d58ca25ba0205f42ea3491fa00f09426d3b7d3040e506878fc7664c9b9 + languageName: node + linkType: hard + +"string.prototype.trim@npm:^1.2.10": + version: 1.2.10 + resolution: "string.prototype.trim@npm:1.2.10" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + define-data-property: "npm:^1.1.4" + define-properties: "npm:^1.2.1" + es-abstract: "npm:^1.23.5" + es-object-atoms: "npm:^1.0.0" + has-property-descriptors: "npm:^1.0.2" + checksum: 10c0/8a8854241c4b54a948e992eb7dd6b8b3a97185112deb0037a134f5ba57541d8248dd610c966311887b6c2fd1181a3877bffb14d873ce937a344535dabcc648f8 + languageName: node + linkType: hard + +"string.prototype.trimend@npm:^1.0.9": + version: 1.0.9 + resolution: "string.prototype.trimend@npm:1.0.9" + dependencies: + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.2" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/59e1a70bf9414cb4c536a6e31bef5553c8ceb0cf44d8b4d0ed65c9653358d1c64dd0ec203b100df83d0413bbcde38b8c5d49e14bc4b86737d74adc593a0d35b6 + languageName: node + linkType: hard + +"string.prototype.trimstart@npm:^1.0.8": + version: 1.0.8 + resolution: "string.prototype.trimstart@npm:1.0.8" + dependencies: + call-bind: "npm:^1.0.7" + define-properties: "npm:^1.2.1" + es-object-atoms: "npm:^1.0.0" + checksum: 10c0/d53af1899959e53c83b64a5fd120be93e067da740e7e75acb433849aa640782fb6c7d4cd5b84c954c84413745a3764df135a8afeb22908b86a835290788d8366 + languageName: node + linkType: hard + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1, strip-ansi@npm:^6.0.0, strip-ansi@npm:^6.0.1": + version: 6.0.1 + resolution: "strip-ansi@npm:6.0.1" + dependencies: + ansi-regex: "npm:^5.0.1" + checksum: 10c0/1ae5f212a126fe5b167707f716942490e3933085a5ff6c008ab97ab2f272c8025d3aa218b7bd6ab25729ca20cc81cddb252102f8751e13482a5199e873680952 + languageName: node + linkType: hard + +"strip-ansi@npm:^7.0.1, strip-ansi@npm:^7.1.0": + version: 7.1.0 + resolution: "strip-ansi@npm:7.1.0" + dependencies: + ansi-regex: "npm:^6.0.1" + checksum: 10c0/a198c3762e8832505328cbf9e8c8381de14a4fa50a4f9b2160138158ea88c0f5549fb50cb13c651c3088f47e63a108b34622ec18c0499b6c8c3a5ddf6b305ac4 + languageName: node + linkType: hard + +"strip-bom@npm:^4.0.0": + version: 4.0.0 + resolution: "strip-bom@npm:4.0.0" + checksum: 10c0/26abad1172d6bc48985ab9a5f96c21e440f6e7e476686de49be813b5a59b3566dccb5c525b831ec54fe348283b47f3ffb8e080bc3f965fde12e84df23f6bb7ef + languageName: node + linkType: hard + +"strip-final-newline@npm:^2.0.0": + version: 2.0.0 + resolution: "strip-final-newline@npm:2.0.0" + checksum: 10c0/bddf8ccd47acd85c0e09ad7375409d81653f645fda13227a9d459642277c253d877b68f2e5e4d819fe75733b0e626bac7e954c04f3236f6d196f79c94fa4a96f + languageName: node + linkType: hard + +"strip-json-comments@npm:^3.1.1": + version: 3.1.1 + resolution: "strip-json-comments@npm:3.1.1" + checksum: 10c0/9681a6257b925a7fa0f285851c0e613cc934a50661fa7bb41ca9cbbff89686bb4a0ee366e6ecedc4daafd01e83eee0720111ab294366fe7c185e935475ebcecd + languageName: node + linkType: hard + +"supports-color@npm:^7.1.0": + version: 7.2.0 + resolution: "supports-color@npm:7.2.0" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/afb4c88521b8b136b5f5f95160c98dee7243dc79d5432db7efc27efb219385bbc7d9427398e43dd6cc730a0f87d5085ce1652af7efbe391327bc0a7d0f7fc124 + languageName: node + linkType: hard + +"supports-color@npm:^8.1.1": + version: 8.1.1 + resolution: "supports-color@npm:8.1.1" + dependencies: + has-flag: "npm:^4.0.0" + checksum: 10c0/ea1d3c275dd604c974670f63943ed9bd83623edc102430c05adb8efc56ba492746b6e95386e7831b872ec3807fd89dd8eb43f735195f37b5ec343e4234cc7e89 + languageName: node + linkType: hard + +"supports-preserve-symlinks-flag@npm:^1.0.0": + version: 1.0.0 + resolution: "supports-preserve-symlinks-flag@npm:1.0.0" + checksum: 10c0/6c4032340701a9950865f7ae8ef38578d8d7053f5e10518076e6554a9381fa91bd9c6850193695c141f32b21f979c985db07265a758867bac95de05f7d8aeb39 + languageName: node + linkType: hard + +"synckit@npm:^0.11.8": + version: 0.11.8 + resolution: "synckit@npm:0.11.8" + dependencies: + "@pkgr/core": "npm:^0.2.4" + checksum: 10c0/a1de5131ee527512afcaafceb2399b2f3e63678e56b831e1cb2dc7019c972a8b654703a3b94ef4166868f87eb984ea252b467c9d9e486b018ec2e6a55c24dfd8 + languageName: node + linkType: hard + +"tar@npm:^7.4.3": + version: 7.4.3 + resolution: "tar@npm:7.4.3" + dependencies: + "@isaacs/fs-minipass": "npm:^4.0.0" + chownr: "npm:^3.0.0" + minipass: "npm:^7.1.2" + minizlib: "npm:^3.0.1" + mkdirp: "npm:^3.0.1" + yallist: "npm:^5.0.0" + checksum: 10c0/d4679609bb2a9b48eeaf84632b6d844128d2412b95b6de07d53d8ee8baf4ca0857c9331dfa510390a0727b550fd543d4d1a10995ad86cdf078423fbb8d99831d + languageName: node + linkType: hard + +"test-exclude@npm:^6.0.0": + version: 6.0.0 + resolution: "test-exclude@npm:6.0.0" + dependencies: + "@istanbuljs/schema": "npm:^0.1.2" + glob: "npm:^7.1.4" + minimatch: "npm:^3.0.4" + checksum: 10c0/019d33d81adff3f9f1bfcff18125fb2d3c65564f437d9be539270ee74b994986abb8260c7c2ce90e8f30162178b09dbbce33c6389273afac4f36069c48521f57 + languageName: node + linkType: hard + +"tinyglobby@npm:^0.2.12": + version: 0.2.14 + resolution: "tinyglobby@npm:0.2.14" + dependencies: + fdir: "npm:^6.4.4" + picomatch: "npm:^4.0.2" + checksum: 10c0/f789ed6c924287a9b7d3612056ed0cda67306cd2c80c249fd280cf1504742b12583a2089b61f4abbd24605f390809017240e250241f09938054c9b363e51c0a6 + languageName: node + linkType: hard + +"tmpl@npm:1.0.5": + version: 1.0.5 + resolution: "tmpl@npm:1.0.5" + checksum: 10c0/f935537799c2d1922cb5d6d3805f594388f75338fe7a4a9dac41504dd539704ca4db45b883b52e7b0aa5b2fd5ddadb1452bf95cd23a69da2f793a843f9451cc9 + languageName: node + linkType: hard + +"to-regex-range@npm:^5.0.1": + version: 5.0.1 + resolution: "to-regex-range@npm:5.0.1" + dependencies: + is-number: "npm:^7.0.0" + checksum: 10c0/487988b0a19c654ff3e1961b87f471702e708fa8a8dd02a298ef16da7206692e8552a0250e8b3e8759270f62e9d8314616f6da274734d3b558b1fc7b7724e892 + languageName: node + linkType: hard + +"ts-api-utils@npm:^2.1.0": + version: 2.1.0 + resolution: "ts-api-utils@npm:2.1.0" + peerDependencies: + typescript: ">=4.8.4" + checksum: 10c0/9806a38adea2db0f6aa217ccc6bc9c391ddba338a9fe3080676d0d50ed806d305bb90e8cef0276e793d28c8a929f400abb184ddd7ff83a416959c0f4d2ce754f + languageName: node + linkType: hard + +"tslib@npm:^2.4.0": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: 10c0/9c4759110a19c53f992d9aae23aac5ced636e99887b51b9e61def52611732872ff7668757d4e4c61f19691e36f4da981cd9485e869b4a7408d689f6bf1f14e62 + languageName: node + linkType: hard + +"type-check@npm:^0.4.0, type-check@npm:~0.4.0": + version: 0.4.0 + resolution: "type-check@npm:0.4.0" + dependencies: + prelude-ls: "npm:^1.2.1" + checksum: 10c0/7b3fd0ed43891e2080bf0c5c504b418fbb3e5c7b9708d3d015037ba2e6323a28152ec163bcb65212741fa5d2022e3075ac3c76440dbd344c9035f818e8ecee58 + languageName: node + linkType: hard + +"type-detect@npm:4.0.8": + version: 4.0.8 + resolution: "type-detect@npm:4.0.8" + checksum: 10c0/8fb9a51d3f365a7de84ab7f73b653534b61b622aa6800aecdb0f1095a4a646d3f5eb295322127b6573db7982afcd40ab492d038cf825a42093a58b1e1353e0bd + languageName: node + linkType: hard + +"type-fest@npm:^0.21.3": + version: 0.21.3 + resolution: "type-fest@npm:0.21.3" + checksum: 10c0/902bd57bfa30d51d4779b641c2bc403cdf1371fb9c91d3c058b0133694fcfdb817aef07a47f40faf79039eecbaa39ee9d3c532deff244f3a19ce68cea71a61e8 + languageName: node + linkType: hard + +"typed-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-buffer@npm:1.0.3" + dependencies: + call-bound: "npm:^1.0.3" + es-errors: "npm:^1.3.0" + is-typed-array: "npm:^1.1.14" + checksum: 10c0/1105071756eb248774bc71646bfe45b682efcad93b55532c6ffa4518969fb6241354e4aa62af679ae83899ec296d69ef88f1f3763657cdb3a4d29321f7b83079 + languageName: node + linkType: hard + +"typed-array-byte-length@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-byte-length@npm:1.0.3" + dependencies: + call-bind: "npm:^1.0.8" + for-each: "npm:^0.3.3" + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.14" + checksum: 10c0/6ae083c6f0354f1fce18b90b243343b9982affd8d839c57bbd2c174a5d5dc71be9eb7019ffd12628a96a4815e7afa85d718d6f1e758615151d5f35df841ffb3e + languageName: node + linkType: hard + +"typed-array-byte-offset@npm:^1.0.4": + version: 1.0.4 + resolution: "typed-array-byte-offset@npm:1.0.4" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + for-each: "npm:^0.3.3" + gopd: "npm:^1.2.0" + has-proto: "npm:^1.2.0" + is-typed-array: "npm:^1.1.15" + reflect.getprototypeof: "npm:^1.0.9" + checksum: 10c0/3d805b050c0c33b51719ee52de17c1cd8e6a571abdf0fffb110e45e8dd87a657e8b56eee94b776b13006d3d347a0c18a730b903cf05293ab6d92e99ff8f77e53 + languageName: node + linkType: hard + +"typed-array-length@npm:^1.0.7": + version: 1.0.7 + resolution: "typed-array-length@npm:1.0.7" + dependencies: + call-bind: "npm:^1.0.7" + for-each: "npm:^0.3.3" + gopd: "npm:^1.0.1" + is-typed-array: "npm:^1.1.13" + possible-typed-array-names: "npm:^1.0.0" + reflect.getprototypeof: "npm:^1.0.6" + checksum: 10c0/e38f2ae3779584c138a2d8adfa8ecf749f494af3cd3cdafe4e688ce51418c7d2c5c88df1bd6be2bbea099c3f7cea58c02ca02ed438119e91f162a9de23f61295 + languageName: node + linkType: hard + +"typescript-eslint@npm:^8.34.0": + version: 8.34.0 + resolution: "typescript-eslint@npm:8.34.0" + dependencies: + "@typescript-eslint/eslint-plugin": "npm:8.34.0" + "@typescript-eslint/parser": "npm:8.34.0" + "@typescript-eslint/utils": "npm:8.34.0" + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 10c0/20c748b714267836bf47b9ed71b02ab256083d889528857732d559bf85ba4924c60623eb158fe0f5704bb75d9f20fbb54bc79b4cb978883093c6071a484fc390 + languageName: node + linkType: hard + +"typescript@npm:^5.8.3": + version: 5.8.3 + resolution: "typescript@npm:5.8.3" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/5f8bb01196e542e64d44db3d16ee0e4063ce4f3e3966df6005f2588e86d91c03e1fb131c2581baf0fb65ee79669eea6e161cd448178986587e9f6844446dbb48 + languageName: node + linkType: hard + +"typescript@patch:typescript@npm%3A^5.8.3#optional!builtin": + version: 5.8.3 + resolution: "typescript@patch:typescript@npm%3A5.8.3#optional!builtin::version=5.8.3&hash=5786d5" + bin: + tsc: bin/tsc + tsserver: bin/tsserver + checksum: 10c0/39117e346ff8ebd87ae1510b3a77d5d92dae5a89bde588c747d25da5c146603a99c8ee588c7ef80faaf123d89ed46f6dbd918d534d641083177d5fac38b8a1cb + languageName: node + linkType: hard + +"unbox-primitive@npm:^1.1.0": + version: 1.1.0 + resolution: "unbox-primitive@npm:1.1.0" + dependencies: + call-bound: "npm:^1.0.3" + has-bigints: "npm:^1.0.2" + has-symbols: "npm:^1.1.0" + which-boxed-primitive: "npm:^1.1.1" + checksum: 10c0/7dbd35ab02b0e05fe07136c72cb9355091242455473ec15057c11430129bab38b7b3624019b8778d02a881c13de44d63cd02d122ee782fb519e1de7775b5b982 + languageName: node + linkType: hard + +"undici-types@npm:~6.21.0": + version: 6.21.0 + resolution: "undici-types@npm:6.21.0" + checksum: 10c0/c01ed51829b10aa72fc3ce64b747f8e74ae9b60eafa19a7b46ef624403508a54c526ffab06a14a26b3120d055e1104d7abe7c9017e83ced038ea5cf52f8d5e04 + languageName: node + linkType: hard + +"undici-types@npm:~7.8.0": + version: 7.8.0 + resolution: "undici-types@npm:7.8.0" + checksum: 10c0/9d9d246d1dc32f318d46116efe3cfca5a72d4f16828febc1918d94e58f6ffcf39c158aa28bf5b4fc52f410446bc7858f35151367bd7a49f21746cab6497b709b + languageName: node + linkType: hard + +"unicode-canonical-property-names-ecmascript@npm:^2.0.0": + version: 2.0.1 + resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.1" + checksum: 10c0/f83bc492fdbe662860795ef37a85910944df7310cac91bd778f1c19ebc911e8b9cde84e703de631e5a2fcca3905e39896f8fc5fc6a44ddaf7f4aff1cda24f381 + languageName: node + linkType: hard + +"unicode-match-property-ecmascript@npm:^2.0.0": + version: 2.0.0 + resolution: "unicode-match-property-ecmascript@npm:2.0.0" + dependencies: + unicode-canonical-property-names-ecmascript: "npm:^2.0.0" + unicode-property-aliases-ecmascript: "npm:^2.0.0" + checksum: 10c0/4d05252cecaf5c8e36d78dc5332e03b334c6242faf7cf16b3658525441386c0a03b5f603d42cbec0f09bb63b9fd25c9b3b09667aee75463cac3efadae2cd17ec + languageName: node + linkType: hard + +"unicode-match-property-value-ecmascript@npm:^2.1.0": + version: 2.2.0 + resolution: "unicode-match-property-value-ecmascript@npm:2.2.0" + checksum: 10c0/1d0a2deefd97974ddff5b7cb84f9884177f4489928dfcebb4b2b091d6124f2739df51fc6ea15958e1b5637ac2a24cff9bf21ea81e45335086ac52c0b4c717d6d + languageName: node + linkType: hard + +"unicode-property-aliases-ecmascript@npm:^2.0.0": + version: 2.1.0 + resolution: "unicode-property-aliases-ecmascript@npm:2.1.0" + checksum: 10c0/50ded3f8c963c7785e48c510a3b7c6bc4e08a579551489aa0349680a35b1ceceec122e33b2b6c1b579d0be2250f34bb163ac35f5f8695fe10bbc67fb757f0af8 + languageName: node + linkType: hard + +"unique-filename@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-filename@npm:4.0.0" + dependencies: + unique-slug: "npm:^5.0.0" + checksum: 10c0/38ae681cceb1408ea0587b6b01e29b00eee3c84baee1e41fd5c16b9ed443b80fba90c40e0ba69627e30855570a34ba8b06702d4a35035d4b5e198bf5a64c9ddc + languageName: node + linkType: hard + +"unique-slug@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-slug@npm:5.0.0" + dependencies: + imurmurhash: "npm:^0.1.4" + checksum: 10c0/d324c5a44887bd7e105ce800fcf7533d43f29c48757ac410afd42975de82cc38ea2035c0483f4de82d186691bf3208ef35c644f73aa2b1b20b8e651be5afd293 + languageName: node + linkType: hard + +"unrs-resolver@npm:^1.7.11": + version: 1.9.0 + resolution: "unrs-resolver@npm:1.9.0" + dependencies: + "@unrs/resolver-binding-android-arm-eabi": "npm:1.9.0" + "@unrs/resolver-binding-android-arm64": "npm:1.9.0" + "@unrs/resolver-binding-darwin-arm64": "npm:1.9.0" + "@unrs/resolver-binding-darwin-x64": "npm:1.9.0" + "@unrs/resolver-binding-freebsd-x64": "npm:1.9.0" + "@unrs/resolver-binding-linux-arm-gnueabihf": "npm:1.9.0" + "@unrs/resolver-binding-linux-arm-musleabihf": "npm:1.9.0" + "@unrs/resolver-binding-linux-arm64-gnu": "npm:1.9.0" + "@unrs/resolver-binding-linux-arm64-musl": "npm:1.9.0" + "@unrs/resolver-binding-linux-ppc64-gnu": "npm:1.9.0" + "@unrs/resolver-binding-linux-riscv64-gnu": "npm:1.9.0" + "@unrs/resolver-binding-linux-riscv64-musl": "npm:1.9.0" + "@unrs/resolver-binding-linux-s390x-gnu": "npm:1.9.0" + "@unrs/resolver-binding-linux-x64-gnu": "npm:1.9.0" + "@unrs/resolver-binding-linux-x64-musl": "npm:1.9.0" + "@unrs/resolver-binding-wasm32-wasi": "npm:1.9.0" + "@unrs/resolver-binding-win32-arm64-msvc": "npm:1.9.0" + "@unrs/resolver-binding-win32-ia32-msvc": "npm:1.9.0" + "@unrs/resolver-binding-win32-x64-msvc": "npm:1.9.0" + napi-postinstall: "npm:^0.2.2" + dependenciesMeta: + "@unrs/resolver-binding-android-arm-eabi": + optional: true + "@unrs/resolver-binding-android-arm64": + optional: true + "@unrs/resolver-binding-darwin-arm64": + optional: true + "@unrs/resolver-binding-darwin-x64": + optional: true + "@unrs/resolver-binding-freebsd-x64": + optional: true + "@unrs/resolver-binding-linux-arm-gnueabihf": + optional: true + "@unrs/resolver-binding-linux-arm-musleabihf": + optional: true + "@unrs/resolver-binding-linux-arm64-gnu": + optional: true + "@unrs/resolver-binding-linux-arm64-musl": + optional: true + "@unrs/resolver-binding-linux-ppc64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-musl": + optional: true + "@unrs/resolver-binding-linux-s390x-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-musl": + optional: true + "@unrs/resolver-binding-wasm32-wasi": + optional: true + "@unrs/resolver-binding-win32-arm64-msvc": + optional: true + "@unrs/resolver-binding-win32-ia32-msvc": + optional: true + "@unrs/resolver-binding-win32-x64-msvc": + optional: true + checksum: 10c0/73c184514a82197145539c0506dd6633a28fc380192b1677d31348537c2783405e7392cf2bf18b96d84b8068f502868de3ae741edd580683ddb39f10d46d49e8 + languageName: node + linkType: hard + +"update-browserslist-db@npm:^1.1.3": + version: 1.1.3 + resolution: "update-browserslist-db@npm:1.1.3" + dependencies: + escalade: "npm:^3.2.0" + picocolors: "npm:^1.1.1" + peerDependencies: + browserslist: ">= 4.21.0" + bin: + update-browserslist-db: cli.js + checksum: 10c0/682e8ecbf9de474a626f6462aa85927936cdd256fe584c6df2508b0df9f7362c44c957e9970df55dfe44d3623807d26316ea2c7d26b80bb76a16c56c37233c32 + languageName: node + linkType: hard + +"uri-js@npm:^4.2.2": + version: 4.4.1 + resolution: "uri-js@npm:4.4.1" + dependencies: + punycode: "npm:^2.1.0" + checksum: 10c0/4ef57b45aa820d7ac6496e9208559986c665e49447cb072744c13b66925a362d96dd5a46c4530a6b8e203e5db5fe849369444440cb22ecfc26c679359e5dfa3c + languageName: node + linkType: hard + +"v8-to-istanbul@npm:^9.0.1": + version: 9.3.0 + resolution: "v8-to-istanbul@npm:9.3.0" + dependencies: + "@jridgewell/trace-mapping": "npm:^0.3.12" + "@types/istanbul-lib-coverage": "npm:^2.0.1" + convert-source-map: "npm:^2.0.0" + checksum: 10c0/968bcf1c7c88c04df1ffb463c179558a2ec17aa49e49376120504958239d9e9dad5281aa05f2a78542b8557f2be0b0b4c325710262f3b838b40d703d5ed30c23 + languageName: node + linkType: hard + +"v8flags@npm:^3.1.1": + version: 3.2.0 + resolution: "v8flags@npm:3.2.0" + dependencies: + homedir-polyfill: "npm:^1.0.1" + checksum: 10c0/aa0149384c1b75eee60f9e4339dbcc891d5a2154f51dbe41feb35a2227e88c0f30701234676c47b7887414c6a95bce23783931eeed52126842b7ba3a75984da7 + languageName: node + linkType: hard + +"walker@npm:^1.0.8": + version: 1.0.8 + resolution: "walker@npm:1.0.8" + dependencies: + makeerror: "npm:1.0.12" + checksum: 10c0/a17e037bccd3ca8a25a80cb850903facdfed0de4864bd8728f1782370715d679fa72e0a0f5da7c1c1379365159901e5935f35be531229da53bbfc0efdabdb48e + languageName: node + linkType: hard + +"which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": + version: 1.1.1 + resolution: "which-boxed-primitive@npm:1.1.1" + dependencies: + is-bigint: "npm:^1.1.0" + is-boolean-object: "npm:^1.2.1" + is-number-object: "npm:^1.1.1" + is-string: "npm:^1.1.1" + is-symbol: "npm:^1.1.1" + checksum: 10c0/aceea8ede3b08dede7dce168f3883323f7c62272b49801716e8332ff750e7ae59a511ae088840bc6874f16c1b7fd296c05c949b0e5b357bfe3c431b98c417abe + languageName: node + linkType: hard + +"which-builtin-type@npm:^1.2.1": + version: 1.2.1 + resolution: "which-builtin-type@npm:1.2.1" + dependencies: + call-bound: "npm:^1.0.2" + function.prototype.name: "npm:^1.1.6" + has-tostringtag: "npm:^1.0.2" + is-async-function: "npm:^2.0.0" + is-date-object: "npm:^1.1.0" + is-finalizationregistry: "npm:^1.1.0" + is-generator-function: "npm:^1.0.10" + is-regex: "npm:^1.2.1" + is-weakref: "npm:^1.0.2" + isarray: "npm:^2.0.5" + which-boxed-primitive: "npm:^1.1.0" + which-collection: "npm:^1.0.2" + which-typed-array: "npm:^1.1.16" + checksum: 10c0/8dcf323c45e5c27887800df42fbe0431d0b66b1163849bb7d46b5a730ad6a96ee8bfe827d078303f825537844ebf20c02459de41239a0a9805e2fcb3cae0d471 + languageName: node + linkType: hard + +"which-collection@npm:^1.0.2": + version: 1.0.2 + resolution: "which-collection@npm:1.0.2" + dependencies: + is-map: "npm:^2.0.3" + is-set: "npm:^2.0.3" + is-weakmap: "npm:^2.0.2" + is-weakset: "npm:^2.0.3" + checksum: 10c0/3345fde20964525a04cdf7c4a96821f85f0cc198f1b2ecb4576e08096746d129eb133571998fe121c77782ac8f21cbd67745a3d35ce100d26d4e684c142ea1f2 + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.19": + version: 1.1.19 + resolution: "which-typed-array@npm:1.1.19" + dependencies: + available-typed-arrays: "npm:^1.0.7" + call-bind: "npm:^1.0.8" + call-bound: "npm:^1.0.4" + for-each: "npm:^0.3.5" + get-proto: "npm:^1.0.1" + gopd: "npm:^1.2.0" + has-tostringtag: "npm:^1.0.2" + checksum: 10c0/702b5dc878addafe6c6300c3d0af5983b175c75fcb4f2a72dfc3dd38d93cf9e89581e4b29c854b16ea37e50a7d7fca5ae42ece5c273d8060dcd603b2404bbb3f + languageName: node + linkType: hard + +"which@npm:^2.0.1": + version: 2.0.2 + resolution: "which@npm:2.0.2" + dependencies: + isexe: "npm:^2.0.0" + bin: + node-which: ./bin/node-which + checksum: 10c0/66522872a768b60c2a65a57e8ad184e5372f5b6a9ca6d5f033d4b0dc98aff63995655a7503b9c0a2598936f532120e81dd8cc155e2e92ed662a2b9377cc4374f + languageName: node + linkType: hard + +"which@npm:^5.0.0": + version: 5.0.0 + resolution: "which@npm:5.0.0" + dependencies: + isexe: "npm:^3.1.1" + bin: + node-which: bin/which.js + checksum: 10c0/e556e4cd8b7dbf5df52408c9a9dd5ac6518c8c5267c8953f5b0564073c66ed5bf9503b14d876d0e9c7844d4db9725fb0dcf45d6e911e17e26ab363dc3965ae7b + languageName: node + linkType: hard + +"word-wrap@npm:^1.2.5": + version: 1.2.5 + resolution: "word-wrap@npm:1.2.5" + checksum: 10c0/e0e4a1ca27599c92a6ca4c32260e8a92e8a44f4ef6ef93f803f8ed823f486e0889fc0b93be4db59c8d51b3064951d25e43d434e95dc8c960cc3a63d65d00ba20 + languageName: node + linkType: hard + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: "npm:^4.0.0" + string-width: "npm:^4.1.0" + strip-ansi: "npm:^6.0.0" + checksum: 10c0/d15fc12c11e4cbc4044a552129ebc75ee3f57aa9c1958373a4db0292d72282f54373b536103987a4a7594db1ef6a4f10acf92978f79b98c49306a4b58c77d4da + languageName: node + linkType: hard + +"wrap-ansi@npm:^8.1.0": + version: 8.1.0 + resolution: "wrap-ansi@npm:8.1.0" + dependencies: + ansi-styles: "npm:^6.1.0" + string-width: "npm:^5.0.1" + strip-ansi: "npm:^7.0.1" + checksum: 10c0/138ff58a41d2f877eae87e3282c0630fc2789012fc1af4d6bd626eeb9a2f9a65ca92005e6e69a75c7b85a68479fe7443c7dbe1eb8fbaa681a4491364b7c55c60 + languageName: node + linkType: hard + +"wrap-ansi@npm:^9.0.0": + version: 9.0.0 + resolution: "wrap-ansi@npm:9.0.0" + dependencies: + ansi-styles: "npm:^6.2.1" + string-width: "npm:^7.0.0" + strip-ansi: "npm:^7.1.0" + checksum: 10c0/a139b818da9573677548dd463bd626a5a5286271211eb6e4e82f34a4f643191d74e6d4a9bb0a3c26ec90e6f904f679e0569674ac099ea12378a8b98e20706066 + languageName: node + linkType: hard + +"wrappy@npm:1": + version: 1.0.2 + resolution: "wrappy@npm:1.0.2" + checksum: 10c0/56fece1a4018c6a6c8e28fbc88c87e0fbf4ea8fd64fc6c63b18f4acc4bd13e0ad2515189786dd2c30d3eec9663d70f4ecf699330002f8ccb547e4a18231fc9f0 + languageName: node + linkType: hard + +"write-file-atomic@npm:^5.0.1": + version: 5.0.1 + resolution: "write-file-atomic@npm:5.0.1" + dependencies: + imurmurhash: "npm:^0.1.4" + signal-exit: "npm:^4.0.1" + checksum: 10c0/e8c850a8e3e74eeadadb8ad23c9d9d63e4e792bd10f4836ed74189ef6e996763959f1249c5650e232f3c77c11169d239cbfc8342fc70f3fe401407d23810505d + languageName: node + linkType: hard + +"y18n@npm:^5.0.5": + version: 5.0.8 + resolution: "y18n@npm:5.0.8" + checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249 + languageName: node + linkType: hard + +"yallist@npm:^3.0.2": + version: 3.1.1 + resolution: "yallist@npm:3.1.1" + checksum: 10c0/c66a5c46bc89af1625476f7f0f2ec3653c1a1791d2f9407cfb4c2ba812a1e1c9941416d71ba9719876530e3340a99925f697142989371b72d93b9ee628afd8c1 + languageName: node + linkType: hard + +"yallist@npm:^4.0.0": + version: 4.0.0 + resolution: "yallist@npm:4.0.0" + checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a + languageName: node + linkType: hard + +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: 10c0/a499c81ce6d4a1d260d4ea0f6d49ab4da09681e32c3f0472dee16667ed69d01dae63a3b81745a24bd78476ec4fcf856114cb4896ace738e01da34b2c42235416 + languageName: node + linkType: hard + +"yargs-parser@npm:^21.1.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2 + languageName: node + linkType: hard + +"yargs-parser@npm:^22.0.0": + version: 22.0.0 + resolution: "yargs-parser@npm:22.0.0" + checksum: 10c0/cb7ef81759c4271cb1d96b9351dbbc9a9ce35d3e1122d2b739bf6c432603824fa02c67cc12dcef6ea80283379d63495686e8f41cc7b06c6576e792aba4d33e1c + languageName: node + linkType: hard + +"yargs@npm:^17.7.2": + version: 17.7.2 + resolution: "yargs@npm:17.7.2" + dependencies: + cliui: "npm:^8.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + require-directory: "npm:^2.1.1" + string-width: "npm:^4.2.3" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^21.1.1" + checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05 + languageName: node + linkType: hard + +"yargs@npm:^18.0.0": + version: 18.0.0 + resolution: "yargs@npm:18.0.0" + dependencies: + cliui: "npm:^9.0.1" + escalade: "npm:^3.1.1" + get-caller-file: "npm:^2.0.5" + string-width: "npm:^7.2.0" + y18n: "npm:^5.0.5" + yargs-parser: "npm:^22.0.0" + checksum: 10c0/bf290e4723876ea9c638c786a5c42ac28e03c9ca2325e1424bf43b94e5876456292d3ed905b853ebbba6daf43ed29e772ac2a6b3c5fb1b16533245d6211778f3 + languageName: node + linkType: hard + +"yocto-queue@npm:^0.1.0": + version: 0.1.0 + resolution: "yocto-queue@npm:0.1.0" + checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f + languageName: node + linkType: hard