From cb8a2a14f1af98a88d76e464939c436daf4311a9 Mon Sep 17 00:00:00 2001 From: JounQin Date: Sun, 28 Jan 2024 03:32:16 +0800 Subject: [PATCH] test: migrate to vitest --- .eslintignore | 1 + .eslintrc.cjs | 2 +- .prettierignore | 1 + @commitlint/config-angular/package.json | 1 + @commitlint/config-conventional/package.json | 1 + @commitlint/config-lerna-scopes/package.json | 1 + .../src/__snapshots__/validate.test.ts.snap | 116 +- .../config-validator/src/validate.test.ts | 11 +- @commitlint/cz-commitlint/src/Process.test.ts | 10 +- .../cz-commitlint/src/Question.test.ts | 6 +- .../cz-commitlint/src/SectionBody.test.ts | 5 +- .../cz-commitlint/src/SectionFooter.test.ts | 7 +- .../cz-commitlint/src/SectionHeader.test.ts | 7 +- .../services/getRuleQuestionConfig.test.ts | 7 +- .../cz-commitlint/src/store/prompts.test.ts | 6 +- .../cz-commitlint/src/store/rules.test.ts | 5 +- @commitlint/cz-commitlint/tsconfig.json | 2 +- @commitlint/ensure/src/case.test.ts | 2 +- @commitlint/ensure/src/enum.test.ts | 2 +- @commitlint/ensure/src/max-length.test.ts | 2 +- .../ensure/src/max-line-length.test.ts | 2 +- @commitlint/ensure/src/min-length.test.ts | 2 +- @commitlint/ensure/src/not-empty.test.ts | 2 +- @commitlint/is-ignored/src/is-ignored.test.ts | 2 +- @commitlint/load/package.json | 4 +- @commitlint/load/src/load.test.ts | 19 +- @commitlint/load/src/load.ts | 72 +- .../load/src/utils/load-plugin.test.ts | 150 +- @commitlint/parse/src/index.test.ts | 3 + @commitlint/prompt/src/input.test.ts | 27 +- @commitlint/resolve-extends/package.json | 2 +- @commitlint/resolve-extends/src/index.test.ts | 48 +- @commitlint/resolve-extends/src/index.ts | 105 +- @commitlint/rules/src/header-trim.test.ts | 16 +- @commitlint/rules/src/header-trim.ts | 4 +- .../rules/src/references-empty.test.ts | 1 + @commitlint/rules/src/scope-enum.test.ts | 2 +- .../src/subject-exclamation-mark.test.ts | 1 + @packages/test-environment/package.json | 2 +- .../test-environment/src/test-environment.ts | 29 +- @packages/test/src/fix.ts | 5 +- auto-imports.d.ts | 21 + docs/guides-ci-setup.md | 6 +- docs/index.html | 4 +- jest.config.js | 15 - license.md | 21 - package.json | 14 +- tsconfig.json | 8 +- vitest.config.ts | 17 + yarn.lock | 1329 +++++++++-------- 50 files changed, 1176 insertions(+), 952 deletions(-) create mode 100644 auto-imports.d.ts delete mode 100644 jest.config.js delete mode 100644 license.md create mode 100644 vitest.config.ts diff --git a/.eslintignore b/.eslintignore index b1e8dbd975..a5858b580d 100644 --- a/.eslintignore +++ b/.eslintignore @@ -2,3 +2,4 @@ lib/ coverage/ node_modules/ fixtures/ +/auto-imports.d.ts diff --git a/.eslintrc.cjs b/.eslintrc.cjs index 8191939429..9c52ca1ca9 100644 --- a/.eslintrc.cjs +++ b/.eslintrc.cjs @@ -31,7 +31,7 @@ module.exports = { 'import/no-extraneous-dependencies': [ 'error', { - devDependencies: ['**/*.test.js', '**/*.test.ts'], + devDependencies: ['**/*.test.js', '**/*.test.ts', 'vitest.config.ts'], }, ], }, diff --git a/.prettierignore b/.prettierignore index 9d955cd018..dbba477c1b 100644 --- a/.prettierignore +++ b/.prettierignore @@ -3,3 +3,4 @@ coverage/ node_modules/ fixtures/ CHANGELOG.md +/auto-imports.d.ts diff --git a/@commitlint/config-angular/package.json b/@commitlint/config-angular/package.json index 7f35eae33a..8d98bbec86 100644 --- a/@commitlint/config-angular/package.json +++ b/@commitlint/config-angular/package.json @@ -3,6 +3,7 @@ "type": "module", "version": "18.6.0", "description": "Shareable commitlint config enforcing the angular commit convention", + "main": "index.js", "files": [ "index.js" ], diff --git a/@commitlint/config-conventional/package.json b/@commitlint/config-conventional/package.json index ac94edb4da..2c02e47584 100644 --- a/@commitlint/config-conventional/package.json +++ b/@commitlint/config-conventional/package.json @@ -3,6 +3,7 @@ "type": "module", "version": "18.6.0", "description": "Shareable commitlint config enforcing conventional commits", + "main": "index.js", "files": [ "index.js" ], diff --git a/@commitlint/config-lerna-scopes/package.json b/@commitlint/config-lerna-scopes/package.json index aac3634939..73df290618 100644 --- a/@commitlint/config-lerna-scopes/package.json +++ b/@commitlint/config-lerna-scopes/package.json @@ -3,6 +3,7 @@ "type": "module", "version": "18.4.4", "description": "Shareable commitlint config enforcing lerna package and workspace names as scopes", + "main": "index.js", "files": [ "index.js" ], diff --git a/@commitlint/config-validator/src/__snapshots__/validate.test.ts.snap b/@commitlint/config-validator/src/__snapshots__/validate.test.ts.snap index 8ba05dbad0..5e8ec1505b 100644 --- a/@commitlint/config-validator/src/__snapshots__/validate.test.ts.snap +++ b/@commitlint/config-validator/src/__snapshots__/validate.test.ts.snap @@ -1,135 +1,135 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`validation should fail for defaultIgnoresNotBoolean 1`] = ` -"Commitlint configuration in defaultIgnoresNotBoolean.js is invalid: +exports[`validation should fail for > defaultIgnoresNotBoolean 1`] = ` +[Error: Commitlint configuration in defaultIgnoresNotBoolean.js is invalid: - Property "defaultIgnores" has the wrong type - must be boolean. -" +] `; -exports[`validation should fail for extendsAsObject 1`] = ` -"Commitlint configuration in extendsAsObject.js is invalid: +exports[`validation should fail for > extendsAsObject 1`] = ` +[Error: Commitlint configuration in extendsAsObject.js is invalid: - Property "extends" has the wrong type - must be array. - Property "extends" has the wrong type - must be string. - "/extends" must match exactly one schema in oneOf. Value: {"test":1}. -" +] `; -exports[`validation should fail for extendsWithFunction 1`] = ` -"Commitlint configuration in extendsWithFunction.js is invalid: +exports[`validation should fail for > extendsWithFunction 1`] = ` +[Error: Commitlint configuration in extendsWithFunction.js is invalid: - Property "extends/0" has the wrong type - must be string. - Property "extends" has the wrong type - must be string. - "/extends" must match exactly one schema in oneOf. Value: [null]. -" +] `; -exports[`validation should fail for formatterAsObject 1`] = ` -"Commitlint configuration in formatterAsObject.js is invalid: +exports[`validation should fail for > formatterAsObject 1`] = ` +[Error: Commitlint configuration in formatterAsObject.js is invalid: - Property "formatter" has the wrong type - must be string. -" +] `; -exports[`validation should fail for helpUrlAsArray 1`] = ` -"Commitlint configuration in helpUrlAsArray.js is invalid: +exports[`validation should fail for > helpUrlAsArray 1`] = ` +[Error: Commitlint configuration in helpUrlAsArray.js is invalid: - Property "helpUrl" has the wrong type - must be string. -" +] `; -exports[`validation should fail for helpUrlNotString 1`] = ` -"Commitlint configuration in helpUrlNotString.js is invalid: +exports[`validation should fail for > helpUrlNotString 1`] = ` +[Error: Commitlint configuration in helpUrlNotString.js is invalid: - Property "helpUrl" has the wrong type - must be string. -" +] `; -exports[`validation should fail for ignoresFunction 1`] = ` -"Commitlint configuration in ignoresFunction.js is invalid: +exports[`validation should fail for > ignoresFunction 1`] = ` +[Error: Commitlint configuration in ignoresFunction.js is invalid: - Property "ignores" has the wrong type - must be array. -" +] `; -exports[`validation should fail for ignoresNotFunction 1`] = ` -"Commitlint configuration in ignoresNotFunction.js is invalid: +exports[`validation should fail for > ignoresNotFunction 1`] = ` +[Error: Commitlint configuration in ignoresNotFunction.js is invalid: - "/ignores/0" should be a function. Value: 1. -" +] `; -exports[`validation should fail for parserPreset 1`] = ` -"Commitlint configuration in parserPreset.js is invalid: +exports[`validation should fail for > parserPreset 1`] = ` +[Error: Commitlint configuration in parserPreset.js is invalid: - Property "parserPreset" has the wrong type - must be string. - Property "parserPreset" has the wrong type - must be object. - "/parserPreset" should be a function. Value: []. - "/parserPreset" must match exactly one schema in oneOf. Value: []. -" +] `; -exports[`validation should fail for pluginsNotArray 1`] = ` -"Commitlint configuration in pluginsNotArray.js is invalid: +exports[`validation should fail for > pluginsNotArray 1`] = ` +[Error: Commitlint configuration in pluginsNotArray.js is invalid: - Property "plugins" has the wrong type - must be array. -" +] `; -exports[`validation should fail for rules1 1`] = ` -"Commitlint configuration in rules1.js is invalid: +exports[`validation should fail for > rules1 1`] = ` +[Error: Commitlint configuration in rules1.js is invalid: - "/rules/a/0" must be equal to one of the allowed values. Value: 3. - "/rules/a" should be a function. Value: [3]. - "/rules/a" must match exactly one schema in oneOf. Value: [3]. -" +] `; -exports[`validation should fail for rules2 1`] = ` -"Commitlint configuration in rules2.js is invalid: +exports[`validation should fail for > rules2 1`] = ` +[Error: Commitlint configuration in rules2.js is invalid: - "/rules/b" must NOT have more than 3 items. Value: [1,"test",2,2]. - "/rules/b" should be a function. Value: [1,"test",2,2]. - "/rules/b" must match exactly one schema in oneOf. Value: [1,"test",2,2]. -" +] `; -exports[`validation should fail for rules3 1`] = ` -"Commitlint configuration in rules3.js is invalid: +exports[`validation should fail for > rules3 1`] = ` +[Error: Commitlint configuration in rules3.js is invalid: - "/rules/c" must NOT have fewer than 1 items. Value: []. - "/rules/c" should be a function. Value: []. - "/rules/c" must match exactly one schema in oneOf. Value: []. -" +] `; -exports[`validation should fail for rules4 1`] = ` -"Commitlint configuration in rules4.js is invalid: +exports[`validation should fail for > rules4 1`] = ` +[Error: Commitlint configuration in rules4.js is invalid: - Property "rules/d/0" has the wrong type - must be number. - "/rules/d/0" must be equal to one of the allowed values. Value: []. - "/rules/d" should be a function. Value: [[],[],[]]. - "/rules/d" must match exactly one schema in oneOf. Value: [[],[],[]]. -" +] `; -exports[`validation should fail for rules5 1`] = ` -"Commitlint configuration in rules5.js is invalid: +exports[`validation should fail for > rules5 1`] = ` +[Error: Commitlint configuration in rules5.js is invalid: - Property "rules/e" has the wrong type - must be array. - "/rules/e" should be a function. Value: {}. - "/rules/e" must match exactly one schema in oneOf. Value: {}. -" +] `; -exports[`validation should fail for rulesAsArray 1`] = ` -"Commitlint configuration in rulesAsArray.js is invalid: +exports[`validation should fail for > rulesAsArray 1`] = ` +[Error: Commitlint configuration in rulesAsArray.js is invalid: - Property "rules" has the wrong type - must be object. -" +] `; -exports[`validation should fail for whenConfigIsNotObject 1`] = ` -"Commitlint configuration in whenConfigIsNotObject.js is invalid: +exports[`validation should fail for > whenConfigIsNotObject 1`] = ` +[Error: Commitlint configuration in whenConfigIsNotObject.js is invalid: - Config has the wrong type - must be object. -" +] `; -exports[`validation should fail for whenConfigIsNotObject2 1`] = ` -"Commitlint configuration in whenConfigIsNotObject2.js is invalid: +exports[`validation should fail for > whenConfigIsNotObject2 1`] = ` +[Error: Commitlint configuration in whenConfigIsNotObject2.js is invalid: - Config has the wrong type - must be object. -" +] `; -exports[`validation should fail for withPluginsAsObject 1`] = ` -"Commitlint configuration in withPluginsAsObject.js is invalid: +exports[`validation should fail for > withPluginsAsObject 1`] = ` +[Error: Commitlint configuration in withPluginsAsObject.js is invalid: - Property "plugins/0" has the wrong type - must be string. - "/plugins/0" must have required property 'rules'. Value: {}. - "/plugins/0" must match a schema in anyOf. Value: {}. -" +] `; diff --git a/@commitlint/config-validator/src/validate.test.ts b/@commitlint/config-validator/src/validate.test.ts index 71364f4131..942e2eaf2c 100644 --- a/@commitlint/config-validator/src/validate.test.ts +++ b/@commitlint/config-validator/src/validate.test.ts @@ -1,6 +1,7 @@ -import {validateConfig} from './validate'; import {RuleConfigSeverity, UserConfig} from '@commitlint/types'; +import {validateConfig} from './validate.js'; + const validSchemas: Record = { empty: {}, withEmptyExtends: {extends: []}, @@ -9,7 +10,13 @@ const validSchemas: Record = { withMultipleExtends: {extends: ['test', 'test2']}, withFormatter: {formatter: ''}, withHelpUrl: {helpUrl: ''}, - withRules: {rules: {a: [RuleConfigSeverity.Disabled], b: [RuleConfigSeverity.Warning, 'never'], c: [RuleConfigSeverity.Error, 'never', true]}}, + withRules: { + rules: { + a: [RuleConfigSeverity.Disabled], + b: [RuleConfigSeverity.Warning, 'never'], + c: [RuleConfigSeverity.Error, 'never', true], + }, + }, withParserPresetString: {parserPreset: 'test'}, withParserPresetObject: {parserPreset: {}}, withParserPresetObject2: {parserPreset: {name: 'string', path: 'string'}}, diff --git a/@commitlint/cz-commitlint/src/Process.test.ts b/@commitlint/cz-commitlint/src/Process.test.ts index 14dc376449..121fabefe3 100644 --- a/@commitlint/cz-commitlint/src/Process.test.ts +++ b/@commitlint/cz-commitlint/src/Process.test.ts @@ -2,15 +2,13 @@ import {QualifiedRules, RuleConfigSeverity, UserPromptConfig} from '@commitlint/ import {Answers, DistinctQuestion} from 'inquirer'; import isFunction from 'lodash.isfunction'; -import {jest} from '@jest/globals'; +import process from './Process.js'; -import process from './Process'; - -const mockShowTitle = jest.fn(); -const mockShowValidation = jest.fn((message) => message); +const mockShowTitle = vi.fn(); +const mockShowValidation = vi.fn((message) => message); // mock inquirer -const mockPrompt = jest.fn(async function ( +const mockPrompt = vi.fn(async function ( questions: DistinctQuestion[], answers: Answers ) { diff --git a/@commitlint/cz-commitlint/src/Question.test.ts b/@commitlint/cz-commitlint/src/Question.test.ts index 0acc0ad5ea..19b0a6d720 100644 --- a/@commitlint/cz-commitlint/src/Question.test.ts +++ b/@commitlint/cz-commitlint/src/Question.test.ts @@ -1,9 +1,7 @@ import chalk from 'chalk'; import inquirer, {Answers, InputQuestionOptions} from 'inquirer'; -import {jest} from '@jest/globals'; - -import Question from './Question'; +import Question from './Question.js'; const MESSAGES = { skip: '(press enter to skip)', @@ -179,7 +177,7 @@ describe('message', () => { }); test('should execute function beforeQuestionStart when init message', () => { - const mockFn = jest.fn(); + const mockFn = vi.fn(); class CustomQuestion extends Question { beforeQuestionStart(answers: Answers): void { mockFn(answers); diff --git a/@commitlint/cz-commitlint/src/SectionBody.test.ts b/@commitlint/cz-commitlint/src/SectionBody.test.ts index 26f3750952..9a1bfbcfdc 100644 --- a/@commitlint/cz-commitlint/src/SectionBody.test.ts +++ b/@commitlint/cz-commitlint/src/SectionBody.test.ts @@ -1,6 +1,7 @@ import {RuleConfigSeverity} from '@commitlint/types'; -import {combineCommitMessage, getQuestions} from './SectionBody'; -import {setRules} from './store/rules'; + +import {combineCommitMessage, getQuestions} from './SectionBody.js'; +import {setRules} from './store/rules.js'; describe('getQuestions', () => { test('should exclude question when body must be empty', () => { diff --git a/@commitlint/cz-commitlint/src/SectionFooter.test.ts b/@commitlint/cz-commitlint/src/SectionFooter.test.ts index 06752401d5..3bab559210 100644 --- a/@commitlint/cz-commitlint/src/SectionFooter.test.ts +++ b/@commitlint/cz-commitlint/src/SectionFooter.test.ts @@ -1,7 +1,8 @@ import {RuleConfigSeverity} from '@commitlint/types'; -import {combineCommitMessage, getQuestions} from './SectionFooter'; -import {setPromptConfig} from './store/prompts'; -import {setRules} from './store/rules'; + +import {combineCommitMessage, getQuestions} from './SectionFooter.js'; +import {setPromptConfig} from './store/prompts.js'; +import {setRules} from './store/rules.js'; beforeEach(() => { setRules({}); diff --git a/@commitlint/cz-commitlint/src/SectionHeader.test.ts b/@commitlint/cz-commitlint/src/SectionHeader.test.ts index 6b370b956a..b7e83001fd 100644 --- a/@commitlint/cz-commitlint/src/SectionHeader.test.ts +++ b/@commitlint/cz-commitlint/src/SectionHeader.test.ts @@ -1,11 +1,12 @@ import {RuleConfigSeverity} from '@commitlint/types'; + import { combineCommitMessage, getQuestions, getQuestionConfig, -} from './SectionHeader'; -import {setPromptConfig} from './store/prompts'; -import {setRules} from './store/rules'; +} from './SectionHeader.js'; +import {setPromptConfig} from './store/prompts.js'; +import {setRules} from './store/rules.js'; beforeEach(() => { setRules({}); diff --git a/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.test.ts b/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.test.ts index 6518b58483..c6f2eb18eb 100644 --- a/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.test.ts +++ b/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.test.ts @@ -1,7 +1,8 @@ import {RuleConfigSeverity} from '@commitlint/types'; -import {setPromptConfig} from '../store/prompts'; -import {setRules} from '../store/rules'; -import getRuleQuestionConfig from './getRuleQuestionConfig'; + +import {setPromptConfig} from '../store/prompts.js'; +import {setRules} from '../store/rules.js'; +import getRuleQuestionConfig from './getRuleQuestionConfig.js'; // let rules = {}; diff --git a/@commitlint/cz-commitlint/src/store/prompts.test.ts b/@commitlint/cz-commitlint/src/store/prompts.test.ts index 46edb8f796..dcf7c87cda 100644 --- a/@commitlint/cz-commitlint/src/store/prompts.test.ts +++ b/@commitlint/cz-commitlint/src/store/prompts.test.ts @@ -1,5 +1,3 @@ -import {jest} from '@jest/globals'; - import * as prompts from './prompts.js'; let getPromptQuestions: typeof prompts.getPromptQuestions; @@ -8,7 +6,7 @@ let getPromptSettings: typeof prompts.getPromptSettings; let setPromptConfig: typeof prompts.setPromptConfig; beforeEach(async () => { - jest.resetModules(); + vi.resetModules(); ({getPromptQuestions, getPromptMessages, getPromptSettings, setPromptConfig} = await import('./prompts.js')); }); @@ -118,7 +116,7 @@ describe('setPromptConfig', () => { }); expect(getPromptSettings()['scopeEnumSeparator']).toEqual('/'); - const processExit = jest + const processExit = vi .spyOn(process, 'exit') .mockImplementation(() => undefined as never); setPromptConfig({ diff --git a/@commitlint/cz-commitlint/src/store/rules.test.ts b/@commitlint/cz-commitlint/src/store/rules.test.ts index 1dda932a86..a66f661ccc 100644 --- a/@commitlint/cz-commitlint/src/store/rules.test.ts +++ b/@commitlint/cz-commitlint/src/store/rules.test.ts @@ -1,11 +1,12 @@ import {QualifiedRules, RuleConfigSeverity} from '@commitlint/types'; -import {GetRuleMethod, SetRulesMethod} from './rules'; + +import {GetRuleMethod, SetRulesMethod} from './rules.js'; let getRule: GetRuleMethod; let setRules: SetRulesMethod; beforeEach(async () => { - jest.resetModules(); + vi.resetModules(); ({getRule, setRules} = await import('./rules.js')); }); diff --git a/@commitlint/cz-commitlint/tsconfig.json b/@commitlint/cz-commitlint/tsconfig.json index 2a6d93a0fa..ff127af5ca 100644 --- a/@commitlint/cz-commitlint/tsconfig.json +++ b/@commitlint/cz-commitlint/tsconfig.json @@ -6,6 +6,6 @@ "outDir": "./lib" }, "include": ["./src"], - "exclude": ["./src/**/*.test.ts", "./lib/**/*"], + "exclude": ["./src/**/*.test.ts", "./src/**/*-test.ts", "./lib/**/*"], "references": [{"path": "../cli"}] } diff --git a/@commitlint/ensure/src/case.test.ts b/@commitlint/ensure/src/case.test.ts index 532916dcec..5b09dec4c6 100644 --- a/@commitlint/ensure/src/case.test.ts +++ b/@commitlint/ensure/src/case.test.ts @@ -1,4 +1,4 @@ -import ensure from './case'; +import ensure from './case.js'; test('true for no params', () => { const actual = ensure(); diff --git a/@commitlint/ensure/src/enum.test.ts b/@commitlint/ensure/src/enum.test.ts index ab7d5d0ff7..0f4bf84c85 100644 --- a/@commitlint/ensure/src/enum.test.ts +++ b/@commitlint/ensure/src/enum.test.ts @@ -1,4 +1,4 @@ -import ensure from './enum'; +import ensure from './enum.js'; test('false for no params', () => { const actual = (ensure as () => boolean)(); diff --git a/@commitlint/ensure/src/max-length.test.ts b/@commitlint/ensure/src/max-length.test.ts index bce186b3bb..30f24426a2 100644 --- a/@commitlint/ensure/src/max-length.test.ts +++ b/@commitlint/ensure/src/max-length.test.ts @@ -1,4 +1,4 @@ -import ensure from './max-length'; +import ensure from './max-length.js'; test('false for no params', () => { const actual = (ensure as () => boolean)(); diff --git a/@commitlint/ensure/src/max-line-length.test.ts b/@commitlint/ensure/src/max-line-length.test.ts index b852599660..53a1827e84 100644 --- a/@commitlint/ensure/src/max-line-length.test.ts +++ b/@commitlint/ensure/src/max-line-length.test.ts @@ -1,4 +1,4 @@ -import ensure from './max-line-length'; +import ensure from './max-line-length.js'; test('false for no params', () => { const actual = (ensure as () => boolean)(); diff --git a/@commitlint/ensure/src/min-length.test.ts b/@commitlint/ensure/src/min-length.test.ts index 8a8fd605d8..748b449d31 100644 --- a/@commitlint/ensure/src/min-length.test.ts +++ b/@commitlint/ensure/src/min-length.test.ts @@ -1,4 +1,4 @@ -import ensure from './min-length'; +import ensure from './min-length.js'; test('false for no params', () => { const actual = (ensure as () => boolean)(); diff --git a/@commitlint/ensure/src/not-empty.test.ts b/@commitlint/ensure/src/not-empty.test.ts index 027e66ecce..50834ad82a 100644 --- a/@commitlint/ensure/src/not-empty.test.ts +++ b/@commitlint/ensure/src/not-empty.test.ts @@ -1,4 +1,4 @@ -import ensure from './not-empty'; +import ensure from './not-empty.js'; test('false for no params', () => { const actual = (ensure as () => boolean)(); diff --git a/@commitlint/is-ignored/src/is-ignored.test.ts b/@commitlint/is-ignored/src/is-ignored.test.ts index 833ab04c49..b536419472 100644 --- a/@commitlint/is-ignored/src/is-ignored.test.ts +++ b/@commitlint/is-ignored/src/is-ignored.test.ts @@ -1,4 +1,4 @@ -import isIgnored from './is-ignored'; +import isIgnored from './is-ignored.js'; const VERSION_MESSAGES = [ '0.0.1', diff --git a/@commitlint/load/package.json b/@commitlint/load/package.json index 4021b6fe8e..493f3c6d89 100644 --- a/@commitlint/load/package.json +++ b/@commitlint/load/package.json @@ -53,10 +53,10 @@ "chalk": "^5.3.0", "cosmiconfig": "^8.3.6", "cosmiconfig-typescript-loader": "^5.0.0", + "import-meta-resolve": "4.0.0", "lodash.isplainobject": "^4.0.6", "lodash.merge": "^4.6.2", - "lodash.uniq": "^4.5.0", - "resolve-from": "^5.0.0" + "lodash.uniq": "^4.5.0" }, "gitHead": "70f7f4688b51774e7ac5e40e896cdaa3f132b2bc" } diff --git a/@commitlint/load/src/load.test.ts b/@commitlint/load/src/load.test.ts index c6da8a9fca..4cfc719b18 100644 --- a/@commitlint/load/src/load.test.ts +++ b/@commitlint/load/src/load.test.ts @@ -6,20 +6,20 @@ import {RuleConfigSeverity} from '@commitlint/types'; import {fix, git, npm} from '@commitlint/test'; import resolveFrom from 'resolve-from'; -import {jest} from '@jest/globals'; - import load from './load.js'; import {isDynamicAwaitSupported} from './utils/load-config.js'; const __dirname = path.resolve(fileURLToPath(import.meta.url), '..'); -const plugin = jest.fn(); -const scopedPlugin = jest.fn(); +const plugin = vi.fn(); +const scopedPlugin = vi.fn(); -jest.mock('commitlint-plugin-example', () => plugin, {virtual: true}); -jest.mock('@scope/commitlint-plugin-example', () => scopedPlugin, { - virtual: true, -}); +vi.mock('commitlint-plugin-example', () => ({ + default: plugin, +})); +vi.mock('@scope/commitlint-plugin-example', () => ({ + default: scopedPlugin, +})); const fixBootstrap = (name: string) => fix.bootstrap(name, __dirname); const gitBootstrap = (name: string) => git.bootstrap(name, __dirname); @@ -226,6 +226,9 @@ describe.each([['basic'], ['extends']])('%s config', (template) => { const getConfigContents = ({ filename, isEsm, + }: { + filename: string; + isEsm: boolean; }): string | NodeJS.ArrayBufferView => { if (filename === 'package.json') { const configPath = path.join( diff --git a/@commitlint/load/src/load.ts b/@commitlint/load/src/load.ts index ebe691ce08..d3278cd900 100644 --- a/@commitlint/load/src/load.ts +++ b/@commitlint/load/src/load.ts @@ -1,5 +1,5 @@ import path from 'path'; -import {pathToFileURL} from 'url'; +import {fileURLToPath, pathToFileURL} from 'url'; import {validateConfig} from '@commitlint/config-validator'; import executeRule from '@commitlint/execute-rule'; @@ -11,10 +11,10 @@ import { QualifiedRules, UserConfig, } from '@commitlint/types'; +import {resolve} from 'import-meta-resolve'; import isPlainObject from 'lodash.isplainobject'; import merge from 'lodash.merge'; import uniq from 'lodash.uniq'; -import resolveFrom from 'resolve-from'; import {loadConfig} from './utils/load-config.js'; import {loadParserOpts} from './utils/load-parser-opts.js'; @@ -27,6 +27,68 @@ const dynamicImport = async (id: string): Promise => { return ('default' in imported && imported.default) || imported; }; +const resolveFrom = (parent: string, id: string) => { + let resolved: string | undefined; + let error: Error | undefined; + + for (const suffix of ['', '.js', '.json', '/index.js', '/index.json']) { + try { + resolved = resolve( + id + suffix, + pathToFileURL(path.resolve(parent, '__test__.js')).toString() + ); + if (/^file:/.test(resolved)) { + resolved = fileURLToPath(resolved); + } + break; + } catch (err) { + if (!error) { + error = err as Error; + } + } + } + + if (resolved) { + return resolved; + } + + throw ( + error || + Object.assign(new Error(`Cannot find module "${id}" from "${parent}"`), { + code: 'MODULE_NOT_FOUND', + }) + ); +}; + +const resolveParserPreset = async (resolvedParserPreset: string) => { + let finalParserPreset = resolvedParserPreset; + let finalParserOpts: unknown; + let finalError: Error | undefined; + + for (const suffix of ['', '.js', '.json', '/index.js', '/index.json']) { + try { + finalParserOpts = await dynamicImport(resolvedParserPreset + suffix); + finalParserPreset = resolvedParserPreset + suffix; + break; + } catch (err) { + if (!finalError) { + finalError = err as Error; + } + } + } + + if (finalError) { + throw finalError; + } + + return { + path: `./${path.relative(process.cwd(), finalParserPreset)}` + .split(path.sep) + .join('/'), + parserOpts: finalParserOpts, + }; +}; + export default async function load( seed: UserConfig = {}, options: LoadOptions = {} @@ -57,8 +119,7 @@ export default async function load( config.parserPreset = { name: config.parserPreset, - path: resolvedParserPreset, - parserOpts: await dynamicImport(resolvedParserPreset), + ...resolveParserPreset(resolvedParserPreset), }; } @@ -116,8 +177,7 @@ export default async function load( ? [extended.extends] : [], // Resolve config-relative formatter module - formatter: - resolveFrom.silent(base, extended.formatter) || extended.formatter, + formatter: resolveFrom(base, extended.formatter) || extended.formatter, // Resolve parser-opts from preset parserPreset: await loadParserOpts(extended.parserPreset), ignores: extended.ignores, diff --git a/@commitlint/load/src/utils/load-plugin.test.ts b/@commitlint/load/src/utils/load-plugin.test.ts index e6731a181d..7e62bb7714 100644 --- a/@commitlint/load/src/utils/load-plugin.test.ts +++ b/@commitlint/load/src/utils/load-plugin.test.ts @@ -1,121 +1,115 @@ -import {createRequire} from 'module'; - import {AsyncRule, Plugin, Rule, SyncRule} from '@commitlint/types'; -import {jest} from '@jest/globals'; - import loadPlugin from './load-plugin.js'; -const require = createRequire(import.meta.url); +vi.mock('commitlint-plugin-example', () => ({example: true})); + +vi.mock('@scope/commitlint-plugin-example', () => ({scope: true})); -jest.mock('commitlint-plugin-example', () => ({example: true}), { - virtual: true, +vi.mock('commitlint-plugin-rule', (): Plugin => { + const rule: Rule = (_parsed, when, _value) => { + return [when === 'never']; + }; + return {rules: {rule}}; }); -jest.mock('@scope/commitlint-plugin-example', () => ({scope: true}), { - virtual: true, +vi.mock('commitlint-plugin-sync-rule', (): Plugin => { + const syncRule: SyncRule = (_parsed, when, _value) => { + return [when === 'never']; + }; + return {rules: {syncRule}}; }); -jest.mock( - 'commitlint-plugin-rule', - (): Plugin => { - const rule: Rule = (_parsed, when, _value) => { - return [when === 'never']; - }; - return {rules: {rule}}; - }, - {virtual: true} -); - -jest.mock( - 'commitlint-plugin-sync-rule', - (): Plugin => { - const syncRule: SyncRule = (_parsed, when, _value) => { - return [when === 'never']; - }; - return {rules: {syncRule}}; - }, - {virtual: true} -); - -jest.mock( - 'commitlint-plugin-async-rule', - (): Plugin => { - const asyncRule: AsyncRule = (_parsed, when, _value) => { - return new Promise(() => [when === 'never']); - }; - return {rules: {asyncRule}}; - }, - {virtual: true} -); - -test('should load a plugin when referenced by short name', () => { - const plugins = loadPlugin({}, 'example'); - expect(plugins['example']).toBe(require('commitlint-plugin-example')); +vi.mock('commitlint-plugin-async-rule', (): Plugin => { + const asyncRule: AsyncRule = (_parsed, when, _value) => { + return new Promise(() => [when === 'never']); + }; + return {rules: {asyncRule}}; +}); + +test('should load a plugin when referenced by short name', async () => { + const plugins = await loadPlugin({}, 'example'); + expect(plugins['example']).toBe( + // @ts-expect-error -- mocked module + await import('commitlint-plugin-example') + ); }); -test('should load a plugin when referenced by long name', () => { - const plugins = loadPlugin({}, 'commitlint-plugin-example'); - expect(plugins['example']).toBe(require('commitlint-plugin-example')); +test('should load a plugin when referenced by long name', async () => { + const plugins = await loadPlugin({}, 'commitlint-plugin-example'); + expect(plugins['example']).toBe( + // @ts-expect-error -- mocked module + await import('commitlint-plugin-example') + ); }); -test('should load a plugin with a rule', () => { - const plugins = loadPlugin({}, 'commitlint-plugin-rule'); - expect(plugins['rule']).toBe(require('commitlint-plugin-rule')); +test('should load a plugin with a rule', async () => { + const plugins = await loadPlugin({}, 'commitlint-plugin-rule'); + expect(plugins['rule']).toBe( + // @ts-expect-error -- mocked module + await import('commitlint-plugin-rule') + ); }); -test('should load a plugin with a sync rule', () => { - const plugins = loadPlugin({}, 'commitlint-plugin-sync-rule'); - expect(plugins['sync-rule']).toBe(require('commitlint-plugin-sync-rule')); +test('should load a plugin with a sync rule', async () => { + const plugins = await loadPlugin({}, 'commitlint-plugin-sync-rule'); + expect(plugins['sync-rule']).toBe( + // @ts-expect-error -- mocked module + await import('commitlint-plugin-sync-rule') + ); }); -test('should load a plugin with an async rule', () => { - const plugins = loadPlugin({}, 'commitlint-plugin-async-rule'); - expect(plugins['async-rule']).toBe(require('commitlint-plugin-async-rule')); +test('should load a plugin with an async rule', async () => { + const plugins = await loadPlugin({}, 'commitlint-plugin-async-rule'); + expect(plugins['async-rule']).toBe( + // @ts-expect-error -- mocked module + await import('commitlint-plugin-async-rule') + ); }); -test('should throw an error when a plugin has whitespace', () => { - expect(() => loadPlugin({}, 'whitespace ')).toThrow( +test('should throw an error when a plugin has whitespace', async () => { + await expect(() => loadPlugin({}, 'whitespace ')).rejects.toThrow( "Whitespace found in plugin name 'whitespace '" ); - expect(() => loadPlugin({}, 'whitespace\t')).toThrow( + await expect(() => loadPlugin({}, 'whitespace\t')).rejects.toThrow( 'Whitespace found in plugin name' ); - expect(() => loadPlugin({}, 'whitespace\n')).toThrow( + await expect(() => loadPlugin({}, 'whitespace\n')).rejects.toThrow( 'Whitespace found in plugin name' ); - expect(() => loadPlugin({}, 'whitespace\r')).toThrow( + await expect(() => loadPlugin({}, 'whitespace\r')).rejects.toThrow( 'Whitespace found in plugin name' ); }); -test("should throw an error when a plugin doesn't exist", () => { - expect(() => loadPlugin({}, 'nonexistentplugin')).toThrow( +test("should throw an error when a plugin doesn't exist", () => + expect(() => loadPlugin({}, 'nonexistentplugin')).rejects.toThrow( 'Failed to load plugin' - ); -}); + )); -test('should load a scoped plugin when referenced by short name', () => { - const plugins = loadPlugin({}, '@scope/example'); +test('should load a scoped plugin when referenced by short name', async () => { + const plugins = await loadPlugin({}, '@scope/example'); expect(plugins['@scope/example']).toBe( - require('@scope/commitlint-plugin-example') + // @ts-expect-error -- mocked module + await import('@scope/commitlint-plugin-example') ); }); -test('should load a scoped plugin when referenced by long name', () => { - const plugins = loadPlugin({}, '@scope/commitlint-plugin-example'); +test('should load a scoped plugin when referenced by long name', async () => { + const plugins = await loadPlugin({}, '@scope/commitlint-plugin-example'); expect(plugins['@scope/example']).toBe( - require('@scope/commitlint-plugin-example') + // @ts-expect-error -- mocked module + await import('@scope/commitlint-plugin-example') ); }); /* when referencing a scope plugin and omitting @scope/ */ -test("should load a scoped plugin when referenced by short name, but should not get the plugin if '@scope/' is omitted", () => { - const plugins = loadPlugin({}, '@scope/example'); - expect(plugins['example']).toBe(undefined); +test("should load a scoped plugin when referenced by short name, but should not get the plugin if '@scope/' is omitted", async () => { + const plugins = await loadPlugin({}, '@scope/example'); + expect(plugins['example']).toBeUndefined(); }); -test("should load a scoped plugin when referenced by long name, but should not get the plugin if '@scope/' is omitted", () => { - const plugins = loadPlugin({}, '@scope/commitlint-plugin-example'); - expect(plugins['example']).toBe(undefined); +test("should load a scoped plugin when referenced by long name, but should not get the plugin if '@scope/' is omitted", async () => { + const plugins = await loadPlugin({}, '@scope/commitlint-plugin-example'); + expect(plugins['example']).toBeUndefined(); }); diff --git a/@commitlint/parse/src/index.test.ts b/@commitlint/parse/src/index.test.ts index d99bf82ebb..6790e22a59 100644 --- a/@commitlint/parse/src/index.test.ts +++ b/@commitlint/parse/src/index.test.ts @@ -142,6 +142,7 @@ test('supports scopes with / and empty parserOpts', async () => { test('ignores comments', async () => { const message = 'type(some/scope): subject\n# some comment'; + // @ts-expect-error -- no typings const changelogOpts = await import('conventional-changelog-angular'); const opts = { ...changelogOpts.parserOpts, @@ -157,6 +158,7 @@ test('ignores comments', async () => { test('registers inline #', async () => { const message = 'type(some/scope): subject #reference\n# some comment\nthings #reference'; + // @ts-expect-error -- no typings const changelogOpts = await import('conventional-changelog-angular'); const opts = { ...changelogOpts.parserOpts, @@ -203,6 +205,7 @@ test('allows separating -side nodes- by setting parserOpts.fieldPattern', async test('parses references leading subject', async () => { const message = '#1 some subject'; + // @ts-expect-error -- no typings const opts = await import('conventional-changelog-angular'); const { references: [actual], diff --git a/@commitlint/prompt/src/input.test.ts b/@commitlint/prompt/src/input.test.ts index 660d0070cd..8cb43af0d7 100644 --- a/@commitlint/prompt/src/input.test.ts +++ b/@commitlint/prompt/src/input.test.ts @@ -1,26 +1,15 @@ /// +// @ts-expect-error -- no typings +import config from '@commitlint/config-angular'; import chalk from 'chalk'; -import { - Answers, - DistinctQuestion, - PromptModule, - QuestionCollection, -} from 'inquirer'; +import {Answers, DistinctQuestion, PromptModule} from 'inquirer'; -import {input} from './input'; +import {input} from './input.js'; -import {jest} from '@jest/globals'; - -jest.mock( - '@commitlint/load', - () => { - return () => require('@commitlint/config-angular'); - }, - { - virtual: true, - } -); +vi.mock('@commitlint/load', () => ({ + default: () => config, +})); test('should work with all fields filled', async () => { const prompt = stub({ @@ -51,7 +40,7 @@ test('should work without scope', async () => { }); test('should fail without type', async () => { - const spy = jest.spyOn(console, 'error'); + const spy = vi.spyOn(console, 'error'); const prompt = stub({ 'input-custom': { type: '', diff --git a/@commitlint/resolve-extends/package.json b/@commitlint/resolve-extends/package.json index de30430891..c6a041cdc2 100644 --- a/@commitlint/resolve-extends/package.json +++ b/@commitlint/resolve-extends/package.json @@ -44,8 +44,8 @@ "@commitlint/config-validator": "^18.6.0", "@commitlint/types": "^18.6.0", "import-fresh": "^3.0.0", + "import-meta-resolve": "^4.0.0", "lodash.mergewith": "^4.6.2", - "resolve-from": "^5.0.0", "resolve-global": "^1.0.0" }, "gitHead": "d829bf6260304ca8d6811f329fcdd1b6c50e9749" diff --git a/@commitlint/resolve-extends/src/index.test.ts b/@commitlint/resolve-extends/src/index.test.ts index 976a732aca..f367c422ad 100644 --- a/@commitlint/resolve-extends/src/index.test.ts +++ b/@commitlint/resolve-extends/src/index.test.ts @@ -3,8 +3,6 @@ import {pathToFileURL} from 'url'; import {RuleConfigSeverity, UserConfig} from '@commitlint/types'; -import {jest} from '@jest/globals'; - import resolveExtends, {ResolveExtendsContext} from './index.js'; const require = createRequire(import.meta.url); @@ -23,8 +21,8 @@ test('returns an equivalent object as passed in', async () => { }); test('falls back to global install', async () => { - const resolveGlobal = jest.fn(() => '@commitlint/foo-bar'); - const dynamicImport = jest.fn(() => ({})); + const resolveGlobal = vi.fn(() => '@commitlint/foo-bar'); + const dynamicImport = vi.fn(() => ({})); const ctx = {resolveGlobal, dynamicImport} as ResolveExtendsContext; @@ -42,7 +40,7 @@ test('resolves extends for single config', async () => { const input = {extends: 'extender-name'}; const ctx = { resolve: id, - dynamicImport: jest.fn(() => ({})), + dynamicImport: vi.fn(() => ({})), } as ResolveExtendsContext; await resolveExtends(input, ctx); @@ -53,7 +51,7 @@ test('uses empty prefix by default', async () => { const input = {extends: ['extender-name']}; const ctx = { resolve: id, - dynamicImport: jest.fn(() => ({})), + dynamicImport: vi.fn(() => ({})), } as ResolveExtendsContext; await resolveExtends(input, ctx); @@ -64,7 +62,7 @@ test('uses prefix as configured', async () => { const input = {extends: ['extender-name']}; const ctx = { resolve: id, - dynamicImport: jest.fn(() => ({})), + dynamicImport: vi.fn(() => ({})), } as ResolveExtendsContext; await resolveExtends(input, { @@ -79,7 +77,7 @@ test('ignores prefix for scoped extends', async () => { const input = {extends: ['@scope/extender-name']}; const ctx = { resolve: id, - dynamicImport: jest.fn(() => ({})), + dynamicImport: vi.fn(() => ({})), } as ResolveExtendsContext; await resolveExtends(input, { @@ -94,7 +92,7 @@ test('adds prefix as suffix for scopes only', async () => { const input = {extends: ['@scope']}; const ctx = { resolve: id, - dynamicImport: jest.fn(() => ({})), + dynamicImport: vi.fn(() => ({})), } as ResolveExtendsContext; await resolveExtends(input, { @@ -109,7 +107,7 @@ test('ignores prefix for relative extends', async () => { const input = {extends: ['./extender']}; const ctx = { resolve: id, - dynamicImport: jest.fn(() => ({})), + dynamicImport: vi.fn(() => ({})), } as ResolveExtendsContext; await resolveExtends(input, { @@ -125,7 +123,7 @@ test('ignores prefix for absolute extends', async () => { const input = {extends: [absolutePath]}; const ctx = { resolve: id, - dynamicImport: jest.fn(() => ({})), + dynamicImport: vi.fn(() => ({})), } as ResolveExtendsContext; await resolveExtends(input, { @@ -143,7 +141,7 @@ test('propagates return value of require function', async () => { const propagated = {foo: 'bar'}; const ctx = { resolve: id, - dynamicImport: jest.fn(() => propagated), + dynamicImport: vi.fn(() => propagated), } as ResolveExtendsContext; const actual = await resolveExtends(input, ctx); @@ -166,7 +164,7 @@ test('resolves extends recursively', async () => { const ctx = { resolve: id, - dynamicImport: jest.fn(dynamicImport), + dynamicImport: vi.fn(dynamicImport), } as ResolveExtendsContext; await resolveExtends(input, ctx); @@ -190,7 +188,7 @@ test('uses prefix key recursively', async () => { const ctx = { resolve: id, - dynamicImport: jest.fn(dynamicImport), + dynamicImport: vi.fn(dynamicImport), } as ResolveExtendsContext; await resolveExtends(input, { @@ -220,7 +218,7 @@ test('propagates contents recursively', async () => { const ctx = { resolve: id, - dynamicImport: jest.fn(dynamicImport), + dynamicImport: vi.fn(dynamicImport), } as ResolveExtendsContext; const actual = await resolveExtends(input, ctx); @@ -253,7 +251,7 @@ test('propagates contents recursively with overlap', async () => { const ctx = { resolve: id, - dynamicImport: jest.fn(dynamicImport), + dynamicImport: vi.fn(dynamicImport), } as ResolveExtendsContext; const actual = await resolveExtends(input, ctx); @@ -284,7 +282,7 @@ test('extends rules from left to right with overlap', async () => { const ctx = { resolve: id, - dynamicImport: jest.fn(dynamicImport), + dynamicImport: vi.fn(dynamicImport), } as ResolveExtendsContext; const actual = await resolveExtends(input, ctx); @@ -323,7 +321,7 @@ test('extending contents should take precedence', async () => { const ctx = { resolve: id, - dynamicImport: jest.fn(dynamicImport), + dynamicImport: vi.fn(dynamicImport), } as ResolveExtendsContext; const actual = await resolveExtends(input, ctx); @@ -359,8 +357,8 @@ test('should fall back to conventional-changelog-lint-config prefix', async () = }; const ctx = { - resolve: jest.fn(resolve), - dynamicImport: jest.fn(dynamicImport), + resolve: vi.fn(resolve), + dynamicImport: vi.fn(dynamicImport), } as ResolveExtendsContext; const actual = await resolveExtends(input, { @@ -397,7 +395,7 @@ test('plugins should be merged correctly', async () => { const ctx = { resolve: id, - dynamicImport: jest.fn(dynamicImport), + dynamicImport: vi.fn(dynamicImport), } as ResolveExtendsContext; const actual = await resolveExtends(input, ctx); @@ -438,7 +436,7 @@ test('rules should be merged correctly', async () => { const ctx = { resolve: id, - dynamicImport: jest.fn(dynamicImport), + dynamicImport: vi.fn(dynamicImport), } as ResolveExtendsContext; const actual = await resolveExtends(input, ctx); @@ -479,7 +477,7 @@ test('parserPreset should resolve correctly in extended configuration', async () const ctx = { resolve: id, - dynamicImport: jest.fn(dynamicImport), + dynamicImport: vi.fn(dynamicImport), } as ResolveExtendsContext; const actual = await resolveExtends(input, ctx); @@ -521,7 +519,7 @@ test('parserPreset should be merged correctly', async () => { const ctx = { resolve: id, - dynamicImport: jest.fn(dynamicImport), + dynamicImport: vi.fn(dynamicImport), } as ResolveExtendsContext; const actual = await resolveExtends(input, ctx); @@ -567,7 +565,7 @@ test('should correctly merge nested configs', async () => { const ctx = { resolve: id, - dynamicImport: jest.fn(dynamicImport), + dynamicImport: vi.fn(dynamicImport), } as ResolveExtendsContext; const actual = await resolveExtends(input, ctx); diff --git a/@commitlint/resolve-extends/src/index.ts b/@commitlint/resolve-extends/src/index.ts index 0ef9c25a40..49adc1c70b 100644 --- a/@commitlint/resolve-extends/src/index.ts +++ b/@commitlint/resolve-extends/src/index.ts @@ -1,17 +1,18 @@ import path from 'path'; -import {pathToFileURL} from 'url'; +import {fileURLToPath, pathToFileURL} from 'url'; import 'resolve-global'; -import resolveFrom from 'resolve-from'; + +import {resolve} from 'import-meta-resolve'; import mergeWith from 'lodash.mergewith'; import {validateConfig} from '@commitlint/config-validator'; -import {UserConfig} from '@commitlint/types'; +import type {ParserPreset, UserConfig} from '@commitlint/types'; import importFresh from 'import-fresh'; export interface ResolveExtendsContext { cwd?: string; - parserPreset?: unknown; + parserPreset?: string | ParserPreset; prefix?: string; resolve?(id: string, ctx?: {prefix?: string; cwd?: string}): string; resolveGlobal?: (id: string) => string; @@ -47,6 +48,62 @@ const dynamicImport = async (id: string): Promise => { return ('default' in imported && imported.default) || imported; }; +const resolveParserPreset = async (resolvedParserPreset: string) => { + let finalParserPreset = resolvedParserPreset; + let finalParserOpts: ParserPreset | undefined; + let finalError: Error | undefined; + + for (const suffix of ['', '.js', '.json', '/index.js', '/index.json']) { + try { + finalParserOpts = await dynamicImport(resolvedParserPreset + suffix); + finalParserPreset = resolvedParserPreset + suffix; + break; + } catch (err) { + if (!finalError) { + finalError = err as Error; + } + } + } + + if (finalError) { + throw finalError; + } + + return { + path: `./${path.relative(process.cwd(), finalParserPreset)}` + .split(path.sep) + .join('/'), + parserOpts: finalParserOpts, + }; +}; + +const resolveFrom = (parent: string, id: string) => { + let resolved: string | undefined; + let error: Error | undefined; + + for (const suffix of ['', '.js', '.json', '/index.js', '/index.json']) { + try { + resolved = resolve(id + suffix, parent); + break; + } catch (err) { + if (!error) { + error = err as Error; + } + } + } + + if (resolved) { + return resolved; + } + + throw ( + error || + Object.assign(new Error(`Cannot find module "${id}" from "${parent}"`), { + code: 'MODULE_NOT_FOUND', + }) + ); +}; + async function loadExtends( config: UserConfig = {}, context: ResolveExtendsContext = {} @@ -71,10 +128,7 @@ async function loadExtends( const resolvedParserPreset = resolveFrom(cwd, c.parserPreset); const parserPreset = { name: c.parserPreset, - path: `./${path.relative(process.cwd(), resolvedParserPreset)}` - .split(path.sep) - .join('/'), - parserOpts: await dynamicImport(resolvedParserPreset), + ...resolveParserPreset(resolvedParserPreset), }; ctx.parserPreset = parserPreset; @@ -104,7 +158,7 @@ function resolveConfig( raw: string, context: ResolveExtendsContext = {} ): string { - const resolve = context.resolve || resolveId; + const resolve = context.resolve || tryResolveId; const id = getId(raw, context.prefix); let resolved: string; @@ -122,10 +176,32 @@ function resolveConfig( : resolved; } -function resolveId( - id: string, - context: {cwd?: string; resolveGlobal?: (id: string) => string | void} = {} -): string { +function tryResolveId(id: string, context: ResolveExtendsContext) { + const cwd = context.cwd || process.cwd(); + + let resolved: string | undefined; + + for (const suffix of ['', '.js', '.json', '/index.js', '/index.json']) { + try { + resolved = resolve( + id + suffix, + pathToFileURL(path.resolve(cwd, '__test__.js')).toString() + ); + if (/^file:/.test(resolved)) { + resolved = fileURLToPath(resolved); + } + break; + } catch {} + } + + if (resolved) { + return resolved; + } + + return resolveId(id, context); +} + +function resolveId(id: string, context: ResolveExtendsContext = {}): string { const cwd = context.cwd || process.cwd(); const localPath = resolveFromSilent(cwd, id); @@ -141,8 +217,7 @@ function resolveId( } const err = new Error(`Cannot find module "${id}" from "${cwd}"`); - (err as any).code = 'MODULE_NOT_FOUND'; - throw err; + throw Object.assign(err, {code: 'MODULE_NOT_FOUND'}); } function resolveFromSilent(cwd: string, id: string): string | void { diff --git a/@commitlint/rules/src/header-trim.test.ts b/@commitlint/rules/src/header-trim.test.ts index 6a54c97813..f5ed89512c 100644 --- a/@commitlint/rules/src/header-trim.test.ts +++ b/@commitlint/rules/src/header-trim.test.ts @@ -1,6 +1,7 @@ import parse from '@commitlint/parse'; -import {Commit} from '@commitlint/types'; -import {headerTrim} from './header-trim'; +import type {Commit} from 'conventional-commits-parser'; + +import {headerTrim} from './header-trim.js'; const messages = { correct: 'test: subject', @@ -18,10 +19,13 @@ const messages = { mixSurround: '\t \ttest: subject \t \t', }; -const parsed = Object.entries(messages).reduce((_parsed, [key, message]) => { - _parsed[key] = parse(message); - return _parsed; -}, {}) as Record>; +const parsed = Object.entries(messages).reduce( + (_parsed, [key, message]) => + Object.assign(_parsed, { + [key]: parse(message), + }), + {} as Record> +); test('should succeed when header is not surrounded by whitespace', async () => { const result = headerTrim(await parsed.correct); diff --git a/@commitlint/rules/src/header-trim.ts b/@commitlint/rules/src/header-trim.ts index def49b3b6c..42e030f270 100644 --- a/@commitlint/rules/src/header-trim.ts +++ b/@commitlint/rules/src/header-trim.ts @@ -4,8 +4,8 @@ import {SyncRule} from '@commitlint/types'; export const headerTrim: SyncRule = (parsed) => { const {header} = parsed; - const startsWithWhiteSpace = header !== header.trimStart(); - const endsWithWhiteSpace = header !== header.trimEnd(); + const startsWithWhiteSpace = header !== header?.trimStart(); + const endsWithWhiteSpace = header !== header?.trimEnd(); switch (true) { case startsWithWhiteSpace && endsWithWhiteSpace: diff --git a/@commitlint/rules/src/references-empty.test.ts b/@commitlint/rules/src/references-empty.test.ts index b638225972..2bb4202f53 100644 --- a/@commitlint/rules/src/references-empty.test.ts +++ b/@commitlint/rules/src/references-empty.test.ts @@ -1,6 +1,7 @@ import parse from '@commitlint/parse'; import {referencesEmpty} from './references-empty.js'; +// @ts-expect-error -- no typings import preset from 'conventional-changelog-angular'; const messages = { diff --git a/@commitlint/rules/src/scope-enum.test.ts b/@commitlint/rules/src/scope-enum.test.ts index c96b106b14..27749207da 100644 --- a/@commitlint/rules/src/scope-enum.test.ts +++ b/@commitlint/rules/src/scope-enum.test.ts @@ -19,7 +19,7 @@ const messagesByScope = { const {single, multiple, none} = messagesByScope; -const messages = Object.values(messagesByScope).reduce( +const messages = Object.values(messagesByScope).reduce>( (acc, curr) => ({...acc, ...curr}), {} ); diff --git a/@commitlint/rules/src/subject-exclamation-mark.test.ts b/@commitlint/rules/src/subject-exclamation-mark.test.ts index bdf078cf8b..7fc20c4eda 100644 --- a/@commitlint/rules/src/subject-exclamation-mark.test.ts +++ b/@commitlint/rules/src/subject-exclamation-mark.test.ts @@ -1,4 +1,5 @@ import parse from '@commitlint/parse'; +// @ts-expect-error -- no typings import preset from 'conventional-changelog-angular'; import {subjectExclamationMark} from './subject-exclamation-mark.js'; diff --git a/@packages/test-environment/package.json b/@packages/test-environment/package.json index 87c75a21db..289d407823 100644 --- a/@packages/test-environment/package.json +++ b/@packages/test-environment/package.json @@ -1,5 +1,5 @@ { - "name": "@commitlint/test-environment", + "name": "vitest-environment-commitlint", "type": "module", "version": "18.0.0", "description": "test environment for @commitlint", diff --git a/@packages/test-environment/src/test-environment.ts b/@packages/test-environment/src/test-environment.ts index 60bea0c612..be67cd56ff 100644 --- a/@packages/test-environment/src/test-environment.ts +++ b/@packages/test-environment/src/test-environment.ts @@ -1,15 +1,24 @@ // https://github.com/raszi/node-tmp/issues/229 -import {TestEnvironment as NodeEnvironment} from 'jest-environment-node'; -import tmp from 'tmp'; -class TestEnvironment extends NodeEnvironment { - async setup() { - await super.setup(); +import type {Environment} from 'vitest'; +import {builtinEnvironments} from 'vitest/environments'; +import tmp from 'tmp'; - tmp.setGracefulCleanup(); +const nodeEnv = builtinEnvironments.node; - this.global.tmp = tmp; - } -} +const env: Environment = { + ...nodeEnv, + name: 'commitlint', + async setup(global: object, options: Record) { + const setupEnv = await nodeEnv.setup(global, options); + return { + ...setupEnv, + teardown(global: unknown) { + tmp.setGracefulCleanup(); + return setupEnv.teardown(global); + }, + }; + }, +}; -export default TestEnvironment; +export default env; diff --git a/@packages/test/src/fix.ts b/@packages/test/src/fix.ts index 1dabb9dc65..95bd7983a2 100644 --- a/@packages/test/src/fix.ts +++ b/@packages/test/src/fix.ts @@ -2,10 +2,7 @@ import path from 'path'; import fs from 'fs-extra'; import pkgDir from 'pkg-dir'; - -declare global { - var tmp: typeof import('tmp'); -} +import tmp from 'tmp'; export async function bootstrap(fixture?: string, directory?: string) { const tmpDir = tmp.dirSync({ diff --git a/auto-imports.d.ts b/auto-imports.d.ts new file mode 100644 index 0000000000..13dd447e32 --- /dev/null +++ b/auto-imports.d.ts @@ -0,0 +1,21 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// noinspection JSUnusedGlobalSymbols +// Generated by unplugin-auto-import +export {} +declare global { + const afterAll: typeof import('vitest')['afterAll'] + const afterEach: typeof import('vitest')['afterEach'] + const assert: typeof import('vitest')['assert'] + const beforeAll: typeof import('vitest')['beforeAll'] + const beforeEach: typeof import('vitest')['beforeEach'] + const chai: typeof import('vitest')['chai'] + const describe: typeof import('vitest')['describe'] + const expect: typeof import('vitest')['expect'] + const it: typeof import('vitest')['it'] + const suite: typeof import('vitest')['suite'] + const test: typeof import('vitest')['test'] + const vi: typeof import('vitest')['vi'] + const vitest: typeof import('vitest')['vitest'] +} diff --git a/docs/guides-ci-setup.md b/docs/guides-ci-setup.md index d98cbe1530..d05ee569c2 100644 --- a/docs/guides-ci-setup.md +++ b/docs/guides-ci-setup.md @@ -121,7 +121,7 @@ workflows: ## GitLab CI ```yaml -stages: ["lint","build","test"] +stages: ['lint', 'build', 'test'] lint:commit: image: registry.hub.docker.com/library/node:alpine stage: lint @@ -135,11 +135,11 @@ lint:commit: ## GitLab CI with pre-build container ```yaml -stages: ["lint","build","test"] +stages: ['lint', 'build', 'test'] lint:commit: image: name: registry.hub.docker.com/commitlint/commitlint:latest - entrypoint: [""] + entrypoint: [''] stage: lint script: - echo "${CI_COMMIT_MESSAGE}" | commitlint diff --git a/docs/index.html b/docs/index.html index 5a6e0e9a20..295a13e89d 100644 --- a/docs/index.html +++ b/docs/index.html @@ -126,8 +126,8 @@ subMaxLevel: 2, search: { paths: 'auto', - placeholder: 'Search' - } + placeholder: 'Search', + }, }; diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index fda9808ee8..0000000000 --- a/jest.config.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * @type {import('@jest/types').Config.InitialOptions} - */ -export default { - extensionsToTreatAsEsm: ['.ts'], - moduleNameMapper: { - '^(\\.{1,2}/.*)\\.js$': '$1', - }, - transform: { - '^.+\\.(t|j)s?$': ['@swc/jest'], - }, - testEnvironment: '@commitlint/test-environment', - testRegex: undefined, - testMatch: ['**/*.test.[jt]s?(x)'], -}; diff --git a/license.md b/license.md deleted file mode 100644 index 9f7de65293..0000000000 --- a/license.md +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2016 - present Mario Nebl - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/package.json b/package.json index 049ff207b4..26a2b4d6ee 100644 --- a/package.json +++ b/package.json @@ -20,14 +20,14 @@ "publish": "lerna publish --conventional-commits", "reinstall": "yarn clean && yarn install", "start": "yarn watch", - "test": "cross-env HOME=$PWD NODE_OPTIONS=--experimental-vm-modules jest", + "test": "yarn build && cross-env HOME=$PWD LANG=en_US.UTF-8 NO_COLOR=1 vitest run --coverage", "test-ci": "yarn test --runInBand", "prepare": "husky" }, "commitlint": { "extends": [ - "./@commitlint/config-conventional", - "./@commitlint/config-lerna-scopes" + "@commitlint/config-conventional", + "@commitlint/config-lerna-scopes" ] }, "prettier": { @@ -86,10 +86,9 @@ "devDependencies": { "@lerna/project": "^6.0.0", "@swc/core": "^1.3.93", - "@swc/jest": "^0.2.28", - "@types/jest": "^29.5.11", "@typescript-eslint/eslint-plugin": "^6.8.0", "@typescript-eslint/parser": "^6.8.0", + "@vitest/coverage-istanbul": "^1.2.2", "cross-env": "^7.0.3", "docsify-cli": "^4.4.3", "eslint": "^8.46.0", @@ -97,10 +96,11 @@ "eslint-plugin-import": "^2.28.0", "eslint-plugin-jest": "^27.2.3", "husky": "^9.0.6", - "jest": "^29.7.0", "lerna": "^6.0.0", "lint-staged": "15.2.0", "prettier": "^2.8.8", - "typescript": "^5.2.2" + "typescript": "^5.2.2", + "unplugin-auto-import": "^0.17.5", + "vitest": "^1.2.2" } } diff --git a/tsconfig.json b/tsconfig.json index 0b126bbc7f..f28ada80f5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,11 @@ { - "files": [], - "include": [], "extends": "./tsconfig.shared.json", + "files": [], + "include": ["./auto-imports.d.ts", "./**/*.test.ts", "./**/*-test.ts"], + "exclude": ["./**/lib/*.ts"], + "compilerOptions": { + "noEmit": true + }, "references": [ {"path": "@packages/test-environment"}, {"path": "@packages/test"}, diff --git a/vitest.config.ts b/vitest.config.ts new file mode 100644 index 0000000000..d9778a91bf --- /dev/null +++ b/vitest.config.ts @@ -0,0 +1,17 @@ +import autoImport from 'unplugin-auto-import/vite'; +import {defineConfig} from 'vitest/config'; + +export default defineConfig({ + plugins: [ + autoImport({ + imports: ['vitest'], + }), + ], + test: { + exclude: ['**/node_modules/**', '**/lib/*.test.js'], + environment: 'commitlint', + coverage: { + provider: 'istanbul', + }, + }, +}); diff --git a/yarn.lock b/yarn.lock index 3de5a104b5..41848e5708 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15,6 +15,11 @@ "@jridgewell/gen-mapping" "^0.3.0" "@jridgewell/trace-mapping" "^0.3.9" +"@antfu/utils@^0.7.7": + version "0.7.7" + resolved "https://registry.npmjs.org/@antfu/utils/-/utils-0.7.7.tgz#26ea493a831b4f3a85475e7157be02fb4eab51fb" + integrity sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg== + "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.22.13": version "7.23.5" resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz" @@ -127,10 +132,10 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-string-parser@^7.22.5": - version "7.22.5" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz" - integrity sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw== +"@babel/helper-string-parser@^7.23.4": + version "7.23.4" + resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz#9478c707febcbbe1ddb38a3d91a2e054ae622d83" + integrity sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ== "@babel/helper-validator-identifier@^7.22.20": version "7.22.20" @@ -160,10 +165,10 @@ chalk "^2.4.2" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0": - version "7.23.0" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz" - integrity sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw== +"@babel/parser@^7.14.7", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0", "@babel/parser@^7.23.6": + version "7.23.9" + resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" + integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -263,7 +268,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" -"@babel/template@^7.22.15", "@babel/template@^7.3.3": +"@babel/template@^7.22.15": version "7.22.15" resolved "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz" integrity sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w== @@ -288,19 +293,129 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.3.3": - version "7.23.0" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz" - integrity sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg== +"@babel/types@^7.22.15", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.6", "@babel/types@^7.3.3": + version "7.23.9" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.23.9.tgz#1dd7b59a9a2b5c87f8b41e52770b5ecbf492e002" + integrity sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q== dependencies: - "@babel/helper-string-parser" "^7.22.5" + "@babel/helper-string-parser" "^7.23.4" "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" -"@bcoe/v8-coverage@^0.2.3": - version "0.2.3" - resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz" - integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@esbuild/aix-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" + integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== + +"@esbuild/android-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" + integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== + +"@esbuild/android-arm@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" + integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== + +"@esbuild/android-x64@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" + integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== + +"@esbuild/darwin-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e" + integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== + +"@esbuild/darwin-x64@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd" + integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A== + +"@esbuild/freebsd-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" + integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== + +"@esbuild/freebsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" + integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== + +"@esbuild/linux-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" + integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== + +"@esbuild/linux-arm@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" + integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== + +"@esbuild/linux-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" + integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== + +"@esbuild/linux-loong64@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" + integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== + +"@esbuild/linux-mips64el@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" + integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== + +"@esbuild/linux-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" + integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== + +"@esbuild/linux-riscv64@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" + integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== + +"@esbuild/linux-s390x@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" + integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== + +"@esbuild/linux-x64@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" + integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== + +"@esbuild/netbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" + integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== + +"@esbuild/openbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" + integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== + +"@esbuild/sunos-x64@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" + integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== + +"@esbuild/win32-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" + integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== + +"@esbuild/win32-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" + integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== + +"@esbuild/win32-x64@0.19.12": + version "0.19.12" + resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" + integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" @@ -389,59 +504,6 @@ resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== -"@jest/console@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz" - integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg== - dependencies: - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - -"@jest/core@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz" - integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg== - dependencies: - "@jest/console" "^29.7.0" - "@jest/reporters" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - ci-info "^3.2.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-changed-files "^29.7.0" - jest-config "^29.7.0" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-resolve-dependencies "^29.7.0" - jest-runner "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - jest-watcher "^29.7.0" - micromatch "^4.0.4" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-ansi "^6.0.0" - -"@jest/create-cache-key-function@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz#793be38148fab78e65f40ae30c36785f4ad859f0" - integrity sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA== - dependencies: - "@jest/types" "^29.6.3" - "@jest/environment@^29.7.0": version "29.7.0" resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz" @@ -489,36 +551,6 @@ "@jest/types" "^29.6.3" jest-mock "^29.7.0" -"@jest/reporters@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz" - integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg== - dependencies: - "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@jridgewell/trace-mapping" "^0.3.18" - "@types/node" "*" - chalk "^4.0.0" - collect-v8-coverage "^1.0.0" - exit "^0.1.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^6.0.0" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.1.3" - jest-message-util "^29.7.0" - jest-util "^29.7.0" - jest-worker "^29.7.0" - slash "^3.0.0" - string-length "^4.0.1" - strip-ansi "^6.0.0" - v8-to-istanbul "^9.0.1" - "@jest/schemas@^29.6.3": version "29.6.3" resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz" @@ -526,35 +558,6 @@ dependencies: "@sinclair/typebox" "^0.27.8" -"@jest/source-map@^29.6.3": - version "29.6.3" - resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz" - integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw== - dependencies: - "@jridgewell/trace-mapping" "^0.3.18" - callsites "^3.0.0" - graceful-fs "^4.2.9" - -"@jest/test-result@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz" - integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA== - dependencies: - "@jest/console" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/istanbul-lib-coverage" "^2.0.0" - collect-v8-coverage "^1.0.0" - -"@jest/test-sequencer@^29.7.0": - version "29.7.0" - resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz" - integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw== - dependencies: - "@jest/test-result" "^29.7.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - slash "^3.0.0" - "@jest/transform@^29.7.0": version "29.7.0" resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz" @@ -607,12 +610,12 @@ resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": version "0.3.19" resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz" integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== @@ -1674,6 +1677,80 @@ write-file-atomic "^5.0.0" write-yaml-file "^4.2.0" +"@rollup/pluginutils@^5.1.0": + version "5.1.0" + resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" + integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + +"@rollup/rollup-android-arm-eabi@4.9.6": + version "4.9.6" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.6.tgz#66b8d9cb2b3a474d115500f9ebaf43e2126fe496" + integrity sha512-MVNXSSYN6QXOulbHpLMKYi60ppyO13W9my1qogeiAqtjb2yR4LSmfU2+POvDkLzhjYLXz9Rf9+9a3zFHW1Lecg== + +"@rollup/rollup-android-arm64@4.9.6": + version "4.9.6" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.6.tgz#46327d5b86420d2307946bec1535fdf00356e47d" + integrity sha512-T14aNLpqJ5wzKNf5jEDpv5zgyIqcpn1MlwCrUXLrwoADr2RkWA0vOWP4XxbO9aiO3dvMCQICZdKeDrFl7UMClw== + +"@rollup/rollup-darwin-arm64@4.9.6": + version "4.9.6" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.6.tgz#166987224d2f8b1e2fd28ee90c447d52271d5e90" + integrity sha512-CqNNAyhRkTbo8VVZ5R85X73H3R5NX9ONnKbXuHisGWC0qRbTTxnF1U4V9NafzJbgGM0sHZpdO83pLPzq8uOZFw== + +"@rollup/rollup-darwin-x64@4.9.6": + version "4.9.6" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.6.tgz#a2e6e096f74ccea6e2f174454c26aef6bcdd1274" + integrity sha512-zRDtdJuRvA1dc9Mp6BWYqAsU5oeLixdfUvkTHuiYOHwqYuQ4YgSmi6+/lPvSsqc/I0Omw3DdICx4Tfacdzmhog== + +"@rollup/rollup-linux-arm-gnueabihf@4.9.6": + version "4.9.6" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.6.tgz#09fcd4c55a2d6160c5865fec708a8e5287f30515" + integrity sha512-oNk8YXDDnNyG4qlNb6is1ojTOGL/tRhbbKeE/YuccItzerEZT68Z9gHrY3ROh7axDc974+zYAPxK5SH0j/G+QQ== + +"@rollup/rollup-linux-arm64-gnu@4.9.6": + version "4.9.6" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.6.tgz#19a3c0b6315c747ca9acf86e9b710cc2440f83c9" + integrity sha512-Z3O60yxPtuCYobrtzjo0wlmvDdx2qZfeAWTyfOjEDqd08kthDKexLpV97KfAeUXPosENKd8uyJMRDfFMxcYkDQ== + +"@rollup/rollup-linux-arm64-musl@4.9.6": + version "4.9.6" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.6.tgz#94aaf95fdaf2ad9335983a4552759f98e6b2e850" + integrity sha512-gpiG0qQJNdYEVad+1iAsGAbgAnZ8j07FapmnIAQgODKcOTjLEWM9sRb+MbQyVsYCnA0Im6M6QIq6ax7liws6eQ== + +"@rollup/rollup-linux-riscv64-gnu@4.9.6": + version "4.9.6" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.6.tgz#160510e63f4b12618af4013bddf1761cf9fc9880" + integrity sha512-+uCOcvVmFUYvVDr27aiyun9WgZk0tXe7ThuzoUTAukZJOwS5MrGbmSlNOhx1j80GdpqbOty05XqSl5w4dQvcOA== + +"@rollup/rollup-linux-x64-gnu@4.9.6": + version "4.9.6" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.6.tgz#5ac5d068ce0726bd0a96ca260d5bd93721c0cb98" + integrity sha512-HUNqM32dGzfBKuaDUBqFB7tP6VMN74eLZ33Q9Y1TBqRDn+qDonkAUyKWwF9BR9unV7QUzffLnz9GrnKvMqC/fw== + +"@rollup/rollup-linux-x64-musl@4.9.6": + version "4.9.6" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.6.tgz#bafa759ab43e8eab9edf242a8259ffb4f2a57a5d" + integrity sha512-ch7M+9Tr5R4FK40FHQk8VnML0Szi2KRujUgHXd/HjuH9ifH72GUmw6lStZBo3c3GB82vHa0ZoUfjfcM7JiiMrQ== + +"@rollup/rollup-win32-arm64-msvc@4.9.6": + version "4.9.6" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.6.tgz#1cc3416682e5a20d8f088f26657e6e47f8db468e" + integrity sha512-VD6qnR99dhmTQ1mJhIzXsRcTBvTjbfbGGwKAHcu+52cVl15AC/kplkhxzW/uT0Xl62Y/meBKDZvoJSJN+vTeGA== + +"@rollup/rollup-win32-ia32-msvc@4.9.6": + version "4.9.6" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.6.tgz#7d2251e1aa5e8a1e47c86891fe4547a939503461" + integrity sha512-J9AFDq/xiRI58eR2NIDfyVmTYGyIZmRcvcAoJ48oDld/NTR8wyiPUu2X/v1navJ+N/FGg68LEbX3Ejd6l8B7MQ== + +"@rollup/rollup-win32-x64-msvc@4.9.6": + version "4.9.6" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.6.tgz#2c1fb69e02a3f1506f52698cfdc3a8b6386df9a6" + integrity sha512-jqzNLhNDvIZOrt69Ce4UjGRpXJBzhUBzawMwnaDAwyHriki3XollsewxWzOzz+4yOFDkuJHtTsZFwMxhYJWmLQ== + "@sinclair/typebox@^0.27.8": version "0.27.8" resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz" @@ -1772,14 +1849,6 @@ resolved "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz" integrity sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw== -"@swc/jest@^0.2.28": - version "0.2.29" - resolved "https://registry.npmjs.org/@swc/jest/-/jest-0.2.29.tgz" - integrity sha512-8reh5RvHBsSikDC3WGCd5ZTd2BXKkyOdK7QwynrCH58jk2cQFhhHhFBg/jvnWZehUQe/EoOImLENc9/DwbBFow== - dependencies: - "@jest/create-cache-key-function" "^27.4.2" - jsonc-parser "^3.2.0" - "@swc/types@^0.1.5": version "0.1.5" resolved "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz" @@ -1797,39 +1866,6 @@ resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz" integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== -"@types/babel__core@^7.1.14": - version "7.20.2" - resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.2.tgz" - integrity sha512-pNpr1T1xLUc2l3xJKuPtsEky3ybxN3m4fJkknfIpTCTfIZCDW57oAg+EfCgIIp2rvCe0Wn++/FfodDS4YXxBwA== - dependencies: - "@babel/parser" "^7.20.7" - "@babel/types" "^7.20.7" - "@types/babel__generator" "*" - "@types/babel__template" "*" - "@types/babel__traverse" "*" - -"@types/babel__generator@*": - version "7.6.5" - resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.5.tgz" - integrity sha512-h9yIuWbJKdOPLJTbmSpPzkF67e659PbQDba7ifWm5BJ8xTv+sDmS7rFmywkWOvXedGTivCdeGSIIX8WLcRTz8w== - dependencies: - "@babel/types" "^7.0.0" - -"@types/babel__template@*": - version "7.4.2" - resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.2.tgz" - integrity sha512-/AVzPICMhMOMYoSx9MoKpGDKdBRsIXMNByh1PXSZoa+v6ZoLa8xxtsT/uLQ/NJm0XVAWl/BvId4MlDeXJaeIZQ== - dependencies: - "@babel/parser" "^7.1.0" - "@babel/types" "^7.0.0" - -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.20.2" - resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.2.tgz" - integrity sha512-ojlGK1Hsfce93J0+kn3H5R73elidKUaZonirN33GSmgTUMpzI/MIFfSpF3haANe3G1bEBS9/9/QEqwTzwqFsKw== - dependencies: - "@babel/types" "^7.20.7" - "@types/conventional-commits-parser@^3.0.6": version "3.0.6" resolved "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-3.0.6.tgz" @@ -1837,6 +1873,11 @@ dependencies: "@types/node" "*" +"@types/estree@1.0.5", "@types/estree@^1.0.0": + version "1.0.5" + resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + "@types/fs-extra@^11.0.3": version "11.0.4" resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz" @@ -1875,7 +1916,7 @@ "@types/through" "*" rxjs "^7.2.0" -"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": version "2.0.6" resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz" integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== @@ -1894,14 +1935,6 @@ dependencies: "@types/istanbul-lib-report" "*" -"@types/jest@^29.5.11": - version "29.5.11" - resolved "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz#0c13aa0da7d0929f078ab080ae5d4ced80fa2f2c" - integrity sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ== - dependencies: - expect "^29.0.0" - pretty-format "^29.0.0" - "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" @@ -2116,21 +2149,21 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@6.19.1": - version "6.19.1" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.19.1.tgz#2f527ee30703a6169a52b31d42a1103d80acd51b" - integrity sha512-4CdXYjKf6/6aKNMSly/BP4iCSOpvMmqtDzRtqFyyAae3z5kkqEjKndR5vDHL8rSuMIIWP8u4Mw4VxLyxZW6D5w== +"@typescript-eslint/scope-manager@6.18.1": + version "6.18.1" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.18.1.tgz#28c31c60f6e5827996aa3560a538693cb4bd3848" + integrity sha512-BgdBwXPFmZzaZUuw6wKiHKIovms97a7eTImjkXCZE04TGHysG+0hDQPmygyvgtkoB/aOQwSM/nWv3LzrOIQOBw== dependencies: - "@typescript-eslint/types" "6.19.1" - "@typescript-eslint/visitor-keys" "6.19.1" + "@typescript-eslint/types" "6.18.1" + "@typescript-eslint/visitor-keys" "6.18.1" -"@typescript-eslint/type-utils@6.19.1": - version "6.19.1" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.19.1.tgz#6a130e3afe605a4898e043fa9f72e96309b54935" - integrity sha512-0vdyld3ecfxJuddDjACUvlAeYNrHP/pDeQk2pWBR2ESeEzQhg52DF53AbI9QCBkYE23lgkhLCZNkHn2hEXXYIg== +"@typescript-eslint/type-utils@6.18.1": + version "6.18.1" + resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.18.1.tgz#115cf535f8b39db8301677199ce51151e2daee96" + integrity sha512-wyOSKhuzHeU/5pcRDP2G2Ndci+4g653V43gXTpt4nbyoIOAASkGDA9JIAgbQCdCkcr1MvpSYWzxTz0olCn8+/Q== dependencies: - "@typescript-eslint/typescript-estree" "6.19.1" - "@typescript-eslint/utils" "6.19.1" + "@typescript-eslint/typescript-estree" "6.18.1" + "@typescript-eslint/utils" "6.18.1" debug "^4.3.4" ts-api-utils "^1.0.1" @@ -2139,10 +2172,10 @@ resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@6.19.1": - version "6.19.1" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.19.1.tgz#2d4c9d492a63ede15e7ba7d129bdf7714b77f771" - integrity sha512-6+bk6FEtBhvfYvpHsDgAL3uo4BfvnTnoge5LrrCj2eJN8g3IJdLTD4B/jK3Q6vo4Ql/Hoip9I8aB6fF+6RfDqg== +"@typescript-eslint/types@6.18.1": + version "6.18.1" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.18.1.tgz#91617d8080bcd99ac355d9157079970d1d49fefc" + integrity sha512-4TuMAe+tc5oA7wwfqMtB0Y5OrREPF1GeJBAjqwgZh1lEMH5PJQgWgHGfYufVB51LtjD+peZylmeyxUXPfENLCw== "@typescript-eslint/typescript-estree@5.62.0": version "5.62.0" @@ -2157,13 +2190,13 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@6.19.1": - version "6.19.1" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.19.1.tgz#796d88d88882f12e85bb33d6d82d39e1aea54ed1" - integrity sha512-aFdAxuhzBFRWhy+H20nYu19+Km+gFfwNO4TEqyszkMcgBDYQjmPJ61erHxuT2ESJXhlhrO7I5EFIlZ+qGR8oVA== +"@typescript-eslint/typescript-estree@6.18.1": + version "6.18.1" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.18.1.tgz#a12b6440175b4cbc9d09ab3c4966c6b245215ab4" + integrity sha512-fv9B94UAhywPRhUeeV/v+3SBDvcPiLxRZJw/xZeeGgRLQZ6rLMG+8krrJUyIf6s1ecWTzlsbp0rlw7n9sjufHA== dependencies: - "@typescript-eslint/types" "6.19.1" - "@typescript-eslint/visitor-keys" "6.19.1" + "@typescript-eslint/types" "6.18.1" + "@typescript-eslint/visitor-keys" "6.18.1" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -2171,17 +2204,17 @@ semver "^7.5.4" ts-api-utils "^1.0.1" -"@typescript-eslint/utils@6.19.1": - version "6.19.1" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.19.1.tgz#df93497f9cfddde2bcc2a591da80536e68acd151" - integrity sha512-JvjfEZuP5WoMqwh9SPAPDSHSg9FBHHGhjPugSRxu5jMfjvBpq5/sGTD+9M9aQ5sh6iJ8AY/Kk/oUYVEMAPwi7w== +"@typescript-eslint/utils@6.18.1": + version "6.18.1" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.18.1.tgz#3451cfe2e56babb6ac657e10b6703393d4b82955" + integrity sha512-zZmTuVZvD1wpoceHvoQpOiewmWu3uP9FuTWo8vqpy2ffsmfCE8mklRPi+vmnIYAIk9t/4kOThri2QCDgor+OpQ== dependencies: "@eslint-community/eslint-utils" "^4.4.0" "@types/json-schema" "^7.0.12" "@types/semver" "^7.5.0" - "@typescript-eslint/scope-manager" "6.19.1" - "@typescript-eslint/types" "6.19.1" - "@typescript-eslint/typescript-estree" "6.19.1" + "@typescript-eslint/scope-manager" "6.18.1" + "@typescript-eslint/types" "6.18.1" + "@typescript-eslint/typescript-estree" "6.18.1" semver "^7.5.4" "@typescript-eslint/utils@^5.10.0": @@ -2206,12 +2239,12 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@6.19.1": - version "6.19.1" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.19.1.tgz#2164073ed4fc34a5ff3b5e25bb5a442100454c4c" - integrity sha512-gkdtIO+xSO/SmI0W68DBg4u1KElmIUo3vXzgHyGPs6cxgB0sa3TlptRAAE0hUY1hM6FcDKEv7aIwiTGm76cXfQ== +"@typescript-eslint/visitor-keys@6.18.1": + version "6.18.1" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.18.1.tgz#704d789bda2565a15475e7d22f145b8fe77443f4" + integrity sha512-/kvt0C5lRqGoCfsbmm7/CwMqoSkY3zzHLIjdhHZQW3VFrnz7ATecOHR7nb7V+xn4286MBxfnQfQhAmCI0u+bJA== dependencies: - "@typescript-eslint/types" "6.19.1" + "@typescript-eslint/types" "6.18.1" eslint-visitor-keys "^3.4.1" "@ungap/structured-clone@^1.2.0": @@ -2219,6 +2252,65 @@ resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz" integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== +"@vitest/coverage-istanbul@^1.2.2": + version "1.2.2" + resolved "https://registry.npmjs.org/@vitest/coverage-istanbul/-/coverage-istanbul-1.2.2.tgz#e65f4bcf532195bf5d8c6f60a0e10c3aef01618d" + integrity sha512-tJybwO8JT4H9ANz0T0/tJ1M5g3BkuHKYF1w5YO3z9sAiHBdGANrxN9c5lomJx1WSnLzCxQR5xxlJ4TLKbzrR3w== + dependencies: + debug "^4.3.4" + istanbul-lib-coverage "^3.2.2" + istanbul-lib-instrument "^6.0.1" + istanbul-lib-report "^3.0.1" + istanbul-lib-source-maps "^4.0.1" + istanbul-reports "^3.1.6" + magicast "^0.3.3" + picocolors "^1.0.0" + test-exclude "^6.0.0" + +"@vitest/expect@1.2.2": + version "1.2.2" + resolved "https://registry.npmjs.org/@vitest/expect/-/expect-1.2.2.tgz#39ea22e849bbf404b7e5272786551aa99e2663d0" + integrity sha512-3jpcdPAD7LwHUUiT2pZTj2U82I2Tcgg2oVPvKxhn6mDI2On6tfvPQTjAI4628GUGDZrCm4Zna9iQHm5cEexOAg== + dependencies: + "@vitest/spy" "1.2.2" + "@vitest/utils" "1.2.2" + chai "^4.3.10" + +"@vitest/runner@1.2.2": + version "1.2.2" + resolved "https://registry.npmjs.org/@vitest/runner/-/runner-1.2.2.tgz#8b060a56ecf8b3d607b044d79f5f50d3cd9fee2f" + integrity sha512-JctG7QZ4LSDXr5CsUweFgcpEvrcxOV1Gft7uHrvkQ+fsAVylmWQvnaAr/HDp3LAH1fztGMQZugIheTWjaGzYIg== + dependencies: + "@vitest/utils" "1.2.2" + p-limit "^5.0.0" + pathe "^1.1.1" + +"@vitest/snapshot@1.2.2": + version "1.2.2" + resolved "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.2.2.tgz#f56fd575569774968f3eeba9382a166c26201042" + integrity sha512-SmGY4saEw1+bwE1th6S/cZmPxz/Q4JWsl7LvbQIky2tKE35US4gd0Mjzqfr84/4OD0tikGWaWdMja/nWL5NIPA== + dependencies: + magic-string "^0.30.5" + pathe "^1.1.1" + pretty-format "^29.7.0" + +"@vitest/spy@1.2.2": + version "1.2.2" + resolved "https://registry.npmjs.org/@vitest/spy/-/spy-1.2.2.tgz#8fc2aeccb96cecbbdd192c643729bd5f97a01c86" + integrity sha512-k9Gcahssw8d7X3pSLq3e3XEu/0L78mUkCjivUqCQeXJm9clfXR/Td8+AP+VC1O6fKPIDLcHDTAmBOINVuv6+7g== + dependencies: + tinyspy "^2.2.0" + +"@vitest/utils@1.2.2": + version "1.2.2" + resolved "https://registry.npmjs.org/@vitest/utils/-/utils-1.2.2.tgz#94b5a1bd8745ac28cf220a99a8719efea1bcfc83" + integrity sha512-WKITBHLsBHlpjnDQahr+XK6RE7MiAsgrIkr0pGhQ9ygoxBfUeG0lUG5iLlzqjmKSlBv3+j5EGsriBzh+C3Tq9g== + dependencies: + diff-sequences "^29.6.3" + estree-walker "^3.0.3" + loupe "^2.3.7" + pretty-format "^29.7.0" + "@yarnpkg/lockfile@^1.1.0": version "1.1.0" resolved "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz" @@ -2257,10 +2349,15 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.9.0: - version "8.11.2" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz" - integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== +acorn-walk@^8.3.2: + version "8.3.2" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa" + integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A== + +acorn@^8.10.0, acorn@^8.11.2, acorn@^8.11.3, acorn@^8.9.0: + version "8.11.3" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" + integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== add-stream@^1.0.0: version "1.0.0" @@ -2507,6 +2604,11 @@ asap@^2.0.0: resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + async@^3.2.3: version "3.2.4" resolved "https://registry.npmjs.org/async/-/async-3.2.4.tgz" @@ -2541,19 +2643,6 @@ b4a@^1.6.4: resolved "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz" integrity sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw== -babel-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz" - integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg== - dependencies: - "@jest/transform" "^29.7.0" - "@types/babel__core" "^7.1.14" - babel-plugin-istanbul "^6.1.1" - babel-preset-jest "^29.6.3" - chalk "^4.0.0" - graceful-fs "^4.2.9" - slash "^3.0.0" - babel-plugin-istanbul@^6.1.1: version "6.1.1" resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz" @@ -2565,16 +2654,6 @@ babel-plugin-istanbul@^6.1.1: istanbul-lib-instrument "^5.0.4" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^29.6.3: - version "29.6.3" - resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz" - integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg== - dependencies: - "@babel/template" "^7.3.3" - "@babel/types" "^7.3.3" - "@types/babel__core" "^7.1.14" - "@types/babel__traverse" "^7.0.6" - babel-preset-current-node-syntax@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz" @@ -2593,14 +2672,6 @@ babel-preset-current-node-syntax@^1.0.0: "@babel/plugin-syntax-optional-chaining" "^7.8.3" "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^29.6.3: - version "29.6.3" - resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz" - integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA== - dependencies: - babel-plugin-jest-hoist "^29.6.3" - babel-preset-current-node-syntax "^1.0.0" - balanced-match@^1.0.0: version "1.0.2" resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" @@ -2725,6 +2796,11 @@ byte-size@^7.0.0: resolved "https://registry.npmjs.org/byte-size/-/byte-size-7.0.1.tgz" integrity sha512-crQdqyCwhokxwV1UyDzLZanhkugAgft7vt0qbbdt60C6Zf3CAiGmtUCylbtYwrU6loOUw3euGrNtW1J651ot1A== +cac@^6.7.14: + version "6.7.14" + resolved "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959" + integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ== + cacache@^16.0.0, cacache@^16.0.6, cacache@^16.1.0: version "16.1.3" resolved "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz" @@ -2795,16 +2871,24 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -camelcase@^6.2.0: - version "6.3.0" - resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" - integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== - caniuse-lite@^1.0.30001541: version "1.0.30001546" resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001546.tgz" integrity sha512-zvtSJwuQFpewSyRrI3AsftF6rM0X80mZkChIt1spBGEvRglCrjTniXvinc8JKRoqTwXAgvqTImaN9igfSMtUBw== +chai@^4.3.10: + version "4.4.1" + resolved "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" + integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" + pathval "^1.1.1" + type-detect "^4.0.8" + chalk@4.1.0: version "4.1.0" resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz" @@ -2854,17 +2938,19 @@ chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1: ansi-styles "^4.1.0" supports-color "^7.1.0" -char-regex@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz" - integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== - chardet@^0.7.0: version "0.7.0" resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chokidar@^3.5.0: +check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" + +chokidar@^3.5.0, chokidar@^3.5.3: version "3.5.3" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== @@ -2894,11 +2980,6 @@ ci-info@^3.2.0: resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz" integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== -cjs-module-lexer@^1.0.0: - version "1.2.3" - resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz" - integrity sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ== - clean-stack@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" @@ -3001,16 +3082,6 @@ cmd-shim@^5.0.0: dependencies: mkdirp-infer-owner "^2.0.0" -co@^4.6.0: - version "4.6.0" - resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -collect-v8-coverage@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz" - integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" @@ -3322,19 +3393,6 @@ cp-file@^7.0.0: nested-error-stacks "^2.0.0" p-event "^4.1.0" -create-jest@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz" - integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - exit "^0.1.2" - graceful-fs "^4.2.9" - jest-config "^29.7.0" - jest-util "^29.7.0" - prompts "^2.0.1" - cross-env@^7.0.3: version "7.0.3" resolved "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz" @@ -3431,10 +3489,12 @@ dedent@0.7.0, dedent@^0.7.0: resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== -dedent@^1.0.0: - version "1.5.1" - resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz" - integrity sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg== +deep-eql@^4.1.3: + version "4.1.3" + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d" + integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw== + dependencies: + type-detect "^4.0.0" deep-extend@^0.6.0: version "0.6.0" @@ -3446,11 +3506,6 @@ deep-is@^0.1.3: resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -deepmerge@^4.2.2: - version "4.3.1" - resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz" - integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== - defaults@^1.0.3: version "1.0.4" resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz" @@ -3526,11 +3581,6 @@ detect-indent@^5.0.0: resolved "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz" integrity sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g== -detect-newline@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz" - integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== - dezalgo@^1.0.0: version "1.0.4" resolved "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz" @@ -3664,11 +3714,6 @@ electron-to-chromium@^1.4.535: resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.543.tgz" integrity sha512-t2ZP4AcGE0iKCCQCBx/K2426crYdxD3YU6l0uK2EO3FZH0pbC4pFz/sZm2ruZsND6hQBTcDWWlo/MLpiOdif5g== -emittery@^0.13.1: - version "0.13.1" - resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz" - integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== - emoji-regex@^10.3.0: version "10.3.0" resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz" @@ -3797,6 +3842,35 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" +esbuild@^0.19.3: + version "0.19.12" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" + integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== + optionalDependencies: + "@esbuild/aix-ppc64" "0.19.12" + "@esbuild/android-arm" "0.19.12" + "@esbuild/android-arm64" "0.19.12" + "@esbuild/android-x64" "0.19.12" + "@esbuild/darwin-arm64" "0.19.12" + "@esbuild/darwin-x64" "0.19.12" + "@esbuild/freebsd-arm64" "0.19.12" + "@esbuild/freebsd-x64" "0.19.12" + "@esbuild/linux-arm" "0.19.12" + "@esbuild/linux-arm64" "0.19.12" + "@esbuild/linux-ia32" "0.19.12" + "@esbuild/linux-loong64" "0.19.12" + "@esbuild/linux-mips64el" "0.19.12" + "@esbuild/linux-ppc64" "0.19.12" + "@esbuild/linux-riscv64" "0.19.12" + "@esbuild/linux-s390x" "0.19.12" + "@esbuild/linux-x64" "0.19.12" + "@esbuild/netbsd-x64" "0.19.12" + "@esbuild/openbsd-x64" "0.19.12" + "@esbuild/sunos-x64" "0.19.12" + "@esbuild/win32-arm64" "0.19.12" + "@esbuild/win32-ia32" "0.19.12" + "@esbuild/win32-x64" "0.19.12" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" @@ -3986,6 +4060,18 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +estree-walker@^3.0.3: + version "3.0.3" + resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" + integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + dependencies: + "@types/estree" "^1.0.0" + esutils@^2.0.2: version "2.0.3" resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" @@ -4006,7 +4092,7 @@ eventemitter3@^5.0.1: resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz" integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== -execa@8.0.1: +execa@8.0.1, execa@^8.0.1: version "8.0.1" resolved "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz" integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg== @@ -4036,11 +4122,6 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" -exit@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" - integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== - expand-tilde@^2.0.0, expand-tilde@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz" @@ -4048,7 +4129,7 @@ expand-tilde@^2.0.0, expand-tilde@^2.0.2: dependencies: homedir-polyfill "^1.0.1" -expect@^29.0.0, expect@^29.7.0: +expect@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz" integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw== @@ -4089,7 +4170,7 @@ fast-glob@3.2.7: merge2 "^1.3.0" micromatch "^4.0.4" -fast-glob@^3.2.9, fast-glob@^3.3.1: +fast-glob@^3.2.9, fast-glob@^3.3.1, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -4319,7 +4400,7 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^2.3.2, fsevents@~2.3.2: +fsevents@^2.3.2, fsevents@~2.3.2, fsevents@~2.3.3: version "2.3.3" resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== @@ -4373,6 +4454,11 @@ get-east-asian-width@^1.0.0: resolved "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz" integrity sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA== +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== + get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.0, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: version "1.2.2" resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz" @@ -4754,7 +4840,7 @@ hosted-git-info@^7.0.0: html-escaper@^2.0.0: version "2.0.2" - resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: @@ -4869,6 +4955,11 @@ import-local@^3.0.2: pkg-dir "^4.2.0" resolve-cwd "^3.0.0" +import-meta-resolve@4.0.0, import-meta-resolve@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz#0b1195915689f60ab00f830af0f15cc841e8919e" + integrity sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA== + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" @@ -5065,11 +5156,6 @@ is-fullwidth-code-point@^5.0.0: dependencies: get-east-asian-width "^1.0.0" -is-generator-fn@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz" - integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== - is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: version "4.0.3" resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" @@ -5285,10 +5371,10 @@ isobject@^3.0.1: resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0, istanbul-lib-coverage@^3.2.2: + version "3.2.2" + resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== istanbul-lib-instrument@^5.0.4: version "5.2.1" @@ -5301,9 +5387,9 @@ istanbul-lib-instrument@^5.0.4: istanbul-lib-coverage "^3.2.0" semver "^6.3.0" -istanbul-lib-instrument@^6.0.0: +istanbul-lib-instrument@^6.0.1: version "6.0.1" - resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz" + resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz#71e87707e8041428732518c6fb5211761753fbdf" integrity sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA== dependencies: "@babel/core" "^7.12.3" @@ -5312,27 +5398,27 @@ istanbul-lib-instrument@^6.0.0: istanbul-lib-coverage "^3.2.0" semver "^7.5.4" -istanbul-lib-report@^3.0.0: +istanbul-lib-report@^3.0.0, istanbul-lib-report@^3.0.1: version "3.0.1" - resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz" + resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== dependencies: istanbul-lib-coverage "^3.0.0" make-dir "^4.0.0" supports-color "^7.1.0" -istanbul-lib-source-maps@^4.0.0: +istanbul-lib-source-maps@^4.0.1: version "4.0.1" - resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz" + resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== dependencies: debug "^4.1.1" istanbul-lib-coverage "^3.0.0" source-map "^0.6.1" -istanbul-reports@^3.1.3: +istanbul-reports@^3.1.6: version "3.1.6" - resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz" + resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz#2544bcab4768154281a2f0870471902704ccaa1a" integrity sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg== dependencies: html-escaper "^2.0.0" @@ -5348,86 +5434,6 @@ jake@^10.8.5: filelist "^1.0.1" minimatch "^3.0.4" -jest-changed-files@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz" - integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w== - dependencies: - execa "^5.0.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - -jest-circus@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz" - integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/expect" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - co "^4.6.0" - dedent "^1.0.0" - is-generator-fn "^2.0.0" - jest-each "^29.7.0" - jest-matcher-utils "^29.7.0" - jest-message-util "^29.7.0" - jest-runtime "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - p-limit "^3.1.0" - pretty-format "^29.7.0" - pure-rand "^6.0.0" - slash "^3.0.0" - stack-utils "^2.0.3" - -jest-cli@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz" - integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg== - dependencies: - "@jest/core" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - chalk "^4.0.0" - create-jest "^29.7.0" - exit "^0.1.2" - import-local "^3.0.2" - jest-config "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - yargs "^17.3.1" - -jest-config@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz" - integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ== - dependencies: - "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.7.0" - "@jest/types" "^29.6.3" - babel-jest "^29.7.0" - chalk "^4.0.0" - ci-info "^3.2.0" - deepmerge "^4.2.2" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-circus "^29.7.0" - jest-environment-node "^29.7.0" - jest-get-type "^29.6.3" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-runner "^29.7.0" - jest-util "^29.7.0" - jest-validate "^29.7.0" - micromatch "^4.0.4" - parse-json "^5.2.0" - pretty-format "^29.7.0" - slash "^3.0.0" - strip-json-comments "^3.1.1" - jest-diff@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz" @@ -5438,27 +5444,9 @@ jest-diff@^29.7.0: jest-get-type "^29.6.3" pretty-format "^29.7.0" -jest-docblock@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz" - integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g== - dependencies: - detect-newline "^3.0.0" - -jest-each@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz" - integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ== - dependencies: - "@jest/types" "^29.6.3" - chalk "^4.0.0" - jest-get-type "^29.6.3" - jest-util "^29.7.0" - pretty-format "^29.7.0" - -jest-environment-node@^29.6.2, jest-environment-node@^29.7.0: +jest-environment-node@^29.6.2: version "29.7.0" - resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz" + resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376" integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw== dependencies: "@jest/environment" "^29.7.0" @@ -5492,14 +5480,6 @@ jest-haste-map@^29.7.0: optionalDependencies: fsevents "^2.3.2" -jest-leak-detector@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz" - integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw== - dependencies: - jest-get-type "^29.6.3" - pretty-format "^29.7.0" - jest-matcher-utils@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz" @@ -5534,94 +5514,11 @@ jest-mock@^29.7.0: "@types/node" "*" jest-util "^29.7.0" -jest-pnp-resolver@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz" - integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== - jest-regex-util@^29.6.3: version "29.6.3" resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz" integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg== -jest-resolve-dependencies@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz" - integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA== - dependencies: - jest-regex-util "^29.6.3" - jest-snapshot "^29.7.0" - -jest-resolve@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz" - integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA== - dependencies: - chalk "^4.0.0" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-pnp-resolver "^1.2.2" - jest-util "^29.7.0" - jest-validate "^29.7.0" - resolve "^1.20.0" - resolve.exports "^2.0.0" - slash "^3.0.0" - -jest-runner@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz" - integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ== - dependencies: - "@jest/console" "^29.7.0" - "@jest/environment" "^29.7.0" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - emittery "^0.13.1" - graceful-fs "^4.2.9" - jest-docblock "^29.7.0" - jest-environment-node "^29.7.0" - jest-haste-map "^29.7.0" - jest-leak-detector "^29.7.0" - jest-message-util "^29.7.0" - jest-resolve "^29.7.0" - jest-runtime "^29.7.0" - jest-util "^29.7.0" - jest-watcher "^29.7.0" - jest-worker "^29.7.0" - p-limit "^3.1.0" - source-map-support "0.5.13" - -jest-runtime@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz" - integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ== - dependencies: - "@jest/environment" "^29.7.0" - "@jest/fake-timers" "^29.7.0" - "@jest/globals" "^29.7.0" - "@jest/source-map" "^29.6.3" - "@jest/test-result" "^29.7.0" - "@jest/transform" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - chalk "^4.0.0" - cjs-module-lexer "^1.0.0" - collect-v8-coverage "^1.0.0" - glob "^7.1.3" - graceful-fs "^4.2.9" - jest-haste-map "^29.7.0" - jest-message-util "^29.7.0" - jest-mock "^29.7.0" - jest-regex-util "^29.6.3" - jest-resolve "^29.7.0" - jest-snapshot "^29.7.0" - jest-util "^29.7.0" - slash "^3.0.0" - strip-bom "^4.0.0" - jest-snapshot@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz" @@ -5660,32 +5557,6 @@ jest-util@^29.7.0: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz" - integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw== - dependencies: - "@jest/types" "^29.6.3" - camelcase "^6.2.0" - chalk "^4.0.0" - jest-get-type "^29.6.3" - leven "^3.1.0" - pretty-format "^29.7.0" - -jest-watcher@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz" - integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g== - dependencies: - "@jest/test-result" "^29.7.0" - "@jest/types" "^29.6.3" - "@types/node" "*" - ansi-escapes "^4.2.1" - chalk "^4.0.0" - emittery "^0.13.1" - jest-util "^29.7.0" - string-length "^4.0.1" - jest-worker@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz" @@ -5696,16 +5567,6 @@ jest-worker@^29.7.0: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^29.7.0: - version "29.7.0" - resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613" - integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw== - dependencies: - "@jest/core" "^29.7.0" - "@jest/types" "^29.6.3" - import-local "^3.0.2" - jest-cli "^29.7.0" - jiti@^1.19.1: version "1.20.0" resolved "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz" @@ -5865,11 +5726,6 @@ kind-of@^6.0.2, kind-of@^6.0.3: resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -kleur@^3.0.3: - version "3.0.3" - resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" - integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== - latest-version@^5.0.0: version "5.1.0" resolved "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz" @@ -5908,11 +5764,6 @@ lerna@^6.0.0: nx ">=15.4.2 < 16" typescript "^3 || ^4" -leven@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz" - integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== - levn@^0.4.1: version "0.4.1" resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" @@ -6020,6 +5871,14 @@ load-json-file@^6.2.0: strip-bom "^4.0.0" type-fest "^0.6.0" +local-pkg@^0.5.0: + version "0.5.0" + resolved "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz#093d25a346bae59a99f80e75f6e9d36d7e8c925c" + integrity sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg== + dependencies: + mlly "^1.4.2" + pkg-types "^1.0.3" + locate-path@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" @@ -6131,6 +5990,13 @@ longest@^2.0.1: resolved "https://registry.npmjs.org/longest/-/longest-2.0.1.tgz" integrity sha1-eB4YMpaqlPbU2RbcM10NF676I/g= +loupe@^2.3.6, loupe@^2.3.7: + version "2.3.7" + resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== + dependencies: + get-func-name "^2.0.1" + lowercase-keys@^1.0.0, lowercase-keys@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" @@ -6165,6 +6031,22 @@ lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz" integrity sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA== +magic-string@^0.30.5: + version "0.30.5" + resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz#1994d980bd1c8835dc6e78db7cbd4ae4f24746f9" + integrity sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + +magicast@^0.3.3: + version "0.3.3" + resolved "https://registry.npmjs.org/magicast/-/magicast-0.3.3.tgz#a15760f982deec9dabc5f314e318d7c6bddcb27b" + integrity sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw== + dependencies: + "@babel/parser" "^7.23.6" + "@babel/types" "^7.23.6" + source-map-js "^1.0.2" + make-dir@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz" @@ -6182,7 +6064,7 @@ make-dir@^3.0.0: make-dir@^4.0.0: version "4.0.0" - resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz" + resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== dependencies: semver "^7.5.3" @@ -6325,7 +6207,7 @@ minimatch@3.0.5: dependencies: brace-expansion "^1.1.7" -minimatch@9.0.3: +minimatch@9.0.3, minimatch@^9.0.3: version "9.0.3" resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz" integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg== @@ -6455,6 +6337,16 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mlly@^1.2.0, mlly@^1.4.2: + version "1.5.0" + resolved "https://registry.npmjs.org/mlly/-/mlly-1.5.0.tgz#8428a4617d54cc083d3009030ac79739a0e5447a" + integrity sha512-NPVQvAY1xr1QoVeG0cy8yUYC7FQcOx6evl/RjT1wL5FvzPnzOysoqB/jmx/DhssT2dYa8nxECLAaFI/+gVLhDQ== + dependencies: + acorn "^8.11.3" + pathe "^1.1.2" + pkg-types "^1.0.3" + ufo "^1.3.2" + modify-values@^1.0.0: version "1.0.1" resolved "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz" @@ -6496,6 +6388,11 @@ mute-stream@1.0.0: resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz#e31bd9fe62f0aed23520aa4324ea6671531e013e" integrity sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA== +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" @@ -6936,13 +6833,20 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2, p-limit@^3.1.0: +p-limit@^3.0.2: version "3.1.0" resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" +p-limit@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz#6946d5b7140b649b7a33a027d89b4c625b3a5985" + integrity sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ== + dependencies: + yocto-queue "^1.0.0" + p-locate@^2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" @@ -7170,6 +7074,16 @@ path-type@^4.0.0: resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pathe@^1.1.0, pathe@^1.1.1, pathe@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" + integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz" @@ -7224,6 +7138,24 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +pkg-types@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868" + integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A== + dependencies: + jsonc-parser "^3.2.0" + mlly "^1.2.0" + pathe "^1.1.0" + +postcss@^8.4.32: + version "8.4.33" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz#1378e859c9f69bf6f638b990a0212f43e2aaa742" + integrity sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.0.2" + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" @@ -7239,7 +7171,7 @@ prettier@^2.8.8: resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== -pretty-format@^29.0.0, pretty-format@^29.7.0: +pretty-format@^29.7.0: version "29.7.0" resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz" integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ== @@ -7286,14 +7218,6 @@ promise-retry@^2.0.1: err-code "^2.0.2" retry "^0.12.0" -prompts@^2.0.1: - version "2.4.2" - resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" - integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== - dependencies: - kleur "^3.0.3" - sisteransi "^1.0.5" - promzard@^0.3.0: version "0.3.0" resolved "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz" @@ -7336,11 +7260,6 @@ pupa@^2.0.1: dependencies: escape-goat "^2.0.0" -pure-rand@^6.0.0: - version "6.0.4" - resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz" - integrity sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA== - q@^1.5.1: version "1.5.1" resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz" @@ -7595,12 +7514,7 @@ resolve-pkg@2.0.0: dependencies: resolve-from "^5.0.0" -resolve.exports@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz" - integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg== - -resolve@^1.10.0, resolve@^1.20.0, resolve@^1.22.4: +resolve@^1.10.0, resolve@^1.22.4: version "1.22.8" resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== @@ -7654,6 +7568,28 @@ rimraf@^3.0.0, rimraf@^3.0.2: dependencies: glob "^7.1.3" +rollup@^4.2.0: + version "4.9.6" + resolved "https://registry.npmjs.org/rollup/-/rollup-4.9.6.tgz#4515facb0318ecca254a2ee1315e22e09efc50a0" + integrity sha512-05lzkCS2uASX0CiLFybYfVkwNbKZG5NFQ6Go0VWyogFTXXbR039UVsegViTntkk4OglHBdF54ccApXRRuXRbsg== + dependencies: + "@types/estree" "1.0.5" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.9.6" + "@rollup/rollup-android-arm64" "4.9.6" + "@rollup/rollup-darwin-arm64" "4.9.6" + "@rollup/rollup-darwin-x64" "4.9.6" + "@rollup/rollup-linux-arm-gnueabihf" "4.9.6" + "@rollup/rollup-linux-arm64-gnu" "4.9.6" + "@rollup/rollup-linux-arm64-musl" "4.9.6" + "@rollup/rollup-linux-riscv64-gnu" "4.9.6" + "@rollup/rollup-linux-x64-gnu" "4.9.6" + "@rollup/rollup-linux-x64-musl" "4.9.6" + "@rollup/rollup-win32-arm64-msvc" "4.9.6" + "@rollup/rollup-win32-ia32-msvc" "4.9.6" + "@rollup/rollup-win32-x64-msvc" "4.9.6" + fsevents "~2.3.2" + run-async@^2.4.0: version "2.4.1" resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz" @@ -7707,6 +7643,11 @@ safe-regex-test@^1.0.0: resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +scule@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/scule/-/scule-1.2.0.tgz#b46d444d6a8c92e73eb80d2d8d00b94ab065cc3e" + integrity sha512-CRCmi5zHQnSoeCik9565PONMg0kfkvYmcSqrbOJY4txFfy1wvVULV4FDaiXhUblUgahdqz3F2NwHZ8i4eBTwUw== + semver-diff@^3.1.1: version "3.1.1" resolved "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz" @@ -7824,6 +7765,11 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" +siginfo@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30" + integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g== + signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: version "3.0.7" resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" @@ -7834,11 +7780,6 @@ signal-exit@^4.1.0: resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== -sisteransi@^1.0.5: - version "1.0.5" - resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" - integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== - slash@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" @@ -7896,15 +7837,12 @@ sort-keys@^4.0.0, sort-keys@^4.2.0: dependencies: is-plain-obj "^2.0.0" -source-map-support@0.5.13: - version "0.5.13" - resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz" - integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== -source-map@^0.6.0, source-map@^0.6.1: +source-map@^0.6.1: version "0.6.1" resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -7973,11 +7911,21 @@ stack-utils@^2.0.3: dependencies: escape-string-regexp "^2.0.0" +stackback@0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b" + integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw== + "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= +std-env@^3.5.0: + version "3.7.0" + resolved "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" + integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg== + streamx@^2.15.0: version "2.15.1" resolved "https://registry.npmjs.org/streamx/-/streamx-2.15.1.tgz" @@ -7991,14 +7939,6 @@ string-argv@0.3.2: resolved "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz" integrity sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q== -string-length@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz" - integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== - dependencies: - char-regex "^1.0.2" - strip-ansi "^6.0.0" - "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" @@ -8114,6 +8054,13 @@ strip-json-comments@~2.0.1: resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +strip-literal@^1.3.0: + version "1.3.0" + resolved "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz#db3942c2ec1699e6836ad230090b84bb458e3a07" + integrity sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg== + dependencies: + acorn "^8.10.0" + strong-log-transformer@^2.1.0: version "2.1.0" resolved "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz" @@ -8249,11 +8196,26 @@ through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= +tinybench@^2.5.1: + version "2.6.0" + resolved "https://registry.npmjs.org/tinybench/-/tinybench-2.6.0.tgz#1423284ee22de07c91b3752c048d2764714b341b" + integrity sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA== + tinydate@^1.3.0: version "1.3.0" resolved "https://registry.npmjs.org/tinydate/-/tinydate-1.3.0.tgz" integrity sha512-7cR8rLy2QhYHpsBDBVYnnWXm8uRTr38RoZakFSW7Bs7PzfMPNZthuMLkwqZv7MTu8lhQ91cOFYS5a7iFj2oR3w== +tinypool@^0.8.2: + version "0.8.2" + resolved "https://registry.npmjs.org/tinypool/-/tinypool-0.8.2.tgz#84013b03dc69dacb322563a475d4c0a9be00f82a" + integrity sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ== + +tinyspy@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.0.tgz#9dc04b072746520b432f77ea2c2d17933de5d6ce" + integrity sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg== + tmp@0.2.1, tmp@~0.2.1: version "0.2.1" resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz" @@ -8363,7 +8325,7 @@ type-check@^0.4.0, type-check@~0.4.0: dependencies: prelude-ls "^1.2.1" -type-detect@4.0.8: +type-detect@4.0.8, type-detect@^4.0.0, type-detect@^4.0.8: version "4.0.8" resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== @@ -8469,6 +8431,11 @@ typescript@^5.2.2: resolved "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz" integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw== +ufo@^1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz#c7d719d0628a1c80c006d2240e0d169f6e3c0496" + integrity sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA== + uglify-js@^3.1.4: version "3.17.4" resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz" @@ -8494,6 +8461,25 @@ unicorn-magic@^0.1.0: resolved "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz" integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== +unimport@^3.7.1: + version "3.7.1" + resolved "https://registry.npmjs.org/unimport/-/unimport-3.7.1.tgz#37250d0f3f2dcf1e1b66ed13728db0e9f50ba0c3" + integrity sha512-V9HpXYfsZye5bPPYUgs0Otn3ODS1mDUciaBlXljI4C2fTwfFpvFZRywmlOu943puN9sncxROMZhsZCjNXEpzEQ== + dependencies: + "@rollup/pluginutils" "^5.1.0" + acorn "^8.11.2" + escape-string-regexp "^5.0.0" + estree-walker "^3.0.3" + fast-glob "^3.3.2" + local-pkg "^0.5.0" + magic-string "^0.30.5" + mlly "^1.4.2" + pathe "^1.1.1" + pkg-types "^1.0.3" + scule "^1.1.1" + strip-literal "^1.3.0" + unplugin "^1.5.1" + unique-filename@^2.0.0: version "2.0.1" resolved "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz" @@ -8535,6 +8521,30 @@ unpipe@~1.0.0: resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= +unplugin-auto-import@^0.17.5: + version "0.17.5" + resolved "https://registry.npmjs.org/unplugin-auto-import/-/unplugin-auto-import-0.17.5.tgz#5ae7164fddd1560e96bf9be23b2f5ef46c808ca6" + integrity sha512-fHNDkDSxv3PGagX1wmKBYBkgaM4AKAgZmdJw/bxjhNljx9KSXSgHpGfX0MwUrq9qw6q1bhHIZVWyOwoY2koo4w== + dependencies: + "@antfu/utils" "^0.7.7" + "@rollup/pluginutils" "^5.1.0" + fast-glob "^3.3.2" + local-pkg "^0.5.0" + magic-string "^0.30.5" + minimatch "^9.0.3" + unimport "^3.7.1" + unplugin "^1.6.0" + +unplugin@^1.5.1, unplugin@^1.6.0: + version "1.6.0" + resolved "https://registry.npmjs.org/unplugin/-/unplugin-1.6.0.tgz#0bd7c344182c73e685c864f4f7161531f024b942" + integrity sha512-BfJEpWBu3aE/AyHx8VaNE/WgouoQxgH9baAiH82JjX8cqVyi3uJQstqwD5J+SZxIK326SZIhsSZlALXVBCknTQ== + dependencies: + acorn "^8.11.2" + chokidar "^3.5.3" + webpack-sources "^3.2.3" + webpack-virtual-modules "^0.6.1" + upath@^2.0.1: version "2.0.1" resolved "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz" @@ -8601,15 +8611,6 @@ v8-compile-cache@2.3.0: resolved "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz" integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== -v8-to-istanbul@^9.0.1: - version "9.1.3" - resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz" - integrity sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg== - dependencies: - "@jridgewell/trace-mapping" "^0.3.12" - "@types/istanbul-lib-coverage" "^2.0.1" - convert-source-map "^2.0.0" - validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.4: version "3.0.4" resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" @@ -8632,6 +8633,55 @@ validate-npm-package-name@^4.0.0: dependencies: builtins "^5.0.0" +vite-node@1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/vite-node/-/vite-node-1.2.2.tgz#f6d329b06f9032130ae6eac1dc773f3663903c25" + integrity sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg== + dependencies: + cac "^6.7.14" + debug "^4.3.4" + pathe "^1.1.1" + picocolors "^1.0.0" + vite "^5.0.0" + +vite@^5.0.0: + version "5.0.12" + resolved "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz#8a2ffd4da36c132aec4adafe05d7adde38333c47" + integrity sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w== + dependencies: + esbuild "^0.19.3" + postcss "^8.4.32" + rollup "^4.2.0" + optionalDependencies: + fsevents "~2.3.3" + +vitest@^1.2.2: + version "1.2.2" + resolved "https://registry.npmjs.org/vitest/-/vitest-1.2.2.tgz#9e29ad2a74a5df553c30c5798c57a062d58ce299" + integrity sha512-d5Ouvrnms3GD9USIK36KG8OZ5bEvKEkITFtnGv56HFaSlbItJuYr7hv2Lkn903+AvRAgSixiamozUVfORUekjw== + dependencies: + "@vitest/expect" "1.2.2" + "@vitest/runner" "1.2.2" + "@vitest/snapshot" "1.2.2" + "@vitest/spy" "1.2.2" + "@vitest/utils" "1.2.2" + acorn-walk "^8.3.2" + cac "^6.7.14" + chai "^4.3.10" + debug "^4.3.4" + execa "^8.0.1" + local-pkg "^0.5.0" + magic-string "^0.30.5" + pathe "^1.1.1" + picocolors "^1.0.0" + std-env "^3.5.0" + strip-literal "^1.3.0" + tinybench "^2.5.1" + tinypool "^0.8.2" + vite "^5.0.0" + vite-node "1.2.2" + why-is-node-running "^2.2.2" + walk-up-path@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz" @@ -8656,6 +8706,16 @@ webidl-conversions@^3.0.0: resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== +webpack-sources@^3.2.3: + version "3.2.3" + resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" + integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== + +webpack-virtual-modules@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz#ac6fdb9c5adb8caecd82ec241c9631b7a3681b6f" + integrity sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg== + whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" @@ -8705,6 +8765,14 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" +why-is-node-running@^2.2.2: + version "2.2.2" + resolved "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz#4185b2b4699117819e7154594271e7e344c9973e" + integrity sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA== + dependencies: + siginfo "^2.0.0" + stackback "0.0.2" + wide-align@^1.1.5: version "1.1.5" resolved "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz" @@ -8939,7 +9007,7 @@ yargs@^16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^17.0.0, yargs@^17.3.1, yargs@^17.6.2: +yargs@^17.0.0, yargs@^17.6.2: version "17.7.2" resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== @@ -8956,3 +9024,8 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +yocto-queue@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" + integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==